PDP 1.1 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214
  1. function draw_clock() {
  2. var n, r, t;
  3. for (canvas = Raphael("analog", 100, 100), n = canvas.circle(25, 25, 23), n.attr({
  4. fill: "#F9F9F9",
  5. stroke: "#003A7D",
  6. "stroke-width": "2"
  7. }), i = 0; i < 12; i++) {
  8. var u = 25 + Math.round(18 * Math.cos(30 * i * Math.PI / 180)),
  9. f = 25 + Math.round(18 * Math.sin(30 * i * Math.PI / 180)),
  10. e = 25 + Math.round(22 * Math.cos(30 * i * Math.PI / 180)),
  11. o = 25 + Math.round(22 * Math.sin(30 * i * Math.PI / 180));
  12. r = canvas.path("M" + u + " " + f + "L" + e + " " + o)
  13. }
  14. hour_hand = canvas.path("M 25 25 L 25 15");
  15. hour_hand.attr({
  16. stroke: "#003A7D",
  17. "stroke-width": 2
  18. });
  19. minute_hand = canvas.path("M 25 25 L 25 10");
  20. minute_hand.attr({
  21. stroke: "#444444",
  22. "stroke-width": 1
  23. });
  24. second_hand = canvas.path("M 25 30 L 25 8");
  25. second_hand.attr({
  26. stroke: "#003A7D",
  27. "stroke-width": .5
  28. });
  29. t = canvas.circle(25, 25, 1);
  30. t.attr("fill", "#003A7D");
  31. update_clock();
  32. setInterval("update_clock()", 1e3)
  33. }
  34. function update_clock() {
  35. var r = dateTimeFromServer - dateTimeFromClient,
  36. u = (new Date).getTime(),
  37. t = new Date;
  38. t.setTime(u + r);
  39. var n = t,
  40. f = n.getHours(),
  41. i = n.getMinutes(),
  42. e = n.getSeconds();
  43. hour_hand.rotate(30 * f + i / 2.5, 25, 25);
  44. minute_hand.rotate(6 * i, 25, 25);
  45. second_hand.rotate(6 * e, 25, 25)
  46. }
  47. function indirectStation() {
  48. var i = $(".route ").find(".subRow").length,
  49. n = $("#indirect"),
  50. r = $("#newIndirect"),
  51. u = '<div class="row btnRow"><button id="newIndirect" class="k-button k-button-get">' + C_DodajStacjePosrednia + "<\/button><\/div>",
  52. t = $("#switchParamsMode").parent();
  53. i > 0 ? (n.attr("enable", "false").addClass("k-state-disabled"), n.text(C_PrzezStacjePosrednia), t.show(), r || $(".route .container").append(u)) : (n.removeAttr("enable").removeClass("k-state-disabled"), n.text(C_DodajStacjePosrednia), $("#newIndirect").parent(".btnRow").remove(), t.hide())
  54. }
  55. function countChecks(n) {
  56. var r = n.closest(".layer").find("ul input:checkbox").length,
  57. i = n.closest(".layer").find("ul input:checkbox:checked").length,
  58. t = n.closest(".multiMenu").find(".num");
  59. t.html("");
  60. r === i ? (t.html(""), t.append("wszyscy")) : t.append("<span>wybrano " + i + "<\/span>")
  61. }
  62. function null2empty(n, t, i) {
  63. if (!t || t == "") return "";
  64. var r = i ? i : "";
  65. return n + " " + t + " " + r
  66. }
  67. function minuty2MinGodz(n) {
  68. n = Math.ceil(n);
  69. var t = Math.floor(n / 60);
  70. return t < 10 && (t = "0" + t), t += ":", n % 60 < 10 && (t += "0"), t + Math.round(n % 60)
  71. }
  72. function minuty2HHmm(n) {
  73. var t = Math.floor(n / 60),
  74. i = n - t * 60;
  75. return t < 10 && (t = "0" + t), i < 10 && (i = "0" + i), t + ":" + i
  76. }
  77. function timeStamp2Tekst(n) {
  78. return minuty2MinGodz(n.TotalMinutes)
  79. }
  80. function jsonTime2Time(n, t) {
  81. return n == "" ? "" : (t = typeof t != "undefined" ? t : "yyyy-MM-dd HH:mm", kendo.toString(new Date(parseInt(n.substr(6))), t))
  82. }
  83. function jsonTime2JsTime(n, t) {
  84. return n == "" ? "" : (t = typeof t != "undefined" ? t : "yyyy-MM-dd HH:mm", new Date(parseInt(n.substr(6))))
  85. }
  86. function usunPolskieZnaki(n) {
  87. return n = n.replace(/Ę/g, "E").replace(/ę/g, "e"), n = n.replace(/Ó/g, "O").replace(/o/g, "o"), n = n.replace(/Ą/g, "A").replace(/ą/g, "a"), n = n.replace(/Ś/g, "S").replace(/ś/g, "s"), n = n.replace(/Ł/g, "L").replace(/ł/g, "l"), n = n.replace(/Ż/g, "Z").replace(/ż/g, "z"), n = n.replace(/Ź/g, "Z").replace(/ź/g, "z"), n = n.replace(/Ć/g, "C").replace(/ć/g, "c"), n.replace(/Ń/g, "N").replace(/ń/g, "n")
  88. }
  89. function generujHashDanych(n) {
  90. var t = "";
  91. return t += n.StacjaPoczatkowaID.toString(), t += n.LiczbaPrzesiadek.toString(), t += Date.parse(n.Odjazd), t += Date.parse(n.Przyjazd), t + n.Pociagi[0].ZamowienieSKRJID.toString()
  92. }
  93. var dateTimeFromServer, dateTimeFromClient, mouse_is_inside;
  94. (function(n, t) {
  95. function dt(n) {
  96. var t = n.length,
  97. r = i.type(n);
  98. return i.isWindow(n) ? !1 : 1 === n.nodeType && t ? !0 : "array" === r || "function" !== r && (0 === t || "number" == typeof t && t > 0 && t - 1 in n)
  99. }
  100. function kf(n) {
  101. var t = gt[n] = {};
  102. return i.each(n.match(s) || [], function(n, i) {
  103. t[i] = !0
  104. }), t
  105. }
  106. function ir(n, r, u, f) {
  107. if (i.acceptData(n)) {
  108. var s, h, c = i.expando,
  109. a = "string" == typeof r,
  110. l = n.nodeType,
  111. o = l ? i.cache : n,
  112. e = l ? n[c] : n[c] && c;
  113. if (e && o[e] && (f || o[e].data) || !a || u !== t) return e || (l ? n[c] = e = b.pop() || i.guid++ : e = c), o[e] || (o[e] = {}, l || (o[e].toJSON = i.noop)), ("object" == typeof r || "function" == typeof r) && (f ? o[e] = i.extend(o[e], r) : o[e].data = i.extend(o[e].data, r)), s = o[e], f || (s.data || (s.data = {}), s = s.data), u !== t && (s[i.camelCase(r)] = u), a ? (h = s[r], null == h && (h = s[i.camelCase(r)])) : h = s, h
  114. }
  115. }
  116. function rr(n, t, r) {
  117. if (i.acceptData(n)) {
  118. var o, h, e, s = n.nodeType,
  119. u = s ? i.cache : n,
  120. f = s ? n[i.expando] : i.expando;
  121. if (u[f]) {
  122. if (t && (e = r ? u[f] : u[f].data)) {
  123. for (i.isArray(t) ? t = t.concat(i.map(t, i.camelCase)) : (t in e) ? t = [t] : (t = i.camelCase(t), t = (t in e) ? [t] : t.split(" ")), o = 0, h = t.length; h > o; o++) delete e[t[o]];
  124. if (!(r ? ni : i.isEmptyObject)(e)) return
  125. }(r || (delete u[f].data, ni(u[f]))) && (s ? i.cleanData([n], !0) : i.support.deleteExpando || u != u.window ? delete u[f] : u[f] = null)
  126. }
  127. }
  128. }
  129. function ur(n, r, u) {
  130. if (u === t && 1 === n.nodeType) {
  131. var f = "data-" + r.replace(tr, "-$1").toLowerCase();
  132. if (u = n.getAttribute(f), "string" == typeof u) {
  133. try {
  134. u = "true" === u ? !0 : "false" === u ? !1 : "null" === u ? null : +u + "" === u ? +u : nr.test(u) ? i.parseJSON(u) : u
  135. } catch (e) {}
  136. i.data(n, r, u)
  137. } else u = t
  138. }
  139. return u
  140. }
  141. function ni(n) {
  142. for (var t in n)
  143. if (("data" !== t || !i.isEmptyObject(n[t])) && "toJSON" !== t) return !1;
  144. return !0
  145. }
  146. function ht() {
  147. return !0
  148. }
  149. function d() {
  150. return !1
  151. }
  152. function cr(n, t) {
  153. do n = n[t]; while (n && 1 !== n.nodeType);
  154. return n
  155. }
  156. function lr(n, t, r) {
  157. if (t = t || 0, i.isFunction(t)) return i.grep(n, function(n, i) {
  158. var u = !!t.call(n, i, n);
  159. return u === r
  160. });
  161. if (t.nodeType) return i.grep(n, function(n) {
  162. return n === t === r
  163. });
  164. if ("string" == typeof t) {
  165. var u = i.grep(n, function(n) {
  166. return 1 === n.nodeType
  167. });
  168. if (fe.test(t)) return i.filter(t, u, !r);
  169. t = i.filter(t, u)
  170. }
  171. return i.grep(n, function(n) {
  172. return i.inArray(n, t) >= 0 === r
  173. })
  174. }
  175. function ar(n) {
  176. var i = vr.split("|"),
  177. t = n.createDocumentFragment();
  178. if (t.createElement)
  179. while (i.length) t.createElement(i.pop());
  180. return t
  181. }
  182. function ye(n, t) {
  183. return n.getElementsByTagName(t)[0] || n.appendChild(n.ownerDocument.createElement(t))
  184. }
  185. function dr(n) {
  186. var t = n.getAttributeNode("type");
  187. return n.type = (t && t.specified) + "/" + n.type, n
  188. }
  189. function gr(n) {
  190. var t = le.exec(n.type);
  191. return t ? n.type = t[1] : n.removeAttribute("type"), n
  192. }
  193. function si(n, t) {
  194. for (var u, r = 0; null != (u = n[r]); r++) i._data(u, "globalEval", !t || i._data(t[r], "globalEval"))
  195. }
  196. function nu(n, t) {
  197. if (1 === t.nodeType && i.hasData(n)) {
  198. var u, f, o, s = i._data(n),
  199. r = i._data(t, s),
  200. e = s.events;
  201. if (e) {
  202. delete r.handle;
  203. r.events = {};
  204. for (u in e)
  205. for (f = 0, o = e[u].length; o > f; f++) i.event.add(t, u, e[u][f])
  206. }
  207. r.data && (r.data = i.extend({}, r.data))
  208. }
  209. }
  210. function pe(n, t) {
  211. var r, f, u;
  212. if (1 === t.nodeType) {
  213. if (r = t.nodeName.toLowerCase(), !i.support.noCloneEvent && t[i.expando]) {
  214. u = i._data(t);
  215. for (f in u.events) i.removeEvent(t, f, u.handle);
  216. t.removeAttribute(i.expando)
  217. }
  218. "script" === r && t.text !== n.text ? (dr(t).text = n.text, gr(t)) : "object" === r ? (t.parentNode && (t.outerHTML = n.outerHTML), i.support.html5Clone && n.innerHTML && !i.trim(t.innerHTML) && (t.innerHTML = n.innerHTML)) : "input" === r && ei.test(n.type) ? (t.defaultChecked = t.checked = n.checked, t.value !== n.value && (t.value = n.value)) : "option" === r ? t.defaultSelected = t.selected = n.defaultSelected : ("input" === r || "textarea" === r) && (t.defaultValue = n.defaultValue)
  219. }
  220. }
  221. function u(n, r) {
  222. var s, e, h = 0,
  223. f = typeof n.getElementsByTagName !== o ? n.getElementsByTagName(r || "*") : typeof n.querySelectorAll !== o ? n.querySelectorAll(r || "*") : t;
  224. if (!f)
  225. for (f = [], s = n.childNodes || n; null != (e = s[h]); h++) !r || i.nodeName(e, r) ? f.push(e) : i.merge(f, u(e, r));
  226. return r === t || r && i.nodeName(n, r) ? i.merge([n], f) : f
  227. }
  228. function we(n) {
  229. ei.test(n.type) && (n.defaultChecked = n.checked)
  230. }
  231. function fu(n, t) {
  232. if (t in n) return t;
  233. for (var r = t.charAt(0).toUpperCase() + t.slice(1), u = t, i = uu.length; i--;)
  234. if (t = uu[i] + r, t in n) return t;
  235. return u
  236. }
  237. function ut(n, t) {
  238. return n = t || n, "none" === i.css(n, "display") || !i.contains(n.ownerDocument, n)
  239. }
  240. function eu(n, t) {
  241. for (var f, r, o, e = [], u = 0, s = n.length; s > u; u++) r = n[u], r.style && (e[u] = i._data(r, "olddisplay"), f = r.style.display, t ? (e[u] || "none" !== f || (r.style.display = ""), "" === r.style.display && ut(r) && (e[u] = i._data(r, "olddisplay", cu(r.nodeName)))) : e[u] || (o = ut(r), (f && "none" !== f || !o) && i._data(r, "olddisplay", o ? f : i.css(r, "display"))));
  242. for (u = 0; s > u; u++) r = n[u], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? e[u] || "" : "none"));
  243. return n
  244. }
  245. function ou(n, t, i) {
  246. var r = ge.exec(t);
  247. return r ? Math.max(0, r[1] - (i || 0)) + (r[2] || "px") : t
  248. }
  249. function su(n, t, r, u, f) {
  250. for (var e = r === (u ? "border" : "content") ? 4 : "width" === t ? 1 : 0, o = 0; 4 > e; e += 2) "margin" === r && (o += i.css(n, r + p[e], !0, f)), u ? ("content" === r && (o -= i.css(n, "padding" + p[e], !0, f)), "margin" !== r && (o -= i.css(n, "border" + p[e] + "Width", !0, f))) : (o += i.css(n, "padding" + p[e], !0, f), "padding" !== r && (o += i.css(n, "border" + p[e] + "Width", !0, f)));
  251. return o
  252. }
  253. function hu(n, t, r) {
  254. var e = !0,
  255. u = "width" === t ? n.offsetWidth : n.offsetHeight,
  256. f = v(n),
  257. o = i.support.boxSizing && "border-box" === i.css(n, "boxSizing", !1, f);
  258. if (0 >= u || null == u) {
  259. if (u = y(n, t, f), (0 > u || null == u) && (u = n.style[t]), ct.test(u)) return u;
  260. e = o && (i.support.boxSizingReliable || u === n.style[t]);
  261. u = parseFloat(u) || 0
  262. }
  263. return u + su(n, t, r || (o ? "border" : "content"), e, f) + "px"
  264. }
  265. function cu(n) {
  266. var u = r,
  267. t = iu[n];
  268. return t || (t = lu(n, u), "none" !== t && t || (rt = (rt || i("<iframe frameborder='0' width='0' height='0'/>").css("cssText", "display:block !important")).appendTo(u.documentElement), u = (rt[0].contentWindow || rt[0].contentDocument).document, u.write("<!doctype html><html><body>"), u.close(), t = lu(n, u), rt.detach()), iu[n] = t), t
  269. }
  270. function lu(n, t) {
  271. var r = i(t.createElement(n)).appendTo(t.body),
  272. u = i.css(r[0], "display");
  273. return r.remove(), u
  274. }
  275. function ci(n, t, r, u) {
  276. var f;
  277. if (i.isArray(t)) i.each(t, function(t, i) {
  278. r || ro.test(n) ? u(n, i) : ci(n + "[" + ("object" == typeof i ? t : "") + "]", i, r, u)
  279. });
  280. else if (r || "object" !== i.type(t)) u(n, t);
  281. else
  282. for (f in t) ci(n + "[" + f + "]", t[f], r, u)
  283. }
  284. function ku(n) {
  285. return function(t, r) {
  286. "string" != typeof t && (r = t, t = "*");
  287. var u, f = 0,
  288. e = t.toLowerCase().match(s) || [];
  289. if (i.isFunction(r))
  290. while (u = e[f++]) "+" === u[0] ? (u = u.slice(1) || "*", (n[u] = n[u] || []).unshift(r)) : (n[u] = n[u] || []).push(r)
  291. }
  292. }
  293. function du(n, r, u, f) {
  294. function o(h) {
  295. var c;
  296. return e[h] = !0, i.each(n[h] || [], function(n, i) {
  297. var h = i(r, u, f);
  298. return "string" != typeof h || s || e[h] ? s ? !(c = h) : t : (r.dataTypes.unshift(h), o(h), !1)
  299. }), c
  300. }
  301. var e = {},
  302. s = n === vi;
  303. return o(r.dataTypes[0]) || !e["*"] && o("*")
  304. }
  305. function yi(n, r) {
  306. var f, u, e = i.ajaxSettings.flatOptions || {};
  307. for (u in r) r[u] !== t && ((e[u] ? n : f || (f = {}))[u] = r[u]);
  308. return f && i.extend(!0, n, f), n
  309. }
  310. function co(n, i, r) {
  311. var s, o, e, u, h = n.contents,
  312. f = n.dataTypes,
  313. c = n.responseFields;
  314. for (u in c) u in r && (i[c[u]] = r[u]);
  315. while ("*" === f[0]) f.shift(), o === t && (o = n.mimeType || i.getResponseHeader("Content-Type"));
  316. if (o)
  317. for (u in h)
  318. if (h[u] && h[u].test(o)) {
  319. f.unshift(u);
  320. break
  321. }
  322. if (f[0] in r) e = f[0];
  323. else {
  324. for (u in r) {
  325. if (!f[0] || n.converters[u + " " + f[0]]) {
  326. e = u;
  327. break
  328. }
  329. s || (s = u)
  330. }
  331. e = e || s
  332. }
  333. return e ? (e !== f[0] && f.unshift(e), r[e]) : t
  334. }
  335. function lo(n, t) {
  336. var o, r, i, e, u = {},
  337. h = 0,
  338. s = n.dataTypes.slice(),
  339. f = s[0];
  340. if (n.dataFilter && (t = n.dataFilter(t, n.dataType)), s[1])
  341. for (i in n.converters) u[i.toLowerCase()] = n.converters[i];
  342. for (; r = s[++h];)
  343. if ("*" !== r) {
  344. if ("*" !== f && f !== r) {
  345. if (i = u[f + " " + r] || u["* " + r], !i)
  346. for (o in u)
  347. if (e = o.split(" "), e[1] === r && (i = u[f + " " + e[0]] || u["* " + e[0]])) {
  348. i === !0 ? i = u[o] : u[o] !== !0 && (r = e[0], s.splice(h--, 0, r));
  349. break
  350. }
  351. if (i !== !0)
  352. if (i && n.throws) t = i(t);
  353. else try {
  354. t = i(t)
  355. } catch (c) {
  356. return {
  357. state: "parsererror",
  358. error: i ? c : "No conversion from " + f + " to " + r
  359. }
  360. }
  361. }
  362. f = r
  363. }
  364. return {
  365. state: "success",
  366. data: t
  367. }
  368. }
  369. function nf() {
  370. try {
  371. return new n.XMLHttpRequest
  372. } catch (t) {}
  373. }
  374. function ao() {
  375. try {
  376. return new n.ActiveXObject("Microsoft.XMLHTTP")
  377. } catch (t) {}
  378. }
  379. function tf() {
  380. return setTimeout(function() {
  381. tt = t
  382. }), tt = i.now()
  383. }
  384. function wo(n, t) {
  385. i.each(t, function(t, i) {
  386. for (var u = (ft[t] || []).concat(ft["*"]), r = 0, f = u.length; f > r; r++)
  387. if (u[r].call(n, t, i)) return
  388. })
  389. }
  390. function rf(n, t, r) {
  391. var h, e, o = 0,
  392. l = yt.length,
  393. f = i.Deferred().always(function() {
  394. delete c.elem
  395. }),
  396. c = function() {
  397. if (e) return !1;
  398. for (var s = tt || tf(), t = Math.max(0, u.startTime + u.duration - s), h = t / u.duration || 0, i = 1 - h, r = 0, o = u.tweens.length; o > r; r++) u.tweens[r].run(i);
  399. return f.notifyWith(n, [u, i, t]), 1 > i && o ? t : (f.resolveWith(n, [u]), !1)
  400. },
  401. u = f.promise({
  402. elem: n,
  403. props: i.extend({}, t),
  404. opts: i.extend(!0, {
  405. specialEasing: {}
  406. }, r),
  407. originalProperties: t,
  408. originalOptions: r,
  409. startTime: tt || tf(),
  410. duration: r.duration,
  411. tweens: [],
  412. createTween: function(t, r) {
  413. var f = i.Tween(n, u.opts, t, r, u.opts.specialEasing[t] || u.opts.easing);
  414. return u.tweens.push(f), f
  415. },
  416. stop: function(t) {
  417. var i = 0,
  418. r = t ? u.tweens.length : 0;
  419. if (e) return this;
  420. for (e = !0; r > i; i++) u.tweens[i].run(1);
  421. return t ? f.resolveWith(n, [u, t]) : f.rejectWith(n, [u, t]), this
  422. }
  423. }),
  424. s = u.props;
  425. for (bo(s, u.opts.specialEasing); l > o; o++)
  426. if (h = yt[o].call(u, n, s, u.opts)) return h;
  427. return wo(u, s), i.isFunction(u.opts.start) && u.opts.start.call(n, u), i.fx.timer(i.extend(c, {
  428. elem: n,
  429. anim: u,
  430. queue: u.opts.queue
  431. })), u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
  432. }
  433. function bo(n, t) {
  434. var u, f, r, e, o;
  435. for (r in n)
  436. if (f = i.camelCase(r), e = t[f], u = n[r], i.isArray(u) && (e = u[1], u = n[r] = u[0]), r !== f && (n[f] = u, delete n[r]), o = i.cssHooks[f], o && "expand" in o) {
  437. u = o.expand(u);
  438. delete n[f];
  439. for (r in u) r in n || (n[r] = u[r], t[r] = e)
  440. } else t[f] = e
  441. }
  442. function ko(n, t, r) {
  443. var u, o, w, a, s, v, l, f, b, h = this,
  444. e = n.style,
  445. y = {},
  446. p = [],
  447. c = n.nodeType && ut(n);
  448. r.queue || (f = i._queueHooks(n, "fx"), null == f.unqueued && (f.unqueued = 0, b = f.empty.fire, f.empty.fire = function() {
  449. f.unqueued || b()
  450. }), f.unqueued++, h.always(function() {
  451. h.always(function() {
  452. f.unqueued--;
  453. i.queue(n, "fx").length || f.empty.fire()
  454. })
  455. }));
  456. 1 === n.nodeType && ("height" in t || "width" in t) && (r.overflow = [e.overflow, e.overflowX, e.overflowY], "inline" === i.css(n, "display") && "none" === i.css(n, "float") && (i.support.inlineBlockNeedsLayout && "inline" !== cu(n.nodeName) ? e.zoom = 1 : e.display = "inline-block"));
  457. r.overflow && (e.overflow = "hidden", i.support.shrinkWrapBlocks || h.always(function() {
  458. e.overflow = r.overflow[0];
  459. e.overflowX = r.overflow[1];
  460. e.overflowY = r.overflow[2]
  461. }));
  462. for (o in t)
  463. if (a = t[o], vo.exec(a)) {
  464. if (delete t[o], v = v || "toggle" === a, a === (c ? "hide" : "show")) continue;
  465. p.push(o)
  466. }
  467. if (w = p.length)
  468. for (s = i._data(n, "fxshow") || i._data(n, "fxshow", {}), ("hidden" in s) && (c = s.hidden), v && (s.hidden = !c), c ? i(n).show() : h.done(function() {
  469. i(n).hide()
  470. }), h.done(function() {
  471. var t;
  472. i._removeData(n, "fxshow");
  473. for (t in y) i.style(n, t, y[t])
  474. }), o = 0; w > o; o++) u = p[o], l = h.createTween(u, c ? s[u] : 0), y[u] = s[u] || i.style(n, u), u in s || (s[u] = l.start, c && (l.end = l.start, l.start = "width" === u || "height" === u ? 1 : 0))
  475. }
  476. function f(n, t, i, r, u) {
  477. return new f.prototype.init(n, t, i, r, u)
  478. }
  479. function pt(n, t) {
  480. var r, i = {
  481. height: n
  482. },
  483. u = 0;
  484. for (t = t ? 1 : 0; 4 > u; u += 2 - t) r = p[u], i["margin" + r] = i["padding" + r] = n;
  485. return t && (i.opacity = i.width = n), i
  486. }
  487. function uf(n) {
  488. return i.isWindow(n) ? n : 9 === n.nodeType ? n.defaultView || n.parentWindow : !1
  489. }
  490. var et, wi, o = typeof t,
  491. r = n.document,
  492. ff = n.location,
  493. ef = n.jQuery,
  494. of = n.$,
  495. ot = {},
  496. b = [],
  497. wt = "1.9.1",
  498. bi = b.concat,
  499. bt = b.push,
  500. l = b.slice,
  501. ki = b.indexOf,
  502. sf = ot.toString,
  503. it = ot.hasOwnProperty,
  504. kt = wt.trim,
  505. i = function(n, t) {
  506. return new i.fn.init(n, t, wi)
  507. },
  508. st = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
  509. s = /\S+/g,
  510. hf = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
  511. cf = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
  512. di = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
  513. lf = /^[\],:{}\s]*$/,
  514. af = /(?:^|:|,)(?:\s*\[)+/g,
  515. vf = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
  516. yf = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
  517. pf = /^-ms-/,
  518. wf = /-([\da-z])/gi,
  519. bf = function(n, t) {
  520. return t.toUpperCase()
  521. },
  522. h = function(n) {
  523. (r.addEventListener || "load" === n.type || "complete" === r.readyState) && (gi(), i.ready())
  524. },
  525. gi = function() {
  526. r.addEventListener ? (r.removeEventListener("DOMContentLoaded", h, !1), n.removeEventListener("load", h, !1)) : (r.detachEvent("onreadystatechange", h), n.detachEvent("onload", h))
  527. },
  528. gt, nr, tr, pi, lt, g, nt, gu, at;
  529. i.fn = i.prototype = {
  530. jquery: wt,
  531. constructor: i,
  532. init: function(n, u, f) {
  533. var e, o;
  534. if (!n) return this;
  535. if ("string" == typeof n) {
  536. if (e = "<" === n.charAt(0) && ">" === n.charAt(n.length - 1) && n.length >= 3 ? [null, n, null] : cf.exec(n), !e || !e[1] && u) return !u || u.jquery ? (u || f).find(n) : this.constructor(u).find(n);
  537. if (e[1]) {
  538. if (u = u instanceof i ? u[0] : u, i.merge(this, i.parseHTML(e[1], u && u.nodeType ? u.ownerDocument || u : r, !0)), di.test(e[1]) && i.isPlainObject(u))
  539. for (e in u) i.isFunction(this[e]) ? this[e](u[e]) : this.attr(e, u[e]);
  540. return this
  541. }
  542. if (o = r.getElementById(e[2]), o && o.parentNode) {
  543. if (o.id !== e[2]) return f.find(n);
  544. this.length = 1;
  545. this[0] = o
  546. }
  547. return this.context = r, this.selector = n, this
  548. }
  549. return n.nodeType ? (this.context = this[0] = n, this.length = 1, this) : i.isFunction(n) ? f.ready(n) : (n.selector !== t && (this.selector = n.selector, this.context = n.context), i.makeArray(n, this))
  550. },
  551. selector: "",
  552. length: 0,
  553. size: function() {
  554. return this.length
  555. },
  556. toArray: function() {
  557. return l.call(this)
  558. },
  559. get: function(n) {
  560. return null == n ? this.toArray() : 0 > n ? this[this.length + n] : this[n]
  561. },
  562. pushStack: function(n) {
  563. var t = i.merge(this.constructor(), n);
  564. return t.prevObject = this, t.context = this.context, t
  565. },
  566. each: function(n, t) {
  567. return i.each(this, n, t)
  568. },
  569. ready: function(n) {
  570. return i.ready.promise().done(n), this
  571. },
  572. slice: function() {
  573. return this.pushStack(l.apply(this, arguments))
  574. },
  575. first: function() {
  576. return this.eq(0)
  577. },
  578. last: function() {
  579. return this.eq(-1)
  580. },
  581. eq: function(n) {
  582. var i = this.length,
  583. t = +n + (0 > n ? i : 0);
  584. return this.pushStack(t >= 0 && i > t ? [this[t]] : [])
  585. },
  586. map: function(n) {
  587. return this.pushStack(i.map(this, function(t, i) {
  588. return n.call(t, i, t)
  589. }))
  590. },
  591. end: function() {
  592. return this.prevObject || this.constructor(null)
  593. },
  594. push: bt,
  595. sort: [].sort,
  596. splice: [].splice
  597. };
  598. i.fn.init.prototype = i.fn;
  599. i.extend = i.fn.extend = function() {
  600. var u, o, r, e, s, h, n = arguments[0] || {},
  601. f = 1,
  602. l = arguments.length,
  603. c = !1;
  604. for ("boolean" == typeof n && (c = n, n = arguments[1] || {}, f = 2), "object" == typeof n || i.isFunction(n) || (n = {}), l === f && (n = this, --f); l > f; f++)
  605. if (null != (s = arguments[f]))
  606. for (e in s) u = n[e], r = s[e], n !== r && (c && r && (i.isPlainObject(r) || (o = i.isArray(r))) ? (o ? (o = !1, h = u && i.isArray(u) ? u : []) : h = u && i.isPlainObject(u) ? u : {}, n[e] = i.extend(c, h, r)) : r !== t && (n[e] = r));
  607. return n
  608. };
  609. i.extend({
  610. noConflict: function(t) {
  611. return n.$ === i && (n.$ = of ), t && n.jQuery === i && (n.jQuery = ef), i
  612. },
  613. isReady: !1,
  614. readyWait: 1,
  615. holdReady: function(n) {
  616. n ? i.readyWait++ : i.ready(!0)
  617. },
  618. ready: function(n) {
  619. if (n === !0 ? !--i.readyWait : !i.isReady) {
  620. if (!r.body) return setTimeout(i.ready);
  621. i.isReady = !0;
  622. n !== !0 && --i.readyWait > 0 || (et.resolveWith(r, [i]), i.fn.trigger && i(r).trigger("ready").off("ready"))
  623. }
  624. },
  625. isFunction: function(n) {
  626. return "function" === i.type(n)
  627. },
  628. isArray: Array.isArray || function(n) {
  629. return "array" === i.type(n)
  630. },
  631. isWindow: function(n) {
  632. return null != n && n == n.window
  633. },
  634. isNumeric: function(n) {
  635. return !isNaN(parseFloat(n)) && isFinite(n)
  636. },
  637. type: function(n) {
  638. return null == n ? n + "" : "object" == typeof n || "function" == typeof n ? ot[sf.call(n)] || "object" : typeof n
  639. },
  640. isPlainObject: function(n) {
  641. if (!n || "object" !== i.type(n) || n.nodeType || i.isWindow(n)) return !1;
  642. try {
  643. if (n.constructor && !it.call(n, "constructor") && !it.call(n.constructor.prototype, "isPrototypeOf")) return !1
  644. } catch (u) {
  645. return !1
  646. }
  647. for (var r in n);
  648. return r === t || it.call(n, r)
  649. },
  650. isEmptyObject: function(n) {
  651. for (var t in n) return !1;
  652. return !0
  653. },
  654. error: function(n) {
  655. throw Error(n);
  656. },
  657. parseHTML: function(n, t, u) {
  658. if (!n || "string" != typeof n) return null;
  659. "boolean" == typeof t && (u = t, t = !1);
  660. t = t || r;
  661. var f = di.exec(n),
  662. e = !u && [];
  663. return f ? [t.createElement(f[1])] : (f = i.buildFragment([n], t, e), e && i(e).remove(), i.merge([], f.childNodes))
  664. },
  665. parseJSON: function(r) {
  666. return n.JSON && n.JSON.parse ? n.JSON.parse(r) : null === r ? r : "string" == typeof r && (r = i.trim(r), r && lf.test(r.replace(vf, "@").replace(yf, "]").replace(af, ""))) ? Function("return " + r)() : (i.error("Invalid JSON: " + r), t)
  667. },
  668. parseXML: function(r) {
  669. var u, f;
  670. if (!r || "string" != typeof r) return null;
  671. try {
  672. n.DOMParser ? (f = new DOMParser, u = f.parseFromString(r, "text/xml")) : (u = new ActiveXObject("Microsoft.XMLDOM"), u.async = "false", u.loadXML(r))
  673. } catch (e) {
  674. u = t
  675. }
  676. return u && u.documentElement && !u.getElementsByTagName("parsererror").length || i.error("Invalid XML: " + r), u
  677. },
  678. noop: function() {},
  679. globalEval: function(t) {
  680. t && i.trim(t) && (n.execScript || function(t) {
  681. n.eval.call(n, t)
  682. })(t)
  683. },
  684. camelCase: function(n) {
  685. return n.replace(pf, "ms-").replace(wf, bf)
  686. },
  687. nodeName: function(n, t) {
  688. return n.nodeName && n.nodeName.toLowerCase() === t.toLowerCase()
  689. },
  690. each: function(n, t, i) {
  691. var u, r = 0,
  692. f = n.length,
  693. e = dt(n);
  694. if (i) {
  695. if (e) {
  696. for (; f > r; r++)
  697. if (u = t.apply(n[r], i), u === !1) break
  698. } else
  699. for (r in n)
  700. if (u = t.apply(n[r], i), u === !1) break
  701. } else if (e) {
  702. for (; f > r; r++)
  703. if (u = t.call(n[r], r, n[r]), u === !1) break
  704. } else
  705. for (r in n)
  706. if (u = t.call(n[r], r, n[r]), u === !1) break;
  707. return n
  708. },
  709. trim: kt && !kt.call(" ") ? function(n) {
  710. return null == n ? "" : kt.call(n)
  711. } : function(n) {
  712. return null == n ? "" : (n + "").replace(hf, "")
  713. },
  714. makeArray: function(n, t) {
  715. var r = t || [];
  716. return null != n && (dt(Object(n)) ? i.merge(r, "string" == typeof n ? [n] : n) : bt.call(r, n)), r
  717. },
  718. inArray: function(n, t, i) {
  719. var r;
  720. if (t) {
  721. if (ki) return ki.call(t, n, i);
  722. for (r = t.length, i = i ? 0 > i ? Math.max(0, r + i) : i : 0; r > i; i++)
  723. if (i in t && t[i] === n) return i
  724. }
  725. return -1
  726. },
  727. merge: function(n, i) {
  728. var f = i.length,
  729. u = n.length,
  730. r = 0;
  731. if ("number" == typeof f)
  732. for (; f > r; r++) n[u++] = i[r];
  733. else
  734. while (i[r] !== t) n[u++] = i[r++];
  735. return n.length = u, n
  736. },
  737. grep: function(n, t, i) {
  738. var u, f = [],
  739. r = 0,
  740. e = n.length;
  741. for (i = !!i; e > r; r++) u = !!t(n[r], r), i !== u && f.push(n[r]);
  742. return f
  743. },
  744. map: function(n, t, i) {
  745. var u, r = 0,
  746. e = n.length,
  747. o = dt(n),
  748. f = [];
  749. if (o)
  750. for (; e > r; r++) u = t(n[r], r, i), null != u && (f[f.length] = u);
  751. else
  752. for (r in n) u = t(n[r], r, i), null != u && (f[f.length] = u);
  753. return bi.apply([], f)
  754. },
  755. guid: 1,
  756. proxy: function(n, r) {
  757. var f, u, e;
  758. return "string" == typeof r && (e = n[r], r = n, n = e), i.isFunction(n) ? (f = l.call(arguments, 2), u = function() {
  759. return n.apply(r || this, f.concat(l.call(arguments)))
  760. }, u.guid = n.guid = n.guid || i.guid++, u) : t
  761. },
  762. access: function(n, r, u, f, e, o, s) {
  763. var h = 0,
  764. l = n.length,
  765. c = null == u;
  766. if ("object" === i.type(u)) {
  767. e = !0;
  768. for (h in u) i.access(n, r, h, u[h], !0, o, s)
  769. } else if (f !== t && (e = !0, i.isFunction(f) || (s = !0), c && (s ? (r.call(n, f), r = null) : (c = r, r = function(n, t, r) {
  770. return c.call(i(n), r)
  771. })), r))
  772. for (; l > h; h++) r(n[h], u, s ? f : f.call(n[h], h, r(n[h], u)));
  773. return e ? n : c ? r.call(n) : l ? r(n[0], u) : o
  774. },
  775. now: function() {
  776. return (new Date).getTime()
  777. }
  778. });
  779. i.ready.promise = function(t) {
  780. if (!et)
  781. if (et = i.Deferred(), "complete" === r.readyState) setTimeout(i.ready);
  782. else if (r.addEventListener) r.addEventListener("DOMContentLoaded", h, !1), n.addEventListener("load", h, !1);
  783. else {
  784. r.attachEvent("onreadystatechange", h);
  785. n.attachEvent("onload", h);
  786. var u = !1;
  787. try {
  788. u = null == n.frameElement && r.documentElement
  789. } catch (e) {}
  790. u && u.doScroll && function f() {
  791. if (!i.isReady) {
  792. try {
  793. u.doScroll("left")
  794. } catch (n) {
  795. return setTimeout(f, 50)
  796. }
  797. gi();
  798. i.ready()
  799. }
  800. }()
  801. }
  802. return et.promise(t)
  803. };
  804. i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(n, t) {
  805. ot["[object " + t + "]"] = t.toLowerCase()
  806. });
  807. wi = i(r);
  808. gt = {};
  809. i.Callbacks = function(n) {
  810. n = "string" == typeof n ? gt[n] || kf(n) : i.extend({}, n);
  811. var o, f, c, s, e, l, r = [],
  812. u = !n.once && [],
  813. a = function(t) {
  814. for (f = n.memory && t, c = !0, e = l || 0, l = 0, s = r.length, o = !0; r && s > e; e++)
  815. if (r[e].apply(t[0], t[1]) === !1 && n.stopOnFalse) {
  816. f = !1;
  817. break
  818. }
  819. o = !1;
  820. r && (u ? u.length && a(u.shift()) : f ? r = [] : h.disable())
  821. },
  822. h = {
  823. add: function() {
  824. if (r) {
  825. var t = r.length;
  826. (function u(t) {
  827. i.each(t, function(t, f) {
  828. var e = i.type(f);
  829. "function" === e ? n.unique && h.has(f) || r.push(f) : f && f.length && "string" !== e && u(f)
  830. })
  831. })(arguments);
  832. o ? s = r.length : f && (l = t, a(f))
  833. }
  834. return this
  835. },
  836. remove: function() {
  837. return r && i.each(arguments, function(n, t) {
  838. for (var u;
  839. (u = i.inArray(t, r, u)) > -1;) r.splice(u, 1), o && (s >= u && s--, e >= u && e--)
  840. }), this
  841. },
  842. has: function(n) {
  843. return n ? i.inArray(n, r) > -1 : !(!r || !r.length)
  844. },
  845. empty: function() {
  846. return r = [], this
  847. },
  848. disable: function() {
  849. return r = u = f = t, this
  850. },
  851. disabled: function() {
  852. return !r
  853. },
  854. lock: function() {
  855. return u = t, f || h.disable(), this
  856. },
  857. locked: function() {
  858. return !u
  859. },
  860. fireWith: function(n, t) {
  861. return t = t || [], t = [n, t.slice ? t.slice() : t], !r || c && !u || (o ? u.push(t) : a(t)), this
  862. },
  863. fire: function() {
  864. return h.fireWith(this, arguments), this
  865. },
  866. fired: function() {
  867. return !!c
  868. }
  869. };
  870. return h
  871. };
  872. i.extend({
  873. Deferred: function(n) {
  874. var u = [
  875. ["resolve", "done", i.Callbacks("once memory"), "resolved"],
  876. ["reject", "fail", i.Callbacks("once memory"), "rejected"],
  877. ["notify", "progress", i.Callbacks("memory")]
  878. ],
  879. f = "pending",
  880. r = {
  881. state: function() {
  882. return f
  883. },
  884. always: function() {
  885. return t.done(arguments).fail(arguments), this
  886. },
  887. then: function() {
  888. var n = arguments;
  889. return i.Deferred(function(f) {
  890. i.each(u, function(u, e) {
  891. var s = e[0],
  892. o = i.isFunction(n[u]) && n[u];
  893. t[e[1]](function() {
  894. var n = o && o.apply(this, arguments);
  895. n && i.isFunction(n.promise) ? n.promise().done(f.resolve).fail(f.reject).progress(f.notify) : f[s + "With"](this === r ? f.promise() : this, o ? [n] : arguments)
  896. })
  897. });
  898. n = null
  899. }).promise()
  900. },
  901. promise: function(n) {
  902. return null != n ? i.extend(n, r) : r
  903. }
  904. },
  905. t = {};
  906. return r.pipe = r.then, i.each(u, function(n, i) {
  907. var e = i[2],
  908. o = i[3];
  909. r[i[1]] = e.add;
  910. o && e.add(function() {
  911. f = o
  912. }, u[1 ^ n][2].disable, u[2][2].lock);
  913. t[i[0]] = function() {
  914. return t[i[0] + "With"](this === t ? r : this, arguments), this
  915. };
  916. t[i[0] + "With"] = e.fireWith
  917. }), r.promise(t), n && n.call(t, t), t
  918. },
  919. when: function(n) {
  920. var t = 0,
  921. u = l.call(arguments),
  922. r = u.length,
  923. e = 1 !== r || n && i.isFunction(n.promise) ? r : 0,
  924. f = 1 === e ? n : i.Deferred(),
  925. h = function(n, t, i) {
  926. return function(r) {
  927. t[n] = this;
  928. i[n] = arguments.length > 1 ? l.call(arguments) : r;
  929. i === o ? f.notifyWith(t, i) : --e || f.resolveWith(t, i)
  930. }
  931. },
  932. o, c, s;
  933. if (r > 1)
  934. for (o = Array(r), c = Array(r), s = Array(r); r > t; t++) u[t] && i.isFunction(u[t].promise) ? u[t].promise().done(h(t, s, u)).fail(f.reject).progress(h(t, c, o)) : --e;
  935. return e || f.resolveWith(s, u), f.promise()
  936. }
  937. });
  938. i.support = function() {
  939. var u, s, e, f, h, c, l, a, y, v, t = r.createElement("div");
  940. if (t.setAttribute("className", "t"), t.innerHTML = " <link/><table><\/table><a href='/a'>a<\/a><input type='checkbox'/>", s = t.getElementsByTagName("*"), e = t.getElementsByTagName("a")[0], !s || !e || !s.length) return {};
  941. h = r.createElement("select");
  942. l = h.appendChild(r.createElement("option"));
  943. f = t.getElementsByTagName("input")[0];
  944. e.style.cssText = "top:1px;float:left;opacity:.5";
  945. u = {
  946. getSetAttribute: "t" !== t.className,
  947. leadingWhitespace: 3 === t.firstChild.nodeType,
  948. tbody: !t.getElementsByTagName("tbody").length,
  949. htmlSerialize: !!t.getElementsByTagName("link").length,
  950. style: /top/.test(e.getAttribute("style")),
  951. hrefNormalized: "/a" === e.getAttribute("href"),
  952. opacity: /^0.5/.test(e.style.opacity),
  953. cssFloat: !!e.style.cssFloat,
  954. checkOn: !!f.value,
  955. optSelected: l.selected,
  956. enctype: !!r.createElement("form").enctype,
  957. html5Clone: "<:nav><\/:nav>" !== r.createElement("nav").cloneNode(!0).outerHTML,
  958. boxModel: "CSS1Compat" === r.compatMode,
  959. deleteExpando: !0,
  960. noCloneEvent: !0,
  961. inlineBlockNeedsLayout: !1,
  962. shrinkWrapBlocks: !1,
  963. reliableMarginRight: !0,
  964. boxSizingReliable: !0,
  965. pixelPosition: !1
  966. };
  967. f.checked = !0;
  968. u.noCloneChecked = f.cloneNode(!0).checked;
  969. h.disabled = !0;
  970. u.optDisabled = !l.disabled;
  971. try {
  972. delete t.test
  973. } catch (p) {
  974. u.deleteExpando = !1
  975. }
  976. f = r.createElement("input");
  977. f.setAttribute("value", "");
  978. u.input = "" === f.getAttribute("value");
  979. f.value = "t";
  980. f.setAttribute("type", "radio");
  981. u.radioValue = "t" === f.value;
  982. f.setAttribute("checked", "t");
  983. f.setAttribute("name", "t");
  984. c = r.createDocumentFragment();
  985. c.appendChild(f);
  986. u.appendChecked = f.checked;
  987. u.checkClone = c.cloneNode(!0).cloneNode(!0).lastChild.checked;
  988. t.attachEvent && (t.attachEvent("onclick", function() {
  989. u.noCloneEvent = !1
  990. }), t.cloneNode(!0).click());
  991. for (v in {
  992. submit: !0,
  993. change: !0,
  994. focusin: !0
  995. }) t.setAttribute(a = "on" + v, "t"), u[v + "Bubbles"] = a in n || t.attributes[a].expando === !1;
  996. return t.style.backgroundClip = "content-box", t.cloneNode(!0).style.backgroundClip = "", u.clearCloneStyle = "content-box" === t.style.backgroundClip, i(function() {
  997. var e, f, i, h = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
  998. s = r.getElementsByTagName("body")[0];
  999. s && (e = r.createElement("div"), e.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px", s.appendChild(e).appendChild(t), t.innerHTML = "<table><tr><td><\/td><td>t<\/td><\/tr><\/table>", i = t.getElementsByTagName("td"), i[0].style.cssText = "padding:0;margin:0;border:0;display:none", y = 0 === i[0].offsetHeight, i[0].style.display = "", i[1].style.display = "none", u.reliableHiddenOffsets = y && 0 === i[0].offsetHeight, t.innerHTML = "", t.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;", u.boxSizing = 4 === t.offsetWidth, u.doesNotIncludeMarginInBodyOffset = 1 !== s.offsetTop, n.getComputedStyle && (u.pixelPosition = "1%" !== (n.getComputedStyle(t, null) || {}).top, u.boxSizingReliable = "4px" === (n.getComputedStyle(t, null) || {
  1000. width: "4px"
  1001. }).width, f = t.appendChild(r.createElement("div")), f.style.cssText = t.style.cssText = h, f.style.marginRight = f.style.width = "0", t.style.width = "1px", u.reliableMarginRight = !parseFloat((n.getComputedStyle(f, null) || {}).marginRight)), typeof t.style.zoom !== o && (t.innerHTML = "", t.style.cssText = h + "width:1px;padding:1px;display:inline;zoom:1", u.inlineBlockNeedsLayout = 3 === t.offsetWidth, t.style.display = "block", t.innerHTML = "<div><\/div>", t.firstChild.style.width = "5px", u.shrinkWrapBlocks = 3 !== t.offsetWidth, u.inlineBlockNeedsLayout && (s.style.zoom = 1)), s.removeChild(e), e = t = i = f = null)
  1002. }), s = h = c = l = e = f = null, u
  1003. }();
  1004. nr = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/;
  1005. tr = /([A-Z])/g;
  1006. i.extend({
  1007. cache: {},
  1008. expando: "jQuery" + (wt + Math.random()).replace(/\D/g, ""),
  1009. noData: {
  1010. embed: !0,
  1011. object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
  1012. applet: !0
  1013. },
  1014. hasData: function(n) {
  1015. return n = n.nodeType ? i.cache[n[i.expando]] : n[i.expando], !!n && !ni(n)
  1016. },
  1017. data: function(n, t, i) {
  1018. return ir(n, t, i)
  1019. },
  1020. removeData: function(n, t) {
  1021. return rr(n, t)
  1022. },
  1023. _data: function(n, t, i) {
  1024. return ir(n, t, i, !0)
  1025. },
  1026. _removeData: function(n, t) {
  1027. return rr(n, t, !0)
  1028. },
  1029. acceptData: function(n) {
  1030. if (n.nodeType && 1 !== n.nodeType && 9 !== n.nodeType) return !1;
  1031. var t = n.nodeName && i.noData[n.nodeName.toLowerCase()];
  1032. return !t || t !== !0 && n.getAttribute("classid") === t
  1033. }
  1034. });
  1035. i.fn.extend({
  1036. data: function(n, r) {
  1037. var e, f, u = this[0],
  1038. o = 0,
  1039. s = null;
  1040. if (n === t) {
  1041. if (this.length && (s = i.data(u), 1 === u.nodeType && !i._data(u, "parsedAttrs"))) {
  1042. for (e = u.attributes; e.length > o; o++) f = e[o].name, f.indexOf("data-") || (f = i.camelCase(f.slice(5)), ur(u, f, s[f]));
  1043. i._data(u, "parsedAttrs", !0)
  1044. }
  1045. return s
  1046. }
  1047. return "object" == typeof n ? this.each(function() {
  1048. i.data(this, n)
  1049. }) : i.access(this, function(r) {
  1050. return r === t ? u ? ur(u, n, i.data(u, n)) : null : (this.each(function() {
  1051. i.data(this, n, r)
  1052. }), t)
  1053. }, null, r, arguments.length > 1, null, !0)
  1054. },
  1055. removeData: function(n) {
  1056. return this.each(function() {
  1057. i.removeData(this, n)
  1058. })
  1059. }
  1060. });
  1061. i.extend({
  1062. queue: function(n, r, u) {
  1063. var f;
  1064. return n ? (r = (r || "fx") + "queue", f = i._data(n, r), u && (!f || i.isArray(u) ? f = i._data(n, r, i.makeArray(u)) : f.push(u)), f || []) : t
  1065. },
  1066. dequeue: function(n, t) {
  1067. t = t || "fx";
  1068. var f = i.queue(n, t),
  1069. e = f.length,
  1070. r = f.shift(),
  1071. u = i._queueHooks(n, t),
  1072. o = function() {
  1073. i.dequeue(n, t)
  1074. };
  1075. "inprogress" === r && (r = f.shift(), e--);
  1076. u.cur = r;
  1077. r && ("fx" === t && f.unshift("inprogress"), delete u.stop, r.call(n, o, u));
  1078. !e && u && u.empty.fire()
  1079. },
  1080. _queueHooks: function(n, t) {
  1081. var r = t + "queueHooks";
  1082. return i._data(n, r) || i._data(n, r, {
  1083. empty: i.Callbacks("once memory").add(function() {
  1084. i._removeData(n, t + "queue");
  1085. i._removeData(n, r)
  1086. })
  1087. })
  1088. }
  1089. });
  1090. i.fn.extend({
  1091. queue: function(n, r) {
  1092. var u = 2;
  1093. return "string" != typeof n && (r = n, n = "fx", u--), u > arguments.length ? i.queue(this[0], n) : r === t ? this : this.each(function() {
  1094. var t = i.queue(this, n, r);
  1095. i._queueHooks(this, n);
  1096. "fx" === n && "inprogress" !== t[0] && i.dequeue(this, n)
  1097. })
  1098. },
  1099. dequeue: function(n) {
  1100. return this.each(function() {
  1101. i.dequeue(this, n)
  1102. })
  1103. },
  1104. delay: function(n, t) {
  1105. return n = i.fx ? i.fx.speeds[n] || n : n, t = t || "fx", this.queue(t, function(t, i) {
  1106. var r = setTimeout(t, n);
  1107. i.stop = function() {
  1108. clearTimeout(r)
  1109. }
  1110. })
  1111. },
  1112. clearQueue: function(n) {
  1113. return this.queue(n || "fx", [])
  1114. },
  1115. promise: function(n, r) {
  1116. var u, e = 1,
  1117. o = i.Deferred(),
  1118. f = this,
  1119. s = this.length,
  1120. h = function() {
  1121. --e || o.resolveWith(f, [f])
  1122. };
  1123. for ("string" != typeof n && (r = n, n = t), n = n || "fx"; s--;) u = i._data(f[s], n + "queueHooks"), u && u.empty && (e++, u.empty.add(h));
  1124. return h(), o.promise(r)
  1125. }
  1126. });
  1127. var k, fr, ti = /[\t\r\n]/g,
  1128. df = /\r/g,
  1129. gf = /^(?:input|select|textarea|button|object)$/i,
  1130. ne = /^(?:a|area)$/i,
  1131. er = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
  1132. ii = /^(?:checked|selected)$/i,
  1133. a = i.support.getSetAttribute,
  1134. ri = i.support.input;
  1135. i.fn.extend({
  1136. attr: function(n, t) {
  1137. return i.access(this, i.attr, n, t, arguments.length > 1)
  1138. },
  1139. removeAttr: function(n) {
  1140. return this.each(function() {
  1141. i.removeAttr(this, n)
  1142. })
  1143. },
  1144. prop: function(n, t) {
  1145. return i.access(this, i.prop, n, t, arguments.length > 1)
  1146. },
  1147. removeProp: function(n) {
  1148. return n = i.propFix[n] || n, this.each(function() {
  1149. try {
  1150. this[n] = t;
  1151. delete this[n]
  1152. } catch (i) {}
  1153. })
  1154. },
  1155. addClass: function(n) {
  1156. var e, t, r, u, o, f = 0,
  1157. h = this.length,
  1158. c = "string" == typeof n && n;
  1159. if (i.isFunction(n)) return this.each(function(t) {
  1160. i(this).addClass(n.call(this, t, this.className))
  1161. });
  1162. if (c)
  1163. for (e = (n || "").match(s) || []; h > f; f++)
  1164. if (t = this[f], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(ti, " ") : " ")) {
  1165. for (o = 0; u = e[o++];) 0 > r.indexOf(" " + u + " ") && (r += u + " ");
  1166. t.className = i.trim(r)
  1167. }
  1168. return this
  1169. },
  1170. removeClass: function(n) {
  1171. var e, t, r, u, o, f = 0,
  1172. h = this.length,
  1173. c = 0 === arguments.length || "string" == typeof n && n;
  1174. if (i.isFunction(n)) return this.each(function(t) {
  1175. i(this).removeClass(n.call(this, t, this.className))
  1176. });
  1177. if (c)
  1178. for (e = (n || "").match(s) || []; h > f; f++)
  1179. if (t = this[f], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(ti, " ") : "")) {
  1180. for (o = 0; u = e[o++];)
  1181. while (r.indexOf(" " + u + " ") >= 0) r = r.replace(" " + u + " ", " ");
  1182. t.className = n ? i.trim(r) : ""
  1183. }
  1184. return this
  1185. },
  1186. toggleClass: function(n, t) {
  1187. var r = typeof n,
  1188. u = "boolean" == typeof t;
  1189. return i.isFunction(n) ? this.each(function(r) {
  1190. i(this).toggleClass(n.call(this, r, this.className, t), t)
  1191. }) : this.each(function() {
  1192. if ("string" === r)
  1193. for (var f, c = 0, h = i(this), e = t, l = n.match(s) || []; f = l[c++];) e = u ? e : !h.hasClass(f), h[e ? "addClass" : "removeClass"](f);
  1194. else(r === o || "boolean" === r) && (this.className && i._data(this, "__className__", this.className), this.className = this.className || n === !1 ? "" : i._data(this, "__className__") || "")
  1195. })
  1196. },
  1197. hasClass: function(n) {
  1198. for (var i = " " + n + " ", t = 0, r = this.length; r > t; t++)
  1199. if (1 === this[t].nodeType && (" " + this[t].className + " ").replace(ti, " ").indexOf(i) >= 0) return !0;
  1200. return !1
  1201. },
  1202. val: function(n) {
  1203. var u, r, e, f = this[0];
  1204. return arguments.length ? (e = i.isFunction(n), this.each(function(u) {
  1205. var f, o = i(this);
  1206. 1 === this.nodeType && (f = e ? n.call(this, u, o.val()) : n, null == f ? f = "" : "number" == typeof f ? f += "" : i.isArray(f) && (f = i.map(f, function(n) {
  1207. return null == n ? "" : n + ""
  1208. })), r = i.valHooks[this.type] || i.valHooks[this.nodeName.toLowerCase()], r && "set" in r && r.set(this, f, "value") !== t || (this.value = f))
  1209. })) : f ? (r = i.valHooks[f.type] || i.valHooks[f.nodeName.toLowerCase()], r && "get" in r && (u = r.get(f, "value")) !== t ? u : (u = f.value, "string" == typeof u ? u.replace(df, "") : null == u ? "" : u)) : void 0
  1210. }
  1211. });
  1212. i.extend({
  1213. valHooks: {
  1214. option: {
  1215. get: function(n) {
  1216. var t = n.attributes.value;
  1217. return !t || t.specified ? n.value : n.text
  1218. }
  1219. },
  1220. select: {
  1221. get: function(n) {
  1222. for (var e, t, o = n.options, r = n.selectedIndex, u = "select-one" === n.type || 0 > r, s = u ? null : [], h = u ? r + 1 : o.length, f = 0 > r ? h : u ? r : 0; h > f; f++)
  1223. if (t = o[f], !(!t.selected && f !== r || (i.support.optDisabled ? t.disabled : null !== t.getAttribute("disabled")) || t.parentNode.disabled && i.nodeName(t.parentNode, "optgroup"))) {
  1224. if (e = i(t).val(), u) return e;
  1225. s.push(e)
  1226. }
  1227. return s
  1228. },
  1229. set: function(n, t) {
  1230. var r = i.makeArray(t);
  1231. return i(n).find("option").each(function() {
  1232. this.selected = i.inArray(i(this).val(), r) >= 0
  1233. }), r.length || (n.selectedIndex = -1), r
  1234. }
  1235. }
  1236. },
  1237. attr: function(n, r, u) {
  1238. var f, s, e, h = n.nodeType;
  1239. if (n && 3 !== h && 8 !== h && 2 !== h) return typeof n.getAttribute === o ? i.prop(n, r, u) : (s = 1 !== h || !i.isXMLDoc(n), s && (r = r.toLowerCase(), f = i.attrHooks[r] || (er.test(r) ? fr : k)), u === t ? f && s && "get" in f && null !== (e = f.get(n, r)) ? e : (typeof n.getAttribute !== o && (e = n.getAttribute(r)), null == e ? t : e) : null !== u ? f && s && "set" in f && (e = f.set(n, u, r)) !== t ? e : (n.setAttribute(r, u + ""), u) : (i.removeAttr(n, r), t))
  1240. },
  1241. removeAttr: function(n, t) {
  1242. var r, u, e = 0,
  1243. f = t && t.match(s);
  1244. if (f && 1 === n.nodeType)
  1245. while (r = f[e++]) u = i.propFix[r] || r, er.test(r) ? !a && ii.test(r) ? n[i.camelCase("default-" + r)] = n[u] = !1 : n[u] = !1 : i.attr(n, r, ""), n.removeAttribute(a ? r : u)
  1246. },
  1247. attrHooks: {
  1248. type: {
  1249. set: function(n, t) {
  1250. if (!i.support.radioValue && "radio" === t && i.nodeName(n, "input")) {
  1251. var r = n.value;
  1252. return n.setAttribute("type", t), r && (n.value = r), t
  1253. }
  1254. }
  1255. }
  1256. },
  1257. propFix: {
  1258. tabindex: "tabIndex",
  1259. readonly: "readOnly",
  1260. "for": "htmlFor",
  1261. "class": "className",
  1262. maxlength: "maxLength",
  1263. cellspacing: "cellSpacing",
  1264. cellpadding: "cellPadding",
  1265. rowspan: "rowSpan",
  1266. colspan: "colSpan",
  1267. usemap: "useMap",
  1268. frameborder: "frameBorder",
  1269. contenteditable: "contentEditable"
  1270. },
  1271. prop: function(n, r, u) {
  1272. var e, f, s, o = n.nodeType;
  1273. if (n && 3 !== o && 8 !== o && 2 !== o) return s = 1 !== o || !i.isXMLDoc(n), s && (r = i.propFix[r] || r, f = i.propHooks[r]), u !== t ? f && "set" in f && (e = f.set(n, u, r)) !== t ? e : n[r] = u : f && "get" in f && null !== (e = f.get(n, r)) ? e : n[r]
  1274. },
  1275. propHooks: {
  1276. tabIndex: {
  1277. get: function(n) {
  1278. var i = n.getAttributeNode("tabindex");
  1279. return i && i.specified ? parseInt(i.value, 10) : gf.test(n.nodeName) || ne.test(n.nodeName) && n.href ? 0 : t
  1280. }
  1281. }
  1282. }
  1283. });
  1284. fr = {
  1285. get: function(n, r) {
  1286. var u = i.prop(n, r),
  1287. f = "boolean" == typeof u && n.getAttribute(r),
  1288. e = "boolean" == typeof u ? ri && a ? null != f : ii.test(r) ? n[i.camelCase("default-" + r)] : !!f : n.getAttributeNode(r);
  1289. return e && e.value !== !1 ? r.toLowerCase() : t
  1290. },
  1291. set: function(n, t, r) {
  1292. return t === !1 ? i.removeAttr(n, r) : ri && a || !ii.test(r) ? n.setAttribute(!a && i.propFix[r] || r, r) : n[i.camelCase("default-" + r)] = n[r] = !0, r
  1293. }
  1294. };
  1295. ri && a || (i.attrHooks.value = {
  1296. get: function(n, r) {
  1297. var u = n.getAttributeNode(r);
  1298. return i.nodeName(n, "input") ? n.defaultValue : u && u.specified ? u.value : t
  1299. },
  1300. set: function(n, r, u) {
  1301. return i.nodeName(n, "input") ? (n.defaultValue = r, t) : k && k.set(n, r, u)
  1302. }
  1303. });
  1304. a || (k = i.valHooks.button = {
  1305. get: function(n, i) {
  1306. var r = n.getAttributeNode(i);
  1307. return r && ("id" === i || "name" === i || "coords" === i ? "" !== r.value : r.specified) ? r.value : t
  1308. },
  1309. set: function(n, i, r) {
  1310. var u = n.getAttributeNode(r);
  1311. return u || n.setAttributeNode(u = n.ownerDocument.createAttribute(r)), u.value = i += "", "value" === r || i === n.getAttribute(r) ? i : t
  1312. }
  1313. }, i.attrHooks.contenteditable = {
  1314. get: k.get,
  1315. set: function(n, t, i) {
  1316. k.set(n, "" === t ? !1 : t, i)
  1317. }
  1318. }, i.each(["width", "height"], function(n, r) {
  1319. i.attrHooks[r] = i.extend(i.attrHooks[r], {
  1320. set: function(n, i) {
  1321. return "" === i ? (n.setAttribute(r, "auto"), i) : t
  1322. }
  1323. })
  1324. }));
  1325. i.support.hrefNormalized || (i.each(["href", "src", "width", "height"], function(n, r) {
  1326. i.attrHooks[r] = i.extend(i.attrHooks[r], {
  1327. get: function(n) {
  1328. var i = n.getAttribute(r, 2);
  1329. return null == i ? t : i
  1330. }
  1331. })
  1332. }), i.each(["href", "src"], function(n, t) {
  1333. i.propHooks[t] = {
  1334. get: function(n) {
  1335. return n.getAttribute(t, 4)
  1336. }
  1337. }
  1338. }));
  1339. i.support.style || (i.attrHooks.style = {
  1340. get: function(n) {
  1341. return n.style.cssText || t
  1342. },
  1343. set: function(n, t) {
  1344. return n.style.cssText = t + ""
  1345. }
  1346. });
  1347. i.support.optSelected || (i.propHooks.selected = i.extend(i.propHooks.selected, {
  1348. get: function(n) {
  1349. var t = n.parentNode;
  1350. return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
  1351. }
  1352. }));
  1353. i.support.enctype || (i.propFix.enctype = "encoding");
  1354. i.support.checkOn || i.each(["radio", "checkbox"], function() {
  1355. i.valHooks[this] = {
  1356. get: function(n) {
  1357. return null === n.getAttribute("value") ? "on" : n.value
  1358. }
  1359. }
  1360. });
  1361. i.each(["radio", "checkbox"], function() {
  1362. i.valHooks[this] = i.extend(i.valHooks[this], {
  1363. set: function(n, r) {
  1364. return i.isArray(r) ? n.checked = i.inArray(i(n).val(), r) >= 0 : t
  1365. }
  1366. })
  1367. });
  1368. var ui = /^(?:input|select|textarea)$/i,
  1369. te = /^key/,
  1370. ie = /^(?:mouse|contextmenu)|click/,
  1371. or = /^(?:focusinfocus|focusoutblur)$/,
  1372. sr = /^([^.]*)(?:\.(.+)|)$/;
  1373. i.event = {
  1374. global: {},
  1375. add: function(n, r, u, f, e) {
  1376. var b, p, k, w, c, l, a, v, h, d, g, y = i._data(n);
  1377. if (y) {
  1378. for (u.handler && (w = u, u = w.handler, e = w.selector), u.guid || (u.guid = i.guid++), (p = y.events) || (p = y.events = {}), (l = y.handle) || (l = y.handle = function(n) {
  1379. return typeof i === o || n && i.event.triggered === n.type ? t : i.event.dispatch.apply(l.elem, arguments)
  1380. }, l.elem = n), r = (r || "").match(s) || [""], k = r.length; k--;) b = sr.exec(r[k]) || [], h = g = b[1], d = (b[2] || "").split(".").sort(), c = i.event.special[h] || {}, h = (e ? c.delegateType : c.bindType) || h, c = i.event.special[h] || {}, a = i.extend({
  1381. type: h,
  1382. origType: g,
  1383. data: f,
  1384. handler: u,
  1385. guid: u.guid,
  1386. selector: e,
  1387. needsContext: e && i.expr.match.needsContext.test(e),
  1388. namespace: d.join(".")
  1389. }, w), (v = p[h]) || (v = p[h] = [], v.delegateCount = 0, c.setup && c.setup.call(n, f, d, l) !== !1 || (n.addEventListener ? n.addEventListener(h, l, !1) : n.attachEvent && n.attachEvent("on" + h, l))), c.add && (c.add.call(n, a), a.handler.guid || (a.handler.guid = u.guid)), e ? v.splice(v.delegateCount++, 0, a) : v.push(a), i.event.global[h] = !0;
  1390. n = null
  1391. }
  1392. },
  1393. remove: function(n, t, r, u, f) {
  1394. var y, o, h, b, p, a, c, l, e, w, k, v = i.hasData(n) && i._data(n);
  1395. if (v && (a = v.events)) {
  1396. for (t = (t || "").match(s) || [""], p = t.length; p--;)
  1397. if (h = sr.exec(t[p]) || [], e = k = h[1], w = (h[2] || "").split(".").sort(), e) {
  1398. for (c = i.event.special[e] || {}, e = (u ? c.delegateType : c.bindType) || e, l = a[e] || [], h = h[2] && RegExp("(^|\\.)" + w.join("\\.(?:.*\\.|)") + "(\\.|$)"), b = y = l.length; y--;) o = l[y], !f && k !== o.origType || r && r.guid !== o.guid || h && !h.test(o.namespace) || u && u !== o.selector && ("**" !== u || !o.selector) || (l.splice(y, 1), o.selector && l.delegateCount--, c.remove && c.remove.call(n, o));
  1399. b && !l.length && (c.teardown && c.teardown.call(n, w, v.handle) !== !1 || i.removeEvent(n, e, v.handle), delete a[e])
  1400. } else
  1401. for (e in a) i.event.remove(n, e + t[p], r, u, !0);
  1402. i.isEmptyObject(a) && (delete v.handle, i._removeData(n, "events"))
  1403. }
  1404. },
  1405. trigger: function(u, f, e, o) {
  1406. var a, v, h, p, l, c, w, b = [e || r],
  1407. s = it.call(u, "type") ? u.type : u,
  1408. y = it.call(u, "namespace") ? u.namespace.split(".") : [];
  1409. if (h = c = e = e || r, 3 !== e.nodeType && 8 !== e.nodeType && !or.test(s + i.event.triggered) && (s.indexOf(".") >= 0 && (y = s.split("."), s = y.shift(), y.sort()), v = 0 > s.indexOf(":") && "on" + s, u = u[i.expando] ? u : new i.Event(s, "object" == typeof u && u), u.isTrigger = !0, u.namespace = y.join("."), u.namespace_re = u.namespace ? RegExp("(^|\\.)" + y.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, u.result = t, u.target || (u.target = e), f = null == f ? [u] : i.makeArray(f, [u]), l = i.event.special[s] || {}, o || !l.trigger || l.trigger.apply(e, f) !== !1)) {
  1410. if (!o && !l.noBubble && !i.isWindow(e)) {
  1411. for (p = l.delegateType || s, or.test(p + s) || (h = h.parentNode); h; h = h.parentNode) b.push(h), c = h;
  1412. c === (e.ownerDocument || r) && b.push(c.defaultView || c.parentWindow || n)
  1413. }
  1414. for (w = 0;
  1415. (h = b[w++]) && !u.isPropagationStopped();) u.type = w > 1 ? p : l.bindType || s, a = (i._data(h, "events") || {})[u.type] && i._data(h, "handle"), a && a.apply(h, f), a = v && h[v], a && i.acceptData(h) && a.apply && a.apply(h, f) === !1 && u.preventDefault();
  1416. if (u.type = s, !(o || u.isDefaultPrevented() || l._default && l._default.apply(e.ownerDocument, f) !== !1 || "click" === s && i.nodeName(e, "a") || !i.acceptData(e) || !v || !e[s] || i.isWindow(e))) {
  1417. c = e[v];
  1418. c && (e[v] = null);
  1419. i.event.triggered = s;
  1420. try {
  1421. e[s]()
  1422. } catch (k) {}
  1423. i.event.triggered = t;
  1424. c && (e[v] = c)
  1425. }
  1426. return u.result
  1427. }
  1428. },
  1429. dispatch: function(n) {
  1430. n = i.event.fix(n);
  1431. var o, e, r, u, s, h = [],
  1432. c = l.call(arguments),
  1433. a = (i._data(this, "events") || {})[n.type] || [],
  1434. f = i.event.special[n.type] || {};
  1435. if (c[0] = n, n.delegateTarget = this, !f.preDispatch || f.preDispatch.call(this, n) !== !1) {
  1436. for (h = i.event.handlers.call(this, n, a), o = 0;
  1437. (u = h[o++]) && !n.isPropagationStopped();)
  1438. for (n.currentTarget = u.elem, s = 0;
  1439. (r = u.handlers[s++]) && !n.isImmediatePropagationStopped();)(!n.namespace_re || n.namespace_re.test(r.namespace)) && (n.handleObj = r, n.data = r.data, e = ((i.event.special[r.origType] || {}).handle || r.handler).apply(u.elem, c), e !== t && (n.result = e) === !1 && (n.preventDefault(), n.stopPropagation()));
  1440. return f.postDispatch && f.postDispatch.call(this, n), n.result
  1441. }
  1442. },
  1443. handlers: function(n, r) {
  1444. var e, o, f, s, c = [],
  1445. h = r.delegateCount,
  1446. u = n.target;
  1447. if (h && u.nodeType && (!n.button || "click" !== n.type))
  1448. for (; u != this; u = u.parentNode || this)
  1449. if (1 === u.nodeType && (u.disabled !== !0 || "click" !== n.type)) {
  1450. for (f = [], s = 0; h > s; s++) o = r[s], e = o.selector + " ", f[e] === t && (f[e] = o.needsContext ? i(e, this).index(u) >= 0 : i.find(e, this, null, [u]).length), f[e] && f.push(o);
  1451. f.length && c.push({
  1452. elem: u,
  1453. handlers: f
  1454. })
  1455. }
  1456. return r.length > h && c.push({
  1457. elem: this,
  1458. handlers: r.slice(h)
  1459. }), c
  1460. },
  1461. fix: function(n) {
  1462. if (n[i.expando]) return n;
  1463. var e, o, s, u = n.type,
  1464. f = n,
  1465. t = this.fixHooks[u];
  1466. for (t || (this.fixHooks[u] = t = ie.test(u) ? this.mouseHooks : te.test(u) ? this.keyHooks : {}), s = t.props ? this.props.concat(t.props) : this.props, n = new i.Event(f), e = s.length; e--;) o = s[e], n[o] = f[o];
  1467. return n.target || (n.target = f.srcElement || r), 3 === n.target.nodeType && (n.target = n.target.parentNode), n.metaKey = !!n.metaKey, t.filter ? t.filter(n, f) : n
  1468. },
  1469. props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
  1470. fixHooks: {},
  1471. keyHooks: {
  1472. props: "char charCode key keyCode".split(" "),
  1473. filter: function(n, t) {
  1474. return null == n.which && (n.which = null != t.charCode ? t.charCode : t.keyCode), n
  1475. }
  1476. },
  1477. mouseHooks: {
  1478. props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
  1479. filter: function(n, i) {
  1480. var u, o, f, e = i.button,
  1481. s = i.fromElement;
  1482. return null == n.pageX && null != i.clientX && (o = n.target.ownerDocument || r, f = o.documentElement, u = o.body, n.pageX = i.clientX + (f && f.scrollLeft || u && u.scrollLeft || 0) - (f && f.clientLeft || u && u.clientLeft || 0), n.pageY = i.clientY + (f && f.scrollTop || u && u.scrollTop || 0) - (f && f.clientTop || u && u.clientTop || 0)), !n.relatedTarget && s && (n.relatedTarget = s === n.target ? i.toElement : s), n.which || e === t || (n.which = 1 & e ? 1 : 2 & e ? 3 : 4 & e ? 2 : 0), n
  1483. }
  1484. },
  1485. special: {
  1486. load: {
  1487. noBubble: !0
  1488. },
  1489. click: {
  1490. trigger: function() {
  1491. return i.nodeName(this, "input") && "checkbox" === this.type && this.click ? (this.click(), !1) : t
  1492. }
  1493. },
  1494. focus: {
  1495. trigger: function() {
  1496. if (this !== r.activeElement && this.focus) try {
  1497. return this.focus(), !1
  1498. } catch (n) {}
  1499. },
  1500. delegateType: "focusin"
  1501. },
  1502. blur: {
  1503. trigger: function() {
  1504. return this === r.activeElement && this.blur ? (this.blur(), !1) : t
  1505. },
  1506. delegateType: "focusout"
  1507. },
  1508. beforeunload: {
  1509. postDispatch: function(n) {
  1510. n.result !== t && (n.originalEvent.returnValue = n.result)
  1511. }
  1512. }
  1513. },
  1514. simulate: function(n, t, r, u) {
  1515. var f = i.extend(new i.Event, r, {
  1516. type: n,
  1517. isSimulated: !0,
  1518. originalEvent: {}
  1519. });
  1520. u ? i.event.trigger(f, null, t) : i.event.dispatch.call(t, f);
  1521. f.isDefaultPrevented() && r.preventDefault()
  1522. }
  1523. };
  1524. i.removeEvent = r.removeEventListener ? function(n, t, i) {
  1525. n.removeEventListener && n.removeEventListener(t, i, !1)
  1526. } : function(n, t, i) {
  1527. var r = "on" + t;
  1528. n.detachEvent && (typeof n[r] === o && (n[r] = null), n.detachEvent(r, i))
  1529. };
  1530. i.Event = function(n, r) {
  1531. return this instanceof i.Event ? (n && n.type ? (this.originalEvent = n, this.type = n.type, this.isDefaultPrevented = n.defaultPrevented || n.returnValue === !1 || n.getPreventDefault && n.getPreventDefault() ? ht : d) : this.type = n, r && i.extend(this, r), this.timeStamp = n && n.timeStamp || i.now(), this[i.expando] = !0, t) : new i.Event(n, r)
  1532. };
  1533. i.Event.prototype = {
  1534. isDefaultPrevented: d,
  1535. isPropagationStopped: d,
  1536. isImmediatePropagationStopped: d,
  1537. preventDefault: function() {
  1538. var n = this.originalEvent;
  1539. this.isDefaultPrevented = ht;
  1540. n && (n.preventDefault ? n.preventDefault() : n.returnValue = !1)
  1541. },
  1542. stopPropagation: function() {
  1543. var n = this.originalEvent;
  1544. this.isPropagationStopped = ht;
  1545. n && (n.stopPropagation && n.stopPropagation(), n.cancelBubble = !0)
  1546. },
  1547. stopImmediatePropagation: function() {
  1548. this.isImmediatePropagationStopped = ht;
  1549. this.stopPropagation()
  1550. }
  1551. };
  1552. i.each({
  1553. mouseenter: "mouseover",
  1554. mouseleave: "mouseout"
  1555. }, function(n, t) {
  1556. i.event.special[n] = {
  1557. delegateType: t,
  1558. bindType: t,
  1559. handle: function(n) {
  1560. var u, f = this,
  1561. r = n.relatedTarget,
  1562. e = n.handleObj;
  1563. return (!r || r !== f && !i.contains(f, r)) && (n.type = e.origType, u = e.handler.apply(this, arguments), n.type = t), u
  1564. }
  1565. }
  1566. });
  1567. i.support.submitBubbles || (i.event.special.submit = {
  1568. setup: function() {
  1569. return i.nodeName(this, "form") ? !1 : (i.event.add(this, "click._submit keypress._submit", function(n) {
  1570. var u = n.target,
  1571. r = i.nodeName(u, "input") || i.nodeName(u, "button") ? u.form : t;
  1572. r && !i._data(r, "submitBubbles") && (i.event.add(r, "submit._submit", function(n) {
  1573. n._submit_bubble = !0
  1574. }), i._data(r, "submitBubbles", !0))
  1575. }), t)
  1576. },
  1577. postDispatch: function(n) {
  1578. n._submit_bubble && (delete n._submit_bubble, this.parentNode && !n.isTrigger && i.event.simulate("submit", this.parentNode, n, !0))
  1579. },
  1580. teardown: function() {
  1581. return i.nodeName(this, "form") ? !1 : (i.event.remove(this, "._submit"), t)
  1582. }
  1583. });
  1584. i.support.changeBubbles || (i.event.special.change = {
  1585. setup: function() {
  1586. return ui.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (i.event.add(this, "propertychange._change", function(n) {
  1587. "checked" === n.originalEvent.propertyName && (this._just_changed = !0)
  1588. }), i.event.add(this, "click._change", function(n) {
  1589. this._just_changed && !n.isTrigger && (this._just_changed = !1);
  1590. i.event.simulate("change", this, n, !0)
  1591. })), !1) : (i.event.add(this, "beforeactivate._change", function(n) {
  1592. var t = n.target;
  1593. ui.test(t.nodeName) && !i._data(t, "changeBubbles") && (i.event.add(t, "change._change", function(n) {
  1594. !this.parentNode || n.isSimulated || n.isTrigger || i.event.simulate("change", this.parentNode, n, !0)
  1595. }), i._data(t, "changeBubbles", !0))
  1596. }), t)
  1597. },
  1598. handle: function(n) {
  1599. var i = n.target;
  1600. return this !== i || n.isSimulated || n.isTrigger || "radio" !== i.type && "checkbox" !== i.type ? n.handleObj.handler.apply(this, arguments) : t
  1601. },
  1602. teardown: function() {
  1603. return i.event.remove(this, "._change"), !ui.test(this.nodeName)
  1604. }
  1605. });
  1606. i.support.focusinBubbles || i.each({
  1607. focus: "focusin",
  1608. blur: "focusout"
  1609. }, function(n, t) {
  1610. var u = 0,
  1611. f = function(n) {
  1612. i.event.simulate(t, n.target, i.event.fix(n), !0)
  1613. };
  1614. i.event.special[t] = {
  1615. setup: function() {
  1616. 0 == u++ && r.addEventListener(n, f, !0)
  1617. },
  1618. teardown: function() {
  1619. 0 == --u && r.removeEventListener(n, f, !0)
  1620. }
  1621. }
  1622. });
  1623. i.fn.extend({
  1624. on: function(n, r, u, f, e) {
  1625. var s, o;
  1626. if ("object" == typeof n) {
  1627. "string" != typeof r && (u = u || r, r = t);
  1628. for (s in n) this.on(s, r, u, n[s], e);
  1629. return this
  1630. }
  1631. if (null == u && null == f ? (f = r, u = r = t) : null == f && ("string" == typeof r ? (f = u, u = t) : (f = u, u = r, r = t)), f === !1) f = d;
  1632. else if (!f) return this;
  1633. return 1 === e && (o = f, f = function(n) {
  1634. return i().off(n), o.apply(this, arguments)
  1635. }, f.guid = o.guid || (o.guid = i.guid++)), this.each(function() {
  1636. i.event.add(this, n, f, u, r)
  1637. })
  1638. },
  1639. one: function(n, t, i, r) {
  1640. return this.on(n, t, i, r, 1)
  1641. },
  1642. off: function(n, r, u) {
  1643. var f, e;
  1644. if (n && n.preventDefault && n.handleObj) return f = n.handleObj, i(n.delegateTarget).off(f.namespace ? f.origType + "." + f.namespace : f.origType, f.selector, f.handler), this;
  1645. if ("object" == typeof n) {
  1646. for (e in n) this.off(e, r, n[e]);
  1647. return this
  1648. }
  1649. return (r === !1 || "function" == typeof r) && (u = r, r = t), u === !1 && (u = d), this.each(function() {
  1650. i.event.remove(this, n, u, r)
  1651. })
  1652. },
  1653. bind: function(n, t, i) {
  1654. return this.on(n, null, t, i)
  1655. },
  1656. unbind: function(n, t) {
  1657. return this.off(n, null, t)
  1658. },
  1659. delegate: function(n, t, i, r) {
  1660. return this.on(t, n, i, r)
  1661. },
  1662. undelegate: function(n, t, i) {
  1663. return 1 === arguments.length ? this.off(n, "**") : this.off(t, n || "**", i)
  1664. },
  1665. trigger: function(n, t) {
  1666. return this.each(function() {
  1667. i.event.trigger(n, t, this)
  1668. })
  1669. },
  1670. triggerHandler: function(n, r) {
  1671. var u = this[0];
  1672. return u ? i.event.trigger(n, r, u, !0) : t
  1673. }
  1674. }),
  1675. function(n, t) {
  1676. function ti(n) {
  1677. return tr.test(n + "")
  1678. }
  1679. function ii() {
  1680. var n, t = [];
  1681. return n = function(i, u) {
  1682. return t.push(i += " ") > r.cacheLength && delete n[t.shift()], n[i] = u
  1683. }
  1684. }
  1685. function l(n) {
  1686. return n[f] = !0, n
  1687. }
  1688. function b(n) {
  1689. var t = s.createElement("div");
  1690. try {
  1691. return n(t)
  1692. } catch (i) {
  1693. return !1
  1694. } finally {
  1695. t = null
  1696. }
  1697. }
  1698. function u(n, t, i, r) {
  1699. var y, u, e, l, p, v, w, h, d, b;
  1700. if ((t ? t.ownerDocument || t : k) !== s && it(t), t = t || s, i = i || [], !n || "string" != typeof n) return i;
  1701. if (1 !== (l = t.nodeType) && 9 !== l) return [];
  1702. if (!c && !r) {
  1703. if (y = ir.exec(n))
  1704. if (e = y[1]) {
  1705. if (9 === l) {
  1706. if (u = t.getElementById(e), !u || !u.parentNode) return i;
  1707. if (u.id === e) return i.push(u), i
  1708. } else if (t.ownerDocument && (u = t.ownerDocument.getElementById(e)) && et(t, u) && u.id === e) return i.push(u), i
  1709. } else {
  1710. if (y[2]) return ut.apply(i, ft.call(t.getElementsByTagName(n), 0)), i;
  1711. if ((e = y[3]) && o.getByClassName && t.getElementsByClassName) return ut.apply(i, ft.call(t.getElementsByClassName(e), 0)), i
  1712. }
  1713. if (o.qsa && !a.test(n)) {
  1714. if (w = !0, h = f, d = t, b = 9 === l && n, 1 === l && "object" !== t.nodeName.toLowerCase()) {
  1715. for (v = yt(n), (w = t.getAttribute("id")) ? h = w.replace(fr, "\\$&") : t.setAttribute("id", h), h = "[id='" + h + "'] ", p = v.length; p--;) v[p] = h + pt(v[p]);
  1716. d = ni.test(n) && t.parentNode || t;
  1717. b = v.join(",")
  1718. }
  1719. if (b) try {
  1720. return ut.apply(i, ft.call(d.querySelectorAll(b), 0)), i
  1721. } catch (g) {} finally {
  1722. w || t.removeAttribute("id")
  1723. }
  1724. }
  1725. }
  1726. return lr(n.replace(at, "$1"), t, i, r)
  1727. }
  1728. function yi(n, t) {
  1729. var i = t && n,
  1730. r = i && (~t.sourceIndex || li) - (~n.sourceIndex || li);
  1731. if (r) return r;
  1732. if (i)
  1733. while (i = i.nextSibling)
  1734. if (i === t) return -1;
  1735. return n ? 1 : -1
  1736. }
  1737. function or(n) {
  1738. return function(t) {
  1739. var i = t.nodeName.toLowerCase();
  1740. return "input" === i && t.type === n
  1741. }
  1742. }
  1743. function sr(n) {
  1744. return function(t) {
  1745. var i = t.nodeName.toLowerCase();
  1746. return ("input" === i || "button" === i) && t.type === n
  1747. }
  1748. }
  1749. function g(n) {
  1750. return l(function(t) {
  1751. return t = +t, l(function(i, r) {
  1752. for (var u, f = n([], i.length, t), e = f.length; e--;) i[u = f[e]] && (i[u] = !(r[u] = i[u]))
  1753. })
  1754. })
  1755. }
  1756. function yt(n, t) {
  1757. var e, f, s, o, i, h, c, l = hi[n + " "];
  1758. if (l) return t ? 0 : l.slice(0);
  1759. for (i = n, h = [], c = r.preFilter; i;) {
  1760. (!e || (f = ki.exec(i))) && (f && (i = i.slice(f[0].length) || i), h.push(s = []));
  1761. e = !1;
  1762. (f = di.exec(i)) && (e = f.shift(), s.push({
  1763. value: e,
  1764. type: f[0].replace(at, " ")
  1765. }), i = i.slice(e.length));
  1766. for (o in r.filter)(f = vt[o].exec(i)) && (!c[o] || (f = c[o](f))) && (e = f.shift(), s.push({
  1767. value: e,
  1768. type: o,
  1769. matches: f
  1770. }), i = i.slice(e.length));
  1771. if (!e) break
  1772. }
  1773. return t ? i.length : i ? u.error(n) : hi(n, h).slice(0)
  1774. }
  1775. function pt(n) {
  1776. for (var t = 0, r = n.length, i = ""; r > t; t++) i += n[t].value;
  1777. return i
  1778. }
  1779. function ri(n, t, i) {
  1780. var r = t.dir,
  1781. u = i && "parentNode" === r,
  1782. e = wi++;
  1783. return t.first ? function(t, i, f) {
  1784. while (t = t[r])
  1785. if (1 === t.nodeType || u) return n(t, i, f)
  1786. } : function(t, i, o) {
  1787. var h, s, c, l = v + " " + e;
  1788. if (o) {
  1789. while (t = t[r])
  1790. if ((1 === t.nodeType || u) && n(t, i, o)) return !0
  1791. } else
  1792. while (t = t[r])
  1793. if (1 === t.nodeType || u)
  1794. if (c = t[f] || (t[f] = {}), (s = c[r]) && s[0] === l) {
  1795. if ((h = s[1]) === !0 || h === ot) return h === !0
  1796. } else if (s = c[r] = [l], s[1] = n(t, i, o) || ot, s[1] === !0) return !0
  1797. }
  1798. }
  1799. function ui(n) {
  1800. return n.length > 1 ? function(t, i, r) {
  1801. for (var u = n.length; u--;)
  1802. if (!n[u](t, i, r)) return !1;
  1803. return !0
  1804. } : n[0]
  1805. }
  1806. function wt(n, t, i, r, u) {
  1807. for (var e, o = [], f = 0, s = n.length, h = null != t; s > f; f++)(e = n[f]) && (!i || i(e, r, u)) && (o.push(e), h && t.push(f));
  1808. return o
  1809. }
  1810. function fi(n, t, i, r, u, e) {
  1811. return r && !r[f] && (r = fi(r)), u && !u[f] && (u = fi(u, e)), l(function(f, e, o, s) {
  1812. var l, c, a, p = [],
  1813. y = [],
  1814. w = e.length,
  1815. b = f || cr(t || "*", o.nodeType ? [o] : o, []),
  1816. v = !n || !f && t ? b : wt(b, p, n, o, s),
  1817. h = i ? u || (f ? n : w || r) ? [] : e : v;
  1818. if (i && i(v, h, o, s), r)
  1819. for (l = wt(h, y), r(l, [], o, s), c = l.length; c--;)(a = l[c]) && (h[y[c]] = !(v[y[c]] = a));
  1820. if (f) {
  1821. if (u || n) {
  1822. if (u) {
  1823. for (l = [], c = h.length; c--;)(a = h[c]) && l.push(v[c] = a);
  1824. u(null, h = [], l, s)
  1825. }
  1826. for (c = h.length; c--;)(a = h[c]) && (l = u ? dt.call(f, a) : p[c]) > -1 && (f[l] = !(e[l] = a))
  1827. }
  1828. } else h = wt(h === e ? h.splice(w, h.length) : h), u ? u(null, e, h, s) : ut.apply(e, h)
  1829. })
  1830. }
  1831. function ei(n) {
  1832. for (var s, u, i, o = n.length, h = r.relative[n[0].type], c = h || r.relative[" "], t = h ? 1 : 0, l = ri(function(n) {
  1833. return n === s
  1834. }, c, !0), a = ri(function(n) {
  1835. return dt.call(s, n) > -1
  1836. }, c, !0), e = [function(n, t, i) {
  1837. return !h && (i || t !== ht) || ((s = t).nodeType ? l(n, t, i) : a(n, t, i))
  1838. }]; o > t; t++)
  1839. if (u = r.relative[n[t].type]) e = [ri(ui(e), u)];
  1840. else {
  1841. if (u = r.filter[n[t].type].apply(null, n[t].matches), u[f]) {
  1842. for (i = ++t; o > i; i++)
  1843. if (r.relative[n[i].type]) break;
  1844. return fi(t > 1 && ui(e), t > 1 && pt(n.slice(0, t - 1)).replace(at, "$1"), u, i > t && ei(n.slice(t, i)), o > i && ei(n = n.slice(i)), o > i && pt(n))
  1845. }
  1846. e.push(u)
  1847. }
  1848. return ui(e)
  1849. }
  1850. function hr(n, t) {
  1851. var f = 0,
  1852. i = t.length > 0,
  1853. e = n.length > 0,
  1854. o = function(o, h, c, l, a) {
  1855. var p, d, b, w = [],
  1856. k = 0,
  1857. y = "0",
  1858. g = o && [],
  1859. nt = null != a,
  1860. tt = ht,
  1861. rt = o || e && r.find.TAG("*", a && h.parentNode || h),
  1862. it = v += null == tt ? 1 : Math.random() || .1;
  1863. for (nt && (ht = h !== s && h, ot = f); null != (p = rt[y]); y++) {
  1864. if (e && p) {
  1865. for (d = 0; b = n[d++];)
  1866. if (b(p, h, c)) {
  1867. l.push(p);
  1868. break
  1869. }
  1870. nt && (v = it, ot = ++f)
  1871. }
  1872. i && ((p = !b && p) && k--, o && g.push(p))
  1873. }
  1874. if (k += y, i && y !== k) {
  1875. for (d = 0; b = t[d++];) b(g, w, h, c);
  1876. if (o) {
  1877. if (k > 0)
  1878. while (y--) g[y] || w[y] || (w[y] = bi.call(l));
  1879. w = wt(w)
  1880. }
  1881. ut.apply(l, w);
  1882. nt && !o && w.length > 0 && k + t.length > 1 && u.uniqueSort(l)
  1883. }
  1884. return nt && (v = it, ht = tt), g
  1885. };
  1886. return i ? l(o) : o
  1887. }
  1888. function cr(n, t, i) {
  1889. for (var r = 0, f = t.length; f > r; r++) u(n, t[r], i);
  1890. return i
  1891. }
  1892. function lr(n, t, i, u) {
  1893. var o, f, e, h, l, s = yt(n);
  1894. if (!u && 1 === s.length) {
  1895. if (f = s[0] = s[0].slice(0), f.length > 2 && "ID" === (e = f[0]).type && 9 === t.nodeType && !c && r.relative[f[1].type]) {
  1896. if (t = r.find.ID(e.matches[0].replace(p, w), t)[0], !t) return i;
  1897. n = n.slice(f.shift().value.length)
  1898. }
  1899. for (o = vt.needsContext.test(n) ? 0 : f.length; o--;) {
  1900. if (e = f[o], r.relative[h = e.type]) break;
  1901. if ((l = r.find[h]) && (u = l(e.matches[0].replace(p, w), ni.test(f[0].type) && t.parentNode || t))) {
  1902. if (f.splice(o, 1), n = u.length && pt(f), !n) return ut.apply(i, ft.call(u, 0)), i;
  1903. break
  1904. }
  1905. }
  1906. }
  1907. return bt(n, s)(u, t, c, i, ni.test(n)), i
  1908. }
  1909. function pi() {}
  1910. var nt, ot, r, st, oi, bt, tt, ht, it, s, h, c, a, rt, ct, et, kt, f = "sizzle" + -new Date,
  1911. k = n.document,
  1912. o = {},
  1913. v = 0,
  1914. wi = 0,
  1915. si = ii(),
  1916. hi = ii(),
  1917. ci = ii(),
  1918. y = typeof t,
  1919. li = -2147483648,
  1920. lt = [],
  1921. bi = lt.pop,
  1922. ut = lt.push,
  1923. ft = lt.slice,
  1924. dt = lt.indexOf || function(n) {
  1925. for (var t = 0, i = this.length; i > t; t++)
  1926. if (this[t] === n) return t;
  1927. return -1
  1928. },
  1929. e = "[\\x20\\t\\r\\n\\f]",
  1930. d = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
  1931. ai = d.replace("w", "w#"),
  1932. vi = "\\[" + e + "*(" + d + ")" + e + "*(?:([*^$|!~]?=)" + e + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + ai + ")|)|)" + e + "*\\]",
  1933. gt = ":(" + d + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + vi.replace(3, 8) + ")*)|.*)\\)|)",
  1934. at = RegExp("^" + e + "+|((?:^|[^\\\\])(?:\\\\.)*)" + e + "+$", "g"),
  1935. ki = RegExp("^" + e + "*," + e + "*"),
  1936. di = RegExp("^" + e + "*([\\x20\\t\\r\\n\\f>+~])" + e + "*"),
  1937. gi = RegExp(gt),
  1938. nr = RegExp("^" + ai + "$"),
  1939. vt = {
  1940. ID: RegExp("^#(" + d + ")"),
  1941. CLASS: RegExp("^\\.(" + d + ")"),
  1942. NAME: RegExp("^\\[name=['\"]?(" + d + ")['\"]?\\]"),
  1943. TAG: RegExp("^(" + d.replace("w", "w*") + ")"),
  1944. ATTR: RegExp("^" + vi),
  1945. PSEUDO: RegExp("^" + gt),
  1946. CHILD: RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + e + "*(even|odd|(([+-]|)(\\d*)n|)" + e + "*(?:([+-]|)" + e + "*(\\d+)|))" + e + "*\\)|)", "i"),
  1947. needsContext: RegExp("^" + e + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + e + "*((?:-\\d)?\\d*)" + e + "*\\)|)(?=[^-]|$)", "i")
  1948. },
  1949. ni = /[\x20\t\r\n\f]*[+~]/,
  1950. tr = /^[^{]+\{\s*\[native code/,
  1951. ir = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
  1952. rr = /^(?:input|select|textarea|button)$/i,
  1953. ur = /^h\d$/i,
  1954. fr = /'|\\/g,
  1955. er = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
  1956. p = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
  1957. w = function(n, t) {
  1958. var i = "0x" + t - 65536;
  1959. return i !== i ? t : 0 > i ? String.fromCharCode(i + 65536) : String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i)
  1960. };
  1961. try {
  1962. ft.call(k.documentElement.childNodes, 0)[0].nodeType
  1963. } catch (ar) {
  1964. ft = function(n) {
  1965. for (var t, i = []; t = this[n++];) i.push(t);
  1966. return i
  1967. }
  1968. }
  1969. oi = u.isXML = function(n) {
  1970. var t = n && (n.ownerDocument || n).documentElement;
  1971. return t ? "HTML" !== t.nodeName : !1
  1972. };
  1973. it = u.setDocument = function(n) {
  1974. var i = n ? n.ownerDocument || n : k;
  1975. return i !== s && 9 === i.nodeType && i.documentElement ? (s = i, h = i.documentElement, c = oi(i), o.tagNameNoComments = b(function(n) {
  1976. return n.appendChild(i.createComment("")), !n.getElementsByTagName("*").length
  1977. }), o.attributes = b(function(n) {
  1978. n.innerHTML = "<select><\/select>";
  1979. var t = typeof n.lastChild.getAttribute("multiple");
  1980. return "boolean" !== t && "string" !== t
  1981. }), o.getByClassName = b(function(n) {
  1982. return n.innerHTML = "<div class='hidden e'><\/div><div class='hidden'><\/div>", n.getElementsByClassName && n.getElementsByClassName("e").length ? (n.lastChild.className = "e", 2 === n.getElementsByClassName("e").length) : !1
  1983. }), o.getByName = b(function(n) {
  1984. n.id = f + 0;
  1985. n.innerHTML = "<a name='" + f + "'><\/a><div name='" + f + "'><\/div>";
  1986. h.insertBefore(n, h.firstChild);
  1987. var t = i.getElementsByName && i.getElementsByName(f).length === 2 + i.getElementsByName(f + 0).length;
  1988. return o.getIdNotName = !i.getElementById(f), h.removeChild(n), t
  1989. }), r.attrHandle = b(function(n) {
  1990. return n.innerHTML = "<a href='#'><\/a>", n.firstChild && typeof n.firstChild.getAttribute !== y && "#" === n.firstChild.getAttribute("href")
  1991. }) ? {} : {
  1992. href: function(n) {
  1993. return n.getAttribute("href", 2)
  1994. },
  1995. type: function(n) {
  1996. return n.getAttribute("type")
  1997. }
  1998. }, o.getIdNotName ? (r.find.ID = function(n, t) {
  1999. if (typeof t.getElementById !== y && !c) {
  2000. var i = t.getElementById(n);
  2001. return i && i.parentNode ? [i] : []
  2002. }
  2003. }, r.filter.ID = function(n) {
  2004. var t = n.replace(p, w);
  2005. return function(n) {
  2006. return n.getAttribute("id") === t
  2007. }
  2008. }) : (r.find.ID = function(n, i) {
  2009. if (typeof i.getElementById !== y && !c) {
  2010. var r = i.getElementById(n);
  2011. return r ? r.id === n || typeof r.getAttributeNode !== y && r.getAttributeNode("id").value === n ? [r] : t : []
  2012. }
  2013. }, r.filter.ID = function(n) {
  2014. var t = n.replace(p, w);
  2015. return function(n) {
  2016. var i = typeof n.getAttributeNode !== y && n.getAttributeNode("id");
  2017. return i && i.value === t
  2018. }
  2019. }), r.find.TAG = o.tagNameNoComments ? function(n, i) {
  2020. return typeof i.getElementsByTagName !== y ? i.getElementsByTagName(n) : t
  2021. } : function(n, t) {
  2022. var i, r = [],
  2023. f = 0,
  2024. u = t.getElementsByTagName(n);
  2025. if ("*" === n) {
  2026. while (i = u[f++]) 1 === i.nodeType && r.push(i);
  2027. return r
  2028. }
  2029. return u
  2030. }, r.find.NAME = o.getByName && function(n, i) {
  2031. return typeof i.getElementsByName !== y ? i.getElementsByName(name) : t
  2032. }, r.find.CLASS = o.getByClassName && function(n, i) {
  2033. return typeof i.getElementsByClassName === y || c ? t : i.getElementsByClassName(n)
  2034. }, rt = [], a = [":focus"], (o.qsa = ti(i.querySelectorAll)) && (b(function(n) {
  2035. n.innerHTML = "<select><option selected=''><\/option><\/select>";
  2036. n.querySelectorAll("[selected]").length || a.push("\\[" + e + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)");
  2037. n.querySelectorAll(":checked").length || a.push(":checked")
  2038. }), b(function(n) {
  2039. n.innerHTML = "<input type='hidden' i=''/>";
  2040. n.querySelectorAll("[i^='']").length && a.push("[*^$]=" + e + "*(?:\"\"|'')");
  2041. n.querySelectorAll(":enabled").length || a.push(":enabled", ":disabled");
  2042. n.querySelectorAll("*,:x");
  2043. a.push(",.*:")
  2044. })), (o.matchesSelector = ti(ct = h.matchesSelector || h.mozMatchesSelector || h.webkitMatchesSelector || h.oMatchesSelector || h.msMatchesSelector)) && b(function(n) {
  2045. o.disconnectedMatch = ct.call(n, "div");
  2046. ct.call(n, "[s!='']:x");
  2047. rt.push("!=", gt)
  2048. }), a = RegExp(a.join("|")), rt = RegExp(rt.join("|")), et = ti(h.contains) || h.compareDocumentPosition ? function(n, t) {
  2049. var r = 9 === n.nodeType ? n.documentElement : n,
  2050. i = t && t.parentNode;
  2051. return n === i || !(!i || 1 !== i.nodeType || !(r.contains ? r.contains(i) : n.compareDocumentPosition && 16 & n.compareDocumentPosition(i)))
  2052. } : function(n, t) {
  2053. if (t)
  2054. while (t = t.parentNode)
  2055. if (t === n) return !0;
  2056. return !1
  2057. }, kt = h.compareDocumentPosition ? function(n, t) {
  2058. var r;
  2059. return n === t ? (tt = !0, 0) : (r = t.compareDocumentPosition && n.compareDocumentPosition && n.compareDocumentPosition(t)) ? 1 & r || n.parentNode && 11 === n.parentNode.nodeType ? n === i || et(k, n) ? -1 : t === i || et(k, t) ? 1 : 0 : 4 & r ? -1 : 1 : n.compareDocumentPosition ? -1 : 1
  2060. } : function(n, t) {
  2061. var r, u = 0,
  2062. o = n.parentNode,
  2063. s = t.parentNode,
  2064. f = [n],
  2065. e = [t];
  2066. if (n === t) return tt = !0, 0;
  2067. if (!o || !s) return n === i ? -1 : t === i ? 1 : o ? -1 : s ? 1 : 0;
  2068. if (o === s) return yi(n, t);
  2069. for (r = n; r = r.parentNode;) f.unshift(r);
  2070. for (r = t; r = r.parentNode;) e.unshift(r);
  2071. while (f[u] === e[u]) u++;
  2072. return u ? yi(f[u], e[u]) : f[u] === k ? -1 : e[u] === k ? 1 : 0
  2073. }, tt = !1, [0, 0].sort(kt), o.detectDuplicates = tt, s) : s
  2074. };
  2075. u.matches = function(n, t) {
  2076. return u(n, null, null, t)
  2077. };
  2078. u.matchesSelector = function(n, t) {
  2079. if ((n.ownerDocument || n) !== s && it(n), t = t.replace(er, "='$1']"), !(!o.matchesSelector || c || rt && rt.test(t) || a.test(t))) try {
  2080. var i = ct.call(n, t);
  2081. if (i || o.disconnectedMatch || n.document && 11 !== n.document.nodeType) return i
  2082. } catch (r) {}
  2083. return u(t, s, null, [n]).length > 0
  2084. };
  2085. u.contains = function(n, t) {
  2086. return (n.ownerDocument || n) !== s && it(n), et(n, t)
  2087. };
  2088. u.attr = function(n, t) {
  2089. var i;
  2090. return (n.ownerDocument || n) !== s && it(n), c || (t = t.toLowerCase()), (i = r.attrHandle[t]) ? i(n) : c || o.attributes ? n.getAttribute(t) : ((i = n.getAttributeNode(t)) || n.getAttribute(t)) && n[t] === !0 ? t : i && i.specified ? i.value : null
  2091. };
  2092. u.error = function(n) {
  2093. throw Error("Syntax error, unrecognized expression: " + n);
  2094. };
  2095. u.uniqueSort = function(n) {
  2096. var r, u = [],
  2097. t = 1,
  2098. i = 0;
  2099. if (tt = !o.detectDuplicates, n.sort(kt), tt) {
  2100. for (; r = n[t]; t++) r === n[t - 1] && (i = u.push(t));
  2101. while (i--) n.splice(u[i], 1)
  2102. }
  2103. return n
  2104. };
  2105. st = u.getText = function(n) {
  2106. var r, i = "",
  2107. u = 0,
  2108. t = n.nodeType;
  2109. if (t) {
  2110. if (1 === t || 9 === t || 11 === t) {
  2111. if ("string" == typeof n.textContent) return n.textContent;
  2112. for (n = n.firstChild; n; n = n.nextSibling) i += st(n)
  2113. } else if (3 === t || 4 === t) return n.nodeValue
  2114. } else
  2115. for (; r = n[u]; u++) i += st(r);
  2116. return i
  2117. };
  2118. r = u.selectors = {
  2119. cacheLength: 50,
  2120. createPseudo: l,
  2121. match: vt,
  2122. find: {},
  2123. relative: {
  2124. ">": {
  2125. dir: "parentNode",
  2126. first: !0
  2127. },
  2128. " ": {
  2129. dir: "parentNode"
  2130. },
  2131. "+": {
  2132. dir: "previousSibling",
  2133. first: !0
  2134. },
  2135. "~": {
  2136. dir: "previousSibling"
  2137. }
  2138. },
  2139. preFilter: {
  2140. ATTR: function(n) {
  2141. return n[1] = n[1].replace(p, w), n[3] = (n[4] || n[5] || "").replace(p, w), "~=" === n[2] && (n[3] = " " + n[3] + " "), n.slice(0, 4)
  2142. },
  2143. CHILD: function(n) {
  2144. return n[1] = n[1].toLowerCase(), "nth" === n[1].slice(0, 3) ? (n[3] || u.error(n[0]), n[4] = +(n[4] ? n[5] + (n[6] || 1) : 2 * ("even" === n[3] || "odd" === n[3])), n[5] = +(n[7] + n[8] || "odd" === n[3])) : n[3] && u.error(n[0]), n
  2145. },
  2146. PSEUDO: function(n) {
  2147. var i, t = !n[5] && n[2];
  2148. return vt.CHILD.test(n[0]) ? null : (n[4] ? n[2] = n[4] : t && gi.test(t) && (i = yt(t, !0)) && (i = t.indexOf(")", t.length - i) - t.length) && (n[0] = n[0].slice(0, i), n[2] = t.slice(0, i)), n.slice(0, 3))
  2149. }
  2150. },
  2151. filter: {
  2152. TAG: function(n) {
  2153. return "*" === n ? function() {
  2154. return !0
  2155. } : (n = n.replace(p, w).toLowerCase(), function(t) {
  2156. return t.nodeName && t.nodeName.toLowerCase() === n
  2157. })
  2158. },
  2159. CLASS: function(n) {
  2160. var t = si[n + " "];
  2161. return t || (t = RegExp("(^|" + e + ")" + n + "(" + e + "|$)")) && si(n, function(n) {
  2162. return t.test(n.className || typeof n.getAttribute !== y && n.getAttribute("class") || "")
  2163. })
  2164. },
  2165. ATTR: function(n, t, i) {
  2166. return function(r) {
  2167. var f = u.attr(r, n);
  2168. return null == f ? "!=" === t : t ? (f += "", "=" === t ? f === i : "!=" === t ? f !== i : "^=" === t ? i && 0 === f.indexOf(i) : "*=" === t ? i && f.indexOf(i) > -1 : "$=" === t ? i && f.slice(-i.length) === i : "~=" === t ? (" " + f + " ").indexOf(i) > -1 : "|=" === t ? f === i || f.slice(0, i.length + 1) === i + "-" : !1) : !0
  2169. }
  2170. },
  2171. CHILD: function(n, t, i, r, u) {
  2172. var s = "nth" !== n.slice(0, 3),
  2173. o = "last" !== n.slice(-4),
  2174. e = "of-type" === t;
  2175. return 1 === r && 0 === u ? function(n) {
  2176. return !!n.parentNode
  2177. } : function(t, i, h) {
  2178. var a, k, c, l, y, w, b = s !== o ? "nextSibling" : "previousSibling",
  2179. p = t.parentNode,
  2180. g = e && t.nodeName.toLowerCase(),
  2181. d = !h && !e;
  2182. if (p) {
  2183. if (s) {
  2184. while (b) {
  2185. for (c = t; c = c[b];)
  2186. if (e ? c.nodeName.toLowerCase() === g : 1 === c.nodeType) return !1;
  2187. w = b = "only" === n && !w && "nextSibling"
  2188. }
  2189. return !0
  2190. }
  2191. if (w = [o ? p.firstChild : p.lastChild], o && d) {
  2192. for (k = p[f] || (p[f] = {}), a = k[n] || [], y = a[0] === v && a[1], l = a[0] === v && a[2], c = y && p.childNodes[y]; c = ++y && c && c[b] || (l = y = 0) || w.pop();)
  2193. if (1 === c.nodeType && ++l && c === t) {
  2194. k[n] = [v, y, l];
  2195. break
  2196. }
  2197. } else if (d && (a = (t[f] || (t[f] = {}))[n]) && a[0] === v) l = a[1];
  2198. else
  2199. while (c = ++y && c && c[b] || (l = y = 0) || w.pop())
  2200. if ((e ? c.nodeName.toLowerCase() === g : 1 === c.nodeType) && ++l && (d && ((c[f] || (c[f] = {}))[n] = [v, l]), c === t)) break;
  2201. return l -= u, l === r || 0 == l % r && l / r >= 0
  2202. }
  2203. }
  2204. },
  2205. PSEUDO: function(n, t) {
  2206. var e, i = r.pseudos[n] || r.setFilters[n.toLowerCase()] || u.error("unsupported pseudo: " + n);
  2207. return i[f] ? i(t) : i.length > 1 ? (e = [n, n, "", t], r.setFilters.hasOwnProperty(n.toLowerCase()) ? l(function(n, r) {
  2208. for (var u, f = i(n, t), e = f.length; e--;) u = dt.call(n, f[e]), n[u] = !(r[u] = f[e])
  2209. }) : function(n) {
  2210. return i(n, 0, e)
  2211. }) : i
  2212. }
  2213. },
  2214. pseudos: {
  2215. not: l(function(n) {
  2216. var i = [],
  2217. r = [],
  2218. t = bt(n.replace(at, "$1"));
  2219. return t[f] ? l(function(n, i, r, u) {
  2220. for (var e, o = t(n, null, u, []), f = n.length; f--;)(e = o[f]) && (n[f] = !(i[f] = e))
  2221. }) : function(n, u, f) {
  2222. return i[0] = n, t(i, null, f, r), !r.pop()
  2223. }
  2224. }),
  2225. has: l(function(n) {
  2226. return function(t) {
  2227. return u(n, t).length > 0
  2228. }
  2229. }),
  2230. contains: l(function(n) {
  2231. return function(t) {
  2232. return (t.textContent || t.innerText || st(t)).indexOf(n) > -1
  2233. }
  2234. }),
  2235. lang: l(function(n) {
  2236. return nr.test(n || "") || u.error("unsupported lang: " + n), n = n.replace(p, w).toLowerCase(),
  2237. function(t) {
  2238. var i;
  2239. do
  2240. if (i = c ? t.getAttribute("xml:lang") || t.getAttribute("lang") : t.lang) return i = i.toLowerCase(), i === n || 0 === i.indexOf(n + "-"); while ((t = t.parentNode) && 1 === t.nodeType);
  2241. return !1
  2242. }
  2243. }),
  2244. target: function(t) {
  2245. var i = n.location && n.location.hash;
  2246. return i && i.slice(1) === t.id
  2247. },
  2248. root: function(n) {
  2249. return n === h
  2250. },
  2251. focus: function(n) {
  2252. return n === s.activeElement && (!s.hasFocus || s.hasFocus()) && !!(n.type || n.href || ~n.tabIndex)
  2253. },
  2254. enabled: function(n) {
  2255. return n.disabled === !1
  2256. },
  2257. disabled: function(n) {
  2258. return n.disabled === !0
  2259. },
  2260. checked: function(n) {
  2261. var t = n.nodeName.toLowerCase();
  2262. return "input" === t && !!n.checked || "option" === t && !!n.selected
  2263. },
  2264. selected: function(n) {
  2265. return n.parentNode && n.parentNode.selectedIndex, n.selected === !0
  2266. },
  2267. empty: function(n) {
  2268. for (n = n.firstChild; n; n = n.nextSibling)
  2269. if (n.nodeName > "@" || 3 === n.nodeType || 4 === n.nodeType) return !1;
  2270. return !0
  2271. },
  2272. parent: function(n) {
  2273. return !r.pseudos.empty(n)
  2274. },
  2275. header: function(n) {
  2276. return ur.test(n.nodeName)
  2277. },
  2278. input: function(n) {
  2279. return rr.test(n.nodeName)
  2280. },
  2281. button: function(n) {
  2282. var t = n.nodeName.toLowerCase();
  2283. return "input" === t && "button" === n.type || "button" === t
  2284. },
  2285. text: function(n) {
  2286. var t;
  2287. return "input" === n.nodeName.toLowerCase() && "text" === n.type && (null == (t = n.getAttribute("type")) || t.toLowerCase() === n.type)
  2288. },
  2289. first: g(function() {
  2290. return [0]
  2291. }),
  2292. last: g(function(n, t) {
  2293. return [t - 1]
  2294. }),
  2295. eq: g(function(n, t, i) {
  2296. return [0 > i ? i + t : i]
  2297. }),
  2298. even: g(function(n, t) {
  2299. for (var i = 0; t > i; i += 2) n.push(i);
  2300. return n
  2301. }),
  2302. odd: g(function(n, t) {
  2303. for (var i = 1; t > i; i += 2) n.push(i);
  2304. return n
  2305. }),
  2306. lt: g(function(n, t, i) {
  2307. for (var r = 0 > i ? i + t : i; --r >= 0;) n.push(r);
  2308. return n
  2309. }),
  2310. gt: g(function(n, t, i) {
  2311. for (var r = 0 > i ? i + t : i; t > ++r;) n.push(r);
  2312. return n
  2313. })
  2314. }
  2315. };
  2316. for (nt in {
  2317. radio: !0,
  2318. checkbox: !0,
  2319. file: !0,
  2320. password: !0,
  2321. image: !0
  2322. }) r.pseudos[nt] = or(nt);
  2323. for (nt in {
  2324. submit: !0,
  2325. reset: !0
  2326. }) r.pseudos[nt] = sr(nt);
  2327. bt = u.compile = function(n, t) {
  2328. var r, u = [],
  2329. e = [],
  2330. i = ci[n + " "];
  2331. if (!i) {
  2332. for (t || (t = yt(n)), r = t.length; r--;) i = ei(t[r]), i[f] ? u.push(i) : e.push(i);
  2333. i = ci(n, hr(e, u))
  2334. }
  2335. return i
  2336. };
  2337. r.pseudos.nth = r.pseudos.eq;
  2338. r.filters = pi.prototype = r.pseudos;
  2339. r.setFilters = new pi;
  2340. it();
  2341. u.attr = i.attr;
  2342. i.find = u;
  2343. i.expr = u.selectors;
  2344. i.expr[":"] = i.expr.pseudos;
  2345. i.unique = u.uniqueSort;
  2346. i.text = u.getText;
  2347. i.isXMLDoc = u.isXML;
  2348. i.contains = u.contains
  2349. }(n);
  2350. var re = /Until$/,
  2351. ue = /^(?:parents|prev(?:Until|All))/,
  2352. fe = /^.[^:#\[\.,]*$/,
  2353. hr = i.expr.match.needsContext,
  2354. ee = {
  2355. children: !0,
  2356. contents: !0,
  2357. next: !0,
  2358. prev: !0
  2359. };
  2360. i.fn.extend({
  2361. find: function(n) {
  2362. var t, r, f, u = this.length;
  2363. if ("string" != typeof n) return f = this, this.pushStack(i(n).filter(function() {
  2364. for (t = 0; u > t; t++)
  2365. if (i.contains(f[t], this)) return !0
  2366. }));
  2367. for (r = [], t = 0; u > t; t++) i.find(n, this[t], r);
  2368. return r = this.pushStack(u > 1 ? i.unique(r) : r), r.selector = (this.selector ? this.selector + " " : "") + n, r
  2369. },
  2370. has: function(n) {
  2371. var t, r = i(n, this),
  2372. u = r.length;
  2373. return this.filter(function() {
  2374. for (t = 0; u > t; t++)
  2375. if (i.contains(this, r[t])) return !0
  2376. })
  2377. },
  2378. not: function(n) {
  2379. return this.pushStack(lr(this, n, !1))
  2380. },
  2381. filter: function(n) {
  2382. return this.pushStack(lr(this, n, !0))
  2383. },
  2384. is: function(n) {
  2385. return !!n && ("string" == typeof n ? hr.test(n) ? i(n, this.context).index(this[0]) >= 0 : i.filter(n, this).length > 0 : this.filter(n).length > 0)
  2386. },
  2387. closest: function(n, t) {
  2388. for (var r, f = 0, o = this.length, u = [], e = hr.test(n) || "string" != typeof n ? i(n, t || this.context) : 0; o > f; f++)
  2389. for (r = this[f]; r && r.ownerDocument && r !== t && 11 !== r.nodeType;) {
  2390. if (e ? e.index(r) > -1 : i.find.matchesSelector(r, n)) {
  2391. u.push(r);
  2392. break
  2393. }
  2394. r = r.parentNode
  2395. }
  2396. return this.pushStack(u.length > 1 ? i.unique(u) : u)
  2397. },
  2398. index: function(n) {
  2399. return n ? "string" == typeof n ? i.inArray(this[0], i(n)) : i.inArray(n.jquery ? n[0] : n, this) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
  2400. },
  2401. add: function(n, t) {
  2402. var r = "string" == typeof n ? i(n, t) : i.makeArray(n && n.nodeType ? [n] : n),
  2403. u = i.merge(this.get(), r);
  2404. return this.pushStack(i.unique(u))
  2405. },
  2406. addBack: function(n) {
  2407. return this.add(null == n ? this.prevObject : this.prevObject.filter(n))
  2408. }
  2409. });
  2410. i.fn.andSelf = i.fn.addBack;
  2411. i.each({
  2412. parent: function(n) {
  2413. var t = n.parentNode;
  2414. return t && 11 !== t.nodeType ? t : null
  2415. },
  2416. parents: function(n) {
  2417. return i.dir(n, "parentNode")
  2418. },
  2419. parentsUntil: function(n, t, r) {
  2420. return i.dir(n, "parentNode", r)
  2421. },
  2422. next: function(n) {
  2423. return cr(n, "nextSibling")
  2424. },
  2425. prev: function(n) {
  2426. return cr(n, "previousSibling")
  2427. },
  2428. nextAll: function(n) {
  2429. return i.dir(n, "nextSibling")
  2430. },
  2431. prevAll: function(n) {
  2432. return i.dir(n, "previousSibling")
  2433. },
  2434. nextUntil: function(n, t, r) {
  2435. return i.dir(n, "nextSibling", r)
  2436. },
  2437. prevUntil: function(n, t, r) {
  2438. return i.dir(n, "previousSibling", r)
  2439. },
  2440. siblings: function(n) {
  2441. return i.sibling((n.parentNode || {}).firstChild, n)
  2442. },
  2443. children: function(n) {
  2444. return i.sibling(n.firstChild)
  2445. },
  2446. contents: function(n) {
  2447. return i.nodeName(n, "iframe") ? n.contentDocument || n.contentWindow.document : i.merge([], n.childNodes)
  2448. }
  2449. }, function(n, t) {
  2450. i.fn[n] = function(r, u) {
  2451. var f = i.map(this, t, r);
  2452. return re.test(n) || (u = r), u && "string" == typeof u && (f = i.filter(u, f)), f = this.length > 1 && !ee[n] ? i.unique(f) : f, this.length > 1 && ue.test(n) && (f = f.reverse()), this.pushStack(f)
  2453. }
  2454. });
  2455. i.extend({
  2456. filter: function(n, t, r) {
  2457. return r && (n = ":not(" + n + ")"), 1 === t.length ? i.find.matchesSelector(t[0], n) ? [t[0]] : [] : i.find.matches(n, t)
  2458. },
  2459. dir: function(n, r, u) {
  2460. for (var e = [], f = n[r]; f && 9 !== f.nodeType && (u === t || 1 !== f.nodeType || !i(f).is(u));) 1 === f.nodeType && e.push(f), f = f[r];
  2461. return e
  2462. },
  2463. sibling: function(n, t) {
  2464. for (var i = []; n; n = n.nextSibling) 1 === n.nodeType && n !== t && i.push(n);
  2465. return i
  2466. }
  2467. });
  2468. var vr = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
  2469. oe = / jQuery\d+="(?:null|\d+)"/g,
  2470. yr = RegExp("<(?:" + vr + ")[\\s/>]", "i"),
  2471. fi = /^\s+/,
  2472. pr = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
  2473. wr = /<([\w:]+)/,
  2474. br = /<tbody/i,
  2475. se = /<|&#?\w+;/,
  2476. he = /<(?:script|style|link)/i,
  2477. ei = /^(?:checkbox|radio)$/i,
  2478. ce = /checked\s*(?:[^=]|=\s*.checked.)/i,
  2479. kr = /^$|\/(?:java|ecma)script/i,
  2480. le = /^true\/(.*)/,
  2481. ae = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
  2482. e = {
  2483. option: [1, "<select multiple='multiple'>", "<\/select>"],
  2484. legend: [1, "<fieldset>", "<\/fieldset>"],
  2485. area: [1, "<map>", "<\/map>"],
  2486. param: [1, "<object>", "<\/object>"],
  2487. thead: [1, "<table>", "<\/table>"],
  2488. tr: [2, "<table><tbody>", "<\/tbody><\/table>"],
  2489. col: [2, "<table><tbody><\/tbody><colgroup>", "<\/colgroup><\/table>"],
  2490. td: [3, "<table><tbody><tr>", "<\/tr><\/tbody><\/table>"],
  2491. _default: i.support.htmlSerialize ? [0, "", ""] : [1, "X<div>", "<\/div>"]
  2492. },
  2493. ve = ar(r),
  2494. oi = ve.appendChild(r.createElement("div"));
  2495. e.optgroup = e.option;
  2496. e.tbody = e.tfoot = e.colgroup = e.caption = e.thead;
  2497. e.th = e.td;
  2498. i.fn.extend({
  2499. text: function(n) {
  2500. return i.access(this, function(n) {
  2501. return n === t ? i.text(this) : this.empty().append((this[0] && this[0].ownerDocument || r).createTextNode(n))
  2502. }, null, n, arguments.length)
  2503. },
  2504. wrapAll: function(n) {
  2505. if (i.isFunction(n)) return this.each(function(t) {
  2506. i(this).wrapAll(n.call(this, t))
  2507. });
  2508. if (this[0]) {
  2509. var t = i(n, this[0].ownerDocument).eq(0).clone(!0);
  2510. this[0].parentNode && t.insertBefore(this[0]);
  2511. t.map(function() {
  2512. for (var n = this; n.firstChild && 1 === n.firstChild.nodeType;) n = n.firstChild;
  2513. return n
  2514. }).append(this)
  2515. }
  2516. return this
  2517. },
  2518. wrapInner: function(n) {
  2519. return i.isFunction(n) ? this.each(function(t) {
  2520. i(this).wrapInner(n.call(this, t))
  2521. }) : this.each(function() {
  2522. var t = i(this),
  2523. r = t.contents();
  2524. r.length ? r.wrapAll(n) : t.append(n)
  2525. })
  2526. },
  2527. wrap: function(n) {
  2528. var t = i.isFunction(n);
  2529. return this.each(function(r) {
  2530. i(this).wrapAll(t ? n.call(this, r) : n)
  2531. })
  2532. },
  2533. unwrap: function() {
  2534. return this.parent().each(function() {
  2535. i.nodeName(this, "body") || i(this).replaceWith(this.childNodes)
  2536. }).end()
  2537. },
  2538. append: function() {
  2539. return this.domManip(arguments, !0, function(n) {
  2540. (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.appendChild(n)
  2541. })
  2542. },
  2543. prepend: function() {
  2544. return this.domManip(arguments, !0, function(n) {
  2545. (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && this.insertBefore(n, this.firstChild)
  2546. })
  2547. },
  2548. before: function() {
  2549. return this.domManip(arguments, !1, function(n) {
  2550. this.parentNode && this.parentNode.insertBefore(n, this)
  2551. })
  2552. },
  2553. after: function() {
  2554. return this.domManip(arguments, !1, function(n) {
  2555. this.parentNode && this.parentNode.insertBefore(n, this.nextSibling)
  2556. })
  2557. },
  2558. remove: function(n, t) {
  2559. for (var r, f = 0; null != (r = this[f]); f++)(!n || i.filter(n, [r]).length > 0) && (t || 1 !== r.nodeType || i.cleanData(u(r)), r.parentNode && (t && i.contains(r.ownerDocument, r) && si(u(r, "script")), r.parentNode.removeChild(r)));
  2560. return this
  2561. },
  2562. empty: function() {
  2563. for (var n, t = 0; null != (n = this[t]); t++) {
  2564. for (1 === n.nodeType && i.cleanData(u(n, !1)); n.firstChild;) n.removeChild(n.firstChild);
  2565. n.options && i.nodeName(n, "select") && (n.options.length = 0)
  2566. }
  2567. return this
  2568. },
  2569. clone: function(n, t) {
  2570. return n = null == n ? !1 : n, t = null == t ? n : t, this.map(function() {
  2571. return i.clone(this, n, t)
  2572. })
  2573. },
  2574. html: function(n) {
  2575. return i.access(this, function(n) {
  2576. var r = this[0] || {},
  2577. f = 0,
  2578. o = this.length;
  2579. if (n === t) return 1 === r.nodeType ? r.innerHTML.replace(oe, "") : t;
  2580. if (!("string" != typeof n || he.test(n) || !i.support.htmlSerialize && yr.test(n) || !i.support.leadingWhitespace && fi.test(n) || e[(wr.exec(n) || ["", ""])[1].toLowerCase()])) {
  2581. n = n.replace(pr, "<$1><\/$2>");
  2582. try {
  2583. for (; o > f; f++) r = this[f] || {}, 1 === r.nodeType && (i.cleanData(u(r, !1)), r.innerHTML = n);
  2584. r = 0
  2585. } catch (s) {}
  2586. }
  2587. r && this.empty().append(n)
  2588. }, null, n, arguments.length)
  2589. },
  2590. replaceWith: function(n) {
  2591. var t = i.isFunction(n);
  2592. return t || "string" == typeof n || (n = i(n).not(this).detach()), this.domManip([n], !0, function(n) {
  2593. var r = this.nextSibling,
  2594. t = this.parentNode;
  2595. t && (i(this).remove(), t.insertBefore(n, r))
  2596. })
  2597. },
  2598. detach: function(n) {
  2599. return this.remove(n, !0)
  2600. },
  2601. domManip: function(n, r, f) {
  2602. n = bi.apply([], n);
  2603. var c, e, l, s, y, h, o = 0,
  2604. a = this.length,
  2605. w = this,
  2606. b = a - 1,
  2607. v = n[0],
  2608. p = i.isFunction(v);
  2609. if (p || !(1 >= a || "string" != typeof v || i.support.checkClone) && ce.test(v)) return this.each(function(i) {
  2610. var u = w.eq(i);
  2611. p && (n[0] = v.call(this, i, r ? u.html() : t));
  2612. u.domManip(n, r, f)
  2613. });
  2614. if (a && (h = i.buildFragment(n, this[0].ownerDocument, !1, this), c = h.firstChild, 1 === h.childNodes.length && (h = c), c)) {
  2615. for (r = r && i.nodeName(c, "tr"), s = i.map(u(h, "script"), dr), l = s.length; a > o; o++) e = h, o !== b && (e = i.clone(e, !0, !0), l && i.merge(s, u(e, "script"))), f.call(r && i.nodeName(this[o], "table") ? ye(this[o], "tbody") : this[o], e, o);
  2616. if (l)
  2617. for (y = s[s.length - 1].ownerDocument, i.map(s, gr), o = 0; l > o; o++) e = s[o], kr.test(e.type || "") && !i._data(e, "globalEval") && i.contains(y, e) && (e.src ? i.ajax({
  2618. url: e.src,
  2619. type: "GET",
  2620. dataType: "script",
  2621. async: !1,
  2622. global: !1,
  2623. throws: !0
  2624. }) : i.globalEval((e.text || e.textContent || e.innerHTML || "").replace(ae, "")));
  2625. h = c = null
  2626. }
  2627. return this
  2628. }
  2629. });
  2630. i.each({
  2631. appendTo: "append",
  2632. prependTo: "prepend",
  2633. insertBefore: "before",
  2634. insertAfter: "after",
  2635. replaceAll: "replaceWith"
  2636. }, function(n, t) {
  2637. i.fn[n] = function(n) {
  2638. for (var u, r = 0, f = [], e = i(n), o = e.length - 1; o >= r; r++) u = r === o ? this : this.clone(!0), i(e[r])[t](u), bt.apply(f, u.get());
  2639. return this.pushStack(f)
  2640. }
  2641. });
  2642. i.extend({
  2643. clone: function(n, t, r) {
  2644. var f, h, o, e, s, c = i.contains(n.ownerDocument, n);
  2645. if (i.support.html5Clone || i.isXMLDoc(n) || !yr.test("<" + n.nodeName + ">") ? o = n.cloneNode(!0) : (oi.innerHTML = n.outerHTML, oi.removeChild(o = oi.firstChild)), !(i.support.noCloneEvent && i.support.noCloneChecked || 1 !== n.nodeType && 11 !== n.nodeType || i.isXMLDoc(n)))
  2646. for (f = u(o), s = u(n), e = 0; null != (h = s[e]); ++e) f[e] && pe(h, f[e]);
  2647. if (t)
  2648. if (r)
  2649. for (s = s || u(n), f = f || u(o), e = 0; null != (h = s[e]); e++) nu(h, f[e]);
  2650. else nu(n, o);
  2651. return f = u(o, "script"), f.length > 0 && si(f, !c && u(n, "script")), f = s = h = null, o
  2652. },
  2653. buildFragment: function(n, t, r, f) {
  2654. for (var h, o, w, s, y, p, l, b = n.length, a = ar(t), c = [], v = 0; b > v; v++)
  2655. if (o = n[v], o || 0 === o)
  2656. if ("object" === i.type(o)) i.merge(c, o.nodeType ? [o] : o);
  2657. else if (se.test(o)) {
  2658. for (s = s || a.appendChild(t.createElement("div")), y = (wr.exec(o) || ["", ""])[1].toLowerCase(), l = e[y] || e._default, s.innerHTML = l[1] + o.replace(pr, "<$1><\/$2>") + l[2], h = l[0]; h--;) s = s.lastChild;
  2659. if (!i.support.leadingWhitespace && fi.test(o) && c.push(t.createTextNode(fi.exec(o)[0])), !i.support.tbody)
  2660. for (o = "table" !== y || br.test(o) ? "<table>" !== l[1] || br.test(o) ? 0 : s : s.firstChild, h = o && o.childNodes.length; h--;) i.nodeName(p = o.childNodes[h], "tbody") && !p.childNodes.length && o.removeChild(p);
  2661. for (i.merge(c, s.childNodes), s.textContent = ""; s.firstChild;) s.removeChild(s.firstChild);
  2662. s = a.lastChild
  2663. } else c.push(t.createTextNode(o));
  2664. for (s && a.removeChild(s), i.support.appendChecked || i.grep(u(c, "input"), we), v = 0; o = c[v++];)
  2665. if ((!f || -1 === i.inArray(o, f)) && (w = i.contains(o.ownerDocument, o), s = u(a.appendChild(o), "script"), w && si(s), r))
  2666. for (h = 0; o = s[h++];) kr.test(o.type || "") && r.push(o);
  2667. return s = null, a
  2668. },
  2669. cleanData: function(n, t) {
  2670. for (var r, f, u, e, c = 0, s = i.expando, h = i.cache, l = i.support.deleteExpando, a = i.event.special; null != (r = n[c]); c++)
  2671. if ((t || i.acceptData(r)) && (u = r[s], e = u && h[u])) {
  2672. if (e.events)
  2673. for (f in e.events) a[f] ? i.event.remove(r, f) : i.removeEvent(r, f, e.handle);
  2674. h[u] && (delete h[u], l ? delete r[s] : typeof r.removeAttribute !== o ? r.removeAttribute(s) : r[s] = null, b.push(u))
  2675. }
  2676. }
  2677. });
  2678. var rt, v, y, hi = /alpha\([^)]*\)/i,
  2679. be = /opacity\s*=\s*([^)]*)/,
  2680. ke = /^(top|right|bottom|left)$/,
  2681. de = /^(none|table(?!-c[ea]).+)/,
  2682. tu = /^margin/,
  2683. ge = RegExp("^(" + st + ")(.*)$", "i"),
  2684. ct = RegExp("^(" + st + ")(?!px)[a-z%]+$", "i"),
  2685. no = RegExp("^([+-])=(" + st + ")", "i"),
  2686. iu = {
  2687. BODY: "block"
  2688. },
  2689. to = {
  2690. position: "absolute",
  2691. visibility: "hidden",
  2692. display: "block"
  2693. },
  2694. ru = {
  2695. letterSpacing: 0,
  2696. fontWeight: 400
  2697. },
  2698. p = ["Top", "Right", "Bottom", "Left"],
  2699. uu = ["Webkit", "O", "Moz", "ms"];
  2700. i.fn.extend({
  2701. css: function(n, r) {
  2702. return i.access(this, function(n, r, u) {
  2703. var e, o, s = {},
  2704. f = 0;
  2705. if (i.isArray(r)) {
  2706. for (o = v(n), e = r.length; e > f; f++) s[r[f]] = i.css(n, r[f], !1, o);
  2707. return s
  2708. }
  2709. return u !== t ? i.style(n, r, u) : i.css(n, r)
  2710. }, n, r, arguments.length > 1)
  2711. },
  2712. show: function() {
  2713. return eu(this, !0)
  2714. },
  2715. hide: function() {
  2716. return eu(this)
  2717. },
  2718. toggle: function(n) {
  2719. var t = "boolean" == typeof n;
  2720. return this.each(function() {
  2721. (t ? n : ut(this)) ? i(this).show(): i(this).hide()
  2722. })
  2723. }
  2724. });
  2725. i.extend({
  2726. cssHooks: {
  2727. opacity: {
  2728. get: function(n, t) {
  2729. if (t) {
  2730. var i = y(n, "opacity");
  2731. return "" === i ? "1" : i
  2732. }
  2733. }
  2734. }
  2735. },
  2736. cssNumber: {
  2737. columnCount: !0,
  2738. fillOpacity: !0,
  2739. fontWeight: !0,
  2740. lineHeight: !0,
  2741. opacity: !0,
  2742. orphans: !0,
  2743. widows: !0,
  2744. zIndex: !0,
  2745. zoom: !0
  2746. },
  2747. cssProps: {
  2748. float: i.support.cssFloat ? "cssFloat" : "styleFloat"
  2749. },
  2750. style: function(n, r, u, f) {
  2751. if (n && 3 !== n.nodeType && 8 !== n.nodeType && n.style) {
  2752. var o, s, e, h = i.camelCase(r),
  2753. c = n.style;
  2754. if (r = i.cssProps[h] || (i.cssProps[h] = fu(c, h)), e = i.cssHooks[r] || i.cssHooks[h], u === t) return e && "get" in e && (o = e.get(n, !1, f)) !== t ? o : c[r];
  2755. if (s = typeof u, "string" === s && (o = no.exec(u)) && (u = (o[1] + 1) * o[2] + parseFloat(i.css(n, r)), s = "number"), !(null == u || "number" === s && isNaN(u) || ("number" !== s || i.cssNumber[h] || (u += "px"), i.support.clearCloneStyle || "" !== u || 0 !== r.indexOf("background") || (c[r] = "inherit"), e && "set" in e && (u = e.set(n, u, f)) === t))) try {
  2756. c[r] = u
  2757. } catch (l) {}
  2758. }
  2759. },
  2760. css: function(n, r, u, f) {
  2761. var h, e, o, s = i.camelCase(r);
  2762. return r = i.cssProps[s] || (i.cssProps[s] = fu(n.style, s)), o = i.cssHooks[r] || i.cssHooks[s], o && "get" in o && (e = o.get(n, !0, u)), e === t && (e = y(n, r, f)), "normal" === e && r in ru && (e = ru[r]), "" === u || u ? (h = parseFloat(e), u === !0 || i.isNumeric(h) ? h || 0 : e) : e
  2763. },
  2764. swap: function(n, t, i, r) {
  2765. var f, u, e = {};
  2766. for (u in t) e[u] = n.style[u], n.style[u] = t[u];
  2767. f = i.apply(n, r || []);
  2768. for (u in t) n.style[u] = e[u];
  2769. return f
  2770. }
  2771. });
  2772. n.getComputedStyle ? (v = function(t) {
  2773. return n.getComputedStyle(t, null)
  2774. }, y = function(n, r, u) {
  2775. var s, h, c, o = u || v(n),
  2776. e = o ? o.getPropertyValue(r) || o[r] : t,
  2777. f = n.style;
  2778. return o && ("" !== e || i.contains(n.ownerDocument, n) || (e = i.style(n, r)), ct.test(e) && tu.test(r) && (s = f.width, h = f.minWidth, c = f.maxWidth, f.minWidth = f.maxWidth = f.width = e, e = o.width, f.width = s, f.minWidth = h, f.maxWidth = c)), e
  2779. }) : r.documentElement.currentStyle && (v = function(n) {
  2780. return n.currentStyle
  2781. }, y = function(n, i, r) {
  2782. var s, e, o, h = r || v(n),
  2783. u = h ? h[i] : t,
  2784. f = n.style;
  2785. return null == u && f && f[i] && (u = f[i]), ct.test(u) && !ke.test(i) && (s = f.left, e = n.runtimeStyle, o = e && e.left, o && (e.left = n.currentStyle.left), f.left = "fontSize" === i ? "1em" : u, u = f.pixelLeft + "px", f.left = s, o && (e.left = o)), "" === u ? "auto" : u
  2786. });
  2787. i.each(["height", "width"], function(n, r) {
  2788. i.cssHooks[r] = {
  2789. get: function(n, u, f) {
  2790. return u ? 0 === n.offsetWidth && de.test(i.css(n, "display")) ? i.swap(n, to, function() {
  2791. return hu(n, r, f)
  2792. }) : hu(n, r, f) : t
  2793. },
  2794. set: function(n, t, u) {
  2795. var f = u && v(n);
  2796. return ou(n, t, u ? su(n, r, u, i.support.boxSizing && "border-box" === i.css(n, "boxSizing", !1, f), f) : 0)
  2797. }
  2798. }
  2799. });
  2800. i.support.opacity || (i.cssHooks.opacity = {
  2801. get: function(n, t) {
  2802. return be.test((t && n.currentStyle ? n.currentStyle.filter : n.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : ""
  2803. },
  2804. set: function(n, t) {
  2805. var r = n.style,
  2806. u = n.currentStyle,
  2807. e = i.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
  2808. f = u && u.filter || r.filter || "";
  2809. r.zoom = 1;
  2810. (t >= 1 || "" === t) && "" === i.trim(f.replace(hi, "")) && r.removeAttribute && (r.removeAttribute("filter"), "" === t || u && !u.filter) || (r.filter = hi.test(f) ? f.replace(hi, e) : f + " " + e)
  2811. }
  2812. });
  2813. i(function() {
  2814. i.support.reliableMarginRight || (i.cssHooks.marginRight = {
  2815. get: function(n, r) {
  2816. return r ? i.swap(n, {
  2817. display: "inline-block"
  2818. }, y, [n, "marginRight"]) : t
  2819. }
  2820. });
  2821. !i.support.pixelPosition && i.fn.position && i.each(["top", "left"], function(n, r) {
  2822. i.cssHooks[r] = {
  2823. get: function(n, u) {
  2824. return u ? (u = y(n, r), ct.test(u) ? i(n).position()[r] + "px" : u) : t
  2825. }
  2826. }
  2827. })
  2828. });
  2829. i.expr && i.expr.filters && (i.expr.filters.hidden = function(n) {
  2830. return 0 >= n.offsetWidth && 0 >= n.offsetHeight || !i.support.reliableHiddenOffsets && "none" === (n.style && n.style.display || i.css(n, "display"))
  2831. }, i.expr.filters.visible = function(n) {
  2832. return !i.expr.filters.hidden(n)
  2833. });
  2834. i.each({
  2835. margin: "",
  2836. padding: "",
  2837. border: "Width"
  2838. }, function(n, t) {
  2839. i.cssHooks[n + t] = {
  2840. expand: function(i) {
  2841. for (var r = 0, f = {}, u = "string" == typeof i ? i.split(" ") : [i]; 4 > r; r++) f[n + p[r] + t] = u[r] || u[r - 2] || u[0];
  2842. return f
  2843. }
  2844. };
  2845. tu.test(n) || (i.cssHooks[n + t].set = ou)
  2846. });
  2847. var io = /%20/g,
  2848. ro = /\[\]$/,
  2849. au = /\r?\n/g,
  2850. uo = /^(?:submit|button|image|reset|file)$/i,
  2851. fo = /^(?:input|select|textarea|keygen)/i;
  2852. i.fn.extend({
  2853. serialize: function() {
  2854. return i.param(this.serializeArray())
  2855. },
  2856. serializeArray: function() {
  2857. return this.map(function() {
  2858. var n = i.prop(this, "elements");
  2859. return n ? i.makeArray(n) : this
  2860. }).filter(function() {
  2861. var n = this.type;
  2862. return this.name && !i(this).is(":disabled") && fo.test(this.nodeName) && !uo.test(n) && (this.checked || !ei.test(n))
  2863. }).map(function(n, t) {
  2864. var r = i(this).val();
  2865. return null == r ? null : i.isArray(r) ? i.map(r, function(n) {
  2866. return {
  2867. name: t.name,
  2868. value: n.replace(au, "\r\n")
  2869. }
  2870. }) : {
  2871. name: t.name,
  2872. value: r.replace(au, "\r\n")
  2873. }
  2874. }).get()
  2875. }
  2876. });
  2877. i.param = function(n, r) {
  2878. var u, f = [],
  2879. e = function(n, t) {
  2880. t = i.isFunction(t) ? t() : null == t ? "" : t;
  2881. f[f.length] = encodeURIComponent(n) + "=" + encodeURIComponent(t)
  2882. };
  2883. if (r === t && (r = i.ajaxSettings && i.ajaxSettings.traditional), i.isArray(n) || n.jquery && !i.isPlainObject(n)) i.each(n, function() {
  2884. e(this.name, this.value)
  2885. });
  2886. else
  2887. for (u in n) ci(u, n[u], r, e);
  2888. return f.join("&").replace(io, "+")
  2889. };
  2890. i.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(n, t) {
  2891. i.fn[t] = function(n, i) {
  2892. return arguments.length > 0 ? this.on(t, null, n, i) : this.trigger(t)
  2893. }
  2894. });
  2895. i.fn.hover = function(n, t) {
  2896. return this.mouseenter(n).mouseleave(t || n)
  2897. };
  2898. var w, c, li = i.now(),
  2899. ai = /\?/,
  2900. eo = /#.*$/,
  2901. vu = /([?&])_=[^&]*/,
  2902. oo = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
  2903. so = /^(?:GET|HEAD)$/,
  2904. ho = /^\/\//,
  2905. yu = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
  2906. pu = i.fn.load,
  2907. wu = {},
  2908. vi = {},
  2909. bu = "*/".concat("*");
  2910. try {
  2911. c = ff.href
  2912. } catch (go) {
  2913. c = r.createElement("a");
  2914. c.href = "";
  2915. c = c.href
  2916. }
  2917. w = yu.exec(c.toLowerCase()) || [];
  2918. i.fn.load = function(n, r, u) {
  2919. if ("string" != typeof n && pu) return pu.apply(this, arguments);
  2920. var f, s, h, e = this,
  2921. o = n.indexOf(" ");
  2922. return o >= 0 && (f = n.slice(o, n.length), n = n.slice(0, o)), i.isFunction(r) ? (u = r, r = t) : r && "object" == typeof r && (h = "POST"), e.length > 0 && i.ajax({
  2923. url: n,
  2924. type: h,
  2925. dataType: "html",
  2926. data: r
  2927. }).done(function(n) {
  2928. s = arguments;
  2929. e.html(f ? i("<div>").append(i.parseHTML(n)).find(f) : n)
  2930. }).complete(u && function(n, t) {
  2931. e.each(u, s || [n.responseText, t, n])
  2932. }), this
  2933. };
  2934. i.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(n, t) {
  2935. i.fn[t] = function(n) {
  2936. return this.on(t, n)
  2937. }
  2938. });
  2939. i.each(["get", "post"], function(n, r) {
  2940. i[r] = function(n, u, f, e) {
  2941. return i.isFunction(u) && (e = e || f, f = u, u = t), i.ajax({
  2942. url: n,
  2943. type: r,
  2944. dataType: e,
  2945. data: u,
  2946. success: f
  2947. })
  2948. }
  2949. });
  2950. i.extend({
  2951. active: 0,
  2952. lastModified: {},
  2953. etag: {},
  2954. ajaxSettings: {
  2955. url: c,
  2956. type: "GET",
  2957. isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(w[1]),
  2958. global: !0,
  2959. processData: !0,
  2960. async: !0,
  2961. contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  2962. accepts: {
  2963. "*": bu,
  2964. text: "text/plain",
  2965. html: "text/html",
  2966. xml: "application/xml, text/xml",
  2967. json: "application/json, text/javascript"
  2968. },
  2969. contents: {
  2970. xml: /xml/,
  2971. html: /html/,
  2972. json: /json/
  2973. },
  2974. responseFields: {
  2975. xml: "responseXML",
  2976. text: "responseText"
  2977. },
  2978. converters: {
  2979. "* text": n.String,
  2980. "text html": !0,
  2981. "text json": i.parseJSON,
  2982. "text xml": i.parseXML
  2983. },
  2984. flatOptions: {
  2985. url: !0,
  2986. context: !0
  2987. }
  2988. },
  2989. ajaxSetup: function(n, t) {
  2990. return t ? yi(yi(n, i.ajaxSettings), t) : yi(i.ajaxSettings, n)
  2991. },
  2992. ajaxPrefilter: ku(wu),
  2993. ajaxTransport: ku(vi),
  2994. ajax: function(n, r) {
  2995. function k(n, r, s, c) {
  2996. var l, k, w, rt, p, a = r;
  2997. 2 !== o && (o = 2, g && clearTimeout(g), y = t, d = c || "", f.readyState = n > 0 ? 4 : 0, s && (rt = co(u, f, s)), n >= 200 && 300 > n || 304 === n ? (u.ifModified && (p = f.getResponseHeader("Last-Modified"), p && (i.lastModified[e] = p), p = f.getResponseHeader("etag"), p && (i.etag[e] = p)), 204 === n ? (l = !0, a = "nocontent") : 304 === n ? (l = !0, a = "notmodified") : (l = lo(u, rt), a = l.state, k = l.data, w = l.error, l = !w)) : (w = a, (n || !a) && (a = "error", 0 > n && (n = 0))), f.status = n, f.statusText = (r || a) + "", l ? tt.resolveWith(h, [k, a, f]) : tt.rejectWith(h, [f, a, w]), f.statusCode(b), b = t, v && nt.trigger(l ? "ajaxSuccess" : "ajaxError", [f, u, l ? k : w]), it.fireWith(h, [f, a]), v && (nt.trigger("ajaxComplete", [f, u]), --i.active || i.event.trigger("ajaxStop")))
  2998. }
  2999. "object" == typeof n && (r = n, n = t);
  3000. r = r || {};
  3001. var l, a, e, d, g, v, y, p, u = i.ajaxSetup({}, r),
  3002. h = u.context || u,
  3003. nt = u.context && (h.nodeType || h.jquery) ? i(h) : i.event,
  3004. tt = i.Deferred(),
  3005. it = i.Callbacks("once memory"),
  3006. b = u.statusCode || {},
  3007. rt = {},
  3008. ut = {},
  3009. o = 0,
  3010. ft = "canceled",
  3011. f = {
  3012. readyState: 0,
  3013. getResponseHeader: function(n) {
  3014. var t;
  3015. if (2 === o) {
  3016. if (!p)
  3017. for (p = {}; t = oo.exec(d);) p[t[1].toLowerCase()] = t[2];
  3018. t = p[n.toLowerCase()]
  3019. }
  3020. return null == t ? null : t
  3021. },
  3022. getAllResponseHeaders: function() {
  3023. return 2 === o ? d : null
  3024. },
  3025. setRequestHeader: function(n, t) {
  3026. var i = n.toLowerCase();
  3027. return o || (n = ut[i] = ut[i] || n, rt[n] = t), this
  3028. },
  3029. overrideMimeType: function(n) {
  3030. return o || (u.mimeType = n), this
  3031. },
  3032. statusCode: function(n) {
  3033. var t;
  3034. if (n)
  3035. if (2 > o)
  3036. for (t in n) b[t] = [b[t], n[t]];
  3037. else f.always(n[f.status]);
  3038. return this
  3039. },
  3040. abort: function(n) {
  3041. var t = n || ft;
  3042. return y && y.abort(t), k(0, t), this
  3043. }
  3044. };
  3045. if (tt.promise(f).complete = it.add, f.success = f.done, f.error = f.fail, u.url = ((n || u.url || c) + "").replace(eo, "").replace(ho, w[1] + "//"), u.type = r.method || r.type || u.method || u.type, u.dataTypes = i.trim(u.dataType || "*").toLowerCase().match(s) || [""], null == u.crossDomain && (l = yu.exec(u.url.toLowerCase()), u.crossDomain = !(!l || l[1] === w[1] && l[2] === w[2] && (l[3] || ("http:" === l[1] ? 80 : 443)) == (w[3] || ("http:" === w[1] ? 80 : 443)))), u.data && u.processData && "string" != typeof u.data && (u.data = i.param(u.data, u.traditional)), du(wu, u, r, f), 2 === o) return f;
  3046. v = u.global;
  3047. v && 0 == i.active++ && i.event.trigger("ajaxStart");
  3048. u.type = u.type.toUpperCase();
  3049. u.hasContent = !so.test(u.type);
  3050. e = u.url;
  3051. u.hasContent || (u.data && (e = u.url += (ai.test(e) ? "&" : "?") + u.data, delete u.data), u.cache === !1 && (u.url = vu.test(e) ? e.replace(vu, "$1_=" + li++) : e + (ai.test(e) ? "&" : "?") + "_=" + li++));
  3052. u.ifModified && (i.lastModified[e] && f.setRequestHeader("If-Modified-Since", i.lastModified[e]), i.etag[e] && f.setRequestHeader("If-None-Match", i.etag[e]));
  3053. (u.data && u.hasContent && u.contentType !== !1 || r.contentType) && f.setRequestHeader("Content-Type", u.contentType);
  3054. f.setRequestHeader("Accept", u.dataTypes[0] && u.accepts[u.dataTypes[0]] ? u.accepts[u.dataTypes[0]] + ("*" !== u.dataTypes[0] ? ", " + bu + "; q=0.01" : "") : u.accepts["*"]);
  3055. for (a in u.headers) f.setRequestHeader(a, u.headers[a]);
  3056. if (u.beforeSend && (u.beforeSend.call(h, f, u) === !1 || 2 === o)) return f.abort();
  3057. ft = "abort";
  3058. for (a in {
  3059. success: 1,
  3060. error: 1,
  3061. complete: 1
  3062. }) f[a](u[a]);
  3063. if (y = du(vi, u, r, f)) {
  3064. f.readyState = 1;
  3065. v && nt.trigger("ajaxSend", [f, u]);
  3066. u.async && u.timeout > 0 && (g = setTimeout(function() {
  3067. f.abort("timeout")
  3068. }, u.timeout));
  3069. try {
  3070. o = 1;
  3071. y.send(rt, k)
  3072. } catch (et) {
  3073. if (!(2 > o)) throw et;
  3074. k(-1, et)
  3075. }
  3076. } else k(-1, "No Transport");
  3077. return f
  3078. },
  3079. getScript: function(n, r) {
  3080. return i.get(n, t, r, "script")
  3081. },
  3082. getJSON: function(n, t, r) {
  3083. return i.get(n, t, r, "json")
  3084. }
  3085. });
  3086. i.ajaxSetup({
  3087. accepts: {
  3088. script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
  3089. },
  3090. contents: {
  3091. script: /(?:java|ecma)script/
  3092. },
  3093. converters: {
  3094. "text script": function(n) {
  3095. return i.globalEval(n), n
  3096. }
  3097. }
  3098. });
  3099. i.ajaxPrefilter("script", function(n) {
  3100. n.cache === t && (n.cache = !1);
  3101. n.crossDomain && (n.type = "GET", n.global = !1)
  3102. });
  3103. i.ajaxTransport("script", function(n) {
  3104. if (n.crossDomain) {
  3105. var u, f = r.head || i("head")[0] || r.documentElement;
  3106. return {
  3107. send: function(t, i) {
  3108. u = r.createElement("script");
  3109. u.async = !0;
  3110. n.scriptCharset && (u.charset = n.scriptCharset);
  3111. u.src = n.url;
  3112. u.onload = u.onreadystatechange = function(n, t) {
  3113. (t || !u.readyState || /loaded|complete/.test(u.readyState)) && (u.onload = u.onreadystatechange = null, u.parentNode && u.parentNode.removeChild(u), u = null, t || i(200, "success"))
  3114. };
  3115. f.insertBefore(u, f.firstChild)
  3116. },
  3117. abort: function() {
  3118. u && u.onload(t, !0)
  3119. }
  3120. }
  3121. }
  3122. });
  3123. pi = [];
  3124. lt = /(=)\?(?=&|$)|\?\?/;
  3125. i.ajaxSetup({
  3126. jsonp: "callback",
  3127. jsonpCallback: function() {
  3128. var n = pi.pop() || i.expando + "_" + li++;
  3129. return this[n] = !0, n
  3130. }
  3131. });
  3132. i.ajaxPrefilter("json jsonp", function(r, u, f) {
  3133. var e, s, o, h = r.jsonp !== !1 && (lt.test(r.url) ? "url" : "string" == typeof r.data && !(r.contentType || "").indexOf("application/x-www-form-urlencoded") && lt.test(r.data) && "data");
  3134. return h || "jsonp" === r.dataTypes[0] ? (e = r.jsonpCallback = i.isFunction(r.jsonpCallback) ? r.jsonpCallback() : r.jsonpCallback, h ? r[h] = r[h].replace(lt, "$1" + e) : r.jsonp !== !1 && (r.url += (ai.test(r.url) ? "&" : "?") + r.jsonp + "=" + e), r.converters["script json"] = function() {
  3135. return o || i.error(e + " was not called"), o[0]
  3136. }, r.dataTypes[0] = "json", s = n[e], n[e] = function() {
  3137. o = arguments
  3138. }, f.always(function() {
  3139. n[e] = s;
  3140. r[e] && (r.jsonpCallback = u.jsonpCallback, pi.push(e));
  3141. o && i.isFunction(s) && s(o[0]);
  3142. o = s = t
  3143. }), "script") : t
  3144. });
  3145. gu = 0;
  3146. at = n.ActiveXObject && function() {
  3147. for (var n in g) g[n](t, !0)
  3148. };
  3149. i.ajaxSettings.xhr = n.ActiveXObject ? function() {
  3150. return !this.isLocal && nf() || ao()
  3151. } : nf;
  3152. nt = i.ajaxSettings.xhr();
  3153. i.support.cors = !!nt && "withCredentials" in nt;
  3154. nt = i.support.ajax = !!nt;
  3155. nt && i.ajaxTransport(function(r) {
  3156. if (!r.crossDomain || i.support.cors) {
  3157. var u;
  3158. return {
  3159. send: function(f, e) {
  3160. var h, s, o = r.xhr();
  3161. if (r.username ? o.open(r.type, r.url, r.async, r.username, r.password) : o.open(r.type, r.url, r.async), r.xhrFields)
  3162. for (s in r.xhrFields) o[s] = r.xhrFields[s];
  3163. r.mimeType && o.overrideMimeType && o.overrideMimeType(r.mimeType);
  3164. r.crossDomain || f["X-Requested-With"] || (f["X-Requested-With"] = "XMLHttpRequest");
  3165. try {
  3166. for (s in f) o.setRequestHeader(s, f[s])
  3167. } catch (c) {}
  3168. o.send(r.hasContent && r.data || null);
  3169. u = function(n, f) {
  3170. var s, a, l, c;
  3171. try {
  3172. if (u && (f || 4 === o.readyState))
  3173. if (u = t, h && (o.onreadystatechange = i.noop, at && delete g[h]), f) 4 !== o.readyState && o.abort();
  3174. else {
  3175. c = {};
  3176. s = o.status;
  3177. a = o.getAllResponseHeaders();
  3178. "string" == typeof o.responseText && (c.text = o.responseText);
  3179. try {
  3180. l = o.statusText
  3181. } catch (y) {
  3182. l = ""
  3183. }
  3184. s || !r.isLocal || r.crossDomain ? 1223 === s && (s = 204) : s = c.text ? 200 : 404
  3185. }
  3186. } catch (v) {
  3187. f || e(-1, v)
  3188. }
  3189. c && e(s, l, c, a)
  3190. };
  3191. r.async ? 4 === o.readyState ? setTimeout(u) : (h = ++gu, at && (g || (g = {}, i(n).unload(at)), g[h] = u), o.onreadystatechange = u) : u()
  3192. },
  3193. abort: function() {
  3194. u && u(t, !0)
  3195. }
  3196. }
  3197. }
  3198. });
  3199. var tt, vt, vo = /^(?:toggle|show|hide)$/,
  3200. yo = RegExp("^(?:([+-])=|)(" + st + ")([a-z%]*)$", "i"),
  3201. po = /queueHooks$/,
  3202. yt = [ko],
  3203. ft = {
  3204. "*": [function(n, t) {
  3205. var o, s, r = this.createTween(n, t),
  3206. e = yo.exec(t),
  3207. h = r.cur(),
  3208. u = +h || 0,
  3209. f = 1,
  3210. c = 20;
  3211. if (e) {
  3212. if (o = +e[2], s = e[3] || (i.cssNumber[n] ? "" : "px"), "px" !== s && u) {
  3213. u = i.css(r.elem, n, !0) || o || 1;
  3214. do f = f || ".5", u /= f, i.style(r.elem, n, u + s); while (f !== (f = r.cur() / h) && 1 !== f && --c)
  3215. }
  3216. r.unit = s;
  3217. r.start = u;
  3218. r.end = e[1] ? u + (e[1] + 1) * o : o
  3219. }
  3220. return r
  3221. }]
  3222. };
  3223. i.Animation = i.extend(rf, {
  3224. tweener: function(n, t) {
  3225. i.isFunction(n) ? (t = n, n = ["*"]) : n = n.split(" ");
  3226. for (var r, u = 0, f = n.length; f > u; u++) r = n[u], ft[r] = ft[r] || [], ft[r].unshift(t)
  3227. },
  3228. prefilter: function(n, t) {
  3229. t ? yt.unshift(n) : yt.push(n)
  3230. }
  3231. });
  3232. i.Tween = f;
  3233. f.prototype = {
  3234. constructor: f,
  3235. init: function(n, t, r, u, f, e) {
  3236. this.elem = n;
  3237. this.prop = r;
  3238. this.easing = f || "swing";
  3239. this.options = t;
  3240. this.start = this.now = this.cur();
  3241. this.end = u;
  3242. this.unit = e || (i.cssNumber[r] ? "" : "px")
  3243. },
  3244. cur: function() {
  3245. var n = f.propHooks[this.prop];
  3246. return n && n.get ? n.get(this) : f.propHooks._default.get(this)
  3247. },
  3248. run: function(n) {
  3249. var r, t = f.propHooks[this.prop];
  3250. return this.pos = r = this.options.duration ? i.easing[this.easing](n, this.options.duration * n, 0, 1, this.options.duration) : n, this.now = (this.end - this.start) * r + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), t && t.set ? t.set(this) : f.propHooks._default.set(this), this
  3251. }
  3252. };
  3253. f.prototype.init.prototype = f.prototype;
  3254. f.propHooks = {
  3255. _default: {
  3256. get: function(n) {
  3257. var t;
  3258. return null == n.elem[n.prop] || n.elem.style && null != n.elem.style[n.prop] ? (t = i.css(n.elem, n.prop, ""), t && "auto" !== t ? t : 0) : n.elem[n.prop]
  3259. },
  3260. set: function(n) {
  3261. i.fx.step[n.prop] ? i.fx.step[n.prop](n) : n.elem.style && (null != n.elem.style[i.cssProps[n.prop]] || i.cssHooks[n.prop]) ? i.style(n.elem, n.prop, n.now + n.unit) : n.elem[n.prop] = n.now
  3262. }
  3263. }
  3264. };
  3265. f.propHooks.scrollTop = f.propHooks.scrollLeft = {
  3266. set: function(n) {
  3267. n.elem.nodeType && n.elem.parentNode && (n.elem[n.prop] = n.now)
  3268. }
  3269. };
  3270. i.each(["toggle", "show", "hide"], function(n, t) {
  3271. var r = i.fn[t];
  3272. i.fn[t] = function(n, i, u) {
  3273. return null == n || "boolean" == typeof n ? r.apply(this, arguments) : this.animate(pt(t, !0), n, i, u)
  3274. }
  3275. });
  3276. i.fn.extend({
  3277. fadeTo: function(n, t, i, r) {
  3278. return this.filter(ut).css("opacity", 0).show().end().animate({
  3279. opacity: t
  3280. }, n, i, r)
  3281. },
  3282. animate: function(n, t, r, u) {
  3283. var o = i.isEmptyObject(n),
  3284. e = i.speed(t, r, u),
  3285. f = function() {
  3286. var t = rf(this, i.extend({}, n), e);
  3287. f.finish = function() {
  3288. t.stop(!0)
  3289. };
  3290. (o || i._data(this, "finish")) && t.stop(!0)
  3291. };
  3292. return f.finish = f, o || e.queue === !1 ? this.each(f) : this.queue(e.queue, f)
  3293. },
  3294. stop: function(n, r, u) {
  3295. var f = function(n) {
  3296. var t = n.stop;
  3297. delete n.stop;
  3298. t(u)
  3299. };
  3300. return "string" != typeof n && (u = r, r = n, n = t), r && n !== !1 && this.queue(n || "fx", []), this.each(function() {
  3301. var o = !0,
  3302. t = null != n && n + "queueHooks",
  3303. e = i.timers,
  3304. r = i._data(this);
  3305. if (t) r[t] && r[t].stop && f(r[t]);
  3306. else
  3307. for (t in r) r[t] && r[t].stop && po.test(t) && f(r[t]);
  3308. for (t = e.length; t--;) e[t].elem !== this || null != n && e[t].queue !== n || (e[t].anim.stop(u), o = !1, e.splice(t, 1));
  3309. (o || !u) && i.dequeue(this, n)
  3310. })
  3311. },
  3312. finish: function(n) {
  3313. return n !== !1 && (n = n || "fx"), this.each(function() {
  3314. var t, f = i._data(this),
  3315. r = f[n + "queue"],
  3316. e = f[n + "queueHooks"],
  3317. u = i.timers,
  3318. o = r ? r.length : 0;
  3319. for (f.finish = !0, i.queue(this, n, []), e && e.cur && e.cur.finish && e.cur.finish.call(this), t = u.length; t--;) u[t].elem === this && u[t].queue === n && (u[t].anim.stop(!0), u.splice(t, 1));
  3320. for (t = 0; o > t; t++) r[t] && r[t].finish && r[t].finish.call(this);
  3321. delete f.finish
  3322. })
  3323. }
  3324. });
  3325. i.each({
  3326. slideDown: pt("show"),
  3327. slideUp: pt("hide"),
  3328. slideToggle: pt("toggle"),
  3329. fadeIn: {
  3330. opacity: "show"
  3331. },
  3332. fadeOut: {
  3333. opacity: "hide"
  3334. },
  3335. fadeToggle: {
  3336. opacity: "toggle"
  3337. }
  3338. }, function(n, t) {
  3339. i.fn[n] = function(n, i, r) {
  3340. return this.animate(t, n, i, r)
  3341. }
  3342. });
  3343. i.speed = function(n, t, r) {
  3344. var u = n && "object" == typeof n ? i.extend({}, n) : {
  3345. complete: r || !r && t || i.isFunction(n) && n,
  3346. duration: n,
  3347. easing: r && t || t && !i.isFunction(t) && t
  3348. };
  3349. return u.duration = i.fx.off ? 0 : "number" == typeof u.duration ? u.duration : u.duration in i.fx.speeds ? i.fx.speeds[u.duration] : i.fx.speeds._default, (null == u.queue || u.queue === !0) && (u.queue = "fx"), u.old = u.complete, u.complete = function() {
  3350. i.isFunction(u.old) && u.old.call(this);
  3351. u.queue && i.dequeue(this, u.queue)
  3352. }, u
  3353. };
  3354. i.easing = {
  3355. linear: function(n) {
  3356. return n
  3357. },
  3358. swing: function(n) {
  3359. return .5 - Math.cos(n * Math.PI) / 2
  3360. }
  3361. };
  3362. i.timers = [];
  3363. i.fx = f.prototype.init;
  3364. i.fx.tick = function() {
  3365. var u, n = i.timers,
  3366. r = 0;
  3367. for (tt = i.now(); n.length > r; r++) u = n[r], u() || n[r] !== u || n.splice(r--, 1);
  3368. n.length || i.fx.stop();
  3369. tt = t
  3370. };
  3371. i.fx.timer = function(n) {
  3372. n() && i.timers.push(n) && i.fx.start()
  3373. };
  3374. i.fx.interval = 13;
  3375. i.fx.start = function() {
  3376. vt || (vt = setInterval(i.fx.tick, i.fx.interval))
  3377. };
  3378. i.fx.stop = function() {
  3379. clearInterval(vt);
  3380. vt = null
  3381. };
  3382. i.fx.speeds = {
  3383. slow: 600,
  3384. fast: 200,
  3385. _default: 400
  3386. };
  3387. i.fx.step = {};
  3388. i.expr && i.expr.filters && (i.expr.filters.animated = function(n) {
  3389. return i.grep(i.timers, function(t) {
  3390. return n === t.elem
  3391. }).length
  3392. });
  3393. i.fn.offset = function(n) {
  3394. if (arguments.length) return n === t ? this : this.each(function(t) {
  3395. i.offset.setOffset(this, n, t)
  3396. });
  3397. var r, e, f = {
  3398. top: 0,
  3399. left: 0
  3400. },
  3401. u = this[0],
  3402. s = u && u.ownerDocument;
  3403. if (s) return r = s.documentElement, i.contains(r, u) ? (typeof u.getBoundingClientRect !== o && (f = u.getBoundingClientRect()), e = uf(s), {
  3404. top: f.top + (e.pageYOffset || r.scrollTop) - (r.clientTop || 0),
  3405. left: f.left + (e.pageXOffset || r.scrollLeft) - (r.clientLeft || 0)
  3406. }) : f
  3407. };
  3408. i.offset = {
  3409. setOffset: function(n, t, r) {
  3410. var f = i.css(n, "position");
  3411. "static" === f && (n.style.position = "relative");
  3412. var e = i(n),
  3413. o = e.offset(),
  3414. l = i.css(n, "top"),
  3415. a = i.css(n, "left"),
  3416. v = ("absolute" === f || "fixed" === f) && i.inArray("auto", [l, a]) > -1,
  3417. u = {},
  3418. s = {},
  3419. h, c;
  3420. v ? (s = e.position(), h = s.top, c = s.left) : (h = parseFloat(l) || 0, c = parseFloat(a) || 0);
  3421. i.isFunction(t) && (t = t.call(n, r, o));
  3422. null != t.top && (u.top = t.top - o.top + h);
  3423. null != t.left && (u.left = t.left - o.left + c);
  3424. "using" in t ? t.using.call(n, u) : e.css(u)
  3425. }
  3426. };
  3427. i.fn.extend({
  3428. position: function() {
  3429. if (this[0]) {
  3430. var n, r, t = {
  3431. top: 0,
  3432. left: 0
  3433. },
  3434. u = this[0];
  3435. return "fixed" === i.css(u, "position") ? r = u.getBoundingClientRect() : (n = this.offsetParent(), r = this.offset(), i.nodeName(n[0], "html") || (t = n.offset()), t.top += i.css(n[0], "borderTopWidth", !0), t.left += i.css(n[0], "borderLeftWidth", !0)), {
  3436. top: r.top - t.top - i.css(u, "marginTop", !0),
  3437. left: r.left - t.left - i.css(u, "marginLeft", !0)
  3438. }
  3439. }
  3440. },
  3441. offsetParent: function() {
  3442. return this.map(function() {
  3443. for (var n = this.offsetParent || r.documentElement; n && !i.nodeName(n, "html") && "static" === i.css(n, "position");) n = n.offsetParent;
  3444. return n || r.documentElement
  3445. })
  3446. }
  3447. });
  3448. i.each({
  3449. scrollLeft: "pageXOffset",
  3450. scrollTop: "pageYOffset"
  3451. }, function(n, r) {
  3452. var u = /Y/.test(r);
  3453. i.fn[n] = function(f) {
  3454. return i.access(this, function(n, f, e) {
  3455. var o = uf(n);
  3456. return e === t ? o ? r in o ? o[r] : o.document.documentElement[f] : n[f] : (o ? o.scrollTo(u ? i(o).scrollLeft() : e, u ? e : i(o).scrollTop()) : n[f] = e, t)
  3457. }, n, f, arguments.length, null)
  3458. }
  3459. });
  3460. i.each({
  3461. Height: "height",
  3462. Width: "width"
  3463. }, function(n, r) {
  3464. i.each({
  3465. padding: "inner" + n,
  3466. content: r,
  3467. "": "outer" + n
  3468. }, function(u, f) {
  3469. i.fn[f] = function(f, e) {
  3470. var o = arguments.length && (u || "boolean" != typeof f),
  3471. s = u || (f === !0 || e === !0 ? "margin" : "border");
  3472. return i.access(this, function(r, u, f) {
  3473. var e;
  3474. return i.isWindow(r) ? r.document.documentElement["client" + n] : 9 === r.nodeType ? (e = r.documentElement, Math.max(r.body["scroll" + n], e["scroll" + n], r.body["offset" + n], e["offset" + n], e["client" + n])) : f === t ? i.css(r, u, s) : i.style(r, u, f, s)
  3475. }, r, o ? f : t, o, null)
  3476. }
  3477. })
  3478. });
  3479. n.jQuery = n.$ = i;
  3480. "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() {
  3481. return i
  3482. })
  3483. })(window),
  3484. function(n) {
  3485. function i(n, t) {
  3486. for (var i = window, r = (n || "").split("."); i && r.length;) i = i[r.shift()];
  3487. return typeof i == "function" ? i : (t.push(n), Function.constructor.apply(null, t))
  3488. }
  3489. function r(n) {
  3490. return n === "GET" || n === "POST"
  3491. }
  3492. function e(n, t) {
  3493. r(t) || n.setRequestHeader("X-HTTP-Method-Override", t)
  3494. }
  3495. function o(t, i, r) {
  3496. var u;
  3497. r.indexOf("application/x-javascript") === -1 && (u = (t.getAttribute("data-ajax-mode") || "").toUpperCase(), n(t.getAttribute("data-ajax-update")).each(function(t, r) {
  3498. var f;
  3499. switch (u) {
  3500. case "BEFORE":
  3501. f = r.firstChild;
  3502. n("<div />").html(i).contents().each(function() {
  3503. r.insertBefore(this, f)
  3504. });
  3505. break;
  3506. case "AFTER":
  3507. n("<div />").html(i).contents().each(function() {
  3508. r.appendChild(this)
  3509. });
  3510. break;
  3511. default:
  3512. n(r).html(i)
  3513. }
  3514. }))
  3515. }
  3516. function u(t, u) {
  3517. var s, h, f, c;
  3518. (s = t.getAttribute("data-ajax-confirm"), !s || window.confirm(s)) && (h = n(t.getAttribute("data-ajax-loading")), c = t.getAttribute("data-ajax-loading-duration") || 0, n.extend(u, {
  3519. type: t.getAttribute("data-ajax-method") || undefined,
  3520. url: t.getAttribute("data-ajax-url") || undefined,
  3521. beforeSend: function(n) {
  3522. var r;
  3523. return e(n, f), r = i(t.getAttribute("data-ajax-begin"), ["xhr"]).apply(this, arguments), r !== !1 && h.show(c), r
  3524. },
  3525. complete: function() {
  3526. h.hide(c);
  3527. i(t.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments)
  3528. },
  3529. success: function(n, r, u) {
  3530. o(t, n, u.getResponseHeader("Content-Type") || "text/html");
  3531. i(t.getAttribute("data-ajax-success"), ["data", "status", "xhr"]).apply(this, arguments)
  3532. },
  3533. error: i(t.getAttribute("data-ajax-failure"), ["xhr", "status", "error"])
  3534. }), u.data.push({
  3535. name: "X-Requested-With",
  3536. value: "XMLHttpRequest"
  3537. }), f = u.type.toUpperCase(), r(f) || (u.type = "POST", u.data.push({
  3538. name: "X-HTTP-Method-Override",
  3539. value: f
  3540. })), n.ajax(u))
  3541. }
  3542. function s(t) {
  3543. var i = n(t).data(f);
  3544. return !i || !i.validate || i.validate()
  3545. }
  3546. var t = "unobtrusiveAjaxClick",
  3547. f = "unobtrusiveValidation";
  3548. n(document).on("click", "a[data-ajax=true]", function(n) {
  3549. n.preventDefault();
  3550. u(this, {
  3551. url: this.href,
  3552. type: "GET",
  3553. data: []
  3554. })
  3555. });
  3556. n(document).on("click", "form[data-ajax=true] input[type=image]", function(i) {
  3557. var r = i.target.name,
  3558. u = n(i.target),
  3559. f = u.parents("form")[0],
  3560. e = u.offset();
  3561. n(f).data(t, [{
  3562. name: r + ".x",
  3563. value: Math.round(i.pageX - e.left)
  3564. }, {
  3565. name: r + ".y",
  3566. value: Math.round(i.pageY - e.top)
  3567. }]);
  3568. setTimeout(function() {
  3569. n(f).removeData(t)
  3570. }, 0)
  3571. });
  3572. n(document).on("click", "form[data-ajax=true] :submit", function(i) {
  3573. var r = i.target.name,
  3574. u = n(i.target).parents("form")[0];
  3575. n(u).data(t, r ? [{
  3576. name: r,
  3577. value: i.target.value
  3578. }] : []);
  3579. setTimeout(function() {
  3580. n(u).removeData(t)
  3581. }, 0)
  3582. });
  3583. n(document).on("submit", "form[data-ajax=true]", function(i) {
  3584. var r = n(this).data(t) || [];
  3585. (i.preventDefault(), s(this)) && u(this, {
  3586. url: this.action,
  3587. type: this.method || "GET",
  3588. data: r.concat(n(this).serializeArray())
  3589. })
  3590. })
  3591. }(jQuery),
  3592. function(n) {
  3593. n.extend(n.fn, {
  3594. validate: function(t) {
  3595. if (!this.length) return t && t.debug && window.console && console.warn("Nothing selected, can't validate, returning nothing."), void 0;
  3596. var i = n.data(this[0], "validator");
  3597. return i ? i : (this.attr("novalidate", "novalidate"), i = new n.validator(t, this[0]), n.data(this[0], "validator", i), i.settings.onsubmit && (this.validateDelegate(":submit", "click", function(t) {
  3598. i.settings.submitHandler && (i.submitButton = t.target);
  3599. n(t.target).hasClass("cancel") && (i.cancelSubmit = !0);
  3600. void 0 !== n(t.target).attr("formnovalidate") && (i.cancelSubmit = !0)
  3601. }), this.submit(function(t) {
  3602. function r() {
  3603. var r;
  3604. return i.settings.submitHandler ? (i.submitButton && (r = n("<input type='hidden'/>").attr("name", i.submitButton.name).val(n(i.submitButton).val()).appendTo(i.currentForm)), i.settings.submitHandler.call(i, i.currentForm, t), i.submitButton && r.remove(), !1) : !0
  3605. }
  3606. return i.settings.debug && t.preventDefault(), i.cancelSubmit ? (i.cancelSubmit = !1, r()) : i.form() ? i.pendingRequest ? (i.formSubmitted = !0, !1) : r() : (i.focusInvalid(), !1)
  3607. })), i)
  3608. },
  3609. valid: function() {
  3610. if (n(this[0]).is("form")) return this.validate().form();
  3611. var t = !0,
  3612. i = n(this[0].form).validate();
  3613. return this.each(function() {
  3614. t = t && i.element(this)
  3615. }), t
  3616. },
  3617. removeAttrs: function(t) {
  3618. var i = {},
  3619. r = this;
  3620. return n.each(t.split(/\s/), function(n, t) {
  3621. i[t] = r.attr(t);
  3622. r.removeAttr(t)
  3623. }), i
  3624. },
  3625. rules: function(t, i) {
  3626. var r = this[0],
  3627. o, u, h;
  3628. if (t) {
  3629. var e = n.data(r.form, "validator").settings,
  3630. s = e.rules,
  3631. f = n.validator.staticRules(r);
  3632. switch (t) {
  3633. case "add":
  3634. n.extend(f, n.validator.normalizeRule(i));
  3635. delete f.messages;
  3636. s[r.name] = f;
  3637. i.messages && (e.messages[r.name] = n.extend(e.messages[r.name], i.messages));
  3638. break;
  3639. case "remove":
  3640. return i ? (o = {}, n.each(i.split(/\s/), function(n, t) {
  3641. o[t] = f[t];
  3642. delete f[t]
  3643. }), o) : (delete s[r.name], f)
  3644. }
  3645. }
  3646. return u = n.validator.normalizeRules(n.extend({}, n.validator.classRules(r), n.validator.attributeRules(r), n.validator.dataRules(r), n.validator.staticRules(r)), r), u.required && (h = u.required, delete u.required, u = n.extend({
  3647. required: h
  3648. }, u)), u
  3649. }
  3650. });
  3651. n.extend(n.expr[":"], {
  3652. blank: function(t) {
  3653. return !n.trim("" + n(t).val())
  3654. },
  3655. filled: function(t) {
  3656. return !!n.trim("" + n(t).val())
  3657. },
  3658. unchecked: function(t) {
  3659. return !n(t).prop("checked")
  3660. }
  3661. });
  3662. n.validator = function(t, i) {
  3663. this.settings = n.extend(!0, {}, n.validator.defaults, t);
  3664. this.currentForm = i;
  3665. this.init()
  3666. };
  3667. n.validator.format = function(t, i) {
  3668. return 1 === arguments.length ? function() {
  3669. var i = n.makeArray(arguments);
  3670. return i.unshift(t), n.validator.format.apply(this, i)
  3671. } : (arguments.length > 2 && i.constructor !== Array && (i = n.makeArray(arguments).slice(1)), i.constructor !== Array && (i = [i]), n.each(i, function(n, i) {
  3672. t = t.replace(RegExp("\\{" + n + "\\}", "g"), function() {
  3673. return i
  3674. })
  3675. }), t)
  3676. };
  3677. n.extend(n.validator, {
  3678. defaults: {
  3679. messages: {},
  3680. groups: {},
  3681. rules: {},
  3682. errorClass: "error",
  3683. validClass: "valid",
  3684. errorElement: "label",
  3685. focusInvalid: !0,
  3686. errorContainer: n([]),
  3687. errorLabelContainer: n([]),
  3688. onsubmit: !0,
  3689. ignore: ":hidden",
  3690. ignoreTitle: !1,
  3691. onfocusin: function(n) {
  3692. this.lastActive = n;
  3693. this.settings.focusCleanup && !this.blockFocusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, n, this.settings.errorClass, this.settings.validClass), this.addWrapper(this.errorsFor(n)).hide())
  3694. },
  3695. onfocusout: function(n) {
  3696. !this.checkable(n) && (n.name in this.submitted || !this.optional(n)) && this.element(n)
  3697. },
  3698. onkeyup: function(n, t) {
  3699. (9 !== t.which || "" !== this.elementValue(n)) && (n.name in this.submitted || n === this.lastElement) && this.element(n)
  3700. },
  3701. onclick: function(n) {
  3702. n.name in this.submitted ? this.element(n) : n.parentNode.name in this.submitted && this.element(n.parentNode)
  3703. },
  3704. highlight: function(t, i, r) {
  3705. "radio" === t.type ? this.findByName(t.name).addClass(i).removeClass(r) : n(t).addClass(i).removeClass(r)
  3706. },
  3707. unhighlight: function(t, i, r) {
  3708. "radio" === t.type ? this.findByName(t.name).removeClass(i).addClass(r) : n(t).removeClass(i).addClass(r)
  3709. }
  3710. },
  3711. setDefaults: function(t) {
  3712. n.extend(n.validator.defaults, t)
  3713. },
  3714. messages: {
  3715. required: "This field is required.",
  3716. remote: "Please fix this field.",
  3717. email: "Please enter a valid email address.",
  3718. url: "Please enter a valid URL.",
  3719. date: "Please enter a valid date.",
  3720. dateISO: "Please enter a valid date (ISO).",
  3721. number: "Please enter a valid number.",
  3722. digits: "Please enter only digits.",
  3723. creditcard: "Please enter a valid credit card number.",
  3724. equalTo: "Please enter the same value again.",
  3725. maxlength: n.validator.format("Please enter no more than {0} characters."),
  3726. minlength: n.validator.format("Please enter at least {0} characters."),
  3727. rangelength: n.validator.format("Please enter a value between {0} and {1} characters long."),
  3728. range: n.validator.format("Please enter a value between {0} and {1}."),
  3729. max: n.validator.format("Please enter a value less than or equal to {0}."),
  3730. min: n.validator.format("Please enter a value greater than or equal to {0}.")
  3731. },
  3732. autoCreateRanges: !1,
  3733. prototype: {
  3734. init: function() {
  3735. function i(t) {
  3736. var i = n.data(this[0].form, "validator"),
  3737. r = "on" + t.type.replace(/^validate/, "");
  3738. i.settings[r] && i.settings[r].call(i, this[0], t)
  3739. }
  3740. var r, t;
  3741. this.labelContainer = n(this.settings.errorLabelContainer);
  3742. this.errorContext = this.labelContainer.length && this.labelContainer || n(this.currentForm);
  3743. this.containers = n(this.settings.errorContainer).add(this.settings.errorLabelContainer);
  3744. this.submitted = {};
  3745. this.valueCache = {};
  3746. this.pendingRequest = 0;
  3747. this.pending = {};
  3748. this.invalid = {};
  3749. this.reset();
  3750. r = this.groups = {};
  3751. n.each(this.settings.groups, function(t, i) {
  3752. "string" == typeof i && (i = i.split(/\s/));
  3753. n.each(i, function(n, i) {
  3754. r[i] = t
  3755. })
  3756. });
  3757. t = this.settings.rules;
  3758. n.each(t, function(i, r) {
  3759. t[i] = n.validator.normalizeRule(r)
  3760. });
  3761. n(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ", "focusin focusout keyup", i).validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", i);
  3762. this.settings.invalidHandler && n(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler)
  3763. },
  3764. form: function() {
  3765. return this.checkForm(), n.extend(this.submitted, this.errorMap), this.invalid = n.extend({}, this.errorMap), this.valid() || n(this.currentForm).triggerHandler("invalid-form", [this]), this.showErrors(), this.valid()
  3766. },
  3767. checkForm: function() {
  3768. this.prepareForm();
  3769. for (var n = 0, t = this.currentElements = this.elements(); t[n]; n++) this.check(t[n]);
  3770. return this.valid()
  3771. },
  3772. element: function(t) {
  3773. t = this.validationTargetFor(this.clean(t));
  3774. this.lastElement = t;
  3775. this.prepareElement(t);
  3776. this.currentElements = n(t);
  3777. var i = this.check(t) !== !1;
  3778. return i ? delete this.invalid[t.name] : this.invalid[t.name] = !0, this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), i
  3779. },
  3780. showErrors: function(t) {
  3781. if (t) {
  3782. n.extend(this.errorMap, t);
  3783. this.errorList = [];
  3784. for (var i in t) this.errorList.push({
  3785. message: t[i],
  3786. element: this.findByName(i)[0]
  3787. });
  3788. this.successList = n.grep(this.successList, function(n) {
  3789. return !(n.name in t)
  3790. })
  3791. }
  3792. this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
  3793. },
  3794. resetForm: function() {
  3795. n.fn.resetForm && n(this.currentForm).resetForm();
  3796. this.submitted = {};
  3797. this.lastElement = null;
  3798. this.prepareForm();
  3799. this.hideErrors();
  3800. this.elements().removeClass(this.settings.errorClass).removeData("previousValue")
  3801. },
  3802. numberOfInvalids: function() {
  3803. return this.objectLength(this.invalid)
  3804. },
  3805. objectLength: function(n) {
  3806. var t = 0;
  3807. for (var i in n) t++;
  3808. return t
  3809. },
  3810. hideErrors: function() {
  3811. this.addWrapper(this.toHide).hide()
  3812. },
  3813. valid: function() {
  3814. return 0 === this.size()
  3815. },
  3816. size: function() {
  3817. return this.errorList.length
  3818. },
  3819. focusInvalid: function() {
  3820. if (this.settings.focusInvalid) try {
  3821. n(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus().trigger("focusin")
  3822. } catch (t) {}
  3823. },
  3824. findLastActive: function() {
  3825. var t = this.lastActive;
  3826. return t && 1 === n.grep(this.errorList, function(n) {
  3827. return n.element.name === t.name
  3828. }).length && t
  3829. },
  3830. elements: function() {
  3831. var t = this,
  3832. i = {};
  3833. return n(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function() {
  3834. return !this.name && t.settings.debug && window.console && console.error("%o has no name assigned", this), this.name in i || !t.objectLength(n(this).rules()) ? !1 : (i[this.name] = !0, !0)
  3835. })
  3836. },
  3837. clean: function(t) {
  3838. return n(t)[0]
  3839. },
  3840. errors: function() {
  3841. var t = this.settings.errorClass.replace(" ", ".");
  3842. return n(this.settings.errorElement + "." + t, this.errorContext)
  3843. },
  3844. reset: function() {
  3845. this.successList = [];
  3846. this.errorList = [];
  3847. this.errorMap = {};
  3848. this.toShow = n([]);
  3849. this.toHide = n([]);
  3850. this.currentElements = n([])
  3851. },
  3852. prepareForm: function() {
  3853. this.reset();
  3854. this.toHide = this.errors().add(this.containers)
  3855. },
  3856. prepareElement: function(n) {
  3857. this.reset();
  3858. this.toHide = this.errorsFor(n)
  3859. },
  3860. elementValue: function(t) {
  3861. var r = n(t).attr("type"),
  3862. i = n(t).val();
  3863. return "radio" === r || "checkbox" === r ? n("input[name='" + n(t).attr("name") + "']:checked").val() : "string" == typeof i ? i.replace(/\r/g, "") : i
  3864. },
  3865. check: function(t) {
  3866. var r, u;
  3867. t = this.validationTargetFor(this.clean(t));
  3868. var i, f = n(t).rules(),
  3869. e = !1,
  3870. s = this.elementValue(t);
  3871. for (r in f) {
  3872. u = {
  3873. method: r,
  3874. parameters: f[r]
  3875. };
  3876. try {
  3877. if (i = n.validator.methods[r].call(this, s, t, u.parameters), "dependency-mismatch" === i) {
  3878. e = !0;
  3879. continue
  3880. }
  3881. if (e = !1, "pending" === i) return this.toHide = this.toHide.not(this.errorsFor(t)), void 0;
  3882. if (!i) return this.formatAndAdd(t, u), !1
  3883. } catch (o) {
  3884. throw this.settings.debug && window.console && console.log("Exception occurred when checking element " + t.id + ", check the '" + u.method + "' method.", o), o;
  3885. }
  3886. }
  3887. if (!e) return (this.objectLength(f) && this.successList.push(t), !0)
  3888. },
  3889. customDataMessage: function(t, i) {
  3890. return n(t).data("msg-" + i.toLowerCase()) || t.attributes && n(t).attr("data-msg-" + i.toLowerCase())
  3891. },
  3892. customMessage: function(n, t) {
  3893. var i = this.settings.messages[n];
  3894. return i && (i.constructor === String ? i : i[t])
  3895. },
  3896. findDefined: function() {
  3897. for (var n = 0; arguments.length > n; n++)
  3898. if (void 0 !== arguments[n]) return arguments[n];
  3899. return void 0
  3900. },
  3901. defaultMessage: function(t, i) {
  3902. return this.findDefined(this.customMessage(t.name, i), this.customDataMessage(t, i), !this.settings.ignoreTitle && t.title || void 0, n.validator.messages[i], "<strong>Warning: No message defined for " + t.name + "<\/strong>")
  3903. },
  3904. formatAndAdd: function(t, i) {
  3905. var r = this.defaultMessage(t, i.method),
  3906. u = /\$?\{(\d+)\}/g;
  3907. "function" == typeof r ? r = r.call(this, i.parameters, t) : u.test(r) && (r = n.validator.format(r.replace(u, "{$1}"), i.parameters));
  3908. this.errorList.push({
  3909. message: r,
  3910. element: t
  3911. });
  3912. this.errorMap[t.name] = r;
  3913. this.submitted[t.name] = r
  3914. },
  3915. addWrapper: function(n) {
  3916. return this.settings.wrapper && (n = n.add(n.parent(this.settings.wrapper))), n
  3917. },
  3918. defaultShowErrors: function() {
  3919. for (var i, t, n = 0; this.errorList[n]; n++) t = this.errorList[n], this.settings.highlight && this.settings.highlight.call(this, t.element, this.settings.errorClass, this.settings.validClass), this.showLabel(t.element, t.message);
  3920. if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success)
  3921. for (n = 0; this.successList[n]; n++) this.showLabel(this.successList[n]);
  3922. if (this.settings.unhighlight)
  3923. for (n = 0, i = this.validElements(); i[n]; n++) this.settings.unhighlight.call(this, i[n], this.settings.errorClass, this.settings.validClass);
  3924. this.toHide = this.toHide.not(this.toShow);
  3925. this.hideErrors();
  3926. this.addWrapper(this.toShow).show()
  3927. },
  3928. validElements: function() {
  3929. return this.currentElements.not(this.invalidElements())
  3930. },
  3931. invalidElements: function() {
  3932. return n(this.errorList).map(function() {
  3933. return this.element
  3934. })
  3935. },
  3936. showLabel: function(t, i) {
  3937. var r = this.errorsFor(t);
  3938. r.length ? (r.removeClass(this.settings.validClass).addClass(this.settings.errorClass), r.html(i)) : (r = n("<" + this.settings.errorElement + ">").attr("for", this.idOrName(t)).addClass(this.settings.errorClass).html(i || ""), this.settings.wrapper && (r = r.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()), this.labelContainer.append(r).length || (this.settings.errorPlacement ? this.settings.errorPlacement(r, n(t)) : r.insertAfter(t)));
  3939. !i && this.settings.success && (r.text(""), "string" == typeof this.settings.success ? r.addClass(this.settings.success) : this.settings.success(r, t));
  3940. this.toShow = this.toShow.add(r)
  3941. },
  3942. errorsFor: function(t) {
  3943. var i = this.idOrName(t);
  3944. return this.errors().filter(function() {
  3945. return n(this).attr("for") === i
  3946. })
  3947. },
  3948. idOrName: function(n) {
  3949. return this.groups[n.name] || (this.checkable(n) ? n.name : n.id || n.name)
  3950. },
  3951. validationTargetFor: function(n) {
  3952. return this.checkable(n) && (n = this.findByName(n.name).not(this.settings.ignore)[0]), n
  3953. },
  3954. checkable: function(n) {
  3955. return /radio|checkbox/i.test(n.type)
  3956. },
  3957. findByName: function(t) {
  3958. return n(this.currentForm).find("[name='" + t + "']")
  3959. },
  3960. getLength: function(t, i) {
  3961. switch (i.nodeName.toLowerCase()) {
  3962. case "select":
  3963. return n("option:selected", i).length;
  3964. case "input":
  3965. if (this.checkable(i)) return this.findByName(i.name).filter(":checked").length
  3966. }
  3967. return t.length
  3968. },
  3969. depend: function(n, t) {
  3970. return this.dependTypes[typeof n] ? this.dependTypes[typeof n](n, t) : !0
  3971. },
  3972. dependTypes: {
  3973. boolean: function(n) {
  3974. return n
  3975. },
  3976. string: function(t, i) {
  3977. return !!n(t, i.form).length
  3978. },
  3979. "function": function(n, t) {
  3980. return n(t)
  3981. }
  3982. },
  3983. optional: function(t) {
  3984. var i = this.elementValue(t);
  3985. return !n.validator.methods.required.call(this, i, t) && "dependency-mismatch"
  3986. },
  3987. startRequest: function(n) {
  3988. this.pending[n.name] || (this.pendingRequest++, this.pending[n.name] = !0)
  3989. },
  3990. stopRequest: function(t, i) {
  3991. this.pendingRequest--;
  3992. 0 > this.pendingRequest && (this.pendingRequest = 0);
  3993. delete this.pending[t.name];
  3994. i && 0 === this.pendingRequest && this.formSubmitted && this.form() ? (n(this.currentForm).submit(), this.formSubmitted = !1) : !i && 0 === this.pendingRequest && this.formSubmitted && (n(this.currentForm).triggerHandler("invalid-form", [this]), this.formSubmitted = !1)
  3995. },
  3996. previousValue: function(t) {
  3997. return n.data(t, "previousValue") || n.data(t, "previousValue", {
  3998. old: null,
  3999. valid: !0,
  4000. message: this.defaultMessage(t, "remote")
  4001. })
  4002. }
  4003. },
  4004. classRuleSettings: {
  4005. required: {
  4006. required: !0
  4007. },
  4008. email: {
  4009. email: !0
  4010. },
  4011. url: {
  4012. url: !0
  4013. },
  4014. date: {
  4015. date: !0
  4016. },
  4017. dateISO: {
  4018. dateISO: !0
  4019. },
  4020. number: {
  4021. number: !0
  4022. },
  4023. digits: {
  4024. digits: !0
  4025. },
  4026. creditcard: {
  4027. creditcard: !0
  4028. }
  4029. },
  4030. addClassRules: function(t, i) {
  4031. t.constructor === String ? this.classRuleSettings[t] = i : n.extend(this.classRuleSettings, t)
  4032. },
  4033. classRules: function(t) {
  4034. var i = {},
  4035. r = n(t).attr("class");
  4036. return r && n.each(r.split(" "), function() {
  4037. this in n.validator.classRuleSettings && n.extend(i, n.validator.classRuleSettings[this])
  4038. }), i
  4039. },
  4040. attributeRules: function(t) {
  4041. var u = {},
  4042. e = n(t),
  4043. f = e[0].getAttribute("type"),
  4044. r, i;
  4045. for (r in n.validator.methods) "required" === r ? (i = e.get(0).getAttribute(r), "" === i && (i = !0), i = !!i) : i = e.attr(r), /min|max/.test(r) && (null === f || /number|range|text/.test(f)) && (i = Number(i)), i ? u[r] = i : f === r && "range" !== f && (u[r] = !0);
  4046. return u.maxlength && /-1|2147483647|524288/.test(u.maxlength) && delete u.maxlength, u
  4047. },
  4048. dataRules: function(t) {
  4049. var i, r, u = {},
  4050. f = n(t);
  4051. for (i in n.validator.methods) r = f.data("rule-" + i.toLowerCase()), void 0 !== r && (u[i] = r);
  4052. return u
  4053. },
  4054. staticRules: function(t) {
  4055. var i = {},
  4056. r = n.data(t.form, "validator");
  4057. return r.settings.rules && (i = n.validator.normalizeRule(r.settings.rules[t.name]) || {}), i
  4058. },
  4059. normalizeRules: function(t, i) {
  4060. return n.each(t, function(r, u) {
  4061. if (u === !1) return delete t[r], void 0;
  4062. if (u.param || u.depends) {
  4063. var f = !0;
  4064. switch (typeof u.depends) {
  4065. case "string":
  4066. f = !!n(u.depends, i.form).length;
  4067. break;
  4068. case "function":
  4069. f = u.depends.call(i, i)
  4070. }
  4071. f ? t[r] = void 0 !== u.param ? u.param : !0 : delete t[r]
  4072. }
  4073. }), n.each(t, function(r, u) {
  4074. t[r] = n.isFunction(u) ? u(i) : u
  4075. }), n.each(["minlength", "maxlength"], function() {
  4076. t[this] && (t[this] = Number(t[this]))
  4077. }), n.each(["rangelength", "range"], function() {
  4078. var i;
  4079. t[this] && (n.isArray(t[this]) ? t[this] = [Number(t[this][0]), Number(t[this][1])] : "string" == typeof t[this] && (i = t[this].split(/[\s,]+/), t[this] = [Number(i[0]), Number(i[1])]))
  4080. }), n.validator.autoCreateRanges && (t.min && t.max && (t.range = [t.min, t.max], delete t.min, delete t.max), t.minlength && t.maxlength && (t.rangelength = [t.minlength, t.maxlength], delete t.minlength, delete t.maxlength)), t
  4081. },
  4082. normalizeRule: function(t) {
  4083. if ("string" == typeof t) {
  4084. var i = {};
  4085. n.each(t.split(/\s/), function() {
  4086. i[this] = !0
  4087. });
  4088. t = i
  4089. }
  4090. return t
  4091. },
  4092. addMethod: function(t, i, r) {
  4093. n.validator.methods[t] = i;
  4094. n.validator.messages[t] = void 0 !== r ? r : n.validator.messages[t];
  4095. 3 > i.length && n.validator.addClassRules(t, n.validator.normalizeRule(t))
  4096. },
  4097. methods: {
  4098. required: function(t, i, r) {
  4099. if (!this.depend(r, i)) return "dependency-mismatch";
  4100. if ("select" === i.nodeName.toLowerCase()) {
  4101. var u = n(i).val();
  4102. return u && u.length > 0
  4103. }
  4104. return this.checkable(i) ? this.getLength(t, i) > 0 : n.trim(t).length > 0
  4105. },
  4106. email: function(n, t) {
  4107. return this.optional(t) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(n)
  4108. },
  4109. url: function(n, t) {
  4110. return this.optional(t) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(n)
  4111. },
  4112. date: function(n, t) {
  4113. return this.optional(t) || !/Invalid|NaN/.test("" + new Date(n))
  4114. },
  4115. dateISO: function(n, t) {
  4116. return this.optional(t) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(n)
  4117. },
  4118. number: function(n, t) {
  4119. return this.optional(t) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(n)
  4120. },
  4121. digits: function(n, t) {
  4122. return this.optional(t) || /^\d+$/.test(n)
  4123. },
  4124. creditcard: function(n, t) {
  4125. var r, e;
  4126. if (this.optional(t)) return "dependency-mismatch";
  4127. if (/[^0-9 \-]+/.test(n)) return !1;
  4128. var f = 0,
  4129. i = 0,
  4130. u = !1;
  4131. for (n = n.replace(/\D/g, ""), r = n.length - 1; r >= 0; r--) e = n.charAt(r), i = parseInt(e, 10), u && (i *= 2) > 9 && (i -= 9), f += i, u = !u;
  4132. return 0 == f % 10
  4133. },
  4134. minlength: function(t, i, r) {
  4135. var u = n.isArray(t) ? t.length : this.getLength(n.trim(t), i);
  4136. return this.optional(i) || u >= r
  4137. },
  4138. maxlength: function(t, i, r) {
  4139. var u = n.isArray(t) ? t.length : this.getLength(n.trim(t), i);
  4140. return this.optional(i) || r >= u
  4141. },
  4142. rangelength: function(t, i, r) {
  4143. var u = n.isArray(t) ? t.length : this.getLength(n.trim(t), i);
  4144. return this.optional(i) || u >= r[0] && r[1] >= u
  4145. },
  4146. min: function(n, t, i) {
  4147. return this.optional(t) || n >= i
  4148. },
  4149. max: function(n, t, i) {
  4150. return this.optional(t) || i >= n
  4151. },
  4152. range: function(n, t, i) {
  4153. return this.optional(t) || n >= i[0] && i[1] >= n
  4154. },
  4155. equalTo: function(t, i, r) {
  4156. var u = n(r);
  4157. return this.settings.onfocusout && u.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
  4158. n(i).valid()
  4159. }), t === u.val()
  4160. },
  4161. remote: function(t, i, r) {
  4162. var f, u, e;
  4163. return this.optional(i) ? "dependency-mismatch" : (f = this.previousValue(i), this.settings.messages[i.name] || (this.settings.messages[i.name] = {}), f.originalMessage = this.settings.messages[i.name].remote, this.settings.messages[i.name].remote = f.message, r = "string" == typeof r && {
  4164. url: r
  4165. } || r, f.old === t) ? f.valid : (f.old = t, u = this, this.startRequest(i), e = {}, e[i.name] = t, n.ajax(n.extend(!0, {
  4166. url: r,
  4167. mode: "abort",
  4168. port: "validate" + i.name,
  4169. dataType: "json",
  4170. data: e,
  4171. success: function(r) {
  4172. var e, h, s, o;
  4173. u.settings.messages[i.name].remote = f.originalMessage;
  4174. e = r === !0 || "true" === r;
  4175. e ? (h = u.formSubmitted, u.prepareElement(i), u.formSubmitted = h, u.successList.push(i), delete u.invalid[i.name], u.showErrors()) : (s = {}, o = r || u.defaultMessage(i, "remote"), s[i.name] = f.message = n.isFunction(o) ? o(t) : o, u.invalid[i.name] = !0, u.showErrors(s));
  4176. f.valid = e;
  4177. u.stopRequest(i, e)
  4178. }
  4179. }, r)), "pending")
  4180. }
  4181. }
  4182. });
  4183. n.format = n.validator.format
  4184. }(jQuery),
  4185. function(n) {
  4186. var t = {},
  4187. i;
  4188. n.ajaxPrefilter ? n.ajaxPrefilter(function(n, i, r) {
  4189. var u = n.port;
  4190. "abort" === n.mode && (t[u] && t[u].abort(), t[u] = r)
  4191. }) : (i = n.ajax, n.ajax = function(r) {
  4192. var f = ("mode" in r ? r : n.ajaxSettings).mode,
  4193. u = ("port" in r ? r : n.ajaxSettings).port;
  4194. return "abort" === f ? (t[u] && t[u].abort(), t[u] = i.apply(this, arguments), t[u]) : i.apply(this, arguments)
  4195. })
  4196. }(jQuery),
  4197. function(n) {
  4198. n.extend(n.fn, {
  4199. validateDelegate: function(t, i, r) {
  4200. return this.bind(i, function(i) {
  4201. var u = n(i.target);
  4202. if (u.is(t)) return r.apply(u, arguments)
  4203. })
  4204. }
  4205. })
  4206. }(jQuery),
  4207. function(n) {
  4208. function i(n, t, i) {
  4209. n.rules[t] = i;
  4210. n.message && (n.messages[t] = n.message)
  4211. }
  4212. function h(n) {
  4213. return n.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g)
  4214. }
  4215. function f(n) {
  4216. return n.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1")
  4217. }
  4218. function e(n) {
  4219. return n.substr(0, n.lastIndexOf(".") + 1)
  4220. }
  4221. function o(n, t) {
  4222. return n.indexOf("*.") === 0 && (n = n.replace("*.", t)), n
  4223. }
  4224. function c(t, i) {
  4225. var r = n(this).find("[data-valmsg-for='" + f(i[0].name) + "']"),
  4226. u = r.attr("data-valmsg-replace"),
  4227. e = u ? n.parseJSON(u) !== !1 : null;
  4228. r.removeClass("field-validation-valid").addClass("field-validation-error");
  4229. t.data("unobtrusiveContainer", r);
  4230. e ? (r.empty(), t.removeClass("input-validation-error").appendTo(r)) : t.hide()
  4231. }
  4232. function l(t, i) {
  4233. var u = n(this).find("[data-valmsg-summary=true]"),
  4234. r = u.find("ul");
  4235. r && r.length && i.errorList.length && (r.empty(), u.addClass("validation-summary-errors").removeClass("validation-summary-valid"), n.each(i.errorList, function() {
  4236. n("<li />").html(this.message).appendTo(r)
  4237. }))
  4238. }
  4239. function a(t) {
  4240. var i = t.data("unobtrusiveContainer"),
  4241. r = i.attr("data-valmsg-replace"),
  4242. u = r ? n.parseJSON(r) : null;
  4243. i && (i.addClass("field-validation-valid").removeClass("field-validation-error"), t.removeData("unobtrusiveContainer"), u && i.empty())
  4244. }
  4245. function v() {
  4246. var t = n(this);
  4247. t.data("validator").resetForm();
  4248. t.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");
  4249. t.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")
  4250. }
  4251. function s(t) {
  4252. var i = n(t),
  4253. r = i.data(u),
  4254. f = n.proxy(v, t);
  4255. return r || (r = {
  4256. options: {
  4257. errorClass: "input-validation-error",
  4258. errorElement: "span",
  4259. errorPlacement: n.proxy(c, t),
  4260. invalidHandler: n.proxy(l, t),
  4261. messages: {},
  4262. rules: {},
  4263. success: n.proxy(a, t)
  4264. },
  4265. attachValidation: function() {
  4266. i.unbind("reset." + u, f).bind("reset." + u, f).validate(this.options)
  4267. },
  4268. validate: function() {
  4269. return i.validate(), i.valid()
  4270. }
  4271. }, i.data(u, r)), r
  4272. }
  4273. var r = n.validator,
  4274. t, u = "unobtrusiveValidation";
  4275. r.unobtrusive = {
  4276. adapters: [],
  4277. parseElement: function(t, i) {
  4278. var u = n(t),
  4279. f = u.parents("form")[0],
  4280. r, e, o;
  4281. f && (r = s(f), r.options.rules[t.name] = e = {}, r.options.messages[t.name] = o = {}, n.each(this.adapters, function() {
  4282. var i = "data-val-" + this.name,
  4283. r = u.attr(i),
  4284. s = {};
  4285. r !== undefined && (i += "-", n.each(this.params, function() {
  4286. s[this] = u.attr(i + this)
  4287. }), this.adapt({
  4288. element: t,
  4289. form: f,
  4290. message: r,
  4291. params: s,
  4292. rules: e,
  4293. messages: o
  4294. }))
  4295. }), n.extend(e, {
  4296. __dummy__: !0
  4297. }), i || r.attachValidation())
  4298. },
  4299. parse: function(t) {
  4300. var i = n(t).parents("form").andSelf().add(n(t).find("form")).filter("form");
  4301. n(t).find(":input[data-val=true]").each(function() {
  4302. r.unobtrusive.parseElement(this, !0)
  4303. });
  4304. i.each(function() {
  4305. var n = s(this);
  4306. n && n.attachValidation()
  4307. })
  4308. }
  4309. };
  4310. t = r.unobtrusive.adapters;
  4311. t.add = function(n, t, i) {
  4312. return i || (i = t, t = []), this.push({
  4313. name: n,
  4314. params: t,
  4315. adapt: i
  4316. }), this
  4317. };
  4318. t.addBool = function(n, t) {
  4319. return this.add(n, function(r) {
  4320. i(r, t || n, !0)
  4321. })
  4322. };
  4323. t.addMinMax = function(n, t, r, u, f, e) {
  4324. return this.add(n, [f || "min", e || "max"], function(n) {
  4325. var f = n.params.min,
  4326. e = n.params.max;
  4327. f && e ? i(n, u, [f, e]) : f ? i(n, t, f) : e && i(n, r, e)
  4328. })
  4329. };
  4330. t.addSingleVal = function(n, t, r) {
  4331. return this.add(n, [t || "val"], function(u) {
  4332. i(u, r || n, u.params[t])
  4333. })
  4334. };
  4335. r.addMethod("__dummy__", function() {
  4336. return !0
  4337. });
  4338. r.addMethod("regex", function(n, t, i) {
  4339. var r;
  4340. return this.optional(t) ? !0 : (r = new RegExp(i).exec(n), r && r.index === 0 && r[0].length === n.length)
  4341. });
  4342. r.addMethod("nonalphamin", function(n, t, i) {
  4343. var r;
  4344. return i && (r = n.match(/\W/g), r = r && r.length >= i), r
  4345. });
  4346. t.addSingleVal("accept", "exts").addSingleVal("regex", "pattern");
  4347. t.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
  4348. t.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
  4349. t.add("equalto", ["other"], function(t) {
  4350. var r = e(t.element.name),
  4351. u = t.params.other,
  4352. s = o(u, r),
  4353. h = n(t.form).find(":input[name='" + f(s) + "']")[0];
  4354. i(t, "equalTo", h)
  4355. });
  4356. t.add("required", function(n) {
  4357. (n.element.tagName.toUpperCase() !== "INPUT" || n.element.type.toUpperCase() !== "CHECKBOX") && i(n, "required", !0)
  4358. });
  4359. t.add("remote", ["url", "type", "additionalfields"], function(t) {
  4360. var r = {
  4361. url: t.params.url,
  4362. type: t.params.type || "GET",
  4363. data: {}
  4364. },
  4365. u = e(t.element.name);
  4366. n.each(h(t.params.additionalfields || t.element.name), function(i, e) {
  4367. var s = o(e, u);
  4368. r.data[s] = function() {
  4369. return n(t.form).find(":input[name='" + f(s) + "']").val()
  4370. }
  4371. });
  4372. i(t, "remote", r)
  4373. });
  4374. t.add("password", ["min", "nonalphamin", "regex"], function(n) {
  4375. n.params.min && i(n, "minlength", n.params.min);
  4376. n.params.nonalphamin && i(n, "nonalphamin", n.params.nonalphamin);
  4377. n.params.regex && i(n, "regex", n.params.regex)
  4378. });
  4379. n(function() {
  4380. r.unobtrusive.parse(document)
  4381. })
  4382. }(jQuery);
  4383. window.Modernizr = function(n, t, i) {
  4384. function a(n) {
  4385. c.cssText = n
  4386. }
  4387. function vt(n, t) {
  4388. return a(y.join(n + ";") + (t || ""))
  4389. }
  4390. function h(n, t) {
  4391. return typeof n === t
  4392. }
  4393. function v(n, t) {
  4394. return !!~("" + n).indexOf(t)
  4395. }
  4396. function lt(n, t) {
  4397. var u, r;
  4398. for (u in n)
  4399. if (r = n[u], !v(r, "-") && c[r] !== i) return t == "pfx" ? r : !0;
  4400. return !1
  4401. }
  4402. function yt(n, t, r) {
  4403. var f, u;
  4404. for (f in n)
  4405. if (u = t[n[f]], u !== i) return r === !1 ? n[f] : h(u, "function") ? u.bind(r || t) : u;
  4406. return !1
  4407. }
  4408. function f(n, t, i) {
  4409. var r = n.charAt(0).toUpperCase() + n.slice(1),
  4410. u = (n + " " + ot.join(r + " ") + r).split(" ");
  4411. return h(t, "string") || h(t, "undefined") ? lt(u, t) : (u = (n + " " + st.join(r + " ") + r).split(" "), yt(u, t, i))
  4412. }
  4413. function pt() {
  4414. u.input = function(i) {
  4415. for (var r = 0, u = i.length; r < u; r++) w[i[r]] = !!(i[r] in o);
  4416. return w.list && (w.list = !!(t.createElement("datalist") && n.HTMLDataListElement)), w
  4417. }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));
  4418. u.inputtypes = function(n) {
  4419. for (var u = 0, r, f, e, h = n.length; u < h; u++) o.setAttribute("type", f = n[u]), r = o.type !== "text", r && (o.value = g, o.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(f) && o.style.WebkitAppearance !== i ? (s.appendChild(o), e = t.defaultView, r = e.getComputedStyle && e.getComputedStyle(o, null).WebkitAppearance !== "textfield" && o.offsetHeight !== 0, s.removeChild(o)) : /^(search|tel)$/.test(f) || (r = /^(url|email)$/.test(f) ? o.checkValidity && o.checkValidity() === !1 : o.value != g)), ht[n[u]] = !!r;
  4420. return ht
  4421. }("search tel url email datetime date month week time datetime-local number range color".split(" "))
  4422. }
  4423. var u = {},
  4424. d = !0,
  4425. s = t.documentElement,
  4426. e = "modernizr",
  4427. ut = t.createElement(e),
  4428. c = ut.style,
  4429. o = t.createElement("input"),
  4430. g = ":)",
  4431. ft = {}.toString,
  4432. y = " -webkit- -moz- -o- -ms- ".split(" "),
  4433. et = "Webkit Moz O ms",
  4434. ot = et.split(" "),
  4435. st = et.toLowerCase().split(" "),
  4436. p = {
  4437. svg: "http://www.w3.org/2000/svg"
  4438. },
  4439. r = {},
  4440. ht = {},
  4441. w = {},
  4442. nt = [],
  4443. tt = nt.slice,
  4444. b, l = function(n, i, r, u) {
  4445. var l, a, c, v, f = t.createElement("div"),
  4446. h = t.body,
  4447. o = h || t.createElement("body");
  4448. if (parseInt(r, 10))
  4449. while (r--) c = t.createElement("div"), c.id = u ? u[r] : e + (r + 1), f.appendChild(c);
  4450. return l = ["&#173;", '<style id="s', e, '">', n, "<\/style>"].join(""), f.id = e, (h ? f : o).innerHTML += l, o.appendChild(f), h || (o.style.background = "", o.style.overflow = "hidden", v = s.style.overflow, s.style.overflow = "hidden", s.appendChild(o)), a = i(f, n), h ? f.parentNode.removeChild(f) : (o.parentNode.removeChild(o), s.style.overflow = v), !!a
  4451. },
  4452. at = function(t) {
  4453. var i = n.matchMedia || n.msMatchMedia,
  4454. r;
  4455. return i ? i(t).matches : (l("@media " + t + " { #" + e + " { position: absolute; } }", function(t) {
  4456. r = (n.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position == "absolute"
  4457. }), r)
  4458. },
  4459. ct = function() {
  4460. function r(r, u) {
  4461. u = u || t.createElement(n[r] || "div");
  4462. r = "on" + r;
  4463. var f = r in u;
  4464. return f || (u.setAttribute || (u = t.createElement("div")), u.setAttribute && u.removeAttribute && (u.setAttribute(r, ""), f = h(u[r], "function"), h(u[r], "undefined") || (u[r] = i), u.removeAttribute(r))), u = null, f
  4465. }
  4466. var n = {
  4467. select: "input",
  4468. change: "input",
  4469. submit: "form",
  4470. reset: "form",
  4471. error: "img",
  4472. load: "img",
  4473. abort: "img"
  4474. };
  4475. return r
  4476. }(),
  4477. it = {}.hasOwnProperty,
  4478. rt, k;
  4479. rt = h(it, "undefined") || h(it.call, "undefined") ? function(n, t) {
  4480. return t in n && h(n.constructor.prototype[t], "undefined")
  4481. } : function(n, t) {
  4482. return it.call(n, t)
  4483. };
  4484. Function.prototype.bind || (Function.prototype.bind = function(n) {
  4485. var t = this,
  4486. i, r;
  4487. if (typeof t != "function") throw new TypeError;
  4488. return i = tt.call(arguments, 1), r = function() {
  4489. var f, e, u;
  4490. return this instanceof r ? (f = function() {}, f.prototype = t.prototype, e = new f, u = t.apply(e, i.concat(tt.call(arguments))), Object(u) === u) ? u : e : t.apply(n, i.concat(tt.call(arguments)))
  4491. }, r
  4492. });
  4493. r.flexbox = function() {
  4494. return f("flexWrap")
  4495. };
  4496. r.flexboxlegacy = function() {
  4497. return f("boxDirection")
  4498. };
  4499. r.canvas = function() {
  4500. var n = t.createElement("canvas");
  4501. return !!(n.getContext && n.getContext("2d"))
  4502. };
  4503. r.canvastext = function() {
  4504. return !!(u.canvas && h(t.createElement("canvas").getContext("2d").fillText, "function"))
  4505. };
  4506. r.webgl = function() {
  4507. return !!n.WebGLRenderingContext
  4508. };
  4509. r.touch = function() {
  4510. var i;
  4511. return "ontouchstart" in n || n.DocumentTouch && t instanceof DocumentTouch ? i = !0 : l(["@media (", y.join("touch-enabled),("), e, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(n) {
  4512. i = n.offsetTop === 9
  4513. }), i
  4514. };
  4515. r.geolocation = function() {
  4516. return "geolocation" in navigator
  4517. };
  4518. r.postmessage = function() {
  4519. return !!n.postMessage
  4520. };
  4521. r.websqldatabase = function() {
  4522. return !!n.openDatabase
  4523. };
  4524. r.indexedDB = function() {
  4525. return !!f("indexedDB", n)
  4526. };
  4527. r.hashchange = function() {
  4528. return ct("hashchange", n) && (t.documentMode === i || t.documentMode > 7)
  4529. };
  4530. r.history = function() {
  4531. return !!(n.history && history.pushState)
  4532. };
  4533. r.draganddrop = function() {
  4534. var n = t.createElement("div");
  4535. return "draggable" in n || "ondragstart" in n && "ondrop" in n
  4536. };
  4537. r.websockets = function() {
  4538. return "WebSocket" in n || "MozWebSocket" in n
  4539. };
  4540. r.rgba = function() {
  4541. return a("background-color:rgba(150,255,150,.5)"), v(c.backgroundColor, "rgba")
  4542. };
  4543. r.hsla = function() {
  4544. return a("background-color:hsla(120,40%,100%,.5)"), v(c.backgroundColor, "rgba") || v(c.backgroundColor, "hsla")
  4545. };
  4546. r.multiplebgs = function() {
  4547. return a("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(c.background)
  4548. };
  4549. r.backgroundsize = function() {
  4550. return f("backgroundSize")
  4551. };
  4552. r.borderimage = function() {
  4553. return f("borderImage")
  4554. };
  4555. r.borderradius = function() {
  4556. return f("borderRadius")
  4557. };
  4558. r.boxshadow = function() {
  4559. return f("boxShadow")
  4560. };
  4561. r.textshadow = function() {
  4562. return t.createElement("div").style.textShadow === ""
  4563. };
  4564. r.opacity = function() {
  4565. return vt("opacity:.55"), /^0.55$/.test(c.opacity)
  4566. };
  4567. r.cssanimations = function() {
  4568. return f("animationName")
  4569. };
  4570. r.csscolumns = function() {
  4571. return f("columnCount")
  4572. };
  4573. r.cssgradients = function() {
  4574. var n = "background-image:";
  4575. return a((n + "-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));" + n) + y.join("linear-gradient(left top,#9f9, white);" + n)).slice(0, -n.length)), v(c.backgroundImage, "gradient")
  4576. };
  4577. r.cssreflections = function() {
  4578. return f("boxReflect")
  4579. };
  4580. r.csstransforms = function() {
  4581. return !!f("transform")
  4582. };
  4583. r.csstransforms3d = function() {
  4584. var n = !!f("perspective");
  4585. return n && "webkitPerspective" in s.style && l("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function(t) {
  4586. n = t.offsetLeft === 9 && t.offsetHeight === 3
  4587. }), n
  4588. };
  4589. r.csstransitions = function() {
  4590. return f("transition")
  4591. };
  4592. r.fontface = function() {
  4593. var n;
  4594. return l('@font-face {font-family:"font";src:url("https://")}', function(i, r) {
  4595. var f = t.getElementById("smodernizr"),
  4596. u = f.sheet || f.styleSheet,
  4597. e = u ? u.cssRules && u.cssRules[0] ? u.cssRules[0].cssText : u.cssText || "" : "";
  4598. n = /src/i.test(e) && e.indexOf(r.split(" ")[0]) === 0
  4599. }), n
  4600. };
  4601. r.generatedcontent = function() {
  4602. var n;
  4603. return l(["#", e, "{font:0/0 a}#", e, ':after{content:"', g, '";visibility:hidden;font:3px/1 a}'].join(""), function(t) {
  4604. n = t.offsetHeight >= 3
  4605. }), n
  4606. };
  4607. r.video = function() {
  4608. var i = t.createElement("video"),
  4609. n = !1;
  4610. try {
  4611. (n = !!i.canPlayType) && (n = new Boolean(n), n.ogg = i.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), n.h264 = i.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), n.webm = i.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""))
  4612. } catch (r) {}
  4613. return n
  4614. };
  4615. r.audio = function() {
  4616. var i = t.createElement("audio"),
  4617. n = !1;
  4618. try {
  4619. (n = !!i.canPlayType) && (n = new Boolean(n), n.ogg = i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), n.mp3 = i.canPlayType("audio/mpeg;").replace(/^no$/, ""), n.wav = i.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), n.m4a = (i.canPlayType("audio/x-m4a;") || i.canPlayType("audio/aac;")).replace(/^no$/, ""))
  4620. } catch (r) {}
  4621. return n
  4622. };
  4623. r.localstorage = function() {
  4624. try {
  4625. return localStorage.setItem(e, e), localStorage.removeItem(e), !0
  4626. } catch (n) {
  4627. return !1
  4628. }
  4629. };
  4630. r.sessionstorage = function() {
  4631. try {
  4632. return sessionStorage.setItem(e, e), sessionStorage.removeItem(e), !0
  4633. } catch (n) {
  4634. return !1
  4635. }
  4636. };
  4637. r.webworkers = function() {
  4638. return !!n.Worker
  4639. };
  4640. r.applicationcache = function() {
  4641. return !!n.applicationCache
  4642. };
  4643. r.svg = function() {
  4644. return !!t.createElementNS && !!t.createElementNS(p.svg, "svg").createSVGRect
  4645. };
  4646. r.inlinesvg = function() {
  4647. var n = t.createElement("div");
  4648. return n.innerHTML = "<svg/>", (n.firstChild && n.firstChild.namespaceURI) == p.svg
  4649. };
  4650. r.smil = function() {
  4651. return !!t.createElementNS && /SVGAnimate/.test(ft.call(t.createElementNS(p.svg, "animate")))
  4652. };
  4653. r.svgclippaths = function() {
  4654. return !!t.createElementNS && /SVGClipPath/.test(ft.call(t.createElementNS(p.svg, "clipPath")))
  4655. };
  4656. for (k in r) rt(r, k) && (b = k.toLowerCase(), u[b] = r[k](), nt.push((u[b] ? "" : "no-") + b));
  4657. return u.input || pt(), u.addTest = function(n, t) {
  4658. if (typeof n == "object")
  4659. for (var r in n) rt(n, r) && u.addTest(r, n[r]);
  4660. else {
  4661. if (n = n.toLowerCase(), u[n] !== i) return u;
  4662. t = typeof t == "function" ? t() : t;
  4663. typeof d != "undefined" && d && (s.className += " " + (t ? "" : "no-") + n);
  4664. u[n] = t
  4665. }
  4666. return u
  4667. }, a(""), ut = o = null,
  4668. function(n, t) {
  4669. function p(n, t) {
  4670. var i = n.createElement("p"),
  4671. r = n.getElementsByTagName("head")[0] || n.documentElement;
  4672. return i.innerHTML = "x<style>" + t + "<\/style>", r.insertBefore(i.lastChild, r.firstChild)
  4673. }
  4674. function c() {
  4675. var n = r.elements;
  4676. return typeof n == "string" ? n.split(" ") : n
  4677. }
  4678. function o(n) {
  4679. var t = h[n[s]];
  4680. return t || (t = {}, e++, n[s] = e, h[e] = t), t
  4681. }
  4682. function l(n, r, u) {
  4683. if (r || (r = t), i) return r.createElement(n);
  4684. u || (u = o(r));
  4685. var f;
  4686. return f = u.cache[n] ? u.cache[n].cloneNode() : y.test(n) ? (u.cache[n] = u.createElem(n)).cloneNode() : u.createElem(n), f.canHaveChildren && !v.test(n) ? u.frag.appendChild(f) : f
  4687. }
  4688. function w(n, r) {
  4689. if (n || (n = t), i) return n.createDocumentFragment();
  4690. r = r || o(n);
  4691. for (var f = r.frag.cloneNode(), u = 0, e = c(), s = e.length; u < s; u++) f.createElement(e[u]);
  4692. return f
  4693. }
  4694. function b(n, t) {
  4695. t.cache || (t.cache = {}, t.createElem = n.createElement, t.createFrag = n.createDocumentFragment, t.frag = t.createFrag());
  4696. n.createElement = function(i) {
  4697. return r.shivMethods ? l(i, n, t) : t.createElem(i)
  4698. };
  4699. n.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + c().join().replace(/\w+/g, function(n) {
  4700. return t.createElem(n), t.frag.createElement(n), 'c("' + n + '")'
  4701. }) + ");return n}")(r, t.frag)
  4702. }
  4703. function a(n) {
  4704. n || (n = t);
  4705. var u = o(n);
  4706. return !r.shivCSS || f || u.hasCSS || (u.hasCSS = !!p(n, "article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")), i || b(n, u), n
  4707. }
  4708. var u = n.html5 || {},
  4709. v = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
  4710. y = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
  4711. f, s = "_html5shiv",
  4712. e = 0,
  4713. h = {},
  4714. i, r;
  4715. (function() {
  4716. try {
  4717. var n = t.createElement("a");
  4718. n.innerHTML = "<xyz><\/xyz>";
  4719. f = "hidden" in n;
  4720. i = n.childNodes.length == 1 || function() {
  4721. t.createElement("a");
  4722. var n = t.createDocumentFragment();
  4723. return typeof n.cloneNode == "undefined" || typeof n.createDocumentFragment == "undefined" || typeof n.createElement == "undefined"
  4724. }()
  4725. } catch (r) {
  4726. f = !0;
  4727. i = !0
  4728. }
  4729. })();
  4730. r = {
  4731. elements: u.elements || "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
  4732. shivCSS: u.shivCSS !== !1,
  4733. supportsUnknownElements: i,
  4734. shivMethods: u.shivMethods !== !1,
  4735. type: "default",
  4736. shivDocument: a,
  4737. createElement: l,
  4738. createDocumentFragment: w
  4739. };
  4740. n.html5 = r;
  4741. a(t)
  4742. }(this, t), u._version = "2.6.2", u._prefixes = y, u._domPrefixes = st, u._cssomPrefixes = ot, u.mq = at, u.hasEvent = ct, u.testProp = function(n) {
  4743. return lt([n])
  4744. }, u.testAllProps = f, u.testStyles = l, u.prefixed = function(n, t, i) {
  4745. return t ? f(n, t, i) : f(n, "pfx")
  4746. }, s.className = s.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (d ? " js " + nt.join(" ") : ""), u
  4747. }(this, this.document),
  4748. function(n, t, i) {
  4749. function l(n) {
  4750. var t = {},
  4751. r = /^jQuery\d+$/;
  4752. return i.each(n.attributes, function(n, i) {
  4753. i.specified && !r.test(i.name) && (t[i.name] = i.value)
  4754. }), t
  4755. }
  4756. function f(n, r) {
  4757. var f = this,
  4758. u = i(f);
  4759. if (f.value == u.attr("placeholder") && u.hasClass("placeholder"))
  4760. if (u.data("placeholder-password")) {
  4761. if (u = u.hide().next().show().attr("id", u.removeAttr("id").data("placeholder-id")), n === !0) return u[0].value = r;
  4762. u.focus()
  4763. } else f.value = "", u.removeClass("placeholder"), f == t.activeElement && f.select()
  4764. }
  4765. function s() {
  4766. var t, r = this,
  4767. n = i(r),
  4768. e = n,
  4769. u = this.id;
  4770. if (r.value == "") {
  4771. if (r.type == "password") {
  4772. if (!n.data("placeholder-textinput")) {
  4773. try {
  4774. t = n.clone().attr({
  4775. type: "text"
  4776. })
  4777. } catch (o) {
  4778. t = i("<input>").attr(i.extend(l(this), {
  4779. type: "text"
  4780. }))
  4781. }
  4782. t.removeAttr("name").data({
  4783. "placeholder-password": !0,
  4784. "placeholder-id": u
  4785. }).bind("focus.placeholder", f);
  4786. n.data({
  4787. "placeholder-textinput": t,
  4788. "placeholder-id": u
  4789. }).before(t)
  4790. }
  4791. n = n.removeAttr("id").hide().prev().attr("id", u).show()
  4792. }
  4793. n.addClass("placeholder");
  4794. n[0].value = n.attr("placeholder")
  4795. } else n.removeClass("placeholder")
  4796. }
  4797. var u = "placeholder" in t.createElement("input"),
  4798. e = "placeholder" in t.createElement("textarea"),
  4799. h = i.fn,
  4800. c = i.valHooks,
  4801. o, r;
  4802. u && e ? (r = h.placeholder = function() {
  4803. return this
  4804. }, r.input = r.textarea = !0) : (r = h.placeholder = function() {
  4805. var n = this;
  4806. return n.filter((u ? "textarea" : ":input") + "[placeholder]").not(".placeholder").bind({
  4807. "focus.placeholder": f,
  4808. "blur.placeholder": s
  4809. }).data("placeholder-enabled", !0).trigger("blur.placeholder"), n
  4810. }, r.input = u, r.textarea = e, o = {
  4811. get: function(n) {
  4812. var t = i(n);
  4813. return t.data("placeholder-enabled") && t.hasClass("placeholder") ? "" : n.value
  4814. },
  4815. set: function(n, r) {
  4816. var u = i(n);
  4817. return u.data("placeholder-enabled") ? (r == "" ? (n.value = r, n != t.activeElement && s.call(n)) : u.hasClass("placeholder") ? f.call(n, !0, r) || (n.value = r) : n.value = r, u) : n.value = r
  4818. }
  4819. }, u || (c.input = o), e || (c.textarea = o), i(function() {
  4820. i(t).delegate("form", "submit.placeholder", function() {
  4821. var n = i(".placeholder", this).each(f);
  4822. setTimeout(function() {
  4823. n.each(s)
  4824. }, 10)
  4825. })
  4826. }), i(n).bind("beforeunload.placeholder", function() {
  4827. i(".placeholder").each(function() {
  4828. this.value = ""
  4829. })
  4830. }))
  4831. }(this, document, jQuery),
  4832. function(n) {
  4833. "function" == typeof define && define.amd ? define(["jquery"], n) : n(jQuery)
  4834. }(function(n) {
  4835. function r(n) {
  4836. return n
  4837. }
  4838. function u(n) {
  4839. return decodeURIComponent(n.replace(f, " "))
  4840. }
  4841. function i(n) {
  4842. 0 === n.indexOf('"') && (n = n.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
  4843. try {
  4844. return t.json ? JSON.parse(n) : n
  4845. } catch (i) {}
  4846. }
  4847. var f = /\+/g,
  4848. t = n.cookie = function(f, e, o) {
  4849. var l, s;
  4850. if (void 0 !== e) return (o = n.extend({}, t.defaults, o), "number" == typeof o.expires) && (l = o.expires, s = o.expires = new Date, s.setDate(s.getDate() + l)), e = t.json ? JSON.stringify(e) : e + "", document.cookie = [t.raw ? f : encodeURIComponent(f), "=", t.raw ? e : encodeURIComponent(e), o.expires ? "; expires=" + o.expires.toUTCString() : "", o.path ? "; path=" + o.path : "", o.domain ? "; domain=" + o.domain : "", o.secure ? "; secure" : ""].join("");
  4851. for (var a = t.raw ? r : u, v = document.cookie.split("; "), h = f ? void 0 : {}, c = 0, b = v.length; b > c; c++) {
  4852. var y = v[c].split("="),
  4853. p = a(y.shift()),
  4854. w = a(y.join("="));
  4855. if (f && f === p) {
  4856. h = i(w);
  4857. break
  4858. }
  4859. f || (h[p] = i(w))
  4860. }
  4861. return h
  4862. };
  4863. t.defaults = {};
  4864. n.removeCookie = function(t, i) {
  4865. return void 0 !== n.cookie(t) ? (n.cookie(t, "", n.extend(i, {
  4866. expires: -1
  4867. })), !0) : !1
  4868. }
  4869. });
  4870. typeof JSON != "object" && (JSON = {}),
  4871. function() {
  4872. "use strict";
  4873. function i(n) {
  4874. return n < 10 ? "0" + n : n
  4875. }
  4876. function o(n) {
  4877. return e.lastIndex = 0, e.test(n) ? '"' + n.replace(e, function(n) {
  4878. var t = s[n];
  4879. return typeof t == "string" ? t : "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
  4880. }) + '"' : '"' + n + '"'
  4881. }
  4882. function u(i, f) {
  4883. var s, l, h, a, v = n,
  4884. c, e = f[i];
  4885. e && typeof e == "object" && typeof e.toJSON == "function" && (e = e.toJSON(i));
  4886. typeof t == "function" && (e = t.call(f, i, e));
  4887. switch (typeof e) {
  4888. case "string":
  4889. return o(e);
  4890. case "number":
  4891. return isFinite(e) ? String(e) : "null";
  4892. case "boolean":
  4893. case "null":
  4894. return String(e);
  4895. case "object":
  4896. if (!e) return "null";
  4897. if (n += r, c = [], Object.prototype.toString.apply(e) === "[object Array]") {
  4898. for (a = e.length, s = 0; s < a; s += 1) c[s] = u(s, e) || "null";
  4899. return h = c.length === 0 ? "[]" : n ? "[\n" + n + c.join(",\n" + n) + "\n" + v + "]" : "[" + c.join(",") + "]", n = v, h
  4900. }
  4901. if (t && typeof t == "object")
  4902. for (a = t.length, s = 0; s < a; s += 1) typeof t[s] == "string" && (l = t[s], h = u(l, e), h && c.push(o(l) + (n ? ": " : ":") + h));
  4903. else
  4904. for (l in e) Object.prototype.hasOwnProperty.call(e, l) && (h = u(l, e), h && c.push(o(l) + (n ? ": " : ":") + h));
  4905. return h = c.length === 0 ? "{}" : n ? "{\n" + n + c.join(",\n" + n) + "\n" + v + "}" : "{" + c.join(",") + "}", n = v, h
  4906. }
  4907. }
  4908. typeof Date.prototype.toJSON != "function" && (Date.prototype.toJSON = function() {
  4909. return isFinite(this.valueOf()) ? this.getUTCFullYear() + "-" + i(this.getUTCMonth() + 1) + "-" + i(this.getUTCDate()) + "T" + i(this.getUTCHours()) + ":" + i(this.getUTCMinutes()) + ":" + i(this.getUTCSeconds()) + "Z" : null
  4910. }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {
  4911. return this.valueOf()
  4912. });
  4913. var f = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  4914. e = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  4915. n, r, s = {
  4916. "\b": "\\b",
  4917. "\t": "\\t",
  4918. "\n": "\\n",
  4919. "\f": "\\f",
  4920. "\r": "\\r",
  4921. '"': '\\"',
  4922. "\\": "\\\\"
  4923. },
  4924. t;
  4925. typeof JSON.stringify != "function" && (JSON.stringify = function(i, f, e) {
  4926. var o;
  4927. if (n = "", r = "", typeof e == "number")
  4928. for (o = 0; o < e; o += 1) r += " ";
  4929. else typeof e == "string" && (r = e);
  4930. if (t = f, f && typeof f != "function" && (typeof f != "object" || typeof f.length != "number")) throw new Error("JSON.stringify");
  4931. return u("", {
  4932. "": i
  4933. })
  4934. });
  4935. typeof JSON.parse != "function" && (JSON.parse = function(text, reviver) {
  4936. function walk(n, t) {
  4937. var r, u, i = n[t];
  4938. if (i && typeof i == "object")
  4939. for (r in i) Object.prototype.hasOwnProperty.call(i, r) && (u = walk(i, r), u !== undefined ? i[r] = u : delete i[r]);
  4940. return reviver.call(n, t, i)
  4941. }
  4942. var j;
  4943. if (text = String(text), f.lastIndex = 0, f.test(text) && (text = text.replace(f, function(n) {
  4944. return "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
  4945. })), /^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return j = eval("(" + text + ")"), typeof reviver == "function" ? walk({
  4946. "": j
  4947. }, "") : j;
  4948. throw new SyntaxError("JSON.parse");
  4949. })
  4950. }(),
  4951. function() {
  4952. function ut() {
  4953. var u = !1,
  4954. n;
  4955. if ("localStorage" in window) try {
  4956. window.localStorage.setItem("_tmptest", "tmpval");
  4957. u = !0;
  4958. window.localStorage.removeItem("_tmptest")
  4959. } catch (f) {}
  4960. if (u) try {
  4961. window.localStorage && (i = window.localStorage, r = "localStorage", s = i.jStorage_update)
  4962. } catch (e) {} else if ("globalStorage" in window) try {
  4963. window.globalStorage && (i = window.globalStorage[window.location.hostname], r = "globalStorage", s = i.jStorage_update)
  4964. } catch (o) {} else if (t = document.createElement("link"), t.addBehavior) {
  4965. t.style.behavior = "url(#default#userData)";
  4966. document.getElementsByTagName("head")[0].appendChild(t);
  4967. try {
  4968. t.load("jStorage")
  4969. } catch (h) {
  4970. t.setAttribute("jStorage", "{}");
  4971. t.save("jStorage");
  4972. t.load("jStorage")
  4973. }
  4974. n = "{}";
  4975. try {
  4976. n = t.getAttribute("jStorage")
  4977. } catch (c) {}
  4978. try {
  4979. s = t.getAttribute("jStorage_update")
  4980. } catch (a) {}
  4981. i.jStorage = n;
  4982. r = "userDataBehavior"
  4983. } else {
  4984. t = null;
  4985. return
  4986. }
  4987. it();
  4988. p();
  4989. y("local");
  4990. y("session");
  4991. ft();
  4992. rt();
  4993. "addEventListener" in window && window.addEventListener("pageshow", function(n) {
  4994. n.persisted && l()
  4995. }, !1)
  4996. }
  4997. function y(t, i) {
  4998. function l() {
  4999. if (t == "session") try {
  5000. o = u.parse(window.name || "{}")
  5001. } catch (n) {
  5002. o = {}
  5003. }
  5004. }
  5005. function a() {
  5006. t == "session" && (window.name = u.stringify(o))
  5007. }
  5008. var c = !1,
  5009. s = 0,
  5010. h, f, o = {},
  5011. v = Math.random();
  5012. if (i || typeof window[t + "Storage"] == "undefined") {
  5013. if (t == "local" && window.globalStorage) {
  5014. localStorage = window.globalStorage[window.location.hostname];
  5015. return
  5016. }
  5017. if (r == "userDataBehavior") {
  5018. i && window[t + "Storage"] && window[t + "Storage"].parentNode && window[t + "Storage"].parentNode.removeChild(window[t + "Storage"]);
  5019. f = document.createElement("button");
  5020. document.getElementsByTagName("head")[0].appendChild(f);
  5021. t == "local" ? o = n : t == "session" && l();
  5022. for (h in o) o.hasOwnProperty(h) && h != "__jstorage_meta" && h != "length" && typeof o[h] != "undefined" && (h in f || s++, f[h] = o[h]);
  5023. f.length = s;
  5024. f.key = function(n) {
  5025. var i = 0,
  5026. t;
  5027. l();
  5028. for (t in o)
  5029. if (o.hasOwnProperty(t) && t != "__jstorage_meta" && t != "length" && typeof o[t] != "undefined") {
  5030. if (i == n) return t;
  5031. i++
  5032. }
  5033. };
  5034. f.getItem = function(n) {
  5035. return (l(), t == "session") ? o[n] : e.jStorage.get(n)
  5036. };
  5037. f.setItem = function(n, t) {
  5038. typeof t != "undefined" && (f[n] = (t || "").toString())
  5039. };
  5040. f.removeItem = function(n) {
  5041. if (t == "local") return e.jStorage.deleteKey(n);
  5042. f[n] = undefined;
  5043. c = !0;
  5044. n in f && f.removeAttribute(n);
  5045. c = !1
  5046. };
  5047. f.clear = function() {
  5048. if (t == "session") {
  5049. window.name = "";
  5050. y("session", !0);
  5051. return
  5052. }
  5053. e.jStorage.flush()
  5054. };
  5055. t == "local" && (d = function(n, t) {
  5056. n != "length" && (c = !0, typeof t == "undefined" ? n in f && (s--, f.removeAttribute(n)) : (n in f || s++, f[n] = (t || "").toString()), f.length = s, c = !1)
  5057. });
  5058. f.attachEvent("onpropertychange", function(n) {
  5059. if (n.propertyName != "length" && !c && n.propertyName != "length") {
  5060. if (t == "local") n.propertyName in o || typeof f[n.propertyName] == "undefined" || s++;
  5061. else if (t == "session") {
  5062. l();
  5063. typeof f[n.propertyName] == "undefined" || n.propertyName in o ? typeof f[n.propertyName] == "undefined" && n.propertyName in o ? (delete o[n.propertyName], s--) : o[n.propertyName] = f[n.propertyName] : (o[n.propertyName] = f[n.propertyName], s++);
  5064. a();
  5065. f.length = s;
  5066. return
  5067. }
  5068. e.jStorage.set(n.propertyName, f[n.propertyName]);
  5069. f.length = s
  5070. }
  5071. });
  5072. window[t + "Storage"] = f
  5073. }
  5074. }
  5075. }
  5076. function tt() {
  5077. var n = "{}";
  5078. if (r == "userDataBehavior") {
  5079. t.load("jStorage");
  5080. try {
  5081. n = t.getAttribute("jStorage")
  5082. } catch (u) {}
  5083. try {
  5084. s = t.getAttribute("jStorage_update")
  5085. } catch (f) {}
  5086. i.jStorage = n
  5087. }
  5088. it();
  5089. p();
  5090. rt()
  5091. }
  5092. function ft() {
  5093. r == "localStorage" || r == "globalStorage" ? "addEventListener" in window ? window.addEventListener("storage", l, !1) : document.attachEvent("onstorage", l) : r == "userDataBehavior" && setInterval(l, 1e3)
  5094. }
  5095. function l() {
  5096. var n;
  5097. clearTimeout(g);
  5098. g = setTimeout(function() {
  5099. if (r == "localStorage" || r == "globalStorage") n = i.jStorage_update;
  5100. else if (r == "userDataBehavior") {
  5101. t.load("jStorage");
  5102. try {
  5103. n = t.getAttribute("jStorage_update")
  5104. } catch (u) {}
  5105. }
  5106. n && n != s && (s = n, et())
  5107. }, 25)
  5108. }
  5109. function et() {
  5110. var i = u.parse(u.stringify(n.__jstorage_meta.CRC32)),
  5111. r, t, f, e;
  5112. tt();
  5113. r = u.parse(u.stringify(n.__jstorage_meta.CRC32));
  5114. f = [];
  5115. e = [];
  5116. for (t in i)
  5117. if (i.hasOwnProperty(t)) {
  5118. if (!r[t]) {
  5119. e.push(t);
  5120. continue
  5121. }
  5122. i[t] != r[t] && String(i[t]).substr(0, 2) == "2." && f.push(t)
  5123. }
  5124. for (t in r) r.hasOwnProperty(t) && (i[t] || f.push(t));
  5125. c(f, "updated");
  5126. c(e, "deleted")
  5127. }
  5128. function c(n, t) {
  5129. var u, i, e, r, o;
  5130. if (n = [].concat(n || []), t == "flushed") {
  5131. n = [];
  5132. for (u in f) f.hasOwnProperty(u) && n.push(u);
  5133. t = "deleted"
  5134. }
  5135. for (i = 0, e = n.length; i < e; i++)
  5136. if (f[n[i]])
  5137. for (r = 0, o = f[n[i]].length; r < o; r++) f[n[i]][r](n[i], t)
  5138. }
  5139. function a() {
  5140. var n = (+new Date).toString();
  5141. r == "localStorage" || r == "globalStorage" ? i.jStorage_update = n : r == "userDataBehavior" && (t.setAttribute("jStorage_update", n), t.save("jStorage"));
  5142. l()
  5143. }
  5144. function it() {
  5145. if (i.jStorage) try {
  5146. n = u.parse(String(i.jStorage))
  5147. } catch (t) {
  5148. i.jStorage = "{}"
  5149. } else i.jStorage = "{}";
  5150. w = i.jStorage ? String(i.jStorage).length : 0;
  5151. n.__jstorage_meta || (n.__jstorage_meta = {});
  5152. n.__jstorage_meta.CRC32 || (n.__jstorage_meta.CRC32 = {})
  5153. }
  5154. function v() {
  5155. st();
  5156. try {
  5157. i.jStorage = u.stringify(n);
  5158. t && (t.setAttribute("jStorage", i.jStorage), t.save("jStorage"));
  5159. w = i.jStorage ? String(i.jStorage).length : 0
  5160. } catch (r) {}
  5161. }
  5162. function o(n) {
  5163. if (!n || typeof n != "string" && typeof n != "number") throw new TypeError("Key name must be string or numeric");
  5164. if (n == "__jstorage_meta") throw new TypeError("Reserved key name");
  5165. return !0
  5166. }
  5167. function p() {
  5168. var u, t, i, f, r = Infinity,
  5169. e = !1,
  5170. o = [];
  5171. if (clearTimeout(nt), n.__jstorage_meta && typeof n.__jstorage_meta.TTL == "object") {
  5172. u = +new Date;
  5173. i = n.__jstorage_meta.TTL;
  5174. f = n.__jstorage_meta.CRC32;
  5175. for (t in i) i.hasOwnProperty(t) && (i[t] <= u ? (delete i[t], delete f[t], delete n[t], e = !0, o.push(t)) : i[t] < r && (r = i[t]));
  5176. r != Infinity && (nt = setTimeout(p, r - u));
  5177. e && (v(), a(), c(o, "deleted"))
  5178. }
  5179. }
  5180. function rt() {
  5181. var t, r, i;
  5182. if (n.__jstorage_meta.PubSub) {
  5183. for (r = b, i = len = n.__jstorage_meta.PubSub.length - 1; i >= 0; i--) t = n.__jstorage_meta.PubSub[i], t[0] > b && (r = t[0], ot(t[1], t[2]));
  5184. b = r
  5185. }
  5186. }
  5187. function ot(n, t) {
  5188. if (h[n])
  5189. for (var i = 0, r = h[n].length; i < r; i++) h[n][i](n, u.parse(u.stringify(t)))
  5190. }
  5191. function st() {
  5192. var i, t, r;
  5193. if (n.__jstorage_meta.PubSub) {
  5194. for (i = +new Date - 2e3, t = 0, r = n.__jstorage_meta.PubSub.length; t < r; t++)
  5195. if (n.__jstorage_meta.PubSub[t][0] <= i) {
  5196. n.__jstorage_meta.PubSub.splice(t, n.__jstorage_meta.PubSub.length - t);
  5197. break
  5198. }
  5199. n.__jstorage_meta.PubSub.length || delete n.__jstorage_meta.PubSub
  5200. }
  5201. }
  5202. function ht(t, i) {
  5203. n.__jstorage_meta || (n.__jstorage_meta = {});
  5204. n.__jstorage_meta.PubSub || (n.__jstorage_meta.PubSub = []);
  5205. n.__jstorage_meta.PubSub.unshift([+new Date, t, i]);
  5206. v();
  5207. a()
  5208. }
  5209. function ct(n, t) {
  5210. for (var f = n.length, i = t ^ f, u = 0, r; f >= 4;) r = n.charCodeAt(u) & 255 | (n.charCodeAt(++u) & 255) << 8 | (n.charCodeAt(++u) & 255) << 16 | (n.charCodeAt(++u) & 255) << 24, r = (r & 65535) * 1540483477 + (((r >>> 16) * 1540483477 & 65535) << 16), r ^= r >>> 24, r = (r & 65535) * 1540483477 + (((r >>> 16) * 1540483477 & 65535) << 16), i = (i & 65535) * 1540483477 + (((i >>> 16) * 1540483477 & 65535) << 16) ^ r, f -= 4, ++u;
  5211. switch (f) {
  5212. case 3:
  5213. i ^= (n.charCodeAt(u + 2) & 255) << 16;
  5214. case 2:
  5215. i ^= (n.charCodeAt(u + 1) & 255) << 8;
  5216. case 1:
  5217. i ^= n.charCodeAt(u) & 255;
  5218. i = (i & 65535) * 1540483477 + (((i >>> 16) * 1540483477 & 65535) << 16)
  5219. }
  5220. return i ^= i >>> 13, i = (i & 65535) * 1540483477 + (((i >>> 16) * 1540483477 & 65535) << 16), i ^= i >>> 15, i >>> 0
  5221. }
  5222. var e = window.jQuery || window.$ || (window.$ = {}),
  5223. u = {
  5224. parse: window.JSON && (window.JSON.parse || window.JSON.decode) || String.prototype.evalJSON && function(n) {
  5225. return String(n).evalJSON()
  5226. } || e.parseJSON || e.evalJSON,
  5227. stringify: Object.toJSON || window.JSON && (window.JSON.stringify || window.JSON.encode) || e.toJSON
  5228. };
  5229. if (!u.parse || !u.stringify) throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");
  5230. var n = {},
  5231. i = {
  5232. jStorage: "{}"
  5233. },
  5234. t = null,
  5235. w = 0,
  5236. r = !1,
  5237. f = {},
  5238. g = !1,
  5239. s = 0,
  5240. h = {},
  5241. b = +new Date,
  5242. nt, k = {
  5243. isXML: function(n) {
  5244. var t = (n ? n.ownerDocument || n : 0).documentElement;
  5245. return t ? t.nodeName !== "HTML" : !1
  5246. },
  5247. encode: function(n) {
  5248. if (!this.isXML(n)) return !1;
  5249. try {
  5250. return (new XMLSerializer).serializeToString(n)
  5251. } catch (t) {
  5252. try {
  5253. return n.xml
  5254. } catch (i) {}
  5255. }
  5256. return !1
  5257. },
  5258. decode: function(n) {
  5259. var i = "DOMParser" in window && (new DOMParser).parseFromString || window.ActiveXObject && function(n) {
  5260. var t = new ActiveXObject("Microsoft.XMLDOM");
  5261. return t.async = "false", t.loadXML(n), t
  5262. },
  5263. t;
  5264. return i ? (t = i.call("DOMParser" in window && new DOMParser || window, n, "text/xml"), this.isXML(t) ? t : !1) : !1
  5265. }
  5266. },
  5267. d = function() {};
  5268. e.jStorage = {
  5269. version: "0.3.1",
  5270. set: function(t, i, r) {
  5271. if (o(t), r = r || {}, typeof i == "undefined") return this.deleteKey(t), i;
  5272. if (k.isXML(i)) i = {
  5273. _is_xml: !0,
  5274. xml: k.encode(i)
  5275. };
  5276. else {
  5277. if (typeof i == "function") return undefined;
  5278. i && typeof i == "object" && (i = u.parse(u.stringify(i)))
  5279. }
  5280. return n[t] = i, n.__jstorage_meta.CRC32[t] = "2." + ct(u.stringify(i)), this.setTTL(t, r.TTL || 0), d(t, i), c(t, "updated"), i
  5281. },
  5282. get: function(t, i) {
  5283. return (o(t), t in n) ? n[t] && typeof n[t] == "object" && n[t]._is_xml ? k.decode(n[t].xml) : n[t] : typeof i == "undefined" ? null : i
  5284. },
  5285. deleteKey: function(t) {
  5286. return (o(t), t in n) ? (delete n[t], typeof n.__jstorage_meta.TTL == "object" && t in n.__jstorage_meta.TTL && delete n.__jstorage_meta.TTL[t], delete n.__jstorage_meta.CRC32[t], d(t, undefined), v(), a(), c(t, "deleted"), !0) : !1
  5287. },
  5288. setTTL: function(t, i) {
  5289. var r = +new Date;
  5290. return (o(t), i = Number(i) || 0, t in n) ? (n.__jstorage_meta.TTL || (n.__jstorage_meta.TTL = {}), i > 0 ? n.__jstorage_meta.TTL[t] = r + i : delete n.__jstorage_meta.TTL[t], v(), p(), a(), !0) : !1
  5291. },
  5292. getTTL: function(t) {
  5293. var r = +new Date,
  5294. i;
  5295. return (o(t), t in n && n.__jstorage_meta.TTL && n.__jstorage_meta.TTL[t]) ? (i = n.__jstorage_meta.TTL[t] - r, i || 0) : 0
  5296. },
  5297. flush: function() {
  5298. return n = {
  5299. __jstorage_meta: {
  5300. CRC32: {}
  5301. }
  5302. }, y("local", !0), v(), a(), c(null, "flushed"), !0
  5303. },
  5304. storageObj: function() {
  5305. function t() {}
  5306. return t.prototype = n, new t
  5307. },
  5308. index: function() {
  5309. var i = [];
  5310. for (var t in n) n.hasOwnProperty(t) && t != "__jstorage_meta" && i.push(t);
  5311. return i
  5312. },
  5313. storageSize: function() {
  5314. return w
  5315. },
  5316. currentBackend: function() {
  5317. return r
  5318. },
  5319. storageAvailable: function() {
  5320. return !!r
  5321. },
  5322. listenKeyChange: function(n, t) {
  5323. o(n);
  5324. f[n] || (f[n] = []);
  5325. f[n].push(t)
  5326. },
  5327. stopListening: function(n, t) {
  5328. if (o(n), f[n]) {
  5329. if (!t) {
  5330. delete f[n];
  5331. return
  5332. }
  5333. for (var i = f[n].length - 1; i >= 0; i--) f[n][i] == t && f[n].splice(i, 1)
  5334. }
  5335. },
  5336. subscribe: function(n, t) {
  5337. if (n = (n || "").toString(), !n) throw new TypeError("Channel not defined");
  5338. h[n] || (h[n] = []);
  5339. h[n].push(t)
  5340. },
  5341. publish: function(n, t) {
  5342. if (n = (n || "").toString(), !n) throw new TypeError("Channel not defined");
  5343. ht(n, t)
  5344. },
  5345. reInit: function() {
  5346. tt()
  5347. }
  5348. };
  5349. ut()
  5350. }(),
  5351. function(n, t) {
  5352. function ut() {}
  5353. function bi(n, t) {
  5354. if (t) return "'" + n.split("'").join("\\'").split('\\"').join('\\\\\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\t/g, "\\t") + "'";
  5355. var i = n.charAt(0),
  5356. r = n.substring(1);
  5357. return i === "=" ? "+(" + r + ")+" : i === ":" ? "+e(" + r + ")+" : ";" + n + ";o+="
  5358. }
  5359. function e(n, t, i) {
  5360. return (n = n + "", t = t || 2, i = t - n.length, i) ? rr[t].substring(0, i) + n : n
  5361. }
  5362. function ur(t, u) {
  5363. var c = r.browser,
  5364. o, g = t.css("direction") == "rtl",
  5365. e, v;
  5366. if (t.parent().hasClass("k-animation-container")) e = t.parent(".k-animation-container"), v = e[0].style, e.is(":hidden") && e.show(), o = tt.test(v.width) || tt.test(v.height), o || e.css({
  5367. width: t.outerWidth(),
  5368. height: t.outerHeight(),
  5369. boxSizing: "content-box",
  5370. mozBoxSizing: "content-box",
  5371. webkitBoxSizing: "content-box"
  5372. });
  5373. else {
  5374. var y = t.css(i.support.transitions.css + "box-shadow") || t.css("box-shadow"),
  5375. f = y ? y.match(vi) || [0, 0, 0, 0, 0] : [0, 0, 0, 0, 0],
  5376. l = p.max(+f[3], +(f[4] || 0)),
  5377. a = -f[1] + l,
  5378. w = +f[1] + l,
  5379. b = +f[2] + l,
  5380. s = t[0].style.width,
  5381. h = t[0].style.height,
  5382. k = tt.test(s),
  5383. d = tt.test(h);
  5384. c.opera && (a = w = b = 5);
  5385. o = k || d;
  5386. !k && (!u || u && s) && (s = t.outerWidth());
  5387. !d && (!u || u && h) && (h = t.outerHeight());
  5388. t.wrap(n("<div/>").addClass("k-animation-container").css({
  5389. width: s,
  5390. height: h,
  5391. marginLeft: a * (g ? 1 : -1),
  5392. paddingLeft: a,
  5393. paddingRight: w,
  5394. paddingBottom: b
  5395. }));
  5396. o && t.css({
  5397. width: "100%",
  5398. height: "100%",
  5399. boxSizing: "border-box",
  5400. mozBoxSizing: "border-box",
  5401. webkitBoxSizing: "border-box"
  5402. })
  5403. }
  5404. return c.msie && p.floor(c.version) <= 7 && (t.css({
  5405. zoom: 1
  5406. }), t.children(".k-menu").width(t.width())), t.parent()
  5407. }
  5408. function kt(n) {
  5409. for (var t = 1, i = arguments.length, t = 1; t < i; t++) dt(n, arguments[t]);
  5410. return n
  5411. }
  5412. function dt(n, t) {
  5413. var o = i.data.ObservableArray,
  5414. s = i.data.DataSource,
  5415. u, r, f, e;
  5416. for (u in t) r = t[u], f = typeof r, f === a && r !== null && r.constructor !== Array && r.constructor !== o && r.constructor !== s ? r instanceof Date ? n[u] = new Date(r.getTime()) : ft(r.clone) ? n[u] = r.clone() : (e = n[u], n[u] = typeof e === a ? e || {} : {}, dt(n[u], r)) : f !== rt && (n[u] = r);
  5417. return n
  5418. }
  5419. function ct(n, i, r) {
  5420. for (var u in i)
  5421. if (i.hasOwnProperty(u) && i[u].test(n)) return u;
  5422. return r !== t ? r : n
  5423. }
  5424. function fr(n) {
  5425. return n.replace(/([a-z][A-Z])/g, function(n) {
  5426. return n.charAt(0) + "-" + n.charAt(1).toLowerCase()
  5427. })
  5428. }
  5429. function gt(n) {
  5430. return n.replace(/\-(\w)/g, function(n, t) {
  5431. return t.toUpperCase()
  5432. })
  5433. }
  5434. function er(t, r) {
  5435. var u = {},
  5436. f;
  5437. return document.defaultView && document.defaultView.getComputedStyle ? (f = document.defaultView.getComputedStyle(t, ""), r && n.each(r, function(n, t) {
  5438. u[t] = f.getPropertyValue(t)
  5439. })) : (f = t.currentStyle, r && n.each(r, function(n, t) {
  5440. u[t] = f[gt(t)]
  5441. })), i.size(u) || (u = f), u
  5442. }
  5443. function or(n) {
  5444. var t = 0;
  5445. for (var i in n) n.hasOwnProperty(i) && i != "toJSON" && t++;
  5446. return t
  5447. }
  5448. function sr(n, t, i) {
  5449. var u, f, e, o;
  5450. return (t || (t = "offset"), u = n[t](), f = r.mobileOS, r.touch && f.ios && f.flatVersion < 410 && (e = t == "offset" ? u : n.offset(), o = u.left == e.left && u.top == e.top, o)) ? {
  5451. top: u.top - window.scrollY,
  5452. left: u.left - window.scrollX
  5453. } : (r.browser.msie && (r.pointers || r.msPointers) && !i && (u.top -= window.pageYOffset - document.documentElement.scrollTop, u.left -= window.pageXOffset - document.documentElement.scrollLeft), u)
  5454. }
  5455. function hr(n) {
  5456. var t = {};
  5457. return d(typeof n == "string" ? n.split(" ") : n, function(n) {
  5458. t[n] = this
  5459. }), t
  5460. }
  5461. function cr(n) {
  5462. return new i.effects.Element(n)
  5463. }
  5464. function ti(n, t, i, r) {
  5465. return typeof n === u && (ft(t) && (r = t, t = 400, i = !1), ft(i) && (r = i, i = !1), typeof t === pt && (i = t, t = 400), n = {
  5466. effects: n,
  5467. duration: t,
  5468. reverse: i,
  5469. complete: r
  5470. }), s({
  5471. effects: {},
  5472. duration: 400,
  5473. reverse: !1,
  5474. init: g,
  5475. teardown: g,
  5476. hide: !1
  5477. }, n, {
  5478. completeCallback: n.complete,
  5479. complete: g
  5480. })
  5481. }
  5482. function ii(t, i, r, u, f) {
  5483. for (var e = 0, s = t.length, o; e < s; e++) o = n(t[e]), o.queue(function() {
  5484. h.promise(o, ti(i, r, u, f))
  5485. });
  5486. return t
  5487. }
  5488. function lr(n, t, i, r, u, f) {
  5489. return h.transitionPromise(n, t, ti(i, r, u, f))
  5490. }
  5491. function ar(n, t, i, r) {
  5492. return t && (t = t.split(" "), d(t, function(t, i) {
  5493. n.toggleClass(i, r)
  5494. })), n
  5495. }
  5496. function wr(n) {
  5497. return ("" + n).replace(vr, "&amp;").replace(yr, "&lt;").replace(pr, "&gt;")
  5498. }
  5499. function at(n, r) {
  5500. var u;
  5501. return r.indexOf("data") === 0 && (r = r.substring(4), r = r.charAt(0).toLowerCase() + r.substring(1)), r = r.replace(gr, "-$1"), u = n.getAttribute("data-" + i.ns + r), u === null ? u = t : u === "null" ? u = null : u === "true" ? u = !0 : u === "false" ? u = !1 : yi.test(u) ? u = parseFloat(u) : kr.test(u) && !dr.test(u) && (u = new Function("return (" + u + ")")()), u
  5502. }
  5503. function fi(r, u) {
  5504. var o = {},
  5505. e, f;
  5506. for (e in u) f = at(r, e), f !== t && (br.test(e) && (f = i.template(n("#" + f).html())), o[e] = f);
  5507. return o
  5508. }
  5509. function nu(t, i) {
  5510. return n.contains(t, i) ? -1 : 1
  5511. }
  5512. function tu() {
  5513. var t = n(this);
  5514. return n.inArray(t.attr("data-role"), ["slider", "rangeslider"]) > 0 || t.is(":visible")
  5515. }
  5516. function iu(n, t) {
  5517. var i = n.nodeName.toLowerCase();
  5518. return (/input|select|textarea|button|object/.test(i) ? !n.disabled : "a" === i ? n.href || t : t) && ru(n)
  5519. }
  5520. function ru(t) {
  5521. return !n(t).parents().addBack().filter(function() {
  5522. return n.css(this, "visibility") === "hidden" || n.expr.filters.hidden(this)
  5523. }).length
  5524. }
  5525. function o(n, t) {
  5526. return new o.fn.init(n, t)
  5527. }
  5528. var i = window.kendo = window.kendo || {
  5529. cultures: {}
  5530. },
  5531. s = n.extend,
  5532. d = n.each,
  5533. li = n.isArray,
  5534. ot = n.proxy,
  5535. g = n.noop,
  5536. p = Math,
  5537. v, nt = window.JSON || {},
  5538. r = {},
  5539. tt = /%/,
  5540. ai = /\{(\d+)(:[^\}]+)?\}/g,
  5541. vi = /(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+(?:\.?)\d*)px\s*(\d+)?/i,
  5542. yi = /^(\+|-?)\d+(\.?)\d*$/,
  5543. c = "function",
  5544. u = "string",
  5545. l = "number",
  5546. a = "object",
  5547. it = "null",
  5548. pt = "boolean",
  5549. rt = "undefined",
  5550. wt = {},
  5551. bt = {},
  5552. st = [].slice,
  5553. y = window.Globalize,
  5554. ni, h, lt, ri, ui, w, ei, oi, hi, vt, et, ci, yt, k;
  5555. i.version = "2013.3.1324";
  5556. ut.extend = function(n) {
  5557. var r = function() {},
  5558. t, u = this,
  5559. i = n && n.init ? n.init : function() {
  5560. u.apply(this, arguments)
  5561. },
  5562. f;
  5563. r.prototype = u.prototype;
  5564. f = i.fn = i.prototype = new r;
  5565. for (t in n) f[t] = typeof n[t] !== a || n[t] instanceof Array || n[t] === null ? n[t] : s(!0, {}, r.prototype[t], n[t]);
  5566. return f.constructor = i, i.extend = u.extend, i
  5567. };
  5568. ut.prototype._initOptions = function(n) {
  5569. this.options = kt({}, this.options, n)
  5570. };
  5571. var ft = i.isFunction = function(n) {
  5572. return typeof n == "function"
  5573. },
  5574. pi = function() {
  5575. this._defaultPrevented = !0
  5576. },
  5577. wi = function() {
  5578. return this._defaultPrevented === !0
  5579. },
  5580. ht = ut.extend({
  5581. init: function() {
  5582. this._events = {}
  5583. },
  5584. bind: function(n, i, r) {
  5585. var f = this,
  5586. e, s = typeof n === u ? [n] : n,
  5587. h, l, o, v = typeof i === c,
  5588. a;
  5589. if (i === t) {
  5590. for (e in n) f.bind(e, n[e]);
  5591. return f
  5592. }
  5593. for (e = 0, h = s.length; e < h; e++) n = s[e], o = v ? i : i[n], o && (r && (l = o, o = function() {
  5594. f.unbind(n, o);
  5595. l.apply(f, arguments)
  5596. }), a = f._events[n] = f._events[n] || [], a.push(o));
  5597. return f
  5598. },
  5599. one: function(n, t) {
  5600. return this.bind(n, t, !0)
  5601. },
  5602. first: function(n, t) {
  5603. for (var r = this, e = typeof n === u ? [n] : n, f, h = typeof t === c, s, i = 0, o = e.length; i < o; i++) n = e[i], f = h ? t : t[n], f && (s = r._events[n] = r._events[n] || [], s.unshift(f));
  5604. return r
  5605. },
  5606. trigger: function(n, t) {
  5607. var u = this,
  5608. i = u._events[n],
  5609. r, f;
  5610. if (i) {
  5611. for (t = t || {}, t.sender = u, t._defaultPrevented = !1, t.preventDefault = pi, t.isDefaultPrevented = wi, i = i.slice(), r = 0, f = i.length; r < f; r++) i[r].call(u, t);
  5612. return t._defaultPrevented === !0
  5613. }
  5614. return !1
  5615. },
  5616. unbind: function(n, i) {
  5617. var u = this,
  5618. f = u._events[n],
  5619. r;
  5620. if (n === t) u._events = {};
  5621. else if (f)
  5622. if (i)
  5623. for (r = f.length - 1; r >= 0; r--) f[r] === i && f.splice(r, 1);
  5624. else u._events[n] = [];
  5625. return u
  5626. }
  5627. });
  5628. var ki = /^\w+/,
  5629. di = /\$\{([^}]*)\}/g,
  5630. gi = /\\\}/g,
  5631. nr = /__CURLY__/g,
  5632. tr = /\\#/g,
  5633. ir = /__SHARP__/g,
  5634. rr = ["", "0", "00", "000", "0000"];
  5635. v = {
  5636. paramName: "data",
  5637. useWithBlock: !0,
  5638. render: function(n, t) {
  5639. for (var u = "", i = 0, r = t.length; i < r; i++) u += n(t[i]);
  5640. return u
  5641. },
  5642. compile: function(t, r) {
  5643. var h = s({}, this, r),
  5644. c = h.paramName,
  5645. a = c.match(ki)[0],
  5646. l = h.useWithBlock,
  5647. u = "var o,e=kendo.htmlEncode;",
  5648. o, e, f;
  5649. if (ft(t)) return t.length === 2 ? function(i) {
  5650. return t(n, {
  5651. data: i
  5652. }).join("")
  5653. } : t;
  5654. for (u += l ? "with(" + c + "){" : "", u += "o=", e = t.replace(gi, "__CURLY__").replace(di, "#=e($1)#").replace(nr, "}").replace(tr, "__SHARP__").split("#"), f = 0; f < e.length; f++) u += bi(e[f], f % 2 == 0);
  5655. u += l ? ";}" : ";";
  5656. u += "return o;";
  5657. u = u.replace(ir, "#");
  5658. try {
  5659. return o = new Function(a, u), o._slotCount = Math.floor(e.length / 2), o
  5660. } catch (v) {
  5661. throw new Error(i.format("Invalid template:'{0}' Generated code:'{1}'", t, u));
  5662. }
  5663. }
  5664. },
  5665. function() {
  5666. function o(n) {
  5667. return f.lastIndex = 0, f.test(n) ? '"' + n.replace(f, function(n) {
  5668. var t = s[n];
  5669. return typeof t === u ? t : "\\u" + ("0000" + n.charCodeAt(0).toString(16)).slice(-4)
  5670. }) + '"' : '"' + n + '"'
  5671. }
  5672. function r(f, e) {
  5673. var v, w, y, k, d = n,
  5674. p, s = e[f],
  5675. b;
  5676. if (s && typeof s === a && typeof s.toJSON === c && (s = s.toJSON(f)), typeof t === c && (s = t.call(e, f, s)), b = typeof s, b === u) return o(s);
  5677. if (b === l) return isFinite(s) ? String(s) : it;
  5678. if (b === pt || b === it) return String(s);
  5679. if (b === a) {
  5680. if (!s) return it;
  5681. if (n += i, p = [], h.apply(s) === "[object Array]") {
  5682. for (k = s.length, v = 0; v < k; v++) p[v] = r(v, s) || it;
  5683. return y = p.length === 0 ? "[]" : n ? "[\n" + n + p.join(",\n" + n) + "\n" + d + "]" : "[" + p.join(",") + "]", n = d, y
  5684. }
  5685. if (t && typeof t === a)
  5686. for (k = t.length, v = 0; v < k; v++) typeof t[v] === u && (w = t[v], y = r(w, s), y && p.push(o(w) + (n ? ": " : ":") + y));
  5687. else
  5688. for (w in s) Object.hasOwnProperty.call(s, w) && (y = r(w, s), y && p.push(o(w) + (n ? ": " : ":") + y));
  5689. return y = p.length === 0 ? "{}" : n ? "{\n" + n + p.join(",\n" + n) + "\n" + d + "}" : "{" + p.join(",") + "}", n = d, y
  5690. }
  5691. }
  5692. var f = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
  5693. n, i, s = {
  5694. "\b": "\\b",
  5695. "\t": "\\t",
  5696. "\n": "\\n",
  5697. "\f": "\\f",
  5698. "\r": "\\r",
  5699. '"': '\\"',
  5700. "\\": "\\\\"
  5701. },
  5702. t, h = {}.toString;
  5703. typeof Date.prototype.toJSON !== c && (Date.prototype.toJSON = function() {
  5704. var n = this;
  5705. return isFinite(n.valueOf()) ? e(n.getUTCFullYear(), 4) + "-" + e(n.getUTCMonth() + 1) + "-" + e(n.getUTCDate()) + "T" + e(n.getUTCHours()) + ":" + e(n.getUTCMinutes()) + ":" + e(n.getUTCSeconds()) + "Z" : null
  5706. }, String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function() {
  5707. return this.valueOf()
  5708. });
  5709. typeof nt.stringify !== c && (nt.stringify = function(f, e, o) {
  5710. var s;
  5711. if (n = "", i = "", typeof o === l)
  5712. for (s = 0; s < o; s += 1) i += " ";
  5713. else typeof o === u && (i = o);
  5714. if (t = e, e && typeof e !== c && (typeof e !== a || typeof e.length !== l)) throw new Error("JSON.stringify");
  5715. return r("", {
  5716. "": f
  5717. })
  5718. })
  5719. }(),
  5720. function() {
  5721. function v(n) {
  5722. if (n) {
  5723. if (n.numberFormat) return n;
  5724. if (typeof n === u) {
  5725. var t = i.cultures;
  5726. return t[n] || t[n.split("-")[0]] || null
  5727. }
  5728. return null
  5729. }
  5730. return null
  5731. }
  5732. function w(n) {
  5733. return n && (n = v(n)), n || i.cultures.current
  5734. }
  5735. function rt(n) {
  5736. n.groupSizes = n.groupSize;
  5737. n.percent.groupSizes = n.percent.groupSize;
  5738. n.currency.groupSizes = n.currency.groupSize
  5739. }
  5740. function ut(n, i, r) {
  5741. r = w(r);
  5742. var u = r.calendars.standard,
  5743. f = u.days,
  5744. o = u.months;
  5745. return i = u.patterns[i] || i, i.replace(d, function(i) {
  5746. var r;
  5747. return i === "d" ? r = n.getDate() : i === "dd" ? r = e(n.getDate()) : i === "ddd" ? r = f.namesAbbr[n.getDay()] : i === "dddd" ? r = f.names[n.getDay()] : i === "M" ? r = n.getMonth() + 1 : i === "MM" ? r = e(n.getMonth() + 1) : i === "MMM" ? r = o.namesAbbr[n.getMonth()] : i === "MMMM" ? r = o.names[n.getMonth()] : i === "yy" ? r = e(n.getFullYear() % 100) : i === "yyyy" ? r = e(n.getFullYear(), 4) : i === "h" ? r = n.getHours() % 12 || 12 : i === "hh" ? r = e(n.getHours() % 12 || 12) : i === "H" ? r = n.getHours() : i === "HH" ? r = e(n.getHours()) : i === "m" ? r = n.getMinutes() : i === "mm" ? r = e(n.getMinutes()) : i === "s" ? r = n.getSeconds() : i === "ss" ? r = e(n.getSeconds()) : i === "f" ? r = p.floor(n.getMilliseconds() / 100) : i === "ff" ? r = p.floor(n.getMilliseconds() / 10) : i === "fff" ? r = n.getMilliseconds() : i === "tt" && (r = n.getHours() < 12 ? u.AM[0] : u.PM[0]), r !== t ? r : i.slice(1, i.length - 1)
  5748. })
  5749. }
  5750. function ft(n, i, u) {
  5751. u = w(u);
  5752. var l = u.numberFormat,
  5753. ot = l.groupSize[0],
  5754. lt = l[c],
  5755. vt = l[f],
  5756. at = l.decimals,
  5757. kt = l.pattern[0],
  5758. dt = [],
  5759. yt, ft, st, pt, wt, et = n < 0,
  5760. b, p, rt, ei, gt = r,
  5761. y = r,
  5762. e, ut, d, ni, ri, it, v, a, bt, ti, ui, ii, fi, ht = -1,
  5763. ct;
  5764. if (n === t) return r;
  5765. if (!isFinite(n)) return n;
  5766. if (!i) return u.name.length ? n.toLocaleString() : n.toString();
  5767. if (wt = g.exec(i), wt) {
  5768. if (i = wt[1].toLowerCase(), ft = i === "c", st = i === "p", (ft || st) && (l = ft ? l.currency : l.percent, ot = l.groupSize[0], lt = l[c], vt = l[f], at = l.decimals, yt = l.symbol, kt = l.pattern[et ? 0 : 1]), pt = wt[2], pt && (at = +pt), i === "e") return pt ? n.toExponential(at) : n.toExponential();
  5769. if (st && (n *= 100), n = h(n, at), et = n < 0, n = n.split(f), b = n[0], p = n[1], et && (b = b.substring(1)), y = b, rt = b.length, rt >= ot)
  5770. for (y = r, e = 0; e < rt; e++) e > 0 && (rt - e) % ot == 0 && (y += lt), y += b.charAt(e);
  5771. if (p && (y += vt + p), i === "n" && !et) return y;
  5772. for (n = r, e = 0, ut = kt.length; e < ut; e++) d = kt.charAt(e), n += d === "n" ? y : d === "$" || d === "%" ? yt : d;
  5773. return n
  5774. }
  5775. if (et && (n = -n), (i.indexOf("'") > -1 || i.indexOf('"') > -1 || i.indexOf("\\") > -1) && (i = i.replace(nt, function(n) {
  5776. var t = n.charAt(0).replace("\\", ""),
  5777. i = n.slice(1).replace(t, "");
  5778. return dt.push(i), k
  5779. })), i = i.split(";"), et && i[1]) i = i[1], ri = !0;
  5780. else if (n === 0) {
  5781. if (i = i[2] || i[0], i.indexOf(o) == -1 && i.indexOf(s) == -1) return i
  5782. } else i = i[0];
  5783. if (ui = i.indexOf("%"), ii = i.indexOf("$"), st = ui != -1, ft = ii != -1, st && (n *= 100), ft && i[ii - 1] === "\\" && (i = i.split("\\").join(""), ft = !1), (ft || st) && (l = ft ? l.currency : l.percent, ot = l.groupSize[0], lt = l[c], vt = l[f], at = l.decimals, yt = l.symbol), ni = i.indexOf(c) > -1, ni && (i = i.replace(tt, r)), it = i.indexOf(f), ut = i.length, it != -1 ? (p = n.toString().split("e"), p = p[1] ? h(n, Math.abs(p[1])) : p[0], p = p.split(f)[1] || r, a = i.lastIndexOf(s) - it, v = i.lastIndexOf(o) - it, bt = a > -1, ti = v > -1, e = p.length, bt || ti || (i = i.substring(0, it) + i.substring(it + 1), ut = i.length, it = -1, e = 0), bt && a > v ? e = a : v > a && (ti && e > v ? e = v : bt && e < a && (e = a)), e > -1 && (n = h(n, e))) : n = h(n), v = i.indexOf(o), fi = a = i.indexOf(s), ht = v == -1 && a != -1 ? a : v != -1 && a == -1 ? v : v > a ? a : v, v = i.lastIndexOf(o), a = i.lastIndexOf(s), ct = v == -1 && a != -1 ? a : v != -1 && a == -1 ? v : v > a ? v : a, ht == ut && (ct = ht), ht != -1) {
  5784. if (y = n.toString().split(f), b = y[0], p = y[1] || r, rt = b.length, ei = p.length, et && n * -1 >= 0 && (et = !1), ni)
  5785. if (rt === ot && rt < it - fi) b = lt + b;
  5786. else if (rt > ot) {
  5787. for (y = r, e = 0; e < rt; e++) e > 0 && (rt - e) % ot == 0 && (y += lt), y += b.charAt(e);
  5788. b = y
  5789. }
  5790. for (n = i.substring(0, ht), et && !ri && (n += "-"), e = ht; e < ut; e++) {
  5791. if (d = i.charAt(e), it == -1) {
  5792. if (ct - e < rt) {
  5793. n += b;
  5794. break
  5795. }
  5796. } else if (a != -1 && a < e && (gt = r), it - e <= rt && it - e > -1 && (n += b, e = it), it === e) {
  5797. n += (p ? vt : r) + p;
  5798. e += ct - it + 1;
  5799. continue
  5800. }
  5801. d === s ? (n += d, gt = d) : d === o && (n += gt)
  5802. }
  5803. if (ct >= ht && (n += i.substring(ct + 1)), ft || st) {
  5804. for (y = r, e = 0, ut = n.length; e < ut; e++) d = n.charAt(e), y += d === "$" || d === "%" ? yt : d;
  5805. n = y
  5806. }
  5807. if (ut = dt.length, ut)
  5808. for (e = 0; e < ut; e++) n = n.replace(k, dt[e])
  5809. }
  5810. return n
  5811. }
  5812. var d = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|HH|H|hh|h|mm|m|fff|ff|f|tt|ss|s|"[^"]*"|'[^']*'/g,
  5813. g = /^(n|c|p|e)(\d*)$/i,
  5814. nt = /(\\.)|(['][^']*[']?)|(["][^"]*["]?)/g,
  5815. tt = /\,/g,
  5816. r = "",
  5817. f = ".",
  5818. c = ",",
  5819. o = "#",
  5820. s = "0",
  5821. k = "??",
  5822. a = "en-US",
  5823. it = {}.toString;
  5824. i.cultures["en-US"] = {
  5825. name: a,
  5826. numberFormat: {
  5827. pattern: ["-n"],
  5828. decimals: 2,
  5829. ",": ",",
  5830. ".": ".",
  5831. groupSize: [3],
  5832. percent: {
  5833. pattern: ["-n %", "n %"],
  5834. decimals: 2,
  5835. ",": ",",
  5836. ".": ".",
  5837. groupSize: [3],
  5838. symbol: "%"
  5839. },
  5840. currency: {
  5841. pattern: ["($n)", "$n"],
  5842. decimals: 2,
  5843. ",": ",",
  5844. ".": ".",
  5845. groupSize: [3],
  5846. symbol: "$"
  5847. }
  5848. },
  5849. calendars: {
  5850. standard: {
  5851. days: {
  5852. names: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
  5853. namesAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
  5854. namesShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
  5855. },
  5856. months: {
  5857. names: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
  5858. namesAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
  5859. },
  5860. AM: ["AM", "am", "AM"],
  5861. PM: ["PM", "pm", "PM"],
  5862. patterns: {
  5863. d: "M/d/yyyy",
  5864. D: "dddd, MMMM dd, yyyy",
  5865. F: "dddd, MMMM dd, yyyy h:mm:ss tt",
  5866. g: "M/d/yyyy h:mm tt",
  5867. G: "M/d/yyyy h:mm:ss tt",
  5868. m: "MMMM dd",
  5869. M: "MMMM dd",
  5870. s: "yyyy'-'MM'-'ddTHH':'mm':'ss",
  5871. t: "h:mm tt",
  5872. T: "h:mm:ss tt",
  5873. u: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",
  5874. y: "MMMM, yyyy",
  5875. Y: "MMMM, yyyy"
  5876. },
  5877. "/": "/",
  5878. ":": ":",
  5879. firstDay: 0,
  5880. twoDigitYearMax: 2029
  5881. }
  5882. }
  5883. };
  5884. i.culture = function(n) {
  5885. var u = i.cultures,
  5886. r;
  5887. if (n !== t) r = v(n) || u[a], r.calendar = r.calendars.standard, u.current = r, y && rt(r.numberFormat);
  5888. else return u.current
  5889. };
  5890. i.findCulture = v;
  5891. i.getCulture = w;
  5892. i.culture(a);
  5893. var et = 9e15,
  5894. h = function(n, t) {
  5895. var i = Math.pow(10, t || 0),
  5896. r = Math.round(n * i);
  5897. return r > et ? n.toFixed(t) : (r / i).toFixed(t)
  5898. },
  5899. b = function(n, i, r) {
  5900. if (i) {
  5901. if (it.call(n) === "[object Date]") return ut(n, i, r);
  5902. if (typeof n === l) return ft(n, i, r)
  5903. }
  5904. return n !== t ? n : ""
  5905. };
  5906. y && (b = function(t, i, r) {
  5907. return n.isPlainObject(r) && (r = r.name), y.format(t, i, r)
  5908. });
  5909. i.format = function(n) {
  5910. var t = arguments;
  5911. return n.replace(ai, function(n, i, r) {
  5912. var u = t[parseInt(i, 10) + 1];
  5913. return b(u, r ? r.substring(1) : "")
  5914. })
  5915. };
  5916. i._extractFormat = function(n) {
  5917. return n.slice(0, 3) === "{0:" && (n = n.slice(3, n.length - 1)), n
  5918. };
  5919. i._activeElement = function() {
  5920. try {
  5921. return document.activeElement
  5922. } catch (n) {
  5923. return document.documentElement.activeElement
  5924. }
  5925. };
  5926. i._round = h;
  5927. i.toString = b
  5928. }(),
  5929. function() {
  5930. function r(n, t, i) {
  5931. return !(n >= t && n <= i)
  5932. }
  5933. function b(n) {
  5934. return n.charAt(0)
  5935. }
  5936. function s(t) {
  5937. return n.map(t, b)
  5938. }
  5939. function k(n, t) {
  5940. t || n.getHours() !== 23 || n.setHours(n.getHours() + 2)
  5941. }
  5942. function d(n) {
  5943. for (var t = 0, r = n.length, i = []; t < r; t++) i[t] = (n[t] + "").toLowerCase();
  5944. return i
  5945. }
  5946. function h(n) {
  5947. var t = {};
  5948. for (var i in n) t[i] = d(n[i]);
  5949. return t
  5950. }
  5951. function g(n, i, u) {
  5952. if (!n) return null;
  5953. var p = function(n) {
  5954. for (var t = 0; i[rt] === n;) t++, rt++;
  5955. return t > 0 && (rt -= 1), t
  5956. },
  5957. nt = function(t) {
  5958. var r = e[t] || new RegExp("^\\d{1," + t + "}"),
  5959. i = n.substr(b, t).match(r);
  5960. return i ? (i = i[0], b += i.length, parseInt(i, 10)) : null
  5961. },
  5962. ht = function(t, i) {
  5963. for (var r = 0, o = t.length, f, e, u; r < o; r++)
  5964. if (f = t[r], e = f.length, u = n.substr(b, e), i && (u = u.toLowerCase()), u == f) return b += e, r + 1;
  5965. return null
  5966. },
  5967. ft = function() {
  5968. var t = !1;
  5969. return n.charAt(b) === i[rt] && (b++, t = !0), t
  5970. },
  5971. y = u.calendars.standard,
  5972. c = null,
  5973. tt = null,
  5974. w = null,
  5975. o = null,
  5976. it = null,
  5977. ut = null,
  5978. d = null,
  5979. rt = 0,
  5980. b = 0,
  5981. yt = !1,
  5982. pt = new Date,
  5983. ct = y.twoDigitYearMax || 2029,
  5984. et = pt.getFullYear(),
  5985. l, f, dt, wt, bt, kt, gt, g, lt, at, vt, ot, ni, st;
  5986. for (i || (i = "d"), wt = y.patterns[i], wt && (i = wt), i = i.split(""), dt = i.length; rt < dt; rt++)
  5987. if (l = i[rt], yt) l === "'" ? yt = !1 : ft();
  5988. else if (l === "d") {
  5989. if (f = p("d"), y._lowerDays || (y._lowerDays = h(y.days)), w = f < 3 ? nt(2) : ht(y._lowerDays[f == 3 ? "namesAbbr" : "names"], !0), w === null || r(w, 1, 31)) return null
  5990. } else if (l === "M") {
  5991. if (f = p("M"), y._lowerMonths || (y._lowerMonths = h(y.months)), tt = f < 3 ? nt(2) : ht(y._lowerMonths[f == 3 ? "namesAbbr" : "names"], !0), tt === null || r(tt, 1, 12)) return null;
  5992. tt -= 1
  5993. } else if (l === "y") {
  5994. if (f = p("y"), c = nt(f), c === null) return null;
  5995. f == 2 && (typeof ct == "string" && (ct = et + parseInt(ct, 10)), c = et - et % 100 + c, c > ct && (c -= 100))
  5996. } else if (l === "h") {
  5997. if (p("h"), o = nt(2), o == 12 && (o = 0), o === null || r(o, 0, 11)) return null
  5998. } else if (l === "H") {
  5999. if (p("H"), o = nt(2), o === null || r(o, 0, 23)) return null
  6000. } else if (l === "m") {
  6001. if (p("m"), it = nt(2), it === null || r(it, 0, 59)) return null
  6002. } else if (l === "s") {
  6003. if (p("s"), ut = nt(2), ut === null || r(ut, 0, 59)) return null
  6004. } else if (l === "f") {
  6005. if (f = p("f"), st = n.substr(b, f).match(e[3]), d = nt(f), d !== null && (st = st[0].length, st < 3 && (d *= Math.pow(10, 3 - st)), f > 3 && (d = parseInt(d.toString().substring(0, 3), 10))), d === null || r(d, 0, 999)) return null
  6006. } else if (l === "t") {
  6007. if (f = p("t"), lt = y.AM, at = y.PM, f === 1 && (lt = s(lt), at = s(at)), bt = ht(at), !bt && !ht(lt)) return null
  6008. } else if (l === "z") {
  6009. if (kt = !0, f = p("z"), n.substr(b, 1) === "Z") {
  6010. if (!gt) return null;
  6011. ft();
  6012. continue
  6013. }
  6014. if ((g = n.substr(b, 6).match(f > 2 ? v : a), !g) || (g = g[0], b = g.length, g = g.split(":"), vt = parseInt(g[0], 10), r(vt, -12, 13)) || f > 2 && (ot = parseInt(g[1], 10), isNaN(ot) || r(ot, 0, 59))) return null
  6015. } else if (l === "T") gt = ft();
  6016. else if (l === "'") yt = !0, ft();
  6017. else if (!ft()) return null;
  6018. return (ni = o !== null || it !== null || ut || null, c === null && tt === null && w === null && ni ? (c = et, tt = pt.getMonth(), w = pt.getDate()) : (c === null && (c = et), w === null && (w = 1)), bt && o < 12 && (o += 12), kt ? (vt && (o += -vt), ot && (it += -ot), n = new Date(Date.UTC(c, tt, w, o, it, ut, d))) : (n = new Date(c, tt, w, o, it, ut, d), k(n, o)), c < 100 && n.setFullYear(c), n.getDate() !== w && kt === t) ? null : n
  6019. }
  6020. var u = /\u00A0/g,
  6021. c = /[eE][\-+]?[0-9]+/,
  6022. a = /[+|\-]\d{1,2}/,
  6023. v = /[+|\-]\d{1,2}:\d{2}/,
  6024. p = /^\/Date\((.*?)\)\/$/,
  6025. w = /[+-]{1}\d+/,
  6026. f = ["G", "g", "d", "F", "D", "y", "m", "T", "t"],
  6027. e = {
  6028. 2: /^\d{1,2}/,
  6029. 3: /^\d{1,3}/,
  6030. 4: /^\d{4}/
  6031. },
  6032. o = {}.toString;
  6033. i.parseDate = function(n, t, r) {
  6034. if (o.call(n) === "[object Date]") return n;
  6035. var e = 0,
  6036. u = null,
  6037. s, c, h;
  6038. if (n && n.indexOf("/D") === 0 && (u = p.exec(n), u)) return u = u[1], h = w.exec(u), u = parseInt(u, 10), h && (u -= parseInt(h[0], 10) * i.date.MS_PER_MINUTE), new Date(u);
  6039. if (r = i.getCulture(r), !t) {
  6040. for (t = [], c = r.calendar.patterns, s = f.length; e < s; e++) t[e] = c[f[e]];
  6041. e = 0;
  6042. t = ["yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd", "ddd MMM dd yyyy HH:mm:ss", "yyyy-MM-ddTHH:mm:ss.fffffffzzz", "yyyy-MM-ddTHH:mm:ss.fffzzz", "yyyy-MM-ddTHH:mm:sszzz", "yyyy-MM-ddTHH:mmzzz", "yyyy-MM-ddTHH:mmzz", "yyyy-MM-ddTHH:mm:ss", "yyyy-MM-ddTHH:mm", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd"].concat(t)
  6043. }
  6044. for (t = li(t) ? t : [t], s = t.length; e < s; e++)
  6045. if (u = g(n, t[e], r), u) return u;
  6046. return u
  6047. };
  6048. i.parseInt = function(n, t) {
  6049. var r = i.parseFloat(n, t);
  6050. return r && (r = r | 0), r
  6051. };
  6052. i.parseFloat = function(n, t, r) {
  6053. if (!n && n !== 0) return null;
  6054. if (typeof n === l) return n;
  6055. n = n.toString();
  6056. t = i.getCulture(t);
  6057. var f = t.numberFormat,
  6058. h = f.percent,
  6059. a = f.currency,
  6060. s = a.symbol,
  6061. v = h.symbol,
  6062. e = n.indexOf("-"),
  6063. o, y;
  6064. return c.test(n) ? (n = parseFloat(n.replace(f["."], ".")), isNaN(n) && (n = null), n) : e > 0 ? null : (e = e > -1, n.indexOf(s) > -1 || r && r.toLowerCase().indexOf("c") > -1 ? (f = a, o = f.pattern[0].replace("$", s).split("n"), n.indexOf(o[0]) > -1 && n.indexOf(o[1]) > -1 && (n = n.replace(o[0], "").replace(o[1], ""), e = !0)) : n.indexOf(v) > -1 && (y = !0, f = h, s = v), n = n.replace("-", "").replace(s, "").replace(u, " ").split(f[","].replace(u, " ")).join("").replace(f["."], "."), n = parseFloat(n), isNaN(n) ? n = null : e && (n *= -1), n && y && (n /= 100), n)
  6065. };
  6066. y && (i.parseDate = function(n, t, i) {
  6067. return o.call(n) === "[object Date]" ? n : y.parseDate(n, t, i)
  6068. }, i.parseFloat = function(i, r) {
  6069. return typeof i === l ? i : i === t || i === null ? null : (n.isPlainObject(r) && (r = r.name), i = y.parseFloat(i, r), isNaN(i) ? null : i)
  6070. })
  6071. }(),
  6072. function() {
  6073. var e, i, f, c;
  6074. r.scrollbar = function() {
  6075. var n = document.createElement("div"),
  6076. t;
  6077. return n.style.cssText = "overflow:scroll;overflow-x:hidden;zoom:1;clear:both", n.innerHTML = "&nbsp;", document.body.appendChild(n), t = n.offsetWidth - n.scrollWidth, document.body.removeChild(n), t
  6078. };
  6079. r.isRtl = function(t) {
  6080. return n(t).closest(".k-rtl").length > 0
  6081. };
  6082. e = document.createElement("table");
  6083. try {
  6084. e.innerHTML = "<tr><td><\/td><\/tr>";
  6085. r.tbodyInnerHtml = !0
  6086. } catch (l) {
  6087. r.tbodyInnerHtml = !1
  6088. }
  6089. r.touch = "ontouchstart" in window;
  6090. r.msPointers = window.MSPointerEvent;
  6091. r.pointers = window.PointerEvent;
  6092. var o = r.transitions = !1,
  6093. h = r.transforms = !1,
  6094. s = "HTMLElement" in window ? HTMLElement.prototype : [];
  6095. r.hasHW3D = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix || "MozPerspective" in document.documentElement.style || "msPerspective" in document.documentElement.style;
  6096. d(["Moz", "webkit", "O", "ms"], function() {
  6097. var t = this.toString(),
  6098. i = typeof e.style[t + "Transition"] === u,
  6099. n;
  6100. if (i || typeof e.style[t + "Transform"] === u) return n = t.toLowerCase(), h = {
  6101. css: n != "ms" ? "-" + n + "-" : "",
  6102. prefix: t,
  6103. event: n === "o" || n === "webkit" ? n : ""
  6104. }, i && (o = h, o.event = o.event ? o.event + "TransitionEnd" : "transitionend"), !1
  6105. });
  6106. e = null;
  6107. r.transforms = h;
  6108. r.transitions = o;
  6109. r.devicePixelRatio = window.devicePixelRatio === t ? 1 : window.devicePixelRatio;
  6110. try {
  6111. r.screenWidth = window.outerWidth || window.screen ? window.screen.availWidth : window.innerWidth;
  6112. r.screenHeight = window.outerHeight || window.screen ? window.screen.availHeight : window.innerHeight
  6113. } catch (l) {
  6114. r.screenWidth = window.screen.availWidth;
  6115. r.screenHeight = window.screen.availHeight
  6116. }
  6117. r.detectOS = function(n) {
  6118. var t = !1,
  6119. u, f = [],
  6120. o = !/mobile safari/i.test(n),
  6121. e = {
  6122. fire: /(Silk)\/(\d+)\.(\d+(\.\d+)?)/,
  6123. android: /(Android|Android.*(?:Opera|Firefox).*?\/)\s*(\d+)\.(\d+(\.\d+)?)/,
  6124. iphone: /(iPhone|iPod).*OS\s+(\d+)[\._]([\d\._]+)/,
  6125. ipad: /(iPad).*OS\s+(\d+)[\._]([\d_]+)/,
  6126. meego: /(MeeGo).+NokiaBrowser\/(\d+)\.([\d\._]+)/,
  6127. webos: /(webOS)\/(\d+)\.(\d+(\.\d+)?)/,
  6128. blackberry: /(BlackBerry|BB10).*?Version\/(\d+)\.(\d+(\.\d+)?)/,
  6129. playbook: /(PlayBook).*?Tablet\s*OS\s*(\d+)\.(\d+(\.\d+)?)/,
  6130. wp: /(Windows Phone(?: OS)?)\s(\d+)\.(\d+(\.\d+)?)/,
  6131. windows: /(MSIE)\s+(\d+)\.(\d+(\.\d+)?)/,
  6132. tizen: /(tizen).*?Version\/(\d+)\.(\d+(\.\d+)?)/i,
  6133. sailfish: /(sailfish).*rv:(\d+)\.(\d+(\.\d+)?).*firefox/i,
  6134. ffos: /(Mobile).*rv:(\d+)\.(\d+(\.\d+)?).*Firefox/
  6135. },
  6136. s = {
  6137. ios: /^i(phone|pad|pod)$/i,
  6138. android: /^android|fire$/i,
  6139. blackberry: /^blackberry|playbook/i,
  6140. windows: /windows/,
  6141. wp: /wp/,
  6142. flat: /sailfish|ffos|tizen/i,
  6143. meego: /meego/
  6144. },
  6145. h = {
  6146. tablet: /playbook|ipad|fire/i
  6147. },
  6148. c = {
  6149. omini: /Opera\sMini/i,
  6150. omobile: /Opera\sMobi/i,
  6151. firefox: /Firefox|Fennec/i,
  6152. mobilesafari: /version\/.*safari/i,
  6153. chrome: /chrome/i,
  6154. webkit: /webkit/i,
  6155. ie: /MSIE|Windows\sPhone/i
  6156. };
  6157. for (var i in e)
  6158. if (e.hasOwnProperty(i) && (f = n.match(e[i]), f)) {
  6159. if (i == "windows" && "plugins" in navigator) return !1;
  6160. t = {};
  6161. t.device = i;
  6162. t.tablet = ct(i, h, !1);
  6163. t.browser = ct(n, c, "default");
  6164. t.name = ct(i, s);
  6165. t[t.name] = !0;
  6166. t.majorVersion = f[2];
  6167. t.minorVersion = f[3].replace("_", ".");
  6168. u = t.minorVersion.replace(".", "").substr(0, 2);
  6169. t.flatVersion = t.majorVersion + u + new Array(3 - (u.length < 3 ? u.length : 2)).join("0");
  6170. t.appMode = window.navigator.standalone || /file|local|wmapp/.test(window.location.protocol) || typeof PhoneGap !== rt || typeof cordova !== rt;
  6171. t.android && (r.devicePixelRatio < 1.5 && t.flatVersion < 400 || o) && (r.screenWidth > 800 || r.screenHeight > 800) && (t.tablet = i);
  6172. break
  6173. }
  6174. return t
  6175. };
  6176. i = r.mobileOS = r.detectOS(navigator.userAgent);
  6177. r.wpDevicePixelRatio = i.wp ? screen.width / 320 : 0;
  6178. r.kineticScrollNeeded = i && (r.touch || r.msPointers || r.pointers);
  6179. r.hasNativeScrolling = !1;
  6180. (i.ios && i.majorVersion > 4 || i.android && i.majorVersion > 2 || i.wp) && (r.hasNativeScrolling = i);
  6181. r.mouseAndTouchPresent = r.touch && !(r.mobileOS.ios || r.mobileOS.android);
  6182. r.detectBrowser = function(n) {
  6183. var t = !1,
  6184. i = [],
  6185. r = {
  6186. webkit: /(chrome)[ \/]([\w.]+)/i,
  6187. safari: /(webkit)[ \/]([\w.]+)/i,
  6188. opera: /(opera)(?:.*version|)[ \/]([\w.]+)/i,
  6189. msie: /(msie\s|trident.*? rv:)([\w.]+)/i,
  6190. mozilla: /(mozilla)(?:.*? rv:([\w.]+)|)/i
  6191. };
  6192. for (var u in r)
  6193. if (r.hasOwnProperty(u) && (i = n.match(r[u]), i)) {
  6194. t = {};
  6195. t[u] = !0;
  6196. t[i[1].toLowerCase()] = !0;
  6197. t.version = parseInt(document.documentMode || i[2], 10);
  6198. break
  6199. }
  6200. return t
  6201. };
  6202. r.browser = r.detectBrowser(navigator.userAgent);
  6203. r.zoomLevel = function() {
  6204. try {
  6205. return r.touch ? document.documentElement.clientWidth / window.innerWidth : r.browser.msie && r.browser.version >= 10 ? (top || window).document.documentElement.offsetWidth / (top || window).innerWidth : 1
  6206. } catch (n) {
  6207. return 1
  6208. }
  6209. };
  6210. r.cssBorderSpacing = typeof document.documentElement.style.borderSpacing != "undefined" && !(r.browser.msie && r.browser.version < 8),
  6211. function(t) {
  6212. var i, r = parseInt(t.version, 10);
  6213. t.msie ? i = "ie" : t.mozilla ? i = "ff" : t.safari ? i = "safari" : t.webkit ? i = "webkit" : t.opera && (i = "opera");
  6214. i && n(document.documentElement).addClass("k-" + i + " k-" + i + r)
  6215. }(r.browser);
  6216. r.eventCapture = document.documentElement.addEventListener;
  6217. f = document.createElement("input");
  6218. r.placeholder = "placeholder" in f;
  6219. r.input = function() {
  6220. for (var i = ["number", "date", "time", "month", "week", "datetime", "datetime-local"], e = i.length, r = "test", u = {}, n = 0, t; n < e; n++) t = i[n], f.setAttribute("type", t), f.value = r, u[t.replace("-", "")] = f.type !== "text" && f.value !== r;
  6221. return u
  6222. }();
  6223. f.style.cssText = "float:left;";
  6224. r.cssFloat = !!f.style.cssFloat;
  6225. f = null;
  6226. r.stableSort = function() {
  6227. var n = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].sort(function() {
  6228. return 0
  6229. });
  6230. return n[0] === 0 && n[1] === 1 && n[2] === 2 && n[3] === 3 && n[4] === 4 && n[5] === 5 && n[6] === 6 && n[7] === 7 && n[8] === 8 && n[9] === 9 && n[10] === 10 && n[11] === 11 && n[12] === 12
  6231. }();
  6232. r.matchesSelector = s.webkitMatchesSelector || s.mozMatchesSelector || s.msMatchesSelector || s.oMatchesSelector || s.matchesSelector || function(t) {
  6233. for (var i = document.querySelectorAll ? (this.parentNode || document).querySelectorAll(t) || [] : n(t), r = i.length; r--;)
  6234. if (i[r] == this) return !0;
  6235. return !1
  6236. };
  6237. r.pushState = window.history && window.history.pushState;
  6238. c = document.documentMode;
  6239. r.hashChange = "onhashchange" in window && !(r.browser.msie && (!c || c <= 8))
  6240. }();
  6241. ni = {
  6242. left: {
  6243. reverse: "right"
  6244. },
  6245. right: {
  6246. reverse: "left"
  6247. },
  6248. down: {
  6249. reverse: "up"
  6250. },
  6251. up: {
  6252. reverse: "down"
  6253. },
  6254. top: {
  6255. reverse: "bottom"
  6256. },
  6257. bottom: {
  6258. reverse: "top"
  6259. },
  6260. "in": {
  6261. reverse: "out"
  6262. },
  6263. out: {
  6264. reverse: "in"
  6265. }
  6266. };
  6267. h = {};
  6268. n.extend(h, {
  6269. Element: function(t) {
  6270. this.element = n(t)
  6271. },
  6272. promise: function(n, t) {
  6273. n.is(":visible") || n.css({
  6274. display: n.data("olddisplay") || "block"
  6275. }).css("display");
  6276. t.hide && n.data("olddisplay", n.css("display")).hide();
  6277. t.init && t.init();
  6278. t.completeCallback && t.completeCallback(n);
  6279. n.dequeue()
  6280. },
  6281. transitionPromise: function(n, t, r) {
  6282. var u = i.wrap(n);
  6283. return u.append(t), n.hide(), t.show(), r.completeCallback && r.completeCallback(n), n
  6284. },
  6285. disable: function() {
  6286. this.promise = this.promiseShim;
  6287. this.transitionPromise = this.transitionPromiseShim
  6288. },
  6289. enable: function() {
  6290. this.promise = this.animatedPromise;
  6291. this.transitionPromise = this.animatedTransitionPromise
  6292. }
  6293. });
  6294. h.promiseShim = h.promise;
  6295. h.transitionPromiseShim = h.transitionPromise;
  6296. "kendoAnimate" in n.fn || s(n.fn, {
  6297. kendoStop: function(n, t) {
  6298. return this.stop(n, t)
  6299. },
  6300. kendoAnimate: function(n, t, i, r) {
  6301. return ii(this, n, t, i, r)
  6302. },
  6303. kendoAnimateTo: function(n, t, i, r, u) {
  6304. return lr(this, n, t, i, r, u)
  6305. },
  6306. kendoAddClass: function(n, t) {
  6307. return i.toggleClass(this, n, t, !0)
  6308. },
  6309. kendoRemoveClass: function(n, t) {
  6310. return i.toggleClass(this, n, t, !1)
  6311. },
  6312. kendoToggleClass: function(n, t, r) {
  6313. return i.toggleClass(this, n, t, r)
  6314. }
  6315. });
  6316. var vr = /&/g,
  6317. yr = /</g,
  6318. pr = />/g;
  6319. lt = function(n) {
  6320. return n.target
  6321. };
  6322. r.touch && (lt = function(n) {
  6323. var t = "originalEvent" in n ? n.originalEvent.changedTouches : "changedTouches" in n ? n.changedTouches : null;
  6324. return t ? document.elementFromPoint(t[0].clientX, t[0].clientY) : n.target
  6325. }, d(["swipe", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "doubleTap", "tap"], function(t, i) {
  6326. n.fn[i] = function(n) {
  6327. return this.bind(i, n)
  6328. }
  6329. }));
  6330. r.touch ? r.mobileOS ? (r.mousedown = "touchstart", r.mouseup = "touchend", r.mousemove = "touchmove", r.mousecancel = "touchcancel", r.click = "touchend", r.resize = "orientationchange") : (r.mousedown = "mousedown touchstart", r.mouseup = "mouseup touchend", r.mousemove = "mousemove touchmove", r.mousecancel = "mouseleave touchcancel", r.click = "click", r.resize = "resize") : r.pointers ? (r.mousemove = "pointermove", r.mousedown = "pointerdown", r.mouseup = "pointerup", r.mousecancel = "pointercancel", r.click = "pointerup", r.resize = "orientationchange resize") : r.msPointers ? (r.mousemove = "MSPointerMove", r.mousedown = "MSPointerDown", r.mouseup = "MSPointerUp", r.mousecancel = "MSPointerCancel", r.click = "MSPointerUp", r.resize = "orientationchange resize") : (r.mousemove = "mousemove", r.mousedown = "mousedown", r.mouseup = "mouseup", r.mousecancel = "mouseleave", r.click = "click", r.resize = "resize");
  6331. ri = function(n, t) {
  6332. for (var o = t || "d", r, i, e = 1, u = 0, f = n.length; u < f; u++) i = n[u], i !== "" && (r = i.indexOf("["), r !== 0 && (r == -1 ? i = "." + i : (e++, i = "." + i.substring(0, r) + " || {})" + i.substring(r))), e++, o += i + (u < f - 1 ? " || {})" : ")"));
  6333. return new Array(e).join("(") + o
  6334. };
  6335. ui = /^([a-z]+:)?\/\//i;
  6336. s(i, {
  6337. ui: i.ui || {},
  6338. fx: i.fx || cr,
  6339. effects: i.effects || h,
  6340. mobile: i.mobile || {},
  6341. data: i.data || {},
  6342. dataviz: i.dataviz || {
  6343. ui: {
  6344. roles: {}
  6345. }
  6346. },
  6347. keys: {
  6348. INSERT: 45,
  6349. DELETE: 46,
  6350. BACKSPACE: 8,
  6351. TAB: 9,
  6352. ENTER: 13,
  6353. ESC: 27,
  6354. LEFT: 37,
  6355. UP: 38,
  6356. RIGHT: 39,
  6357. DOWN: 40,
  6358. END: 35,
  6359. HOME: 36,
  6360. SPACEBAR: 32,
  6361. PAGEUP: 33,
  6362. PAGEDOWN: 34,
  6363. F2: 113,
  6364. F10: 121,
  6365. F12: 123
  6366. },
  6367. support: i.support || r,
  6368. animate: i.animate || ii,
  6369. ns: "",
  6370. attr: function(n) {
  6371. return "data-" + i.ns + n
  6372. },
  6373. wrap: ur,
  6374. deepExtend: kt,
  6375. getComputedStyles: er,
  6376. size: or,
  6377. toCamelCase: gt,
  6378. toHyphens: fr,
  6379. getOffset: i.getOffset || sr,
  6380. parseEffects: i.parseEffects || hr,
  6381. toggleClass: i.toggleClass || ar,
  6382. directions: i.directions || ni,
  6383. Observable: ht,
  6384. Class: ut,
  6385. Template: v,
  6386. template: ot(v.compile, v),
  6387. render: ot(v.render, v),
  6388. stringify: ot(nt.stringify, nt),
  6389. eventTarget: lt,
  6390. htmlEncode: wr,
  6391. isLocalUrl: function(n) {
  6392. return n && !ui.test(n)
  6393. },
  6394. expr: function(n, t, i) {
  6395. return n = n || "", typeof t == u && (i = t, t = !1), i = i || "d", n && n.charAt(0) !== "[" && (n = "." + n), t ? ri(n.split("."), i) : i + n
  6396. },
  6397. getter: function(n, t) {
  6398. return wt[n] = wt[n] || new Function("d", "return " + i.expr(n, t))
  6399. },
  6400. setter: function(n) {
  6401. return bt[n] = bt[n] || new Function("d,value", i.expr(n) + "=value")
  6402. },
  6403. accessor: function(n) {
  6404. return {
  6405. get: i.getter(n),
  6406. set: i.setter(n)
  6407. }
  6408. },
  6409. guid: function() {
  6410. for (var t = "", i, n = 0; n < 32; n++) i = p.random() * 16 | 0, (n == 8 || n == 12 || n == 16 || n == 20) && (t += "-"), t += (n == 12 ? 4 : n == 16 ? i & 3 | 8 : i).toString(16);
  6411. return t
  6412. },
  6413. roleSelector: function(n) {
  6414. return n.replace(/(\S+)/g, "[" + i.attr("role") + "=$1],").slice(0, -1)
  6415. },
  6416. triggeredByInput: function(n) {
  6417. return /^(label|input|textarea|select)$/i.test(n.target.tagName)
  6418. },
  6419. logToConsole: function(n) {
  6420. var t = window.console;
  6421. typeof t != "undefined" && t.log && t.log(n)
  6422. }
  6423. });
  6424. w = ht.extend({
  6425. init: function(n, t) {
  6426. var r = this;
  6427. r.element = i.jQuery(n).handler(r);
  6428. ht.fn.init.call(r);
  6429. t = r.options = s(!0, {}, r.options, t);
  6430. r.element.attr(i.attr("role")) || r.element.attr(i.attr("role"), (t.name || "").toLowerCase());
  6431. r.element.data("kendo" + t.prefix + t.name, r);
  6432. r.bind(r.events, t)
  6433. },
  6434. events: [],
  6435. options: {
  6436. prefix: ""
  6437. },
  6438. _hasBindingTarget: function() {
  6439. return !!this.element[0].kendoBindingTarget
  6440. },
  6441. _tabindex: function(n) {
  6442. n = n || this.wrapper;
  6443. var i = this.element,
  6444. t = "tabindex",
  6445. r = n.attr(t) || i.attr(t);
  6446. i.removeAttr(t);
  6447. n.attr(t, isNaN(r) ? 0 : r)
  6448. },
  6449. setOptions: function(t) {
  6450. for (var i = this, u = 0, f = i.events.length, r; u < f; u++) r = i.events[u], i.options[r] && t[r] && i.unbind(r, i.options[r]);
  6451. n.extend(i.options, t);
  6452. i.bind(i.events, t)
  6453. },
  6454. resize: function(n) {
  6455. var t = this.getSize(),
  6456. i = this._size;
  6457. (n || !i || t.width !== i.width || t.height !== i.height) && (this._resize(t), this.trigger("resize", t), this._size = t)
  6458. },
  6459. getSize: function() {
  6460. return i.dimensions(this.element)
  6461. },
  6462. size: function(n) {
  6463. if (n) this.setSize(n);
  6464. else return this.getSize()
  6465. },
  6466. setSize: n.noop,
  6467. _resize: n.noop,
  6468. destroy: function() {
  6469. var n = this;
  6470. n.element.removeData("kendo" + n.options.prefix + n.options.name);
  6471. n.element.removeData("handler");
  6472. n.unbind()
  6473. }
  6474. });
  6475. i.dimensions = function(n, t) {
  6476. var i = n[0];
  6477. return t && n.css(t), {
  6478. width: i.offsetWidth,
  6479. height: i.offsetHeight
  6480. }
  6481. };
  6482. i.notify = g;
  6483. var br = /template$/i,
  6484. kr = /^\s*(?:\{(?:.|\r\n|\n)*\}|\[(?:.|\r\n|\n)*\])\s*$/,
  6485. dr = /^\{(\d+)(:[^\}]+)?\}/,
  6486. gr = /([A-Z])/g;
  6487. i.initWidget = function(r, f, e) {
  6488. var s, a, o, l, y, h, v, c;
  6489. if ((e ? e.roles && (e = e.roles) : e = i.ui.roles, r = r.nodeType ? r : r[0], h = r.getAttribute("data-" + i.ns + "role"), h) && (o = h.indexOf(".") === -1 ? e[h] : i.getter(h)(window), o)) {
  6490. for (c = at(r, "dataSource"), f = n.extend({}, fi(r, o.fn.options), f), c && (f.dataSource = typeof c === u ? i.getter(c)(window) : c), l = 0, y = o.fn.events.length; l < y; l++) a = o.fn.events[l], v = at(r, a), v !== t && (f[a] = i.getter(v)(window));
  6491. return s = n(r).data("kendo" + o.fn.options.prefix + o.fn.options.name), s ? s.setOptions(f) : s = new o(r, f), s
  6492. }
  6493. };
  6494. i.rolesFromNamespaces = function(n) {
  6495. var r = [],
  6496. t, u;
  6497. for (n[0] || (n = [i.ui, i.dataviz.ui]), t = 0, u = n.length; t < u; t++) r[t] = n[t].roles;
  6498. return s.apply(null, [{}].concat(r.reverse()))
  6499. };
  6500. i.init = function(t) {
  6501. var r = i.rolesFromNamespaces(st.call(arguments, 1));
  6502. n(t).find("[data-" + i.ns + "role]").addBack().each(function() {
  6503. i.initWidget(this, {}, r)
  6504. })
  6505. };
  6506. i.destroy = function(t) {
  6507. n(t).find("[data-" + i.ns + "role]").addBack().each(function() {
  6508. var t = i.widgetInstance(n(this));
  6509. t && t.destroy()
  6510. })
  6511. };
  6512. i.resize = function(t) {
  6513. var u = n(t).find("[data-" + i.ns + "role]").addBack().filter(tu),
  6514. r;
  6515. u.length && (r = n.makeArray(u), r.sort(nu), n.each(r, function() {
  6516. var t = i.widgetInstance(n(this));
  6517. t && t.resize()
  6518. }))
  6519. };
  6520. i.parseOptions = fi;
  6521. s(i.ui, {
  6522. Widget: w,
  6523. roles: {},
  6524. progress: function(t, r) {
  6525. var u = t.find(".k-loading-mask"),
  6526. o = i.support,
  6527. c = o.browser,
  6528. f, s, h, e;
  6529. r ? u.length || (f = o.isRtl(t), s = f ? "right" : "left", e = t.scrollLeft(), h = c.webkit ? f ? t[0].scrollWidth - t.width() - 2 * e : 0 : 0, u = n("<div class='k-loading-mask'><span class='k-loading-text'>Loading...<\/span><div class='k-loading-image'/><div class='k-loading-color'/><\/div>").width("100%").height("100%").css("top", t.scrollTop()).css(s, Math.abs(e) + h).prependTo(t)) : u && u.remove()
  6530. },
  6531. plugin: function(r, f, e) {
  6532. var o = r.fn.options.name,
  6533. s;
  6534. f = f || i.ui;
  6535. e = e || "";
  6536. f[o] = r;
  6537. f.roles[o.toLowerCase()] = r;
  6538. s = "getKendo" + e + o;
  6539. o = "kendo" + e + o;
  6540. n.fn[o] = function(f) {
  6541. var e = this,
  6542. s;
  6543. return typeof f === u ? (s = st.call(arguments, 1), this.each(function() {
  6544. var r = n.data(this, o),
  6545. u, h;
  6546. if (!r) throw new Error(i.format("Cannot call method '{0}' of {1} before it is initialized", f, o));
  6547. if (u = r[f], typeof u !== c) throw new Error(i.format("Cannot find method '{0}' of {1}", f, o));
  6548. return h = u.apply(r, s), h !== t ? (e = h, !1) : void 0
  6549. })) : this.each(function() {
  6550. new r(this, f)
  6551. }), e
  6552. };
  6553. n.fn[s] = function() {
  6554. return this.data(o)
  6555. }
  6556. }
  6557. });
  6558. ei = {
  6559. bind: function() {
  6560. return this
  6561. }
  6562. };
  6563. oi = w.extend({
  6564. init: function(n, t) {
  6565. w.fn.init.call(this, n, t);
  6566. this.element.autoApplyNS();
  6567. this.wrapper = this.element;
  6568. this.element.addClass("km-widget")
  6569. },
  6570. destroy: function() {
  6571. w.fn.destroy.call(this);
  6572. this.element.kendoDestroy()
  6573. },
  6574. options: {
  6575. prefix: "Mobile"
  6576. },
  6577. events: [],
  6578. view: function() {
  6579. var n = this.element.closest(i.roleSelector("view splitview modalview drawer"));
  6580. return i.widgetInstance(n, i.mobile.ui)
  6581. },
  6582. container: function() {
  6583. var n = this.element.closest(i.roleSelector("view layout modalview drawer"));
  6584. return i.widgetInstance(n, i.mobile.ui) || ei
  6585. }
  6586. });
  6587. s(i.mobile, {
  6588. init: function(n) {
  6589. i.init(n, i.mobile.ui, i.ui, i.dataviz.ui)
  6590. },
  6591. ui: {
  6592. Widget: oi,
  6593. roles: {},
  6594. plugin: function(n) {
  6595. i.ui.plugin(n, i.mobile.ui, "Mobile")
  6596. }
  6597. }
  6598. });
  6599. i.touchScroller = function(t, u) {
  6600. return n(t).map(function(t, f) {
  6601. return f = n(f), r.kineticScrollNeeded && i.mobile.ui.Scroller && !f.data("kendoMobileScroller") ? (f.kendoMobileScroller(u), f.data("kendoMobileScroller")) : !1
  6602. })[0]
  6603. };
  6604. i.preventDefault = function(n) {
  6605. n.preventDefault()
  6606. };
  6607. i.widgetInstance = function(n, t) {
  6608. var r = n.data(i.ns + "role"),
  6609. u, f, s, e, o;
  6610. if (r)
  6611. for (r === "content" && (r = "scroller"), u = t ? [t.roles[r]] : [i.ui.roles[r], i.dataviz.ui.roles[r], i.mobile.ui.roles[r]], r.indexOf(".") >= 0 && (u = [i.getter(r)(window)]), f = 0, s = u.length; f < s; f++)
  6612. if (e = u[f], e && (o = n.data("kendo" + e.fn.options.prefix + e.fn.options.name), o)) return o
  6613. };
  6614. i.onResize = function(t) {
  6615. var i = t;
  6616. r.mobileOS.android && (i = function() {
  6617. setTimeout(t, 600)
  6618. });
  6619. n(window).on(r.resize, i);
  6620. return i
  6621. };
  6622. i.unbindResize = function(t) {
  6623. n(window).off(r.resize, t)
  6624. };
  6625. i.attrValue = function(n, t) {
  6626. return n.data(i.ns + t)
  6627. };
  6628. i.days = {
  6629. Sunday: 0,
  6630. Monday: 1,
  6631. Tuesday: 2,
  6632. Wednesday: 3,
  6633. Thursday: 4,
  6634. Friday: 5,
  6635. Saturday: 6
  6636. };
  6637. n.extend(n.expr[":"], {
  6638. kendoFocusable: function(t) {
  6639. var i = n.attr(t, "tabindex");
  6640. return iu(t, !isNaN(i) && i > -1)
  6641. }
  6642. });
  6643. var si = ["mousedown", "mousemove", "mouseenter", "mouseleave", "mouseover", "mouseout", "mouseup", "click"],
  6644. uu = "label, input, [data-rel=external]",
  6645. f = {
  6646. setupMouseMute: function() {
  6647. var t = 0,
  6648. u = si.length,
  6649. e = document.documentElement,
  6650. i;
  6651. if (!f.mouseTrap && r.eventCapture)
  6652. for (f.mouseTrap = !0, f.bustClick = !1, f.captureMouse = !1, i = function(t) {
  6653. f.captureMouse && (t.type === "click" ? f.bustClick && !n(t.target).is(uu) && (t.preventDefault(), t.stopPropagation()) : t.stopPropagation())
  6654. }; t < u; t++) e.addEventListener(si[t], i, !0)
  6655. },
  6656. muteMouse: function(n) {
  6657. f.captureMouse = !0;
  6658. n.data.bustClick && (f.bustClick = !0);
  6659. clearTimeout(f.mouseTrapTimeoutID)
  6660. },
  6661. unMuteMouse: function() {
  6662. clearTimeout(f.mouseTrapTimeoutID);
  6663. f.mouseTrapTimeoutID = setTimeout(function() {
  6664. f.captureMouse = !1;
  6665. f.bustClick = !1
  6666. }, 400)
  6667. }
  6668. },
  6669. b = {
  6670. down: "touchstart mousedown",
  6671. move: "mousemove touchmove",
  6672. up: "mouseup touchend touchcancel",
  6673. cancel: "mouseleave touchcancel"
  6674. };
  6675. r.touch && (r.mobileOS.ios || r.mobileOS.android) ? b = {
  6676. down: "touchstart",
  6677. move: "touchmove",
  6678. up: "touchend touchcancel",
  6679. cancel: "touchcancel"
  6680. } : r.pointers ? b = {
  6681. down: "pointerdown",
  6682. move: "pointermove",
  6683. up: "pointerup",
  6684. cancel: "pointercancel pointerleave"
  6685. } : r.msPointers && (b = {
  6686. down: "MSPointerDown",
  6687. move: "MSPointerMove",
  6688. up: "MSPointerUp",
  6689. cancel: "MSPointerCancel MSPointerLeave"
  6690. });
  6691. !r.msPointers || "onmspointerenter" in window || n.each({
  6692. MSPointerEnter: "MSPointerOver",
  6693. MSPointerLeave: "MSPointerOut"
  6694. }, function(t, i) {
  6695. n.event.special[t] = {
  6696. delegateType: i,
  6697. bindType: i,
  6698. handle: function(t) {
  6699. var u, f = this,
  6700. r = t.relatedTarget,
  6701. e = t.handleObj;
  6702. return r && (r === f || n.contains(f, r)) || (t.type = e.origType, u = e.handler.apply(this, arguments), t.type = i), u
  6703. }
  6704. }
  6705. });
  6706. hi = function(n) {
  6707. return b[n] || n
  6708. };
  6709. vt = /([^ ]+)/g;
  6710. i.applyEventMap = function(n, t) {
  6711. return n = n.replace(vt, hi), t && (n = n.replace(vt, "$1." + t)), n
  6712. };
  6713. et = n.fn.on;
  6714. s(!0, o, n);
  6715. o.fn = o.prototype = new n;
  6716. o.fn.constructor = o;
  6717. o.fn.init = function(t, i) {
  6718. return i && i instanceof n && !(i instanceof o) && (i = o(i)), n.fn.init.call(this, t, i, ci)
  6719. };
  6720. o.fn.init.prototype = o.fn;
  6721. ci = o(document);
  6722. s(o.fn, {
  6723. handler: function(n) {
  6724. return this.data("handler", n), this
  6725. },
  6726. autoApplyNS: function(n) {
  6727. return this.data("kendoNS", n || i.guid()), this
  6728. },
  6729. on: function() {
  6730. var t = this,
  6731. l = t.data("kendoNS"),
  6732. s, n, e, o, h, c;
  6733. return arguments.length === 1 ? et.call(t, arguments[0]) : (s = t, n = st.call(arguments), typeof n[n.length - 1] === rt && n.pop(), e = n[n.length - 1], o = i.applyEventMap(n[0], l), r.mouseAndTouchPresent && o.search(/mouse|click/) > -1 && this[0] !== document.documentElement && (f.setupMouseMute(), h = n.length === 2 ? null : n[1], c = o.indexOf("click") > -1 && o.indexOf("touchend") > -1, et.call(this, {
  6734. touchstart: f.muteMouse,
  6735. touchend: f.unMuteMouse
  6736. }, h, {
  6737. bustClick: c
  6738. })), typeof e === u && (s = t.data("handler"), e = s[e], n[n.length - 1] = function(n) {
  6739. e.call(s, n)
  6740. }), n[0] = o, et.apply(t, n), t)
  6741. },
  6742. kendoDestroy: function(n) {
  6743. return n = n || this.data("kendoNS"), n && this.off("." + n), this
  6744. }
  6745. });
  6746. i.jQuery = o;
  6747. i.eventMap = b;
  6748. i.timezone = function() {
  6749. function i(i, r) {
  6750. var u, o, s, c = r[3],
  6751. e = r[4],
  6752. f = r[5],
  6753. h = r[8];
  6754. return (h || (r[8] = h = {}), h[i]) ? h[i] : (isNaN(e) ? e.indexOf("last") === 0 ? (u = new Date(Date.UTC(i, n[c] + 1, 1, f[0] - 24, f[1], f[2], 0)), o = t[e.substr(4, 3)], s = u.getUTCDay(), u.setUTCDate(u.getUTCDate() + o - s - (o > s ? 7 : 0))) : e.indexOf(">=") >= 0 && (u = new Date(Date.UTC(i, n[c], e.substr(5), f[0], f[1], f[2], 0)), o = t[e.substr(0, 3)], s = u.getUTCDay(), u.setUTCDate(u.getUTCDate() + o - s + (o < s ? 7 : 0))) : u = new Date(Date.UTC(i, n[c], e, f[0], f[1], f[2], 0)), h[i] = u)
  6755. }
  6756. function f(n, t, r) {
  6757. var f, e, u;
  6758. return (t = t[r], !t) ? (f = r.split(":"), e = 0, f.length > 1 && (e = f[0] * 60 + Number(f[1])), [-1e6, "max", "-", "Jan", 1, [0, 0, 0], e, "-"]) : (u = new Date(n).getUTCFullYear(), t = jQuery.grep(t, function(n) {
  6759. var i = n[0],
  6760. t = n[1];
  6761. return i <= u && (t >= u || i == u && t == "only" || t == "max")
  6762. }), t.push(n), t.sort(function(n, t) {
  6763. return typeof n != "number" && (n = Number(i(u, n))), typeof t != "number" && (t = Number(i(u, t))), n - t
  6764. }), t[jQuery.inArray(n, t) - 1])
  6765. }
  6766. function e(n, t, i) {
  6767. var r = t[i],
  6768. u, f, e;
  6769. if (typeof r == "string" && (r = t[r]), !r) throw new Error('Timezone "' + i + '" is either incorrect, or kendo.timezones.min.js is not included.');
  6770. for (u = r.length - 1; u >= 0; u--)
  6771. if (f = r[u][3], f && n > f) break;
  6772. if (e = r[u + 1], !e) throw new Error('Timezone "' + i + '" not found on ' + n + ".");
  6773. return e
  6774. }
  6775. function r(n, t, i, r) {
  6776. typeof n != l && (n = Date.UTC(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()));
  6777. var u = e(n, t, r);
  6778. return {
  6779. zone: u,
  6780. rule: f(n, i, u[1])
  6781. }
  6782. }
  6783. function o(n, t) {
  6784. if (t == "Etc/UTC" || t == "Etc/GMT") return 0;
  6785. var i = r(n, this.zones, this.rules, t),
  6786. u = i.zone,
  6787. f = i.rule;
  6788. return f ? u[0] - f[6] : u[0]
  6789. }
  6790. function s(n, t) {
  6791. var f = r(n, this.zones, this.rules, t),
  6792. e = f.zone,
  6793. i = f.rule,
  6794. u = e[2];
  6795. return u.indexOf("/") >= 0 ? u.split("/")[i && i[6] ? 1 : 0] : u.indexOf("%s") >= 0 ? u.replace("%s", !i || i[7] == "-" ? "" : i[7]) : u
  6796. }
  6797. function h(n, t, i) {
  6798. var r, f;
  6799. return typeof t == u && (t = this.offset(n, t)), typeof i == u && (i = this.offset(n, i)), r = n.getTimezoneOffset(), n = new Date(n.getTime() + (t - i) * 6e4), f = n.getTimezoneOffset(), new Date(n.getTime() + (f - r) * 6e4)
  6800. }
  6801. function c(n, t) {
  6802. return this.convert(n, n.getTimezoneOffset(), t)
  6803. }
  6804. function a(n, t) {
  6805. return this.convert(n, t, n.getTimezoneOffset())
  6806. }
  6807. function v(n) {
  6808. return this.apply(new Date(n), "Etc/UTC")
  6809. }
  6810. var n = {
  6811. Jan: 0,
  6812. Feb: 1,
  6813. Mar: 2,
  6814. Apr: 3,
  6815. May: 4,
  6816. Jun: 5,
  6817. Jul: 6,
  6818. Aug: 7,
  6819. Sep: 8,
  6820. Oct: 9,
  6821. Nov: 10,
  6822. Dec: 11
  6823. },
  6824. t = {
  6825. Sun: 0,
  6826. Mon: 1,
  6827. Tue: 2,
  6828. Wed: 3,
  6829. Thu: 4,
  6830. Fri: 5,
  6831. Sat: 6
  6832. };
  6833. return {
  6834. zones: {},
  6835. rules: {},
  6836. offset: o,
  6837. convert: h,
  6838. apply: c,
  6839. remove: a,
  6840. abbr: s,
  6841. toLocalDate: v
  6842. }
  6843. }();
  6844. i.date = function() {
  6845. function t(n, t) {
  6846. return t === 0 && n.getHours() === 23 ? (n.setHours(n.getHours() + 2), !0) : !1
  6847. }
  6848. function e(n, i, r) {
  6849. var u = n.getHours();
  6850. r = r || 1;
  6851. i = (i - n.getDay() + 7 * r) % 7;
  6852. n.setDate(n.getDate() + i);
  6853. t(n, u)
  6854. }
  6855. function c(n, t, i) {
  6856. return n = new Date(n), e(n, t, i), n
  6857. }
  6858. function o(n) {
  6859. return new Date(n.getFullYear(), n.getMonth(), 1)
  6860. }
  6861. function l(n) {
  6862. var t = new Date(n.getFullYear(), n.getMonth() + 1, 0),
  6863. i = o(n),
  6864. r = Math.abs(t.getTimezoneOffset() - i.getTimezoneOffset());
  6865. return r && t.setHours(i.getHours() + r / 60), t
  6866. }
  6867. function i(n) {
  6868. return n = new Date(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0), t(n, 0), n
  6869. }
  6870. function a(n) {
  6871. return Date.UTC(n.getFullYear(), n.getMonth(), n.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds())
  6872. }
  6873. function r(n) {
  6874. return n.getTime() - i(n)
  6875. }
  6876. function v(t, i, u) {
  6877. var e = r(i),
  6878. o = r(u),
  6879. f;
  6880. return !t || e == o ? !0 : (i >= u && (u += n), f = r(t), e > f && (f += n), o < e && (o += n), f >= e && f <= o)
  6881. }
  6882. function y(t, i, r) {
  6883. var e = i.getTime(),
  6884. u = r.getTime(),
  6885. f;
  6886. return e >= u && (u += n), f = t.getTime(), f >= e && f <= u
  6887. }
  6888. function u(i, r) {
  6889. var u = i.getHours();
  6890. return i = new Date(i), s(i, r * n), t(i, u), i
  6891. }
  6892. function s(n, t, i) {
  6893. var u = n.getTimezoneOffset(),
  6894. r;
  6895. n.setTime(n.getTime() + t);
  6896. i || (r = n.getTimezoneOffset() - u, n.setTime(n.getTime() + r * f))
  6897. }
  6898. function h() {
  6899. return i(new Date)
  6900. }
  6901. function p(n) {
  6902. return i(n).getTime() == h().getTime()
  6903. }
  6904. function w(n) {
  6905. var t = new Date(1980, 1, 1, 0, 0, 0);
  6906. return n && t.setHours(n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()), t
  6907. }
  6908. var f = 6e4,
  6909. n = 864e5;
  6910. return {
  6911. adjustDST: t,
  6912. dayOfWeek: c,
  6913. setDayOfWeek: e,
  6914. getDate: i,
  6915. isInDateRange: y,
  6916. isInTimeRange: v,
  6917. isToday: p,
  6918. nextDay: function(n) {
  6919. return u(n, 1)
  6920. },
  6921. previousDay: function(n) {
  6922. return u(n, -1)
  6923. },
  6924. toUtcTime: a,
  6925. MS_PER_DAY: n,
  6926. MS_PER_MINUTE: f,
  6927. setTime: s,
  6928. addDays: u,
  6929. today: h,
  6930. toInvariantTime: w,
  6931. firstDayOfMonth: o,
  6932. lastDayOfMonth: l,
  6933. getMilliseconds: r
  6934. }
  6935. }();
  6936. i.stripWhitespace = function(n) {
  6937. for (var t = document.createNodeIterator(n, NodeFilter.SHOW_TEXT, function(t) {
  6938. return t.parentNode == n ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT
  6939. }, !1); t.nextNode();) t.referenceNode && !t.referenceNode.textContent.trim() && t.referenceNode.parentNode.removeChild(t.referenceNode)
  6940. };
  6941. yt = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(n) {
  6942. setTimeout(n, 1e3 / 60)
  6943. };
  6944. i.animationFrame = function(n) {
  6945. yt.call(window, n)
  6946. };
  6947. k = [];
  6948. i.queueAnimation = function(n) {
  6949. k[k.length] = n;
  6950. k.length === 1 && i.runNextAnimation()
  6951. };
  6952. i.runNextAnimation = function() {
  6953. var n = k.shift();
  6954. i.animationFrame(function() {
  6955. n();
  6956. yt[0] && i.runNextAnimation()
  6957. })
  6958. };
  6959. i.parseQueryStringParams = function(n) {
  6960. for (var u = n.split("?")[1] || "", r = {}, i = u.split(/&|=/), f = i.length, t = 0; t < f; t += 2) i[t] !== "" && (r[decodeURIComponent(i[t])] = decodeURIComponent(i[t + 1]));
  6961. return r
  6962. }
  6963. }(jQuery);
  6964. typeof kendo_module == "undefined" && (kendo_module = function() {});
  6965. kendo_module({
  6966. id: "core",
  6967. name: "Core",
  6968. category: "framework",
  6969. description: "The core of the Kendo framework."
  6970. });
  6971. kendo_module({
  6972. id: "fx",
  6973. name: "Effects",
  6974. category: "framework",
  6975. description: "Required for animation effects in all Kendo UI widgets.",
  6976. depends: ["core"]
  6977. }),
  6978. function(n, t) {
  6979. function ii(n) {
  6980. return parseInt(n, 10)
  6981. }
  6982. function p(n, t) {
  6983. return ii(n.css(t))
  6984. }
  6985. function ir(n) {
  6986. var t = n.effects;
  6987. return t === "zoom" && (t = "zoom:in fade:in"), t === "fade" && (t = "fade:in"), t === "slide" && (t = "tile:left"), /^slide:(.+)$/.test(t) && (t = "tile:" + RegExp.$1), t === "overlay" && (t = "slideIn:left"), /^overlay:(.+)$/.test(t) && (t = "slideIn:" + RegExp.$1), n.effects = i.parseEffects(t), tr && t == "tile:left" && (n.previousDivisor = 3), n
  6988. }
  6989. function rr(n) {
  6990. var t = [];
  6991. for (var i in n) t.push(i);
  6992. return t
  6993. }
  6994. function st(n) {
  6995. for (var t in n) rt.indexOf(t) != -1 && d.indexOf(t) == -1 && delete n[t];
  6996. return n
  6997. }
  6998. function ht(n, t) {
  6999. var r = [],
  7000. u = {},
  7001. o, i, s, c;
  7002. for (i in t) o = i.toLowerCase(), c = f && rt.indexOf(o) != -1, !h.hasHW3D && c && d.indexOf(o) == -1 ? delete t[i] : (s = t[i], c ? r.push(i + "(" + s + ")") : u[i] = s);
  7003. return r.length && (u[e] = r.join(" ")), u
  7004. }
  7005. function ri(n, t) {
  7006. var u, i, r;
  7007. return f ? (u = n.css(e), u == gi) ? t == "scale" ? 1 : 0 : (i = u.match(new RegExp(t + "\\s*\\(([\\d\\w\\.]+)")), r = 0, i ? r = ii(i[1]) : (i = u.match(vi) || [0, 0, 0, 0, 0], t = t.toLowerCase(), yi.test(t) ? r = parseFloat(i[3] / i[2]) : t == "translatey" ? r = parseFloat(i[4] / i[2]) : t == "scale" ? r = parseFloat(i[2]) : t == "rotate" && (r = parseFloat(Math.atan2(i[2], i[1])))), r) : parseFloat(n.css(t))
  7008. }
  7009. function lt(n) {
  7010. return n.charAt(0).toUpperCase() + n.substring(1)
  7011. }
  7012. function o(n, t) {
  7013. var i = l.extend(t),
  7014. r = i.prototype.directions;
  7015. u[lt(n)] = i;
  7016. u.Element.prototype[n] = function(n, t, r, u) {
  7017. return new i(this.element, n, t, r, u)
  7018. };
  7019. a(r, function(t, r) {
  7020. u.Element.prototype[n + lt(r)] = function(n, t, u) {
  7021. return new i(this.element, r, n, t, u)
  7022. }
  7023. })
  7024. }
  7025. function fi(n, t, i, r) {
  7026. o(n, {
  7027. directions: ui,
  7028. startValue: function(n) {
  7029. return this._startValue = n, this
  7030. },
  7031. endValue: function(n) {
  7032. return this._endValue = n, this
  7033. },
  7034. shouldHide: function() {
  7035. return this._shouldHide
  7036. },
  7037. prepare: function(n, u) {
  7038. var s = this,
  7039. f, e, h = this._direction === "out",
  7040. o = s.element.data(t),
  7041. c = !(isNaN(o) || o == i);
  7042. f = c ? o : typeof this._startValue != "undefined" ? this._startValue : h ? i : r;
  7043. e = typeof this._endValue != "undefined" ? this._endValue : h ? r : i;
  7044. this._reverse ? (n[t] = e, u[t] = f) : (n[t] = f, u[t] = e);
  7045. s._shouldHide = u[t] === r
  7046. }
  7047. })
  7048. }
  7049. function hi(n, t) {
  7050. var r = i.directions[t].vertical,
  7051. u = n[r ? nt : ft]() / 2 + "px";
  7052. return oi[t].replace("$size", u)
  7053. }
  7054. var i = window.kendo,
  7055. u = i.effects,
  7056. a = n.each,
  7057. r = n.extend,
  7058. ci = n.proxy,
  7059. h = i.support,
  7060. vt = h.browser,
  7061. f = h.transforms,
  7062. s = h.transitions,
  7063. li = {
  7064. scale: 0,
  7065. scalex: 0,
  7066. scaley: 0,
  7067. scale3d: 0
  7068. },
  7069. ai = {
  7070. translate: 0,
  7071. translatex: 0,
  7072. translatey: 0,
  7073. translate3d: 0
  7074. },
  7075. yt = typeof document.documentElement.style.zoom != "undefined" && !f,
  7076. vi = /matrix3?d?\s*\(.*,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?,\s*([\d\.\-]+)\w*?/i,
  7077. pt = /^(-?[\d\.\-]+)?[\w\s]*,?\s*(-?[\d\.\-]+)?[\w\s]*/i,
  7078. yi = /translatex?$/i,
  7079. pi = /(zoom|fade|expand)(\w+)/,
  7080. wt = /(zoom|fade|expand)/,
  7081. wi = /[xy]$/i,
  7082. rt = ["perspective", "rotate", "rotatex", "rotatey", "rotatez", "rotate3d", "scale", "scalex", "scaley", "scalez", "scale3d", "skew", "skewx", "skewy", "translate", "translatex", "translatey", "translatez", "translate3d", "matrix", "matrix3d"],
  7083. d = ["rotate", "scale", "scalex", "scaley", "skew", "skewx", "skewy", "translate", "translatex", "translatey", "matrix"],
  7084. bi = {
  7085. rotate: "deg",
  7086. scale: "",
  7087. skew: "px",
  7088. translate: "px"
  7089. },
  7090. g = f.css,
  7091. ki = Math.round,
  7092. di = "",
  7093. w = "px",
  7094. gi = "none",
  7095. ut = "auto",
  7096. ft = "width",
  7097. nt = "height",
  7098. bt = "hidden",
  7099. et = "origin",
  7100. kt = "abortId",
  7101. tt = "overflow",
  7102. v = "translate",
  7103. b = "position",
  7104. dt = "completeCallback",
  7105. y = g + "transition",
  7106. e = g + "transform",
  7107. nr = g + "backface-visibility",
  7108. gt = g + "perspective",
  7109. ot = "1500px",
  7110. ni = "perspective(" + ot + ")",
  7111. tr = h.mobileOS && h.mobileOS.majorVersion == 7,
  7112. c = {
  7113. left: {
  7114. reverse: "right",
  7115. property: "left",
  7116. transition: "translatex",
  7117. vertical: !1,
  7118. modifier: -1
  7119. },
  7120. right: {
  7121. reverse: "left",
  7122. property: "left",
  7123. transition: "translatex",
  7124. vertical: !1,
  7125. modifier: 1
  7126. },
  7127. down: {
  7128. reverse: "up",
  7129. property: "top",
  7130. transition: "translatey",
  7131. vertical: !0,
  7132. modifier: 1
  7133. },
  7134. up: {
  7135. reverse: "down",
  7136. property: "top",
  7137. transition: "translatey",
  7138. vertical: !0,
  7139. modifier: -1
  7140. },
  7141. top: {
  7142. reverse: "bottom"
  7143. },
  7144. bottom: {
  7145. reverse: "top"
  7146. },
  7147. "in": {
  7148. reverse: "out",
  7149. modifier: -1
  7150. },
  7151. out: {
  7152. reverse: "in",
  7153. modifier: 1
  7154. },
  7155. vertical: {
  7156. reverse: "vertical"
  7157. },
  7158. horizontal: {
  7159. reverse: "horizontal"
  7160. }
  7161. },
  7162. ti, ct, l, k, ui, ei, oi, si, it, at;
  7163. i.directions = c;
  7164. r(n.fn, {
  7165. kendoStop: function(n, t) {
  7166. return s ? u.stopQueue(this, n || !1, t || !1) : this.stop(n, t)
  7167. }
  7168. });
  7169. f && !s && (a(d, function(t, i) {
  7170. n.fn[i] = function(t) {
  7171. if (typeof t == "undefined") return ri(this, i);
  7172. var r = n(this)[0],
  7173. u = i + "(" + t + bi[i.replace(wi, "")] + ")";
  7174. return r.style.cssText.indexOf(e) == -1 ? n(this).css(e, u) : r.style.cssText = r.style.cssText.replace(new RegExp(i + "\\(.*?\\)", "i"), u), this
  7175. };
  7176. n.fx.step[i] = function(t) {
  7177. n(t.elem)[i](t.now)
  7178. }
  7179. }), ti = n.fx.prototype.cur, n.fx.prototype.cur = function() {
  7180. return d.indexOf(this.prop) != -1 ? parseFloat(n(this.elem)[this.prop]()) : ti.apply(this, arguments)
  7181. });
  7182. i.toggleClass = function(n, t, i, u) {
  7183. return t && (t = t.split(" "), s && (i = r({
  7184. exclusive: "all",
  7185. duration: 400,
  7186. ease: "ease-out"
  7187. }, i), n.css(y, i.exclusive + " " + i.duration + "ms " + i.ease), setTimeout(function() {
  7188. n.css(y, "").css(nt)
  7189. }, i.duration)), a(t, function(t, i) {
  7190. n.toggleClass(i, u)
  7191. })), n
  7192. };
  7193. i.parseEffects = function(n, t) {
  7194. var i = {};
  7195. return typeof n == "string" ? a(n.split(" "), function(n, r) {
  7196. var o = !wt.test(r),
  7197. s = r.replace(pi, function(n, t, i) {
  7198. return t + ":" + i.toLowerCase()
  7199. }),
  7200. u = s.split(":"),
  7201. f = u[1],
  7202. e = {};
  7203. u.length > 1 && (e.direction = t && o ? c[f].reverse : f);
  7204. i[u[0]] = e
  7205. }) : a(n, function(n) {
  7206. var r = this.direction;
  7207. r && t && !wt.test(n) && (this.direction = c[r].reverse);
  7208. i[n] = this
  7209. }), i
  7210. };
  7211. s && r(u, {
  7212. transition: function(t, i, u) {
  7213. var h, l = 0,
  7214. a = t.data("keys") || [],
  7215. f, c, o;
  7216. if (u = r({
  7217. duration: 200,
  7218. ease: "ease-out",
  7219. complete: null,
  7220. exclusive: "all"
  7221. }, u), c = !1, o = function() {
  7222. c || (c = !0, f && (clearTimeout(f), f = null), t.removeData(kt).dequeue().css(y, "").css(y), u.complete.call(t))
  7223. }, u.duration = n.fx ? n.fx.speeds[u.duration] || u.duration : u.duration, h = ht(t, i), n.merge(a, rr(h)), t.data("keys", n.unique(a)).height(), t.css(y, u.exclusive + " " + u.duration + "ms " + u.ease).css(y), t.css(h).css(e), s.event) {
  7224. t.one(s.event, o);
  7225. u.duration !== 0 && (l = 500)
  7226. }
  7227. f = setTimeout(o, u.duration + l);
  7228. t.data(kt, f);
  7229. t.data(dt, o)
  7230. },
  7231. stopQueue: function(n, t, r) {
  7232. var u, f = n.data("keys"),
  7233. e = !r && f,
  7234. o = n.data(dt);
  7235. return e && (u = i.getComputedStyles(n[0], f)), o && o(), e && n.css(u), n.removeData("keys").stop(t)
  7236. }
  7237. });
  7238. ct = i.Class.extend({
  7239. init: function(n, t) {
  7240. var i = this;
  7241. i.element = n;
  7242. i.effects = [];
  7243. i.options = t;
  7244. i.restore = []
  7245. },
  7246. run: function(t) {
  7247. var a = this,
  7248. l, h, v, k = t.length,
  7249. c = a.element,
  7250. i = a.options,
  7251. p = n.Deferred(),
  7252. o = {},
  7253. y = {},
  7254. w, b, d, g;
  7255. for (a.effects = t, p.then(n.proxy(a, "complete")), c.data("animating", !0), h = 0; h < k; h++)
  7256. for (l = t[h], l.setReverse(i.reverse), l.setOptions(i), a.addRestoreProperties(l.restore), l.prepare(o, y), b = l.children(), v = 0, d = b.length; v < d; v++) b[v].duration(i.duration).run();
  7257. for (g in i.effects) r(y, i.effects[g].properties);
  7258. for (c.is(":visible") || r(o, {
  7259. display: c.data("olddisplay") || "block"
  7260. }), f && !i.reset && (w = c.data("targetTransform"), w && (o = r(w, o))), o = ht(c, o), f && !s && (o = st(o)), c.css(o).css(e), h = 0; h < k; h++) t[h].setup();
  7261. return i.init && i.init(), c.data("targetTransform", y), u.animate(c, y, r({}, i, {
  7262. complete: p.resolve
  7263. })), p.promise()
  7264. },
  7265. stop: function() {
  7266. n(this.element).kendoStop(!0, !0)
  7267. },
  7268. addRestoreProperties: function(n) {
  7269. for (var i = this.element, t, r = 0, u = n.length; r < u; r++) t = n[r], this.restore.push(t), i.data(t) || i.data(t, i.css(t))
  7270. },
  7271. restoreCallback: function() {
  7272. for (var t, i = this.element, n = 0, r = this.restore.length; n < r; n++) t = this.restore[n], i.css(t, i.data(t))
  7273. },
  7274. complete: function() {
  7275. var i = this,
  7276. r = 0,
  7277. t = i.element,
  7278. u = i.options,
  7279. e = i.effects,
  7280. o = e.length;
  7281. for (t.removeData("animating").dequeue(), u.hide && t.data("olddisplay", t.css("display")).hide(), this.restoreCallback(), yt && !f && setTimeout(n.proxy(this, "restoreCallback"), 0); r < o; r++) e[r].teardown();
  7282. u.completeCallback && u.completeCallback(t)
  7283. }
  7284. });
  7285. u.promise = function(n, t) {
  7286. var r = [],
  7287. f, s = new ct(n, t),
  7288. e = i.parseEffects(t.effects),
  7289. h, o;
  7290. t.effects = e;
  7291. for (o in e) f = u[lt(o)], f && (h = new f(n, e[o].direction), r.push(h));
  7292. r[0] ? s.run(r) : (n.is(":visible") || n.css({
  7293. display: n.data("olddisplay") || "block"
  7294. }).css("display"), t.init && t.init(), n.dequeue(), s.complete())
  7295. };
  7296. u.transitionPromise = function(n, t, i) {
  7297. return u.animateTo(n, t, i), n
  7298. };
  7299. r(u, {
  7300. animate: function(i, e, o) {
  7301. var h = o.transition !== !1;
  7302. delete o.transition;
  7303. s && "transition" in u && h ? u.transition(i, e, o) : f ? i.animate(st(e), {
  7304. queue: !1,
  7305. show: !1,
  7306. hide: !1,
  7307. duration: o.duration,
  7308. complete: o.complete
  7309. }) : i.each(function() {
  7310. var i = n(this),
  7311. u = {};
  7312. a(rt, function(n, o) {
  7313. var c, y = e ? e[o] + " " : null,
  7314. s, w, k, h, l, a;
  7315. y && (s = e, o in li && e[o] !== t ? (c = y.match(pt), f && r(s, {
  7316. scale: +c[0]
  7317. })) : o in ai && e[o] !== t && (w = i.css(b), k = w == "absolute" || w == "fixed", i.data(v) || (k ? i.data(v, {
  7318. top: p(i, "top") || 0,
  7319. left: p(i, "left") || 0,
  7320. bottom: p(i, "bottom"),
  7321. right: p(i, "right")
  7322. }) : i.data(v, {
  7323. top: p(i, "marginTop") || 0,
  7324. left: p(i, "marginLeft") || 0
  7325. })), h = i.data(v), c = y.match(pt), c && (l = o == v + "y" ? 0 : +c[1], a = o == v + "y" ? +c[1] : +c[2], k ? (isNaN(h.right) ? isNaN(l) || r(s, {
  7326. left: h.left + l
  7327. }) : isNaN(l) || r(s, {
  7328. right: h.right - l
  7329. }), isNaN(h.bottom) ? isNaN(a) || r(s, {
  7330. top: h.top + a
  7331. }) : isNaN(a) || r(s, {
  7332. bottom: h.bottom - a
  7333. })) : (isNaN(l) || r(s, {
  7334. marginLeft: h.left + l
  7335. }), isNaN(a) || r(s, {
  7336. marginTop: h.top + a
  7337. })))), !f && o != "scale" && o in s && delete s[o], s && r(u, s))
  7338. });
  7339. vt.msie && delete u.scale;
  7340. i.animate(u, {
  7341. queue: !1,
  7342. show: !1,
  7343. hide: !1,
  7344. duration: o.duration,
  7345. complete: o.complete
  7346. })
  7347. })
  7348. },
  7349. animateTo: function(t, i, u) {
  7350. function a(n) {
  7351. i[0].style.cssText = "";
  7352. t.each(function() {
  7353. this.style.cssText = ""
  7354. });
  7355. h.mobileOS.android || f.css(tt, c);
  7356. s || e.css(b, l);
  7357. u.completeCallback && u.completeCallback.call(t, n)
  7358. }
  7359. var o, f = t.parents().filter(i.parents()).first(),
  7360. e = n().add(t.parent()).add(i.parent()),
  7361. s = t.css(b) == "absolute",
  7362. c, l;
  7363. s || (l = e.css(b), e.css(b, "absolute"));
  7364. u = ir(u);
  7365. h.mobileOS.android || (c = f.css(tt), f.css(tt, "hidden"));
  7366. n.each(u.effects, function(n, t) {
  7367. o = o || t.direction
  7368. });
  7369. u.complete = vt.msie ? function() {
  7370. setTimeout(a, 0)
  7371. } : a;
  7372. u.previous = u.reverse ? i : t;
  7373. u.reset = !0;
  7374. (u.reverse ? t : i).each(function() {
  7375. n(this).kendoAnimate(r(!0, {}, u));
  7376. u.complete = null;
  7377. u.previous = null
  7378. })
  7379. }
  7380. });
  7381. u.animatedPromise = u.promise;
  7382. u.animatedTransitionPromise = u.transitionPromise;
  7383. l = i.Class.extend({
  7384. init: function(n, t) {
  7385. var i = this;
  7386. i.element = n;
  7387. i._direction = t;
  7388. i.options = {};
  7389. i._additionalEffects = [];
  7390. i.restore || (i.restore = [])
  7391. },
  7392. reverse: function() {
  7393. return this._reverse = !0, this.run()
  7394. },
  7395. play: function() {
  7396. return this._reverse = !1, this.run()
  7397. },
  7398. add: function(n) {
  7399. return this._additionalEffects.push(n), this
  7400. },
  7401. direction: function(n) {
  7402. return this._direction = n, this
  7403. },
  7404. duration: function(n) {
  7405. return this._duration = n, this
  7406. },
  7407. compositeRun: function() {
  7408. var n = this,
  7409. t = new ct(n.element, {
  7410. reverse: n._reverse,
  7411. duration: n._duration
  7412. }),
  7413. i = n._additionalEffects.concat([n]);
  7414. return t.run(i)
  7415. },
  7416. run: function() {
  7417. if (this._additionalEffects && this._additionalEffects[0]) return this.compositeRun();
  7418. var o = this,
  7419. t = o.element,
  7420. h = 0,
  7421. y = o.restore,
  7422. w = y.length,
  7423. c, l = n.Deferred(),
  7424. i = {},
  7425. a = {},
  7426. v, p = o.children(),
  7427. b = p.length;
  7428. for (l.then(n.proxy(o, "_complete")), t.data("animating", !0), h = 0; h < w; h++) c = y[h], t.data(c) || t.data(c, t.css(c));
  7429. for (h = 0; h < b; h++) p[h].duration(o._duration).run();
  7430. return o.prepare(i, a), t.is(":visible") || r(i, {
  7431. display: t.data("olddisplay") || "block"
  7432. }), f && (v = t.data("targetTransform"), v && (i = r(v, i))), i = ht(t, i), f && !s && (i = st(i)), t.css(i).css(e), o.setup(), t.data("targetTransform", a), u.animate(t, a, {
  7433. duration: o._duration,
  7434. complete: l.resolve
  7435. }), l.promise()
  7436. },
  7437. stop: function() {
  7438. for (var t = 0, i = this.children(), r = i.length, t = 0; t < r; t++) i[t].stop();
  7439. return n(this.element).kendoStop(!0, !0), this
  7440. },
  7441. restoreCallback: function() {
  7442. for (var t, i = this.element, n = 0, r = this.restore.length; n < r; n++) t = this.restore[n], i.css(t, i.data(t))
  7443. },
  7444. _complete: function() {
  7445. var t = this,
  7446. i = t.element;
  7447. i.removeData("animating").dequeue();
  7448. t.restoreCallback();
  7449. t.shouldHide() && i.data("olddisplay", i.css("display")).hide();
  7450. yt && !f && setTimeout(n.proxy(t, "restoreCallback"), 0);
  7451. t.teardown()
  7452. },
  7453. setOptions: function(n) {
  7454. r(!0, this.options, n)
  7455. },
  7456. children: function() {
  7457. return []
  7458. },
  7459. shouldHide: n.noop,
  7460. setup: n.noop,
  7461. prepare: n.noop,
  7462. teardown: n.noop,
  7463. directions: [],
  7464. setReverse: function(n) {
  7465. return this._reverse = n, this
  7466. }
  7467. });
  7468. k = ["left", "right", "up", "down"];
  7469. ui = ["in", "out"];
  7470. o("slideIn", {
  7471. directions: k,
  7472. divisor: function(n) {
  7473. return this.options.divisor = n, this
  7474. },
  7475. prepare: function(n, t) {
  7476. var r = this,
  7477. u, e = r.element,
  7478. i = c[r._direction],
  7479. h = -i.modifier * (i.vertical ? e.outerHeight() : e.outerWidth()),
  7480. o = h / (r.options && r.options.divisor || 1) + w,
  7481. s = "0px";
  7482. r._reverse && (u = n, n = t, t = u);
  7483. f ? (n[i.transition] = o, t[i.transition] = s) : (n[i.property] = o, t[i.property] = s)
  7484. }
  7485. });
  7486. o("tile", {
  7487. directions: k,
  7488. init: function(n, t, i) {
  7489. l.prototype.init.call(this, n, t);
  7490. this.options = {
  7491. previous: i
  7492. }
  7493. },
  7494. previousDivisor: function(n) {
  7495. return this.options.previousDivisor = n, this
  7496. },
  7497. children: function() {
  7498. var n = this,
  7499. t = n._reverse,
  7500. r = n.options.previous,
  7501. e = n.options.previousDivisor || 1,
  7502. u = n._direction,
  7503. f = [i.fx(n.element).slideIn(u).setReverse(t)];
  7504. return r && f.push(i.fx(r).slideIn(c[u].reverse).divisor(e).setReverse(!t)), f
  7505. }
  7506. });
  7507. fi("fade", "opacity", 1, 0);
  7508. fi("zoom", "scale", 1, .01);
  7509. o("slideMargin", {
  7510. prepare: function(n, t) {
  7511. var r = this,
  7512. i = r.element,
  7513. u = r.options,
  7514. o = i.data(et),
  7515. s = u.offset,
  7516. f, e = r._reverse;
  7517. e || o !== null || i.data(et, parseFloat(i.css("margin-" + u.axis)));
  7518. f = i.data(et) || 0;
  7519. t["margin-" + u.axis] = e ? f : f + s
  7520. }
  7521. });
  7522. o("slideTo", {
  7523. prepare: function(n, t) {
  7524. var u = this,
  7525. e = u.element,
  7526. o = u.options,
  7527. i = o.offset.split(","),
  7528. r = u._reverse;
  7529. f ? (t.translatex = r ? 0 : i[0], t.translatey = r ? 0 : i[1]) : (t.left = r ? 0 : i[0], t.top = r ? 0 : i[1]);
  7530. e.css("left")
  7531. }
  7532. });
  7533. o("expand", {
  7534. directions: ["horizontal", "vertical"],
  7535. restore: [tt],
  7536. prepare: function(n, i) {
  7537. var f = this,
  7538. e = f.element,
  7539. o = f.options,
  7540. s = f._reverse,
  7541. r = f._direction === "vertical" ? nt : ft,
  7542. h = e[0].style[r],
  7543. c = e.data(r),
  7544. u = parseFloat(c || h),
  7545. l = ki(e.css(r, ut)[r]());
  7546. n.overflow = bt;
  7547. u = o && o.reset ? l || u : u || l;
  7548. i[r] = (s ? 0 : u) + w;
  7549. n[r] = (s ? u : 0) + w;
  7550. c === t && e.data(r, h)
  7551. },
  7552. shouldHide: function() {
  7553. return this._reverse
  7554. },
  7555. teardown: function() {
  7556. var t = this,
  7557. i = t.element,
  7558. n = t._direction === "vertical" ? nt : ft,
  7559. r = i.data(n);
  7560. (r == ut || r === di) && setTimeout(function() {
  7561. i.css(n, ut).css(n)
  7562. }, 0)
  7563. }
  7564. });
  7565. ei = {
  7566. position: "absolute",
  7567. marginLeft: 0,
  7568. marginTop: 0,
  7569. scale: 1
  7570. };
  7571. o("transfer", {
  7572. init: function(n, t) {
  7573. this.element = n;
  7574. this.options = {
  7575. target: t
  7576. };
  7577. this.restore = []
  7578. },
  7579. setup: function() {
  7580. this.element.appendTo(document.body)
  7581. },
  7582. prepare: function(n, t) {
  7583. var s = this,
  7584. i = s.element,
  7585. g = s.options,
  7586. nt = s._reverse,
  7587. h = g.target,
  7588. u, tt = ri(i, "scale"),
  7589. l = h.offset(),
  7590. a = h.outerHeight() / i.outerHeight();
  7591. r(n, ei);
  7592. t.scale = 1;
  7593. i.css(e, "scale(1)").css(e);
  7594. u = i.offset();
  7595. i.css(e, "scale(" + tt + ")");
  7596. var f = 0,
  7597. o = 0,
  7598. v = l.left - u.left,
  7599. y = l.top - u.top,
  7600. p = f + i.outerWidth(),
  7601. b = o,
  7602. it = v + h.outerWidth(),
  7603. rt = y,
  7604. c = (y - o) / (v - f),
  7605. k = (rt - b) / (it - p),
  7606. d = (o - b - c * f + k * p) / (k - c),
  7607. ut = o + c * (d - f);
  7608. n.top = u.top;
  7609. n.left = u.left;
  7610. n.transformOrigin = d + w + " " + ut + w;
  7611. nt ? n.scale = a : t.scale = a
  7612. }
  7613. });
  7614. oi = {
  7615. top: "rect(auto auto $size auto)",
  7616. bottom: "rect($size auto auto auto)",
  7617. left: "rect(auto $size auto auto)",
  7618. right: "rect(auto auto auto $size)"
  7619. };
  7620. si = {
  7621. top: {
  7622. start: "rotatex(0deg)",
  7623. end: "rotatex(180deg)"
  7624. },
  7625. bottom: {
  7626. start: "rotatex(-180deg)",
  7627. end: "rotatex(0deg)"
  7628. },
  7629. left: {
  7630. start: "rotatey(0deg)",
  7631. end: "rotatey(-180deg)"
  7632. },
  7633. right: {
  7634. start: "rotatey(180deg)",
  7635. end: "rotatey(0deg)"
  7636. }
  7637. };
  7638. o("turningPage", {
  7639. directions: k,
  7640. init: function(n, t, i) {
  7641. l.prototype.init.call(this, n, t);
  7642. this._container = i
  7643. },
  7644. prepare: function(n, t) {
  7645. var r = this,
  7646. f = r._reverse,
  7647. o = f ? c[r._direction].reverse : r._direction,
  7648. u = si[o];
  7649. n.zIndex = 1;
  7650. r._clipInHalf && (n.clip = hi(r._container, i.directions[o].reverse));
  7651. n[nr] = bt;
  7652. t[e] = ni + (f ? u.start : u.end);
  7653. n[e] = ni + (f ? u.end : u.start)
  7654. },
  7655. setup: function() {
  7656. this._container.append(this.element)
  7657. },
  7658. face: function(n) {
  7659. return this._face = n, this
  7660. },
  7661. shouldHide: function() {
  7662. var n = this,
  7663. t = n._reverse,
  7664. i = n._face;
  7665. return t && !i || !t && i
  7666. },
  7667. clipInHalf: function(n) {
  7668. return this._clipInHalf = n, this
  7669. },
  7670. temporary: function() {
  7671. return this.element.addClass("temp-page"), this
  7672. }
  7673. });
  7674. o("staticPage", {
  7675. directions: k,
  7676. init: function(n, t, i) {
  7677. l.prototype.init.call(this, n, t);
  7678. this._container = i
  7679. },
  7680. restore: ["clip"],
  7681. prepare: function(n, t) {
  7682. var i = this,
  7683. r = i._reverse ? c[i._direction].reverse : i._direction;
  7684. n.clip = hi(i._container, r);
  7685. n.opacity = .999;
  7686. t.opacity = 1
  7687. },
  7688. shouldHide: function() {
  7689. var n = this,
  7690. t = n._reverse,
  7691. i = n._face;
  7692. return t && !i || !t && i
  7693. },
  7694. face: function(n) {
  7695. return this._face = n, this
  7696. }
  7697. });
  7698. o("pageturn", {
  7699. directions: ["horizontal", "vertical"],
  7700. init: function(n, t, i, r) {
  7701. l.prototype.init.call(this, n, t);
  7702. this.options = {};
  7703. this.options.face = i;
  7704. this.options.back = r
  7705. },
  7706. children: function() {
  7707. var r = this,
  7708. u = r.options,
  7709. n = r._direction === "horizontal" ? "left" : "top",
  7710. f = i.directions[n].reverse,
  7711. t = r._reverse,
  7712. o, s = u.face.clone(!0).removeAttr("id"),
  7713. h = u.back.clone(!0).removeAttr("id"),
  7714. e = r.element;
  7715. return t && (o = n, n = f, f = o), [i.fx(u.face).staticPage(n, e).face(!0).setReverse(t), i.fx(u.back).staticPage(f, e).setReverse(t), i.fx(s).turningPage(n, e).face(!0).clipInHalf(!0).temporary().setReverse(t), i.fx(h).turningPage(f, e).clipInHalf(!0).temporary().setReverse(t)]
  7716. },
  7717. prepare: function(n, t) {
  7718. n[gt] = ot;
  7719. n.transformStyle = "preserve-3d";
  7720. n.opacity = .999;
  7721. t.opacity = 1
  7722. },
  7723. teardown: function() {
  7724. this.element.find(".temp-page").remove()
  7725. }
  7726. });
  7727. o("flip", {
  7728. directions: ["horizontal", "vertical"],
  7729. init: function(n, t, i, r) {
  7730. l.prototype.init.call(this, n, t);
  7731. this.options = {};
  7732. this.options.face = i;
  7733. this.options.back = r
  7734. },
  7735. children: function() {
  7736. var n = this,
  7737. f = n.options,
  7738. t = n._direction === "horizontal" ? "left" : "top",
  7739. r = i.directions[t].reverse,
  7740. u = n._reverse,
  7741. e, o = n.element;
  7742. return u && (e = t, t = r, r = e), [i.fx(f.face).turningPage(t, o).face(!0).setReverse(u), i.fx(f.back).turningPage(r, o).setReverse(u)]
  7743. },
  7744. prepare: function(n) {
  7745. n[gt] = ot;
  7746. n.transformStyle = "preserve-3d"
  7747. }
  7748. });
  7749. it = i.Class.extend({
  7750. init: function() {
  7751. var n = this;
  7752. n._tickProxy = ci(n._tick, n);
  7753. n._started = !1
  7754. },
  7755. tick: n.noop,
  7756. done: n.noop,
  7757. onEnd: n.noop,
  7758. onCancel: n.noop,
  7759. start: function() {
  7760. this.done() || (this._started = !0, i.animationFrame(this._tickProxy))
  7761. },
  7762. cancel: function() {
  7763. this._started = !1;
  7764. this.onCancel()
  7765. },
  7766. _tick: function() {
  7767. var n = this;
  7768. n._started && (n.tick(), n.done() ? (n._started = !1, n.onEnd()) : i.queueAnimation(n._tickProxy))
  7769. }
  7770. });
  7771. at = it.extend({
  7772. init: function(n) {
  7773. var t = this;
  7774. r(t, n);
  7775. it.fn.init.call(t)
  7776. },
  7777. done: function() {
  7778. return this.timePassed() >= this.duration
  7779. },
  7780. timePassed: function() {
  7781. return Math.min(this.duration, new Date - this.startDate)
  7782. },
  7783. moveTo: function(n) {
  7784. var t = this,
  7785. i = t.movable;
  7786. t.initial = i[t.axis];
  7787. t.delta = n.location - t.initial;
  7788. t.duration = typeof n.duration == "number" ? n.duration : 300;
  7789. t.tick = t._easeProxy(n.ease);
  7790. t.startDate = new Date;
  7791. t.start()
  7792. },
  7793. _easeProxy: function(n) {
  7794. var t = this;
  7795. return function() {
  7796. t.movable.moveAxis(t.axis, n(t.timePassed(), t.initial, t.delta, t.duration))
  7797. }
  7798. }
  7799. });
  7800. r(at, {
  7801. easeOutExpo: function(n, t, i, r) {
  7802. return n == r ? t + i : i * (-Math.pow(2, -10 * n / r) + 1) + t
  7803. },
  7804. easeOutBack: function(n, t, i, r, u) {
  7805. return u = 1.70158, i * ((n = n / r - 1) * n * ((u + 1) * n + u) + 1) + t
  7806. }
  7807. });
  7808. u.Animation = it;
  7809. u.Transition = at;
  7810. u.createEffect = o
  7811. }(window.kendo.jQuery);
  7812. kendo_module({
  7813. id: "data",
  7814. name: "Data source",
  7815. category: "framework",
  7816. description: "Powerful component for using local and remote data.Fully supports CRUD, Sorting, Paging, Filtering, Grouping, and Aggregates.",
  7817. depends: ["core"],
  7818. features: [{
  7819. id: "data-odata",
  7820. name: "OData",
  7821. description: "Support for accessing Open Data Protocol (OData) services.",
  7822. depends: ["data.odata"]
  7823. }, {
  7824. id: "data-XML",
  7825. name: "XML",
  7826. description: "Support for binding to XML.",
  7827. depends: ["data.xml"]
  7828. }]
  7829. }),
  7830. function(n, t) {
  7831. function gt(n, t, i, u) {
  7832. return function(f) {
  7833. var e = {};
  7834. for (var o in f) e[o] = f[o];
  7835. e.field = u ? i + "." + f.field : i;
  7836. t == r && n._notifyChange && n._notifyChange(e);
  7837. n.trigger(t, e)
  7838. }
  7839. }
  7840. function li(t, i) {
  7841. if (t === i) return !0;
  7842. var r = n.type(t),
  7843. f = n.type(i),
  7844. u;
  7845. if (r !== f) return !1;
  7846. if (r === "date") return t.getTime() === i.getTime();
  7847. if (r !== "object" && r !== "array") return !1;
  7848. for (u in t)
  7849. if (!li(t[u], i[u])) return !1;
  7850. return !0
  7851. }
  7852. function ou(n, t) {
  7853. var i;
  7854. for (var r in n)
  7855. if ((i = n[r], l(i) && i.field && i.field === t) || i === t) return i;
  7856. return null
  7857. }
  7858. function u(n) {
  7859. this.data = n || []
  7860. }
  7861. function it(n, i) {
  7862. if (n) {
  7863. var r = typeof n === o ? {
  7864. field: n,
  7865. dir: i
  7866. } : n,
  7867. u = d(r) ? r : r !== t ? [r] : [];
  7868. return pr(u, function(n) {
  7869. return !!n.dir
  7870. })
  7871. }
  7872. }
  7873. function wi(n) {
  7874. var i, f, r, t, u = n.filters;
  7875. if (u)
  7876. for (i = 0, f = u.length; i < f; i++) r = u[i], t = r.operator, t && typeof t === o && (r.operator = pi[t.toLowerCase()] || t), wi(r)
  7877. }
  7878. function ct(n) {
  7879. if (n && !k(n)) return (d(n) || !n.filters) && (n = {
  7880. logic: "and",
  7881. filters: d(n) ? n : [n]
  7882. }), wi(n), n
  7883. }
  7884. function su(n) {
  7885. return d(n) ? n : [n]
  7886. }
  7887. function rt(n, i) {
  7888. var r = typeof n === o ? {
  7889. field: n,
  7890. dir: i
  7891. } : n,
  7892. u = d(r) ? r : r !== t ? [r] : [];
  7893. return vt(u, function(n) {
  7894. return {
  7895. field: n.field,
  7896. dir: n.dir || "asc",
  7897. aggregates: n.aggregates
  7898. }
  7899. })
  7900. }
  7901. function hu(n, t) {
  7902. return n && n.getTime && t && t.getTime ? n.getTime() === t.getTime() : n === t
  7903. }
  7904. function cu(n, t, r, u, f) {
  7905. var o, h, s, c, e;
  7906. for (t = t || [], c = t.length, o = 0; o < c; o++) h = t[o], s = h.aggregate, e = h.field, n[e] = n[e] || {}, n[e][s] = bi[s.toLowerCase()](n[e][s], r, i.accessor(e), u, f)
  7907. }
  7908. function ki(n) {
  7909. return typeof n == "number" && !isNaN(n)
  7910. }
  7911. function lu(n) {
  7912. for (var i = n.length, r = new Array(i), t = 0; t < i; t++) r[t] = n[t].toJSON();
  7913. return r
  7914. }
  7915. function di(n, t) {
  7916. t = t || {};
  7917. var i = new u(n),
  7918. f = t.aggregate,
  7919. r = t.filter;
  7920. return r && (i = i.filter(r)), i.aggregate(f)
  7921. }
  7922. function au(n, t, i, r, u) {
  7923. for (var e, f, o, s = 0, h = n.length; s < h; s++) {
  7924. e = n[s];
  7925. for (f in t) o = u[f], o && o !== f && (e[o] = t[f](e), delete e[f])
  7926. }
  7927. }
  7928. function tr(n, t, i, r, u) {
  7929. for (var e, f, o, s = 0, h = n.length; s < h; s++) {
  7930. e = n[s];
  7931. for (f in t) e[f] = i._parse(f, t[f](e)), o = u[f], o && o !== f && delete e[o]
  7932. }
  7933. }
  7934. function ir(n, t, i, r, u) {
  7935. for (var f, o, e = 0, s = n.length; e < s; e++) f = n[e], o = r[f.field], o && o != f.field && (f.field = o), f.value = i._parse(f.field, f.value), f.hasSubgroups ? ir(f.items, t, i, r, u) : tr(f.items, t, i, r, u)
  7936. }
  7937. function ni(n, t, i, r, u, f) {
  7938. return function(e) {
  7939. return e = n(e), e && !k(r) && (st.call(e) === "[object Array]" || e instanceof p || (e = [e]), i(e, r, new t, u, f)), e || []
  7940. }
  7941. }
  7942. function ii(n, t, i, r) {
  7943. for (var f, e = 0, u, o; t.length && r;)
  7944. if (f = t[e], u = f.items, o = u.length, n && n.field === f.field && n.value === f.value ? (n.hasSubgroups && n.items.length ? ii(n.items[n.items.length - 1], f.items, i, r) : (u = u.slice(i, i + r), n.items = n.items.concat(u)), t.splice(e--, 1)) : f.hasSubgroups && u.length ? ii(f, u, i, r) : (u = u.slice(i, i + r), f.items = u, f.items.length || t.splice(e--, 1)), u.length === 0 ? i -= o : (i = 0, r -= u.length), ++e >= t.length) break;
  7945. e < t.length && t.splice(e, t.length - e)
  7946. }
  7947. function rr(n) {
  7948. for (var i = [], t = 0, r = n.length; t < r; t++) i = n[t].hasSubgroups ? i.concat(rr(n[t].items)) : i.concat(n[t].items.slice());
  7949. return i
  7950. }
  7951. function ur(n, t) {
  7952. var r, f, u, i;
  7953. if (t)
  7954. for (r = 0, f = n.length; r < f; r++) u = n[r], i = u.items, u.hasSubgroups ? ur(i, t) : !i.length || i[0] instanceof t || (i.type = t, i.wrapAll(i, i))
  7955. }
  7956. function fr(n, t) {
  7957. for (var i = 0, r = n.length; i < r; i++)
  7958. if (n[i].hasSubgroups) {
  7959. if (fr(n[i].items, t)) return !0
  7960. } else if (t(n[i].items, n[i])) return !0
  7961. }
  7962. function vu(n, t) {
  7963. for (var i = 0, r = n.length; i < r; i++)
  7964. if (n[i].uid == t.uid) return t = n[i], n.splice(i, 1), t
  7965. }
  7966. function er(n, t) {
  7967. for (var i, u, r = n.length - 1, f = 0; r >= f; r--) u = n[r], i = {
  7968. value: t.get(u.field),
  7969. field: u.field,
  7970. items: i ? [i] : [t],
  7971. hasSubgroups: !!i,
  7972. aggregates: {}
  7973. };
  7974. return i
  7975. }
  7976. function or(n, t) {
  7977. return t ? hr(n, function(n) {
  7978. return n[t.idField] === t.id
  7979. }) : -1
  7980. }
  7981. function sr(n, t) {
  7982. return t ? hr(n, function(n) {
  7983. return n.uid == t.uid
  7984. }) : -1
  7985. }
  7986. function hr(n, t) {
  7987. for (var i = 0, r = n.length; i < r; i++)
  7988. if (t(n[i])) return i;
  7989. return -1
  7990. }
  7991. function cr(n, t) {
  7992. if (n && !k(n)) {
  7993. var i = n[t],
  7994. r;
  7995. return (r = l(i) ? i.from || i.field || t : n[t] || t, y(r)) ? t : r
  7996. }
  7997. return t
  7998. }
  7999. function lr(n, t) {
  8000. var r, f, i = {};
  8001. for (var u in n) u !== "filters" && (i[u] = n[u]);
  8002. if (n.filters)
  8003. for (i.filters = [], r = 0, f = n.filters.length; r < f; r++) i.filters[r] = lr(n.filters[r], t);
  8004. else i.field = cr(t.fields, i.field);
  8005. return i
  8006. }
  8007. function lt(n, t) {
  8008. for (var o = [], i, u, f, r = 0, e = n.length; r < e; r++) {
  8009. i = {};
  8010. u = n[r];
  8011. for (f in u) i[f] = u[f];
  8012. i.field = cr(t.fields, i.field);
  8013. i.aggregates && d(i.aggregates) && (i.aggregates = lt(i.aggregates, t));
  8014. o.push(i)
  8015. }
  8016. return o
  8017. }
  8018. function yu(t, i) {
  8019. for (var o = n(t)[0].children, h = [], e, c = i[0], l = i[1], u, r, f = 0, s = o.length; f < s; f++)(e = {}, r = o[f], r.disabled) || (e[c.field] = r.text, u = r.attributes.value, u = u && u.specified ? r.value : r.text, e[l.field] = u, h.push(e));
  8020. return h
  8021. }
  8022. function pu(t, i) {
  8023. for (var s = n(t)[0].tBodies[0], h = s ? s.rows : [], r, v = i.length, l = [], a, f, e, o, u = 0, c = h.length; u < c; u++) {
  8024. for (f = {}, o = !0, a = h[u].cells, r = 0; r < v; r++) e = a[r], e.nodeName.toLowerCase() !== "th" && (o = !1, f[i[r].field] = e.innerHTML);
  8025. o || l.push(f)
  8026. }
  8027. return l
  8028. }
  8029. function ar(n) {
  8030. return function() {
  8031. var t = this._data,
  8032. i = h.fn[n].apply(this, dt.call(arguments));
  8033. return this._data != t && this._attachBubbleHandlers(), i
  8034. }
  8035. }
  8036. function vr(t, i) {
  8037. function c(n, t) {
  8038. return n.filter(t).add(n.find(t))
  8039. }
  8040. for (var l = n(t).children(), v = [], r, b = i[0].field, y = i[1] && i[1].field, p = i[2] && i[2].field, w = i[3] && i[3].field, f, s, o, h, u, e = 0, a = l.length; e < a; e++) r = {
  8041. _loaded: !0
  8042. }, f = l.eq(e), o = f[0].firstChild, u = f.children(), t = u.filter("ul"), u = u.filter(":not(ul)"), s = f.attr("data-id"), s && (r.id = s), o && (r[b] = o.nodeType == 3 ? o.nodeValue : u.text()), y && (r[y] = c(u, "a").attr("href")), w && (r[w] = c(u, "img").attr("src")), p && (h = c(u, ".k-sprite").prop("className"), r[p] = h && n.trim(h.replace("k-sprite", ""))), t.length && (r.items = vr(t.eq(0), i)), f.attr("data-hasChildren") == "true" && (r.hasChildren = !0), v.push(r);
  8043. return v
  8044. }
  8045. var e = n.extend,
  8046. v = n.proxy,
  8047. l = n.isPlainObject,
  8048. k = n.isEmptyObject,
  8049. d = n.isArray,
  8050. pr = n.grep,
  8051. at = n.ajax,
  8052. vt, yt = n.each,
  8053. b = n.noop,
  8054. i = window.kendo,
  8055. y = i.isFunction,
  8056. g = i.Observable,
  8057. ft = i.Class,
  8058. o = "string",
  8059. pt = "function",
  8060. ei = "create",
  8061. oi = "read",
  8062. si = "update",
  8063. hi = "destroy",
  8064. r = "change",
  8065. ci = "sync",
  8066. wt = "get",
  8067. a = "error",
  8068. tt = "requestStart",
  8069. bt = "progress",
  8070. nt = "requestEnd",
  8071. wr = [ei, oi, si, hi],
  8072. et = function(n) {
  8073. return n
  8074. },
  8075. ot = i.getter,
  8076. kt = i.stringify,
  8077. f = Math,
  8078. br = [].push,
  8079. kr = [].join,
  8080. dr = [].pop,
  8081. gr = [].splice,
  8082. nu = [].shift,
  8083. dt = [].slice,
  8084. tu = [].unshift,
  8085. st = {}.toString,
  8086. iu = i.support.stableSort,
  8087. ru = /^\/Date\((.*?)\)\/$/,
  8088. uu = /(\r+|\n+)/g,
  8089. fu = /(?=['\\])/g,
  8090. p = g.extend({
  8091. init: function(n, t) {
  8092. var i = this;
  8093. i.type = t || s;
  8094. g.fn.init.call(i);
  8095. i.length = n.length;
  8096. i.wrapAll(n, i)
  8097. },
  8098. toJSON: function() {
  8099. for (var i = this.length, t, r = new Array(i), n = 0; n < i; n++) t = this[n], t instanceof s && (t = t.toJSON()), r[n] = t;
  8100. return r
  8101. },
  8102. parent: b,
  8103. wrapAll: function(n, t) {
  8104. var r = this,
  8105. i, u, f = function() {
  8106. return r
  8107. };
  8108. for (t = t || [], i = 0, u = n.length; i < u; i++) t[i] = r.wrap(n[i], f);
  8109. return t
  8110. },
  8111. wrap: function(n, t) {
  8112. var i = this,
  8113. u;
  8114. return n !== null && st.call(n) === "[object Object]" && (u = n instanceof i.type || n instanceof c, u || (n = n instanceof s ? n.toJSON() : n, n = new i.type(n)), n.parent = t, n.bind(r, function(n) {
  8115. i.trigger(r, {
  8116. field: n.field,
  8117. node: n.node,
  8118. index: n.index,
  8119. items: n.items || [this],
  8120. action: n.node ? n.action || "itemchange" : "itemchange"
  8121. })
  8122. })), n
  8123. },
  8124. push: function() {
  8125. var i = this.length,
  8126. n = this.wrapAll(arguments),
  8127. t;
  8128. return t = br.apply(this, n), this.trigger(r, {
  8129. action: "add",
  8130. index: i,
  8131. items: n
  8132. }), t
  8133. },
  8134. slice: dt,
  8135. join: kr,
  8136. pop: function() {
  8137. var n = this.length,
  8138. t = dr.apply(this);
  8139. return n && this.trigger(r, {
  8140. action: "remove",
  8141. index: n - 1,
  8142. items: [t]
  8143. }), t
  8144. },
  8145. splice: function(n, t, i) {
  8146. var e = this.wrapAll(dt.call(arguments, 2)),
  8147. u, f, o;
  8148. if (u = gr.apply(this, [n, t].concat(e)), u.length)
  8149. for (this.trigger(r, {
  8150. action: "remove",
  8151. index: n,
  8152. items: u
  8153. }), f = 0, o = u.length; f < o; f++) u[f].children && u[f].unbind(r);
  8154. return i && this.trigger(r, {
  8155. action: "add",
  8156. index: n,
  8157. items: e
  8158. }), u
  8159. },
  8160. shift: function() {
  8161. var t = this.length,
  8162. n = nu.apply(this);
  8163. return t && this.trigger(r, {
  8164. action: "remove",
  8165. index: 0,
  8166. items: [n]
  8167. }), n
  8168. },
  8169. unshift: function() {
  8170. var n = this.wrapAll(arguments),
  8171. t;
  8172. return t = tu.apply(this, n), this.trigger(r, {
  8173. action: "add",
  8174. index: 0,
  8175. items: n
  8176. }), t
  8177. },
  8178. indexOf: function(n) {
  8179. for (var i = this, t = 0, r = i.length; t < r; t++)
  8180. if (i[t] === n) return t;
  8181. return -1
  8182. },
  8183. forEach: function(n) {
  8184. for (var t = 0, i = this.length; t < i; t++) n(this[t], t, this)
  8185. },
  8186. map: function(n) {
  8187. for (var t = 0, i = [], r = this.length; t < r; t++) i[t] = n(this[t], t, this);
  8188. return i
  8189. },
  8190. filter: function(n) {
  8191. for (var t = 0, i = [], r, u = this.length; t < u; t++) r = this[t], n(r, t, this) && (i[i.length] = r);
  8192. return i
  8193. },
  8194. find: function(n) {
  8195. for (var t = 0, i, r = this.length; t < r; t++)
  8196. if (i = this[t], n(i, t, this)) return i
  8197. },
  8198. every: function(n) {
  8199. for (var t = 0, i, r = this.length; t < r; t++)
  8200. if (i = this[t], !n(i, t, this)) return !1;
  8201. return !0
  8202. },
  8203. some: function(n) {
  8204. for (var t = 0, i, r = this.length; t < r; t++)
  8205. if (i = this[t], n(i, t, this)) return !0;
  8206. return !1
  8207. },
  8208. remove: function(n) {
  8209. this.splice(this.indexOf(n), 1)
  8210. },
  8211. empty: function() {
  8212. this.splice(0, this.length)
  8213. }
  8214. }),
  8215. s = g.extend({
  8216. init: function(n) {
  8217. var r = this,
  8218. u, t, f = function() {
  8219. return r
  8220. };
  8221. g.fn.init.call(this);
  8222. for (t in n) u = n[t], t.charAt(0) != "_" && (u = r.wrap(u, t, f)), r[t] = u;
  8223. r.uid = i.guid()
  8224. },
  8225. shouldSerialize: function(n) {
  8226. return this.hasOwnProperty(n) && n !== "_events" && typeof this[n] !== pt && n !== "uid"
  8227. },
  8228. forEach: function(n) {
  8229. for (var t in this) this.shouldSerialize(t) && n(this[t], t)
  8230. },
  8231. toJSON: function() {
  8232. var i = {},
  8233. n;
  8234. for (var t in this) this.shouldSerialize(t) && (n = this[t], (n instanceof s || n instanceof p) && (n = n.toJSON()), i[t] = n);
  8235. return i
  8236. },
  8237. get: function(n) {
  8238. var t = this;
  8239. return t.trigger(wt, {
  8240. field: n
  8241. }), n === "this" ? t : i.getter(n, !0)(t)
  8242. },
  8243. _set: function(n, t) {
  8244. var o = this,
  8245. f = n.indexOf(".") >= 0,
  8246. r, u, e;
  8247. if (f)
  8248. for (r = n.split("."), u = ""; r.length > 1;) {
  8249. if (u += r.shift(), e = i.getter(u, !0)(o), e instanceof s) return e.set(r.join("."), t), f;
  8250. u += "."
  8251. }
  8252. return i.setter(n)(o, t), f
  8253. },
  8254. set: function(n, t) {
  8255. var u = this,
  8256. f = i.getter(n, !0)(u);
  8257. f !== t && (u.trigger("set", {
  8258. field: n,
  8259. value: t
  8260. }) || (!u._set(n, u.wrap(t, n, function() {
  8261. return u
  8262. })) || n.indexOf("(") >= 0 || n.indexOf("[") >= 0) && u.trigger(r, {
  8263. field: n
  8264. }))
  8265. },
  8266. parent: b,
  8267. wrap: function(n, t, i) {
  8268. var o = this,
  8269. u = st.call(n),
  8270. f, e;
  8271. return n != null && (u === "[object Object]" || u === "[object Array]") && (f = n instanceof p, e = n instanceof h, u !== "[object Object]" || e || f ? (u === "[object Array]" || f || e) && (f || e || (n = new p(n)), n.parent() != i() && n.bind(r, gt(o, r, t, !1))) : (n instanceof s || (n = new s(n)), n.parent() != i() && (n.bind(wt, gt(o, wt, t, !0)), n.bind(r, gt(o, r, t, !0)))), n.parent = i), n
  8272. }
  8273. }),
  8274. ai = {
  8275. number: function(n) {
  8276. return i.parseFloat(n)
  8277. },
  8278. date: function(n) {
  8279. return i.parseDate(n)
  8280. },
  8281. boolean: function(n) {
  8282. return typeof n === o ? n.toLowerCase() === "true" : n != null ? !!n : n
  8283. },
  8284. string: function(n) {
  8285. return n != null ? n + "" : n
  8286. },
  8287. "default": function(n) {
  8288. return n
  8289. }
  8290. },
  8291. eu = {
  8292. string: "",
  8293. number: 0,
  8294. date: new Date,
  8295. boolean: !1,
  8296. "default": ""
  8297. },
  8298. c = s.extend({
  8299. init: function(i) {
  8300. var r = this;
  8301. (!i || n.isEmptyObject(i)) && (i = n.extend({}, r.defaults, i));
  8302. s.fn.init.call(r, i);
  8303. r.dirty = !1;
  8304. r.idField && (r.id = r.get(r.idField), r.id === t && (r.id = r._defaultId))
  8305. },
  8306. shouldSerialize: function(n) {
  8307. return s.fn.shouldSerialize.call(this, n) && n !== "uid" && !(this.idField !== "id" && n === "id") && n !== "dirty" && n !== "_accessors"
  8308. },
  8309. _parse: function(n, t) {
  8310. var u = this,
  8311. f = n,
  8312. r = u.fields || {},
  8313. i;
  8314. return n = r[n], n || (n = ou(r, f)), n && (i = n.parse, !i && n.type && (i = ai[n.type.toLowerCase()])), i ? i(t) : t
  8315. },
  8316. _notifyChange: function(n) {
  8317. var t = n.action;
  8318. (t == "add" || t == "remove") && (this.dirty = !0)
  8319. },
  8320. editable: function(n) {
  8321. return n = (this.fields || {})[n], n ? n.editable !== !1 : !0
  8322. },
  8323. set: function(n, t, i) {
  8324. var r = this;
  8325. r.editable(n) && (t = r._parse(n, t), li(t, r.get(n)) || (r.dirty = !0, s.fn.set.call(r, n, t, i)))
  8326. },
  8327. accept: function(n) {
  8328. var t = this,
  8329. u = function() {
  8330. return t
  8331. },
  8332. i, r;
  8333. for (i in n) r = n[i], i.charAt(0) != "_" && (r = t.wrap(n[i], i, u)), t._set(i, r);
  8334. t.idField && (t.id = t.get(t.idField));
  8335. t.dirty = !1
  8336. },
  8337. isNew: function() {
  8338. return this.id === this._defaultId
  8339. }
  8340. }),
  8341. ht, vi, yi, pi, bi, ti, h, ri, ui, w, fi, yr;
  8342. c.define = function(n, i) {
  8343. i === t && (i = n, n = c);
  8344. var s, r = e({
  8345. defaults: {}
  8346. }, i),
  8347. f, u, y, l, a, w, p = {},
  8348. h, v = r.id;
  8349. if (v && (r.idField = v), r.id && delete r.id, v && (r.defaults[v] = r._defaultId = ""), st.call(r.fields) === "[object Array]") {
  8350. for (a = 0, w = r.fields.length; a < w; a++) u = r.fields[a], typeof u === o ? p[u] = {} : u.field && (p[u.field] = u);
  8351. r.fields = p
  8352. }
  8353. for (f in r.fields) u = r.fields[f], y = u.type || "default", l = null, h = f, f = typeof u.field === o ? u.field : f, u.nullable || (l = r.defaults[h !== f ? h : f] = u.defaultValue !== t ? u.defaultValue : eu[y.toLowerCase()]), i.id === f && (r._defaultId = l), r.defaults[h !== f ? h : f] = l, u.parse = u.parse || ai[y];
  8354. return s = n.extend(r), s.define = function(n) {
  8355. return c.define(s, n)
  8356. }, r.fields && (s.fields = r.fields, s.idField = r.idField), s
  8357. };
  8358. ht = {
  8359. selector: function(n) {
  8360. return y(n) ? n : ot(n)
  8361. },
  8362. compare: function(n) {
  8363. var t = this.selector(n);
  8364. return function(n, i) {
  8365. return (n = t(n), i = t(i), n == null && i == null) ? 0 : n == null ? -1 : i == null ? 1 : n.localeCompare ? n.localeCompare(i) : n > i ? 1 : n < i ? -1 : 0
  8366. }
  8367. },
  8368. create: function(n) {
  8369. var t = n.compare || this.compare(n.field);
  8370. return n.dir == "desc" ? function(n, i) {
  8371. return t(i, n, !0)
  8372. } : t
  8373. },
  8374. combine: function(n) {
  8375. return function(t, i) {
  8376. for (var u = n[0](t, i), r = 1, f = n.length; r < f; r++) u = u || n[r](t, i);
  8377. return u
  8378. }
  8379. }
  8380. };
  8381. vi = e({}, ht, {
  8382. asc: function(n) {
  8383. var t = this.selector(n);
  8384. return function(n, i) {
  8385. var r = t(n),
  8386. u = t(i);
  8387. return (r && r.getTime && u && u.getTime && (r = r.getTime(), u = u.getTime()), r === u) ? n.__position - i.__position : r == null ? -1 : u == null ? 1 : r.localeCompare ? r.localeCompare(u) : r > u ? 1 : -1
  8388. }
  8389. },
  8390. desc: function(n) {
  8391. var t = this.selector(n);
  8392. return function(n, i) {
  8393. var u = t(n),
  8394. r = t(i);
  8395. return (u && u.getTime && r && r.getTime && (u = u.getTime(), r = r.getTime()), u === r) ? n.__position - i.__position : u == null ? 1 : r == null ? -1 : r.localeCompare ? r.localeCompare(u) : u < r ? 1 : -1
  8396. }
  8397. },
  8398. create: function(n) {
  8399. return this[n.dir](n.field)
  8400. }
  8401. });
  8402. vt = function(n, t) {
  8403. for (var r = n.length, u = new Array(r), i = 0; i < r; i++) u[i] = t(n[i], i, n);
  8404. return u
  8405. };
  8406. yi = function() {
  8407. function t(n) {
  8408. return n.replace(fu, "\\").replace(uu, "")
  8409. }
  8410. function n(n, i, r, u) {
  8411. var f;
  8412. return r != null && (typeof r === o && (r = t(r), f = ru.exec(r), f ? r = new Date(+f[1]) : u ? (r = "'" + r.toLowerCase() + "'", i = "(" + i + " || '').toLowerCase()") : r = "'" + r + "'"), r.getTime && (i = "(" + i + "?" + i + ".getTime():" + i + ")", r = r.getTime())), i + " " + n + " " + r
  8413. }
  8414. return {
  8415. eq: function(t, i, r) {
  8416. return n("==", t, i, r)
  8417. },
  8418. neq: function(t, i, r) {
  8419. return n("!=", t, i, r)
  8420. },
  8421. gt: function(t, i, r) {
  8422. return n(">", t, i, r)
  8423. },
  8424. gte: function(t, i, r) {
  8425. return n(">=", t, i, r)
  8426. },
  8427. lt: function(t, i, r) {
  8428. return n("<", t, i, r)
  8429. },
  8430. lte: function(t, i, r) {
  8431. return n("<=", t, i, r)
  8432. },
  8433. startswith: function(n, i, r) {
  8434. return r && (n = "(" + n + " || '').toLowerCase()", i && (i = i.toLowerCase())), i && (i = t(i)), n + ".lastIndexOf('" + i + "', 0) == 0"
  8435. },
  8436. endswith: function(n, i, r) {
  8437. return r && (n = "(" + n + " || '').toLowerCase()", i && (i = i.toLowerCase())), i && (i = t(i)), n + ".indexOf('" + i + "', " + n + ".length - " + (i || "").length + ") >= 0"
  8438. },
  8439. contains: function(n, i, r) {
  8440. return r && (n = "(" + n + " || '').toLowerCase()", i && (i = i.toLowerCase())), i && (i = t(i)), n + ".indexOf('" + i + "') >= 0"
  8441. },
  8442. doesnotcontain: function(n, i, r) {
  8443. return r && (n = "(" + n + " || '').toLowerCase()", i && (i = i.toLowerCase())), i && (i = t(i)), n + ".indexOf('" + i + "') == -1"
  8444. }
  8445. }
  8446. }();
  8447. u.filterExpr = function(n) {
  8448. for (var l = [], r, f, e = [], o = [], h, c, v = n.filters, s = 0, a = v.length; s < a; s++) r = v[s], h = r.field, c = r.operator, r.filters ? (f = u.filterExpr(r), r = f.expression.replace(/__o\[(\d+)\]/g, function(n, t) {
  8449. return t = +t, "__o[" + (o.length + t) + "]"
  8450. }).replace(/__f\[(\d+)\]/g, function(n, t) {
  8451. return t = +t, "__f[" + (e.length + t) + "]"
  8452. }), o.push.apply(o, f.operators), e.push.apply(e, f.fields)) : (typeof h === pt ? (f = "__f[" + e.length + "](d)", e.push(h)) : f = i.expr(h), typeof c === pt ? (r = "__o[" + o.length + "](" + f + ", " + r.value + ")", o.push(c)) : r = yi[(c || "eq").toLowerCase()](f, r.value, r.ignoreCase !== t ? r.ignoreCase : !0)), l.push(r);
  8453. return {
  8454. expression: "(" + l.join({
  8455. and: " && ",
  8456. or: " || "
  8457. }[n.logic]) + ")",
  8458. fields: e,
  8459. operators: o
  8460. }
  8461. };
  8462. pi = {
  8463. "==": "eq",
  8464. equals: "eq",
  8465. isequalto: "eq",
  8466. equalto: "eq",
  8467. equal: "eq",
  8468. "!=": "neq",
  8469. ne: "neq",
  8470. notequals: "neq",
  8471. isnotequalto: "neq",
  8472. notequalto: "neq",
  8473. notequal: "neq",
  8474. "<": "lt",
  8475. islessthan: "lt",
  8476. lessthan: "lt",
  8477. less: "lt",
  8478. "<=": "lte",
  8479. le: "lte",
  8480. islessthanorequalto: "lte",
  8481. lessthanequal: "lte",
  8482. ">": "gt",
  8483. isgreaterthan: "gt",
  8484. greaterthan: "gt",
  8485. greater: "gt",
  8486. ">=": "gte",
  8487. isgreaterthanorequalto: "gte",
  8488. greaterthanequal: "gte",
  8489. ge: "gte",
  8490. notsubstringof: "doesnotcontain"
  8491. };
  8492. u.normalizeFilter = ct;
  8493. u.prototype = {
  8494. toArray: function() {
  8495. return this.data
  8496. },
  8497. range: function(n, t) {
  8498. return new u(this.data.slice(n, n + t))
  8499. },
  8500. skip: function(n) {
  8501. return new u(this.data.slice(n))
  8502. },
  8503. take: function(n) {
  8504. return new u(this.data.slice(0, n))
  8505. },
  8506. select: function(n) {
  8507. return new u(vt(this.data, n))
  8508. },
  8509. order: function(n, t) {
  8510. var i = {
  8511. dir: t
  8512. };
  8513. return n && (n.compare ? i.compare = n.compare : i.field = n), new u(this.data.slice(0).sort(ht.create(i)))
  8514. },
  8515. orderBy: function(n) {
  8516. return this.order(n, "asc")
  8517. },
  8518. orderByDescending: function(n) {
  8519. return this.order(n, "desc")
  8520. },
  8521. sort: function(n, t, i) {
  8522. var r, f, u = it(n, t),
  8523. e = [];
  8524. if (i = i || ht, u.length) {
  8525. for (r = 0, f = u.length; r < f; r++) e.push(i.create(u[r]));
  8526. return this.orderBy({
  8527. compare: i.combine(e)
  8528. })
  8529. }
  8530. return this
  8531. },
  8532. filter: function(n) {
  8533. var t, r, s, i, h, c = this.data,
  8534. f, e, l = [],
  8535. o;
  8536. if (n = ct(n), !n || n.filters.length === 0) return this;
  8537. for (i = u.filterExpr(n), f = i.fields, e = i.operators, h = o = new Function("d, __f, __o", "return " + i.expression), (f.length || e.length) && (o = function(n) {
  8538. return h(n, f, e)
  8539. }), t = 0, s = c.length; t < s; t++) r = c[t], o(r) && l.push(r);
  8540. return new u(l)
  8541. },
  8542. group: function(n, t) {
  8543. n = rt(n || []);
  8544. t = t || this.data;
  8545. var f = this,
  8546. i = new u(f.data),
  8547. r;
  8548. return n.length > 0 && (r = n[0], i = i.groupBy(r).select(function(i) {
  8549. var f = new u(t).filter([{
  8550. field: i.field,
  8551. operator: "eq",
  8552. value: i.value,
  8553. ignoreCase: !1
  8554. }]);
  8555. return {
  8556. field: i.field,
  8557. value: i.value,
  8558. items: n.length > 1 ? new u(i.items).group(n.slice(1), f.toArray()).toArray() : i.items,
  8559. hasSubgroups: n.length > 1,
  8560. aggregates: f.aggregate(r.aggregates)
  8561. }
  8562. })), i
  8563. },
  8564. groupBy: function(n) {
  8565. if (k(n) || !this.data.length) return new u([]);
  8566. for (var t = n.field, o = this._sortForGrouping(t, n.dir || "asc"), c = i.accessor(t), s, r = c.get(o[0], t), f = {
  8567. field: t,
  8568. value: r,
  8569. items: []
  8570. }, h, a = [f], e = 0, l = o.length; e < l; e++) s = o[e], h = c.get(s, t), hu(r, h) || (r = h, f = {
  8571. field: t,
  8572. value: r,
  8573. items: []
  8574. }, a.push(f)), f.items.push(s);
  8575. return new u(a)
  8576. },
  8577. _sortForGrouping: function(n, t) {
  8578. var i, f, r = this.data;
  8579. if (!iu) {
  8580. for (i = 0, f = r.length; i < f; i++) r[i].__position = i;
  8581. for (r = new u(r).sort(n, t, vi).toArray(), i = 0, f = r.length; i < f; i++) delete r[i].__position;
  8582. return r
  8583. }
  8584. return this.sort(n, t).toArray()
  8585. },
  8586. aggregate: function(n) {
  8587. var t, i, r = {};
  8588. if (n && n.length)
  8589. for (t = 0, i = this.data.length; t < i; t++) cu(r, n, this.data[t], t, i);
  8590. return r
  8591. }
  8592. };
  8593. bi = {
  8594. sum: function(n, t, i) {
  8595. return (n || 0) + i.get(t)
  8596. },
  8597. count: function(n) {
  8598. return (n || 0) + 1
  8599. },
  8600. average: function(n, t, i, r, u) {
  8601. return n = (n || 0) + i.get(t), r == u - 1 && (n = n / u), n
  8602. },
  8603. max: function(n, t, i) {
  8604. var r = i.get(t);
  8605. return n = n || 0, n < r && (n = r), n
  8606. },
  8607. min: function(n, t, i) {
  8608. var r = i.get(t);
  8609. return ki(n) || (n = r), n > r && ki(r) && (n = r), n
  8610. }
  8611. };
  8612. u.process = function(n, i) {
  8613. i = i || {};
  8614. var r = new u(n),
  8615. f = i.group,
  8616. e = rt(f || []).concat(it(i.sort || [])),
  8617. o, s = i.filter,
  8618. h = i.skip,
  8619. c = i.take;
  8620. return s && (r = r.filter(s), o = r.toArray().length), e && (r = r.sort(e), f && (n = r.toArray())), h !== t && c !== t && (r = r.range(h, c)), f && (r = r.group(f, n)), {
  8621. total: o,
  8622. data: r.toArray()
  8623. }
  8624. };
  8625. var gi = ft.extend({
  8626. init: function(n) {
  8627. this.data = n.data
  8628. },
  8629. read: function(n) {
  8630. n.success(this.data)
  8631. },
  8632. update: function(n) {
  8633. n.success(n.data)
  8634. },
  8635. create: function(n) {
  8636. n.success(n.data)
  8637. },
  8638. destroy: function(n) {
  8639. n.success(n.data)
  8640. }
  8641. }),
  8642. nr = ft.extend({
  8643. init: function(n) {
  8644. var i = this,
  8645. t;
  8646. n = i.options = e({}, i.options, n);
  8647. yt(wr, function(t, i) {
  8648. typeof n[i] === o && (n[i] = {
  8649. url: n[i]
  8650. })
  8651. });
  8652. i.cache = n.cache ? ut.create(n.cache) : {
  8653. find: b,
  8654. add: b
  8655. };
  8656. t = n.parameterMap;
  8657. i.parameterMap = y(t) ? t : function(n) {
  8658. var i = {};
  8659. return yt(n, function(n, r) {
  8660. n in t && (n = t[n], l(n) && (r = n.value(r), n = n.key));
  8661. i[n] = r
  8662. }), i
  8663. }
  8664. },
  8665. options: {
  8666. parameterMap: et
  8667. },
  8668. create: function(n) {
  8669. return at(this.setup(n, ei))
  8670. },
  8671. read: function(i) {
  8672. var f = this,
  8673. r, o, u, e = f.cache;
  8674. i = f.setup(i, oi);
  8675. r = i.success || b;
  8676. o = i.error || b;
  8677. u = e.find(i.data);
  8678. u !== t ? r(u) : (i.success = function(n) {
  8679. e.add(i.data, n);
  8680. r(n)
  8681. }, n.ajax(i))
  8682. },
  8683. update: function(n) {
  8684. return at(this.setup(n, si))
  8685. },
  8686. destroy: function(n) {
  8687. return at(this.setup(n, hi))
  8688. },
  8689. setup: function(n, t) {
  8690. n = n || {};
  8691. var u = this,
  8692. r, i = u.options[t],
  8693. f = y(i.data) ? i.data(n.data) : i.data;
  8694. return n = e(!0, {}, i, n), r = e(!0, {}, f, n.data), n.data = u.parameterMap(r, t), y(n.url) && (n.url = n.url(r)), n
  8695. }
  8696. }),
  8697. ut = ft.extend({
  8698. init: function() {
  8699. this._store = {}
  8700. },
  8701. add: function(n, i) {
  8702. n !== t && (this._store[kt(n)] = i)
  8703. },
  8704. find: function(n) {
  8705. return this._store[kt(n)]
  8706. },
  8707. clear: function() {
  8708. this._store = {}
  8709. },
  8710. remove: function(n) {
  8711. delete this._store[kt(n)]
  8712. }
  8713. });
  8714. ut.create = function(n) {
  8715. var t = {
  8716. inmemory: function() {
  8717. return new ut
  8718. }
  8719. };
  8720. return l(n) && y(n.find) ? n : n === !0 ? new ut : t[n]()
  8721. };
  8722. ti = ft.extend({
  8723. init: function(n) {
  8724. var t = this,
  8725. s, u, i, y;
  8726. n = n || {};
  8727. for (s in n) u = n[s], t[s] = typeof u === o ? ot(u) : u;
  8728. if (y = n.modelBase || c, l(t.model) && (t.model = i = y.define(t.model)), t.model) {
  8729. var w = v(t.data, t),
  8730. b = v(t.groups, t),
  8731. k = v(t.serialize, t),
  8732. f = {},
  8733. h = {},
  8734. p = {},
  8735. e = {},
  8736. a = !1,
  8737. r;
  8738. i = t.model;
  8739. i.fields && (yt(i.fields, function(n, t) {
  8740. var i;
  8741. r = n;
  8742. l(t) && t.field ? r = t.field : typeof t === o && (r = t);
  8743. l(t) && t.from && (i = t.from);
  8744. a = a || i && i !== n || r !== n;
  8745. h[n] = ot(i || r);
  8746. p[n] = ot(n);
  8747. f[i || r] = n;
  8748. e[n] = i || r
  8749. }), !n.serialize && a && (t.serialize = ni(k, i, au, p, f, e)));
  8750. t.data = ni(w, i, tr, h, f, e);
  8751. t.groups = ni(b, i, ir, h, f, e)
  8752. }
  8753. },
  8754. errors: function(n) {
  8755. return n ? n.errors : null
  8756. },
  8757. parse: et,
  8758. data: et,
  8759. total: function(n) {
  8760. return n.length
  8761. },
  8762. groups: et,
  8763. aggregates: function() {
  8764. return {}
  8765. },
  8766. serialize: function(n) {
  8767. return n
  8768. }
  8769. });
  8770. h = g.extend({
  8771. init: function(n) {
  8772. var u = this,
  8773. o, f;
  8774. n && (f = n.data);
  8775. n = u.options = e({}, u.options, n);
  8776. u._map = {};
  8777. u._prefetch = {};
  8778. u._data = [];
  8779. u._pristineData = [];
  8780. u._ranges = [];
  8781. u._view = [];
  8782. u._pristine = [];
  8783. u._destroyed = [];
  8784. u._pageSize = n.pageSize;
  8785. u._page = n.page || (n.pageSize ? 1 : t);
  8786. u._sort = it(n.sort);
  8787. u._filter = ct(n.filter);
  8788. u._group = rt(n.group);
  8789. u._aggregate = n.aggregate;
  8790. u._total = n.total;
  8791. g.fn.init.call(u);
  8792. u.transport = ri.create(n, f);
  8793. u.reader = new i.data.readers[n.schema.type || "json"](n.schema);
  8794. o = u.reader.model || {};
  8795. u._data = u._observe(u._data);
  8796. u.bind([a, r, tt, ci, nt, bt], n)
  8797. },
  8798. options: {
  8799. data: [],
  8800. schema: {
  8801. modelBase: c
  8802. },
  8803. serverSorting: !1,
  8804. serverPaging: !1,
  8805. serverFiltering: !1,
  8806. serverGrouping: !1,
  8807. serverAggregates: !1,
  8808. batch: !1
  8809. },
  8810. _isServerGrouped: function() {
  8811. var n = this.group() || [];
  8812. return this.options.serverGrouping && n.length
  8813. },
  8814. _flatData: function(n) {
  8815. return this._isServerGrouped() ? rr(n) : n
  8816. },
  8817. parent: b,
  8818. get: function(n) {
  8819. for (var i = this._flatData(this._data), t = 0, r = i.length; t < r; t++)
  8820. if (i[t].id == n) return i[t]
  8821. },
  8822. getByUid: function(n) {
  8823. var t, r, i = this._flatData(this._data);
  8824. if (i)
  8825. for (t = 0, r = i.length; t < r; t++)
  8826. if (i[t].uid == n) return i[t]
  8827. },
  8828. indexOf: function(n) {
  8829. return sr(this._data, n)
  8830. },
  8831. at: function(n) {
  8832. return this._data[n]
  8833. },
  8834. data: function(n) {
  8835. var i = this;
  8836. if (n !== t) i._data = this._observe(n), i._ranges = [], i._addRange(i._data), i._total = i._data.length, i._process(i._data);
  8837. else return i._data
  8838. },
  8839. view: function() {
  8840. return this._view
  8841. },
  8842. add: function(n) {
  8843. return this.insert(this._data.length, n)
  8844. },
  8845. _createNewModel: function(n) {
  8846. return this.reader.model ? new this.reader.model(n) : new s(n)
  8847. },
  8848. insert: function(n, t) {
  8849. return t || (t = n, n = 0), t instanceof c || (t = this._createNewModel(t)), this._isServerGrouped() ? this._data.splice(n, 0, er(this.group(), t)) : this._data.splice(n, 0, t), t
  8850. },
  8851. remove: function(n) {
  8852. var t, i = this,
  8853. r = i._isServerGrouped();
  8854. return this._eachItem(i._data, function(u) {
  8855. return t = vu(u, n), t && r ? (t.isNew && t.isNew() || i._destroyed.push(t), !0) : void 0
  8856. }), n
  8857. },
  8858. sync: function() {
  8859. var t = this,
  8860. i, f, e = [],
  8861. o = [],
  8862. s = t._destroyed,
  8863. u = t._flatData(t._data),
  8864. r;
  8865. if (t.reader.model) {
  8866. for (i = 0, f = u.length; i < f; i++) u[i].isNew() ? e.push(u[i]) : u[i].dirty && o.push(u[i]);
  8867. r = t._send("create", e);
  8868. r.push.apply(r, t._send("update", o));
  8869. r.push.apply(r, t._send("destroy", s));
  8870. n.when.apply(null, r).then(function() {
  8871. for (var n = 0, i = arguments.length; n < i; n++) t._accept(arguments[n]);
  8872. t._change({
  8873. action: "sync"
  8874. });
  8875. t.trigger(ci)
  8876. })
  8877. }
  8878. },
  8879. cancelChanges: function(n) {
  8880. var t = this;
  8881. n instanceof i.data.Model ? t._cancelModel(n) : (t._destroyed = [], t._data = t._observe(t._pristineData), t.options.serverPaging && (t._total = t.reader.total(t._pristine)), t._change())
  8882. },
  8883. hasChanges: function() {
  8884. var n, i, t = this._data;
  8885. if (this._destroyed.length) return !0;
  8886. for (n = 0, i = t.length; n < i; n++)
  8887. if (t[n].isNew() || t[n].dirty) return !0;
  8888. return !1
  8889. },
  8890. _accept: function(t) {
  8891. var r = this,
  8892. f = t.models,
  8893. i = t.response,
  8894. u = 0,
  8895. s = r._isServerGrouped(),
  8896. h = r._pristineData,
  8897. e = t.type,
  8898. o;
  8899. if (r.trigger(nt, {
  8900. response: i,
  8901. type: e
  8902. }), i && !k(i)) {
  8903. if (i = r.reader.parse(i), r._handleCustomErrors(i)) return;
  8904. i = r.reader.data(i);
  8905. n.isArray(i) || (i = [i])
  8906. } else i = n.map(f, function(n) {
  8907. return n.toJSON()
  8908. });
  8909. for (e === "destroy" && (r._destroyed = []), u = 0, o = f.length; u < o; u++) e !== "destroy" ? (f[u].accept(i[u]), e === "create" ? h.push(s ? er(r.group(), f[u]) : i[u]) : e === "update" && r._updatePristineForModel(f[u], i[u])) : r._removePristineForModel(f[u])
  8910. },
  8911. _updatePristineForModel: function(n, t) {
  8912. this._executeOnPristineForModel(n, function(n, r) {
  8913. i.deepExtend(r[n], t)
  8914. })
  8915. },
  8916. _executeOnPristineForModel: function(n, t) {
  8917. this._eachPristineItem(function(i) {
  8918. var r = or(i, n);
  8919. if (r > -1) return t(r, i), !0
  8920. })
  8921. },
  8922. _removePristineForModel: function(n) {
  8923. this._executeOnPristineForModel(n, function(n, t) {
  8924. t.splice(n, 1)
  8925. })
  8926. },
  8927. _readData: function(n) {
  8928. var t = this._isServerGrouped() ? this.reader.groups : this.reader.data;
  8929. return t(n)
  8930. },
  8931. _eachPristineItem: function(n) {
  8932. this._eachItem(this._pristineData, n)
  8933. },
  8934. _eachItem: function(n, t) {
  8935. n && n.length && (this._isServerGrouped() ? fr(n, t) : t(n))
  8936. },
  8937. _pristineForModel: function(n) {
  8938. var i, t, r = function(r) {
  8939. return t = or(r, n), t > -1 ? (i = r[t], !0) : void 0
  8940. };
  8941. return this._eachPristineItem(r), i
  8942. },
  8943. _cancelModel: function(n) {
  8944. var i = this._pristineForModel(n),
  8945. t;
  8946. this._eachItem(this._data, function(r) {
  8947. t = sr(r, n);
  8948. t != -1 && (!n.isNew() && i ? r[t].accept(i) : r.splice(t, 1))
  8949. })
  8950. },
  8951. _promise: function(t, i, r) {
  8952. var u = this,
  8953. f = u.transport;
  8954. return n.Deferred(function(n) {
  8955. u.trigger(tt, {
  8956. type: r
  8957. });
  8958. f[r].call(f, e({
  8959. success: function(t) {
  8960. n.resolve({
  8961. response: t,
  8962. models: i,
  8963. type: r
  8964. })
  8965. },
  8966. error: function(t, i, r) {
  8967. n.reject(t);
  8968. u.error(t, i, r)
  8969. }
  8970. }, t))
  8971. }).promise()
  8972. },
  8973. _send: function(n, t) {
  8974. var r = this,
  8975. i, f, u = [],
  8976. e = r.reader.serialize(lu(t));
  8977. if (r.options.batch) t.length && u.push(r._promise({
  8978. data: {
  8979. models: e
  8980. }
  8981. }, t, n));
  8982. else
  8983. for (i = 0, f = t.length; i < f; i++) u.push(r._promise({
  8984. data: e[i]
  8985. }, [t[i]], n));
  8986. return u
  8987. },
  8988. read: function(n) {
  8989. var t = this,
  8990. i = t._params(n);
  8991. t._queueRequest(i, function() {
  8992. t.trigger(tt, {
  8993. type: "read"
  8994. }) ? t._dequeueRequest() : (t.trigger(bt), t._ranges = [], t.transport.read({
  8995. data: i,
  8996. success: v(t.success, t),
  8997. error: v(t.error, t)
  8998. }))
  8999. })
  9000. },
  9001. success: function(t) {
  9002. var i = this,
  9003. r = i.options;
  9004. if (i.trigger(nt, {
  9005. response: t,
  9006. type: "read"
  9007. }), t = i.reader.parse(t), i._handleCustomErrors(t)) {
  9008. i._dequeueRequest();
  9009. return
  9010. }
  9011. i._pristine = l(t) ? n.extend(!0, {}, t) : t.slice ? t.slice(0) : t;
  9012. i._total = i.reader.total(t);
  9013. i._aggregate && r.serverAggregates && (i._aggregateResult = i.reader.aggregates(t));
  9014. t = i._readData(t);
  9015. i._pristineData = t.slice(0);
  9016. i._data = i._observe(t);
  9017. i._addRange(i._data);
  9018. i._process(i._data);
  9019. i._dequeueRequest()
  9020. },
  9021. _addRange: function(n) {
  9022. var t = this,
  9023. i = t._skip || 0,
  9024. r = i + t._flatData(n).length;
  9025. t._ranges.push({
  9026. start: i,
  9027. end: r,
  9028. data: n
  9029. });
  9030. t._ranges.sort(function(n, t) {
  9031. return n.start - t.start
  9032. })
  9033. },
  9034. error: function(n, t, i) {
  9035. this._dequeueRequest();
  9036. this.trigger(nt, {});
  9037. this.trigger(a, {
  9038. xhr: n,
  9039. status: t,
  9040. errorThrown: i
  9041. })
  9042. },
  9043. _params: function(n) {
  9044. var t = this,
  9045. i = e({
  9046. take: t.take(),
  9047. skip: t.skip(),
  9048. page: t.page(),
  9049. pageSize: t.pageSize(),
  9050. sort: t._sort,
  9051. filter: t._filter,
  9052. group: t._group,
  9053. aggregate: t._aggregate
  9054. }, n);
  9055. return t.options.serverPaging || (delete i.take, delete i.skip, delete i.page, delete i.pageSize), t.options.serverGrouping ? t.reader.model && i.group && (i.group = lt(i.group, t.reader.model)) : delete i.group, t.options.serverFiltering ? t.reader.model && i.filter && (i.filter = lr(i.filter, t.reader.model)) : delete i.filter, t.options.serverSorting ? t.reader.model && i.sort && (i.sort = lt(i.sort, t.reader.model)) : delete i.sort, t.options.serverAggregates ? t.reader.model && i.aggregate && (i.aggregate = lt(i.aggregate, t.reader.model)) : delete i.aggregate, i
  9056. },
  9057. _queueRequest: function(n, i) {
  9058. var r = this;
  9059. r._requestInProgress ? r._pending = {
  9060. callback: v(i, r),
  9061. options: n
  9062. } : (r._requestInProgress = !0, r._pending = t, i())
  9063. },
  9064. _dequeueRequest: function() {
  9065. var n = this;
  9066. n._requestInProgress = !1;
  9067. n._pending && n._queueRequest(n._pending.options, n._pending.callback)
  9068. },
  9069. _handleCustomErrors: function(n) {
  9070. if (this.reader.errors) {
  9071. var t = this.reader.errors(n);
  9072. if (t) return this.trigger(a, {
  9073. xhr: null,
  9074. status: "customerror",
  9075. errorThrown: "custom error",
  9076. errors: t
  9077. }), !0
  9078. }
  9079. return !1
  9080. },
  9081. _observe: function(n) {
  9082. var t = this,
  9083. i = t.reader.model,
  9084. u = !1;
  9085. return i && n.length && (u = !(n[0] instanceof i)), n instanceof p ? u && (n.type = t.reader.model, n.wrapAll(n, n)) : (n = new p(n, t.reader.model), n.parent = function() {
  9086. return t.parent()
  9087. }), t._isServerGrouped() && ur(n, i), t._changeHandler && t._data && t._data instanceof p ? t._data.unbind(r, t._changeHandler) : t._changeHandler = v(t._change, t), n.bind(r, t._changeHandler)
  9088. },
  9089. _change: function(n) {
  9090. var t = this,
  9091. r, f, i = n ? n.action : "",
  9092. u;
  9093. if (i === "remove")
  9094. for (r = 0, f = n.items.length; r < f; r++) n.items[r].isNew && n.items[r].isNew() || t._destroyed.push(n.items[r]);
  9095. t.options.autoSync && (i === "add" || i === "remove" || i === "itemchange") ? t.sync() : (u = parseInt(t._total || t.reader.total(t._pristine), 10), i === "add" ? u += n.items.length : i === "remove" ? u -= n.items.length : i === "itemchange" || i === "sync" || t.options.serverPaging || (u = t.reader.total(t._pristine)), t._total = u, t._process(t._data, n))
  9096. },
  9097. _process: function(n, i) {
  9098. var f = this,
  9099. e = {},
  9100. o;
  9101. f.options.serverPaging !== !0 && (e.skip = f._skip, e.take = f._take || f._pageSize, e.skip === t && f._page !== t && f._pageSize !== t && (e.skip = (f._page - 1) * f._pageSize));
  9102. f.options.serverSorting !== !0 && (e.sort = f._sort);
  9103. f.options.serverFiltering !== !0 && (e.filter = f._filter);
  9104. f.options.serverGrouping !== !0 && (e.group = f._group);
  9105. f.options.serverAggregates !== !0 && (e.aggregate = f._aggregate, f._aggregateResult = di(n, e));
  9106. o = u.process(n, e);
  9107. f._view = o.data;
  9108. o.total === t || f.options.serverFiltering || (f._total = o.total);
  9109. i = i || {};
  9110. i.items = i.items || f._view;
  9111. f.trigger(r, i)
  9112. },
  9113. _mergeState: function(n) {
  9114. var i = this;
  9115. return n !== t && (i._pageSize = n.pageSize, i._page = n.page, i._sort = n.sort, i._filter = n.filter, i._group = n.group, i._aggregate = n.aggregate, i._skip = n.skip, i._take = n.take, i._skip === t && (i._skip = i.skip(), n.skip = i.skip()), i._take === t && i._pageSize !== t && (i._take = i._pageSize, n.take = i._take), n.sort && (i._sort = n.sort = it(n.sort)), n.filter && (i._filter = n.filter = ct(n.filter)), n.group && (i._group = n.group = rt(n.group)), n.aggregate && (i._aggregate = n.aggregate = su(n.aggregate))), n
  9116. },
  9117. query: function(n) {
  9118. var i = this,
  9119. f, e = i.options.serverSorting || i.options.serverPaging || i.options.serverFiltering || i.options.serverGrouping || i.options.serverAggregates;
  9120. e || (i._data === t || i._data.length === 0) && !i._destroyed.length ? i.read(i._mergeState(n)) : i.trigger(tt, {
  9121. type: "read"
  9122. }) || (i.trigger(bt), f = u.process(i._data, i._mergeState(n)), i.options.serverFiltering || (i._total = f.total !== t ? f.total : i._data.length), i._view = f.data, i._aggregateResult = di(i._data, n), i.trigger(nt, {}), i.trigger(r, {
  9123. items: f.data
  9124. }))
  9125. },
  9126. fetch: function(t) {
  9127. var i = this;
  9128. return n.Deferred(function(n) {
  9129. var f = function(r) {
  9130. i.unbind(a, u);
  9131. n.resolve();
  9132. t && t.call(i, r)
  9133. },
  9134. u = function(t) {
  9135. n.reject(t)
  9136. };
  9137. i.one(r, f);
  9138. i.one(a, u);
  9139. i._query()
  9140. }).promise()
  9141. },
  9142. _query: function(n) {
  9143. var t = this;
  9144. t.query(e({}, {
  9145. page: t.page(),
  9146. pageSize: t.pageSize(),
  9147. sort: t.sort(),
  9148. filter: t.filter(),
  9149. group: t.group(),
  9150. aggregate: t.aggregate()
  9151. }, n))
  9152. },
  9153. next: function(n) {
  9154. var t = this,
  9155. i = t.page(),
  9156. r = t.total();
  9157. if (n = n || {}, i && (!r || !(i + 1 > t.totalPages()))) return t._skip = i * t.take(), i += 1, n.page = i, t._query(n), i
  9158. },
  9159. prev: function(n) {
  9160. var t = this,
  9161. i = t.page();
  9162. if (n = n || {}, i && i !== 1) return t._skip = t._skip - t.take(), i -= 1, n.page = i, t._query(n), i
  9163. },
  9164. page: function(n) {
  9165. var i = this,
  9166. r;
  9167. if (n !== t) {
  9168. n = f.max(f.min(f.max(n, 1), i.totalPages()), 1);
  9169. i._query({
  9170. page: n
  9171. });
  9172. return
  9173. }
  9174. return r = i.skip(), r !== t ? f.round((r || 0) / (i.take() || 1)) + 1 : t
  9175. },
  9176. pageSize: function(n) {
  9177. var i = this;
  9178. if (n !== t) {
  9179. i._query({
  9180. pageSize: n,
  9181. page: 1
  9182. });
  9183. return
  9184. }
  9185. return i.take()
  9186. },
  9187. sort: function(n) {
  9188. var i = this;
  9189. if (n !== t) {
  9190. i._query({
  9191. sort: n
  9192. });
  9193. return
  9194. }
  9195. return i._sort
  9196. },
  9197. filter: function(n) {
  9198. var i = this;
  9199. if (n === t) return i._filter;
  9200. i._query({
  9201. filter: n,
  9202. page: 1
  9203. })
  9204. },
  9205. group: function(n) {
  9206. var i = this;
  9207. if (n !== t) {
  9208. i._query({
  9209. group: n
  9210. });
  9211. return
  9212. }
  9213. return i._group
  9214. },
  9215. total: function() {
  9216. return parseInt(this._total || 0, 10)
  9217. },
  9218. aggregate: function(n) {
  9219. var i = this;
  9220. if (n !== t) {
  9221. i._query({
  9222. aggregate: n
  9223. });
  9224. return
  9225. }
  9226. return i._aggregate
  9227. },
  9228. aggregates: function() {
  9229. return this._aggregateResult
  9230. },
  9231. totalPages: function() {
  9232. var n = this,
  9233. t = n.pageSize() || n.total();
  9234. return f.ceil((n.total() || 0) / t)
  9235. },
  9236. inRange: function(n, t) {
  9237. var i = this,
  9238. r = f.min(n + t, i.total());
  9239. return !i.options.serverPaging && i.data.length > 0 ? !0 : i._findRange(n, r).length > 0
  9240. },
  9241. lastRange: function() {
  9242. var n = this._ranges;
  9243. return n[n.length - 1] || {
  9244. start: 0,
  9245. end: 0,
  9246. data: []
  9247. }
  9248. },
  9249. firstItemUid: function() {
  9250. var n = this._ranges;
  9251. return n.length && n[0].data.length && n[0].data[0].uid
  9252. },
  9253. range: function(n, i) {
  9254. n = f.min(n || 0, this.total());
  9255. var r = this,
  9256. e = f.max(f.floor(n / i), 0) * i,
  9257. u = f.min(e + i, r.total()),
  9258. o;
  9259. if (o = r._findRange(n, f.min(n + i, r.total())), o.length) {
  9260. r._skip = n > r.skip() ? f.min(u, (r.totalPages() - 1) * r.take()) : e;
  9261. r._take = i;
  9262. var s = r.options.serverPaging,
  9263. h = r.options.serverSorting,
  9264. c = r.options.serverFiltering;
  9265. try {
  9266. r.options.serverPaging = !0;
  9267. r._isServerGrouped() || r.group() && r.group().length || (r.options.serverSorting = !0);
  9268. r.options.serverFiltering = !0;
  9269. s && (r._data = o = r._observe(o));
  9270. r._process(o)
  9271. } finally {
  9272. r.options.serverPaging = s;
  9273. r.options.serverSorting = h;
  9274. r.options.serverFiltering = c
  9275. }
  9276. return
  9277. }
  9278. i !== t && (r._rangeExists(e, u) ? e < n && r.prefetch(u, i, function() {
  9279. r.range(n, i)
  9280. }) : r.prefetch(e, i, function() {
  9281. n > e && u < r.total() && !r._rangeExists(u, f.min(u + i, r.total())) ? r.prefetch(u, i, function() {
  9282. r.range(n, i)
  9283. }) : r.range(n, i)
  9284. }))
  9285. },
  9286. _findRange: function(n, i) {
  9287. for (var f = this, p = f._ranges, r, w = [], c, l, s, b, a, v, h = f.options, g = h.serverSorting || h.serverPaging || h.serverFiltering || h.serverGrouping || h.serverAggregates, y, e, d, o = 0, k = p.length; o < k; o++)
  9288. if (r = p[o], n >= r.start && n <= r.end) {
  9289. for (e = 0, c = o; c < k; c++)
  9290. if (r = p[c], y = f._flatData(r.data), y.length && n + e >= r.start && (b = r.data, a = r.end, g || (d = rt(f.group() || []).concat(it(f.sort() || [])), v = u.process(r.data, {
  9291. sort: d,
  9292. filter: f.filter()
  9293. }), y = b = v.data, v.total !== t && (a = v.total)), l = 0, n + e > r.start && (l = n + e - r.start), s = y.length, a > i && (s = s - (a - i)), e += s - l, w = f._mergeGroups(w, b, l, s), i <= r.end && e == i - n)) return w;
  9294. break
  9295. }
  9296. return []
  9297. },
  9298. _mergeGroups: function(n, t, i, r) {
  9299. if (this._isServerGrouped()) {
  9300. var u = t.toJSON(),
  9301. f;
  9302. return n.length && (f = n[n.length - 1]), ii(f, u, i, r), n.concat(u)
  9303. }
  9304. return n.concat(t.slice(i, r))
  9305. },
  9306. skip: function() {
  9307. var n = this;
  9308. return n._skip === t ? n._page !== t ? (n._page - 1) * (n.take() || 1) : t : n._skip
  9309. },
  9310. take: function() {
  9311. return this._take || this._pageSize
  9312. },
  9313. _prefetchSuccessHandler: function(n, t, i) {
  9314. var u = this;
  9315. return function(f) {
  9316. var h = !1,
  9317. e = {
  9318. start: n,
  9319. end: t,
  9320. data: []
  9321. },
  9322. o, c, s;
  9323. if (u._dequeueRequest(), u.trigger(nt, {
  9324. response: f,
  9325. type: "read"
  9326. }), f = u.reader.parse(f), s = u._readData(f), s.length) {
  9327. for (o = 0, c = u._ranges.length; o < c; o++)
  9328. if (u._ranges[o].start === n) {
  9329. h = !0;
  9330. e = u._ranges[o];
  9331. break
  9332. }
  9333. h || u._ranges.push(e)
  9334. }
  9335. e.data = u._observe(s);
  9336. e.end = e.start + u._flatData(e.data).length;
  9337. u._ranges.sort(function(n, t) {
  9338. return n.start - t.start
  9339. });
  9340. u._total = u.reader.total(f);
  9341. i && s.length ? i() : u.trigger(r, {})
  9342. }
  9343. },
  9344. prefetch: function(n, t, i) {
  9345. var r = this,
  9346. u = f.min(n + t, r.total()),
  9347. e = {
  9348. take: t,
  9349. skip: n,
  9350. page: n / t + 1,
  9351. pageSize: t,
  9352. sort: r._sort,
  9353. filter: r._filter,
  9354. group: r._group,
  9355. aggregate: r._aggregate
  9356. };
  9357. r._rangeExists(n, u) ? i && i() : (clearTimeout(r._timeout), r._timeout = setTimeout(function() {
  9358. r._queueRequest(e, function() {
  9359. r.trigger(tt, {
  9360. type: "read"
  9361. }) ? r._dequeueRequest() : r.transport.read({
  9362. data: r._params(e),
  9363. success: r._prefetchSuccessHandler(n, u, i)
  9364. })
  9365. })
  9366. }, 100))
  9367. },
  9368. _rangeExists: function(n, t) {
  9369. for (var f = this, r = f._ranges, i = 0, u = r.length; i < u; i++)
  9370. if (r[i].start <= n && r[i].end >= t) return !0;
  9371. return !1
  9372. }
  9373. });
  9374. ri = {};
  9375. ri.create = function(n, t) {
  9376. var u, r = n.transport;
  9377. return r ? (r.read = typeof r.read === o ? {
  9378. url: r.read
  9379. } : r.read, n.type && (i.data.transports[n.type] && !l(i.data.transports[n.type]) ? u = new i.data.transports[n.type](e(r, {
  9380. data: t
  9381. })) : r = e(!0, {}, i.data.transports[n.type], r), n.schema = e(!0, {}, i.data.schemas[n.type], n.schema)), u || (u = y(r.read) ? r : new nr(r))) : u = new gi({
  9382. data: n.data
  9383. }), u
  9384. };
  9385. h.create = function(n) {
  9386. n = n && n.push ? {
  9387. data: n
  9388. } : n;
  9389. var t = n || {},
  9390. u = t.data,
  9391. r = t.fields,
  9392. c = t.table,
  9393. l = t.select,
  9394. f, a, s = {},
  9395. o;
  9396. if (u || !r || t.transport || (c ? u = pu(c, r) : l && (u = yu(l, r))), i.data.Model && r && (!t.schema || !t.schema.model)) {
  9397. for (f = 0, a = r.length; f < a; f++) o = r[f], o.type && (s[o.field] = o);
  9398. k(s) || (t.schema = e(!0, t.schema, {
  9399. model: {
  9400. fields: s
  9401. }
  9402. }))
  9403. }
  9404. return t.data = u, t instanceof h ? t : new h(t)
  9405. };
  9406. ui = c.define({
  9407. init: function(n) {
  9408. var t = this,
  9409. r = t.hasChildren || n && n.hasChildren,
  9410. f = "items",
  9411. u = {};
  9412. i.data.Model.fn.init.call(t, n);
  9413. typeof t.children === o && (f = t.children);
  9414. u = {
  9415. schema: {
  9416. data: f,
  9417. model: {
  9418. hasChildren: r,
  9419. id: t.idField
  9420. }
  9421. }
  9422. };
  9423. typeof t.children !== o && e(u, t.children);
  9424. u.data = n;
  9425. r || (r = u.schema.data);
  9426. typeof r === o && (r = i.getter(r));
  9427. y(r) && (t.hasChildren = !!r.call(t, t));
  9428. t._childrenOptions = u;
  9429. t.hasChildren && t._initChildren();
  9430. t._loaded = !!(n && (n[f] || n._loaded))
  9431. },
  9432. _initChildren: function() {
  9433. var n = this,
  9434. t, i, u;
  9435. n.children instanceof w || (t = n.children = new w(n._childrenOptions), i = t.transport, u = i.parameterMap, i.parameterMap = function(t) {
  9436. return t[n.idField || "id"] = n.id, u && (t = u(t)), t
  9437. }, t.parent = function() {
  9438. return n
  9439. }, t.bind(r, function(t) {
  9440. t.node = t.node || n;
  9441. n.trigger(r, t)
  9442. }), t.bind(a, function(t) {
  9443. var i = n.parent();
  9444. i && (t.node = t.node || n, i.trigger(a, t))
  9445. }), n._updateChildrenField())
  9446. },
  9447. append: function(n) {
  9448. this._initChildren();
  9449. this.loaded(!0);
  9450. this.children.add(n)
  9451. },
  9452. hasChildren: !1,
  9453. level: function() {
  9454. for (var n = this.parentNode(), t = 0; n && n.parentNode;) t++, n = n.parentNode ? n.parentNode() : null;
  9455. return t
  9456. },
  9457. _updateChildrenField: function() {
  9458. var n = this._childrenOptions.schema.data;
  9459. this[n || "items"] = this.children.data()
  9460. },
  9461. _childrenLoaded: function() {
  9462. this._loaded = !0;
  9463. this._updateChildrenField()
  9464. },
  9465. load: function() {
  9466. var i = {},
  9467. u = "_query",
  9468. n;
  9469. if (this.hasChildren) {
  9470. this._initChildren();
  9471. n = this.children;
  9472. i[this.idField || "id"] = this.id;
  9473. this._loaded || (n._data = t, u = "read");
  9474. n.one(r, v(this._childrenLoaded, this));
  9475. n[u](i)
  9476. } else this.loaded(!0)
  9477. },
  9478. parentNode: function() {
  9479. var n = this.parent();
  9480. return n.parent()
  9481. },
  9482. loaded: function(n) {
  9483. if (n !== t) this._loaded = n;
  9484. else return this._loaded
  9485. },
  9486. shouldSerialize: function(n) {
  9487. return c.fn.shouldSerialize.call(this, n) && n !== "children" && n !== "_loaded" && n !== "hasChildren" && n !== "_childrenOptions"
  9488. }
  9489. });
  9490. w = h.extend({
  9491. init: function(n) {
  9492. var t = ui.define({
  9493. children: n
  9494. });
  9495. h.fn.init.call(this, e(!0, {}, {
  9496. schema: {
  9497. modelBase: t,
  9498. model: t
  9499. }
  9500. }, n));
  9501. this._attachBubbleHandlers()
  9502. },
  9503. _attachBubbleHandlers: function() {
  9504. var n = this;
  9505. n._data.bind(a, function(t) {
  9506. n.trigger(a, t)
  9507. })
  9508. },
  9509. remove: function(n) {
  9510. var t = n.parentNode(),
  9511. i = this,
  9512. r;
  9513. return t && t._initChildren && (i = t.children), r = h.fn.remove.call(i, n), t && !i.data().length && (t.hasChildren = !1), r
  9514. },
  9515. success: ar("success"),
  9516. data: ar("data"),
  9517. insert: function(n, t) {
  9518. var i = this.parent();
  9519. return i && i._initChildren && (i.hasChildren = !0, i._initChildren()), h.fn.insert.call(this, n, t)
  9520. },
  9521. _find: function(n, t) {
  9522. var r, e, i, u, f;
  9523. if (i = h.fn[n].call(this, t), i) return i;
  9524. if (u = this._flatData(this.data()), u)
  9525. for (r = 0, e = u.length; r < e; r++)
  9526. if ((f = u[r].children, f instanceof w) && (i = f[n](t), i)) return i
  9527. },
  9528. get: function(n) {
  9529. return this._find("get", n)
  9530. },
  9531. getByUid: function(n) {
  9532. return this._find("getByUid", n)
  9533. }
  9534. });
  9535. w.create = function(n) {
  9536. n = n && n.push ? {
  9537. data: n
  9538. } : n;
  9539. var t = n || {},
  9540. i = t.data,
  9541. r = t.fields,
  9542. u = t.list;
  9543. return i && i._dataSource ? i._dataSource : (i || !r || t.transport || u && (i = vr(u, r)), t.data = i, t instanceof w ? t : new w(t))
  9544. };
  9545. fi = i.Observable.extend({
  9546. init: function(n, t, r) {
  9547. i.Observable.fn.init.call(this);
  9548. this._prefetching = !1;
  9549. this.dataSource = n;
  9550. this.prefetch = !r;
  9551. var u = this;
  9552. n.bind("change", function() {
  9553. u._change()
  9554. });
  9555. this._syncWithDataSource();
  9556. this.setViewSize(t)
  9557. },
  9558. setViewSize: function(n) {
  9559. this.viewSize = n;
  9560. this._recalculate()
  9561. },
  9562. at: function(n) {
  9563. var i = this.pageSize,
  9564. r, u;
  9565. if (n >= this.total()) {
  9566. this.trigger("endreached", {
  9567. index: n
  9568. });
  9569. return
  9570. }
  9571. return this.useRanges ? (this.useRanges && ((n < this.dataOffset || n > this.skip + i) && (u = Math.floor(n / i) * i, this.range(u)), n === this.prefetchThreshold && this._prefetch(), n === this.midPageThreshold ? this.range(this.nextMidRange) : n === this.nextPageThreshold ? this.range(this.nextFullRange) : n === this.pullBackThreshold && (this.offset === this.skip ? this.range(this.previousMidRange) : this.range(this.previousFullRange)), r = this.dataSource.at(n - this.dataOffset)), r === t && this.trigger("endreached", {
  9572. index: n
  9573. }), r) : this.dataSource.view()[n]
  9574. },
  9575. indexOf: function(n) {
  9576. return this.dataSource.data().indexOf(n) + this.dataOffset
  9577. },
  9578. total: function() {
  9579. return parseInt(this.dataSource.total(), 10)
  9580. },
  9581. next: function() {
  9582. var n = this,
  9583. t = n.pageSize,
  9584. i = n.skip - n.viewSize,
  9585. r = f.max(f.floor(i / t), 0) * t + t;
  9586. this.offset = i;
  9587. this.dataSource.prefetch(r, t, function() {
  9588. n._goToRange(i, !0)
  9589. })
  9590. },
  9591. range: function(n) {
  9592. if (this.offset !== n) {
  9593. var r = this,
  9594. t = this.pageSize,
  9595. u = f.max(f.floor(n / t), 0) * t + t,
  9596. i = this.dataSource;
  9597. this.offset = n;
  9598. this._recalculate();
  9599. i.inRange(n, t) ? this._goToRange(n) : this.prefetch && i.prefetch(u, t, function() {
  9600. r._goToRange(n, !0)
  9601. })
  9602. }
  9603. },
  9604. syncDataSource: function() {
  9605. var n = this.offset;
  9606. this.offset = null;
  9607. this.range(n)
  9608. },
  9609. destroy: function() {
  9610. this.unbind()
  9611. },
  9612. _prefetch: function() {
  9613. var i = this,
  9614. n = this.pageSize,
  9615. t = this.skip + n,
  9616. r = this.dataSource;
  9617. r.inRange(t, n) || this._prefetching || !this.prefetch || (this._prefetching = !0, this.trigger("prefetching", {
  9618. skip: t,
  9619. take: n
  9620. }), r.prefetch(t, n, function() {
  9621. i._prefetching = !1;
  9622. i.trigger("prefetched", {
  9623. skip: t,
  9624. take: n
  9625. })
  9626. }))
  9627. },
  9628. _goToRange: function(n, t) {
  9629. this.offset === n && (this.dataOffset = n, this._expanding = t, this.dataSource.range(n, this.pageSize))
  9630. },
  9631. _change: function() {
  9632. var n = this.dataSource,
  9633. t = n.firstItemUid();
  9634. this.length = this.useRanges ? n.lastRange().end : n.view().length;
  9635. this._firstItemUid === t && this.useRanges || (this._syncWithDataSource(), this._recalculate(), this.trigger("reset", {
  9636. offset: this.offset
  9637. }));
  9638. this.trigger("resize");
  9639. this._expanding && this.trigger("expand");
  9640. delete this._expanding
  9641. },
  9642. _syncWithDataSource: function() {
  9643. var n = this.dataSource;
  9644. this._firstItemUid = n.firstItemUid();
  9645. this.dataOffset = this.offset = n.skip() || 0;
  9646. this.pageSize = n.pageSize();
  9647. this.useRanges = n.options.serverPaging
  9648. },
  9649. _recalculate: function() {
  9650. var t = this.pageSize,
  9651. r = this.offset,
  9652. i = this.viewSize,
  9653. n = Math.ceil(r / t) * t;
  9654. this.skip = n;
  9655. this.midPageThreshold = n + t - 1;
  9656. this.nextPageThreshold = n + i - 1;
  9657. this.prefetchThreshold = n + Math.floor(t / 3 * 2);
  9658. this.pullBackThreshold = this.offset - 1;
  9659. this.nextMidRange = n + t - i;
  9660. this.nextFullRange = n;
  9661. this.previousMidRange = r - i;
  9662. this.previousFullRange = n - t
  9663. }
  9664. });
  9665. yr = i.Observable.extend({
  9666. init: function(n, t) {
  9667. var r = this;
  9668. i.Observable.fn.init.call(r);
  9669. this.dataSource = n;
  9670. this.batchSize = t;
  9671. this._total = 0;
  9672. this.buffer = new fi(n, t * 3);
  9673. this.buffer.bind({
  9674. endreached: function(n) {
  9675. r.trigger("endreached", {
  9676. index: n.index
  9677. })
  9678. },
  9679. prefetching: function(n) {
  9680. r.trigger("prefetching", {
  9681. skip: n.skip,
  9682. take: n.take
  9683. })
  9684. },
  9685. prefetched: function(n) {
  9686. r.trigger("prefetched", {
  9687. skip: n.skip,
  9688. take: n.take
  9689. })
  9690. },
  9691. reset: function() {
  9692. r._total = 0;
  9693. r.trigger("reset")
  9694. },
  9695. resize: function() {
  9696. r._total = Math.ceil(this.length / r.batchSize);
  9697. r.trigger("resize", {
  9698. total: r.total(),
  9699. offset: this.offset
  9700. })
  9701. }
  9702. })
  9703. },
  9704. syncDataSource: function() {
  9705. this.buffer.syncDataSource()
  9706. },
  9707. at: function(n) {
  9708. var i = this.buffer,
  9709. f = n * this.batchSize,
  9710. o = this.batchSize,
  9711. e = [],
  9712. u, r;
  9713. for (i.offset > f && i.at(i.offset - 1), r = 0; r < o; r++) {
  9714. if (u = i.at(f + r), u === t) break;
  9715. e.push(u)
  9716. }
  9717. return e
  9718. },
  9719. total: function() {
  9720. return this._total
  9721. },
  9722. destroy: function() {
  9723. this.buffer.destroy();
  9724. this.unbind()
  9725. }
  9726. });
  9727. e(!0, i.data, {
  9728. readers: {
  9729. json: ti
  9730. },
  9731. Query: u,
  9732. DataSource: h,
  9733. HierarchicalDataSource: w,
  9734. Node: ui,
  9735. ObservableObject: s,
  9736. ObservableArray: p,
  9737. LocalTransport: gi,
  9738. RemoteTransport: nr,
  9739. Cache: ut,
  9740. DataReader: ti,
  9741. Model: c,
  9742. Buffer: fi,
  9743. BatchBuffer: yr
  9744. })
  9745. }(window.kendo.jQuery);
  9746. kendo_module({
  9747. id: "validator",
  9748. name: "Validator",
  9749. category: "web",
  9750. description: "The Validator offers an easy way to do a client-side form validation.",
  9751. depends: ["core"]
  9752. }),
  9753. function(n) {
  9754. function nt(i) {
  9755. var r = t.ui.validator.ruleResolvers || {},
  9756. u = {};
  9757. for (var f in r) n.extend(!0, u, r[f].resolve(i));
  9758. return u
  9759. }
  9760. function tt(n) {
  9761. return n.replace(/&amp/g, "&amp;").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">")
  9762. }
  9763. function it(n) {
  9764. return (n = (n + "").split("."), n.length > 1) ? n[1].length : 0
  9765. }
  9766. function rt(t) {
  9767. return n.parseHTML ? n(n.parseHTML(t)) : n(t)
  9768. }
  9769. var t = window.kendo,
  9770. f = t.ui.Widget,
  9771. i = ".kendoValidator",
  9772. u = "k-invalid-msg",
  9773. p = new RegExp(u, "i"),
  9774. w = "k-invalid",
  9775. b = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
  9776. k = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,
  9777. r = ":input:not(:button,[type=submit],[type=reset],[disabled],[readonly])",
  9778. o = ":checkbox:not([disabled],[readonly])",
  9779. e = "[type=number],[type=range]",
  9780. s = "blur",
  9781. h = "name",
  9782. c = "form",
  9783. l = "novalidate",
  9784. d = n.proxy,
  9785. a = function(n, t) {
  9786. return typeof t == "string" && (t = new RegExp("^(?:" + t + ")$")), t.test(n)
  9787. },
  9788. v = function(n, t, i) {
  9789. var r = n.val();
  9790. return n.filter(t).length && r !== "" ? a(r, i) : !0
  9791. },
  9792. g = function(n, t) {
  9793. return n.length ? n[0].attributes[t] != null : !1
  9794. },
  9795. y;
  9796. t.ui.validator || (t.ui.validator = {
  9797. rules: {},
  9798. messages: {}
  9799. });
  9800. y = f.extend({
  9801. init: function(i, r) {
  9802. var u = this,
  9803. e = nt(i);
  9804. r = r || {};
  9805. r.rules = n.extend({}, t.ui.validator.rules, e.rules, r.rules);
  9806. r.messages = n.extend({}, t.ui.validator.messages, e.messages, r.messages);
  9807. f.fn.init.call(u, i, r);
  9808. u._errorTemplate = t.template(u.options.errorTemplate);
  9809. u.element.is(c) && u.element.attr(l, l);
  9810. u._errors = {};
  9811. u._attachEvents()
  9812. },
  9813. events: ["validate"],
  9814. options: {
  9815. name: "Validator",
  9816. errorTemplate: '<span class="k-widget k-tooltip k-tooltip-validation"><span class="k-icon k-warning"> <\/span> #=message#<\/span>',
  9817. messages: {
  9818. required: "{0} is required",
  9819. pattern: "{0} is not valid",
  9820. min: "{0} should be greater than or equal to {1}",
  9821. max: "{0} should be smaller than or equal to {1}",
  9822. step: "{0} is not valid",
  9823. email: "{0} is not valid email",
  9824. url: "{0} is not valid URL",
  9825. date: "{0} is not valid date"
  9826. },
  9827. rules: {
  9828. required: function(n) {
  9829. var i = n.filter("[type=checkbox]").length && !n.is(":checked"),
  9830. t = n.val();
  9831. return !(g(n, "required") && (t === "" || !t || i))
  9832. },
  9833. pattern: function(n) {
  9834. return n.filter("[type=text],[type=email],[type=url],[type=tel],[type=search],[type=password]").filter("[pattern]").length && n.val() !== "" ? a(n.val(), n.attr("pattern")) : !0
  9835. },
  9836. min: function(n) {
  9837. if (n.filter(e + ",[" + t.attr("type") + "=number]").filter("[min]").length && n.val() !== "") {
  9838. var i = parseFloat(n.attr("min")) || 0,
  9839. r = t.parseFloat(n.val());
  9840. return i <= r
  9841. }
  9842. return !0
  9843. },
  9844. max: function(n) {
  9845. if (n.filter(e + ",[" + t.attr("type") + "=number]").filter("[max]").length && n.val() !== "") {
  9846. var i = parseFloat(n.attr("max")) || 0,
  9847. r = t.parseFloat(n.val());
  9848. return i >= r
  9849. }
  9850. return !0
  9851. },
  9852. step: function(n) {
  9853. if (n.filter(e + ",[" + t.attr("type") + "=number]").filter("[step]").length && n.val() !== "") {
  9854. var f = parseFloat(n.attr("min")) || 0,
  9855. i = parseFloat(n.attr("step")) || 1,
  9856. o = parseFloat(n.val()),
  9857. r = it(i),
  9858. u;
  9859. return r ? (u = Math.pow(10, r), (o - f) * u % (i * u) / Math.pow(100, r) == 0) : (o - f) % i == 0
  9860. }
  9861. return !0
  9862. },
  9863. email: function(n) {
  9864. return v(n, "[type=email],[" + t.attr("type") + "=email]", b)
  9865. },
  9866. url: function(n) {
  9867. return v(n, "[type=url],[" + t.attr("type") + "=url]", k)
  9868. },
  9869. date: function(n) {
  9870. return n.filter("[type^=date],[" + t.attr("type") + "=date]").length && n.val() !== "" ? t.parseDate(n.val(), n.attr(t.attr("format"))) !== null : !0
  9871. }
  9872. },
  9873. validateOnBlur: !0
  9874. },
  9875. destroy: function() {
  9876. f.fn.destroy.call(this);
  9877. this.element.off(i)
  9878. },
  9879. _submit: function(n) {
  9880. return this.validate() ? !0 : (n.stopPropagation(), n.stopImmediatePropagation(), n.preventDefault(), !1)
  9881. },
  9882. _attachEvents: function() {
  9883. var t = this;
  9884. if (t.element.is(c)) t.element.on("submit" + i, d(t._submit, t));
  9885. if (t.options.validateOnBlur)
  9886. if (t.element.is(r)) {
  9887. t.element.on(s + i, function() {
  9888. t.validateInput(t.element)
  9889. });
  9890. if (t.element.is(o)) t.element.on("click" + i, function() {
  9891. t.validateInput(t.element)
  9892. })
  9893. } else {
  9894. t.element.on(s + i, r, function() {
  9895. t.validateInput(n(this))
  9896. });
  9897. t.element.on("click" + i, o, function() {
  9898. t.validateInput(n(this))
  9899. })
  9900. }
  9901. },
  9902. validate: function() {
  9903. var i, n, t = !1,
  9904. f, u;
  9905. if (this._errors = {}, this.element.is(r)) t = this.validateInput(this.element);
  9906. else {
  9907. for (u = !1, i = this.element.find(r), n = 0, f = i.length; n < f; n++) this.validateInput(i.eq(n)) || (u = !0);
  9908. t = !u
  9909. }
  9910. return this.trigger("validate", {
  9911. valid: t
  9912. }), t
  9913. },
  9914. validateInput: function(t) {
  9915. var r;
  9916. t = n(t);
  9917. var i = this,
  9918. c = i._errorTemplate,
  9919. s = i._checkValidity(t),
  9920. f = s.valid,
  9921. l = "." + u,
  9922. e = t.attr(h) || "",
  9923. a = i._findMessageContainer(e).add(t.next(l)).hide(),
  9924. o;
  9925. return t.removeAttr("aria-invalid"), f || (o = i._extractMessage(t, s.key), i._errors[e] = o, r = rt(c({
  9926. message: tt(o)
  9927. })), i._decorateMessageContainer(r, e), a.replaceWith(r).length || r.insertAfter(t), r.show(), t.attr("aria-invalid", !0)), t.toggleClass(w, !f), f
  9928. },
  9929. hideMessages: function() {
  9930. var i = this,
  9931. t = "." + u,
  9932. n = i.element;
  9933. n.is(r) ? n.next(t).hide() : n.find(t).hide()
  9934. },
  9935. _findMessageContainer: function(i) {
  9936. for (var u, h, e = t.ui.validator.messageLocators, o, r = n(), s = this.element[0].getElementsByTagName("*"), f = 0, c = s.length; f < c; f++) u = s[f], p.test(u.className) && (h = u.getAttribute(t.attr("for")), h === i && (r = r.add(u)));
  9937. for (o in e) r = r.add(e[o].locate(this.element, i));
  9938. return r
  9939. },
  9940. _decorateMessageContainer: function(n, i) {
  9941. var r = t.ui.validator.messageLocators,
  9942. f;
  9943. n.addClass(u).attr(t.attr("for"), i || "");
  9944. for (f in r) r[f].decorate(n, i);
  9945. n.attr("role", "alert")
  9946. },
  9947. _extractMessage: function(n, i) {
  9948. var u = this,
  9949. r = u.options.messages[i],
  9950. f = n.attr(h);
  9951. return r = t.isFunction(r) ? r(n) : r, t.format(n.attr(t.attr(i + "-msg")) || n.attr("validationMessage") || n.attr("title") || r || "", f, n.attr(i))
  9952. },
  9953. _checkValidity: function(n) {
  9954. var t = this.options.rules;
  9955. for (var i in t)
  9956. if (!t[i](n)) return {
  9957. valid: !1,
  9958. key: i
  9959. };
  9960. return {
  9961. valid: !0
  9962. }
  9963. },
  9964. errors: function() {
  9965. var n = [],
  9966. t = this._errors;
  9967. for (var i in t) n.push(t[i]);
  9968. return n
  9969. }
  9970. });
  9971. t.ui.plugin(y)
  9972. }(window.kendo.jQuery);
  9973. kendo_module({
  9974. id: "userevents",
  9975. name: "User Events",
  9976. category: "framework",
  9977. depends: ["core"],
  9978. hidden: !0
  9979. }),
  9980. function(n) {
  9981. function it(n, t) {
  9982. var i = n.x.location,
  9983. r = n.y.location,
  9984. u = t.x.location,
  9985. f = t.y.location,
  9986. e = i - u,
  9987. o = r - f;
  9988. return {
  9989. center: {
  9990. x: (i + u) / 2,
  9991. y: (r + f) / 2
  9992. },
  9993. distance: Math.sqrt(e * e + o * o)
  9994. }
  9995. }
  9996. function h(n) {
  9997. var t = [],
  9998. r = n.originalEvent,
  9999. f = n.currentTarget,
  10000. e = 0,
  10001. s, o, u;
  10002. if (n.api) t.push({
  10003. id: 2,
  10004. event: n,
  10005. target: n.target,
  10006. currentTarget: n.target,
  10007. location: n
  10008. });
  10009. else if (n.type.match(/touch/))
  10010. for (o = r ? r.changedTouches : [], s = o.length; e < s; e++) u = o[e], t.push({
  10011. location: u,
  10012. event: n,
  10013. target: u.target,
  10014. currentTarget: f,
  10015. id: u.identifier
  10016. });
  10017. else i.pointers || i.msPointers ? t.push({
  10018. location: r,
  10019. event: n,
  10020. target: n.target,
  10021. currentTarget: f,
  10022. id: r.pointerId
  10023. }) : t.push({
  10024. id: 1,
  10025. event: n,
  10026. target: n.target,
  10027. currentTarget: f,
  10028. location: n
  10029. });
  10030. return t
  10031. }
  10032. function ct(t) {
  10033. var i, r, u;
  10034. t.preventDefault();
  10035. i = n(t.data.root);
  10036. r = i.closest(".k-widget").parent();
  10037. r[0] || (r = i.parent());
  10038. u = n.extend(!0, {}, t, {
  10039. target: i[0]
  10040. });
  10041. r.trigger(n.Event(t.type, u))
  10042. }
  10043. function ut(n) {
  10044. for (var r = t.eventMap.up.split(" "), i = 0, u = r.length; i < u; i++) n(r[i])
  10045. }
  10046. var t = window.kendo,
  10047. i = t.support,
  10048. ft = window.document,
  10049. c = t.Class,
  10050. l = t.Observable,
  10051. u = n.now,
  10052. f = n.extend,
  10053. a = i.mobileOS,
  10054. et = a && a.android,
  10055. v = 800,
  10056. ot = i.browser.msie ? 5 : 0,
  10057. y = "press",
  10058. p = "hold",
  10059. w = "select",
  10060. b = "start",
  10061. e = "move",
  10062. o = "end",
  10063. k = "cancel",
  10064. s = "tap",
  10065. d = "release",
  10066. st = "gesturestart",
  10067. g = "gesturechange",
  10068. nt = "gestureend",
  10069. tt = "gesturetap",
  10070. rt = c.extend({
  10071. init: function(n, t) {
  10072. var i = this;
  10073. i.axis = n;
  10074. i._updateLocationData(t);
  10075. i.startLocation = i.location;
  10076. i.velocity = i.delta = 0;
  10077. i.timeStamp = u()
  10078. },
  10079. move: function(n) {
  10080. var t = this,
  10081. i = n["page" + t.axis],
  10082. r = u(),
  10083. f = r - t.timeStamp || 1;
  10084. (i || !et) && (t.delta = i - t.location, t._updateLocationData(n), t.initialDelta = i - t.startLocation, t.velocity = t.delta / f, t.timeStamp = r)
  10085. },
  10086. _updateLocationData: function(n) {
  10087. var t = this,
  10088. i = t.axis;
  10089. t.location = n["page" + i];
  10090. t.client = n["client" + i];
  10091. t.screen = n["screen" + i]
  10092. }
  10093. }),
  10094. ht = c.extend({
  10095. init: function(n, t, i) {
  10096. var r = this;
  10097. f(r, {
  10098. x: new rt("X", i.location),
  10099. y: new rt("Y", i.location),
  10100. userEvents: n,
  10101. target: t,
  10102. currentTarget: i.currentTarget,
  10103. initialTouch: i.target,
  10104. id: i.id,
  10105. _moved: !1,
  10106. _finished: !1
  10107. });
  10108. r.press = function() {
  10109. r._trigger(y, i);
  10110. r._holdTimeout = setTimeout(function() {
  10111. r._trigger(p, i)
  10112. }, n.minHold)
  10113. }
  10114. },
  10115. move: function(n) {
  10116. var t = this;
  10117. if (!t._finished) {
  10118. if (t.x.move(n.location), t.y.move(n.location), !t._moved) {
  10119. if (t._withinIgnoreThreshold()) return;
  10120. if (r.current && r.current !== t.userEvents) return t.dispose();
  10121. t._start(n)
  10122. }
  10123. t._finished || t._trigger(e, n)
  10124. }
  10125. },
  10126. end: function(n) {
  10127. var t = this;
  10128. (t.endTime = u(), t._finished) || (t._finished = !0, t._moved ? t._trigger(o, n) : t._trigger(s, n), clearTimeout(t._holdTimeout), t._trigger(d, n), t.dispose())
  10129. },
  10130. dispose: function() {
  10131. var t = this,
  10132. r = t.userEvents,
  10133. i = r.touches;
  10134. t._finished = !0;
  10135. i.splice(n.inArray(t, i), 1)
  10136. },
  10137. skip: function() {
  10138. this.dispose()
  10139. },
  10140. cancel: function() {
  10141. this.dispose()
  10142. },
  10143. isMoved: function() {
  10144. return this._moved
  10145. },
  10146. _start: function(n) {
  10147. clearTimeout(this._holdTimeout);
  10148. this.startTime = u();
  10149. this._moved = !0;
  10150. this._trigger(b, n)
  10151. },
  10152. _trigger: function(n, t) {
  10153. var i = this,
  10154. r = t.event,
  10155. u = {
  10156. touch: i,
  10157. x: i.x,
  10158. y: i.y,
  10159. target: i.target,
  10160. event: r
  10161. };
  10162. i.userEvents.notify(n, u) && r.preventDefault()
  10163. },
  10164. _withinIgnoreThreshold: function() {
  10165. var n = this.x.initialDelta,
  10166. t = this.y.initialDelta;
  10167. return Math.sqrt(n * n + t * t) <= this.userEvents.threshold
  10168. }
  10169. }),
  10170. r = l.extend({
  10171. init: function(r, u) {
  10172. var h = this,
  10173. a, c = t.guid(),
  10174. it, rt;
  10175. u = u || {};
  10176. a = h.filter = u.filter;
  10177. h.threshold = u.threshold || ot;
  10178. h.minHold = u.minHold || v;
  10179. h.touches = [];
  10180. h._maxTouches = u.multiTouch ? 2 : 1;
  10181. h.allowSelection = u.allowSelection;
  10182. h.captureUpIfMoved = u.captureUpIfMoved;
  10183. h.eventNS = c;
  10184. r = n(r).handler(h);
  10185. l.fn.init.call(h);
  10186. f(h, {
  10187. element: r,
  10188. surface: u.global ? n(ft.documentElement) : n(u.surface || r),
  10189. stopPropagation: u.stopPropagation,
  10190. pressed: !1
  10191. });
  10192. h.surface.handler(h).on(t.applyEventMap("move", c), "_move").on(t.applyEventMap("up cancel", c), "_end");
  10193. r.on(t.applyEventMap("down", c), a, "_start");
  10194. if ((i.pointers || i.msPointers) && r.css("-ms-touch-action", "pinch-zoom double-tap-zoom"), u.preventDragEvent) r.on(t.applyEventMap("dragstart", c), t.preventDefault);
  10195. r.on(t.applyEventMap("mousedown selectstart", c), a, {
  10196. root: r
  10197. }, "_select");
  10198. h.captureUpIfMoved && i.eventCapture && (it = h.surface[0], rt = n.proxy(h.preventIfMoving, h), ut(function(n) {
  10199. it.addEventListener(n, rt, !0)
  10200. }));
  10201. h.bind([y, p, s, b, e, o, d, k, st, g, nt, tt, w], u)
  10202. },
  10203. preventIfMoving: function(n) {
  10204. this._isMoved() && n.preventDefault()
  10205. },
  10206. destroy: function() {
  10207. var n = this,
  10208. t;
  10209. n._destroyed || (n._destroyed = !0, n.captureUpIfMoved && i.eventCapture && (t = n.surface[0], ut(function(i) {
  10210. t.removeEventListener(i, n.preventIfMoving)
  10211. })), n.element.kendoDestroy(n.eventNS), n.surface.kendoDestroy(n.eventNS), n.element.removeData("handler"), n.surface.removeData("handler"), n._disposeAll(), n.unbind(), delete n.surface, delete n.element)
  10212. },
  10213. capture: function() {
  10214. r.current = this
  10215. },
  10216. cancel: function() {
  10217. this._disposeAll();
  10218. this.trigger(k)
  10219. },
  10220. notify: function(n, t) {
  10221. var r = this,
  10222. i = r.touches;
  10223. if (this._isMultiTouch()) {
  10224. switch (n) {
  10225. case e:
  10226. n = g;
  10227. break;
  10228. case o:
  10229. n = nt;
  10230. break;
  10231. case s:
  10232. n = tt
  10233. }
  10234. f(t, {
  10235. touches: i
  10236. }, it(i[0], i[1]))
  10237. }
  10238. return this.trigger(n, t)
  10239. },
  10240. press: function(n, t, i) {
  10241. this._apiCall("_start", n, t, i)
  10242. },
  10243. move: function(n, t) {
  10244. this._apiCall("_move", n, t)
  10245. },
  10246. end: function(n, t) {
  10247. this._apiCall("_end", n, t)
  10248. },
  10249. _isMultiTouch: function() {
  10250. return this.touches.length > 1
  10251. },
  10252. _maxTouchesReached: function() {
  10253. return this.touches.length >= this._maxTouches
  10254. },
  10255. _disposeAll: function() {
  10256. for (var n = this.touches; n.length > 0;) n.pop().dispose()
  10257. },
  10258. _isMoved: function() {
  10259. return n.grep(this.touches, function(n) {
  10260. return n.isMoved()
  10261. }).length
  10262. },
  10263. _select: function(n) {
  10264. (!this.allowSelection || this.trigger(w, {
  10265. event: n
  10266. })) && ct(n)
  10267. },
  10268. _start: function(t) {
  10269. var i = this,
  10270. f = 0,
  10271. s = i.filter,
  10272. e, o = h(t),
  10273. c = o.length,
  10274. u;
  10275. if (!i._maxTouchesReached())
  10276. for (r.current = null, i.currentTarget = t.currentTarget, i.stopPropagation && t.stopPropagation(); f < c; f++) {
  10277. if (i._maxTouchesReached()) break;
  10278. (u = o[f], e = s ? n(u.currentTarget) : i.element, e.length) && (u = new ht(i, e, u), i.touches.push(u), u.press(), i._isMultiTouch() && i.notify("gesturestart", {}))
  10279. }
  10280. },
  10281. _move: function(n) {
  10282. this._eachTouch("move", n)
  10283. },
  10284. _end: function(n) {
  10285. this._eachTouch("end", n)
  10286. },
  10287. _eachTouch: function(n, t) {
  10288. for (var c = this, e = {}, o = h(t), s = c.touches, r, u, f, i = 0; i < s.length; i++) r = s[i], e[r.id] = r;
  10289. for (i = 0; i < o.length; i++) u = o[i], f = e[u.id], f && f[n](u)
  10290. },
  10291. _apiCall: function(t, i, r, u) {
  10292. this[t]({
  10293. api: !0,
  10294. pageX: i,
  10295. pageY: r,
  10296. clientX: i,
  10297. clientY: r,
  10298. target: u || this.element,
  10299. stopPropagation: n.noop,
  10300. preventDefault: n.noop
  10301. })
  10302. }
  10303. });
  10304. r.minHold = function(n) {
  10305. v = n
  10306. };
  10307. t.getTouches = h;
  10308. t.touchDelta = it;
  10309. t.UserEvents = r
  10310. }(window.kendo.jQuery);
  10311. kendo_module({
  10312. id: "draganddrop",
  10313. name: "Drag & drop",
  10314. category: "framework",
  10315. description: "Drag & drop functionality for any DOM element.",
  10316. depends: ["core", "userevents"]
  10317. }),
  10318. function(n, t) {
  10319. function dt(t, i) {
  10320. try {
  10321. return n.contains(t, i) || t == i
  10322. } catch (r) {
  10323. return !1
  10324. }
  10325. }
  10326. function g(n) {
  10327. return kt ? l.elementFromPoint(n.x.screen, n.y.screen) : l.elementFromPoint(n.x.client, n.y.client)
  10328. }
  10329. function w(n, t) {
  10330. return parseInt(n.css(t), 10) || 0
  10331. }
  10332. function st(n, t) {
  10333. return Math.min(Math.max(n, t.min), t.max)
  10334. }
  10335. function ht(n, t) {
  10336. var i = b(n),
  10337. r = i.left + w(n, "borderLeftWidth") + w(n, "paddingLeft"),
  10338. u = i.top + w(n, "borderTopWidth") + w(n, "paddingTop"),
  10339. f = r + n.width() - t.outerWidth(!0),
  10340. e = u + n.height() - t.outerHeight(!0);
  10341. return {
  10342. x: {
  10343. min: r,
  10344. max: f
  10345. },
  10346. y: {
  10347. min: u,
  10348. max: e
  10349. }
  10350. }
  10351. }
  10352. function gt(n, i, r) {
  10353. for (var f, e, u = 0, o = i && i.length, s = r && r.length; n && n.parentNode;) {
  10354. for (u = 0; u < o; u++)
  10355. if (f = i[u], f.element[0] === n) return {
  10356. target: f,
  10357. targetElement: n
  10358. };
  10359. for (u = 0; u < s; u++)
  10360. if (e = r[u], v.matchesSelector.call(n, e.options.filter)) return {
  10361. target: e,
  10362. targetElement: n
  10363. };
  10364. n = n.parentNode
  10365. }
  10366. return t
  10367. }
  10368. var i = window.kendo,
  10369. v = i.support,
  10370. l = window.document,
  10371. pt = i.Class,
  10372. o = i.ui.Widget,
  10373. u = i.Observable,
  10374. wt = i.UserEvents,
  10375. f = n.proxy,
  10376. r = n.extend,
  10377. b = i.getOffset,
  10378. y = {},
  10379. s = {},
  10380. h = {},
  10381. e, k = v.mobileOS,
  10382. bt = k && k.android,
  10383. kt = bt && k.browser == "chrome",
  10384. tt = "keyup",
  10385. a = "change",
  10386. it = "dragstart",
  10387. rt = "hold",
  10388. ut = "drag",
  10389. ft = "dragend",
  10390. et = "dragcancel",
  10391. d = "dragenter",
  10392. p = "dragleave",
  10393. ot = "drop",
  10394. ni = u.extend({
  10395. init: function(t, r) {
  10396. var e = this,
  10397. o = t[0];
  10398. e.capture = !1;
  10399. o.addEventListener ? (n.each(i.eventMap.down.split(" "), function() {
  10400. o.addEventListener(this, f(e._press, e), !0)
  10401. }), n.each(i.eventMap.up.split(" "), function() {
  10402. o.addEventListener(this, f(e._release, e), !0)
  10403. })) : (n.each(i.eventMap.down.split(" "), function() {
  10404. o.attachEvent(this, f(e._press, e))
  10405. }), n.each(i.eventMap.up.split(" "), function() {
  10406. o.attachEvent(this, f(e._release, e))
  10407. }));
  10408. u.fn.init.call(e);
  10409. e.bind(["press", "release"], r || {})
  10410. },
  10411. captureNext: function() {
  10412. this.capture = !0
  10413. },
  10414. cancelCapture: function() {
  10415. this.capture = !1
  10416. },
  10417. _press: function(n) {
  10418. var t = this;
  10419. t.trigger("press");
  10420. t.capture && n.preventDefault()
  10421. },
  10422. _release: function(n) {
  10423. var t = this;
  10424. t.trigger("release");
  10425. t.capture && (n.preventDefault(), t.cancelCapture())
  10426. }
  10427. }),
  10428. ct = u.extend({
  10429. init: function(t) {
  10430. var i = this;
  10431. u.fn.init.call(i);
  10432. i.forcedEnabled = !1;
  10433. n.extend(i, t);
  10434. i.scale = 1;
  10435. i.horizontal ? (i.measure = "offsetWidth", i.scrollSize = "scrollWidth", i.axis = "x") : (i.measure = "offsetHeight", i.scrollSize = "scrollHeight", i.axis = "y")
  10436. },
  10437. makeVirtual: function() {
  10438. n.extend(this, {
  10439. virtual: !0,
  10440. forcedEnabled: !0,
  10441. _virtualMin: 0,
  10442. _virtualMax: 0
  10443. })
  10444. },
  10445. virtualSize: function(n, t) {
  10446. (this._virtualMin !== n || this._virtualMax !== t) && (this._virtualMin = n, this._virtualMax = t, this.update())
  10447. },
  10448. outOfBounds: function(n) {
  10449. return n > this.max || n < this.min
  10450. },
  10451. forceEnabled: function() {
  10452. this.forcedEnabled = !0
  10453. },
  10454. getSize: function() {
  10455. return this.container[0][this.measure]
  10456. },
  10457. getTotal: function() {
  10458. return this.element[0][this.scrollSize]
  10459. },
  10460. rescale: function(n) {
  10461. this.scale = n
  10462. },
  10463. update: function(n) {
  10464. var t = this,
  10465. u = t.virtual ? t._virtualMax : t.getTotal(),
  10466. r = u * t.scale,
  10467. i = t.getSize();
  10468. t.max = t.virtual ? -t._virtualMin : 0;
  10469. t.size = i;
  10470. t.total = r;
  10471. t.min = Math.min(t.max, i - r);
  10472. t.minScale = i / u;
  10473. t.centerOffset = (r - i) / 2;
  10474. t.enabled = t.forcedEnabled || r > i;
  10475. n || t.trigger(a, t)
  10476. }
  10477. }),
  10478. ti = u.extend({
  10479. init: function(n) {
  10480. var t = this;
  10481. u.fn.init.call(t);
  10482. t.x = new ct(r({
  10483. horizontal: !0
  10484. }, n));
  10485. t.y = new ct(r({
  10486. horizontal: !1
  10487. }, n));
  10488. t.container = n.container;
  10489. t.forcedMinScale = n.minScale;
  10490. t.maxScale = n.maxScale || 100;
  10491. t.bind(a, n)
  10492. },
  10493. rescale: function(n) {
  10494. this.x.rescale(n);
  10495. this.y.rescale(n);
  10496. this.refresh()
  10497. },
  10498. centerCoordinates: function() {
  10499. return {
  10500. x: Math.min(0, -this.x.centerOffset),
  10501. y: Math.min(0, -this.y.centerOffset)
  10502. }
  10503. },
  10504. refresh: function() {
  10505. var n = this;
  10506. n.x.update();
  10507. n.y.update();
  10508. n.enabled = n.x.enabled || n.y.enabled;
  10509. n.minScale = n.forcedMinScale || Math.min(n.x.minScale, n.y.minScale);
  10510. n.fitScale = Math.max(n.x.minScale, n.y.minScale);
  10511. n.trigger(a)
  10512. }
  10513. }),
  10514. lt = u.extend({
  10515. init: function(n) {
  10516. var t = this;
  10517. r(t, n);
  10518. u.fn.init.call(t)
  10519. },
  10520. dragMove: function(n) {
  10521. var t = this,
  10522. i = t.dimension,
  10523. r = t.axis,
  10524. u = t.movable,
  10525. f = u[r] + n;
  10526. i.enabled && ((f < i.min && n < 0 || f > i.max && n > 0) && (n *= t.resistance), u.translateAxis(r, n), t.trigger(a, t))
  10527. }
  10528. }),
  10529. ii = pt.extend({
  10530. init: function(n) {
  10531. var t = this,
  10532. u, f, e, i;
  10533. r(t, {
  10534. elastic: !0
  10535. }, n);
  10536. e = t.elastic ? .5 : 0;
  10537. i = t.movable;
  10538. t.x = u = new lt({
  10539. axis: "x",
  10540. dimension: t.dimensions.x,
  10541. resistance: e,
  10542. movable: i
  10543. });
  10544. t.y = f = new lt({
  10545. axis: "y",
  10546. dimension: t.dimensions.y,
  10547. resistance: e,
  10548. movable: i
  10549. });
  10550. t.userEvents.bind(["move", "end", "gesturestart", "gesturechange"], {
  10551. gesturestart: function(n) {
  10552. t.gesture = n;
  10553. t.offset = t.dimensions.container.offset()
  10554. },
  10555. gesturechange: function(n) {
  10556. var h = t.gesture,
  10557. c = h.center,
  10558. l = n.center,
  10559. r = n.distance / h.distance,
  10560. v = t.dimensions.minScale,
  10561. a = t.dimensions.maxScale,
  10562. e, o, s;
  10563. i.scale <= v && r < 1 && (r += (1 - r) * .8);
  10564. i.scale * r >= a && (r = a / i.scale);
  10565. o = i.x + t.offset.left;
  10566. s = i.y + t.offset.top;
  10567. e = {
  10568. x: (o - c.x) * r + l.x - o,
  10569. y: (s - c.y) * r + l.y - s
  10570. };
  10571. i.scaleWith(r);
  10572. u.dragMove(e.x);
  10573. f.dragMove(e.y);
  10574. t.dimensions.rescale(i.scale);
  10575. t.gesture = n;
  10576. n.preventDefault()
  10577. },
  10578. move: function(n) {
  10579. n.event.target.tagName.match(/textarea|input/i) || (u.dimension.enabled || f.dimension.enabled ? (u.dragMove(n.x.delta), f.dragMove(n.y.delta), n.preventDefault()) : n.touch.skip())
  10580. },
  10581. end: function(n) {
  10582. n.preventDefault()
  10583. }
  10584. })
  10585. }
  10586. }),
  10587. ri = v.transitions.prefix + "Transform",
  10588. nt, at, c, vt, yt;
  10589. nt = v.hasHW3D ? function(n, t, i) {
  10590. return "translate3d(" + n + "px," + t + "px,0) scale(" + i + ")"
  10591. } : function(n, t, i) {
  10592. return "translate(" + n + "px," + t + "px) scale(" + i + ")"
  10593. };
  10594. at = u.extend({
  10595. init: function(t) {
  10596. var i = this;
  10597. u.fn.init.call(i);
  10598. i.element = n(t);
  10599. i.element[0].style.webkitTransformOrigin = "left top";
  10600. i.x = 0;
  10601. i.y = 0;
  10602. i.scale = 1;
  10603. i._saveCoordinates(nt(i.x, i.y, i.scale))
  10604. },
  10605. translateAxis: function(n, t) {
  10606. this[n] += t;
  10607. this.refresh()
  10608. },
  10609. scaleTo: function(n) {
  10610. this.scale = n;
  10611. this.refresh()
  10612. },
  10613. scaleWith: function(n) {
  10614. this.scale *= n;
  10615. this.refresh()
  10616. },
  10617. translate: function(n) {
  10618. this.x += n.x;
  10619. this.y += n.y;
  10620. this.refresh()
  10621. },
  10622. moveAxis: function(n, t) {
  10623. this[n] = t;
  10624. this.refresh()
  10625. },
  10626. moveTo: function(n) {
  10627. r(this, n);
  10628. this.refresh()
  10629. },
  10630. refresh: function() {
  10631. var n = this,
  10632. r = n.x,
  10633. u = n.y,
  10634. t;
  10635. n.round && (r = Math.round(r), u = Math.round(u));
  10636. t = nt(r, u, n.scale);
  10637. t != n.coordinates && (i.support.browser.msie && i.support.browser.version < 10 ? (n.element[0].style.position = "absolute", n.element[0].style.left = n.x + "px", n.element[0].style.top = n.y + "px") : n.element[0].style[ri] = t, n._saveCoordinates(t), n.trigger(a))
  10638. },
  10639. _saveCoordinates: function(n) {
  10640. this.coordinates = n
  10641. }
  10642. });
  10643. c = o.extend({
  10644. init: function(n, t) {
  10645. var i = this,
  10646. r;
  10647. o.fn.init.call(i, n, t);
  10648. r = i.options.group;
  10649. r in s ? s[r].push(i) : s[r] = [i]
  10650. },
  10651. events: [d, p, ot],
  10652. options: {
  10653. name: "DropTarget",
  10654. group: "default"
  10655. },
  10656. destroy: function() {
  10657. var i = this.options.group,
  10658. t = s[i] || h[i],
  10659. n;
  10660. if (t.length > 1) {
  10661. for (o.fn.destroy.call(this), n = 0; n < t.length; n++)
  10662. if (t[n] == this) {
  10663. t.splice(n, 1);
  10664. break
  10665. }
  10666. } else c.destroyGroup(i)
  10667. },
  10668. _trigger: function(n, t) {
  10669. var i = this,
  10670. u = y[i.options.group];
  10671. if (u) return i.trigger(n, r({}, t.event, {
  10672. draggable: u,
  10673. dropTarget: t.dropTarget
  10674. }))
  10675. },
  10676. _over: function(n) {
  10677. this._trigger(d, n)
  10678. },
  10679. _out: function(n) {
  10680. this._trigger(p, n)
  10681. },
  10682. _drop: function(n) {
  10683. var t = this,
  10684. i = y[t.options.group];
  10685. i && (i.dropped = !t._trigger(ot, n))
  10686. }
  10687. });
  10688. c.destroyGroup = function(n) {
  10689. var t = s[n] || h[n],
  10690. i;
  10691. if (t) {
  10692. for (i = 0; i < t.length; i++) o.fn.destroy.call(t[i]);
  10693. t.length = 0;
  10694. delete s[n];
  10695. delete h[n]
  10696. }
  10697. };
  10698. c._cache = s;
  10699. vt = c.extend({
  10700. init: function(n, t) {
  10701. var i = this,
  10702. r;
  10703. o.fn.init.call(i, n, t);
  10704. r = i.options.group;
  10705. r in h ? h[r].push(i) : h[r] = [i]
  10706. },
  10707. options: {
  10708. name: "DropTargetArea",
  10709. group: "default",
  10710. filter: null
  10711. }
  10712. });
  10713. yt = o.extend({
  10714. init: function(n, t) {
  10715. var r = this;
  10716. o.fn.init.call(r, n, t);
  10717. r._activated = !1;
  10718. r.userEvents = new wt(r.element, {
  10719. global: !0,
  10720. stopPropagation: !0,
  10721. filter: r.options.filter,
  10722. threshold: r.options.distance,
  10723. start: f(r._start, r),
  10724. hold: f(r._hold, r),
  10725. move: f(r._drag, r),
  10726. end: f(r._end, r),
  10727. cancel: f(r._cancel, r)
  10728. });
  10729. r._afterEndHandler = f(r._afterEnd, r);
  10730. r.captureEscape = function(n) {
  10731. n.keyCode === i.keys.ESC && (r._trigger(et, {
  10732. event: n
  10733. }), r.userEvents.cancel())
  10734. }
  10735. },
  10736. events: [rt, it, ut, ft, et],
  10737. options: {
  10738. name: "Draggable",
  10739. distance: 5,
  10740. group: "default",
  10741. cursorOffset: null,
  10742. axis: null,
  10743. container: null,
  10744. holdToDrag: !1,
  10745. dropped: !1
  10746. },
  10747. cancelHold: function() {
  10748. this._activated = !1
  10749. },
  10750. _updateHint: function(t) {
  10751. var r = this,
  10752. i, o = r.options,
  10753. u = r.boundaries,
  10754. e = o.axis,
  10755. f = r.options.cursorOffset;
  10756. f ? i = {
  10757. left: t.x.location + f.left,
  10758. top: t.y.location + f.top
  10759. } : (r.hintOffset.left += t.x.delta, r.hintOffset.top += t.y.delta, i = n.extend({}, r.hintOffset));
  10760. u && (i.top = st(i.top, u.y), i.left = st(i.left, u.x));
  10761. e === "x" ? delete i.top : e === "y" && delete i.left;
  10762. r.hint.css(i)
  10763. },
  10764. _start: function(t) {
  10765. var r = this,
  10766. u = r.options,
  10767. o = u.container,
  10768. f = u.hint,
  10769. e;
  10770. if (u.holdToDrag && !r._activated) {
  10771. r.userEvents.cancel();
  10772. return
  10773. }
  10774. r.currentTarget = t.target;
  10775. r.currentTargetOffset = b(r.currentTarget);
  10776. f && (r.hint && r.hint.stop(!0, !0).remove(), r.hint = i.isFunction(f) ? n(f.call(r, r.currentTarget)) : f, e = b(r.currentTarget), r.hintOffset = e, r.hint.css({
  10777. position: "absolute",
  10778. zIndex: 2e4,
  10779. left: e.left,
  10780. top: e.top
  10781. }).appendTo(l.body));
  10782. y[u.group] = r;
  10783. r.dropped = !1;
  10784. o && (r.boundaries = ht(o, r.hint));
  10785. r._trigger(it, t) && (r.userEvents.cancel(), r._afterEnd());
  10786. n(l).on(tt, r.captureEscape)
  10787. },
  10788. _hold: function(n) {
  10789. this.currentTarget = n.target;
  10790. this._trigger(rt, n) ? this.userEvents.cancel() : this._activated = !0
  10791. },
  10792. _drag: function(t) {
  10793. var i = this;
  10794. t.preventDefault();
  10795. i._withDropTarget(t, function(i, u) {
  10796. if (!i) {
  10797. e && (e._trigger(p, r(t, {
  10798. dropTarget: n(e.targetElement)
  10799. })), e = null);
  10800. return
  10801. }
  10802. if (e) {
  10803. if (u === e.targetElement) return;
  10804. e._trigger(p, r(t, {
  10805. dropTarget: n(e.targetElement)
  10806. }))
  10807. }
  10808. i._trigger(d, r(t, {
  10809. dropTarget: n(u)
  10810. }));
  10811. e = r(i, {
  10812. targetElement: u
  10813. })
  10814. });
  10815. i._trigger(ut, t);
  10816. i.hint && i._updateHint(t)
  10817. },
  10818. _end: function(t) {
  10819. var i = this;
  10820. i._withDropTarget(t, function(i, u) {
  10821. i && (i._drop(r({}, t, {
  10822. dropTarget: n(u)
  10823. })), e = null)
  10824. });
  10825. i._trigger(ft, t);
  10826. i._cancel(t.event)
  10827. },
  10828. _cancel: function() {
  10829. var n = this;
  10830. n._activated = !1;
  10831. n.hint && !n.dropped ? setTimeout(function() {
  10832. n.hint.stop(!0, !0).animate(n.currentTargetOffset, "fast", n._afterEndHandler)
  10833. }, 0) : n._afterEnd()
  10834. },
  10835. _trigger: function(n, t) {
  10836. var i = this;
  10837. return i.trigger(n, r({}, t.event, {
  10838. x: t.x,
  10839. y: t.y,
  10840. currentTarget: i.currentTarget,
  10841. dropTarget: t.dropTarget
  10842. }))
  10843. },
  10844. _withDropTarget: function(n, t) {
  10845. var r = this,
  10846. i, u, o = r.options,
  10847. f = s[o.group],
  10848. e = h[o.group];
  10849. (f && f.length || e && e.length) && (i = g(n), r.hint && dt(r.hint[0], i) && (r.hint.hide(), i = g(n), i || (i = g(n)), r.hint.show()), u = gt(i, f, e), u ? t(u.target, u.targetElement) : t())
  10850. },
  10851. destroy: function() {
  10852. var n = this;
  10853. o.fn.destroy.call(n);
  10854. n._afterEnd();
  10855. n.userEvents.destroy()
  10856. },
  10857. _afterEnd: function() {
  10858. var t = this;
  10859. t.hint && t.hint.remove();
  10860. delete y[t.options.group];
  10861. t.trigger("destroy");
  10862. n(l).off(tt, t.captureEscape)
  10863. }
  10864. });
  10865. i.ui.plugin(c);
  10866. i.ui.plugin(vt);
  10867. i.ui.plugin(yt);
  10868. i.TapCapture = ni;
  10869. i.containerBoundaries = ht;
  10870. r(i.ui, {
  10871. Pane: ii,
  10872. PaneDimensions: ti,
  10873. Movable: at
  10874. })
  10875. }(window.kendo.jQuery);
  10876. kendo_module({
  10877. id: "reorderable",
  10878. name: "Reorderable",
  10879. category: "framework",
  10880. depends: ["core", "draganddrop"],
  10881. advanced: !0
  10882. }),
  10883. function(n) {
  10884. function u(t, i) {
  10885. t = n(t);
  10886. i ? t.find(".k-drag-status").removeClass("k-add").addClass("k-denied") : t.find(".k-drag-status").removeClass("k-denied").addClass("k-add")
  10887. }
  10888. var t = window.kendo,
  10889. i = t.ui.Widget,
  10890. r = "change",
  10891. f = "k-reorderable",
  10892. e = i.extend({
  10893. init: function(e, o) {
  10894. var s = this,
  10895. h, c = t.guid() + "-reorderable";
  10896. i.fn.init.call(s, e, o);
  10897. e = s.element.addClass(f);
  10898. o = s.options;
  10899. s.draggable = h = o.draggable || new t.ui.Draggable(e, {
  10900. group: c,
  10901. filter: o.filter,
  10902. hint: o.hint
  10903. });
  10904. s.reorderDropCue = n('<div class="k-reorder-cue"><div class="k-icon k-i-arrow-s"><\/div><div class="k-icon k-i-arrow-n"><\/div><\/div>');
  10905. e.find(h.options.filter).kendoDropTarget({
  10906. group: h.options.group,
  10907. dragenter: function(n) {
  10908. if (s._draggable) {
  10909. var i = this.element,
  10910. r, f = i[0] === s._draggable[0];
  10911. u(n.draggable.hint, f);
  10912. f || (r = t.getOffset(i), s.reorderDropCue.css({
  10913. height: i.outerHeight(),
  10914. top: r.top,
  10915. left: r.left + (i.index() > s._draggable.index() ? i.outerWidth() : 0)
  10916. }).appendTo(document.body))
  10917. }
  10918. },
  10919. dragleave: function(n) {
  10920. u(n.draggable.hint, !0);
  10921. s.reorderDropCue.remove()
  10922. },
  10923. drop: function() {
  10924. if (s._draggable) {
  10925. var t = s._draggable[0],
  10926. i = this.element[0],
  10927. n;
  10928. t !== i && (n = e.find(h.options.filter), s.trigger(r, {
  10929. element: s._draggable,
  10930. oldIndex: n.index(t),
  10931. newIndex: n.index(i)
  10932. }))
  10933. }
  10934. }
  10935. });
  10936. h.bind(["dragcancel", "dragend", "dragstart"], {
  10937. dragcancel: function() {
  10938. s.reorderDropCue.remove();
  10939. s._draggable = null
  10940. },
  10941. dragend: function() {
  10942. s.reorderDropCue.remove();
  10943. s._draggable = null
  10944. },
  10945. dragstart: function(n) {
  10946. s._draggable = n.currentTarget
  10947. }
  10948. })
  10949. },
  10950. options: {
  10951. name: "Reorderable",
  10952. filter: "*"
  10953. },
  10954. events: [r],
  10955. destroy: function() {
  10956. var n = this;
  10957. i.fn.destroy.call(n);
  10958. n.draggable && n.draggable.destroy();
  10959. t.destroy(n.element)
  10960. }
  10961. });
  10962. t.ui.plugin(e)
  10963. }(window.kendo.jQuery);
  10964. kendo_module({
  10965. id: "resizable",
  10966. name: "Resizable",
  10967. category: "framework",
  10968. depends: ["core", "draganddrop"],
  10969. advanced: !0
  10970. }),
  10971. function(n, t) {
  10972. var u = window.kendo,
  10973. o = u.ui,
  10974. f = o.Widget,
  10975. r = n.proxy,
  10976. e = u.isFunction,
  10977. s = n.extend,
  10978. i = "horizontal",
  10979. h = "vertical",
  10980. c = "start",
  10981. l = "resize",
  10982. a = "resizeend",
  10983. v = f.extend({
  10984. init: function(n, t) {
  10985. var u = this;
  10986. f.fn.init.call(u, n, t);
  10987. u.orientation = u.options.orientation.toLowerCase() != h ? i : h;
  10988. u._positionMouse = u.orientation == i ? "x" : "y";
  10989. u._position = u.orientation == i ? "left" : "top";
  10990. u._sizingDom = u.orientation == i ? "outerWidth" : "outerHeight";
  10991. u.draggable = new o.Draggable(n, {
  10992. distance: 0,
  10993. filter: t.handle,
  10994. drag: r(u._resize, u),
  10995. dragcancel: r(u._cancel, u),
  10996. dragstart: r(u._start, u),
  10997. dragend: r(u._stop, u)
  10998. });
  10999. u.userEvents = u.draggable.userEvents
  11000. },
  11001. events: [l, a, c],
  11002. options: {
  11003. name: "Resizable",
  11004. orientation: i
  11005. },
  11006. resize: function() {},
  11007. _max: function(n) {
  11008. var i = this,
  11009. u = i.hint ? i.hint[i._sizingDom]() : 0,
  11010. r = i.options.max;
  11011. return e(r) ? r(n) : r !== t ? i._initialElementPosition + r - u : r
  11012. },
  11013. _min: function(n) {
  11014. var r = this,
  11015. i = r.options.min;
  11016. return e(i) ? i(n) : i !== t ? r._initialElementPosition + i : i
  11017. },
  11018. _start: function(t) {
  11019. var i = this,
  11020. r = i.options.hint,
  11021. u = n(t.currentTarget);
  11022. i._initialElementPosition = u.position()[i._position];
  11023. i._initialMousePosition = t[i._positionMouse].startLocation;
  11024. r && (i.hint = e(r) ? n(r(u)) : r, i.hint.css({
  11025. position: "absolute"
  11026. }).css(i._position, i._initialElementPosition).appendTo(i.element));
  11027. i.trigger(c, t);
  11028. i._maxPosition = i._max(t);
  11029. i._minPosition = i._min(t);
  11030. n(document.body).css("cursor", u.css("cursor"))
  11031. },
  11032. _resize: function(n) {
  11033. var i = this,
  11034. u = i._maxPosition,
  11035. f = i._minPosition,
  11036. e = i._initialElementPosition + (n[i._positionMouse].location - i._initialMousePosition),
  11037. r;
  11038. r = f !== t ? Math.max(f, e) : e;
  11039. i.position = r = u !== t ? Math.min(u, r) : r;
  11040. i.hint && i.hint.toggleClass(i.options.invalidClass || "", r == u || r == f).css(i._position, r);
  11041. i.resizing = !0;
  11042. i.trigger(l, s(n, {
  11043. position: r
  11044. }))
  11045. },
  11046. _stop: function(t) {
  11047. var i = this;
  11048. i.hint && i.hint.remove();
  11049. i.resizing = !1;
  11050. i.trigger(a, s(t, {
  11051. position: i.position
  11052. }));
  11053. n(document.body).css("cursor", "")
  11054. },
  11055. _cancel: function(n) {
  11056. var i = this;
  11057. i.hint && (i.position = t, i.hint.css(i._position, i._initialElementPosition), i._stop(n))
  11058. },
  11059. destroy: function() {
  11060. var n = this;
  11061. f.fn.destroy.call(n);
  11062. n.draggable && n.draggable.destroy()
  11063. },
  11064. press: function(n) {
  11065. if (n) {
  11066. var t = n.position(),
  11067. i = this;
  11068. i.userEvents.press(t.left, t.top, n[0]);
  11069. i.targetPosition = t;
  11070. i.target = n
  11071. }
  11072. },
  11073. move: function(n) {
  11074. var i = this,
  11075. f = i._position,
  11076. r = i.targetPosition,
  11077. u = i.position;
  11078. u === t && (u = r[f]);
  11079. r[f] = u + n;
  11080. i.userEvents.move(r.left, r.top)
  11081. },
  11082. end: function() {
  11083. this.userEvents.end();
  11084. this.target = this.position = t
  11085. }
  11086. });
  11087. u.ui.plugin(v)
  11088. }(window.kendo.jQuery);
  11089. kendo_module({
  11090. id: "sortable",
  11091. name: "Sortable",
  11092. category: "framework",
  11093. depends: ["data"],
  11094. advanced: !0
  11095. }),
  11096. function(n, t) {
  11097. var i = window.kendo,
  11098. s = n.proxy,
  11099. r = "dir",
  11100. u = "asc",
  11101. h = "single",
  11102. c = "field",
  11103. f = "desc",
  11104. l = ".kendoSortable",
  11105. a = ".k-link",
  11106. e = "aria-sort",
  11107. o = i.ui.Widget,
  11108. v = o.extend({
  11109. init: function(n, t) {
  11110. var i = this,
  11111. r;
  11112. o.fn.init.call(i, n, t);
  11113. i._refreshHandler = s(i.refresh, i);
  11114. i.dataSource = i.options.dataSource.bind("change", i._refreshHandler);
  11115. r = i.element.find(a);
  11116. r[0] || (r = i.element.wrapInner('<a class="k-link" href="#"/>').find(a));
  11117. i.link = r;
  11118. i.element.on("click" + l, s(i._click, i))
  11119. },
  11120. options: {
  11121. name: "Sortable",
  11122. mode: h,
  11123. allowUnsort: !0,
  11124. compare: null,
  11125. filter: ""
  11126. },
  11127. destroy: function() {
  11128. var n = this;
  11129. o.fn.destroy.call(n);
  11130. n.element.off(l);
  11131. n.dataSource.unbind("change", n._refreshHandler)
  11132. },
  11133. refresh: function() {
  11134. var o = this,
  11135. a = o.dataSource.sort() || [],
  11136. s, v, h, l, t = o.element,
  11137. y = t.attr(i.attr(c));
  11138. for (t.removeAttr(i.attr(r)), t.removeAttr(e), s = 0, v = a.length; s < v; s++) h = a[s], y == h.field && t.attr(i.attr(r), h.dir);
  11139. l = t.attr(i.attr(r));
  11140. t.find(".k-i-arrow-n,.k-i-arrow-s").remove();
  11141. l === u ? (n('<span class="k-icon k-i-arrow-n" />').appendTo(o.link), t.attr(e, "ascending")) : l === f && (n('<span class="k-icon k-i-arrow-s" />').appendTo(o.link), t.attr(e, "descending"))
  11142. },
  11143. _click: function(n) {
  11144. var e = this,
  11145. v = e.element,
  11146. y = v.attr(i.attr(c)),
  11147. s = v.attr(i.attr(r)),
  11148. l = e.options,
  11149. p = e.options.compare == null ? t : e.options.compare,
  11150. o = e.dataSource.sort() || [],
  11151. a, w;
  11152. if (n.preventDefault(), !l.filter || v.is(l.filter)) {
  11153. if (s = s === u ? f : s === f && l.allowUnsort ? t : u, l.mode === h) o = [{
  11154. field: y,
  11155. dir: s,
  11156. compare: p
  11157. }];
  11158. else if (l.mode === "multiple") {
  11159. for (a = 0, w = o.length; a < w; a++)
  11160. if (o[a].field === y) {
  11161. o.splice(a, 1);
  11162. break
  11163. }
  11164. o.push({
  11165. field: y,
  11166. dir: s,
  11167. compare: p
  11168. })
  11169. }
  11170. e.dataSource.sort(o)
  11171. }
  11172. }
  11173. });
  11174. i.ui.plugin(v)
  11175. }(window.kendo.jQuery);
  11176. kendo_module({
  11177. id: "selectable",
  11178. name: "Selectable",
  11179. category: "framework",
  11180. depends: ["core", "userevents"],
  11181. advanced: !0
  11182. }),
  11183. function(n) {
  11184. function y(n, t) {
  11185. var i = u.getOffset(n),
  11186. r = t.left + t.width,
  11187. f = t.top + t.height;
  11188. return i.right = i.left + n.outerWidth(), i.bottom = i.top + n.outerHeight(), !(i.left > r || i.right < t.left || i.top > f || i.bottom < t.top)
  11189. }
  11190. function p(n, i, u, e) {
  11191. for (var o, s = 0, h = n.length; s < h; s++) o = n.eq(s), y(o, u) ? o.hasClass(t) ? e && i !== o[0] && o.removeClass(t).addClass(r) : o.hasClass(f) || o.hasClass(r) || o.addClass(f) : o.hasClass(f) ? o.removeClass(f) : e && o.hasClass(r) && o.removeClass(r).addClass(t)
  11192. }
  11193. var u = window.kendo,
  11194. s = u.ui.Widget,
  11195. i = n.proxy,
  11196. h = Math.abs,
  11197. c = "aria-selected",
  11198. t = "k-state-selected",
  11199. f = "k-state-selecting",
  11200. e = "k-selectable",
  11201. o = "change",
  11202. v = ".kendoSelectable",
  11203. r = "k-state-unselecting",
  11204. l = !1,
  11205. a;
  11206. (function(n) {
  11207. (function() {
  11208. n('<div class="parent"><span /><\/div>').on("click", ">*", function() {
  11209. l = !0
  11210. }).find("span").click().end().off()
  11211. })()
  11212. })(n);
  11213. a = s.extend({
  11214. init: function(t, r) {
  11215. var f = this,
  11216. o;
  11217. s.fn.init.call(f, t, r);
  11218. f._marquee = n("<div class='k-marquee'><div class='k-marquee-color'><\/div><\/div>");
  11219. f._lastActive = null;
  11220. f.element.addClass(e);
  11221. o = f.options.multiple;
  11222. f.userEvents = new u.UserEvents(f.element, {
  11223. global: !0,
  11224. allowSelection: !0,
  11225. filter: (l ? "" : "." + e + " ") + f.options.filter,
  11226. tap: i(f._tap, f)
  11227. });
  11228. o && f.userEvents.bind("start", i(f._start, f)).bind("move", i(f._move, f)).bind("end", i(f._end, f)).bind("select", i(f._select, f))
  11229. },
  11230. events: [o],
  11231. options: {
  11232. name: "Selectable",
  11233. filter: ">*",
  11234. multiple: !1
  11235. },
  11236. _tap: function(i) {
  11237. var u = n(i.target),
  11238. r = this,
  11239. f = i.event.ctrlKey || i.event.metaKey,
  11240. s = r.options.multiple,
  11241. a = s && i.event.shiftKey,
  11242. h, c = i.event.which,
  11243. l = i.event.button;
  11244. u.closest("." + e)[0] !== r.element[0] || c && c == 3 || l && l == 2 || (h = u.hasClass(t), s && f || r.clear(), a ? r.selectRange(r._firstSelectee(), u) : (h && f ? (r._unselect(u), r._notify(o)) : r.value(u), r._lastActive = r._downTarget = u))
  11245. },
  11246. _start: function(i) {
  11247. var u = this,
  11248. f = n(i.target),
  11249. s = f.hasClass(t),
  11250. o = i.event.ctrlKey || i.event.metaKey;
  11251. if (u._downTarget = f, f.closest("." + e)[0] !== u.element[0]) {
  11252. u.userEvents.cancel();
  11253. u._downTarget = null;
  11254. return
  11255. }
  11256. u._marquee.appendTo(document.body).css({
  11257. left: i.x.client + 1,
  11258. top: i.y.client + 1,
  11259. width: 0,
  11260. height: 0
  11261. });
  11262. o || u.clear();
  11263. s && (u._selectElement(f, !0), o && f.addClass(r))
  11264. },
  11265. _move: function(n) {
  11266. var t = this,
  11267. i = {
  11268. left: n.x.startLocation > n.x.location ? n.x.location : n.x.startLocation,
  11269. top: n.y.startLocation > n.y.location ? n.y.location : n.y.startLocation,
  11270. width: h(n.x.initialDelta),
  11271. height: h(n.y.initialDelta)
  11272. },
  11273. r = t.element.find(t.options.filter);
  11274. t._marquee.css(i);
  11275. p(r, t._downTarget[0], i, n.event.ctrlKey || n.event.metaKey);
  11276. n.preventDefault()
  11277. },
  11278. _end: function() {
  11279. var n = this;
  11280. n._marquee.remove();
  11281. n._unselect(n.element.find(n.options.filter + "." + r)).removeClass(r);
  11282. n.value(n.element.find(n.options.filter + "." + f));
  11283. n._lastActive = n._downTarget
  11284. },
  11285. value: function(n) {
  11286. var r = this,
  11287. u = i(r._selectElement, r);
  11288. if (n) {
  11289. n.each(function() {
  11290. u(this)
  11291. });
  11292. r._notify(o);
  11293. return
  11294. }
  11295. return r.element.find(r.options.filter + "." + t)
  11296. },
  11297. _firstSelectee: function() {
  11298. var n = this,
  11299. t;
  11300. return n._lastActive !== null ? n._lastActive : (t = n.value(), t.length > 0 ? t[0] : n.element.find(n.options.filter))
  11301. },
  11302. _selectElement: function(i, r) {
  11303. var u = n(i),
  11304. e = !r && this._notify("select", {
  11305. element: i
  11306. });
  11307. u.removeClass(f);
  11308. e || (u.addClass(t), this.options.aria && u.attr(c, !0))
  11309. },
  11310. _notify: function(n, t) {
  11311. return t = t || {}, this.trigger(n, t)
  11312. },
  11313. _unselect: function(n) {
  11314. return n.removeClass(t), this.options.aria && n.attr(c, !1), n
  11315. },
  11316. _select: function(t) {
  11317. var i = "input,a,textarea,.k-multiselect-wrap,select",
  11318. r = u.support.browser.msie;
  11319. n(t.event.target).is(i) ? (this.userEvents.cancel(), this._downTarget = null) : r && (!r || n(u._activeElement()).is(i)) || t.preventDefault()
  11320. },
  11321. clear: function() {
  11322. var n = this.element.find(this.options.filter + "." + t);
  11323. this._unselect(n)
  11324. },
  11325. selectRange: function(r, u) {
  11326. var e = this,
  11327. s = !1,
  11328. h, l, a, f, v = e.element.find(e.options.filter),
  11329. c = i(e._selectElement, e);
  11330. for (r = n(r)[0], u = n(u)[0], h = 0, l = v.length; h < l; h++) f = v[h], s ? (c(f), s = f !== u) : f === r ? (s = r !== u, c(f)) : f === u ? (a = r, r = u, u = a, s = !0, c(f)) : n(f).removeClass(t);
  11331. e._notify(o)
  11332. },
  11333. destroy: function() {
  11334. var n = this;
  11335. s.fn.destroy.call(n);
  11336. n.element.off(v);
  11337. n.userEvents.destroy()
  11338. }
  11339. });
  11340. u.ui.plugin(a)
  11341. }(window.kendo.jQuery);
  11342. kendo_module({
  11343. id: "button",
  11344. name: "Button",
  11345. category: "web",
  11346. description: "The Button widget displays styled buttons.",
  11347. depends: ["core"]
  11348. }),
  11349. function(n, t) {
  11350. var u = window.kendo,
  11351. o = u.ui.Widget,
  11352. i = n.proxy,
  11353. f = u.keys,
  11354. e = "click",
  11355. l = "k-button",
  11356. a = "k-button-icon",
  11357. v = "k-button-icontext",
  11358. r = ".kendoButton",
  11359. s = "disabled",
  11360. y = "k-state-disabled",
  11361. h = "k-state-focused",
  11362. c = "k-state-selected",
  11363. p = o.extend({
  11364. init: function(n, t) {
  11365. var f = this;
  11366. o.fn.init.call(f, n, t);
  11367. n = f.wrapper = f.element;
  11368. t = f.options;
  11369. n.addClass(l).attr("role", "button");
  11370. t.enable = t.enable && !n.attr(s);
  11371. f.enable(t.enable);
  11372. f._tabindex();
  11373. f._graphics();
  11374. n.on(e + r, i(f._click, f)).on("focus" + r, i(f._focus, f)).on("blur" + r, i(f._blur, f)).on("keydown" + r, i(f._keydown, f)).on("keyup" + r, i(f._keyup, f));
  11375. u.notify(f)
  11376. },
  11377. events: [e],
  11378. options: {
  11379. name: "Button",
  11380. icon: "",
  11381. spriteCssClass: "",
  11382. imageUrl: "",
  11383. enable: !0
  11384. },
  11385. _isNativeButton: function() {
  11386. return this.element.prop("tagName").toLowerCase() == "button"
  11387. },
  11388. _click: function(n) {
  11389. this.options.enable && this.trigger(e, {
  11390. event: n
  11391. })
  11392. },
  11393. _focus: function() {
  11394. this.options.enable && this.element.addClass(h)
  11395. },
  11396. _blur: function() {
  11397. this.element.removeClass(h)
  11398. },
  11399. _keydown: function(n) {
  11400. var t = this;
  11401. t._isNativeButton() || (n.keyCode == f.ENTER || n.keyCode == f.SPACEBAR) && (n.keyCode == f.SPACEBAR && (n.preventDefault(), t.options.enable && t.element.addClass(c)), t._click(n))
  11402. },
  11403. _keyup: function() {
  11404. this.element.removeClass(c)
  11405. },
  11406. _graphics: function() {
  11407. var h = this,
  11408. t = h.element,
  11409. u = h.options,
  11410. f = u.icon,
  11411. e = u.spriteCssClass,
  11412. o = u.imageUrl,
  11413. i, r, s;
  11414. (e || o || f) && (s = !0, t.contents().not("span.k-sprite").not("span.k-icon").not("img.k-image").each(function(t, i) {
  11415. (i.nodeType == 1 || i.nodeType == 3 && n.trim(i.nodeValue).length > 0) && (s = !1)
  11416. }), s ? t.addClass(a) : t.addClass(v));
  11417. f ? (i = t.children("span.k-icon").first(), i[0] || (i = n('<span class="k-icon"><\/span>').prependTo(t)), i.addClass("k-i-" + f)) : e ? (i = t.children("span.k-sprite").first(), i[0] || (i = n('<span class="k-sprite"><\/span>').prependTo(t)), i.addClass(e)) : o && (r = t.children("img.k-image").first(), r[0] || (r = n('<img alt="icon" class="k-image" />').prependTo(t)), r.attr("src", o))
  11418. },
  11419. enable: function(n) {
  11420. var i = this,
  11421. r = i.element;
  11422. n === t && (n = !0);
  11423. n = !!n;
  11424. i.options.enable = n;
  11425. r.toggleClass(y, !n).attr("aria-disabled", !n).attr(s, !n)
  11426. }
  11427. });
  11428. u.ui.plugin(p)
  11429. }(window.kendo.jQuery);
  11430. kendo_module({
  11431. id: "pager",
  11432. name: "Pager",
  11433. category: "framework",
  11434. depends: ["data"],
  11435. advanced: !0
  11436. }),
  11437. function(n, t) {
  11438. function v(n, t, r, u, f) {
  11439. return n({
  11440. idx: t,
  11441. text: r,
  11442. ns: i.ns,
  11443. numeric: u,
  11444. title: f || ""
  11445. })
  11446. }
  11447. function e(n, t, i) {
  11448. return tt({
  11449. className: n.substring(1),
  11450. text: t,
  11451. wrapClassName: i || ""
  11452. })
  11453. }
  11454. function o(n, t, r, u) {
  11455. n.find(t).parent().attr(i.attr("page"), r).attr("tabindex", -1).toggleClass("k-state-disabled", u)
  11456. }
  11457. function w(n, t) {
  11458. o(n, h, 1, t <= 1)
  11459. }
  11460. function b(n, t) {
  11461. o(n, l, Math.max(1, t - 1), t <= 1)
  11462. }
  11463. function k(n, t, i) {
  11464. o(n, a, Math.min(i, t + 1), t >= i)
  11465. }
  11466. function d(n, t, i) {
  11467. o(n, c, i, t >= i)
  11468. }
  11469. var i = window.kendo,
  11470. y = i.ui,
  11471. s = y.Widget,
  11472. u = n.proxy,
  11473. h = ".k-i-seek-w",
  11474. c = ".k-i-seek-e",
  11475. l = ".k-i-arrow-w",
  11476. a = ".k-i-arrow-e",
  11477. r = "change",
  11478. f = ".kendoPager",
  11479. p = "click",
  11480. g = "keydown",
  11481. nt = "disabled",
  11482. tt = i.template('<a href="\\#" title="#=text#" class="k-link k-pager-nav #= wrapClassName #"><span class="k-icon #= className #">#=text#<\/span><\/a>'),
  11483. it = s.extend({
  11484. init: function(t, o) {
  11485. var v = this,
  11486. nt, y;
  11487. if (s.fn.init.call(v, t, o), o = v.options, v.dataSource = i.data.DataSource.create(o.dataSource), v.linkTemplate = i.template(v.options.linkTemplate), v.selectTemplate = i.template(v.options.selectTemplate), nt = v.page(), y = v.totalPages(), v._refreshHandler = u(v.refresh, v), v.dataSource.bind(r, v._refreshHandler), o.previousNext && (v.element.find(h).length || (v.element.append(e(h, o.messages.first, "k-pager-first")), w(v.element, nt, y)), v.element.find(l).length || (v.element.append(e(l, o.messages.previous)), b(v.element, nt, y))), o.numeric && (v.list = v.element.find(".k-pager-numbers"), v.list.length || (v.list = n('<ul class="k-pager-numbers k-reset" />').appendTo(v.element))), o.input) {
  11488. v.element.find(".k-pager-input").length || v.element.append('<span class="k-pager-input k-label">' + o.messages.page + '<input class="k-textbox">' + i.format(o.messages.of, y) + "<\/span>");
  11489. v.element.on(g + f, ".k-pager-input input", u(v._keydown, v))
  11490. }
  11491. if (o.previousNext && (v.element.find(a).length || (v.element.append(e(a, o.messages.next)), k(v.element, nt, y)), v.element.find(c).length || (v.element.append(e(c, o.messages.last, "k-pager-last")), d(v.element, nt, y))), o.pageSizes) {
  11492. v.element.find(".k-pager-sizes").length || n('<span class="k-pager-sizes k-label"><select/>' + o.messages.itemsPerPage + "<\/span>").appendTo(v.element).find("select").html(n.map(n.isArray(o.pageSizes) ? o.pageSizes : [5, 10, 20], function(n) {
  11493. return "<option>" + n + "<\/option>"
  11494. }).join("")).end().appendTo(v.element);
  11495. v.element.find(".k-pager-sizes select").val(v.pageSize());
  11496. i.ui.DropDownList && v.element.find(".k-pager-sizes select").show().kendoDropDownList();
  11497. v.element.on(r + f, ".k-pager-sizes select", u(v._change, v))
  11498. }
  11499. if (o.refresh) {
  11500. v.element.find(".k-pager-refresh").length || v.element.append('<a href="#" class="k-pager-refresh k-link" title="' + o.messages.refresh + '"><span class="k-icon k-i-refresh">' + o.messages.refresh + "<\/span><\/a>");
  11501. v.element.on(p + f, ".k-pager-refresh", u(v._refreshClick, v))
  11502. }
  11503. o.info && (v.element.find(".k-pager-info").length || v.element.append('<span class="k-pager-info k-label" />'));
  11504. v.element.on(p + f, "a", u(v._click, v)).addClass("k-pager-wrap k-widget");
  11505. o.autoBind && v.refresh();
  11506. i.notify(v)
  11507. },
  11508. destroy: function() {
  11509. var n = this;
  11510. s.fn.destroy.call(n);
  11511. n.element.off(f);
  11512. n.dataSource.unbind(r, n._refreshHandler);
  11513. i.destroy(n.element)
  11514. },
  11515. events: [r],
  11516. options: {
  11517. name: "Pager",
  11518. selectTemplate: '<li><span class="k-state-selected">#=text#<\/span><\/li>',
  11519. linkTemplate: '<li><a tabindex="-1" href="\\#" class="k-link" data-#=ns#page="#=idx#" #if (title !== "") {# title="#=title#" #}#>#=text#<\/a><\/li>',
  11520. buttonCount: 10,
  11521. autoBind: !0,
  11522. numeric: !0,
  11523. info: !0,
  11524. input: !1,
  11525. previousNext: !0,
  11526. pageSizes: !1,
  11527. refresh: !1,
  11528. messages: {
  11529. display: "{0} - {1} of {2} items",
  11530. empty: "No items to display",
  11531. page: "Page",
  11532. of: "of {0}",
  11533. itemsPerPage: "items per page",
  11534. first: "Go to the first page",
  11535. previous: "Go to the previous page",
  11536. next: "Go to the next page",
  11537. last: "Go to the last page",
  11538. refresh: "Refresh",
  11539. morePages: "More pages"
  11540. }
  11541. },
  11542. setDataSource: function(n) {
  11543. var t = this;
  11544. t.dataSource.unbind(r, t._refreshHandler);
  11545. t.dataSource = t.options.dataSource = n;
  11546. n.bind(r, t._refreshHandler);
  11547. t.options.autoBind && n.fetch()
  11548. },
  11549. refresh: function(n) {
  11550. var t = this,
  11551. e, a, s = 1,
  11552. f = "",
  11553. y, r = t.page(),
  11554. u = t.options,
  11555. h = t.pageSize(),
  11556. c = t.dataSource.total(),
  11557. o = t.totalPages(),
  11558. p = t.linkTemplate,
  11559. l = u.buttonCount;
  11560. if (!n || n.action != "itemchange") {
  11561. if (u.numeric) {
  11562. for (r > l && (y = r % l, s = y === 0 ? r - l + 1 : r - y + 1), a = Math.min(s + l - 1, o), s > 1 && (f += v(p, s - 1, "...", !1, u.messages.morePages)), e = s; e <= a; e++) f += v(e == r ? t.selectTemplate : p, e, e, !0);
  11563. a < o && (f += v(p, e, "...", !1, u.messages.morePages));
  11564. f === "" && (f = t.selectTemplate({
  11565. text: 0
  11566. }));
  11567. t.list.html(f)
  11568. }
  11569. u.info && (f = c > 0 ? i.format(u.messages.display, (r - 1) * h + 1, Math.min(r * h, c), c) : u.messages.empty, t.element.find(".k-pager-info").html(f));
  11570. u.input && t.element.find(".k-pager-input").html(t.options.messages.page + '<input class="k-textbox">' + i.format(u.messages.of, o)).find("input").val(r).attr(nt, c < 1).toggleClass("k-state-disabled", c < 1);
  11571. u.previousNext && (w(t.element, r, o), b(t.element, r, o), k(t.element, r, o), d(t.element, r, o));
  11572. u.pageSizes && t.element.find(".k-pager-sizes select").val(h).filter("[" + i.attr("role") + "=dropdownlist]").kendoDropDownList("value", h).kendoDropDownList("text", h)
  11573. }
  11574. },
  11575. _keydown: function(n) {
  11576. if (n.keyCode === i.keys.ENTER) {
  11577. var r = this.element.find(".k-pager-input").find("input"),
  11578. t = parseInt(r.val(), 10);
  11579. (isNaN(t) || t < 1 || t > this.totalPages()) && (t = this.page());
  11580. r.val(t);
  11581. this.page(t)
  11582. }
  11583. },
  11584. _refreshClick: function(n) {
  11585. n.preventDefault();
  11586. this.dataSource.read()
  11587. },
  11588. _change: function(n) {
  11589. var t = parseInt(n.currentTarget.value, 10);
  11590. isNaN(t) || this.dataSource.pageSize(t)
  11591. },
  11592. _click: function(t) {
  11593. var r = n(t.currentTarget);
  11594. t.preventDefault();
  11595. r.is(".k-state-disabled") || this.page(r.attr(i.attr("page")))
  11596. },
  11597. totalPages: function() {
  11598. return Math.ceil((this.dataSource.total() || 0) / this.pageSize())
  11599. },
  11600. pageSize: function() {
  11601. return this.dataSource.pageSize() || this.dataSource.total()
  11602. },
  11603. page: function(n) {
  11604. if (n !== t) this.dataSource.page(n), this.trigger(r, {
  11605. index: n
  11606. });
  11607. else return this.dataSource.total() > 0 ? this.dataSource.page() : 0
  11608. }
  11609. });
  11610. y.plugin(it)
  11611. }(window.kendo.jQuery);
  11612. kendo_module({
  11613. id: "popup",
  11614. name: "Pop-up",
  11615. category: "framework",
  11616. depends: ["core"],
  11617. advanced: !0
  11618. }),
  11619. function(n) {
  11620. function y(t, i) {
  11621. return t === i || n.contains(t, i)
  11622. }
  11623. var t = window.kendo,
  11624. it = t.ui,
  11625. p = it.Widget,
  11626. f = t.support,
  11627. r = t.getOffset,
  11628. lt = t._activeElement,
  11629. w = "open",
  11630. b = "close",
  11631. rt = "deactivate",
  11632. ut = "activate",
  11633. u = "center",
  11634. ft = "left",
  11635. s = "right",
  11636. k = "top",
  11637. h = "bottom",
  11638. d = "absolute",
  11639. et = "hidden",
  11640. c = "body",
  11641. g = "location",
  11642. e = "position",
  11643. ot = "visible",
  11644. st = "effects",
  11645. ht = "k-state-active",
  11646. l = "k-state-border",
  11647. at = /k-state-border-(\w+)/,
  11648. ct = ".k-picker-wrap, .k-dropdown-wrap, .k-link",
  11649. a = "down",
  11650. nt = n(window),
  11651. tt = n(document.documentElement),
  11652. v = "resize scroll",
  11653. vt = f.transitions.css,
  11654. yt = vt + "transform",
  11655. i = n.extend,
  11656. o = ".kendoPopup",
  11657. pt = ["font-family", "font-size", "font-stretch", "font-style", "font-weight", "line-height"],
  11658. wt = p.extend({
  11659. init: function(r, u) {
  11660. var f = this,
  11661. e;
  11662. u = u || {};
  11663. u.isRtl && (u.origin = u.origin || h + " " + s, u.position = u.position || k + " " + s);
  11664. p.fn.init.call(f, r, u);
  11665. r = f.element;
  11666. u = f.options;
  11667. f.collisions = u.collision ? u.collision.split(" ") : [];
  11668. f.collisions.length === 1 && f.collisions.push(f.collisions[0]);
  11669. e = n(f.options.anchor).closest(".k-popup,.k-group").filter(":not([class^=km-])");
  11670. u.appendTo = n(n(u.appendTo)[0] || e[0] || c);
  11671. f.element.hide().addClass("k-popup k-group k-reset").toggleClass("k-rtl", !!u.isRtl).css({
  11672. position: d
  11673. }).appendTo(u.appendTo).on("mouseenter" + o, function() {
  11674. f._hovered = !0
  11675. }).on("mouseleave" + o, function() {
  11676. f._hovered = !1
  11677. });
  11678. if (f.wrapper = n(), u.animation === !1 && (u.animation = {
  11679. open: {
  11680. effects: {}
  11681. },
  11682. close: {
  11683. hide: !0,
  11684. effects: {}
  11685. }
  11686. }), i(u.animation.open, {
  11687. complete: function() {
  11688. f.wrapper.css({
  11689. overflow: ot
  11690. });
  11691. f.trigger(ut)
  11692. }
  11693. }), i(u.animation.close, {
  11694. complete: function() {
  11695. f.wrapper.hide();
  11696. var o = f.wrapper.data(g),
  11697. s = n(u.anchor),
  11698. i, e;
  11699. o && f.wrapper.css(o);
  11700. u.anchor != c && (i = (s[0].className.match(at) || ["", "down"])[1], e = l + "-" + i, s.removeClass(e).children(ct).removeClass(ht).removeClass(e), r.removeClass(l + "-" + t.directions[i].reverse));
  11701. f._closing = !1;
  11702. f.trigger(rt)
  11703. }
  11704. }), f._mousedownProxy = function(n) {
  11705. f._mousedown(n)
  11706. }, f._resizeProxy = function(n) {
  11707. f._resize(n)
  11708. }, u.toggleTarget) n(u.toggleTarget).on(u.toggleEvent + o, n.proxy(f.toggle, f))
  11709. },
  11710. events: [w, ut, b, rt],
  11711. options: {
  11712. name: "Popup",
  11713. toggleEvent: "click",
  11714. origin: h + " " + ft,
  11715. position: k + " " + ft,
  11716. anchor: c,
  11717. collision: "flip fit",
  11718. viewport: window,
  11719. copyAnchorStyles: !0,
  11720. autosize: !1,
  11721. modal: !1,
  11722. animation: {
  11723. open: {
  11724. effects: "slideIn:down",
  11725. transition: !0,
  11726. duration: 200
  11727. },
  11728. close: {
  11729. duration: 100,
  11730. hide: !0
  11731. }
  11732. }
  11733. },
  11734. destroy: function() {
  11735. var i = this,
  11736. r = i.options,
  11737. f = i.element.off(o),
  11738. u;
  11739. p.fn.destroy.call(i);
  11740. r.toggleTarget && n(r.toggleTarget).off(o);
  11741. r.modal || (tt.unbind(a, i._mousedownProxy), nt.unbind(v, i._resizeProxy));
  11742. t.destroy(i.element.children());
  11743. r.appendTo[0] === document.body && (u = f.parent(".k-animation-container"), u[0] ? u.remove() : f.remove())
  11744. },
  11745. open: function(r, u) {
  11746. var o = this,
  11747. rt = {
  11748. isFixed: !isNaN(parseInt(u, 10)),
  11749. x: r,
  11750. y: u
  11751. },
  11752. y = o.element,
  11753. s = o.options,
  11754. p = "down",
  11755. h, b, g = n(s.anchor),
  11756. it;
  11757. if (!o.visible()) {
  11758. if (s.copyAnchorStyles && y.css(t.getComputedStyles(g[0], pt)), y.data("animating") || o.trigger(w)) return;
  11759. s.modal || (tt.unbind(a, o._mousedownProxy).bind(a, o._mousedownProxy), f.mobileOS.ios || f.mobileOS.android || nt.unbind(v, o._resizeProxy).bind(v, o._resizeProxy));
  11760. o.wrapper = b = t.wrap(y, s.autosize).css({
  11761. overflow: et,
  11762. display: "block",
  11763. position: d
  11764. });
  11765. f.mobileOS.android && b.add(g).css(yt, "translatez(0)");
  11766. b.css(e);
  11767. n(s.appendTo)[0] == document.body && b.css(k, "-10000px");
  11768. h = i(!0, {}, s.animation.open);
  11769. o.flipped = o._position(rt);
  11770. h.effects = t.parseEffects(h.effects, o.flipped);
  11771. p = h.effects.slideIn ? h.effects.slideIn.direction : p;
  11772. s.anchor != c && (it = l + "-" + p, y.addClass(l + "-" + t.directions[p].reverse), g.addClass(it).children(ct).addClass(ht).addClass(it));
  11773. y.data(st, h.effects).kendoStop(!0).kendoAnimate(h)
  11774. }
  11775. },
  11776. toggle: function() {
  11777. var n = this;
  11778. n[n.visible() ? b : w]()
  11779. },
  11780. visible: function() {
  11781. return this.element.is(":" + ot)
  11782. },
  11783. close: function() {
  11784. var r = this,
  11785. s = r.options,
  11786. o, u, f, e;
  11787. if (r.visible()) {
  11788. if (o = r.wrapper[0] ? r.wrapper : t.wrap(r.element).hide(), r._closing || r.trigger(b)) return;
  11789. r.element.find(".k-popup").each(function() {
  11790. var i = n(this),
  11791. t = i.data("kendoPopup");
  11792. t && t.close()
  11793. });
  11794. tt.unbind(a, r._mousedownProxy);
  11795. nt.unbind(v, r._resizeProxy);
  11796. u = i(!0, {}, s.animation.close);
  11797. f = r.element.data(st);
  11798. e = u.effects;
  11799. !e && !t.size(e) && f && t.size(f) && (u.effects = f, u.reverse = !0);
  11800. r._closing = !0;
  11801. r.element.kendoStop(!0);
  11802. o.css({
  11803. overflow: et
  11804. });
  11805. r.element.kendoAnimate(u)
  11806. }
  11807. },
  11808. _resize: function(n) {
  11809. var t = this;
  11810. n.type === "resize" ? (clearTimeout(t._resizeTimeout), t._resizeTimeout = setTimeout(function() {
  11811. t._position();
  11812. t._resizeTimeout = null
  11813. }, 50)) : t._hovered || y(t.element[0], lt()) || t.close()
  11814. },
  11815. _mousedown: function(i) {
  11816. var u = this,
  11817. s = u.element[0],
  11818. e = u.options,
  11819. h = n(e.anchor)[0],
  11820. o = e.toggleTarget,
  11821. f = t.eventTarget(i),
  11822. r = n(f).closest(".k-popup"),
  11823. c = r.parent().parent(".km-shim").length;
  11824. (r = r[0], c || !r || r === u.element[0]) && n(i.target).closest("a").data("rel") !== "popover" && (y(s, f) || y(h, f) || o && y(n(o)[0], f) || u.close())
  11825. },
  11826. _fit: function(n, t, i) {
  11827. var r = 0;
  11828. return n + t > i && (r = i - (n + t)), n < 0 && (r = -n), r
  11829. },
  11830. _flip: function(n, t, i, r, f, e, o) {
  11831. var s = 0;
  11832. return o = o || t, e !== f && e !== u && f !== u && (n + o > r && (s += -(i + t)), n + s < 0 && (s += i + t)), s
  11833. },
  11834. _position: function(t) {
  11835. var o = this,
  11836. nt = o.element.css(e, ""),
  11837. u = o.wrapper,
  11838. y = o.options,
  11839. c = n(y.viewport),
  11840. ot = n(c).offset(),
  11841. l = n(y.anchor),
  11842. tt = y.origin.toLowerCase().split(" "),
  11843. it = y.position.toLowerCase().split(" "),
  11844. p = o.collisions,
  11845. w = f.zoomLevel(),
  11846. b, rt, h, k = 10002,
  11847. ut = 0,
  11848. st, v, s, et;
  11849. if (b = l.parents().filter(u.siblings()), b[0])
  11850. if (h = Number(n(b).css("zIndex")), h) k = h + 1;
  11851. else
  11852. for (rt = l.parentsUntil(b), st = rt.length; ut < st; ut++) h = Number(n(rt[ut]).css("zIndex")), h && k < h && (k = h + 1);
  11853. u.css("zIndex", k);
  11854. t && t.isFixed ? u.css({
  11855. left: t.x,
  11856. top: t.y
  11857. }) : u.css(o._align(tt, it));
  11858. var ft = r(u, e, l[0] === u.offsetParent()[0]),
  11859. a = r(u),
  11860. ht = l.offsetParent().parent(".k-animation-container,.k-popup,.k-group");
  11861. return ht.length && (ft = r(u, e, !0), a = r(u)), c[0] === window ? (a.top -= window.pageYOffset || document.documentElement.scrollTop || 0, a.left -= window.pageXOffset || document.documentElement.scrollLeft || 0) : (a.top -= ot.top, a.left -= ot.left), o.wrapper.data(g) || u.data(g, i({}, ft)), v = i({}, a), s = i({}, ft), p[0] === "fit" && (s.top += o._fit(v.top, u.outerHeight(), c.height() / w)), p[1] === "fit" && (s.left += o._fit(v.left, u.outerWidth(), c.width() / w)), et = i({}, s), p[0] === "flip" && (s.top += o._flip(v.top, nt.outerHeight(), l.outerHeight(), c.height() / w, tt[0], it[0], u.outerHeight())), p[1] === "flip" && (s.left += o._flip(v.left, nt.outerWidth(), l.outerWidth(), c.width() / w, tt[1], it[1], u.outerWidth())), nt.css(e, d), u.css(s), s.left != et.left || s.top != et.top
  11862. },
  11863. _align: function(t, i) {
  11864. var c = this,
  11865. v = c.wrapper,
  11866. l = n(c.options.anchor),
  11867. y = t[0],
  11868. p = t[1],
  11869. w = i[0],
  11870. b = i[1],
  11871. k = r(l),
  11872. d = n(c.options.appendTo),
  11873. a, g = v.outerWidth(),
  11874. nt = v.outerHeight(),
  11875. tt = l.outerWidth(),
  11876. it = l.outerHeight(),
  11877. f = k.top,
  11878. e = k.left,
  11879. o = Math.round;
  11880. return d[0] != document.body && (a = r(d), f -= a.top, e -= a.left), y === h && (f += it), y === u && (f += o(it / 2)), w === h && (f -= nt), w === u && (f -= o(nt / 2)), p === s && (e += tt), p === u && (e += o(tt / 2)), b === s && (e -= g), b === u && (e -= o(g / 2)), {
  11881. top: f,
  11882. left: e
  11883. }
  11884. }
  11885. });
  11886. it.plugin(wt)
  11887. }(window.kendo.jQuery);
  11888. kendo_module({
  11889. id: "tooltip",
  11890. name: "Tooltip",
  11891. category: "web",
  11892. description: "The Tooltip widget displays a popup hint for a given html element.",
  11893. depends: ["core", "popup"]
  11894. }),
  11895. function(n) {
  11896. function w(n) {
  11897. while (n.length) ot(n), n = n.parent()
  11898. }
  11899. function ot(n) {
  11900. var i = n.data(t.ns + "title");
  11901. i && (n.attr("title", i), n.removeData(t.ns + "title"))
  11902. }
  11903. function st(n) {
  11904. var i = n.attr("title");
  11905. i && (n.data(t.ns + "title", i), n.attr("title", ""))
  11906. }
  11907. function b(n) {
  11908. while (n.length && !n.is("body")) st(n), n = n.parent()
  11909. }
  11910. var t = window.kendo,
  11911. u = t.ui.Widget,
  11912. k = t.ui.Popup,
  11913. d = t.isFunction,
  11914. g = n.isPlainObject,
  11915. s = n.extend,
  11916. r = n.proxy,
  11917. f = n(document),
  11918. nt = t.isLocalUrl,
  11919. h = "_tt_active",
  11920. c = "aria-describedby",
  11921. l = "show",
  11922. a = "hide",
  11923. v = "error",
  11924. e = "contentLoad",
  11925. y = "requestStart",
  11926. o = "k-content-frame",
  11927. tt = '<div role="tooltip" class="k-widget k-tooltip#if (!autoHide) {# k-tooltip-closable#}#">#if (!autoHide) {# <div class="k-tooltip-button"><a href="\\#" class="k-icon k-i-close">close<\/a><\/div> #}#<div class="k-tooltip-content"><\/div>#if (callout){ #<div class="k-callout k-callout-#=dir#"><\/div>#}#<\/div>',
  11928. it = t.template("<iframe frameborder='0' class='" + o + "' src='#= content.url #'>This page requires frames in order to show content<\/iframe>"),
  11929. i = ".kendoTooltip",
  11930. rt = {
  11931. bottom: {
  11932. origin: "bottom center",
  11933. position: "top center"
  11934. },
  11935. top: {
  11936. origin: "top center",
  11937. position: "bottom center"
  11938. },
  11939. left: {
  11940. origin: "center left",
  11941. position: "center right",
  11942. collision: "fit flip"
  11943. },
  11944. right: {
  11945. origin: "center right",
  11946. position: "center left",
  11947. collision: "fit flip"
  11948. },
  11949. center: {
  11950. position: "center center",
  11951. origin: "center center"
  11952. }
  11953. },
  11954. ut = {
  11955. top: "bottom",
  11956. bottom: "top",
  11957. left: "right",
  11958. right: "left",
  11959. center: "center"
  11960. },
  11961. p = {
  11962. bottom: "n",
  11963. top: "s",
  11964. left: "e",
  11965. right: "w",
  11966. center: "n"
  11967. },
  11968. ft = {
  11969. horizontal: {
  11970. offset: "top",
  11971. size: "outerHeight"
  11972. },
  11973. vertical: {
  11974. offset: "left",
  11975. size: "outerWidth"
  11976. }
  11977. },
  11978. et = function(n) {
  11979. return n.target.data(t.ns + "title")
  11980. },
  11981. ht = u.extend({
  11982. init: function(n, t) {
  11983. var f = this,
  11984. e;
  11985. u.fn.init.call(f, n, t);
  11986. e = f.options.position.match(/left|right/) ? "horizontal" : "vertical";
  11987. f.dimensions = ft[e];
  11988. f._documentKeyDownHandler = r(f._documentKeyDown, f);
  11989. f.element.on(f.options.showOn + i, f.options.filter, r(f._showOn, f)).on("mouseenter" + i, f.options.filter, r(f._mouseenter, f));
  11990. if (this.options.autoHide) f.element.on("mouseleave" + i, f.options.filter, r(f._mouseleave, f))
  11991. },
  11992. options: {
  11993. name: "Tooltip",
  11994. filter: "",
  11995. content: et,
  11996. showAfter: 100,
  11997. callout: !0,
  11998. position: "bottom",
  11999. showOn: "mouseenter",
  12000. autoHide: !0,
  12001. width: null,
  12002. height: null,
  12003. animation: {
  12004. open: {
  12005. effects: "fade:in",
  12006. duration: 0
  12007. },
  12008. close: {
  12009. effects: "fade:out",
  12010. duration: 40,
  12011. hide: !0
  12012. }
  12013. }
  12014. },
  12015. events: [l, a, e, v, y],
  12016. _mouseenter: function(t) {
  12017. b(n(t.currentTarget))
  12018. },
  12019. _showOn: function(t) {
  12020. var i = this,
  12021. r = n(t.currentTarget);
  12022. i.options.showOn && i.options.showOn.match(/click|focus/) ? i._show(r) : (clearTimeout(i.timeout), i.timeout = setTimeout(function() {
  12023. i._show(r)
  12024. }, i.options.showAfter))
  12025. },
  12026. _appendContent: function(n) {
  12027. var u = this,
  12028. r = u.options.content,
  12029. f = u.content,
  12030. h = u.options.iframe,
  12031. s;
  12032. if (g(r) && r.url)
  12033. if ("iframe" in u.options || (h = !nt(r.url)), u.trigger(y, {
  12034. options: r,
  12035. target: n
  12036. }), h) {
  12037. f.hide();
  12038. s = f.find("." + o)[0];
  12039. s ? s.src = r.url || s.src : f.html(it({
  12040. content: r
  12041. }));
  12042. f.find("." + o).off("load" + i).on("load" + i, function() {
  12043. u.trigger(e);
  12044. f.show()
  12045. })
  12046. } else f.empty(), t.ui.progress(f, !0), u._ajaxRequest(r);
  12047. else r && d(r) ? (r = r({
  12048. sender: this,
  12049. target: n
  12050. }), u.content.html(r || "")) : u.content.html(r)
  12051. },
  12052. _ajaxRequest: function(n) {
  12053. var i = this;
  12054. jQuery.ajax(s({
  12055. type: "GET",
  12056. dataType: "html",
  12057. cache: !1,
  12058. error: function(n, r) {
  12059. t.ui.progress(i.content, !1);
  12060. i.trigger(v, {
  12061. status: r,
  12062. xhr: n
  12063. })
  12064. },
  12065. success: r(function(n) {
  12066. t.ui.progress(i.content, !1);
  12067. i.content.html(n);
  12068. i.trigger(e)
  12069. }, i)
  12070. }, n))
  12071. },
  12072. _documentKeyDown: function(n) {
  12073. n.keyCode === t.keys.ESC && this.hide()
  12074. },
  12075. refresh: function() {
  12076. var t = this,
  12077. n = t.popup;
  12078. n && n.options.anchor && t._appendContent(n.options.anchor)
  12079. },
  12080. hide: function() {
  12081. this.popup && this.popup.close()
  12082. },
  12083. show: function(n) {
  12084. n = n || this.element;
  12085. b(n);
  12086. this._show(n)
  12087. },
  12088. _show: function(n) {
  12089. var t = this,
  12090. r = t.target();
  12091. t.popup || t._initPopup();
  12092. r && r[0] != n[0] && (t.popup.close(), t.popup.element.kendoStop(!0, !0));
  12093. r && r[0] == n[0] || (t._appendContent(n), t.popup.options.anchor = n);
  12094. t.popup.one("deactivate", function() {
  12095. w(n);
  12096. n.removeAttr(c);
  12097. this.element.removeAttr("id").attr("aria-hidden", !0);
  12098. f.off("keydown" + i, t._documentKeyDownHandler)
  12099. });
  12100. t.popup.open()
  12101. },
  12102. _initPopup: function() {
  12103. var u = this,
  12104. e = u.options,
  12105. o = n(t.template(tt)({
  12106. callout: e.callout && e.position !== "center",
  12107. dir: p[e.position],
  12108. autoHide: e.autoHide
  12109. }));
  12110. if (u.popup = new k(o, s({
  12111. activate: function() {
  12112. var t = this.options.anchor,
  12113. n = t[0].id || u.element[0].id;
  12114. n && (t.attr(c, n + h), this.element.attr("id", n + h));
  12115. e.callout && u._positionCallout();
  12116. this.element.removeAttr("aria-hidden");
  12117. f.on("keydown" + i, u._documentKeyDownHandler);
  12118. u.trigger(l)
  12119. },
  12120. close: function() {
  12121. u.trigger(a)
  12122. },
  12123. copyAnchorStyles: !1,
  12124. animation: e.animation
  12125. }, rt[e.position])), o.css({
  12126. width: e.width,
  12127. height: e.height
  12128. }), u.content = o.find(".k-tooltip-content"), u.arrow = o.find(".k-callout"), e.autoHide) o.on("mouseleave" + i, r(u._mouseleave, u));
  12129. else o.on("click" + i, ".k-tooltip-button", r(u._closeButtonClick, u))
  12130. },
  12131. _closeButtonClick: function(n) {
  12132. n.preventDefault();
  12133. this.hide()
  12134. },
  12135. _mouseleave: function(t) {
  12136. if (this.popup) {
  12137. var r = n(t.currentTarget),
  12138. i = r.offset(),
  12139. u = t.pageX,
  12140. f = t.pageY;
  12141. if (i.right = i.left + r.outerWidth(), i.bottom = i.top + r.outerHeight(), u > i.left && u < i.right && f > i.top && f < i.bottom) return;
  12142. this.popup.close()
  12143. } else w(n(t.currentTarget));
  12144. clearTimeout(this.timeout)
  12145. },
  12146. _positionCallout: function() {
  12147. var t = this,
  12148. u = t.options.position,
  12149. f = t.dimensions,
  12150. i = f.offset,
  12151. r = t.popup,
  12152. e = r.options.anchor,
  12153. o = n(e).offset(),
  12154. s = parseInt(t.arrow.css("border-top-width"), 10),
  12155. h = n(r.element).offset(),
  12156. c = p[r.flipped ? ut[u] : u],
  12157. l = o[i] - h[i] + n(e)[f.size]() / 2 - s;
  12158. t.arrow.removeClass("k-callout-n k-callout-s k-callout-w k-callout-e").addClass("k-callout-" + c).css(i, l)
  12159. },
  12160. target: function() {
  12161. return this.popup ? this.popup.options.anchor : null
  12162. },
  12163. destroy: function() {
  12164. var n = this.popup;
  12165. n && (n.element.off(i), n.destroy());
  12166. this.element.off(i);
  12167. f.off("keydown" + i, this._documentKeyDownHandler);
  12168. u.fn.destroy.call(this)
  12169. }
  12170. });
  12171. t.ui.plugin(ht)
  12172. }(window.kendo.jQuery);
  12173. kendo_module({
  12174. id: "list",
  12175. name: "List",
  12176. category: "framework",
  12177. depends: ["data", "popup"],
  12178. hidden: !0
  12179. }),
  12180. function(n, t) {
  12181. function b(t, i) {
  12182. t.filters && (t.filters = n.grep(t.filters, function(n) {
  12183. return b(n, i), n.filters ? n.filters.length : n.field != i
  12184. }))
  12185. }
  12186. var i = window.kendo,
  12187. l = i.ui,
  12188. o = l.Widget,
  12189. f = i.keys,
  12190. u = i.support,
  12191. ft = i.htmlEncode,
  12192. et = i._activeElement,
  12193. s = "id",
  12194. a = "li",
  12195. r = "change",
  12196. v = "character",
  12197. k = "k-state-focused",
  12198. y = "k-state-hover",
  12199. d = "k-loading",
  12200. p = "open",
  12201. g = "close",
  12202. nt = "select",
  12203. w = "selected",
  12204. tt = "progress",
  12205. it = "requestEnd",
  12206. rt = "width",
  12207. ut = n.extend,
  12208. e = n.proxy,
  12209. h = u.browser,
  12210. ot = h.msie && h.version < 9,
  12211. st = /"/g,
  12212. ht = {
  12213. ComboBox: "DropDownList",
  12214. DropDownList: "ComboBox"
  12215. },
  12216. c = o.extend({
  12217. init: function(t, i) {
  12218. var r = this,
  12219. h = r.ns,
  12220. f;
  12221. o.fn.init.call(r, t, i);
  12222. t = r.element;
  12223. r._isSelect = t.is(nt);
  12224. r._template();
  12225. r.ul = n('<ul unselectable="on" class="k-list k-reset"/>').css({
  12226. overflow: u.kineticScrollNeeded ? "" : "auto"
  12227. }).on("mouseenter" + h, a, function() {
  12228. n(this).addClass(y)
  12229. }).on("mouseleave" + h, a, function() {
  12230. n(this).removeClass(y)
  12231. }).on("click" + h, a, e(r._click, r)).attr({
  12232. tabIndex: -1,
  12233. role: "listbox",
  12234. "aria-hidden": !0
  12235. });
  12236. r.list = n("<div class='k-list-container'/>").append(r.ul).on("mousedown" + h, function(n) {
  12237. n.preventDefault()
  12238. });
  12239. f = t.attr(s);
  12240. f && (r.list.attr(s, f + "-list"), r.ul.attr(s, f + "_listbox"), r._optionID = f + "_option_selected");
  12241. r._header();
  12242. r._accessors();
  12243. r._initValue()
  12244. },
  12245. options: {
  12246. valuePrimitive: !1,
  12247. headerTemplate: ""
  12248. },
  12249. setOptions: function(n) {
  12250. o.fn.setOptions.call(this, n);
  12251. n && n.enable !== t && (n.enabled = n.enable)
  12252. },
  12253. focus: function() {
  12254. this._focused.focus()
  12255. },
  12256. readonly: function(n) {
  12257. this._editable({
  12258. readonly: n === t ? !0 : n,
  12259. disable: !1
  12260. })
  12261. },
  12262. enable: function(n) {
  12263. this._editable({
  12264. readonly: !1,
  12265. disable: !(n = n === t ? !0 : n)
  12266. })
  12267. },
  12268. _filterSource: function(n) {
  12269. var i = this,
  12270. u = i.options,
  12271. r = i.dataSource,
  12272. t = r.filter() || {};
  12273. b(t, u.dataTextField);
  12274. n && (t = t.filters || [], t.push(n));
  12275. r.filter(t)
  12276. },
  12277. _header: function() {
  12278. var t = this.options.headerTemplate,
  12279. i;
  12280. n.isFunction(t) && (t = t({}));
  12281. t && (this.list.prepend(t), i = this.ul.prev(), this.header = i[0] ? i : null)
  12282. },
  12283. _initValue: function() {
  12284. var n = this,
  12285. t = n.options.value;
  12286. t !== null ? n.element.val(t) : (t = n._accessor(), n.options.value = t);
  12287. n._old = t
  12288. },
  12289. _ignoreCase: function() {
  12290. var t = this,
  12291. i = t.dataSource.reader.model,
  12292. n;
  12293. i && i.fields && (n = i.fields[t.options.dataTextField], n && n.type && n.type !== "string" && (t.options.ignoreCase = !1))
  12294. },
  12295. items: function() {
  12296. return this.ul[0].children
  12297. },
  12298. current: function(n) {
  12299. var i = this,
  12300. r = i._optionID;
  12301. if (n !== t) i._current && (i._current.removeClass(k).removeAttr("aria-selected").removeAttr(s), i._focused.removeAttr("aria-activedescendant")), n && (n.addClass(k), i._scroll(n), r && (n.attr("id", r), i._focused.attr("aria-activedescendant", r))), i._current = n;
  12302. else return i._current
  12303. },
  12304. destroy: function() {
  12305. var n = this,
  12306. t = n.ns;
  12307. o.fn.destroy.call(n);
  12308. n._unbindDataSource();
  12309. n.ul.off(t);
  12310. n.list.off(t);
  12311. n._touchScroller && n._touchScroller.destroy();
  12312. n.popup.destroy();
  12313. n._form && n._form.off("reset", n._resetHandler)
  12314. },
  12315. dataItem: function(n) {
  12316. var i = this;
  12317. return n === t && (n = i.selectedIndex), i._data()[n]
  12318. },
  12319. _accessors: function() {
  12320. var n = this,
  12321. r = n.element,
  12322. t = n.options,
  12323. u = i.getter,
  12324. f = r.attr(i.attr("text-field")),
  12325. e = r.attr(i.attr("value-field"));
  12326. f && (t.dataTextField = f);
  12327. e && (t.dataValueField = e);
  12328. n._text = u(t.dataTextField);
  12329. n._value = u(t.dataValueField)
  12330. },
  12331. _aria: function(n) {
  12332. var i = this,
  12333. r = i.options,
  12334. u = i._focused;
  12335. r.suggest !== t && u.attr("aria-autocomplete", r.suggest ? "both" : "list");
  12336. n = n ? n + " " + i.ul[0].id : i.ul[0].id;
  12337. u.attr("aria-owns", n);
  12338. i.ul.attr("aria-live", !r.filter || r.filter === "none" ? "off" : "polite")
  12339. },
  12340. _blur: function() {
  12341. var n = this;
  12342. n._change();
  12343. n.close()
  12344. },
  12345. _change: function() {
  12346. var n = this,
  12347. i = n.selectedIndex,
  12348. e = n.options.value,
  12349. u = n.value(),
  12350. f;
  12351. n._isSelect && !n._bound && e && (u = e);
  12352. u !== n._old ? f = !0 : i !== t && i !== n._oldIndex && (f = !0);
  12353. f && (n._old = u, n._oldIndex = i, n.trigger(r), n.element.trigger(r))
  12354. },
  12355. _click: function(t) {
  12356. t.isDefaultPrevented() || this._accept(n(t.currentTarget))
  12357. },
  12358. _data: function() {
  12359. return this.dataSource.view()
  12360. },
  12361. _enable: function() {
  12362. var n = this,
  12363. i = n.options,
  12364. r = n.element.is("[disabled]");
  12365. i.enable !== t && (i.enabled = i.enable);
  12366. !i.enabled || r ? n.enable(!1) : n.readonly(n.element.is("[readonly]"))
  12367. },
  12368. _focus: function(n) {
  12369. var t = this;
  12370. if (t.popup.visible() && n && t.trigger(nt, {
  12371. item: n
  12372. })) {
  12373. t.close();
  12374. return
  12375. }
  12376. t._select(n);
  12377. t._triggerCascade(!0);
  12378. t._blur()
  12379. },
  12380. _index: function(n) {
  12381. for (var i = this, u = i._data(), t = 0, r = u.length; t < r; t++)
  12382. if (i._dataValue(u[t]) == n) return t;
  12383. return -1
  12384. },
  12385. _dataValue: function(n) {
  12386. var i = this._value(n);
  12387. return i === t && (i = this._text(n)), i
  12388. },
  12389. _height: function(n) {
  12390. if (n) {
  12391. var t = this,
  12392. r = t.list,
  12393. e = t.popup.visible(),
  12394. i = t.options.height,
  12395. f = t.header,
  12396. u;
  12397. u = r.add(r.parent(".k-animation-container")).show();
  12398. i = t.ul[0].scrollHeight > i ? i : "auto";
  12399. u.height(i);
  12400. f && t.ul.height(i == "auto" ? i : r.height() - f.height());
  12401. e || u.hide()
  12402. }
  12403. },
  12404. _adjustListWidth: function() {
  12405. var t = this.list,
  12406. i = t[0].style.width,
  12407. u = this.wrapper,
  12408. n, r;
  12409. if (t.data(rt) || !i) return n = window.getComputedStyle ? window.getComputedStyle(u[0], null) : 0, r = n ? parseFloat(n.width) : u.outerWidth(), n && (h.mozilla || h.msie) && (r += parseFloat(n.paddingLeft) + parseFloat(n.paddingRight) + parseFloat(n.borderLeftWidth) + parseFloat(n.borderRightWidth)), i = t.css("box-sizing") !== "border-box" ? r - (t.outerWidth() - t.width()) : r, t.css({
  12410. fontFamily: u.css("font-family"),
  12411. width: i
  12412. }).data(rt, i), !0
  12413. },
  12414. _popup: function() {
  12415. var n = this,
  12416. e = n.list,
  12417. t = n._focused,
  12418. r = n.options,
  12419. f = n.wrapper;
  12420. n.popup = new l.Popup(e, ut({}, r.popup, {
  12421. anchor: f,
  12422. open: function(i) {
  12423. n._adjustListWidth();
  12424. n.trigger(p) ? i.preventDefault() : (t.attr("aria-expanded", !0), n.ul.attr("aria-hidden", !1))
  12425. },
  12426. close: function(i) {
  12427. n.trigger(g) ? i.preventDefault() : (t.attr("aria-expanded", !1), n.ul.attr("aria-hidden", !0))
  12428. },
  12429. animation: r.animation,
  12430. isRtl: u.isRtl(f)
  12431. }));
  12432. n.popup.one(p, function() {
  12433. n._height(n._data().length)
  12434. });
  12435. n._touchScroller = i.touchScroller(n.popup.element)
  12436. },
  12437. _makeUnselectable: function() {
  12438. ot && this.list.find("*").attr("unselectable", "on")
  12439. },
  12440. _toggleHover: function(t) {
  12441. n(t.currentTarget).toggleClass(y, t.type === "mouseenter")
  12442. },
  12443. _toggle: function(n) {
  12444. var i = this,
  12445. r = u.touch && u.MSPointers && u.pointers;
  12446. n = n !== t ? n : !i.popup.visible();
  12447. r || i._focused[0] === et() || i._focused.focus();
  12448. i[n ? p : g]()
  12449. },
  12450. _scroll: function(n) {
  12451. if (n) {
  12452. n[0] && (n = n[0]);
  12453. var r = this.ul[0],
  12454. t = n.offsetTop,
  12455. o = n.offsetHeight,
  12456. u = r.scrollTop,
  12457. s = r.clientHeight,
  12458. h = t + o,
  12459. f = this._touchScroller,
  12460. i, e;
  12461. f ? (i = f.dimensions.y, i.enabled && t > i.size && (t = t - i.size + o + 4, f.scrollTo(0, -t))) : (e = this.header ? this.header.outerHeight() : 0, r.scrollTop = u > t ? t - e : h > u + s ? h - s - e : u)
  12462. }
  12463. },
  12464. _template: function() {
  12465. var t = this,
  12466. n = t.options,
  12467. r = n.template,
  12468. u = n.dataSource;
  12469. t._isSelect && t.element[0].length && (u || (n.dataTextField = n.dataTextField || "text", n.dataValueField = n.dataValueField || "value"));
  12470. r ? (r = i.template(r), t.template = function(n) {
  12471. return '<li tabindex="-1" role="option" unselectable="on" class="k-item">' + r(n) + "<\/li>"
  12472. }) : t.template = i.template('<li tabindex="-1" role="option" unselectable="on" class="k-item">${' + i.expr(n.dataTextField, "data") + "}<\/li>", {
  12473. useWithBlock: !1
  12474. })
  12475. },
  12476. _triggerCascade: function(n) {
  12477. var t = this,
  12478. i = t.value();
  12479. (!t._bound && i || t._old !== i) && t.trigger("cascade", {
  12480. userTriggered: n
  12481. })
  12482. },
  12483. _unbindDataSource: function() {
  12484. var n = this;
  12485. n.dataSource.unbind(r, n._refreshHandler).unbind(tt, n._progressHandler).unbind(it, n._requestEndHandler).unbind("error", n._errorHandler)
  12486. }
  12487. });
  12488. ut(c, {
  12489. caret: function(n) {
  12490. var t = n.ownerDocument.selection;
  12491. return t ? Math.abs(t.createRange().moveStart(v, -n.value.length)) : n.selectionStart
  12492. },
  12493. selectText: function(n, t, i) {
  12494. try {
  12495. if (n.createTextRange) {
  12496. n.focus();
  12497. var r = n.createTextRange();
  12498. r.collapse(!0);
  12499. r.moveStart(v, t);
  12500. r.moveEnd(v, i - t);
  12501. r.select()
  12502. } else n.setSelectionRange(t, i)
  12503. } catch (u) {}
  12504. },
  12505. inArray: function(n, t) {
  12506. var i, r, u = t.children;
  12507. if (!n || n.parentNode !== t) return -1;
  12508. for (i = 0, r = u.length; i < r; i++)
  12509. if (n === u[i]) return i;
  12510. return -1
  12511. }
  12512. });
  12513. i.ui.List = c;
  12514. l.Select = c.extend({
  12515. init: function(n, t) {
  12516. c.fn.init.call(this, n, t);
  12517. this._initial = this.element.val()
  12518. },
  12519. setDataSource: function(n) {
  12520. this.options.dataSource = n;
  12521. this._dataSource();
  12522. this._bound = !1;
  12523. this.options.autoBind && this.dataSource.fetch()
  12524. },
  12525. close: function() {
  12526. this.popup.close()
  12527. },
  12528. select: function(n) {
  12529. var i = this;
  12530. if (n === t) return i.selectedIndex;
  12531. i._select(n);
  12532. i._triggerCascade();
  12533. i._old = i._accessor();
  12534. i._oldIndex = i.selectedIndex
  12535. },
  12536. _accessor: function(n, i) {
  12537. var r = this.element[0],
  12538. e = this._isSelect,
  12539. f = r.selectedIndex,
  12540. u;
  12541. if (n === t) return e ? f > -1 && (u = r.options[f], u && (n = u.value)) : n = r.value, n;
  12542. e ? (f > -1 && r.options[f].removeAttribute(w), r.selectedIndex = i, u = r.options[i], u && u.setAttribute(w, w)) : r.value = n
  12543. },
  12544. _hideBusy: function() {
  12545. var n = this;
  12546. clearTimeout(n._busy);
  12547. n._arrow.removeClass(d);
  12548. n._focused.attr("aria-busy", !1);
  12549. n._busy = null
  12550. },
  12551. _showBusy: function() {
  12552. var n = this;
  12553. (n._request = !0, n._busy) || (n._busy = setTimeout(function() {
  12554. n._focused.attr("aria-busy", !0);
  12555. n._arrow.addClass(d)
  12556. }, 100))
  12557. },
  12558. _requestEnd: function() {
  12559. this._request = !1
  12560. },
  12561. _dataSource: function() {
  12562. var t = this,
  12563. s = t.element,
  12564. f = t.options,
  12565. u = f.dataSource || {},
  12566. o;
  12567. u = n.isArray(u) ? {
  12568. data: u
  12569. } : u;
  12570. t._isSelect && (o = s[0].selectedIndex, o > -1 && (f.index = o), u.select = s, u.fields = [{
  12571. field: f.dataTextField
  12572. }, {
  12573. field: f.dataValueField
  12574. }]);
  12575. t.dataSource && t._refreshHandler ? t._unbindDataSource() : (t._refreshHandler = e(t.refresh, t), t._progressHandler = e(t._showBusy, t), t._requestEndHandler = e(t._requestEnd, t), t._errorHandler = e(t._hideBusy, t));
  12576. t.dataSource = i.data.DataSource.create(u).bind(r, t._refreshHandler).bind(tt, t._progressHandler).bind(it, t._requestEndHandler).bind("error", t._errorHandler)
  12577. },
  12578. _get: function(t) {
  12579. var r = this,
  12580. u = r._data(),
  12581. i, f;
  12582. if (typeof t == "function")
  12583. for (i = 0, f = u.length; i < f; i++)
  12584. if (t(u[i])) {
  12585. t = i;
  12586. break
  12587. }
  12588. if (typeof t == "number") {
  12589. if (t < 0) return n();
  12590. t = n(r.ul[0].children[t])
  12591. }
  12592. return t && t.nodeType && (t = n(t)), t
  12593. },
  12594. _move: function(n) {
  12595. var t = this,
  12596. e = n.keyCode,
  12597. o = t.ul[0],
  12598. c = t.popup.visible() ? "_select" : "_accept",
  12599. i = t._current,
  12600. h = e === f.DOWN,
  12601. u, s;
  12602. if (e === f.UP || h) {
  12603. if (n.altKey) t.toggle(h);
  12604. else {
  12605. if (u = o.firstChild, !u && !t._accessor() && t._state !== "filter") {
  12606. if (!t._fetch) {
  12607. t.dataSource.one(r, function() {
  12608. t._move(n);
  12609. t._fetch = !1
  12610. });
  12611. t._fetch = !0;
  12612. t._filterSource()
  12613. }
  12614. return n.preventDefault(), !0
  12615. }
  12616. h ? (i && (t.selectedIndex !== -1 || t.value() || i[0] !== u) ? (i = i[0].nextSibling, i || u !== o.lastChild || (i = u)) : i = u, t[c](i)) : (i = i ? i[0].previousSibling : o.lastChild, i || u !== o.lastChild || (i = u), t[c](i))
  12617. }
  12618. n.preventDefault();
  12619. s = !0
  12620. } else e === f.ENTER || e === f.TAB ? (t.popup.visible() && n.preventDefault(), (t._typing || !t.popup.visible() && t.selectedIndex === -1) && (i = null), t._accept(i), s = !0) : e === f.ESC && (t.popup.visible() && n.preventDefault(), t.close(), s = !0);
  12621. return s
  12622. },
  12623. _selectItem: function() {
  12624. var n = this,
  12625. i = n.options,
  12626. u, r;
  12627. u = n._isSelect && !n._initial && !i.value && i.index && !n._bound;
  12628. u || (r = n._selectedValue || i.value || n._accessor());
  12629. r ? n.value(r) : n._bound === t && n.select(i.index)
  12630. },
  12631. _fetchItems: function(n) {
  12632. var t = this,
  12633. i = t.ul[0].firstChild;
  12634. if (t._request) return !0;
  12635. if (!t._fetch && !i) {
  12636. if (t.options.cascadeFrom) return !i;
  12637. t.dataSource.one(r, function() {
  12638. t.value(n);
  12639. t._fetch = !1
  12640. });
  12641. return t._fetch = !0, t.dataSource.fetch(), !0
  12642. }
  12643. },
  12644. _options: function(n, i) {
  12645. var e = this,
  12646. c = e.element,
  12647. l = n.length,
  12648. o = "",
  12649. u, s, h, r, f = 0;
  12650. for (i && (f = 1, o = i); f < l; f++) u = "<option", s = n[f], h = e._text(s), r = e._value(s), r !== t && (r += "", r.indexOf('"') !== -1 && (r = r.replace(st, "&quot;")), u += ' value="' + r + '"'), u += ">", h !== t && (u += ft(h)), u += "<\/option>", o += u;
  12651. c.html(o)
  12652. },
  12653. _reset: function() {
  12654. var t = this,
  12655. i = t.element,
  12656. r = i.attr("form"),
  12657. u = r ? n("#" + r) : i.closest("form");
  12658. u[0] && (t._resetHandler = function() {
  12659. setTimeout(function() {
  12660. t.value(t._initial)
  12661. })
  12662. }, t._form = u.on("reset", t._resetHandler))
  12663. },
  12664. _cascade: function() {
  12665. var t = this,
  12666. u = t.options,
  12667. s = u.cascadeFrom,
  12668. i, f, e, o, h;
  12669. if (s) {
  12670. if (t._selectedValue = u.value || t._accessor(), f = n("#" + s), i = f.data("kendo" + u.name), i || (i = f.data("kendo" + ht[u.name])), !i) return;
  12671. u.autoBind = !1;
  12672. o = u.cascadeFromField || i.options.dataValueField;
  12673. h = function() {
  12674. var n = t._selectedValue || t.value();
  12675. t._userTriggered ? t._clearSelection(i, !0) : n ? (t.value(n), t.dataSource.view()[0] && t.selectedIndex !== -1 || t._clearSelection(i, !0)) : t.select(u.index);
  12676. t.enable();
  12677. t._triggerCascade(t._userTriggered);
  12678. t._userTriggered = !1
  12679. };
  12680. e = function() {
  12681. var e = i.dataItem(),
  12682. n = e ? i._value(e) : null,
  12683. u, f;
  12684. n || n === 0 ? (u = t.dataSource.filter() || {}, b(u, o), f = u.filters || [], f.push({
  12685. field: o,
  12686. operator: "eq",
  12687. value: n
  12688. }), t.dataSource.one(r, h).filter(f)) : (t.enable(!1), t._clearSelection(i), t._triggerCascade(t._userTriggered), t._userTriggered = !1)
  12689. };
  12690. i.bind("cascade", function(n) {
  12691. t._userTriggered = n.userTriggered;
  12692. e()
  12693. });
  12694. i._bound ? e() : i.value() || t.enable(!1)
  12695. }
  12696. }
  12697. })
  12698. }(window.kendo.jQuery);
  12699. kendo_module({
  12700. id: "calendar",
  12701. name: "Calendar",
  12702. category: "web",
  12703. description: "The Calendar widget renders a graphical calendar that supports navigation and selection.",
  12704. depends: ["core"]
  12705. }),
  12706. function(n, t) {
  12707. function li(n, t, i, r) {
  12708. var u = n.getFullYear(),
  12709. e = t.getFullYear(),
  12710. o = i.getFullYear(),
  12711. f;
  12712. return u = u - u % r, f = u + (r - 1), u < e && (u = e), f > o && (f = o), u + "-" + f
  12713. }
  12714. function d(n) {
  12715. for (var t = 0, i, f = n.min, e = n.max, r = n.start, o = n.setter, s = n.build, h = n.cells || 12, c = n.perRow || 4, l = n.content || bi, a = n.empty || ki, u = n.html || '<table tabindex="0" role="grid" class="k-content k-meta-view" cellspacing="0"><tbody><tr role="row">'; t < h; t++) t > 0 && t % c == 0 && (u += '<\/tr><tr role="row">'), i = s(r, t), u += nt(r, f, e) ? l(i) : a(i), o(r, 1);
  12716. return u + "<\/tr><\/tbody><\/table>"
  12717. }
  12718. function st(n, t, i) {
  12719. var f = n.getFullYear(),
  12720. r = t.getFullYear(),
  12721. e = r,
  12722. u = 0;
  12723. return i && (r = r - r % i, e = r - r % i + i - 1), f > e ? u = 1 : f < r && (u = -1), u
  12724. }
  12725. function g() {
  12726. var n = new i;
  12727. return new i(n.getFullYear(), n.getMonth(), n.getDate())
  12728. }
  12729. function v(n, t, r) {
  12730. var u = g();
  12731. return n && (u = new i(+n)), t > u ? u = new i(+t) : r < u && (u = new i(+r)), u
  12732. }
  12733. function nt(n, t, i) {
  12734. return +n >= +t && +n <= +i
  12735. }
  12736. function ai(n, t) {
  12737. return n.slice(t).concat(n.slice(0, t))
  12738. }
  12739. function vi(n, t, r) {
  12740. t = t instanceof i ? t.getFullYear() : n.getFullYear() + r * t;
  12741. n.setFullYear(t)
  12742. }
  12743. function yi(t) {
  12744. n(this).toggleClass(nr, tr.indexOf(t.type) > -1 || t.type == ri)
  12745. }
  12746. function ur(n) {
  12747. n.preventDefault()
  12748. }
  12749. function ht(n) {
  12750. return at(n).calendars.standard
  12751. }
  12752. function ct(n) {
  12753. var i = o[n.start],
  12754. r = o[n.depth],
  12755. u = at(n.culture);
  12756. n.format = wi(n.format || u.calendars.standard.patterns.d);
  12757. isNaN(i) && (i = 0, n.start = a);
  12758. (r === t || r > i) && (n.depth = a);
  12759. n.dates || (n.dates = [])
  12760. }
  12761. function pi(n) {
  12762. di && n.find("*").attr("unselectable", "on")
  12763. }
  12764. function fr(n, t) {
  12765. for (var i = 0, r = t.length; i < r; i++)
  12766. if (n === +t[i]) return !0;
  12767. return !1
  12768. }
  12769. function er(n, t) {
  12770. return n ? n.getFullYear() === t.getFullYear() && n.getMonth() === t.getMonth() && n.getDate() === t.getDate() : !1
  12771. }
  12772. function or(n, t) {
  12773. return n ? n.getFullYear() === t.getFullYear() && n.getMonth() === t.getMonth() : !1
  12774. }
  12775. var r = window.kendo,
  12776. tt = r.support,
  12777. lt = r.ui,
  12778. y = lt.Widget,
  12779. u = r.keys,
  12780. it = r.parseDate,
  12781. p = r.date.adjustDST,
  12782. wi = r._extractFormat,
  12783. l = r.template,
  12784. at = r.getCulture,
  12785. vt = r.support.transitions,
  12786. yt = vt ? vt.css + "transform-origin" : "",
  12787. bi = l('<td#=data.cssClass# role="gridcell"><a tabindex="-1" class="k-link" href="\\#" data-#=data.ns#value="#=data.dateString#">#=data.value#<\/a><\/td>', {
  12788. useWithBlock: !1
  12789. }),
  12790. ki = l('<td role="gridcell">&nbsp;<\/td>', {
  12791. useWithBlock: !1
  12792. }),
  12793. pt = r.support.browser,
  12794. di = pt.msie && pt.version < 9,
  12795. f = ".kendoCalendar",
  12796. s = "click" + f,
  12797. gi = "keydown" + f,
  12798. rt = "id",
  12799. wt = "min",
  12800. bt = "left",
  12801. ut = "slideIn",
  12802. a = "month",
  12803. kt = "century",
  12804. ft = "change",
  12805. dt = "navigate",
  12806. et = "value",
  12807. nr = "k-state-hover",
  12808. h = "k-state-disabled",
  12809. c = "k-state-focused",
  12810. w = "k-other-month",
  12811. gt = ' class="' + w + '"',
  12812. ni = "k-nav-today",
  12813. ti = "td:has(.k-link)",
  12814. ii = "blur" + f,
  12815. ri = "focus",
  12816. ui = ri + f,
  12817. tr = tt.touch ? "touchstart" : "mouseenter",
  12818. fi = tt.touch ? "touchstart" + f : "mouseenter" + f,
  12819. ei = tt.touch ? "touchend" + f + " touchmove" + f : "mouseleave" + f,
  12820. ir = 6e4,
  12821. oi = 864e5,
  12822. b = "_prevArrow",
  12823. k = "_nextArrow",
  12824. ot = "aria-disabled",
  12825. si = "aria-selected",
  12826. hi = n.proxy,
  12827. ci = n.extend,
  12828. i = Date,
  12829. o = {
  12830. month: 0,
  12831. year: 1,
  12832. decade: 2,
  12833. century: 3
  12834. },
  12835. rr = y.extend({
  12836. init: function(t, u) {
  12837. var e = this,
  12838. h, l;
  12839. y.fn.init.call(e, t, u);
  12840. t = e.wrapper = e.element;
  12841. u = e.options;
  12842. u.url = window.unescape(u.url);
  12843. e._templates();
  12844. e._header();
  12845. e._footer(e.footer);
  12846. l = t.addClass("k-widget k-calendar").on(fi + " " + ei, ti, yi).on(gi, "table.k-content", hi(e._move, e)).on(s, ti, function(t) {
  12847. var i = t.currentTarget.firstChild;
  12848. i.href.indexOf("#") != -1 && t.preventDefault();
  12849. e._click(n(i))
  12850. }).on("mouseup" + f, function() {
  12851. e._focusView(e.options.focusOnNav !== !1)
  12852. }).attr(rt);
  12853. l && (e._cellID = l + "_cell_selected");
  12854. ct(u);
  12855. h = it(u.value, u.format, u.culture);
  12856. e._index = o[u.start];
  12857. e._current = new i(+v(h, u.min, u.max));
  12858. e._addClassProxy = function() {
  12859. e._active = !0;
  12860. e._cell.addClass(c)
  12861. };
  12862. e._removeClassProxy = function() {
  12863. e._active = !1;
  12864. e._cell.removeClass(c)
  12865. };
  12866. e.value(h);
  12867. r.notify(e)
  12868. },
  12869. options: {
  12870. name: "Calendar",
  12871. value: null,
  12872. min: new i(1900, 0, 1),
  12873. max: new i(2099, 11, 31),
  12874. dates: [],
  12875. url: "",
  12876. culture: "",
  12877. footer: "",
  12878. format: "",
  12879. month: {},
  12880. start: a,
  12881. depth: a,
  12882. animation: {
  12883. horizontal: {
  12884. effects: ut,
  12885. reverse: !0,
  12886. duration: 500,
  12887. divisor: 2
  12888. },
  12889. vertical: {
  12890. effects: "zoomIn",
  12891. duration: 400
  12892. }
  12893. }
  12894. },
  12895. events: [ft, dt],
  12896. setOptions: function(n) {
  12897. var t = this;
  12898. ct(n);
  12899. y.fn.setOptions.call(t, n);
  12900. t._templates();
  12901. t._footer(t.footer);
  12902. t._index = o[t.options.start];
  12903. t.navigate()
  12904. },
  12905. destroy: function() {
  12906. var n = this,
  12907. t = n._today;
  12908. n.element.off(f);
  12909. n._title.off(f);
  12910. n[b].off(f);
  12911. n[k].off(f);
  12912. r.destroy(n._table);
  12913. t && r.destroy(t.off(f));
  12914. y.fn.destroy.call(n)
  12915. },
  12916. current: function() {
  12917. return this._current
  12918. },
  12919. view: function() {
  12920. return this._view
  12921. },
  12922. focus: function(n) {
  12923. n = n || this._table;
  12924. this._bindTable(n);
  12925. n.focus()
  12926. },
  12927. min: function(n) {
  12928. return this._option(wt, n)
  12929. },
  12930. max: function(n) {
  12931. return this._option("max", n)
  12932. },
  12933. navigateToPast: function() {
  12934. this._navigate(b, -1)
  12935. },
  12936. navigateToFuture: function() {
  12937. this._navigate(k, 1)
  12938. },
  12939. navigateUp: function() {
  12940. var n = this,
  12941. t = n._index;
  12942. n._title.hasClass(h) || n.navigate(n._current, ++t)
  12943. },
  12944. navigateDown: function(n) {
  12945. var t = this,
  12946. i = t._index,
  12947. r = t.options.depth;
  12948. if (n) {
  12949. if (i === o[r]) {
  12950. +t._value != +n && (t.value(n), t.trigger(ft));
  12951. return
  12952. }
  12953. t.navigate(n, --i)
  12954. }
  12955. },
  12956. navigate: function(r, u) {
  12957. u = isNaN(u) ? o[u] : u;
  12958. var f = this,
  12959. l = f.options,
  12960. tt = l.culture,
  12961. p = l.min,
  12962. w = l.max,
  12963. it = f._title,
  12964. y = f._table,
  12965. d = f._oldTable,
  12966. rt = f._value,
  12967. ut = f._current,
  12968. ft = r && +r > +ut,
  12969. et = u !== t && u !== f._index,
  12970. g, a, nt, s;
  12971. r || (r = ut);
  12972. f._current = r = new i(+v(r, p, w));
  12973. u === t ? u = f._index : f._index = u;
  12974. f._view = a = e.views[u];
  12975. nt = a.compare;
  12976. s = u === o[kt];
  12977. it.toggleClass(h, s).attr(ot, s);
  12978. s = nt(r, p) < 1;
  12979. f[b].toggleClass(h, s).attr(ot, s);
  12980. s = nt(r, w) > -1;
  12981. f[k].toggleClass(h, s).attr(ot, s);
  12982. y && d && d.data("animating") && (d.kendoStop(!0, !0), y.kendoStop(!0, !0));
  12983. f._oldTable = y;
  12984. (!y || f._changeView) && (it.html(a.title(r, p, w, tt)), f._table = g = n(a.content(ci({
  12985. min: p,
  12986. max: w,
  12987. date: r,
  12988. url: l.url,
  12989. dates: l.dates,
  12990. format: l.format,
  12991. culture: tt
  12992. }, f[a.name]))), pi(g), f._animate({
  12993. from: y,
  12994. to: g,
  12995. vertical: et,
  12996. future: ft
  12997. }), f._focus(r), f.trigger(dt));
  12998. u === o[l.depth] && rt && f._class("k-state-selected", a.toDateString(rt));
  12999. f._class(c, a.toDateString(r));
  13000. !y && f._cell && f._cell.removeClass(c);
  13001. f._changeView = !0
  13002. },
  13003. value: function(n) {
  13004. var r = this,
  13005. f = r._view,
  13006. u = r.options,
  13007. e = r._view,
  13008. o = u.min,
  13009. s = u.max;
  13010. if (n === t) return r._value;
  13011. n = it(n, u.format, u.culture);
  13012. n !== null && (n = new i(+n), nt(n, o, s) || (n = null));
  13013. r._value = n;
  13014. e && n === null && r._cell ? r._cell.removeClass("k-state-selected") : (r._changeView = !n || f && f.compare(n, r._current) !== 0, r.navigate(n))
  13015. },
  13016. _move: function(t) {
  13017. var f = this,
  13018. y = f.options,
  13019. e = t.keyCode,
  13020. p = f._view,
  13021. w = f._index,
  13022. s = new i(+f._current),
  13023. h = r.support.isRtl(f.wrapper),
  13024. c, o, l, a;
  13025. return t.target === f._table[0] && (f._active = !0), t.ctrlKey ? e == u.RIGHT && !h || e == u.LEFT && h ? (f.navigateToFuture(), o = !0) : e == u.LEFT && !h || e == u.RIGHT && h ? (f.navigateToPast(), o = !0) : e == u.UP ? (f.navigateUp(), o = !0) : e == u.DOWN && (f._click(n(f._cell[0].firstChild)), o = !0) : (e == u.RIGHT && !h || e == u.LEFT && h ? (c = 1, o = !0) : e == u.LEFT && !h || e == u.RIGHT && h ? (c = -1, o = !0) : e == u.UP ? (c = w === 0 ? -7 : -4, o = !0) : e == u.DOWN ? (c = w === 0 ? 7 : 4, o = !0) : e == u.ENTER ? (f._click(n(f._cell[0].firstChild)), o = !0) : e == u.HOME || e == u.END ? (l = e == u.HOME ? "first" : "last", a = p[l](s), s = new i(a.getFullYear(), a.getMonth(), a.getDate(), s.getHours(), s.getMinutes(), s.getSeconds(), s.getMilliseconds()), o = !0) : e == u.PAGEUP ? (o = !0, f.navigateToPast()) : e == u.PAGEDOWN && (o = !0, f.navigateToFuture()), (c || l) && (l || p.setDate(s, c), f._focus(v(s, y.min, y.max)))), o && t.preventDefault(), f._current
  13026. },
  13027. _animate: function(n) {
  13028. var t = this,
  13029. i = n.from,
  13030. r = n.to,
  13031. u = t._active;
  13032. i ? i.parent().data("animating") ? (i.parent().kendoStop(!0, !0).remove(), i.remove(), r.insertAfter(t.element[0].firstChild), t._focusView(u)) : i.is(":visible") && t.options.animation !== !1 ? t[n.vertical ? "_vertical" : "_horizontal"](i, r, n.future) : (r.insertAfter(i), i.remove(), t._focusView(u)) : (r.insertAfter(t.element[0].firstChild), t._bindTable(r))
  13033. },
  13034. _horizontal: function(n, i, r) {
  13035. var u = this,
  13036. o = u._active,
  13037. f = u.options.animation.horizontal,
  13038. s = f.effects,
  13039. e = n.outerWidth();
  13040. s && s.indexOf(ut) != -1 && (n.add(i).css({
  13041. width: e
  13042. }), n.wrap("<div/>"), u._focusView(o, n), n.parent().css({
  13043. position: "relative",
  13044. width: e * 2,
  13045. float: bt,
  13046. "margin-left": r ? 0 : -e
  13047. }), i[r ? "insertAfter" : "insertBefore"](n), ci(f, {
  13048. effects: ut + ":" + (r ? "right" : bt),
  13049. complete: function() {
  13050. n.remove();
  13051. i.unwrap();
  13052. u._focusView(o);
  13053. u._oldTable = t
  13054. }
  13055. }), n.parent().kendoStop(!0, !0).kendoAnimate(f))
  13056. },
  13057. _vertical: function(n, i) {
  13058. var r = this,
  13059. e = r.options.animation.vertical,
  13060. o = e.effects,
  13061. s = r._active,
  13062. f, u;
  13063. o && o.indexOf("zoom") != -1 && (i.css({
  13064. position: "absolute",
  13065. top: n.prev().outerHeight(),
  13066. left: 0
  13067. }).insertBefore(n), yt && (f = r._cellByDate(r._view.toDateString(r._current)), u = f.position(), u = u.left + parseInt(f.width() / 2, 10) + "px " + (u.top + parseInt(f.height() / 2, 10) + "px"), i.css(yt, u)), n.kendoStop(!0, !0).kendoAnimate({
  13068. effects: "fadeOut",
  13069. duration: 600,
  13070. complete: function() {
  13071. n.remove();
  13072. i.css({
  13073. position: "static",
  13074. top: 0,
  13075. left: 0
  13076. });
  13077. r._focusView(s);
  13078. r._oldTable = t
  13079. }
  13080. }), i.kendoStop(!0, !0).kendoAnimate(e))
  13081. },
  13082. _cellByDate: function(t) {
  13083. return this._table.find("td:not(." + w + ")").filter(function() {
  13084. return n(this.firstChild).attr(r.attr(et)) === t
  13085. })
  13086. },
  13087. _class: function(t, i) {
  13088. var u = this,
  13089. e = u._cellID,
  13090. f = u._cell;
  13091. f && f.removeAttr(si).removeAttr("aria-label").removeAttr(rt);
  13092. f = u._table.find("td:not(." + w + ")").removeClass(t).filter(function() {
  13093. return n(this.firstChild).attr(r.attr(et)) === i
  13094. }).attr(si, !0);
  13095. t !== c || u._active || u.options.focusOnNav === !1 || (t = "");
  13096. f.addClass(t);
  13097. f[0] && (u._cell = f);
  13098. e && (f.attr(rt, e), u._table.removeAttr("aria-activedescendant").attr("aria-activedescendant", e))
  13099. },
  13100. _bindTable: function(n) {
  13101. n.on(ui, this._addClassProxy).on(ii, this._removeClassProxy)
  13102. },
  13103. _click: function(n) {
  13104. var u = this,
  13105. f = u.options,
  13106. e = new Date(+u._current),
  13107. t = n.attr(r.attr(et)).split("/");
  13108. t = new i(t[0], t[1], t[2]);
  13109. p(t, 0);
  13110. u._view.setDate(e, t);
  13111. u.navigateDown(v(e, f.min, f.max))
  13112. },
  13113. _focus: function(n) {
  13114. var t = this,
  13115. i = t._view;
  13116. i.compare(n, t._current) !== 0 ? t.navigate(n) : (t._current = n, t._class(c, i.toDateString(n)))
  13117. },
  13118. _focusView: function(n, t) {
  13119. n && this.focus(t)
  13120. },
  13121. _footer: function(t) {
  13122. var i = this,
  13123. f = g(),
  13124. e = i.element,
  13125. u = e.find(".k-footer");
  13126. if (!t) {
  13127. i._toggle(!1);
  13128. u.hide();
  13129. return
  13130. }
  13131. u[0] || (u = n('<div class="k-footer"><a href="#" class="k-link k-nav-today"><\/a><\/div>').appendTo(e));
  13132. i._today = u.show().find(".k-link").html(t(f)).attr("title", r.toString(f, "D", i.options.culture));
  13133. i._toggle()
  13134. },
  13135. _header: function() {
  13136. var n = this,
  13137. i = n.element,
  13138. t;
  13139. i.find(".k-header")[0] || i.html('<div class="k-header"><a href="#" role="button" class="k-link k-nav-prev"><span class="k-icon k-i-arrow-w"><\/span><\/a><a href="#" role="button" aria-live="assertive" aria-atomic="true" class="k-link k-nav-fast"><\/a><a href="#" role="button" class="k-link k-nav-next"><span class="k-icon k-i-arrow-e"><\/span><\/a><\/div>');
  13140. t = i.find(".k-link").on(fi + " " + ei + " " + ui + " " + ii, yi).click(!1);
  13141. n._title = t.eq(1).on(s, function() {
  13142. n._focusView(n.options.focusOnNav !== !1);
  13143. n.navigateUp()
  13144. });
  13145. n[b] = t.eq(0).on(s, function() {
  13146. n._focusView(n.options.focusOnNav !== !1);
  13147. n.navigateToPast()
  13148. });
  13149. n[k] = t.eq(2).on(s, function() {
  13150. n._focusView(n.options.focusOnNav !== !1);
  13151. n.navigateToFuture()
  13152. })
  13153. },
  13154. _navigate: function(n, t) {
  13155. var r = this,
  13156. f = r._index + 1,
  13157. u = new i(+r._current);
  13158. n = r[n];
  13159. n.hasClass(h) || (f > 3 ? u.setFullYear(u.getFullYear() + 100 * t) : e.views[f].setDate(u, t), r.navigate(u))
  13160. },
  13161. _option: function(n, r) {
  13162. var u = this,
  13163. f = u.options,
  13164. e = u._value || u._current,
  13165. o;
  13166. if (r === t) return f[n];
  13167. (r = it(r, f.format, f.culture), r) && (f[n] = new i(+r), o = n === wt ? r > e : e > r, (o || or(e, r)) && (o && (u._value = null), u._changeView = !0), u._changeView || (u._changeView = !!(f.month.content || f.month.empty)), u.navigate(u._value), u._toggle())
  13168. },
  13169. _toggle: function(n) {
  13170. var i = this,
  13171. u = i.options,
  13172. r = i._today;
  13173. if (n === t && (n = nt(g(), u.min, u.max)), r)
  13174. if (r.off(s), n) r.addClass(ni).removeClass(h).on(s, hi(i._todayClick, i));
  13175. else r.removeClass(ni).addClass(h).on(s, ur)
  13176. },
  13177. _todayClick: function(n) {
  13178. var t = this,
  13179. r = o[t.options.depth],
  13180. i = g();
  13181. n.preventDefault();
  13182. t._view.compare(t._current, i) === 0 && t._index == r && (t._changeView = !1);
  13183. t._value = i;
  13184. t.navigate(i, r);
  13185. t.trigger(ft)
  13186. },
  13187. _templates: function() {
  13188. var n = this,
  13189. t = n.options,
  13190. i = t.footer,
  13191. u = t.month,
  13192. f = u.content,
  13193. e = u.empty;
  13194. n.month = {
  13195. content: l('<td#=data.cssClass# role="gridcell"><a tabindex="-1" class="k-link#=data.linkClass#" href="#=data.url#" ' + r.attr("value") + '="#=data.dateString#" title="#=data.title#">' + (f || "#=data.value#") + "<\/a><\/td>", {
  13196. useWithBlock: !!f
  13197. }),
  13198. empty: l('<td role="gridcell">' + (e || "&nbsp;") + "<\/td>", {
  13199. useWithBlock: !!e
  13200. })
  13201. };
  13202. n.footer = i !== !1 ? l(i || '#= kendo.toString(data,"D","' + t.culture + '") #', {
  13203. useWithBlock: !1
  13204. }) : null
  13205. }
  13206. }),
  13207. e;
  13208. lt.plugin(rr);
  13209. e = {
  13210. firstDayOfMonth: function(n) {
  13211. return new i(n.getFullYear(), n.getMonth(), 1)
  13212. },
  13213. firstVisibleDay: function(n, t) {
  13214. t = t || r.culture().calendar;
  13215. for (var f = t.firstDay, u = new i(n.getFullYear(), n.getMonth(), 0, n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds()); u.getDay() != f;) e.setTime(u, -1 * oi);
  13216. return u
  13217. },
  13218. setTime: function(n, t) {
  13219. var u = n.getTimezoneOffset(),
  13220. r = new i(n.getTime() + t),
  13221. f = r.getTimezoneOffset() - u;
  13222. n.setTime(r.getTime() + f * ir)
  13223. },
  13224. views: [{
  13225. name: a,
  13226. title: function(n, t, i, r) {
  13227. return ht(r).months.names[n.getMonth()] + " " + n.getFullYear()
  13228. },
  13229. content: function(n) {
  13230. for (var u = this, f = 0, o = n.min, s = n.max, h = n.date, c = n.dates, nt = n.format, l = n.culture, y = n.url, tt = y && c[0], a = ht(l), b = a.firstDay, k = a.days, it = ai(k.names, b), rt = ai(k.namesShort, b), v = e.firstVisibleDay(h, a), ut = u.first(h), ft = u.last(h), et = u.toDateString, t = new i, g = '<table tabindex="0" role="grid" class="k-content" cellspacing="0"><thead><tr role="row">'; f < 7; f++) g += '<th scope="col" title="' + it[f] + '">' + rt[f] + "<\/th>";
  13231. return t = new i(t.getFullYear(), t.getMonth(), t.getDate()), p(t, 0), t = +t, d({
  13232. cells: 42,
  13233. perRow: 7,
  13234. html: g += '<\/tr><\/thead><tbody><tr role="row">',
  13235. start: new i(v.getFullYear(), v.getMonth(), v.getDate()),
  13236. min: new i(o.getFullYear(), o.getMonth(), o.getDate()),
  13237. max: new i(s.getFullYear(), s.getMonth(), s.getDate()),
  13238. content: n.content,
  13239. empty: n.empty,
  13240. setter: u.setDate,
  13241. build: function(n) {
  13242. var i = [],
  13243. u = n.getDay(),
  13244. f = "",
  13245. e = "#";
  13246. return (n < ut || n > ft) && i.push(w), +n === t && i.push("k-today"), (u === 0 || u === 6) && i.push("k-weekend"), tt && fr(+n, c) && (e = y.replace("{0}", r.toString(n, nt, l)), f = " k-action-link"), {
  13247. date: n,
  13248. dates: c,
  13249. ns: r.ns,
  13250. title: r.toString(n, "D", l),
  13251. value: n.getDate(),
  13252. dateString: et(n),
  13253. cssClass: i[0] ? ' class="' + i.join(" ") + '"' : "",
  13254. linkClass: f,
  13255. url: e
  13256. }
  13257. }
  13258. })
  13259. },
  13260. first: function(n) {
  13261. return e.firstDayOfMonth(n)
  13262. },
  13263. last: function(n) {
  13264. var t = new i(n.getFullYear(), n.getMonth() + 1, 0),
  13265. r = e.firstDayOfMonth(n),
  13266. u = Math.abs(t.getTimezoneOffset() - r.getTimezoneOffset());
  13267. return u && t.setHours(r.getHours() + u / 60), t
  13268. },
  13269. compare: function(n, t) {
  13270. var i = n.getMonth(),
  13271. r = n.getFullYear(),
  13272. u = t.getMonth(),
  13273. f = t.getFullYear();
  13274. return r > f ? 1 : r < f ? -1 : i == u ? 0 : i > u ? 1 : -1
  13275. },
  13276. setDate: function(n, t) {
  13277. var r = n.getHours();
  13278. t instanceof i ? n.setFullYear(t.getFullYear(), t.getMonth(), t.getDate()) : e.setTime(n, t * oi);
  13279. p(n, r)
  13280. },
  13281. toDateString: function(n) {
  13282. return n.getFullYear() + "/" + n.getMonth() + "/" + n.getDate()
  13283. }
  13284. }, {
  13285. name: "year",
  13286. title: function(n) {
  13287. return n.getFullYear()
  13288. },
  13289. content: function(n) {
  13290. var f = ht(n.culture).months.namesAbbr,
  13291. e = this.toDateString,
  13292. t = n.min,
  13293. u = n.max;
  13294. return d({
  13295. min: new i(t.getFullYear(), t.getMonth(), 1),
  13296. max: new i(u.getFullYear(), u.getMonth(), 1),
  13297. start: new i(n.date.getFullYear(), 0, 1),
  13298. setter: this.setDate,
  13299. build: function(n) {
  13300. return {
  13301. value: f[n.getMonth()],
  13302. ns: r.ns,
  13303. dateString: e(n),
  13304. cssClass: ""
  13305. }
  13306. }
  13307. })
  13308. },
  13309. first: function(n) {
  13310. return new i(n.getFullYear(), 0, n.getDate())
  13311. },
  13312. last: function(n) {
  13313. return new i(n.getFullYear(), 11, n.getDate())
  13314. },
  13315. compare: function(n, t) {
  13316. return st(n, t)
  13317. },
  13318. setDate: function(n, t) {
  13319. var r, u = n.getHours();
  13320. t instanceof i ? (r = t.getMonth(), n.setFullYear(t.getFullYear(), r, n.getDate()), r !== n.getMonth() && n.setDate(0)) : (r = n.getMonth() + t, n.setMonth(r), r > 11 && (r -= 12), r > 0 && n.getMonth() != r && n.setDate(0));
  13321. p(n, u)
  13322. },
  13323. toDateString: function(n) {
  13324. return n.getFullYear() + "/" + n.getMonth() + "/1"
  13325. }
  13326. }, {
  13327. name: "decade",
  13328. title: function(n, t, i) {
  13329. return li(n, t, i, 10)
  13330. },
  13331. content: function(n) {
  13332. var t = n.date.getFullYear(),
  13333. u = this.toDateString;
  13334. return d({
  13335. start: new i(t - t % 10 - 1, 0, 1),
  13336. min: new i(n.min.getFullYear(), 0, 1),
  13337. max: new i(n.max.getFullYear(), 0, 1),
  13338. setter: this.setDate,
  13339. build: function(n, t) {
  13340. return {
  13341. value: n.getFullYear(),
  13342. ns: r.ns,
  13343. dateString: u(n),
  13344. cssClass: t === 0 || t == 11 ? gt : ""
  13345. }
  13346. }
  13347. })
  13348. },
  13349. first: function(n) {
  13350. var t = n.getFullYear();
  13351. return new i(t - t % 10, n.getMonth(), n.getDate())
  13352. },
  13353. last: function(n) {
  13354. var t = n.getFullYear();
  13355. return new i(t - t % 10 + 9, n.getMonth(), n.getDate())
  13356. },
  13357. compare: function(n, t) {
  13358. return st(n, t, 10)
  13359. },
  13360. setDate: function(n, t) {
  13361. vi(n, t, 1)
  13362. },
  13363. toDateString: function(n) {
  13364. return n.getFullYear() + "/0/1"
  13365. }
  13366. }, {
  13367. name: kt,
  13368. title: function(n, t, i) {
  13369. return li(n, t, i, 100)
  13370. },
  13371. content: function(n) {
  13372. var o = n.date.getFullYear(),
  13373. f = n.min.getFullYear(),
  13374. e = n.max.getFullYear(),
  13375. s = this.toDateString,
  13376. t = f,
  13377. u = e;
  13378. return t = t - t % 10, u = u - u % 10, u - t < 10 && (u = t + 9), d({
  13379. start: new i(o - o % 100 - 10, 0, 1),
  13380. min: new i(t, 0, 1),
  13381. max: new i(u, 0, 1),
  13382. setter: this.setDate,
  13383. build: function(n, t) {
  13384. var i = n.getFullYear(),
  13385. u = i + 9;
  13386. return i < f && (i = f), u > e && (u = e), {
  13387. ns: r.ns,
  13388. value: i + " - " + u,
  13389. dateString: s(n),
  13390. cssClass: t === 0 || t == 11 ? gt : ""
  13391. }
  13392. }
  13393. })
  13394. },
  13395. first: function(n) {
  13396. var t = n.getFullYear();
  13397. return new i(t - t % 100, n.getMonth(), n.getDate())
  13398. },
  13399. last: function(n) {
  13400. var t = n.getFullYear();
  13401. return new i(t - t % 100 + 99, n.getMonth(), n.getDate())
  13402. },
  13403. compare: function(n, t) {
  13404. return st(n, t, 100)
  13405. },
  13406. setDate: function(n, t) {
  13407. vi(n, t, 10)
  13408. },
  13409. toDateString: function(n) {
  13410. var t = n.getFullYear();
  13411. return t - t % 10 + "/0/1"
  13412. }
  13413. }]
  13414. };
  13415. e.isEqualDatePart = er;
  13416. e.makeUnselectable = pi;
  13417. e.restrictValue = v;
  13418. e.isInRange = nt;
  13419. e.normalize = ct;
  13420. e.viewsEnum = o;
  13421. r.calendar = e
  13422. }(window.kendo.jQuery);
  13423. kendo_module({
  13424. id: "datepicker",
  13425. name: "DatePicker",
  13426. category: "web",
  13427. description: "The DatePicker widget allows the user to select a date from a calendar or by direct input.",
  13428. depends: ["calendar", "popup"]
  13429. }),
  13430. function(n, t) {
  13431. function d(t) {
  13432. var i = t.parseFormats,
  13433. r = t.format;
  13434. o.normalize(t);
  13435. i = n.isArray(i) ? i : [i];
  13436. n.inArray(r, i) === -1 && i.splice(0, 0, t.format);
  13437. t.parseFormats = i
  13438. }
  13439. function pt(n) {
  13440. n.preventDefault()
  13441. }
  13442. var i = window.kendo,
  13443. f = i.ui,
  13444. e = f.Widget,
  13445. c = i.parseDate,
  13446. u = i.keys,
  13447. bt = i.template,
  13448. kt = i._activeElement,
  13449. g = "<div />",
  13450. nt = "<span />",
  13451. r = ".kendoDatePicker",
  13452. tt = "click" + r,
  13453. l = "open",
  13454. a = "close",
  13455. v = "change",
  13456. it = "disabled",
  13457. rt = "readonly",
  13458. y = "k-state-default",
  13459. ut = "k-state-focused",
  13460. ft = "k-state-selected",
  13461. p = "k-state-disabled",
  13462. dt = "k-state-hover",
  13463. ii = "keydown" + r,
  13464. gt = "mouseenter" + r + " mouseleave" + r,
  13465. et = "mousedown" + r,
  13466. w = "id",
  13467. ot = "min",
  13468. st = "max",
  13469. ht = "month",
  13470. ct = "aria-disabled",
  13471. lt = "aria-expanded",
  13472. b = "aria-hidden",
  13473. at = "aria-readonly",
  13474. o = i.calendar,
  13475. ni = o.isInRange,
  13476. vt = o.restrictValue,
  13477. ti = o.isEqualDatePart,
  13478. k = n.extend,
  13479. s = n.proxy,
  13480. yt = Date,
  13481. h = function(t) {
  13482. var r = this,
  13483. u, o = document.body,
  13484. e = n(g).attr(b, "true").addClass("k-calendar-container").appendTo(o);
  13485. r.options = t = t || {};
  13486. u = t.id;
  13487. u && (u += "_dateview", e.attr(w, u), r._dateViewID = u);
  13488. r.popup = new f.Popup(e, k(t.popup, t, {
  13489. name: "Popup",
  13490. isRtl: i.support.isRtl(t.anchor)
  13491. }));
  13492. r.div = e;
  13493. r.value(t.value)
  13494. },
  13495. wt;
  13496. h.prototype = {
  13497. _calendar: function() {
  13498. var t = this,
  13499. r = t.calendar,
  13500. u = t.options,
  13501. e;
  13502. r || (e = n(g).attr(w, i.guid()).appendTo(t.popup.element).on(et, pt).on(tt, "td:has(.k-link)", s(t._click, t)), t.calendar = r = new f.Calendar(e), t._setOptions(u), i.calendar.makeUnselectable(r.element), r.navigate(t._value || t._current, u.start), t.value(t._value))
  13503. },
  13504. _setOptions: function(n) {
  13505. this.calendar.setOptions({
  13506. focusOnNav: !1,
  13507. change: n.change,
  13508. culture: n.culture,
  13509. dates: n.dates,
  13510. depth: n.depth,
  13511. footer: n.footer,
  13512. format: n.format,
  13513. max: n.max,
  13514. min: n.min,
  13515. month: n.month,
  13516. start: n.start
  13517. })
  13518. },
  13519. setOptions: function(n) {
  13520. var t = this.options;
  13521. this.options = k(t, n, {
  13522. change: t.change,
  13523. close: t.close,
  13524. open: t.open
  13525. });
  13526. this.calendar && this._setOptions(this.options)
  13527. },
  13528. destroy: function() {
  13529. this.popup.destroy()
  13530. },
  13531. open: function() {
  13532. var n = this;
  13533. n._calendar();
  13534. n.popup.open()
  13535. },
  13536. close: function() {
  13537. this.popup.close()
  13538. },
  13539. min: function(n) {
  13540. this._option(ot, n)
  13541. },
  13542. max: function(n) {
  13543. this._option(st, n)
  13544. },
  13545. toggle: function() {
  13546. var n = this;
  13547. n[n.popup.visible() ? a : l]()
  13548. },
  13549. move: function(n) {
  13550. var t = this,
  13551. i = n.keyCode,
  13552. r = t.calendar,
  13553. f = n.ctrlKey && i == u.DOWN || i == u.ENTER;
  13554. if (i == u.ESC) {
  13555. t.close();
  13556. return
  13557. }
  13558. if (n.altKey) {
  13559. i == u.DOWN ? (t.open(), n.preventDefault()) : i == u.UP && (t.close(), n.preventDefault());
  13560. return
  13561. }
  13562. if (t.popup.visible()) {
  13563. if (f && r._cell.hasClass(ft)) {
  13564. t.close();
  13565. n.preventDefault();
  13566. return
  13567. }
  13568. t._current = r._move(n)
  13569. }
  13570. },
  13571. current: function(n) {
  13572. this._current = n;
  13573. this.calendar._focus(n)
  13574. },
  13575. value: function(n) {
  13576. var t = this,
  13577. i = t.calendar,
  13578. r = t.options;
  13579. t._value = n;
  13580. t._current = new yt(+vt(n, r.min, r.max));
  13581. i && i.value(n)
  13582. },
  13583. _click: function(n) {
  13584. n.currentTarget.className.indexOf(ft) !== -1 && this.close()
  13585. },
  13586. _option: function(n, t) {
  13587. var i = this,
  13588. r = i.calendar;
  13589. i.options[n] = t;
  13590. r && r[n](t)
  13591. }
  13592. };
  13593. h.normalize = d;
  13594. i.DateView = h;
  13595. wt = e.extend({
  13596. init: function(n, t) {
  13597. var r = this,
  13598. f, u;
  13599. e.fn.init.call(r, n, t);
  13600. n = r.element;
  13601. t = r.options;
  13602. d(t);
  13603. r._wrapper();
  13604. r.dateView = new h(k({}, t, {
  13605. id: n.attr(w),
  13606. anchor: r.wrapper,
  13607. change: function() {
  13608. r._change(this.value());
  13609. r.close()
  13610. },
  13611. close: function(t) {
  13612. r.trigger(a) ? t.preventDefault() : (n.attr(lt, !1), u.attr(b, !0))
  13613. },
  13614. open: function(t) {
  13615. var f = r.options,
  13616. i;
  13617. r.trigger(l) ? t.preventDefault() : (r.element.val() !== r._oldText && (i = c(n.val(), f.parseFormats, f.culture), r.dateView[i ? "current" : "value"](i)), n.attr(lt, !0), u.attr(b, !1), r._updateARIA(i))
  13618. }
  13619. }));
  13620. u = r.dateView.div;
  13621. r._icon();
  13622. try {
  13623. n[0].setAttribute("type", "text")
  13624. } catch (o) {
  13625. n[0].type = "text"
  13626. }
  13627. n.addClass("k-input").attr({
  13628. role: "combobox",
  13629. "aria-expanded": !1,
  13630. "aria-owns": r.dateView._dateViewID
  13631. });
  13632. r._reset();
  13633. r._template();
  13634. f = n.is("[disabled]");
  13635. f ? r.enable(!1) : r.readonly(n.is("[readonly]"));
  13636. r._old = r._update(t.value || r.element.val());
  13637. r._oldText = n.val();
  13638. i.notify(r)
  13639. },
  13640. events: [l, a, v],
  13641. options: {
  13642. name: "DatePicker",
  13643. value: null,
  13644. footer: "",
  13645. format: "",
  13646. culture: "",
  13647. parseFormats: [],
  13648. min: new Date(1900, 0, 1),
  13649. max: new Date(2099, 11, 31),
  13650. start: ht,
  13651. depth: ht,
  13652. animation: {},
  13653. month: {},
  13654. dates: [],
  13655. ARIATemplate: 'Current focused date is #=kendo.toString(data.current, "D")#'
  13656. },
  13657. setOptions: function(n) {
  13658. var t = this,
  13659. r = t._value;
  13660. e.fn.setOptions.call(t, n);
  13661. n = t.options;
  13662. d(n);
  13663. t.dateView.setOptions(n);
  13664. r && (t.element.val(i.toString(r, n.format, n.culture)), t._updateARIA(r))
  13665. },
  13666. _editable: function(n) {
  13667. var t = this,
  13668. o = t._dateIcon.off(r),
  13669. f = t.element.off(r),
  13670. e = t._inputWrapper.off(r),
  13671. u = n.readonly,
  13672. i = n.disable;
  13673. if (u || i) e.addClass(i ? p : y).removeClass(i ? y : p), f.attr(it, i).attr(rt, u).attr(ct, i).attr(at, u);
  13674. else {
  13675. e.addClass(y).removeClass(p).on(gt, t._toggleHover);
  13676. f.removeAttr(it).removeAttr(rt).attr(ct, !1).attr(at, !1).on("keydown" + r, s(t._keydown, t)).on("blur" + r, s(t._blur, t)).on("focus" + r, function() {
  13677. t._inputWrapper.addClass(ut)
  13678. });
  13679. o.on(tt, s(t._click, t)).on(et, pt)
  13680. }
  13681. },
  13682. readonly: function(n) {
  13683. this._editable({
  13684. readonly: n === t ? !0 : n,
  13685. disable: !1
  13686. })
  13687. },
  13688. enable: function(n) {
  13689. this._editable({
  13690. readonly: !1,
  13691. disable: !(n = n === t ? !0 : n)
  13692. })
  13693. },
  13694. destroy: function() {
  13695. var n = this;
  13696. e.fn.destroy.call(n);
  13697. n.dateView.destroy();
  13698. n.element.off(r);
  13699. n._dateIcon.off(r);
  13700. n._inputWrapper.off(r);
  13701. n._form && n._form.off("reset", n._resetHandler)
  13702. },
  13703. open: function() {
  13704. this.dateView.open()
  13705. },
  13706. close: function() {
  13707. this.dateView.close()
  13708. },
  13709. min: function(n) {
  13710. return this._option(ot, n)
  13711. },
  13712. max: function(n) {
  13713. return this._option(st, n)
  13714. },
  13715. value: function(n) {
  13716. var i = this;
  13717. if (n === t) return i._value;
  13718. i._old = i._update(n);
  13719. i._old === null && i.element.val("");
  13720. i._oldText = i.element.val()
  13721. },
  13722. _toggleHover: function(t) {
  13723. n(t.currentTarget).toggleClass(dt, t.type === "mouseenter")
  13724. },
  13725. _blur: function() {
  13726. var n = this,
  13727. t = n.element.val();
  13728. n.close();
  13729. t !== n._oldText && n._change(t);
  13730. n._inputWrapper.removeClass(ut)
  13731. },
  13732. _click: function() {
  13733. var n = this,
  13734. t = n.element;
  13735. n.dateView.toggle();
  13736. i.support.touch || t[0] === kt() || t.focus()
  13737. },
  13738. _change: function(n) {
  13739. var t = this;
  13740. n = t._update(n); + t._old != +n && (t._old = n, t._oldText = t.element.val(), t.trigger(v), t.element.trigger(v))
  13741. },
  13742. _keydown: function(n) {
  13743. var t = this,
  13744. i = t.dateView,
  13745. r = t.element.val();
  13746. i.popup.visible() || n.keyCode != u.ENTER || r === t._oldText ? (i.move(n), t._updateARIA(i._current)) : t._change(r)
  13747. },
  13748. _icon: function() {
  13749. var i = this,
  13750. r = i.element,
  13751. t;
  13752. t = r.next("span.k-select");
  13753. t[0] || (t = n('<span unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-calendar">select<\/span><\/span>').insertAfter(r));
  13754. i._dateIcon = t.attr({
  13755. role: "button",
  13756. "aria-controls": i.dateView._dateViewID
  13757. })
  13758. },
  13759. _option: function(n, i) {
  13760. var u = this,
  13761. r = u.options;
  13762. if (i === t) return r[n];
  13763. (i = c(i, r.parseFormats, r.culture), i) && (r[n] = new yt(+i), u.dateView[n](i))
  13764. },
  13765. _update: function(n) {
  13766. var u = this,
  13767. r = u.options,
  13768. f = r.min,
  13769. o = r.max,
  13770. t = c(n, r.parseFormats, r.culture),
  13771. e;
  13772. return +t == +u._value ? (e = i.toString(t, r.format, r.culture), e !== n && u.element.val(t === null ? n : e), t) : (t !== null && ti(t, f) ? t = vt(t, f, o) : ni(t, f, o) || (t = null), u._value = t, u.dateView.value(t), u.element.val(t ? i.toString(t, r.format, r.culture) : n), u._updateARIA(t), t)
  13773. },
  13774. _wrapper: function() {
  13775. var r = this,
  13776. i = r.element,
  13777. t;
  13778. t = i.parents(".k-datepicker");
  13779. t[0] || (t = i.wrap(nt).parent().addClass("k-picker-wrap k-state-default"), t = t.wrap(nt).parent());
  13780. t[0].style.cssText = i[0].style.cssText;
  13781. i.css({
  13782. width: "100%",
  13783. height: i[0].style.height
  13784. });
  13785. r.wrapper = t.addClass("k-widget k-datepicker k-header").addClass(i[0].className);
  13786. r._inputWrapper = n(t[0].firstChild)
  13787. },
  13788. _reset: function() {
  13789. var t = this,
  13790. i = t.element,
  13791. r = i.attr("form"),
  13792. u = r ? n("#" + r) : i.closest("form");
  13793. u[0] && (t._resetHandler = function() {
  13794. t.value(i[0].defaultValue)
  13795. }, t._form = u.on("reset", t._resetHandler))
  13796. },
  13797. _template: function() {
  13798. this._ariaTemplate = bt(this.options.ARIATemplate)
  13799. },
  13800. _updateARIA: function(n) {
  13801. var i, t = this,
  13802. r = t.dateView.calendar;
  13803. t.element.removeAttr("aria-activedescendant");
  13804. r && (i = r._cell, i.attr("aria-label", t._ariaTemplate({
  13805. current: n || r.current()
  13806. })), t.element.attr("aria-activedescendant", i.attr("id")))
  13807. }
  13808. });
  13809. f.plugin(wt)
  13810. }(window.kendo.jQuery);
  13811. kendo_module({
  13812. id: "dropdownlist",
  13813. name: "DropDownList",
  13814. category: "web",
  13815. description: "The DropDownList widget displays a list of values and allows the selection of a single value from the list.",
  13816. depends: ["list"],
  13817. features: [{
  13818. id: "mobile-scroller",
  13819. name: "Mobile scroller",
  13820. description: "Support for kinetic scrolling in mobile device",
  13821. depends: ["mobile.scroller"]
  13822. }]
  13823. }),
  13824. function(n, t) {
  13825. function o(n, t, i) {
  13826. for (var u = 0, f = t.length - 1, r; u < f; ++u) r = t[u], r in n || (n[r] = {}), n = n[r];
  13827. n[t[f]] = i
  13828. }
  13829. var r = window.kendo,
  13830. s = r.ui,
  13831. u = s.Select,
  13832. f = r.support.mobileOS,
  13833. i = ".kendoDropDownList",
  13834. a = "disabled",
  13835. v = "readonly",
  13836. y = "change",
  13837. p = "k-state-focused",
  13838. h = "k-state-default",
  13839. c = "k-state-disabled",
  13840. w = "aria-disabled",
  13841. b = "aria-readonly",
  13842. l = "k-state-selected",
  13843. k = "mouseenter" + i + " mouseleave" + i,
  13844. e = "tabindex",
  13845. d = n.proxy,
  13846. g = u.extend({
  13847. init: function(f, o) {
  13848. var s = this,
  13849. a = o && o.index,
  13850. c, l, h;
  13851. s.ns = i;
  13852. o = n.isArray(o) ? {
  13853. dataSource: o
  13854. } : o;
  13855. u.fn.init.call(s, f, o);
  13856. s._focusHandler = function() {
  13857. s.wrapper.focus()
  13858. };
  13859. o = s.options;
  13860. f = s.element.on("focus" + i, s._focusHandler);
  13861. this._inputTemplate();
  13862. s._reset();
  13863. s._word = "";
  13864. s._wrapper();
  13865. s._tabindex();
  13866. s.wrapper.data(e, s.wrapper.attr(e));
  13867. s._aria();
  13868. s._span();
  13869. s._popup();
  13870. s._mobile();
  13871. s._dataSource();
  13872. s._ignoreCase();
  13873. s._enable();
  13874. s._oldIndex = s.selectedIndex = -1;
  13875. s._cascade();
  13876. a !== t && (o.index = a);
  13877. o.autoBind ? s.dataSource.fetch() : s.selectedIndex === -1 && (h = o.text || "", h || (c = o.optionLabel, l = c && o.index === 0, s._isSelect ? h = l ? c : f.children(":selected").text() : !f[0].value && l && (h = c)), s._textAccessor(h));
  13878. r.notify(s)
  13879. },
  13880. options: {
  13881. name: "DropDownList",
  13882. enabled: !0,
  13883. autoBind: !0,
  13884. index: 0,
  13885. text: null,
  13886. value: null,
  13887. template: "",
  13888. valueTemplate: "",
  13889. delay: 500,
  13890. height: 200,
  13891. dataTextField: "",
  13892. dataValueField: "",
  13893. optionLabel: "",
  13894. cascadeFrom: "",
  13895. cascadeFromField: "",
  13896. ignoreCase: !0,
  13897. animation: {}
  13898. },
  13899. events: ["open", "close", y, "select", "dataBinding", "dataBound", "cascade"],
  13900. setOptions: function(n) {
  13901. u.fn.setOptions.call(this, n);
  13902. this._template();
  13903. this._inputTemplate();
  13904. this._accessors();
  13905. this._aria()
  13906. },
  13907. destroy: function() {
  13908. var n = this;
  13909. n.wrapper.off(i);
  13910. n.element.off(i);
  13911. n._inputWrapper.off(i);
  13912. u.fn.destroy.call(n)
  13913. },
  13914. open: function() {
  13915. var n = this;
  13916. n.ul[0].firstChild ? (n.popup.open(), n._scroll(n._current)) : (n._open = !0, n._request || n.dataSource.fetch())
  13917. },
  13918. toggle: function(n) {
  13919. this._toggle(n)
  13920. },
  13921. refresh: function() {
  13922. var n = this,
  13923. u = n._data(),
  13924. t = u.length,
  13925. i = n.options.optionLabel,
  13926. e = n.element[0],
  13927. f;
  13928. n.trigger("dataBinding");
  13929. n._current && n.current(null);
  13930. n.ul[0].innerHTML = r.render(n.template, u);
  13931. n._height(t);
  13932. n.popup.visible() && n.popup._position();
  13933. n._isSelect && (f = e.selectedIndex, i && t && (i = '<option value="">' + n._optionLabelText(i) + "<\/option>"), n._options(u, i), e.selectedIndex = f === -1 ? 0 : f);
  13934. n._open && (n._open = !1, n.toggle(!!t));
  13935. n._hideBusy();
  13936. n._makeUnselectable();
  13937. n._fetch || (t ? n._selectItem() : n._textAccessor() !== i && (n.element.val(""), n._textAccessor("")));
  13938. n._bound = !!t;
  13939. n.trigger("dataBound")
  13940. },
  13941. search: function(n) {
  13942. if (n) {
  13943. var i = this,
  13944. r = i.options.ignoreCase;
  13945. r && (n = n.toLowerCase());
  13946. i._select(function(u) {
  13947. var f = i._text(u);
  13948. if (f !== t) return f = f + "", r && (f = f.toLowerCase()), f.indexOf(n) === 0
  13949. })
  13950. }
  13951. },
  13952. text: function(n) {
  13953. var i = this,
  13954. r, u, f = i.options.ignoreCase;
  13955. if (n = n === null ? "" : n, n !== t) typeof n == "string" && (u = f ? n.toLowerCase() : n, r = i._select(function(n) {
  13956. return n = i._text(n), f && (n = (n + "").toLowerCase()), n === u
  13957. }), r && (n = r)), i._textAccessor(n);
  13958. else return i._textAccessor()
  13959. },
  13960. value: function(n) {
  13961. var i = this,
  13962. r, u;
  13963. if (n !== t) {
  13964. if (n !== null && (n = n.toString()), i._selectedValue = n, u = n || i.options.optionLabel && !i.element[0].disabled && n === "", u && i._fetchItems(n)) return;
  13965. r = i._index(n);
  13966. i.select(r > -1 ? r : 0)
  13967. } else return i._accessor()
  13968. },
  13969. _editable: function(n) {
  13970. var t = this,
  13971. s = t.element,
  13972. o = n.disable,
  13973. l = n.readonly,
  13974. u = t.wrapper.off(i),
  13975. f = t._inputWrapper.off(k),
  13976. y = function() {
  13977. f.addClass(p);
  13978. t._blured = !1
  13979. },
  13980. g = function() {
  13981. if (!t._blured) {
  13982. t._triggerCascade();
  13983. var n = window.self !== window.top;
  13984. r.support.mobileOS.ios && n ? t._change() : t._blur();
  13985. f.removeClass(p);
  13986. t._blured = !0;
  13987. s.blur()
  13988. }
  13989. };
  13990. if (l || o) {
  13991. if (o) u.removeAttr(e), f.addClass(c).removeClass(h);
  13992. else {
  13993. f.addClass(h).removeClass(c);
  13994. u.on("focusin" + i, y).on("focusout" + i, g)
  13995. }
  13996. s.attr(a, o).attr(v, l);
  13997. u.attr(w, o).attr(b, l)
  13998. } else {
  13999. s.removeAttr(a).removeAttr(v);
  14000. f.addClass(h).removeClass(c).on(k, t._toggleHover);
  14001. u.attr(e, u.data(e)).attr(w, !1).attr(b, !1).on("click" + i, function(n) {
  14002. t._blured = !1;
  14003. n.preventDefault();
  14004. t.toggle()
  14005. }).on("keydown" + i, d(t._keydown, t)).on("keypress" + i, d(t._keypress, t)).on("focusin" + i, y).on("focusout" + i, g)
  14006. }
  14007. },
  14008. _accept: function(n) {
  14009. this._focus(n)
  14010. },
  14011. _optionLabelText: function() {
  14012. var t = this.options,
  14013. i = t.dataTextField,
  14014. n = t.optionLabel;
  14015. return n && i && typeof n == "object" ? this._text(n) : n
  14016. },
  14017. _data: function() {
  14018. var h = this,
  14019. f = h.options,
  14020. t = f.optionLabel,
  14021. i = f.dataTextField,
  14022. e = f.dataValueField,
  14023. u = h.dataSource.view(),
  14024. c = u.length,
  14025. n = t,
  14026. s = 0;
  14027. if (t && c) {
  14028. for (typeof t == "object" ? n = t : i && (n = {}, i = i.split("."), e = e.split("."), o(n, e, ""), o(n, i, t)), n = new r.data.ObservableArray([n]); s < c; s++) n.push(u[s]);
  14029. u = n
  14030. }
  14031. return u
  14032. },
  14033. _selectItem: function() {
  14034. u.fn._selectItem.call(this);
  14035. this.current() || this.select(0)
  14036. },
  14037. _keydown: function(n) {
  14038. var u = this,
  14039. t = n.keyCode,
  14040. i = r.keys,
  14041. f = u.ul[0];
  14042. t === i.LEFT ? t = i.UP : t === i.RIGHT && (t = i.DOWN);
  14043. n.keyCode = t;
  14044. u._move(n);
  14045. t === i.HOME ? (n.preventDefault(), u._select(f.firstChild)) : t === i.END && (n.preventDefault(), u._select(f.lastChild))
  14046. },
  14047. _selectNext: function(n, t) {
  14048. for (var i = this, r, f = t, u = i._data(), o = u.length, s = i.options.ignoreCase, e = function(t, r) {
  14049. return t = t + "", s && (t = t.toLowerCase()), t.indexOf(n) === 0 ? (i._select(r), i._triggerEvents(), !0) : void 0
  14050. }; t < o; t++)
  14051. if (r = i._text(u[t]), r && e(r, t)) return !0;
  14052. if (f > 0)
  14053. for (t = 0; t <= f; t++)
  14054. if (r = i._text(u[t]), r && e(r, t)) return !0;
  14055. return !1
  14056. },
  14057. _keypress: function(n) {
  14058. if (n.charCode !== 0) {
  14059. var t = this,
  14060. i = String.fromCharCode(n.charCode || n.keyCode),
  14061. u = t.selectedIndex,
  14062. r = t._word;
  14063. (t.options.ignoreCase && (i = i.toLowerCase()), i === " " && n.preventDefault(), t._last === i && r.length <= 1 && u > -1 && (r || (r = i), t._selectNext(r, u + 1))) || (t._word = r + i, t._last = i, t._search())
  14064. }
  14065. },
  14066. _popup: function() {
  14067. u.fn._popup.call(this);
  14068. this.popup.one("open", function() {
  14069. this.wrapper = r.wrap(this.element).addClass("km-popup")
  14070. })
  14071. },
  14072. _search: function() {
  14073. var n = this,
  14074. i = n.dataSource,
  14075. t = n.selectedIndex,
  14076. r = n._word;
  14077. if (clearTimeout(n._typing), n._typing = setTimeout(function() {
  14078. n._word = ""
  14079. }, n.options.delay), t === -1 && (t = 0), !n.ul[0].firstChild) {
  14080. i.one(y, function() {
  14081. i.data()[0] && t > -1 && n._selectNext(r, t)
  14082. }).fetch();
  14083. return
  14084. }
  14085. n._selectNext(r, t);
  14086. n._triggerEvents()
  14087. },
  14088. _select: function(n) {
  14089. var i = this,
  14090. e = i._current,
  14091. r = null,
  14092. f, u;
  14093. return n = i._get(n), n && n[0] && !n.hasClass(l) && (e && e.removeClass(l), u = s.List.inArray(n[0], i.ul[0]), u > -1 && (r = i._data()[u], f = i._value(r), i.selectedIndex = u, i._textAccessor(r), i._accessor(f !== t ? f : i._text(r), u), i._selectedValue = i._accessor(), i.current(n.addClass(l)), i._optionID && i._current.attr("aria-selected", !0))), r
  14094. },
  14095. _triggerEvents: function() {
  14096. this.popup.visible() || (this._triggerCascade(), this._change())
  14097. },
  14098. _mobile: function() {
  14099. var t = this,
  14100. n = t.popup,
  14101. i = n.element.parents(".km-root").eq(0);
  14102. i.length && f && (n.options.animation.open.effects = f.android || f.meego ? "fadeIn" : f.ios || f.wp ? "slideIn:up" : n.options.animation.open.effects)
  14103. },
  14104. _span: function() {
  14105. var t = this,
  14106. i = t.wrapper,
  14107. u = "span.k-input",
  14108. r;
  14109. r = i.find(u);
  14110. r[0] || (i.append('<span unselectable="on" class="k-dropdown-wrap k-state-default"><span unselectable="on" class="k-input">&nbsp;<\/span><span unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-arrow-s">select<\/span><\/span><\/span>').append(t.element), r = i.find(u));
  14111. t.span = r;
  14112. t._inputWrapper = n(i[0].firstChild);
  14113. t._arrow = i.find(".k-icon").mousedown(function(n) {
  14114. n.preventDefault()
  14115. })
  14116. },
  14117. _wrapper: function() {
  14118. var i = this,
  14119. t = i.element,
  14120. r = t[0],
  14121. n;
  14122. n = t.parent();
  14123. n.is("span.k-widget") || (n = t.wrap("<span />").parent(), n[0].style.cssText = r.style.cssText);
  14124. t.hide();
  14125. i._focused = i.wrapper = n.addClass("k-widget k-dropdown k-header").addClass(r.className).css("display", "").attr({
  14126. unselectable: "on",
  14127. role: "listbox",
  14128. "aria-haspopup": !0,
  14129. "aria-expanded": !1
  14130. })
  14131. },
  14132. _clearSelection: function() {
  14133. var n = this,
  14134. t = n.options.optionLabel;
  14135. if (n.options.value = "", n._selectedValue = "", n.dataSource.view()[0] && (t || n._userTriggered)) {
  14136. n.select(0);
  14137. return
  14138. }
  14139. n.selectedIndex = -1;
  14140. n.element.val("");
  14141. n._textAccessor(n.options.optionLabel)
  14142. },
  14143. _inputTemplate: function() {
  14144. var i = this,
  14145. t = i.options.valueTemplate;
  14146. t = t ? r.template(t) : n.proxy(r.template("#:this._text(data)#"), i);
  14147. i.valueTemplate = t
  14148. },
  14149. _textAccessor: function(i) {
  14150. var u = this.dataItem(),
  14151. f = this.options,
  14152. e = this.span;
  14153. if (i !== t) n.isPlainObject(i) || i instanceof r.data.ObservableObject ? u = i : u && this._text(u) === i || (f.dataTextField ? (u = {}, o(u, f.dataTextField.split("."), i), o(u, f.dataValueField.split("."), this._accessor())) : u = i), e.html(this.valueTemplate(u));
  14154. else return e.text()
  14155. }
  14156. });
  14157. s.plugin(g)
  14158. }(window.kendo.jQuery);
  14159. kendo_module({
  14160. id: "combobox",
  14161. name: "ComboBox",
  14162. category: "web",
  14163. description: "The ComboBox widget allows the selection from pre-defined values or entering a new value.",
  14164. depends: ["list"],
  14165. features: [{
  14166. id: "mobile-scroller",
  14167. name: "Mobile scroller",
  14168. description: "Support for kinetic scrolling in mobile device",
  14169. depends: ["mobile.scroller"]
  14170. }]
  14171. }),
  14172. function(n, t) {
  14173. var r = window.kendo,
  14174. o = r.ui,
  14175. u = o.List,
  14176. f = o.Select,
  14177. ut = r.support,
  14178. v = ut.placeholder,
  14179. s = r._activeElement,
  14180. h = r.keys,
  14181. i = ".kendoComboBox",
  14182. y = "click" + i,
  14183. p = "mousedown" + i,
  14184. w = "disabled",
  14185. b = "readonly",
  14186. k = "change",
  14187. c = "k-state-default",
  14188. d = "k-state-focused",
  14189. l = "k-state-disabled",
  14190. g = "aria-disabled",
  14191. nt = "aria-readonly",
  14192. tt = "k-state-selected",
  14193. e = "filter",
  14194. a = "accept",
  14195. it = "rebind",
  14196. ft = "mouseenter" + i + " mouseleave" + i,
  14197. rt = null,
  14198. et = n.proxy,
  14199. ot = f.extend({
  14200. init: function(t, u) {
  14201. var e = this,
  14202. o;
  14203. e.ns = i;
  14204. u = n.isArray(u) ? {
  14205. dataSource: u
  14206. } : u;
  14207. f.fn.init.call(e, t, u);
  14208. e._focusHandler = function() {
  14209. e.input.focus()
  14210. };
  14211. u = e.options;
  14212. t = e.element.on("focus" + i, e._focusHandler);
  14213. u.placeholder = u.placeholder || t.attr("placeholder");
  14214. e._reset();
  14215. e._wrapper();
  14216. e._input();
  14217. e._tabindex(e.input);
  14218. e._popup();
  14219. e._dataSource();
  14220. e._ignoreCase();
  14221. e._enable();
  14222. e._cascade();
  14223. e._aria();
  14224. e._oldIndex = e.selectedIndex = -1;
  14225. u.autoBind ? e._filterSource() : (o = u.text, !o && e._isSelect && (o = t.children(":selected").text()), o && (e.input.val(o), e._prev = o));
  14226. o || e._placeholder();
  14227. r.notify(e)
  14228. },
  14229. options: {
  14230. name: "ComboBox",
  14231. enabled: !0,
  14232. index: -1,
  14233. text: null,
  14234. value: null,
  14235. autoBind: !0,
  14236. delay: 200,
  14237. dataTextField: "",
  14238. dataValueField: "",
  14239. minLength: 0,
  14240. height: 200,
  14241. highlightFirst: !0,
  14242. template: "",
  14243. filter: "none",
  14244. placeholder: "",
  14245. suggest: !1,
  14246. cascadeFrom: "",
  14247. cascadeFromField: "",
  14248. ignoreCase: !0,
  14249. animation: {}
  14250. },
  14251. events: ["open", "close", k, "select", "dataBinding", "dataBound", "cascade"],
  14252. setOptions: function(n) {
  14253. f.fn.setOptions.call(this, n);
  14254. this._template();
  14255. this._accessors();
  14256. this._aria()
  14257. },
  14258. current: function(n) {
  14259. var r = this,
  14260. i = r._current;
  14261. if (n === t) return i;
  14262. i && i.removeClass(tt);
  14263. f.fn.current.call(r, n)
  14264. },
  14265. destroy: function() {
  14266. var n = this;
  14267. n.input.off(i);
  14268. n.element.off(i);
  14269. n._inputWrapper.off(i);
  14270. f.fn.destroy.call(n)
  14271. },
  14272. _editable: function(n) {
  14273. var t = this,
  14274. r = n.disable,
  14275. f = n.readonly,
  14276. u = t._inputWrapper.off(i),
  14277. e = t.element.add(t.input.off(i)),
  14278. o = t._arrow.parent().off(y + " " + p);
  14279. if (f || r) u.addClass(r ? l : c).removeClass(r ? c : l), e.attr(w, r).attr(b, f).attr(g, r).attr(nt, f);
  14280. else {
  14281. u.addClass(c).removeClass(l).on(ft, t._toggleHover);
  14282. e.removeAttr(w).removeAttr(b).attr(g, !1).attr(nt, !1);
  14283. o.on(y, function() {
  14284. t.toggle()
  14285. }).on(p, function(n) {
  14286. n.preventDefault()
  14287. });
  14288. t.input.on("keydown" + i, et(t._keydown, t)).on("focus" + i, function() {
  14289. u.addClass(d);
  14290. t._placeholder(!1)
  14291. }).on("blur" + i, function() {
  14292. u.removeClass(d);
  14293. clearTimeout(t._typing);
  14294. t.options.text !== t.input.val() && t.text(t.text());
  14295. t._placeholder();
  14296. t._blur();
  14297. t.element.blur()
  14298. })
  14299. }
  14300. },
  14301. open: function() {
  14302. var n = this,
  14303. t = n.dataSource.options.serverFiltering;
  14304. n.popup.visible() || (n.ul[0].firstChild && (n._state !== a || t) ? (n.popup.open(), n._scroll(n._current)) : (n._open = !0, n._state = it, n._filterSource()))
  14305. },
  14306. refresh: function() {
  14307. var i = this,
  14308. f = i.ul[0],
  14309. l = i.options,
  14310. a = i._state,
  14311. o = i._data(),
  14312. h = o.length,
  14313. v = !0,
  14314. y, c, u;
  14315. i.trigger("dataBinding");
  14316. f.innerHTML = r.render(i.template, o);
  14317. i._height(h);
  14318. i.popup.visible() && i.popup._position();
  14319. i._isSelect && (y = i.element[0].firstChild, a === it && (i._state = ""), u = i._option, i._option = t, i._options(o), u && u[0].selected ? i._custom(u.val(), v) : i._bound || y || i._custom("", v));
  14320. h && (l.highlightFirst && i.current(n(f.firstChild)), l.suggest && i.input.val() && i._request !== t && i.suggest(n(f.firstChild)));
  14321. a === e || i._fetch || i._selectItem();
  14322. i._open && (i._open = !1, c = !!h, i._typing && i.input[0] !== s() && (c = !1), i.toggle(c), i._typing = t);
  14323. i._touchScroller && i._touchScroller.reset();
  14324. i._makeUnselectable();
  14325. i._hideBusy();
  14326. i._bound = !0;
  14327. i.trigger("dataBound")
  14328. },
  14329. search: function(n) {
  14330. n = typeof n == "string" ? n : this.text();
  14331. var t = this,
  14332. f = n.length,
  14333. i = t.options,
  14334. r = i.ignoreCase,
  14335. u = i.filter,
  14336. o = i.dataTextField;
  14337. clearTimeout(t._typing);
  14338. f >= i.minLength && (t._state = e, u === "none" ? t._filter(n) : (t._open = !0, t._filterSource({
  14339. value: r ? n.toLowerCase() : n,
  14340. field: o,
  14341. operator: u,
  14342. ignoreCase: r
  14343. })))
  14344. },
  14345. suggest: function(n) {
  14346. var r = this,
  14347. o = r.input[0],
  14348. i = r.text(),
  14349. e = u.caret(o),
  14350. c = r._last,
  14351. f;
  14352. if (c == h.BACKSPACE || c == h.DELETE) {
  14353. r._last = t;
  14354. return
  14355. }
  14356. n = n || "";
  14357. typeof n != "string" && (f = u.inArray(n[0], r.ul[0]), n = f > -1 ? r._text(r.dataSource.view()[f]) : "");
  14358. e <= 0 && (e = i.toLowerCase().indexOf(n.toLowerCase()) + 1);
  14359. n ? (f = n.toLowerCase().indexOf(i.toLowerCase()), f > -1 && (i += n.substring(f + i.length))) : i = i.substring(0, e);
  14360. i.length === e && n || (o.value = i, o === s() && u.selectText(o, e, i.length))
  14361. },
  14362. text: function(n) {
  14363. n = n === null ? "" : n;
  14364. var i = this,
  14365. u = i.input[0],
  14366. e = i.options.ignoreCase,
  14367. f = n,
  14368. r;
  14369. if (n !== t) {
  14370. if (r = i.dataItem(), r && i._text(r) === n && i._value(r).toString() === i._old) {
  14371. i._triggerCascade();
  14372. return
  14373. }
  14374. e && (f = f.toLowerCase());
  14375. i._select(function(n) {
  14376. return n = i._text(n), e && (n = (n + "").toLowerCase()), n === f
  14377. });
  14378. i.selectedIndex < 0 && (i._custom(n), u.value = n);
  14379. i._prev = u.value;
  14380. i._triggerCascade()
  14381. } else return u.value
  14382. },
  14383. toggle: function(n) {
  14384. var t = this;
  14385. t._toggle(n)
  14386. },
  14387. value: function(n) {
  14388. var i = this,
  14389. u = i.options,
  14390. r;
  14391. if (n !== t) {
  14392. if (n !== null && (n = n.toString()), i._selectedValue = n, !i._open && n && i._fetchItems(n)) return;
  14393. r = i._index(n);
  14394. r > -1 ? i.select(r) : (i.current(rt), i._custom(n), (u.value !== n || u.text !== i.input.val()) && (i.text(n), i._placeholder()));
  14395. i._old = i._accessor();
  14396. i._oldIndex = i.selectedIndex
  14397. } else return i._accessor()
  14398. },
  14399. _accept: function(n) {
  14400. var t = this;
  14401. n ? t._focus(n) : (t.text(t.text()), t._change())
  14402. },
  14403. _custom: function(t, i) {
  14404. var r = this,
  14405. f = r.element,
  14406. u = r._option;
  14407. r._state !== e || i || (r._state = a);
  14408. r._isSelect ? (u || (u = r._option = n("<option/>"), f.append(u)), u.text(t), u[0].selected = !0) : f.val(t);
  14409. r._selectedValue = t
  14410. },
  14411. _filter: function(n) {
  14412. var i = this,
  14413. r = i.options,
  14414. u = i.dataSource,
  14415. f = r.ignoreCase,
  14416. e = function(r) {
  14417. var u = i._text(r);
  14418. if (u !== t) return (u = u + "", u !== "" && n === "") ? !1 : (f && (u = u.toLowerCase()), u.indexOf(n) === 0)
  14419. };
  14420. if (f && (n = n.toLowerCase()), !i.ul[0].firstChild) {
  14421. u.one(k, function() {
  14422. u.data()[0] && i.search(n)
  14423. }).fetch();
  14424. return
  14425. }
  14426. i._highlight(e) !== -1 && (r.suggest && i._current && i.suggest(i._current), i.open());
  14427. i._hideBusy()
  14428. },
  14429. _highlight: function(i) {
  14430. var r = this,
  14431. f;
  14432. return i === t || i === null ? -1 : (i = r._get(i), f = u.inArray(i[0], r.ul[0]), f == -1 && (r.options.highlightFirst && !r.text() ? (i = r.ul[0].firstChild, i && (i = n(i))) : i = rt), r.current(i), f)
  14433. },
  14434. _input: function() {
  14435. var t = this,
  14436. i = t.element.removeClass("k-input")[0],
  14437. e = i.accessKey,
  14438. u = t.wrapper,
  14439. o = "input.k-input",
  14440. f = i.name || "",
  14441. r;
  14442. f && (f = 'name="' + f + '_input" ');
  14443. r = u.find(o);
  14444. r[0] || (u.append('<span tabindex="-1" unselectable="on" class="k-dropdown-wrap k-state-default"><input ' + f + 'class="k-input" type="text" autocomplete="off"/><span tabindex="-1" unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-arrow-s">select<\/span><\/span><\/span>').append(t.element), r = u.find(o));
  14445. r[0].style.cssText = i.style.cssText;
  14446. i.maxLength > -1 && (r[0].maxLength = i.maxLength);
  14447. r.addClass(i.className).val(this.options.text || i.value).css({
  14448. width: "100%",
  14449. height: i.style.height
  14450. }).attr({
  14451. role: "combobox",
  14452. "aria-expanded": !1
  14453. }).show();
  14454. v && r.attr("placeholder", t.options.placeholder);
  14455. e && (i.accessKey = "", r[0].accessKey = e);
  14456. t._focused = t.input = r;
  14457. t._inputWrapper = n(u[0].firstChild);
  14458. t._arrow = u.find(".k-icon").attr({
  14459. role: "button",
  14460. tabIndex: -1
  14461. });
  14462. i.id && t._arrow.attr("aria-controls", t.ul[0].id)
  14463. },
  14464. _keydown: function(n) {
  14465. var t = this,
  14466. i = n.keyCode;
  14467. t._last = i;
  14468. clearTimeout(t._typing);
  14469. i == h.TAB || t._move(n) || t._search()
  14470. },
  14471. _placeholder: function(n) {
  14472. if (!v) {
  14473. var f = this,
  14474. i = f.input,
  14475. r = f.options.placeholder,
  14476. e;
  14477. if (r) {
  14478. if (e = f.value(), n === t && (n = !e), i.toggleClass("k-readonly", n), !n) {
  14479. if (e) return;
  14480. r = ""
  14481. }
  14482. i.val(r);
  14483. r || i[0] !== s() || u.selectText(i[0], 0, 0)
  14484. }
  14485. }
  14486. },
  14487. _search: function() {
  14488. var n = this;
  14489. n._typing = setTimeout(function() {
  14490. var t = n.text();
  14491. n._prev !== t && (n._prev = t, n.search(t));
  14492. n._typing = null
  14493. }, n.options.delay)
  14494. },
  14495. _select: function(n) {
  14496. var i = this,
  14497. f, o, r = i._data(),
  14498. u = i._highlight(n);
  14499. i.selectedIndex = u;
  14500. u !== -1 && (i._state === e && (i._state = a), i._current.addClass(tt), r = r[u], f = i._text(r), o = i._value(r), i._prev = i.input[0].value = f, i._accessor(o !== t ? o : f, u), i._selectedValue = i._accessor(), i._placeholder(), i._optionID && i._current.attr("aria-selected", !0))
  14501. },
  14502. _wrapper: function() {
  14503. var i = this,
  14504. n = i.element,
  14505. t = n.parent();
  14506. t.is("span.k-widget") || (t = n.hide().wrap("<span />").parent(), t[0].style.cssText = n[0].style.cssText);
  14507. i.wrapper = t.addClass("k-widget k-combobox k-header").addClass(n[0].className).css("display", "")
  14508. },
  14509. _clearSelection: function(n, t) {
  14510. var i = this,
  14511. r = n._selectedValue || n.value(),
  14512. u = r && n.selectedIndex === -1;
  14513. (t || !r || u) && (i.value(""), i.options.value = "")
  14514. }
  14515. });
  14516. o.plugin(ot)
  14517. }(window.kendo.jQuery);
  14518. kendo_module({
  14519. id: "multiselect",
  14520. name: "MultiSelect",
  14521. category: "web",
  14522. description: "The MultiSelect widget allows the selection from pre-defined values.",
  14523. depends: ["list"],
  14524. features: [{
  14525. id: "mobile-scroller",
  14526. name: "Mobile scroller",
  14527. description: "Support for kinetic scrolling in mobile device",
  14528. depends: ["mobile.scroller"]
  14529. }]
  14530. }),
  14531. function(n, t) {
  14532. function ni(n, t) {
  14533. var i;
  14534. if (n === null && t !== null || n !== null && t === null || (i = n.length, i !== t.length)) return !1;
  14535. while (i--)
  14536. if (n[i] !== t[i]) return !1;
  14537. return !0
  14538. }
  14539. function s(t) {
  14540. var i = t.firstChild;
  14541. return (i && i.style.display === "none" && (i = h(i, it)), i) ? n(i) : i
  14542. }
  14543. function lt(t) {
  14544. var i = t.lastChild;
  14545. return (i && i.style.display === "none" && (i = h(i, rt)), i) ? n(i) : i
  14546. }
  14547. function h(n, t) {
  14548. return n = n[t], n && n.style.display === "none" && (n = h(n, t)), n
  14549. }
  14550. var i = window.kendo,
  14551. d = i.ui,
  14552. f = d.List,
  14553. r = i.keys,
  14554. g = i._activeElement,
  14555. at = i.data.ObservableArray,
  14556. c = n.proxy,
  14557. e = "id",
  14558. v = "li",
  14559. y = "accept",
  14560. p = "filter",
  14561. nt = "open",
  14562. tt = "close",
  14563. o = "change",
  14564. vt = "progress",
  14565. w = "select",
  14566. it = "nextSibling",
  14567. rt = "previousSibling",
  14568. yt = ' style="display:none"',
  14569. ut = "aria-disabled",
  14570. ft = "aria-readonly",
  14571. l = "k-state-focused",
  14572. b = "k-loading-hidden",
  14573. et = "k-state-hover",
  14574. k = "k-state-disabled",
  14575. ot = "disabled",
  14576. st = "readonly",
  14577. u = ".kendoMultiSelect",
  14578. pt = "click" + u,
  14579. wt = "keydown" + u,
  14580. ht = "mouseenter" + u,
  14581. ct = "mouseleave" + u,
  14582. bt = ht + " " + ct,
  14583. kt = /"/g,
  14584. a = n.isArray,
  14585. dt = ["font-family", "font-size", "font-stretch", "font-style", "font-weight", "letter-spacing", "text-transform", "line-height"],
  14586. gt = f.extend({
  14587. init: function(t, r) {
  14588. var o = this,
  14589. s, h;
  14590. o.ns = u;
  14591. f.fn.init.call(o, t, r);
  14592. o._wrapper();
  14593. o._tagList();
  14594. o._input();
  14595. o._textContainer();
  14596. o._loader();
  14597. o._tabindex(o.input);
  14598. t = o.element.attr("multiple", "multiple").hide();
  14599. r = o.options;
  14600. h = r.value;
  14601. r.placeholder || (r.placeholder = t.data("placeholder"));
  14602. s = t.attr(e);
  14603. s && (o._tagID = s + "_tag_active", s = s + "_taglist", o.tagList.attr(e, s));
  14604. o._aria(s);
  14605. o._dataSource();
  14606. o._ignoreCase();
  14607. o._popup();
  14608. o._values = [];
  14609. o._dataItems = [];
  14610. o._reset();
  14611. o._enable();
  14612. o._placeholder();
  14613. r.autoBind ? o.dataSource.fetch() : h && (a(h) || (h = [h]), (n.isPlainObject(h[0]) || !r.dataValueField) && (o._retrieveData = !0, o.dataSource.data(h), o.value(o._initialValues)));
  14614. i.notify(o)
  14615. },
  14616. options: {
  14617. name: "MultiSelect",
  14618. enabled: !0,
  14619. autoBind: !0,
  14620. autoClose: !0,
  14621. highlightFirst: !0,
  14622. dataTextField: "",
  14623. dataValueField: "",
  14624. filter: "startswith",
  14625. ignoreCase: !0,
  14626. minLength: 0,
  14627. delay: 100,
  14628. value: null,
  14629. maxSelectedItems: null,
  14630. itemTemplate: "",
  14631. tagTemplate: "",
  14632. placeholder: "",
  14633. height: 200,
  14634. animation: {}
  14635. },
  14636. events: [nt, tt, o, w, "dataBinding", "dataBound"],
  14637. setDataSource: function(n) {
  14638. this.options.dataSource = n;
  14639. this._dataSource();
  14640. this.options.autoBind && this.dataSource.fetch()
  14641. },
  14642. setOptions: function(n) {
  14643. f.fn.setOptions.call(this, n);
  14644. this._template();
  14645. this._accessors();
  14646. this._aria(this.tagList.attr(e))
  14647. },
  14648. current: function(n) {
  14649. return this.currentTag(null), f.fn.current.call(this, n)
  14650. },
  14651. currentTag: function(n) {
  14652. var i = this;
  14653. if (n !== t) i._currentTag && (i._currentTag.removeClass(l).removeAttr(e), i.input.removeAttr("aria-activedescendant")), n && (n.addClass(l).attr(e, i._tagID), i.input.attr("aria-activedescendant", i._tagID)), i._currentTag = n;
  14654. else return i._currentTag
  14655. },
  14656. dataItems: function() {
  14657. return this._dataItems
  14658. },
  14659. destroy: function() {
  14660. var n = this,
  14661. t = n.ns;
  14662. n.wrapper.off(t);
  14663. n.tagList.off(t);
  14664. n.input.off(t);
  14665. f.fn.destroy.call(n)
  14666. },
  14667. _editable: function(t) {
  14668. var i = this,
  14669. r = t.disable,
  14670. f = t.readonly,
  14671. e = i.wrapper.off(u),
  14672. s = i.tagList.off(u),
  14673. o = i.element.add(i.input.off(u));
  14674. if (f || r) r ? e.addClass(k) : e.removeClass(k), o.attr(ot, r).attr(st, f).attr(ut, r).attr(ft, f);
  14675. else {
  14676. e.removeClass(k).on(bt, i._toggleHover).on("mousedown" + u, function(n) {
  14677. var t = n.target.nodeName.toLowerCase() !== "input";
  14678. t && n.preventDefault();
  14679. n.target.className.indexOf("k-delete") === -1 && (i.input[0] !== g() && t && i.input.focus(), i.options.minLength === 0 && i.open())
  14680. });
  14681. i.input.on(wt, c(i._keydown, i)).on("paste" + u, c(i._search, i)).on("focus" + u, function() {
  14682. i._placeholder(!1)
  14683. }).on("blur" + u, function() {
  14684. clearTimeout(i._typing);
  14685. i._placeholder();
  14686. i.close();
  14687. i._state === p && (i._state = y);
  14688. i.element.blur()
  14689. });
  14690. o.removeAttr(ot).removeAttr(st).attr(ut, !1).attr(ft, !1);
  14691. s.on(ht, v, function() {
  14692. n(this).addClass(et)
  14693. }).on(ct, v, function() {
  14694. n(this).removeClass(et)
  14695. }).on(pt, ".k-delete", function(t) {
  14696. i._unselect(n(t.target).closest(v));
  14697. i._change();
  14698. i.close()
  14699. })
  14700. }
  14701. },
  14702. _close: function() {
  14703. var n = this;
  14704. n.options.autoClose || !n._visibleItems ? n.close() : (n.current(n.options.highlightFirst ? s(n.ul[0]) : null), n.popup._position())
  14705. },
  14706. close: function() {
  14707. this.popup.close();
  14708. this.current(null)
  14709. },
  14710. open: function() {
  14711. var n = this;
  14712. !n.ul[0].firstChild || n._state === y || n._retrieveData ? (n._state = "", n._open = !0, n._retrieveData = !1, n._filterSource()) : n._visibleItems && n._allowSelection() && (n.popup.open(), n.current(n.options.highlightFirst ? s(n.ul[0]) : null))
  14713. },
  14714. toggle: function(n) {
  14715. n = n !== t ? n : !this.popup.visible();
  14716. this[n ? nt : tt]()
  14717. },
  14718. refresh: function() {
  14719. var n = this,
  14720. i = null,
  14721. t;
  14722. n.trigger("dataBinding");
  14723. t = n._render(n.dataSource.view());
  14724. n._height(t);
  14725. n._setInitialValues && (n._setInitialValues = !1, n.value(n._initialValues));
  14726. n._open && (n._open = !1, n.toggle(t));
  14727. n.popup.visible() && (n.popup._position(), n.options.highlightFirst && (i = s(n.ul[0])));
  14728. n.current(i);
  14729. n._touchScroller && n._touchScroller.reset();
  14730. n._makeUnselectable();
  14731. n._hideBusy();
  14732. n.trigger("dataBound")
  14733. },
  14734. search: function(n) {
  14735. var t = this,
  14736. i = t.options,
  14737. u = i.ignoreCase,
  14738. f = i.filter,
  14739. e = i.dataTextField,
  14740. r = t.input.val();
  14741. i.placeholder === r && (r = "");
  14742. clearTimeout(t._typing);
  14743. n = typeof n == "string" ? n : r;
  14744. n.length >= i.minLength && (t._state = p, t._open = !0, t._filterSource({
  14745. value: u ? n.toLowerCase() : n,
  14746. field: e,
  14747. operator: f,
  14748. ignoreCase: u
  14749. }))
  14750. },
  14751. value: function(i) {
  14752. var r = this,
  14753. o = n(r.tagList[0].children),
  14754. f = o.length,
  14755. e, u = 0;
  14756. if (i === t) return r._values;
  14757. if (!r._fetchItems(i)) {
  14758. for (; u < f; u++) r._unselect(o.eq(u));
  14759. if (i !== null) {
  14760. for (i = a(i) || i instanceof at ? i : [i], u = 0, f = i.length; u < f; u++) e = r._index(i[u]), e > -1 && r._select(e);
  14761. r._old = r._values.slice()
  14762. }
  14763. }
  14764. },
  14765. _dataSource: function() {
  14766. var n = this,
  14767. u = n.element,
  14768. r = n.options,
  14769. t = r.dataSource || {};
  14770. t = a(t) ? {
  14771. data: t
  14772. } : t;
  14773. t.select = u;
  14774. t.fields = [{
  14775. field: r.dataTextField
  14776. }, {
  14777. field: r.dataValueField
  14778. }];
  14779. n.dataSource && n._refreshHandler ? n._unbindDataSource() : (n._refreshHandler = c(n.refresh, n), n._progressHandler = c(n._showBusy, n));
  14780. n.dataSource = i.data.DataSource.create(t).bind(o, n._refreshHandler).bind(vt, n._progressHandler)
  14781. },
  14782. _fetchItems: function(t) {
  14783. var i = this,
  14784. r = n.isArray(t) && t.length === 0;
  14785. if (!r && t && !i._fetch && !i.ul[0].firstChild) {
  14786. i.dataSource.one(o, function() {
  14787. i.value(t);
  14788. i._fetch = !1
  14789. });
  14790. return i._fetch = !0, i.dataSource.fetch(), !0
  14791. }
  14792. },
  14793. _reset: function() {
  14794. var t = this,
  14795. i = t.element,
  14796. r = i.attr("form"),
  14797. u = r ? n("#" + r) : i.closest("form");
  14798. u[0] && (t._resetHandler = function() {
  14799. setTimeout(function() {
  14800. t.value(t._initialValues)
  14801. })
  14802. }, t._form = u.on("reset", t._resetHandler))
  14803. },
  14804. _initValue: function() {
  14805. var t = this,
  14806. n = t.options.value || t.element.val();
  14807. n === null ? n = [] : (a(n) || (n = [n]), n = t._mapValues(n));
  14808. t._old = t._initialValues = n;
  14809. t._setInitialValues = !!n[0]
  14810. },
  14811. _mapValues: function(t) {
  14812. var i = this;
  14813. return t && n.isPlainObject(t[0]) && (t = n.map(t, function(n) {
  14814. return i._value(n)
  14815. })), t
  14816. },
  14817. _change: function() {
  14818. var n = this,
  14819. t = n.value();
  14820. ni(t, n._old) || (n._old = t.slice(), n.trigger(o), n.element.trigger(o))
  14821. },
  14822. _click: function(t) {
  14823. var i = this,
  14824. r = n(t.currentTarget);
  14825. if (!t.isDefaultPrevented()) {
  14826. if (i.trigger(w, {
  14827. item: r
  14828. })) {
  14829. i._close();
  14830. return
  14831. }
  14832. i._select(r);
  14833. i._change();
  14834. i._close()
  14835. }
  14836. },
  14837. _item: function(n, t) {
  14838. return n = n[t](), n[0] && !n.is(":visible") && (n = this._item(n, t)), n
  14839. },
  14840. _keydown: function(t) {
  14841. var u = this,
  14842. e = t.keyCode,
  14843. f = u._currentTag,
  14844. o = u._current,
  14845. l = u.input.val(),
  14846. a = i.support.isRtl(u.wrapper),
  14847. c = u.popup.visible();
  14848. if (e === r.DOWN) {
  14849. if (t.preventDefault(), !c) {
  14850. u.open();
  14851. return
  14852. }
  14853. o = o ? h(o[0], it) : s(u.ul[0]);
  14854. o && u.current(n(o))
  14855. } else if (e === r.UP) c && (o = o ? h(o[0], rt) : lt(u.ul[0]), u.current(n(o)), u._current[0] || u.close()), t.preventDefault();
  14856. else if (e === r.LEFT && !a || e === r.RIGHT && a) l || (f = f ? f.prev() : n(u.tagList[0].lastChild), f[0] && u.currentTag(f));
  14857. else if (e === r.RIGHT && !a || e === r.LEFT && a) !l && f && (f = f.next(), u.currentTag(f[0] ? f : null));
  14858. else if (e === r.ENTER && c) {
  14859. if (o) {
  14860. if (u.trigger(w, {
  14861. item: o
  14862. })) {
  14863. u._close();
  14864. return
  14865. }
  14866. u._select(o)
  14867. }
  14868. u._change();
  14869. u._close();
  14870. t.preventDefault()
  14871. } else e === r.ESC ? (c ? t.preventDefault() : u.currentTag(null), u.close()) : e === r.HOME ? c ? u.current(s(u.ul[0])) : l || (f = u.tagList[0].firstChild, f && u.currentTag(n(f))) : e === r.END ? c ? u.current(lt(u.ul[0])) : l || (f = u.tagList[0].lastChild, f && u.currentTag(n(f))) : e !== r.DELETE && e !== r.BACKSPACE || l ? (clearTimeout(u._typing), setTimeout(function() {
  14872. u._scale()
  14873. }), u._search()) : (e !== r.BACKSPACE || f || (f = n(u.tagList[0].lastChild)), f && f[0] && (u._unselect(f), u._change(), u._close()))
  14874. },
  14875. _hideBusy: function() {
  14876. var n = this;
  14877. clearTimeout(n._busy);
  14878. n.input.attr("aria-busy", !1);
  14879. n._loading.addClass(b);
  14880. n._busy = null
  14881. },
  14882. _showBusy: function() {
  14883. var n = this;
  14884. n._busy || (n._busy = setTimeout(function() {
  14885. n.input.attr("aria-busy", !0);
  14886. n._loading.removeClass(b)
  14887. }, 100))
  14888. },
  14889. _placeholder: function(n) {
  14890. var i = this,
  14891. r = i.input,
  14892. u = g();
  14893. n === t ? (n = !1, r[0] !== u && (n = !i._dataItems[0]), i.wrapper.removeClass(l)) : i.wrapper.addClass(l);
  14894. i._prev = "";
  14895. r.toggleClass("k-readonly", n).val(n ? i.options.placeholder : "");
  14896. r[0] === u && f.selectText(r[0], 0, 0);
  14897. i._scale()
  14898. },
  14899. _scale: function() {
  14900. var n = this,
  14901. r = n.wrapper,
  14902. u = r.width(),
  14903. t = n._span.text(n.input.val()),
  14904. i;
  14905. r.is(":visible") ? i = t.width() + 25 : (t.appendTo(document.documentElement), u = i = t.width() + 25, t.appendTo(r));
  14906. n.input.width(i > u ? u : i)
  14907. },
  14908. _option: function(n, r) {
  14909. var f = "<option",
  14910. e = this._text(n),
  14911. u = this._value(n);
  14912. return u !== t && (u += "", u.indexOf('"') !== -1 && (u = u.replace(kt, "&quot;")), f += ' value="' + u + '"'), r && (f += ' selected="selected"'), f += ">", e !== t && (f += i.htmlEncode(e)), f + "<\/option>"
  14913. },
  14914. _render: function(n) {
  14915. for (var t = this, r = n.length, c = t.itemTemplate, e = t._dataItems.slice(0), o = 0, i = 0, s = "", h = "", u, f; i < r; i++) u = n[i], f = t._selected(e, u), h += c(u, i, f), s += t._option(u, f), f || (o += 1);
  14916. if (r = e.length, r)
  14917. for (i = 0; i < r; i++) s += t._option(e[i], !0);
  14918. return t.ul[0].innerHTML = h, t.element.html(s), t._visibleItems = o, o
  14919. },
  14920. _selected: function(n, i) {
  14921. var o = this,
  14922. s = o._text,
  14923. h = o._value,
  14924. f = h(i),
  14925. c = n.length,
  14926. e = !1,
  14927. r, u = 0;
  14928. for (f === t && (f = s(i)); u < c; u++)
  14929. if (i = n[u], r = h(i), r === t && (r = s(i)), r !== t && r === f) {
  14930. e = !0;
  14931. break
  14932. }
  14933. return e && n.splice(u, 1), e
  14934. },
  14935. _search: function() {
  14936. var n = this;
  14937. n._typing = setTimeout(function() {
  14938. var t = n.input.val();
  14939. n._prev !== t && (n._prev = t, n.search(t))
  14940. }, n.options.delay)
  14941. },
  14942. _allowSelection: function() {
  14943. var n = this.options.maxSelectedItems;
  14944. return n === null || n > this._values.length
  14945. },
  14946. _select: function(n) {
  14947. var t = this,
  14948. u = t._values,
  14949. r, i;
  14950. t._allowSelection() && (isNaN(n) ? i = n.hide().data("idx") : (i = n, t.ul[0].children[i].style.display = "none"), t.element[0].children[i].selected = !0, r = t.dataSource.view()[i], t.tagList.append(t.tagTemplate(r)), t._dataItems.push(r), u.push(t._dataValue(r)), t._visibleItems -= 1, t.currentTag(null), t._placeholder(), t._height(t._visibleItems), t._state === p && (t._state = y))
  14951. },
  14952. _unselect: function(t) {
  14953. var i = this,
  14954. r = t.index(),
  14955. o, u, f, e, s;
  14956. if (t.remove(), i.currentTag(null), i._values.splice(r, 1), o = i._dataItems.splice(r, 1)[0], u = i._dataValue(o), r = i._index(u), r !== -1) n(i.ul[0].children[r]).show(), i.element[0].children[r].selected = !1, i._visibleItems += 1, i._height(i._visibleItems);
  14957. else
  14958. for (r = i.dataSource.view().length, f = i.element[0].children, s = f.length; r < s; r++)
  14959. if (e = f[r], e.value == u) {
  14960. e.selected = !1;
  14961. break
  14962. }
  14963. i._placeholder()
  14964. },
  14965. _template: function() {
  14966. var t = this,
  14967. n = t.options,
  14968. r = n.itemTemplate,
  14969. u = n.tagTemplate,
  14970. e = n.dataSource,
  14971. f;
  14972. t.element[0].length && !e && (n.dataTextField = n.dataTextField || "text", n.dataValueField = n.dataValueField || "value");
  14973. f = i.template("#:" + i.expr(n.dataTextField, "data") + "#", {
  14974. useWithBlock: !1
  14975. });
  14976. r = r ? i.template(r) : f;
  14977. u = u ? i.template(u) : f;
  14978. t.itemTemplate = function(n, t, i) {
  14979. return '<li tabindex="-1" role="option" data-idx="' + t + '" unselectable="on" class="k-item"' + (i ? yt : "") + ">" + r(n) + "<\/li>"
  14980. };
  14981. t.tagTemplate = function(n) {
  14982. return '<li class="k-button" unselectable="on"><span unselectable="on">' + u(n) + '<\/span><span unselectable="on" class="k-icon k-delete">delete<\/span><\/li>'
  14983. }
  14984. },
  14985. _input: function() {
  14986. var t = this,
  14987. r = t.element[0].accessKey,
  14988. i = t._innerWrapper.children("input.k-input");
  14989. i[0] || (i = n('<input class="k-input" style="width: 25px" />').appendTo(t._innerWrapper));
  14990. t.element.removeAttr("accesskey");
  14991. t._focused = t.input = i.attr({
  14992. accesskey: r,
  14993. role: "listbox",
  14994. "aria-expanded": !1
  14995. })
  14996. },
  14997. _tagList: function() {
  14998. var t = this,
  14999. i = t._innerWrapper.children("ul");
  15000. i[0] || (i = n('<ul role="listbox" unselectable="on" class="k-reset"/>').appendTo(t._innerWrapper));
  15001. t.tagList = i
  15002. },
  15003. _loader: function() {
  15004. this._loading = n('<span class="k-icon k-loading ' + b + '"><\/span>').insertAfter(this.input)
  15005. },
  15006. _textContainer: function() {
  15007. var t = i.getComputedStyles(this.input[0], dt);
  15008. t.position = "absolute";
  15009. t.visibility = "hidden";
  15010. t.top = -3333;
  15011. t.left = -3333;
  15012. this._span = n("<span/>").css(t).appendTo(this.wrapper)
  15013. },
  15014. _wrapper: function() {
  15015. var r = this,
  15016. t = r.element,
  15017. i = t.parent("span.k-multiselect");
  15018. i[0] || (i = t.wrap('<div class="k-widget k-multiselect k-header" unselectable="on" />').parent(), i[0].style.cssText = t[0].style.cssText, n('<div class="k-multiselect-wrap k-floatwrap" unselectable="on" />').insertBefore(t));
  15019. r.wrapper = i.addClass(t[0].className).css("display", "");
  15020. r._innerWrapper = n(i[0].firstChild)
  15021. }
  15022. });
  15023. d.plugin(gt)
  15024. }(window.kendo.jQuery);
  15025. kendo_module({
  15026. id: "columnmenu",
  15027. name: "Column Menu",
  15028. category: "framework",
  15029. depends: ["popup", "filtermenu", "menu"],
  15030. advanced: !0
  15031. }),
  15032. function(n, t) {
  15033. function g(t) {
  15034. return n.trim(t).replace(/&nbsp;/gi, "")
  15035. }
  15036. var i = window.kendo,
  15037. a = i.ui,
  15038. e = n.proxy,
  15039. d = n.extend,
  15040. s = n.grep,
  15041. v = n.map,
  15042. h = n.inArray,
  15043. u = "k-state-selected",
  15044. c = "asc",
  15045. y = "desc",
  15046. p = "change",
  15047. w = "init",
  15048. o = "select",
  15049. l = "kendoPopup",
  15050. b = "kendoFilterMenu",
  15051. k = "kendoMenu",
  15052. r = ".kendoColumnMenu",
  15053. f = a.Widget,
  15054. nt = f.extend({
  15055. init: function(t, u) {
  15056. var o = this,
  15057. s;
  15058. f.fn.init.call(o, t, u);
  15059. t = o.element;
  15060. u = o.options;
  15061. o.owner = u.owner;
  15062. o.dataSource = u.dataSource;
  15063. o.field = t.attr(i.attr("field"));
  15064. s = t.find(".k-header-column-menu");
  15065. s[0] || (s = t.addClass("k-with-icon").prepend('<a class="k-header-column-menu" href="#"><span class="k-icon k-i-arrowhead-s"/><\/a>').find(".k-header-column-menu"));
  15066. o.link = s.attr("tabindex", -1).on("click" + r, e(o._click, o));
  15067. o.wrapper = n('<div class="k-column-menu"/>')
  15068. },
  15069. _init: function() {
  15070. var n = this;
  15071. n.pane = n.options.pane;
  15072. n.pane && (n._isMobile = !0);
  15073. n._isMobile ? n._createMobileMenu() : n._createMenu();
  15074. n._sort();
  15075. n._columns();
  15076. n._filter();
  15077. n.trigger(w, {
  15078. field: n.field,
  15079. container: n.wrapper
  15080. })
  15081. },
  15082. events: [w],
  15083. options: {
  15084. name: "ColumnMenu",
  15085. messages: {
  15086. sortAscending: "Sort Ascending",
  15087. sortDescending: "Sort Descending",
  15088. filter: "Filter",
  15089. columns: "Columns",
  15090. done: "Done",
  15091. settings: "Column Settings"
  15092. },
  15093. filter: "",
  15094. columns: !0,
  15095. sortable: !0,
  15096. filterable: !0,
  15097. animations: {
  15098. left: "slide"
  15099. }
  15100. },
  15101. _createMenu: function() {
  15102. var n = this,
  15103. t = n.options;
  15104. n.wrapper.html(i.template(tt)({
  15105. ns: i.ns,
  15106. messages: t.messages,
  15107. sortable: t.sortable,
  15108. filterable: t.filterable,
  15109. columns: n._ownerColumns(),
  15110. showColumns: t.columns
  15111. }));
  15112. n.popup = n.wrapper[l]({
  15113. anchor: n.link,
  15114. open: e(n._open, n),
  15115. activate: e(n._activate, n),
  15116. close: n.options.closeCallback
  15117. }).data(l);
  15118. n.menu = n.wrapper.children()[k]({
  15119. orientation: "vertical",
  15120. closeOnClick: !1
  15121. }).data(k)
  15122. },
  15123. _createMobileMenu: function() {
  15124. var n = this,
  15125. t = n.options,
  15126. r = i.template(it)({
  15127. ns: i.ns,
  15128. field: n.field,
  15129. messages: t.messages,
  15130. sortable: t.sortable,
  15131. filterable: t.filterable,
  15132. columns: n._ownerColumns(),
  15133. showColumns: t.columns
  15134. });
  15135. n.view = n.pane.append(r);
  15136. n.wrapper = n.view.element.find(".k-column-menu");
  15137. n.menu = new rt(n.wrapper.children(), {
  15138. pane: n.pane
  15139. });
  15140. n.view.element.on("click", ".k-done", function(t) {
  15141. n.close();
  15142. t.preventDefault()
  15143. })
  15144. },
  15145. destroy: function() {
  15146. var n = this;
  15147. f.fn.destroy.call(n);
  15148. n.filterMenu && n.filterMenu.destroy();
  15149. n._refreshHandler && n.dataSource.unbind(p, n._refreshHandler);
  15150. n.options.columns && n.owner && (n.owner.unbind("columnShow", n._updateColumnsMenuHandler), n.owner.unbind("columnHide", n._updateColumnsMenuHandler));
  15151. n.menu && (n.menu.element.off(r), n.menu.destroy());
  15152. n.wrapper.off(r);
  15153. n.popup && n.popup.destroy();
  15154. n.view && n.view.purge();
  15155. n.link.off(r)
  15156. },
  15157. close: function() {
  15158. this.menu.close();
  15159. this.popup && (this.popup.close(), this.popup.element.off("keydown" + r))
  15160. },
  15161. _click: function(n) {
  15162. n.preventDefault();
  15163. n.stopPropagation();
  15164. var t = this.options;
  15165. t.filter && this.element.is(!t.filter) || (this.popup || this.pane || this._init(), this._isMobile ? this.pane.navigate(this.view, this.options.animations.left) : this.popup.toggle())
  15166. },
  15167. _open: function() {
  15168. var t = this;
  15169. n(".k-column-menu").not(t.wrapper).each(function() {
  15170. n(this).data(l).close()
  15171. });
  15172. t.popup.element.on("keydown" + r, function(n) {
  15173. n.keyCode == i.keys.ESC && t.close()
  15174. })
  15175. },
  15176. _activate: function() {
  15177. this.menu.element.focus()
  15178. },
  15179. _ownerColumns: function() {
  15180. var n = this.owner.columns,
  15181. t = s(n, function(n) {
  15182. var t = !0,
  15183. i = g(n.title || "");
  15184. return n.menu !== !1 && (n.field || i.length) || (t = !1), t
  15185. });
  15186. return v(t, function(t) {
  15187. return {
  15188. originalField: t.field,
  15189. field: t.field || t.title,
  15190. title: t.title || t.field,
  15191. hidden: t.hidden,
  15192. index: h(t, n)
  15193. }
  15194. })
  15195. },
  15196. _sort: function() {
  15197. var t = this;
  15198. t.options.sortable && (t.refresh(), t._refreshHandler = e(t.refresh, t), t.dataSource.bind(p, t._refreshHandler), t.menu.bind(o, function(i) {
  15199. var f = n(i.item),
  15200. r;
  15201. (f.hasClass("k-sort-asc") ? r = c : f.hasClass("k-sort-desc") && (r = y), r) && (f.parent().find(".k-sort-" + (r == c ? y : c)).removeClass(u), t._sortDataSource(f, r), t.close())
  15202. }))
  15203. },
  15204. _sortDataSource: function(n, i) {
  15205. var f = this,
  15206. o = f.options.sortable,
  15207. s = f.dataSource,
  15208. e, h, r = s.sort() || [];
  15209. if (n.hasClass(u) && o && o.allowUnsort !== !1 ? (n.removeClass(u), i = t) : n.addClass(u), o === !0 || o.mode === "single") r = [{
  15210. field: f.field,
  15211. dir: i
  15212. }];
  15213. else {
  15214. for (e = 0, h = r.length; e < h; e++)
  15215. if (r[e].field === f.field) {
  15216. r.splice(e, 1);
  15217. break
  15218. }
  15219. r.push({
  15220. field: f.field,
  15221. dir: i
  15222. })
  15223. }
  15224. s.sort(r)
  15225. },
  15226. _columns: function() {
  15227. var t = this;
  15228. t.options.columns && (t._updateColumnsMenu(), t._updateColumnsMenuHandler = e(t._updateColumnsMenu, t), t.owner.bind(["columnHide", "columnShow"], t._updateColumnsMenuHandler), t.menu.bind(o, function(r) {
  15229. var c = n(r.item),
  15230. u, f, e, l = t.owner.columns,
  15231. o;
  15232. (t._isMobile && r.preventDefault(), c.parent().closest("li.k-columns-item")[0]) && ((u = c.find(":checkbox"), u.attr("disabled")) || (o = u.attr(i.attr("field")), e = s(l, function(n) {
  15233. return n.field == o || n.title == o
  15234. })[0], f = h(e, l), e.hidden === !0 ? t.owner.showColumn(f) : t.owner.hideColumn(f)))
  15235. }))
  15236. },
  15237. _updateColumnsMenu: function() {
  15238. var r = i.attr("field"),
  15239. t = s(this._ownerColumns(), function(n) {
  15240. return !n.hidden
  15241. }),
  15242. u = s(t, function(n) {
  15243. return n.originalField
  15244. }).length;
  15245. t = v(t, function(n) {
  15246. return n.field
  15247. });
  15248. this.wrapper.find(".k-columns-item input[" + r + "]").prop("checked", !1).filter(function() {
  15249. return h(n(this).attr(r), t) > -1
  15250. }).prop("checked", !0).prop("disabled", u == 1)
  15251. },
  15252. _filter: function() {
  15253. var t = this,
  15254. i = t.options;
  15255. i.filterable !== !1 && (t.filterMenu = t.wrapper.find(".k-filterable")[b](d(!0, {}, {
  15256. appendToElement: !0,
  15257. dataSource: i.dataSource,
  15258. values: i.values,
  15259. field: t.field
  15260. }, i.filterable)).data(b), t._isMobile && t.menu.bind(o, function(i) {
  15261. var r = n(i.item);
  15262. r.hasClass("k-filter-item") && t.pane.navigate(t.filterMenu.view, t.options.animations.left)
  15263. }))
  15264. },
  15265. refresh: function() {
  15266. var n = this,
  15267. r = n.options.dataSource.sort() || [],
  15268. i, e = n.field,
  15269. t, f;
  15270. for (n.wrapper.find(".k-sort-asc, .k-sort-desc").removeClass(u), t = 0, f = r.length; t < f; t++) i = r[t], e == i.field && n.wrapper.find(".k-sort-" + i.dir).addClass(u)
  15271. }
  15272. }),
  15273. tt = '<ul>#if(sortable){#<li class="k-item k-sort-asc"><span class="k-link"><span class="k-sprite k-i-sort-asc"><\/span>${messages.sortAscending}<\/span><\/li><li class="k-item k-sort-desc"><span class="k-link"><span class="k-sprite k-i-sort-desc"><\/span>${messages.sortDescending}<\/span><\/li>#if(showColumns || filterable){#<li class="k-separator"><\/li>#}##}##if(showColumns){#<li class="k-item k-columns-item"><span class="k-link"><span class="k-sprite k-i-columns"><\/span>${messages.columns}<\/span><ul>#for (var idx = 0; idx < columns.length; idx++) {#<li><input type="checkbox" data-#=ns#field="#=columns[idx].field.replace(/"/g,"&\\#34;")#" data-#=ns#index="#=columns[idx].index#"/>#=columns[idx].title#<\/li>#}#<\/ul><\/li>#if(filterable){#<li class="k-separator"><\/li>#}##}##if(filterable){#<li class="k-item k-filter-item"><span class="k-link"><span class="k-sprite k-filter"><\/span>${messages.filter}<\/span><ul><li><div class="k-filterable"><\/div><\/li><\/ul><\/li>#}#<\/ul>',
  15274. it = '<div data-#=ns#role="view" data-#=ns#init-widgets="false" class="k-grid-column-menu"><div data-#=ns#role="header" class="k-header">${messages.settings}<button class="k-button k-done">#=messages.done#<\/button><\/div><div class="k-column-menu k-mobile-list"><ul><li><span class="k-link">${field}<\/span><ul>#if(sortable){#<li class="k-item k-sort-asc"><span class="k-link"><span class="k-sprite k-i-sort-asc"><\/span>${messages.sortAscending}<\/span><\/li><li class="k-item k-sort-desc"><span class="k-link"><span class="k-sprite k-i-sort-desc"><\/span>${messages.sortDescending}<\/span><\/li>#}##if(filterable){#<li class="k-item k-filter-item"><span class="k-link k-filterable"><span class="k-sprite k-filter"><\/span>${messages.filter}<\/span><\/li>#}#<\/ul><\/li>#if(showColumns){#<li class="k-columns-item"><span class="k-link">${messages.columns}<\/span><ul>#for (var idx = 0; idx < columns.length; idx++) {#<li class="k-item"><label class="k-label"><input type="checkbox" class="k-check" data-#=ns#field="#=columns[idx].field.replace(/"/g,"&\\#34;")#" data-#=ns#index="#=columns[idx].index#"/>#=columns[idx].title#<\/label><\/li>#}#<\/ul><\/li>#}#<\/ul><\/div><\/div>',
  15275. rt = f.extend({
  15276. init: function(n, t) {
  15277. f.fn.init.call(this, n, t);
  15278. this.element.on("click" + r, "li:not(.k-separator)", "_click")
  15279. },
  15280. events: [o],
  15281. _click: function(n) {
  15282. this.trigger(o, {
  15283. item: n.currentTarget
  15284. }) && n.preventDefault()
  15285. },
  15286. close: function() {
  15287. this.options.pane.navigate("")
  15288. },
  15289. destroy: function() {
  15290. f.fn.destroy.call(this);
  15291. this.element.off(r)
  15292. }
  15293. });
  15294. a.plugin(nt)
  15295. }(window.kendo.jQuery);
  15296. kendo_module({
  15297. id: "grid",
  15298. name: "Grid",
  15299. category: "web",
  15300. description: "The Grid widget displays tabular data and offers rich support for interacting with data,including paging, sorting, grouping, and selection.",
  15301. depends: ["data"],
  15302. features: [{
  15303. id: "grid-editing",
  15304. name: "Editing",
  15305. description: "Support for record editing",
  15306. depends: ["editable", "window"]
  15307. }, {
  15308. id: "grid-filtering",
  15309. name: "Filtering",
  15310. description: "Support for record filtering",
  15311. depends: ["filtermenu"]
  15312. }, {
  15313. id: "grid-columnmenu",
  15314. name: "Column menu",
  15315. description: "Support for header column menu",
  15316. depends: ["columnmenu"]
  15317. }, {
  15318. id: "grid-grouping",
  15319. name: "Grouping",
  15320. description: "Support for grid grouping",
  15321. depends: ["groupable"]
  15322. }, {
  15323. id: "grid-paging",
  15324. name: "Paging",
  15325. description: "Suppot for grid paging",
  15326. depends: ["pager"]
  15327. }, {
  15328. id: "grid-selection",
  15329. name: "Selection",
  15330. description: "Support for row selection",
  15331. depends: ["selectable"]
  15332. }, {
  15333. id: "grid-sorting",
  15334. name: "Sorting",
  15335. description: "Support for grid sorting",
  15336. depends: ["sortable"]
  15337. }, {
  15338. id: "grid-column-reorder",
  15339. name: "Column reordering",
  15340. description: "Support for column reordering",
  15341. depends: ["reorderable"]
  15342. }, {
  15343. id: "grid-column-resize",
  15344. name: "Column resizing",
  15345. description: "Support for column resizing",
  15346. depends: ["resizable"]
  15347. }, {
  15348. id: "grid-mobile",
  15349. name: "Grid adaptive rendering",
  15350. description: "Support for adaptive rendering",
  15351. depends: ["mobile.actionsheet", "mobile.pane"]
  15352. }]
  15353. }),
  15354. function(n, t) {
  15355. function pt(n) {
  15356. return new Array(n + 1).join('<td class="k-group-cell">&nbsp;<\/td>')
  15357. }
  15358. function lt(n) {
  15359. var t, i = " ";
  15360. if (n) {
  15361. if (typeof n === c) return n;
  15362. for (t in n) i += t + '="' + n[t] + '"'
  15363. }
  15364. return i
  15365. }
  15366. function pr(t) {
  15367. var i = 0;
  15368. return n("> .k-grouping-header, > .k-grid-toolbar", t).each(function() {
  15369. i += this.offsetHeight
  15370. }), i
  15371. }
  15372. function ui(t, i) {
  15373. n("th, th .k-grid-filter, th .k-link", t).add(document.body).css("cursor", i)
  15374. }
  15375. function fi(n) {
  15376. var t, i, r = {},
  15377. u = {};
  15378. if (!at(n))
  15379. for (k(n) || (n = [n]), t = 0, i = n.length; t < i; t++) r[n[t].aggregate] = 0, u[n[t].field] = r;
  15380. return u
  15381. }
  15382. function et(n, t, i) {
  15383. var r = n.eq(t),
  15384. u = n.eq(i);
  15385. r[t > i ? "insertBefore" : "insertAfter"](u)
  15386. }
  15387. function wr(n, t, i) {
  15388. var e, c, u, s;
  15389. for (i = k(i) ? i : [i], e = 0, c = i.length; e < c; e++)
  15390. if (u = i[e], o(u) && u.click) {
  15391. s = u.name || u.text;
  15392. t.on(h + r, "a.k-grid-" + (s || "").replace(/\s/g, ""), {
  15393. commandName: s
  15394. }, f(u.click, n))
  15395. }
  15396. }
  15397. function tt(n) {
  15398. return b(n, function(n) {
  15399. return !n.hidden
  15400. })
  15401. }
  15402. function ot(n) {
  15403. n = n || {};
  15404. var t = n.style;
  15405. return t ? (t = t.replace(/((.*)?display)(.*)?:([^;]*)/i, "$1:none"), t === n.style && (t = t.replace(/(.*)?/i, "display:none;$1"))) : t = "display:none", u({}, n, {
  15406. style: t
  15407. })
  15408. }
  15409. function ei(n) {
  15410. n = n || {};
  15411. var t = n.style;
  15412. return t && (n.style = t.replace(/(display\s*:\s*none\s*;?)*/ig, "")), n
  15413. }
  15414. function ir(t, r, u, f) {
  15415. var o = t.find(">colgroup"),
  15416. s, h = bt(r, function(n) {
  15417. return (s = n.width, s && parseInt(s, 10) !== 0) ? i.format('<col style="width:{0}"/>', typeof s === c ? s : s + "px") : "<col />"
  15418. });
  15419. (u || o.find(".k-hierarchy-col").length) && h.splice(0, 0, '<col class="k-hierarchy-col" />');
  15420. o.length && o.remove();
  15421. o = n(new Array(f + 1).join('<col class="k-group-col">') + h.join(""));
  15422. o.is("colgroup") || (o = n("<colgroup/>").append(o));
  15423. t.prepend(o);
  15424. e.msie && e.version == 8 && (t.css("display", "inline-table"), window.setTimeout(function() {
  15425. t.css("display", "")
  15426. }, 1))
  15427. }
  15428. function rr(n) {
  15429. for (var r = {}, i, t = 0, u = n.length; t < u; t++) i = n[t], r[i.value] = i.text;
  15430. return r
  15431. }
  15432. function br(n, t, r) {
  15433. var f = r && r.length && o(r[0]) && "value" in r[0],
  15434. u = f ? rr(r)[n] : n;
  15435. return u = u != null ? u : "", t ? i.format(t, u) : u
  15436. }
  15437. function st(n, t, i) {
  15438. for (var u = 0, f, r = n[u]; r;) {
  15439. if (f = i ? !0 : r.style.display !== "none", f && !ar.test(r.className) && --t < 0) {
  15440. r.style.display = i ? "" : "none";
  15441. break
  15442. }
  15443. r = n[++u]
  15444. }
  15445. }
  15446. function oi(n, t) {
  15447. var r, u, i;
  15448. if (typeof n === c && n === t || o(n) && n.name === t) return n;
  15449. if (k(n))
  15450. for (r = 0, u = n.length; r < u; r++)
  15451. if (i = n[r], typeof i === c && i === t || i.name === t) return i;
  15452. return null
  15453. }
  15454. function l(t, i) {
  15455. var u = e.msie,
  15456. r, f, o;
  15457. if (i === !0) {
  15458. if (t = n(t), r = u && t.parent().is(".k-grid-content,.k-grid-header-wrap"), r && (f = t.parent().scrollTop(), o = t.parent().scrollLeft()), u) try {
  15459. t[0].setActive()
  15460. } catch (s) {
  15461. t[0].focus()
  15462. } else t[0].focus();
  15463. r && (t.parent().scrollTop(f), t.parent().scrollLeft(o))
  15464. } else n(t).one("focusin", function(n) {
  15465. n.preventDefault()
  15466. }).focus()
  15467. }
  15468. function dr(t) {
  15469. var r = n(t.currentTarget),
  15470. f = r.is("th"),
  15471. u = r.closest("table")[0];
  15472. i.support.touch || (u === this.table[0] || u === this.thead.parent()[0]) && (this.current(r), (f || !n(t.target).is(":button,a,:input,a>.k-icon,textarea,span.k-icon,span.k-link,.k-input,.k-multiselect-wrap")) && setTimeout(function() {
  15473. yr && n(i._activeElement()).hasClass("k-widget") || l(u, !0)
  15474. }), f && t.preventDefault())
  15475. }
  15476. var i = window.kendo,
  15477. it = i.ui,
  15478. ur = i.data.DataSource,
  15479. fr = it.Groupable,
  15480. er = i.support.tbodyInnerHtml,
  15481. rt = i._activeElement,
  15482. w = it.Widget,
  15483. s = i.keys,
  15484. o = n.isPlainObject,
  15485. u = n.extend,
  15486. bt = n.map,
  15487. b = n.grep,
  15488. k = n.isArray,
  15489. d = n.inArray,
  15490. f = n.proxy,
  15491. or = i.isFunction,
  15492. at = n.isEmptyObject,
  15493. y = Math,
  15494. kt = "progress",
  15495. dt = "error",
  15496. g = ":not(.k-group-cell):not(.k-hierarchy-cell):visible",
  15497. sr = "tbody>tr:not(.k-grouping-row):not(.k-detail-row):not(.k-group-footer) > td:not(.k-group-cell):not(.k-hierarchy-cell)",
  15498. ut = "tr:not(.k-footer-template):visible",
  15499. v = ":not(.k-group-cell):not(.k-hierarchy-cell):visible",
  15500. ft = ut + ":first>" + v + ":first",
  15501. vt = "th.k-header:not(.k-group-cell,.k-hierarchy-cell)",
  15502. r = ".kendoGrid",
  15503. yt = "edit",
  15504. gt = "save",
  15505. si = "remove",
  15506. ni = "detailInit",
  15507. hi = "filterMenuInit",
  15508. ci = "columnMenuInit",
  15509. a = "change",
  15510. li = "columnHide",
  15511. ai = "columnShow",
  15512. vi = "saveChanges",
  15513. yi = "dataBound",
  15514. pi = "detailExpand",
  15515. wi = "detailCollapse",
  15516. ht = "k-state-focused",
  15517. bi = "k-state-selected",
  15518. ki = "columnResize",
  15519. di = "columnReorder",
  15520. h = "click",
  15521. ti = "height",
  15522. nt = "tabIndex",
  15523. ct = "function",
  15524. c = "string",
  15525. gi = "Are you sure you want to delete this record?",
  15526. hr = "Delete",
  15527. cr = "Cancel",
  15528. lr = /(\}|\#)/ig,
  15529. ii = /#/ig,
  15530. nr = "[\\x20\\t\\r\\n\\f]",
  15531. ar = new RegExp("(^|" + nr + ")(k-group-cell|k-hierarchy-cell)(" + nr + "|$)"),
  15532. vr = '<a class="k-button k-button-icontext #=className#" #=attr# href="\\#"><span class="#=iconClass# #=imageClass#"><\/span>#=text#<\/a>',
  15533. p = !1,
  15534. e = i.support.browser,
  15535. ri = e.msie && e.version == 7,
  15536. yr = e.msie && e.version == 8,
  15537. tr = w.extend({
  15538. init: function(n, t) {
  15539. var i = this;
  15540. w.fn.init.call(i, n, t);
  15541. i._refreshHandler = f(i.refresh, i);
  15542. i.setDataSource(t.dataSource);
  15543. i.wrap()
  15544. },
  15545. setDataSource: function(n) {
  15546. var t = this;
  15547. t.dataSource && t.dataSource.unbind(a, t._refreshHandler);
  15548. t.dataSource = n;
  15549. t.dataSource.bind(a, t._refreshHandler)
  15550. },
  15551. options: {
  15552. name: "VirtualScrollable",
  15553. itemHeight: n.noop
  15554. },
  15555. destroy: function() {
  15556. var n = this;
  15557. w.fn.destroy.call(n);
  15558. n.dataSource.unbind(a, n._refreshHandler);
  15559. n.wrapper.add(n.verticalScrollbar).off(r);
  15560. n.drag && n.drag.destroy()
  15561. },
  15562. wrap: function() {
  15563. var t = this,
  15564. o = i.support.scrollbar() + 1,
  15565. u = t.element,
  15566. e;
  15567. u.css({
  15568. width: "auto",
  15569. overflow: "hidden"
  15570. }).css(p ? "padding-left" : "padding-right", o);
  15571. t.content = u.children().first();
  15572. e = t.wrapper = t.content.wrap('<div class="k-virtual-scrollable-wrap"/>').parent().bind("DOMMouseScroll" + r + " mousewheel" + r, f(t._wheelScroll, t));
  15573. i.support.kineticScrollNeeded && (t.drag = new i.UserEvents(t.wrapper, {
  15574. global: !0,
  15575. move: function(n) {
  15576. t.verticalScrollbar.scrollTop(t.verticalScrollbar.scrollTop() - n.y.delta);
  15577. e.scrollLeft(e.scrollLeft() - n.x.delta);
  15578. n.preventDefault()
  15579. }
  15580. }));
  15581. t.verticalScrollbar = n('<div class="k-scrollbar k-scrollbar-vertical" />').css({
  15582. width: o
  15583. }).appendTo(u).bind("scroll" + r, f(t._scroll, t))
  15584. },
  15585. _wheelScroll: function(n) {
  15586. var u = this,
  15587. e = u.verticalScrollbar.scrollTop(),
  15588. i = n.originalEvent,
  15589. f = i.wheelDeltaY,
  15590. r;
  15591. i.wheelDelta ? (f === t || f) && (r = i.wheelDelta) : i.detail && i.axis === i.VERTICAL_AXIS && (r = -i.detail * 10);
  15592. r && (n.preventDefault(), u.verticalScrollbar.scrollTop(e + -r))
  15593. },
  15594. _scroll: function(n) {
  15595. var t = this,
  15596. i = n.currentTarget.scrollTop,
  15597. f = t.dataSource,
  15598. r = t.itemHeight,
  15599. e = f.skip() || 0,
  15600. o = t._rangeStart || e,
  15601. s = t.element.innerHeight(),
  15602. h = !!(t._scrollbarTop && t._scrollbarTop > i),
  15603. u = y.max(y.floor(i / r), 0),
  15604. c = y.max(u + y.floor(s / r), 0);
  15605. t._scrollTop = i - o * r;
  15606. t._scrollbarTop = i;
  15607. t._fetch(u, c, h) || (t.wrapper[0].scrollTop = t._scrollTop)
  15608. },
  15609. _fetch: function(n, t, i) {
  15610. var u = this,
  15611. e = u.dataSource,
  15612. h = u.itemHeight,
  15613. r = e.take(),
  15614. f = u._rangeStart || e.skip() || 0,
  15615. o = y.floor(n / r) * r,
  15616. s = !1,
  15617. c = .33;
  15618. return n < f ? (s = !0, f = y.max(0, t - r), u._scrollTop = (n - f) * h, u._page(f, r)) : t >= f + r && !i ? (s = !0, f = n, u._scrollTop = h, u._page(f, r)) : u._fetching || (n < o + r - r * c && n > r && e.prefetch(o - r, r), t > o + r * c && e.prefetch(o + r, r)), s
  15619. },
  15620. _page: function(n, t) {
  15621. var r = this,
  15622. u = r.dataSource;
  15623. clearTimeout(r._timeout);
  15624. r._fetching = !0;
  15625. r._rangeStart = n;
  15626. u.inRange(n, t) ? u.range(n, t) : (i.ui.progress(r.wrapper.parent(), !0), r._timeout = setTimeout(function() {
  15627. u.range(n, t)
  15628. }, 100))
  15629. },
  15630. refresh: function() {
  15631. var n = this,
  15632. u = "",
  15633. t = 25e4,
  15634. o = n.dataSource,
  15635. c = n._rangeStart,
  15636. l = i.support.kineticScrollNeeded ? 0 : i.support.scrollbar(),
  15637. f = n.wrapper[0],
  15638. r, e, s, h;
  15639. for (i.ui.progress(n.wrapper.parent(), !1), clearTimeout(n._timeout), s = n.itemHeight = n.options.itemHeight() || 0, h = f.scrollWidth > f.offsetWidth ? l : 0, r = o.total() * s + h, e = 0; e < y.floor(r / t); e++) u += '<div style="width:1px;height:' + t + 'px"><\/div>';
  15640. r % t && (u += '<div style="width:1px;height:' + r % t + 'px"><\/div>');
  15641. n.verticalScrollbar.html(u);
  15642. f.scrollTop = n._scrollTop;
  15643. n.drag && n.drag.cancel();
  15644. c && !n._fetching && (n._rangeStart = o.skip());
  15645. n._fetching = !1
  15646. }
  15647. }),
  15648. wt = {
  15649. create: {
  15650. text: "Add new record",
  15651. imageClass: "k-add",
  15652. className: "k-grid-add",
  15653. iconClass: "k-icon"
  15654. },
  15655. cancel: {
  15656. text: "Cancel changes",
  15657. imageClass: "k-cancel",
  15658. className: "k-grid-cancel-changes",
  15659. iconClass: "k-icon"
  15660. },
  15661. save: {
  15662. text: "Save changes",
  15663. imageClass: "k-update",
  15664. className: "k-grid-save-changes",
  15665. iconClass: "k-icon"
  15666. },
  15667. destroy: {
  15668. text: "Delete",
  15669. imageClass: "k-delete",
  15670. className: "k-grid-delete",
  15671. iconClass: "k-icon"
  15672. },
  15673. edit: {
  15674. text: "Edit",
  15675. imageClass: "k-edit",
  15676. className: "k-grid-edit",
  15677. iconClass: "k-icon"
  15678. },
  15679. update: {
  15680. text: "Update",
  15681. imageClass: "k-update",
  15682. className: "k-grid-update",
  15683. iconClass: "k-icon"
  15684. },
  15685. canceledit: {
  15686. text: "Cancel",
  15687. imageClass: "k-cancel",
  15688. className: "k-grid-cancel",
  15689. iconClass: "k-icon"
  15690. }
  15691. },
  15692. kr = w.extend({
  15693. init: function(n, t) {
  15694. var r = this;
  15695. t = k(t) ? {
  15696. dataSource: t
  15697. } : t;
  15698. w.fn.init.call(r, n, t);
  15699. p = i.support.isRtl(n);
  15700. r._element();
  15701. r._aria();
  15702. r._columns(r.options.columns);
  15703. r._dataSource();
  15704. r._tbody();
  15705. r._pageable();
  15706. r._thead();
  15707. r._groupable();
  15708. r._toolbar();
  15709. r._setContentHeight();
  15710. r._templates();
  15711. r._navigatable();
  15712. r._selectable();
  15713. r._details();
  15714. r._editable();
  15715. r._attachCustomCommandsEvent();
  15716. r.options.autoBind ? r.dataSource.fetch() : r._footer();
  15717. i.notify(r)
  15718. },
  15719. events: [a, "dataBinding", "cancel", yi, pi, wi, ni, hi, ci, yt, gt, si, vi, ki, di, ai, li],
  15720. setDataSource: function(n) {
  15721. var t = this;
  15722. t.options.dataSource = n;
  15723. t._dataSource();
  15724. t._pageable();
  15725. t.options.groupable && t._groupable();
  15726. t._thead();
  15727. t.virtualScrollable && t.virtualScrollable.setDataSource(t.options.dataSource);
  15728. t.options.autoBind && n.fetch()
  15729. },
  15730. options: {
  15731. name: "Grid",
  15732. columns: [],
  15733. toolbar: null,
  15734. autoBind: !0,
  15735. filterable: !1,
  15736. scrollable: !0,
  15737. sortable: !1,
  15738. selectable: !1,
  15739. navigatable: !1,
  15740. pageable: !1,
  15741. editable: !1,
  15742. groupable: !1,
  15743. rowTemplate: "",
  15744. altRowTemplate: "",
  15745. dataSource: {},
  15746. height: null,
  15747. resizable: !1,
  15748. reorderable: !1,
  15749. columnMenu: !1,
  15750. detailTemplate: null,
  15751. columnResizeHandleWidth: 3,
  15752. mobile: ""
  15753. },
  15754. destroy: function() {
  15755. var t = this,
  15756. u;
  15757. w.fn.destroy.call(t);
  15758. t.pager && t.pager.destroy();
  15759. t.groupable && t.groupable.destroy();
  15760. t.options.reorderable && t.wrapper.data("kendoReorderable").destroy();
  15761. t.selectable && t.selectable.destroy();
  15762. t.resizable && (t.resizable.destroy(), t._resizeUserEvents && (t._resizeHandleDocumentClickHandler && n(document).off("click", t._resizeHandleDocumentClickHandler), t._resizeUserEvents.destroy()));
  15763. t.virtualScrollable && t.virtualScrollable.destroy();
  15764. t._destroyColumnAttachments();
  15765. t._destroyEditable();
  15766. t.dataSource.unbind(a, t._refreshHandler).unbind(kt, t._progressHandler).unbind(dt, t._errorHandler);
  15767. u = t.element.add(t.wrapper).add(t.table).add(t.thead).add(t.wrapper.find(">.k-grid-toolbar"));
  15768. t.content && (u = u.add(t.content).add(t.content.find(">.k-virtual-scrollable-wrap")));
  15769. t.pane && t.pane.destroy();
  15770. u.off(r);
  15771. i.destroy(t.wrapper)
  15772. },
  15773. setOptions: function(n) {
  15774. var t = this;
  15775. w.fn.setOptions.call(this, n);
  15776. t._templates()
  15777. },
  15778. items: function() {
  15779. return this.tbody.children(":not(.k-grouping-row,.k-detail-row,.k-group-footer)")
  15780. },
  15781. _destroyColumnAttachments: function() {
  15782. var t = this;
  15783. t.resizeHandle = null;
  15784. t.thead.find("th").each(function() {
  15785. var t = n(this),
  15786. i = t.data("kendoFilterMenu"),
  15787. r = t.data("kendoSortable"),
  15788. u = t.data("kendoColumnMenu");
  15789. i && i.destroy();
  15790. r && r.destroy();
  15791. u && u.destroy()
  15792. })
  15793. },
  15794. _attachCustomCommandsEvent: function() {
  15795. for (var t = this, r = t.columns || [], i, n = 0, u = r.length; n < u; n++) i = r[n].command, i && wr(t, t.wrapper, i)
  15796. },
  15797. _aria: function() {
  15798. var n = this.element.attr("id") || "aria";
  15799. n && (this._cellId = n + "_active_cell")
  15800. },
  15801. _element: function() {
  15802. var t = this,
  15803. i = t.element;
  15804. i.is("table") || (i = t.options.scrollable ? t.element.find("> .k-grid-content > table") : t.element.children("table"), i.length || (i = n("<table />").appendTo(t.element)));
  15805. ri && i.attr("cellspacing", 0);
  15806. t.table = i.attr("role", t._hasDetails() ? "treegrid" : "grid");
  15807. t._wrapper()
  15808. },
  15809. _createResizeHandle: function(t, i) {
  15810. var u = this,
  15811. s = u.options.columnResizeHandleWidth,
  15812. h = u.options.scrollable,
  15813. f = u.resizeHandle,
  15814. o;
  15815. if (f || (f = u.resizeHandle = n('<div class="k-resize-handle"><div class="k-resize-handle-inner"><\/div><\/div>'), t.append(f)), p) {
  15816. var r = i.closest(".k-grid-header-wrap"),
  15817. c = e.msie ? r.scrollLeft() : 0,
  15818. l = e.webkit ? r[0].scrollWidth - r[0].offsetWidth - r.scrollLeft() : 0,
  15819. a = e.mozilla ? r[0].scrollWidth - r[0].offsetWidth - (r[0].scrollWidth - r[0].offsetWidth - r.scrollLeft()) : 0;
  15820. o = i.position().left - l + a - c
  15821. } else o = i[0].offsetWidth, i.prevAll(":visible").each(function() {
  15822. o += this.offsetWidth
  15823. });
  15824. f.css({
  15825. top: h ? 0 : pr(u.wrapper),
  15826. left: o - s,
  15827. height: i.outerHeight(),
  15828. width: s * 3
  15829. }).data("th", i).show()
  15830. },
  15831. _positionColumnResizeHandle: function(t) {
  15832. var i = this,
  15833. u = i.resizeHandle,
  15834. f = i.options.columnResizeHandleWidth;
  15835. i.thead.on("mousemove" + r, "th:not(.k-group-cell,.k-hierarchy-cell)", function(r) {
  15836. var e = n(this),
  15837. o = r.clientX,
  15838. s = n(window).scrollLeft(),
  15839. h = e.offset().left + (p ? 0 : this.offsetWidth);
  15840. o + s > h - f && o + s < h + f ? i._createResizeHandle(t, e) : u ? u.hide() : ui(i.wrapper, "")
  15841. })
  15842. },
  15843. _resizeHandleDocumentClick: function(t) {
  15844. n(t.target).closest(".k-column-active").length || (n(document).off(t), this._hideResizeHandle())
  15845. },
  15846. _hideResizeHandle: function() {
  15847. this.resizeHandle && (this.resizeHandle.data("th").removeClass("k-column-active"), this.resizeHandle.hide())
  15848. },
  15849. _positionColumnResizeHandleTouch: function(t) {
  15850. var r = this;
  15851. r._resizeUserEvents = new i.UserEvents(r.thead, {
  15852. filter: "th:not(.k-group-cell,.k-hierarchy-cell)",
  15853. threshold: 10,
  15854. hold: function(i) {
  15855. var u = n(i.target);
  15856. i.preventDefault();
  15857. u.addClass("k-column-active");
  15858. r._createResizeHandle(t, u);
  15859. r._resizeHandleDocumentClickHandler || (r._resizeHandleDocumentClickHandler = f(r._resizeHandleDocumentClick, r));
  15860. n(document).on("click", r._resizeHandleDocumentClickHandler)
  15861. }
  15862. })
  15863. },
  15864. _resizable: function() {
  15865. var t = this,
  15866. r = t.options,
  15867. u, e, f, o, h = this._isMobile,
  15868. s, i;
  15869. r.resizable && (u = r.scrollable ? t.wrapper.find(".k-grid-header-wrap:first") : t.wrapper, h ? t._positionColumnResizeHandleTouch(u) : t._positionColumnResizeHandle(u), t.resizable = new it.Resizable(u, {
  15870. handle: ".k-resize-handle",
  15871. hint: function(i) {
  15872. return n('<div class="k-grid-resize-indicator" />').css({
  15873. height: i.data("th").outerHeight() + t.tbody.attr("clientHeight")
  15874. })
  15875. },
  15876. start: function(u) {
  15877. i = n(u.currentTarget).data("th");
  15878. h && t._hideResizeHandle();
  15879. var c = n.inArray(i[0], i.parent().children(":visible")),
  15880. l = t.tbody.parent(),
  15881. a = t.footer || n();
  15882. ui(t.wrapper, "col-resize");
  15883. s = r.scrollable ? t.thead.parent().find("col:eq(" + c + ")").add(l.children("colgroup").find("col:eq(" + c + ")")).add(a.find("colgroup").find("col:eq(" + c + ")")) : l.children("colgroup").find("col:eq(" + c + ")");
  15884. e = u.x.location;
  15885. f = i.outerWidth();
  15886. o = t.tbody.outerWidth()
  15887. },
  15888. resize: function(i) {
  15889. var u = p ? -1 : 1,
  15890. h = f + i.x.location * u - e * u,
  15891. c = t.footer || n();
  15892. h > 10 && (s.css("width", h), r.scrollable && o && (t._footerWidth = o + i.x.location * u - e * u, t.tbody.parent().add(t.thead.parent()).add(c.find("table")).css("width", t._footerWidth)))
  15893. },
  15894. resizeend: function() {
  15895. var n = i.outerWidth(),
  15896. r;
  15897. ui(t.wrapper, "");
  15898. f != n && (r = t.columns[i.parent().find("th:not(.k-group-cell,.k-hierarchy-cell)").index(i)], r.width = n, t.trigger(ki, {
  15899. column: r,
  15900. oldWidth: f,
  15901. newWidth: n
  15902. }));
  15903. t._hideResizeHandle();
  15904. i = null
  15905. }
  15906. }))
  15907. },
  15908. _draggable: function() {
  15909. var t = this;
  15910. t.options.reorderable && (t._draggableInstance && t._draggableInstance.destroy(), t._draggableInstance = t.wrapper.kendoDraggable({
  15911. group: i.guid(),
  15912. filter: t.content ? ".k-grid-header:first " + vt : "table:first>.k-grid-header " + vt,
  15913. drag: function() {
  15914. t._hideResizeHandle()
  15915. },
  15916. hint: function(t) {
  15917. return n('<div class="k-header k-drag-clue" />').css({
  15918. width: t.width(),
  15919. paddingLeft: t.css("paddingLeft"),
  15920. paddingRight: t.css("paddingRight"),
  15921. lineHeight: t.height() + "px",
  15922. paddingTop: t.css("paddingTop"),
  15923. paddingBottom: t.css("paddingBottom")
  15924. }).html(t.attr(i.attr("title")) || t.attr(i.attr("field")) || t.text()).prepend('<span class="k-icon k-drag-status k-denied" />')
  15925. }
  15926. }).data("kendoDraggable"))
  15927. },
  15928. _reorderable: function() {
  15929. var n = this;
  15930. n.options.reorderable && n.wrapper.kendoReorderable({
  15931. draggable: n._draggableInstance,
  15932. change: function(t) {
  15933. var r = d(n.columns[t.newIndex], n.columns),
  15934. i = n.columns[t.oldIndex];
  15935. n.trigger(di, {
  15936. newIndex: r,
  15937. oldIndex: d(i, n.columns),
  15938. column: i
  15939. });
  15940. n.reorderColumn(r, i)
  15941. }
  15942. })
  15943. },
  15944. reorderColumn: function(n, t) {
  15945. var i = this,
  15946. r = d(t, i.columns),
  15947. e = d(t, tt(i.columns)),
  15948. o = d(i.columns[n], tt(i.columns)),
  15949. s, u, h, f = i.footer || i.wrapper.find(".k-grid-footer");
  15950. if (r !== n)
  15951. for (i._hideResizeHandle(), i.columns.splice(r, 1), i.columns.splice(n, 0, t), i._templates(), et(i.thead.prev().find("col:not(.k-group-col,.k-hierarchy-col)"), e, o), i.options.scrollable && et(i.tbody.prev().find("col:not(.k-group-col,.k-hierarchy-col)"), e, o), et(i.thead.find(".k-header:not(.k-group-cell,.k-hierarchy-cell)"), r, n), f && f.length && (et(f.find(".k-grid-footer-wrap>table>colgroup>col:not(.k-group-col,.k-hierarchy-col)"), e, o), et(f.find(".k-footer-template>td:not(.k-group-cell,.k-hierarchy-cell)"), r, n)), s = i.tbody.children(":not(.k-grouping-row,.k-detail-row)"), u = 0, h = s.length; u < h; u += 1) et(s.eq(u).find(">td:not(.k-group-cell,.k-hierarchy-cell)"), r, n)
  15952. },
  15953. cellIndex: function(t) {
  15954. return n(t).parent().children("td:not(.k-group-cell,.k-hierarchy-cell)").index(t)
  15955. },
  15956. _modelForContainer: function(t) {
  15957. t = n(t);
  15958. t.is("tr") || this._editMode() === "popup" || (t = t.closest("tr"));
  15959. var r = t.attr(i.attr("uid"));
  15960. return this.dataSource.getByUid(r)
  15961. },
  15962. _editable: function() {
  15963. var t = this,
  15964. f = t.selectable && t.selectable.options.multiple,
  15965. i = t.options.editable,
  15966. e = function() {
  15967. var i = rt(),
  15968. r = t._editContainer;
  15969. !r || n.contains(r[0], i) || r[0] === i || n(i).closest(".k-animation-container").length || t.editable.end() && t.closeCell()
  15970. },
  15971. u;
  15972. if (i) {
  15973. if (u = t._editMode(), u === "incell") {
  15974. if (i.update !== !1) t.wrapper.on(h + r, "tr:not(.k-grouping-row) > td", function(i) {
  15975. var r = n(this);
  15976. r.hasClass("k-hierarchy-cell") || r.hasClass("k-detail-cell") || r.hasClass("k-group-cell") || r.hasClass("k-edit-cell") || r.has("a.k-grid-delete").length || r.has("button.k-grid-delete").length || r.closest("tbody")[0] !== t.tbody[0] || n(i.target).is(":input") || (t.editable ? t.editable.end() && (f && n(rt()).blur(), t.closeCell(), t.editCell(r)) : t.editCell(r))
  15977. }).on("focusin" + r, function() {
  15978. clearTimeout(t.timer);
  15979. t.timer = null
  15980. }).on("focusout" + r, function() {
  15981. t.timer = setTimeout(e, 1)
  15982. })
  15983. } else if (i.update !== !1) t.wrapper.on(h + r, "tbody>tr:not(.k-detail-row,.k-grouping-row):visible a.k-grid-edit", function(i) {
  15984. i.preventDefault();
  15985. t.editRow(n(this).closest("tr"))
  15986. });
  15987. if (i.destroy !== !1) t.wrapper.on(h + r, "tbody>tr:not(.k-detail-row,.k-grouping-row):visible .k-grid-delete", function(i) {
  15988. i.preventDefault();
  15989. i.stopPropagation();
  15990. t.removeRow(n(this).closest("tr"))
  15991. });
  15992. else t.wrapper.on(h + r, "tbody>tr:not(.k-detail-row,.k-grouping-row):visible button.k-grid-delete", function(n) {
  15993. n.stopPropagation();
  15994. t._confirmation() || n.preventDefault()
  15995. })
  15996. }
  15997. },
  15998. editCell: function(t) {
  15999. t = n(t);
  16000. var i = this,
  16001. r = i.columns[i.cellIndex(t)],
  16002. u = i._modelForContainer(t);
  16003. u && (!u.editable || u.editable(r.field)) && !r.command && r.field && (i._attachModelChange(u), i._editContainer = t, i.editable = t.addClass("k-edit-cell").kendoEditable({
  16004. fields: {
  16005. field: r.field,
  16006. format: r.format,
  16007. editor: r.editor,
  16008. values: r.values
  16009. },
  16010. model: u,
  16011. change: function(n) {
  16012. i.trigger(gt, {
  16013. values: n.values,
  16014. container: t,
  16015. model: u
  16016. }) && n.preventDefault()
  16017. }
  16018. }).data("kendoEditable"), t.parent().addClass("k-grid-edit-row"), i.trigger(yt, {
  16019. container: t,
  16020. model: u
  16021. }))
  16022. },
  16023. _destroyEditable: function() {
  16024. var n = this,
  16025. t = function() {
  16026. n.editable && (n._detachModelChange(), n.editable.destroy(), n.editable = null, n._editContainer = null, n._destroyEditView())
  16027. };
  16028. n.editable && (n._editMode() !== "popup" || n._isMobile ? t() : n._editContainer.data("kendoWindow").bind("deactivate", t).close());
  16029. n._actionSheet && (n._actionSheet.destroy(), n._actionSheet = null)
  16030. },
  16031. _destroyEditView: function() {
  16032. this.editView && (this.editView.purge(), this.editView = null, this.pane.navigate(""))
  16033. },
  16034. _attachModelChange: function(n) {
  16035. var t = this;
  16036. t._modelChangeHandler = function(n) {
  16037. t._modelChange({
  16038. field: n.field,
  16039. model: this
  16040. })
  16041. };
  16042. n.bind("change", t._modelChangeHandler)
  16043. },
  16044. _detachModelChange: function() {
  16045. var n = this,
  16046. i = n._editContainer,
  16047. t = n._modelForContainer(i);
  16048. t && t.unbind(a, n._modelChangeHandler)
  16049. },
  16050. closeCell: function(t) {
  16051. var u = this,
  16052. r = u._editContainer,
  16053. e, o, f;
  16054. r && ((e = r.closest("tr").attr(i.attr("uid")), f = u.dataSource.getByUid(e), t && u.trigger("cancel", {
  16055. container: r,
  16056. model: f
  16057. })) || (r.removeClass("k-edit-cell"), o = u.columns[u.cellIndex(r)], r.parent().removeClass("k-grid-edit-row"), u._destroyEditable(), u._displayCell(r, o, f), r.hasClass("k-dirty-cell") && n('<span class="k-dirty"/>').prependTo(r)))
  16058. },
  16059. _displayCell: function(n, t, r) {
  16060. var s = this,
  16061. e = {
  16062. storage: {},
  16063. count: 0
  16064. },
  16065. h = u({}, i.Template, s.options.templateSettings),
  16066. o = i.template(s._cellTmpl(t, e), h);
  16067. e.count > 0 && (o = f(o, e.storage));
  16068. n.empty().html(o(r))
  16069. },
  16070. removeRow: function(n) {
  16071. this._confirmation(n) && this._removeRow(n)
  16072. },
  16073. _removeRow: function(t) {
  16074. var i = this,
  16075. r, u;
  16076. t = n(t).hide();
  16077. r = i._modelForContainer(t);
  16078. r && !i.trigger(si, {
  16079. row: t,
  16080. model: r
  16081. }) && (u = i._editMode(), u !== "incell" && i.cancelRow(), i.dataSource.remove(r), (u === "inline" || u === "popup") && i.dataSource.sync())
  16082. },
  16083. _editMode: function() {
  16084. var t = "incell",
  16085. n = this.options.editable;
  16086. return n !== !0 && (t = typeof n == "string" ? n : n.mode || t), t
  16087. },
  16088. editRow: function(t) {
  16089. var f, u = this,
  16090. e, s, o;
  16091. if (t instanceof i.data.ObservableObject ? f = t : (t = n(t), f = u._modelForContainer(t)), e = u._editMode(), s = u.options.navigatable, u.cancelRow(), f) {
  16092. u._attachModelChange(f);
  16093. e === "popup" ? u._createPopupEditor(f) : e === "inline" ? u._createInlineEditor(t, f) : e === "incell" && n(t).children(g).each(function() {
  16094. var t = n(this),
  16095. i = u.columns[t.index()];
  16096. return f = u._modelForContainer(t), f && (!f.editable || f.editable(i.field)) && i.field ? (u.editCell(t), !1) : void 0
  16097. });
  16098. o = u.editView ? u.editView.element : u._editContainer;
  16099. o.on(h + r, "a.k-grid-cancel", function(t) {
  16100. if (t.preventDefault(), t.stopPropagation(), !u.trigger("cancel", {
  16101. container: o,
  16102. model: f
  16103. })) {
  16104. var i = u.items().index(n(u.current()).parent());
  16105. u.cancelRow();
  16106. s && (u.current(u.items().eq(i).children().filter(v).first()), l(u.table, !0))
  16107. }
  16108. });
  16109. o.on(h + r, "a.k-grid-update", function(n) {
  16110. n.preventDefault();
  16111. n.stopPropagation();
  16112. u.saveRow()
  16113. })
  16114. }
  16115. },
  16116. _createPopupEditor: function(t) {
  16117. var r = this,
  16118. s = "<div " + i.attr("uid") + '="' + t.uid + '" class="k-popup-edit-form' + (r._isMobile ? " k-mobile-list" : "") + '"><div class="k-edit-form-container">',
  16119. e, h, ut = [],
  16120. a, k, d, tt, it, y, p, rt = r.options.editable,
  16121. w = rt.template,
  16122. g = o(rt) ? rt.window : {},
  16123. ft = u({}, i.Template, r.options.templateSettings),
  16124. nt, b;
  16125. if (g = g || {}, w)
  16126. for (typeof w === c && (w = window.unescape(w)), s += i.template(w, ft)(t), a = 0, k = r.columns.length; a < k; a++) e = r.columns[a], e.command && (y = oi(e.command, "edit"), y && (h = y));
  16127. else
  16128. for (a = 0, k = r.columns.length; a < k; a++) e = r.columns[a], e.command ? e.command && (y = oi(e.command, "edit"), y && (h = y)) : (s += '<div class="k-edit-label"><label for="' + e.field + '">' + (e.title || e.field || "") + "<\/label><\/div>", (!t.editable || t.editable(e.field)) && e.field ? (ut.push({
  16129. field: e.field,
  16130. format: e.format,
  16131. editor: e.editor,
  16132. values: e.values
  16133. }), s += "<div " + i.attr("container-for") + '="' + e.field + '" class="k-edit-field"><\/div>') : (nt = {
  16134. storage: {},
  16135. count: 0
  16136. }, d = i.template(r._cellTmpl(e, nt), ft), nt.count > 0 && (d = f(d, nt.storage)), s += '<div class="k-edit-field">' + d(t) + "<\/div>"));
  16137. h && o(h) && (h.text && o(h.text) && (tt = h.text.update, it = h.text.cancel), h.attr && (p = h.attr));
  16138. r._isMobile ? (s += "<\/div><\/div>", r.editView = r.pane.append("<div data-" + i.ns + 'role="view" data-' + i.ns + 'init-widgets="false" class="k-grid-edit-form"><div data-' + i.ns + 'role="header" class="k-header">' + r._createButton({
  16139. name: "update",
  16140. text: tt,
  16141. attr: p
  16142. }) + (g.title || "Edit") + r._createButton({
  16143. name: "canceledit",
  16144. text: it,
  16145. attr: p
  16146. }) + "<\/div>" + s + "<\/div>"), b = r._editContainer = r.editView.element.find(".k-popup-edit-form")) : (s += '<div class="k-edit-buttons k-state-default">', s += r._createButton({
  16147. name: "update",
  16148. text: tt,
  16149. attr: p
  16150. }) + r._createButton({
  16151. name: "canceledit",
  16152. text: it,
  16153. attr: p
  16154. }), s += "<\/div><\/div><\/div>", b = r._editContainer = n(s).appendTo(r.wrapper).eq(0).kendoWindow(u({
  16155. modal: !0,
  16156. resizable: !1,
  16157. draggable: !0,
  16158. title: "Edit",
  16159. visible: !1,
  16160. close: function(i) {
  16161. if (i.userTriggered) {
  16162. if (i.sender.element.focus(), r.trigger("cancel", {
  16163. container: b,
  16164. model: t
  16165. })) {
  16166. i.preventDefault();
  16167. return
  16168. }
  16169. var u = r.items().index(n(r.current()).parent());
  16170. r.cancelRow();
  16171. r.options.navigatable && (r.current(r.items().eq(u).children().filter(v).first()), l(r.table, !0))
  16172. }
  16173. }
  16174. }, g)));
  16175. r.editable = r._editContainer.kendoEditable({
  16176. fields: ut,
  16177. model: t,
  16178. clearContainer: !1
  16179. }).data("kendoEditable");
  16180. r._isMobile && b.find("input[type=checkbox],input[type=radio]").parent(".k-edit-field").addClass("k-check").prev(".k-edit-label").addClass("k-check").click(function() {
  16181. n(this).next().children("input").click()
  16182. });
  16183. r._openPopUpEditor();
  16184. r.trigger(yt, {
  16185. container: b,
  16186. model: t
  16187. })
  16188. },
  16189. _openPopUpEditor: function() {
  16190. this._isMobile ? this.pane.navigate(this.editView, this._editAnimation) : this._editContainer.data("kendoWindow").center().open()
  16191. },
  16192. _createInlineEditor: function(t, r) {
  16193. var e = this,
  16194. u, s, f, h = [];
  16195. t.children(":not(.k-group-cell,.k-hierarchy-cell)").each(function() {
  16196. if (s = n(this), u = e.columns[e.cellIndex(s)], !u.command && u.field && (!r.editable || r.editable(u.field))) h.push({
  16197. field: u.field,
  16198. format: u.format,
  16199. editor: u.editor,
  16200. values: u.values
  16201. }), s.attr(i.attr("container-for"), u.field), s.empty();
  16202. else if (u.command && (f = oi(u.command, "edit"), f)) {
  16203. s.empty();
  16204. var c, l, t;
  16205. o(f) && (f.text && o(f.text) && (c = f.text.update, l = f.text.cancel), f.attr && (t = f.attr));
  16206. n(e._createButton({
  16207. name: "update",
  16208. text: c,
  16209. attr: t
  16210. }) + e._createButton({
  16211. name: "canceledit",
  16212. text: l,
  16213. attr: t
  16214. })).appendTo(s)
  16215. }
  16216. });
  16217. e._editContainer = t;
  16218. e.editable = t.addClass("k-grid-edit-row").kendoEditable({
  16219. fields: h,
  16220. model: r,
  16221. clearContainer: !1
  16222. }).data("kendoEditable");
  16223. e.trigger(yt, {
  16224. container: t,
  16225. model: r
  16226. })
  16227. },
  16228. cancelRow: function() {
  16229. var n = this,
  16230. t = n._editContainer,
  16231. r;
  16232. t && (r = n._modelForContainer(t), n._destroyEditable(), n.dataSource.cancelChanges(r), n._editMode() !== "popup" ? n._displayRow(t) : n._displayRow(n.items().filter("[" + i.attr("uid") + "=" + r.uid + "]")))
  16233. },
  16234. saveRow: function() {
  16235. var n = this,
  16236. t = n._editContainer,
  16237. r = n._modelForContainer(t),
  16238. i = n.editable;
  16239. t && i && i.end() && !n.trigger(gt, {
  16240. container: t,
  16241. model: r
  16242. }) && n.dataSource.sync()
  16243. },
  16244. _displayRow: function(t) {
  16245. var i = this,
  16246. r = i._modelForContainer(t);
  16247. r && t.replaceWith(n((t.hasClass("k-alt") ? i.altRowTemplate : i.rowTemplate)(r)))
  16248. },
  16249. _showMessage: function(t, r) {
  16250. var u = this;
  16251. if (!u._isMobile) return window.confirm(t.title);
  16252. var f = i.template('<ul><li class="km-actionsheet-title">#:title#<\/li><li><a href="\\#" class="k-button k-grid-delete">#:confirmDelete#<\/a><\/li><\/ul>'),
  16253. e = n(f(t)).appendTo(u.view.element),
  16254. o = u._actionSheet = new i.mobile.ui.ActionSheet(e, {
  16255. cancel: t.cancelDelete,
  16256. cancelTemplate: '<li class="km-actionsheet-cancel"><a class="k-button" href="\\#">#:cancel#<\/a><\/li>',
  16257. close: function() {
  16258. this.destroy()
  16259. },
  16260. command: function(t) {
  16261. var i = n(t.currentTarget).parent();
  16262. i.hasClass("km-actionsheet-cancel") || u._removeRow(r)
  16263. },
  16264. popup: u._actionSheetPopupOptions
  16265. });
  16266. return o.open(r), !1
  16267. },
  16268. _confirmation: function(n) {
  16269. var r = this,
  16270. t = r.options.editable,
  16271. i = t === !0 || typeof t === c ? gi : t.confirmation;
  16272. return i !== !1 && i != null ? r._showMessage({
  16273. confirmDelete: t.confirmDelete || hr,
  16274. cancelDelete: t.cancelDelete || cr,
  16275. title: i === !0 ? gi : i
  16276. }, n) : !0
  16277. },
  16278. cancelChanges: function() {
  16279. this.dataSource.cancelChanges()
  16280. },
  16281. saveChanges: function() {
  16282. var n = this;
  16283. (n.editable && n.editable.end() || !n.editable) && !n.trigger(vi) && n.dataSource.sync()
  16284. },
  16285. addRow: function() {
  16286. var n = this,
  16287. r, t = n.dataSource,
  16288. f = n._editMode(),
  16289. c = n.options.editable.createAt || "",
  16290. e = t.pageSize(),
  16291. o = t.view() || [];
  16292. if (n.editable && n.editable.end() || !n.editable) {
  16293. f != "incell" && n.cancelRow();
  16294. r = t.indexOf(o[0]);
  16295. c.toLowerCase() == "bottom" && (r += o.length, e && !t.options.serverPaging && e <= o.length && (r -= 1));
  16296. r < 0 && (r = t.page() > t.totalPages() ? (t.page() - 1) * e : 0);
  16297. var s = t.insert(r, {}),
  16298. l = s.uid,
  16299. u = n.table.find("tr[" + i.attr("uid") + "=" + l + "]"),
  16300. h = u.children("td:not(.k-group-cell,.k-hierarchy-cell)").eq(n._firstEditableColumnIndex(u));
  16301. f === "inline" && u.length ? n.editRow(u) : f === "popup" ? n.editRow(s) : h.length && n.editCell(h)
  16302. }
  16303. },
  16304. _firstEditableColumnIndex: function(n) {
  16305. for (var u = this, i, f = u.columns, r = u._modelForContainer(n), t = 0, e = f.length; t < e; t++)
  16306. if (i = f[t], r && (!r.editable || r.editable(i.field)) && !i.command && i.field) return t;
  16307. return -1
  16308. },
  16309. _toolbar: function() {
  16310. var t = this,
  16311. s = t.wrapper,
  16312. u = t.options.toolbar,
  16313. o = t.options.editable,
  16314. e;
  16315. if (u && (e = t.wrapper.find(".k-grid-toolbar"), e.length || (or(u) || (u = typeof u === c ? u : t._toolbarTmpl(u).replace(ii, "\\#"), u = f(i.template(u), t)), e = n('<div class="k-toolbar k-grid-toolbar" />').html(u({})).prependTo(s)), o && o.create !== !1)) e.on(h + r, ".k-grid-add", function(n) {
  16316. n.preventDefault();
  16317. t.addRow()
  16318. }).on(h + r, ".k-grid-cancel-changes", function(n) {
  16319. n.preventDefault();
  16320. t.cancelChanges()
  16321. }).on(h + r, ".k-grid-save-changes", function(n) {
  16322. n.preventDefault();
  16323. t.saveChanges()
  16324. })
  16325. },
  16326. _toolbarTmpl: function(n) {
  16327. var u = this,
  16328. t, i, r = "";
  16329. if (k(n))
  16330. for (t = 0, i = n.length; t < i; t++) r += u._createButton(n[t]);
  16331. return r
  16332. },
  16333. _createButton: function(n) {
  16334. var f = n.template || vr,
  16335. t = typeof n === c ? n : n.name || n.text,
  16336. e = wt[t] ? wt[t].className : "k-grid-" + (t || "").replace(/\s/g, ""),
  16337. r = {
  16338. className: e,
  16339. text: t,
  16340. imageClass: "",
  16341. attr: "",
  16342. iconClass: ""
  16343. };
  16344. if (!t && !(o(n) && n.template)) throw new Error("Custom commands should have name specified");
  16345. return o(n) ? (n.className && (n.className += " " + r.className), t === "edit" && o(n.text) && (n = u(!0, {}, n), n.text = n.text.edit), n.attr && o(n.attr) && (n.attr = lt(n.attr)), r = u(!0, r, wt[t], n)) : r = u(!0, r, wt[t]), i.template(f)(r)
  16346. },
  16347. _hasFooters: function() {
  16348. for (var t = this.columns, i = t.length, n = 0; n < i; n++)
  16349. if (t[n].footerTemplate !== "" || t[n].groupFooterTemplate !== "") return !0;
  16350. return !1
  16351. },
  16352. _groupable: function() {
  16353. var t = this;
  16354. t._groupableClickHandler ? t.table.off(h + r, t._groupableClickHandler) : t._groupableClickHandler = function(i) {
  16355. var r = n(this),
  16356. u = r.closest("tr");
  16357. r.hasClass("k-i-collapse") ? t.collapseGroup(u) : t.expandGroup(u);
  16358. i.preventDefault();
  16359. i.stopPropagation()
  16360. };
  16361. t.table.on(h + r, ".k-grouping-row .k-i-collapse, .k-grouping-row .k-i-expand", t._groupableClickHandler);
  16362. t._attachGroupable()
  16363. },
  16364. _attachGroupable: function() {
  16365. var t = this,
  16366. r = t.wrapper,
  16367. f = t.options.groupable,
  16368. e = vt + ":visible[" + i.attr("field") + "]",
  16369. o = vt + "[" + i.attr("field") + "]";
  16370. f && (r.has("div.k-grouping-header")[0] || n("<div>&nbsp;<\/div>").addClass("k-grouping-header").prependTo(r), t.groupable && t.groupable.destroy(), t.groupable = new fr(r, u({}, f, {
  16371. draggable: t._draggableInstance,
  16372. groupContainer: ">div.k-grouping-header",
  16373. dataSource: t.dataSource,
  16374. draggableElements: t.content ? ".k-grid-header:first " + e : "table:first>.k-grid-header " + e,
  16375. filter: t.content ? ".k-grid-header:first " + o : "table:first>.k-grid-header " + o,
  16376. allowDrag: t.options.reorderable
  16377. })))
  16378. },
  16379. _selectable: function() {
  16380. var n = this,
  16381. f, e, t = [],
  16382. u = n.options.selectable;
  16383. if (u && (f = typeof u === c && u.toLowerCase().indexOf("multiple") > -1, e = typeof u === c && u.toLowerCase().indexOf("cell") > -1, n._hasDetails() && (t[t.length] = ".k-detail-row"), (n.options.groupable || n._hasFooters()) && (t[t.length] = ".k-grouping-row,.k-group-footer"), t = t.join(","), t !== "" && (t = ":not(" + t + ")"), n.selectable = new i.ui.Selectable(n.table, {
  16384. filter: ">" + (e ? sr : "tbody>tr" + t),
  16385. aria: !0,
  16386. multiple: f,
  16387. change: function() {
  16388. n.trigger(a)
  16389. }
  16390. }), n.options.navigatable)) n.table.on("keydown" + r, function(t) {
  16391. var i = n.current();
  16392. if (t.keyCode === s.SPACEBAR && t.target == n.table[0] && !i.is(".k-edit-cell,.k-header") && i.parent().is(":not(.k-grouping-row,.k-detail-row,.k-group-footer)")) {
  16393. if (t.preventDefault(), t.stopPropagation(), i = e ? i : i.parent(), f)
  16394. if (t.ctrlKey) {
  16395. if (i.hasClass(bi)) {
  16396. i.removeClass(bi);
  16397. n.trigger(a);
  16398. return
  16399. }
  16400. } else n.selectable.clear();
  16401. else n.selectable.clear();
  16402. n.selectable.value(i)
  16403. }
  16404. })
  16405. },
  16406. clearSelection: function() {
  16407. var n = this;
  16408. n.selectable.clear();
  16409. n.trigger(a)
  16410. },
  16411. select: function(t) {
  16412. var r = this,
  16413. i = r.selectable;
  16414. if (t = n(t), t.length) {
  16415. i.options.multiple || (i.clear(), t = t.first());
  16416. i.value(t);
  16417. return
  16418. }
  16419. return i.value()
  16420. },
  16421. current: function(i) {
  16422. var r = this,
  16423. f = r.options.scrollable,
  16424. u = r._current,
  16425. e = r.table.add(r.thead.parent());
  16426. return i !== t && i.length && (u && u[0] === i[0] || (u && (u.removeClass(ht).removeAttr("id"), e.removeAttr("aria-activedescendant")), i.attr("id", r._cellId), r._current = i.addClass(ht), e.attr("aria-activedescendant", r._cellId), i.length && f && (n.contains(r.content[0], i[0]) && r._scrollTo(i.parent()[0], r.content[0]), f.virtual ? r._scrollTo(i[0], r.content.find(">.k-virtual-scrollable-wrap")[0]) : r._scrollTo(i[0], r.content[0])))), r._current
  16427. },
  16428. _removeCurrent: function() {
  16429. this._current && (this._current.removeClass(ht), this._current = null)
  16430. },
  16431. _scrollTo: function(n, t) {
  16432. var e = n.tagName.toLowerCase(),
  16433. i = e === "td" || e === "th",
  16434. r = n[i ? "offsetLeft" : "offsetTop"],
  16435. o = n[i ? "offsetWidth" : "offsetHeight"],
  16436. u = t[i ? "scrollLeft" : "scrollTop"],
  16437. f = t[i ? "clientWidth" : "clientHeight"],
  16438. s = r + o,
  16439. h = 0;
  16440. h = u > r ? r : s > u + f ? o <= f ? s - f : r : u;
  16441. t[i ? "scrollLeft" : "scrollTop"] = h
  16442. },
  16443. _navigatable: function() {
  16444. var t = this,
  16445. o = f(t.current, t),
  16446. u = t.table,
  16447. h = t.thead.parent(),
  16448. c = u,
  16449. a = i.support.isRtl(t.element);
  16450. if (t.options.navigatable) {
  16451. t.options.scrollable && (c = u.add(h), h.attr(nt, -1));
  16452. h.on("keydown" + r, function(n) {
  16453. n.altKey && n.keyCode == s.DOWN && (o().find(".k-grid-filter, .k-header-column-menu").click(), n.stopImmediatePropagation())
  16454. }).find("a.k-link").attr("tabIndex", -1);
  16455. u.attr(nt, y.max(u.attr(nt) || 0, 0)).on("mousedown" + r + " keydown" + r, ".k-detail-cell", function(n) {
  16456. n.target !== n.currentTarget && n.stopImmediatePropagation()
  16457. });
  16458. c.on(i.support.touch ? "touchstart" + r : "mousedown" + r, ut + ">" + v, f(dr, t)).on("focus" + r, function() {
  16459. if (!i.support.touch) {
  16460. var t = o();
  16461. t && t.is(":visible") ? t.addClass(ht) : o(n(this).find(ft));
  16462. this == u[0] ? (h.attr(nt, -1), u.attr(nt, 0)) : (u.attr(nt, -1), h.attr(nt, 0))
  16463. }
  16464. }).on("focusout" + r, function() {
  16465. var n = o();
  16466. n && n.removeClass(ht)
  16467. }).on("keydown" + r, function(i) {
  16468. var h = i.keyCode,
  16469. f = !1,
  16470. p = !i.isDefaultPrevented() && !n(i.target).is(":button,a,:input,a>.k-icon"),
  16471. st = t.options.pageable,
  16472. w = t.dataSource,
  16473. nt = t._editMode() == "incell",
  16474. b, tt, c, k, it, et = i.shiftKey,
  16475. r = o(),
  16476. ot, d, y;
  16477. r && r.is("th") && (p = !0);
  16478. p && h == s.UP ? (r ? (c = r.parent().prevAll(ut).first(), c[0] || (it = t.thead.parent(), l(it, !0), c = it.find(ut).first()), k = r.index(), r = c.children().eq(k), r[0] && r.is(v) || (r = c.children(v).first())) : r = u.find(ft), f = !0, o(r)) : p && h == s.DOWN ? (r ? (c = r.parent().nextAll(ut).first(), !c[0] && r.is("th") && (l(t.tbody.parent()), c = t.tbody.find(ut).first()), k = r.index(), r = c.children().eq(k), r[0] && r.is(v) || (r = c.children(v).first())) : r = u.find(ft), f = !0, o(r)) : p && h == (a ? s.RIGHT : s.LEFT) ? (o(r ? r.prevAll(g + ":first") : u.find(ft)), f = !0) : p && h == (a ? s.LEFT : s.RIGHT) ? (r ? r.next()[0] && (r = r.nextAll(g + ":first")) : r = u.find(ft), f = !0, o(r)) : p && st && s.PAGEDOWN == h ? (w.page(w.page() + 1), f = !0) : p && st && s.PAGEUP == h ? (w.page(w.page() - 1), f = !0) : h == s.ENTER || s.F2 == h ? (r = r ? r : u.find(ft), r.is("th") ? (r.find(".k-link").click(), f = !0) : r.parent().is(".k-master-row,.k-grouping-row") ? (r.parent().find(".k-icon:first").click(), f = !0) : (ot = r.find(":kendoFocusable:first"), !r.hasClass("k-edit-cell") && ot[0] && r.hasClass("k-state-focused") ? (ot.focus(), f = !0) : t.options.editable && !n(i.target).is(":button,.k-button,textarea") && (d = n(i.target).closest("[role=gridcell]"), d[0] || (d = r), t._handleEditing(d), f = !0))) : s.ESC == h ? (b = rt(), r && n.contains(r[0], b) && !r.hasClass("k-edit-cell") && !r.parent().hasClass("k-grid-edit-row") ? (l(t.table[0], !0), f = !0) : t._editContainer && (!r || t._editContainer.has(r[0]) || r[0] === t._editContainer[0]) && (nt ? t.closeCell(!0) : (tt = t.items().index(n(r).parent()), b && b.blur(), t.cancelRow(), tt >= 0 && t.current(t.items().eq(tt).children().filter(v).first())), e.msie && e.version < 9 && document.body.focus(), l(u, !0), f = !0)) : s.TAB == h && (r = n(r), t.options.editable && nt && (y = n(rt()).closest(".k-edit-cell"), y[0] && y[0] !== r[0] && (r = y)), y = et ? r.prevAll(g + ":first") : r.nextAll(":visible:first"), y.length || (y = r.parent()[et ? "prevAll" : "nextAll"]("tr:not(.k-grouping-row):not(.k-detail-row):visible:first").children(g + (et ? ":last" : ":first"))), !r.is("th") && y.length && t.options.editable && nt && (t._handleEditing(r, y), f = !0));
  16479. f && (i.preventDefault(), i.stopPropagation())
  16480. })
  16481. }
  16482. },
  16483. _handleEditing: function(t, i) {
  16484. var r = this,
  16485. u = n(rt()),
  16486. f = r._editMode(),
  16487. c = e.msie,
  16488. a = c && e.version < 9,
  16489. o = r._editContainer,
  16490. s, h;
  16491. if (h = f == "incell" ? t.hasClass("k-edit-cell") : t.parent().hasClass("k-grid-edit-row"), r.editable) {
  16492. if (n.contains(o[0], u[0]) && (e.opera || a ? u.change().triggerHandler("blur") : (u.blur(), c && u.blur())), !r.editable) {
  16493. l(r.table);
  16494. return
  16495. }
  16496. if (r.editable.end()) f == "incell" ? r.closeCell() : (r.saveRow(), h = !0);
  16497. else {
  16498. f == "incell" ? r.current(o) : r.current(o.children().filter(g).first());
  16499. s = o.find(":kendoFocusable:first")[0];
  16500. s && s.focus();
  16501. return
  16502. }
  16503. }
  16504. i && r.current(i);
  16505. a && document.body.focus();
  16506. l(r.table, !0);
  16507. (h || i) && !i || (f == "incell" ? r.editCell(r.current()) : r.editRow(r.current().parent()))
  16508. },
  16509. _wrapper: function() {
  16510. var n = this,
  16511. r = n.table,
  16512. i = n.options.height,
  16513. t = n.element;
  16514. t.is("div") || (t = t.wrap("<div/>").parent());
  16515. n.wrapper = t.addClass("k-grid k-widget k-secondary");
  16516. i && (n.wrapper.css(ti, i), r.css(ti, "auto"));
  16517. n._initMobile()
  16518. },
  16519. _initMobile: function() {
  16520. var t = this.options,
  16521. r;
  16522. this._isMobile = t.mobile === !0 && i.support.mobileOS || t.mobile === "phone" || t.mobile === "tablet";
  16523. this._isMobile && (r = this.wrapper.addClass("k-grid-mobile").wrap("<div data-" + i.ns + 'role="view" data-' + i.ns + 'init-widgets="false"><\/div>').parent(), this.pane = i.mobile.ui.Pane.wrap(r), this.view = this.pane.view(), this._actionSheetPopupOptions = n(document.documentElement).hasClass("km-root") ? {
  16524. modal: !1
  16525. } : {
  16526. align: "bottom center",
  16527. position: "bottom center",
  16528. effect: "slideIn:up"
  16529. }, t.height && this.pane.element.parent().css(ti, t.height), this._editAnimation = "slide")
  16530. },
  16531. _tbody: function() {
  16532. var i = this,
  16533. r = i.table,
  16534. t;
  16535. t = r.find(">tbody");
  16536. t.length || (t = n("<tbody/>").appendTo(r));
  16537. i.tbody = t
  16538. },
  16539. _scrollable: function() {
  16540. var t = this,
  16541. u, s, y = t.options,
  16542. o = y.scrollable,
  16543. v = o !== !0 && o.virtual && !t.virtualScrollable,
  16544. c = !i.support.kineticScrollNeeded || v ? i.support.scrollbar() : 0,
  16545. l, a, h;
  16546. o && (u = t.wrapper.children(".k-grid-header"), u[0] || (u = n('<div class="k-grid-header" />').insertBefore(t.table)), u.css(p ? "padding-left" : "padding-right", o.virtual ? c + 1 : c), s = n('<table role="grid" />'), ri && s.attr("cellspacing", 0), s.append(t.thead), u.empty().append(n('<div class="k-grid-header-wrap" />').append(s)), t.content = t.table.parent(), t.content.is(".k-virtual-scrollable-wrap") && (t.content = t.content.parent()), t.content.is(".k-grid-content, .k-virtual-scrollable-wrap") || (t.content = t.table.wrap('<div class="k-grid-content" />').parent()), v && (t.virtualScrollable = new tr(t.content, {
  16547. dataSource: t.dataSource,
  16548. itemHeight: f(t._averageRowHeight, t)
  16549. })), t.scrollables = u.children(".k-grid-header-wrap"), l = t.wrapper.find(".k-grid-footer"), a = p && e.webkit ? c : 0, l.length && (t.scrollables = t.scrollables.add(l.children(".k-grid-footer-wrap"))), o.virtual ? t.content.find(">.k-virtual-scrollable-wrap").bind("scroll" + r, function() {
  16550. t.scrollables.scrollLeft(this.scrollLeft + a)
  16551. }) : (t.content.bind("scroll" + r, function() {
  16552. t.scrollables.scrollLeft(this.scrollLeft + a)
  16553. }), h = i.touchScroller(t.content), h && h.movable && h.movable.bind("change", function(n) {
  16554. t.scrollables.scrollLeft(-n.sender.x)
  16555. })))
  16556. },
  16557. _setContentWidth: function() {
  16558. var t = this,
  16559. u = "k-grid-content-expander",
  16560. e = '<div class="' + u + '"><\/div>',
  16561. r = t.resizable,
  16562. i;
  16563. t.options.scrollable && t.wrapper.is(":visible") && (i = t.table.parent().children("." + u), t._setContentWidthHandler = f(t._setContentWidth, t), t.dataSource && t.dataSource.view().length ? i[0] && (i.remove(), r && r.unbind("resize", t._setContentWidthHandler)) : (i[0] || (i = n(e).appendTo(t.table.parent()), r && r.bind("resize", t._setContentWidthHandler)), t.thead && i.width(t.thead.width())))
  16564. },
  16565. _setContentHeight: function() {
  16566. var n = this,
  16567. r = n.options,
  16568. t = n.wrapper.innerHeight(),
  16569. e = n.wrapper.children(".k-grid-header"),
  16570. u = i.support.scrollbar(),
  16571. f;
  16572. r.scrollable && n.wrapper.is(":visible") && (t -= e.outerHeight(), n.pager && (t -= n.pager.element.outerHeight()), r.groupable && (t -= n.wrapper.children(".k-grouping-header").outerHeight()), r.toolbar && (t -= n.wrapper.children(".k-grid-toolbar").outerHeight()), n.footerTemplate && (t -= n.wrapper.children(".k-grid-footer").outerHeight()), f = function(n) {
  16573. var t, i;
  16574. return n[0].style.height ? !0 : (t = n.height(), n.height("auto"), i = n.height(), t != i) ? (n.height(""), !0) : (n.height(""), !1)
  16575. }, f(n.wrapper) && (t > u * 2 ? n.content.height(t) : n.content.height(u * 2 + 1)))
  16576. },
  16577. _averageRowHeight: function() {
  16578. var n = this,
  16579. t = n._rowHeight,
  16580. i;
  16581. return n._rowHeight || (n._rowHeight = t = n.table.outerHeight() / n.items().length, n._sum = t, n._measures = 1), i = n.table.outerHeight() / n.items().length, t !== i && (n._measures++, n._sum += i, n._rowHeight = n._sum / n._measures), t
  16582. },
  16583. _dataSource: function() {
  16584. var n = this,
  16585. e = n.options,
  16586. r, i = e.dataSource;
  16587. i = k(i) ? {
  16588. data: i
  16589. } : i;
  16590. o(i) && (u(i, {
  16591. table: n.table,
  16592. fields: n.columns
  16593. }), r = e.pageable, o(r) && r.pageSize !== t && (i.pageSize = r.pageSize));
  16594. n.dataSource && n._refreshHandler ? n.dataSource.unbind(a, n._refreshHandler).unbind(kt, n._progressHandler).unbind(dt, n._errorHandler) : (n._refreshHandler = f(n.refresh, n), n._progressHandler = f(n._requestStart, n), n._errorHandler = f(n._error, n));
  16595. n.dataSource = ur.create(i).bind(a, n._refreshHandler).bind(kt, n._progressHandler).bind(dt, n._errorHandler)
  16596. },
  16597. _error: function() {
  16598. this._progress(!1)
  16599. },
  16600. _requestStart: function() {
  16601. this._progress(!0)
  16602. },
  16603. _modelChange: function(t) {
  16604. var r = this,
  16605. h = t.model,
  16606. f = r.tbody.find("tr[" + i.attr("uid") + "=" + h.uid + "]"),
  16607. u, o, l = f.hasClass("k-alt"),
  16608. s, e = r.items().index(f),
  16609. c;
  16610. if (f.children(".k-edit-cell").length && !r.options.rowTemplate) f.children(":not(.k-group-cell,.k-hierarchy-cell)").each(function() {
  16611. u = n(this);
  16612. o = r.columns[r.cellIndex(u)];
  16613. o.field === t.field && (u.hasClass("k-edit-cell") ? u.addClass("k-dirty-cell") : (r._displayCell(u, o, h), n('<span class="k-dirty"/>').prependTo(u)))
  16614. });
  16615. else if (!f.hasClass("k-grid-edit-row")) {
  16616. for (s = (l ? r.altRowTemplate : r.rowTemplate)(h), f.replaceWith(s), s = r.items().eq(e), e = 0, c = r.columns.length; e < c; e++) o = r.columns[e], o.field === t.field && (u = s.children(":not(.k-group-cell,.k-hierarchy-cell)").eq(e), n('<span class="k-dirty"/>').prependTo(u));
  16617. r.trigger("itemChange", {
  16618. item: s,
  16619. data: h,
  16620. ns: it
  16621. })
  16622. }
  16623. },
  16624. _pageable: function() {
  16625. var t = this,
  16626. f, r = t.options.pageable;
  16627. r && (f = t.wrapper.children("div.k-grid-pager"), f.length || (f = n('<div class="k-pager-wrap k-grid-pager"/>').appendTo(t.wrapper)), t.pager && t.pager.destroy(), t.pager = typeof r == "object" && r instanceof i.ui.Pager ? r : new i.ui.Pager(f, u({}, r, {
  16628. dataSource: t.dataSource
  16629. })))
  16630. },
  16631. _footer: function() {
  16632. var t = this,
  16633. u = t.dataSource.aggregates(),
  16634. r = "",
  16635. s = t.footerTemplate,
  16636. e = t.options,
  16637. f, i = t.footer || t.wrapper.find(".k-grid-footer"),
  16638. o;
  16639. s ? (u = at(u) ? fi(t.dataSource.aggregate()) : u, r = n(t._wrapFooter(s(u))), i.length ? (o = r, i.replaceWith(o), i = t.footer = o) : i = e.scrollable ? t.footer = e.pageable ? r.insertBefore(t.wrapper.children("div.k-grid-pager")) : r.appendTo(t.wrapper) : t.footer = r.insertBefore(t.tbody)) : i && !t.footer && (t.footer = i);
  16640. i.length && (e.scrollable && (f = i.attr("tabindex", -1).children(".k-grid-footer-wrap"), t.scrollables = t.scrollables.not(".k-grid-footer-wrap").add(f)), t._footerWidth && i.find("table").css("width", t._footerWidth), f && f.scrollLeft(t.content.scrollLeft()))
  16641. },
  16642. _wrapFooter: function(t) {
  16643. var u = this,
  16644. r = "",
  16645. f = i.support.mobileOS ? 0 : i.support.scrollbar();
  16646. return u.options.scrollable ? (r = n('<div class="k-grid-footer"><div class="k-grid-footer-wrap"><table' + (ri ? ' cellspacing="0"' : "") + "><tbody>" + t + "<\/tbody><\/table><\/div><\/div>"), u._appendCols(r.find("table")), r.css(p ? "padding-left" : "padding-right", f), r) : '<tfoot class="k-grid-footer">' + t + "<\/tfoot>"
  16647. },
  16648. _columnMenu: function() {
  16649. var t = this,
  16650. s, v = t.columns,
  16651. r, e = t.options,
  16652. f = e.columnMenu,
  16653. h, c, a, y = this._isMobile,
  16654. p = function() {
  16655. l(t.thead.parent(), !0)
  16656. },
  16657. w = function(n) {
  16658. t.trigger(ci, {
  16659. field: n.field,
  16660. container: n.container
  16661. })
  16662. },
  16663. o;
  16664. f && (typeof f == "boolean" && (f = {}), t.thead.find("th:not(.k-hierarchy-cell,.k-group-cell)").each(function(l) {
  16665. r = v[l];
  16666. o = n(this);
  16667. !r.command && (r.field || o.attr("data-" + i.ns + "field")) && (s = o.data("kendoColumnMenu"), s && s.destroy(), c = r.sortable !== !1 && f.sortable !== !1 ? e.sortable : !1, a = e.filterable && r.filterable !== !1 && f.filterable !== !1 ? u({
  16668. pane: t.pane
  16669. }, r.filterable, e.filterable) : !1, h = {
  16670. dataSource: t.dataSource,
  16671. values: r.values,
  16672. columns: f.columns,
  16673. sortable: c,
  16674. filterable: a,
  16675. messages: f.messages,
  16676. owner: t,
  16677. closeCallback: p,
  16678. init: w,
  16679. pane: t.pane,
  16680. filter: y ? ":not(.k-column-active)" : ""
  16681. }, o.kendoColumnMenu(h))
  16682. }))
  16683. },
  16684. _filterable: function() {
  16685. var t = this,
  16686. r = t.columns,
  16687. f, e, s = function() {
  16688. l(t.thead.parent(), !0)
  16689. },
  16690. o = t.options.filterable;
  16691. o && !t.options.columnMenu && t.thead.find("th:not(.k-hierarchy-cell,.k-group-cell)").each(function(h) {
  16692. if (f = n(this), r[h].filterable !== !1 && !r[h].command && (r[h].field || f.attr("data-" + i.ns + "field"))) {
  16693. e = f.data("kendoFilterMenu");
  16694. e && e.destroy();
  16695. var c = r[h].filterable,
  16696. l = u({}, o, c, {
  16697. dataSource: t.dataSource,
  16698. values: r[h].values,
  16699. closeCallback: s,
  16700. init: function(n) {
  16701. t.trigger(hi, {
  16702. field: n.field,
  16703. container: n.container
  16704. })
  16705. },
  16706. pane: t.pane
  16707. });
  16708. c && c.messages && (l.messages = u(!0, {}, o.messages, c.messages));
  16709. f.kendoFilterMenu(l)
  16710. }
  16711. })
  16712. },
  16713. _sortable: function() {
  16714. var r = this,
  16715. s = r.columns,
  16716. t, f, e, o = r.options.sortable;
  16717. o && r.thead.find("th:not(.k-hierarchy-cell,.k-group-cell)").each(function(h) {
  16718. t = s[h];
  16719. t.sortable !== !1 && !t.command && t.field && (f = n(this), e = f.data("kendoSortable"), e && e.destroy(), f.attr("data-" + i.ns + "field", t.field).kendoSortable(u({}, o, t.sortable, {
  16720. dataSource: r.dataSource,
  16721. aria: !0,
  16722. filter: ":not(.k-column-active)"
  16723. })))
  16724. })
  16725. },
  16726. _columns: function(t) {
  16727. var r = this,
  16728. f = r.table,
  16729. e, s = f.find("col"),
  16730. o = r.options.dataSource;
  16731. t = t.length ? t : bt(f.find("th"), function(t, r) {
  16732. t = n(t);
  16733. var f = t.attr(i.attr("sortable")),
  16734. e = t.attr(i.attr("filterable")),
  16735. o = t.attr(i.attr("type")),
  16736. h = t.attr(i.attr("groupable")),
  16737. u = t.attr(i.attr("field")),
  16738. c = t.attr(i.attr("menu"));
  16739. return u || (u = t.text().replace(/\s|[^A-z0-9]/g, "")), {
  16740. field: u,
  16741. type: o,
  16742. sortable: f !== "false",
  16743. filterable: e !== "false",
  16744. groupable: h !== "false",
  16745. menu: c,
  16746. template: t.attr(i.attr("template")),
  16747. width: s.eq(r).css("width")
  16748. }
  16749. });
  16750. e = !(r.table.find("tbody tr").length > 0 && (!o || !o.transport));
  16751. r.columns = bt(t, function(n) {
  16752. return n = typeof n === c ? {
  16753. field: n
  16754. } : n, n.hidden && (n.attributes = ot(n.attributes), n.footerAttributes = ot(n.footerAttributes), n.headerAttributes = ot(n.headerAttributes)), u({
  16755. encoded: e
  16756. }, n)
  16757. })
  16758. },
  16759. _groups: function() {
  16760. var n = this.dataSource.group();
  16761. return n ? n.length : 0
  16762. },
  16763. _tmpl: function(n, t) {
  16764. var r = this,
  16765. c = u({}, i.Template, r.options.templateSettings),
  16766. e, l = r.columns.length,
  16767. a, h = {
  16768. storage: {},
  16769. count: 0
  16770. },
  16771. o, p, v = r._hasDetails(),
  16772. s = [],
  16773. y = r._groups();
  16774. if (!n) {
  16775. for (n = "<tr", t && s.push("k-alt"), v && s.push("k-master-row"), s.length && (n += ' class="' + s.join(" ") + '"'), l && (n += " " + i.attr("uid") + '="#=' + i.expr("uid", c.paramName) + '#"'), n += " role='row'>", y > 0 && (n += pt(y)), v && (n += '<td class="k-hierarchy-cell"><a class="k-icon k-plus" href="\\#" tabindex="-1"><\/a><\/td>'), e = 0; e < l; e++) o = r.columns[e], a = o.template, p = typeof a, n += "<td" + lt(o.attributes) + " role='gridcell'>", n += r._cellTmpl(o, h), n += "<\/td>";
  16776. n += "<\/tr>"
  16777. }
  16778. return (n = i.template(n, c), h.count > 0) ? f(n, h.storage) : n
  16779. },
  16780. _headerCellText: function(n) {
  16781. var e = this,
  16782. o = u({}, i.Template, e.options.templateSettings),
  16783. t = n.headerTemplate,
  16784. f = typeof t,
  16785. r = n.title || n.field || "";
  16786. return f === ct ? r = i.template(t, o)({}) : f === c && (r = t), r
  16787. },
  16788. _cellTmpl: function(n, t) {
  16789. var h = this,
  16790. y = u({}, i.Template, h.options.templateSettings),
  16791. l = n.template,
  16792. a = y.paramName,
  16793. f = n.field,
  16794. r = "",
  16795. s, p, v = n.format,
  16796. w = typeof l,
  16797. e = n.values;
  16798. if (n.command) {
  16799. if (k(n.command)) {
  16800. for (s = 0, p = n.command.length; s < p; s++) r += h._createButton(n.command[s]);
  16801. return r.replace(ii, "\\#")
  16802. }
  16803. return h._createButton(n.command).replace(ii, "\\#")
  16804. }
  16805. return w === ct ? (t.storage["tmpl" + t.count] = l, r += "#=this.tmpl" + t.count + "(" + a + ")#", t.count++) : w === c ? r += l : e && e.length && o(e[0]) && "value" in e[0] && f ? (r += "#var v =" + i.stringify(rr(e)) + "#", r += "#var f = v[", y.useWithBlock || (r += a + "."), r += f + "]#", r += "${f != null ? f : ''}") : (r += n.encoded ? "#:" : "#=", v && (r += 'kendo.format("' + v.replace(lr, "\\$1") + '",'), f ? (f = i.expr(f, a), r += f + "==null?'':" + f) : r += "''", v && (r += ")"), r += "#"), r
  16806. },
  16807. _templates: function() {
  16808. var t = this,
  16809. r = t.options,
  16810. u = t.dataSource,
  16811. f = u.group(),
  16812. e = t.footer || t.wrapper.find(".k-grid-footer"),
  16813. i = u.aggregate();
  16814. t.rowTemplate = t._tmpl(r.rowTemplate);
  16815. t.altRowTemplate = t._tmpl(r.altRowTemplate || r.rowTemplate, !0);
  16816. t._hasDetails() && (t.detailTemplate = t._detailTmpl(r.detailTemplate || ""));
  16817. (!t._group || at(i)) && (at(i) || e.length) && !b(t.columns, function(n) {
  16818. return n.footerTemplate
  16819. }).length || (t.footerTemplate = t._footerTmpl(i, "footerTemplate", "k-footer-template"));
  16820. f && b(t.columns, function(n) {
  16821. return n.groupFooterTemplate
  16822. }).length && (i = n.map(f, function(n) {
  16823. return n.aggregates
  16824. }), t.groupFooterTemplate = t._footerTmpl(i, "groupFooterTemplate", "k-group-footer"))
  16825. },
  16826. _footerTmpl: function(n, t, r) {
  16827. var s = this,
  16828. a = u({}, i.Template, s.options.templateSettings),
  16829. v = a.paramName,
  16830. e = "",
  16831. c, y, d = s.columns,
  16832. o, p, w = {},
  16833. l = 0,
  16834. b = {},
  16835. k = s._groups(),
  16836. g = fi(n),
  16837. h;
  16838. for (e += '<tr class="' + r + '">', k > 0 && (e += pt(k)), s._hasDetails() && (e += '<td class="k-hierarchy-cell">&nbsp;<\/td>'), c = 0, y = s.columns.length; c < y; c++) h = d[c], o = h[t], p = typeof o, e += "<td" + lt(h.footerAttributes) + ">", o ? (p !== ct && (b = g[h.field] ? u({}, a, {
  16839. paramName: v + "." + h.field
  16840. }) : {}, o = i.template(o, b)), w["tmpl" + l] = o, e += "#=this.tmpl" + l + "(" + v + ")#", l++) : e += "&nbsp;", e += "<\/td>";
  16841. return (e += "<\/tr>", e = i.template(e, a), l > 0) ? f(e, w) : e
  16842. },
  16843. _detailTmpl: function(n) {
  16844. var e = this,
  16845. t = "",
  16846. o = u({}, i.Template, e.options.templateSettings),
  16847. l = o.paramName,
  16848. s = {},
  16849. r = 0,
  16850. h = e._groups(),
  16851. c = tt(e.columns).length,
  16852. a = typeof n;
  16853. return (t += '<tr class="k-detail-row">', h > 0 && (t += pt(h)), t += '<td class="k-hierarchy-cell"><\/td><td class="k-detail-cell"' + (c ? ' colspan="' + c + '"' : "") + ">", a === ct ? (s["tmpl" + r] = n, t += "#=this.tmpl" + r + "(" + l + ")#", r++) : t += n, t += "<\/td><\/tr>", t = i.template(t, o), r > 0) ? f(t, s) : t
  16854. },
  16855. _hasDetails: function() {
  16856. var n = this;
  16857. return n.options.detailTemplate !== null || (n._events[ni] || []).length
  16858. },
  16859. _details: function() {
  16860. var t = this;
  16861. t.table.on(h + r, ".k-hierarchy-cell .k-plus, .k-hierarchy-cell .k-minus", function(i) {
  16862. var f = n(this),
  16863. u = f.hasClass("k-plus"),
  16864. r = f.closest("tr.k-master-row"),
  16865. e, s = t.detailTemplate,
  16866. o, h = t._hasDetails();
  16867. return f.toggleClass("k-plus", !u).toggleClass("k-minus", u), h && !r.next().hasClass("k-detail-row") && (o = t.dataItem(r), n(s(o)).addClass(r.hasClass("k-alt") ? "k-alt" : "").insertAfter(r), t.trigger(ni, {
  16868. masterRow: r,
  16869. detailRow: r.next(),
  16870. data: o,
  16871. detailCell: r.next().find(".k-detail-cell")
  16872. })), e = r.next(), t.trigger(u ? pi : wi, {
  16873. masterRow: r,
  16874. detailRow: e
  16875. }), e.toggle(u), t._current && t._current.attr("aria-expanded", u), i.preventDefault(), !1
  16876. })
  16877. },
  16878. dataItem: function(t) {
  16879. if (t = n(t)[0], !t) return null;
  16880. for (var f = this.tbody.children(), u = t.sectionRowIndex, r = u, i = 0; i < u; i++) /k-grouping-row|k-detail-row|k-group-footer/.test(f[i].className) && r--;
  16881. return this._data[r]
  16882. },
  16883. expandRow: function(t) {
  16884. n(t).find("> td .k-plus, > td .k-i-expand").click()
  16885. },
  16886. collapseRow: function(t) {
  16887. n(t).find("> td .k-minus, > td .k-i-collapse").click()
  16888. },
  16889. _thead: function() {
  16890. var r = this,
  16891. h = r.columns,
  16892. l = r._hasDetails() && h.length,
  16893. s, a, e = "",
  16894. o = r.table.find(">thead"),
  16895. f, c, u;
  16896. if (o.length || (o = n("<thead/>").insertBefore(r.tbody)), f = r.element.find("tr:has(th):first"), f.length || (f = o.children().first(), f.length || (f = n("<tr/>"))), f.children().length) l && !f.find(".k-hierarchy-cell")[0] && f.prepend('<th class="k-hierarchy-cell">&nbsp;<\/th>');
  16897. else {
  16898. for (l && (e += '<th class="k-hierarchy-cell">&nbsp;<\/th>'), s = 0, a = h.length; s < a; s++) u = h[s], c = r._headerCellText(u), u.command ? e += "<th" + lt(u.headerAttributes) + ">" + c + "<\/th>" : (e += "<th role='columnheader' " + i.attr("field") + "='" + (u.field || "") + "' ", u.title && (e += i.attr("title") + '="' + u.title.replace(/'/g, "'") + '" '), u.groupable !== t && (e += i.attr("groupable") + "='" + u.groupable + "' "), u.aggregates && (e += i.attr("aggregates") + "='" + u.aggregates + "'"), e += lt(u.headerAttributes), e += ">" + c + "<\/th>");
  16899. f.html(e)
  16900. }
  16901. f.find("th").addClass("k-header");
  16902. r.options.scrollable || o.addClass("k-grid-header");
  16903. f.find("script").remove().end().appendTo(o);
  16904. r.thead && r._destroyColumnAttachments();
  16905. r.thead = o;
  16906. r._sortable();
  16907. r._filterable();
  16908. r._scrollable();
  16909. r._updateCols();
  16910. r._resizable();
  16911. r._draggable();
  16912. r._reorderable();
  16913. r.groupable && r._attachGroupable();
  16914. r._columnMenu()
  16915. },
  16916. _updateCols: function() {
  16917. var n = this;
  16918. n._appendCols(n.thead.parent().add(n.table))
  16919. },
  16920. _appendCols: function(n) {
  16921. var t = this;
  16922. ir(n, tt(t.columns), t._hasDetails(), t._groups())
  16923. },
  16924. _autoColumns: function(n) {
  16925. if (n && n.toJSON) {
  16926. var t = this,
  16927. i;
  16928. n = n.toJSON();
  16929. for (i in n) t.columns.push({
  16930. field: i
  16931. });
  16932. t._thead();
  16933. t._templates()
  16934. }
  16935. },
  16936. _rowsHtml: function(n) {
  16937. for (var i = this, r = "", f = i.rowTemplate, e = i.altRowTemplate, t = 0, u = n.length; t < u; t++) r += t % 2 ? e(n[t]) : f(n[t]), i._data.push(n[t]);
  16938. return r
  16939. },
  16940. _groupRowHtml: function(n, t, r) {
  16941. var f = this,
  16942. e = "",
  16943. o, l, a = n.field,
  16944. s = b(f.columns, function(n) {
  16945. return n.field == a
  16946. })[0] || {},
  16947. h = s.groupHeaderTemplate,
  16948. v = (s.title || a) + ": " + br(n.value, s.format, s.values),
  16949. y = u({}, {
  16950. field: n.field,
  16951. value: n.value
  16952. }, n.aggregates[n.field]),
  16953. p = f._groupAggregatesDefaultObject || {},
  16954. c = n.items;
  16955. if (h && (v = typeof h === ct ? h(y) : i.template(h)(y)), e += '<tr class="k-grouping-row">' + pt(r) + '<td colspan="' + t + '" aria-expanded="true"><p class="k-reset"><a class="k-icon k-i-collapse" href="#" tabindex="-1"><\/a>' + v + "<\/p><\/td><\/tr>", n.hasSubgroups)
  16956. for (o = 0, l = c.length; o < l; o++) e += f._groupRowHtml(c[o], t - 1, r + 1);
  16957. else e += f._rowsHtml(c);
  16958. return f.groupFooterTemplate && (e += f.groupFooterTemplate(u(p, n.aggregates))), e
  16959. },
  16960. collapseGroup: function(t) {
  16961. t = n(t).find(".k-icon").addClass("k-i-expand").removeClass("k-i-collapse").end();
  16962. var f = t.find(".k-group-cell").length,
  16963. r = 1,
  16964. u, i;
  16965. t.find("td:first").attr("aria-expanded", !1);
  16966. t.nextAll("tr").each(function() {
  16967. if (i = n(this), u = i.find(".k-group-cell").length, i.hasClass("k-grouping-row") ? r++ : i.hasClass("k-group-footer") && r--, u <= f || i.hasClass("k-group-footer") && r < 0) return !1;
  16968. i.hide()
  16969. })
  16970. },
  16971. expandGroup: function(t) {
  16972. t = n(t).find(".k-icon").addClass("k-i-collapse").removeClass("k-i-expand").end();
  16973. var e = this,
  16974. f = t.find(".k-group-cell").length,
  16975. i, r, u = 1;
  16976. t.find("td:first").attr("aria-expanded", !0);
  16977. t.nextAll("tr").each(function() {
  16978. if (i = n(this), r = i.find(".k-group-cell").length, r <= f) return !1;
  16979. r != f + 1 || i.hasClass("k-detail-row") || (i.show(), i.hasClass("k-grouping-row") && i.find(".k-icon").hasClass("k-i-collapse") && e.expandGroup(i), i.hasClass("k-master-row") && i.find(".k-icon").hasClass("k-minus") && i.next().show());
  16980. i.hasClass("k-grouping-row") && u++;
  16981. i.hasClass("k-group-footer") && (u == 1 ? i.show() : u--)
  16982. })
  16983. },
  16984. _updateHeader: function(t) {
  16985. var r = this,
  16986. u = r.thead.find("th.k-group-cell"),
  16987. i = u.length;
  16988. t > i ? n(new Array(t - i + 1).join('<th class="k-group-cell k-header">&nbsp;<\/th>')).prependTo(r.thead.find("tr")) : t < i && (i = i - t, n(b(u, function(n, t) {
  16989. return i > t
  16990. })).remove())
  16991. },
  16992. _firstDataItem: function(n, t) {
  16993. return n && t && (n = n.hasSubgroups ? this._firstDataItem(n.items[0], t) : n.items[0]), n
  16994. },
  16995. hideColumn: function(t) {
  16996. var i = this,
  16997. a, f, r, h, u, v, c, o = 0,
  16998. l, y = i.footer || i.wrapper.find(".k-grid-footer"),
  16999. p = i.columns,
  17000. s;
  17001. if (t = typeof t == "number" ? p[t] : b(p, function(n) {
  17002. return n.field === t
  17003. })[0], t && !t.hidden) {
  17004. for (s = d(t, tt(p)), t.hidden = !0, t.attributes = ot(t.attributes), t.footerAttributes = ot(t.footerAttributes), t.headerAttributes = ot(t.headerAttributes), i._templates(), i._updateCols(), st(i.thead.find(">tr")[0].cells, s, !1), y[0] && (i._appendCols(y.find("table:first")), st(y.find(".k-footer-template")[0].cells, s, !1)), a = i.tbody.children(), u = 0, l = a.length; u < l; u += 1) f = a.eq(u), f.is(".k-grouping-row,.k-detail-row") ? (r = f.children(":not(.k-group-cell):first,.k-detail-cell").last(), r.attr("colspan", parseInt(r.attr("colspan"), 10) - 1)) : (f.hasClass("k-grid-edit-row") && (r = f.children(".k-edit-container")[0]) && (r = n(r), r.attr("colspan", parseInt(r.attr("colspan"), 10) - 1), r.find("col").eq(s).remove(), f = r.find("tr:first")), st(f[0].cells, s, !1));
  17005. for (v = i.thead.prev().find("col"), u = 0, l = v.length; u < l; u += 1)
  17006. if (c = v[u].style.width, c && c.indexOf("%") == -1) o += parseInt(c, 10);
  17007. else {
  17008. o = 0;
  17009. break
  17010. }
  17011. h = n(">.k-grid-header table:first,>.k-grid-footer table:first", i.wrapper).add(i.table);
  17012. i._footerWidth = null;
  17013. o && (h.width(o), i._footerWidth = o);
  17014. e.msie && e.version == 8 && (h.css("display", "inline-table"), setTimeout(function() {
  17015. h.css("display", "table")
  17016. }, 1));
  17017. i.trigger(li, {
  17018. column: t
  17019. })
  17020. }
  17021. },
  17022. showColumn: function(t) {
  17023. var i = this,
  17024. c, u, o, f, r, l, e, a, v, s = i.columns,
  17025. y = i.footer || i.wrapper.find(".k-grid-footer"),
  17026. h;
  17027. if (t = typeof t == "number" ? s[t] : b(s, function(n) {
  17028. return n.field === t
  17029. })[0], t && t.hidden) {
  17030. for (h = d(t, s), t.hidden = !1, t.attributes = ei(t.attributes), t.footerAttributes = ei(t.footerAttributes), t.headerAttributes = ei(t.headerAttributes), i._templates(), i._updateCols(), st(i.thead.find(">tr")[0].cells, h, !0), y[0] && (i._appendCols(y.find("table:first")), st(y.find(".k-footer-template")[0].cells, h, !0)), c = i.tbody.children(), u = 0, o = c.length; u < o; u += 1) f = c.eq(u), f.is(".k-grouping-row,.k-detail-row") ? (r = f.children(":not(.k-group-cell):first,.k-detail-cell").last(), r.attr("colspan", parseInt(r.attr("colspan"), 10) + 1)) : (f.hasClass("k-grid-edit-row") && (r = f.children(".k-edit-container")[0]) && (r = n(r), r.attr("colspan", parseInt(r.attr("colspan"), 10) + 1), ir(r.find(">form>table"), tt(s), !1, 0), f = r.find("tr:first")), st(f[0].cells, h, !0));
  17031. if (l = n(">.k-grid-header table:first,>.k-grid-footer table:first", i.wrapper).add(i.table), t.width) {
  17032. for (e = 0, v = i.thead.prev().find("col"), u = 0, o = v.length; u < o; u += 1) {
  17033. if (a = v[u].style.width, a.indexOf("%") > -1) {
  17034. e = 0;
  17035. break
  17036. }
  17037. e += parseInt(a, 10)
  17038. }
  17039. i._footerWidth = null;
  17040. e && (l.width(e), i._footerWidth = e)
  17041. } else l.width("");
  17042. i.trigger(ai, {
  17043. column: t
  17044. })
  17045. }
  17046. },
  17047. _progress: function(n) {
  17048. var t = this,
  17049. r = t.element.is("table") ? t.element.parent() : t.content && t.content.length ? t.content : t.element;
  17050. i.ui.progress(r, n)
  17051. },
  17052. _resize: function() {
  17053. this.content && (this._setContentHeight(), this._setContentWidth())
  17054. },
  17055. refresh: function(t) {
  17056. var i = this,
  17057. y, f, e = "",
  17058. o = i.dataSource.view(),
  17059. w = i.options.navigatable,
  17060. s, h, u, p = n(i.current()),
  17061. c = !1,
  17062. r = (i.dataSource.group() || []).length,
  17063. a = r + tt(i.columns).length,
  17064. v;
  17065. if ((!t || t.action !== "itemchange" || !i.editable) && (t = t || {}, !i.trigger("dataBinding", {
  17066. action: t.action || "rebind",
  17067. index: t.index,
  17068. items: t.items
  17069. }))) {
  17070. if (v = rt(), w && (i.table[0] === v || n.contains(i.table[0], v) || i._editContainer && i._editContainer.data("kendoWindow")) && (c = p.is("th"), u = 0, c && (u = i.thead.find("th:not(.k-group-cell)").index(p))), i._destroyEditable(), i._progress(!1), i._hideResizeHandle(), i._data = [], i.columns.length || (i._autoColumns(i._firstDataItem(o[0], r)), a = r + i.columns.length), i._group = r > 0 || i._group, i._group && (i._templates(), i._updateCols(), i._updateHeader(r), i._group = r > 0), r > 0)
  17071. for (i.detailTemplate && a++, i.groupFooterTemplate && (i._groupAggregatesDefaultObject = fi(i.dataSource.aggregate())), f = 0, y = o.length; f < y; f++) e += i._groupRowHtml(o[f], a, 0);
  17072. else e += i._rowsHtml(o);
  17073. er ? i.tbody[0].innerHTML = e : (h = document.createElement("div"), h.innerHTML = "<table><tbody>" + e + "<\/tbody><\/table>", s = h.firstChild.firstChild, i.table[0].replaceChild(s, i.tbody[0]), i.tbody = n(s));
  17074. i._footer();
  17075. i._setContentHeight();
  17076. i._setContentWidth();
  17077. u >= 0 && (i._removeCurrent(), c ? i.current(i.thead.find("th:not(.k-group-cell)").eq(u)) : i.current(i.items().eq(u).children().filter(g).first()), i._current && l(i._current.closest("table")[0], !0));
  17078. i.trigger(yi)
  17079. }
  17080. }
  17081. });
  17082. it.plugin(kr);
  17083. it.plugin(tr)
  17084. }(window.kendo.jQuery);
  17085. kendo_module({
  17086. id: "listview",
  17087. name: "ListView",
  17088. category: "web",
  17089. description: "The ListView widget offers rich support for interacting with data.",
  17090. depends: ["data"],
  17091. features: [{
  17092. id: "listview-editing",
  17093. name: "Editing",
  17094. description: "Support for record editing",
  17095. depends: ["editable"]
  17096. }, {
  17097. id: "listview-selection",
  17098. name: "Selection",
  17099. description: "Support for selection",
  17100. depends: ["selectable"]
  17101. }]
  17102. }),
  17103. function(n, t) {
  17104. var i = window.kendo,
  17105. f = "change",
  17106. c = "cancel",
  17107. l = "dataBound",
  17108. a = "dataBinding",
  17109. e = i.ui.Widget,
  17110. r = i.keys,
  17111. v = ">*",
  17112. y = "progress",
  17113. p = "error",
  17114. s = "k-state-focused",
  17115. w = "k-state-selected",
  17116. h = "k-edit-item",
  17117. tt = "string",
  17118. b = "edit",
  17119. k = "remove",
  17120. d = "save",
  17121. it = "click",
  17122. u = ".kendoListView",
  17123. o = n.proxy,
  17124. g = i._activeElement,
  17125. nt = i.ui.progress,
  17126. rt = i.data.DataSource,
  17127. ut = e.extend({
  17128. init: function(t, r) {
  17129. var u = this;
  17130. r = n.isArray(r) ? {
  17131. dataSource: r
  17132. } : r;
  17133. e.fn.init.call(u, t, r);
  17134. r = u.options;
  17135. u.wrapper = t = u.element;
  17136. t[0].id && (u._itemId = t[0].id + "_lv_active");
  17137. u._element();
  17138. u._dataSource();
  17139. u._templates();
  17140. u._navigatable();
  17141. u._selectable();
  17142. u._pageable();
  17143. u._crudHandlers();
  17144. u.options.autoBind && u.dataSource.fetch();
  17145. i.notify(u)
  17146. },
  17147. events: [f, c, a, l, b, k, d],
  17148. options: {
  17149. name: "ListView",
  17150. autoBind: !0,
  17151. selectable: !1,
  17152. navigatable: !1,
  17153. template: "",
  17154. altTemplate: "",
  17155. editTemplate: ""
  17156. },
  17157. setOptions: function(n) {
  17158. e.fn.setOptions.call(this, n);
  17159. this._templates()
  17160. },
  17161. _templates: function() {
  17162. var n = this.options;
  17163. this.template = i.template(n.template || "");
  17164. this.altTemplate = i.template(n.altTemplate || n.template);
  17165. this.editTemplate = i.template(n.editTemplate || "")
  17166. },
  17167. _item: function(n) {
  17168. return this.element.children()[n]()
  17169. },
  17170. items: function() {
  17171. return this.element.children()
  17172. },
  17173. setDataSource: function(n) {
  17174. this.options.dataSource = n;
  17175. this._dataSource();
  17176. this.options.autoBind && n.fetch()
  17177. },
  17178. _unbindDataSource: function() {
  17179. var n = this;
  17180. n.dataSource.unbind(f, n._refreshHandler).unbind(y, n._progressHandler).unbind(p, n._errorHandler)
  17181. },
  17182. _dataSource: function() {
  17183. var n = this;
  17184. n.dataSource && n._refreshHandler ? n._unbindDataSource() : (n._refreshHandler = o(n.refresh, n), n._progressHandler = o(n._progress, n), n._errorHandler = o(n._error, n));
  17185. n.dataSource = rt.create(n.options.dataSource).bind(f, n._refreshHandler).bind(y, n._progressHandler).bind(p, n._errorHandler)
  17186. },
  17187. _progress: function() {
  17188. nt(this.element, !0)
  17189. },
  17190. _error: function() {
  17191. nt(this.element, !1)
  17192. },
  17193. _element: function() {
  17194. this.element.addClass("k-widget k-listview").attr("role", "listbox")
  17195. },
  17196. refresh: function(n) {
  17197. var t = this,
  17198. f = t.dataSource.view(),
  17199. e, s, u, h = "",
  17200. r, o, c = t.template,
  17201. v = t.altTemplate,
  17202. y = g();
  17203. if (n = n || {}, n.action === "itemchange") {
  17204. t._hasBindingTarget() || t.editable || (e = n.items[0], u = t.items().filter("[" + i.attr("uid") + "=" + e.uid + "]"), u.length > 0 && (r = u.index(), u.replaceWith(c(e)), u = t.items().eq(r), u.attr(i.attr("uid"), e.uid), t.trigger("itemChange", {
  17205. item: u,
  17206. data: e
  17207. })));
  17208. return
  17209. }
  17210. if (!t.trigger(a, {
  17211. action: n.action || "rebind",
  17212. items: n.items,
  17213. index: n.index
  17214. })) {
  17215. for (t._destroyEditable(), r = 0, o = f.length; r < o; r++) h += r % 2 ? v(f[r]) : c(f[r]);
  17216. for (t.element.html(h), s = t.items(), r = 0, o = f.length; r < o; r++) s.eq(r).attr(i.attr("uid"), f[r].uid).attr("role", "option").attr("aria-selected", "false");
  17217. t.element[0] === y && t.options.navigatable && t.current(s.eq(0));
  17218. t.trigger(l)
  17219. }
  17220. },
  17221. _pageable: function() {
  17222. var t = this,
  17223. r = t.options.pageable,
  17224. u, f;
  17225. n.isPlainObject(r) && (f = r.pagerId, u = n.extend({}, r, {
  17226. dataSource: t.dataSource,
  17227. pagerId: null
  17228. }), t.pager = new i.ui.Pager(n("#" + f), u))
  17229. },
  17230. _selectable: function() {
  17231. var n = this,
  17232. e, t, o = n.options.selectable,
  17233. s = n.options.navigatable;
  17234. if (o && (e = typeof o === tt && o.toLowerCase().indexOf("multiple") > -1, e && n.element.attr("aria-multiselectable", !0), n.selectable = new i.ui.Selectable(n.element, {
  17235. aria: !0,
  17236. multiple: e,
  17237. filter: v,
  17238. change: function() {
  17239. n.trigger(f)
  17240. }
  17241. }), s)) n.element.on("keydown" + u, function(i) {
  17242. if (i.keyCode === r.SPACEBAR) {
  17243. if (t = n.current(), i.target == i.currentTarget && i.preventDefault(), e)
  17244. if (i.ctrlKey) {
  17245. if (t && t.hasClass(w)) {
  17246. t.removeClass(w);
  17247. return
  17248. }
  17249. } else n.selectable.clear();
  17250. else n.selectable.clear();
  17251. n.selectable.value(t)
  17252. }
  17253. })
  17254. },
  17255. current: function(n) {
  17256. var r = this,
  17257. f = r.element,
  17258. i = r._current,
  17259. u = r._itemId;
  17260. if (n === t) return i;
  17261. i && i[0] && (i[0].id === u && i.removeAttr("id"), i.removeClass(s), f.removeAttr("aria-activedescendant"));
  17262. n && n[0] && (u = n[0].id || u, r._scrollTo(n[0]), f.attr("aria-activedescendant", u), n.addClass(s).attr("id", u));
  17263. r._current = n
  17264. },
  17265. _scrollTo: function(t) {
  17266. var u = this,
  17267. i, e = !1,
  17268. r = "scroll",
  17269. f;
  17270. u.wrapper.css("overflow") == "auto" || u.wrapper.css("overflow") == r ? i = u.wrapper[0] : (i = window, e = !0);
  17271. f = function(u, f) {
  17272. var o = e ? n(t).offset()[u.toLowerCase()] : t["offset" + u],
  17273. s = t["client" + f],
  17274. h = n(i)[r + u](),
  17275. c = n(i)[f.toLowerCase()]();
  17276. o + s > h + c ? n(i)[r + u](o + s - c) : o < h && n(i)[r + u](o)
  17277. };
  17278. f("Top", "Height");
  17279. f("Left", "Width")
  17280. },
  17281. _navigatable: function() {
  17282. var t = this,
  17283. e = t.options.navigatable,
  17284. f = t.element,
  17285. c = function(i) {
  17286. t.current(n(i.currentTarget));
  17287. n(i.target).is(":button,a,:input,a>.k-icon,textarea") || f.focus()
  17288. };
  17289. if (e) {
  17290. t._tabindex();
  17291. f.on("focus" + u, function() {
  17292. var n = t._current;
  17293. n && n.is(":visible") || (n = t._item("first"));
  17294. t.current(n)
  17295. }).on("focusout" + u, function() {
  17296. t._current && t._current.removeClass(s)
  17297. }).on("keydown" + u, function(u) {
  17298. var e = u.keyCode,
  17299. o = t.current(),
  17300. v = n(u.target),
  17301. y = !v.is(":button,textarea,a,a>.t-icon,input"),
  17302. a = v.is(":text"),
  17303. s = i.preventDefault,
  17304. c = f.find("." + h),
  17305. p = g(),
  17306. l, w;
  17307. if ((y || a || r.ESC == e) && (!a || r.ESC == e || r.ENTER == e))
  17308. if (r.UP === e || r.LEFT === e) o && (o = o.prev()), t.current(!o || !o[0] ? t._item("last") : o), s(u);
  17309. else if (r.DOWN === e || r.RIGHT === e) o && (o = o.next()), t.current(!o || !o[0] ? t._item("first") : o), s(u);
  17310. else if (r.PAGEUP === e) t.current(null), t.dataSource.page(t.dataSource.page() - 1), s(u);
  17311. else if (r.PAGEDOWN === e) t.current(null), t.dataSource.page(t.dataSource.page() + 1), s(u);
  17312. else if (r.HOME === e) t.current(t._item("first")), s(u);
  17313. else if (r.END === e) t.current(t._item("last")), s(u);
  17314. else if (r.ENTER === e)
  17315. if (c.length !== 0 && (y || a)) {
  17316. l = t.items().index(c);
  17317. p && p.blur();
  17318. t.save();
  17319. w = function() {
  17320. t.element.trigger("focus");
  17321. t.current(t.items().eq(l))
  17322. };
  17323. t.one("dataBound", w)
  17324. } else t.options.editTemplate !== "" && t.edit(o);
  17325. else if (r.ESC === e) {
  17326. if (c = f.find("." + h), c.length === 0) return;
  17327. l = t.items().index(c);
  17328. t.cancel();
  17329. t.element.trigger("focus");
  17330. t.current(t.items().eq(l))
  17331. }
  17332. });
  17333. f.on("mousedown" + u + " touchstart" + u, v, o(c, t))
  17334. }
  17335. },
  17336. clearSelection: function() {
  17337. var n = this;
  17338. n.selectable.clear();
  17339. n.trigger(f)
  17340. },
  17341. select: function(t) {
  17342. var r = this,
  17343. i = r.selectable;
  17344. if (t = n(t), t.length) {
  17345. i.options.multiple || (i.clear(), t = t.first());
  17346. i.value(t);
  17347. return
  17348. }
  17349. return i.value()
  17350. },
  17351. _destroyEditable: function() {
  17352. var n = this;
  17353. n.editable && (n.editable.destroy(), delete n.editable)
  17354. },
  17355. _modelFromElement: function(n) {
  17356. var t = n.attr(i.attr("uid"));
  17357. return this.dataSource.getByUid(t)
  17358. },
  17359. _closeEditable: function(n) {
  17360. var t = this,
  17361. r = t.editable,
  17362. u, e, o = t.template,
  17363. f = !0;
  17364. return r && (n && (f = r.end()), f && (r.element.index() % 2 && (o = t.altTemplate), u = t._modelFromElement(r.element), t._destroyEditable(), e = r.element.index(), r.element.replaceWith(o(u)), t.items().eq(e).attr(i.attr("uid"), u.uid))), f
  17365. },
  17366. edit: function(n) {
  17367. var t = this,
  17368. r = t._modelFromElement(n),
  17369. u, e = r.uid,
  17370. f;
  17371. t.cancel();
  17372. n = t.items().filter("[" + i.attr("uid") + "=" + e + "]");
  17373. f = n.index();
  17374. n.replaceWith(t.editTemplate(r));
  17375. u = t.items().eq(f).addClass(h).attr(i.attr("uid"), r.uid);
  17376. t.editable = u.kendoEditable({
  17377. model: r,
  17378. clearContainer: !1,
  17379. errorTemplate: !1
  17380. }).data("kendoEditable");
  17381. t.trigger(b, {
  17382. model: r,
  17383. item: u
  17384. })
  17385. },
  17386. save: function() {
  17387. var n = this,
  17388. t = n.editable,
  17389. i;
  17390. t && (t = t.element, i = n._modelFromElement(t), !n.trigger(d, {
  17391. model: i,
  17392. item: t
  17393. }) && n._closeEditable(!0) && n.dataSource.sync())
  17394. },
  17395. remove: function(n) {
  17396. var t = this,
  17397. i = t.dataSource,
  17398. r = t._modelFromElement(n);
  17399. t.trigger(k, {
  17400. model: r,
  17401. item: n
  17402. }) || (n.hide(), i.remove(r), i.sync())
  17403. },
  17404. add: function() {
  17405. var n = this,
  17406. t = n.dataSource,
  17407. i = t.indexOf((t.view() || [])[0]);
  17408. i < 0 && (i = 0);
  17409. n.cancel();
  17410. t.insert(i, {});
  17411. n.edit(n.element.children().first())
  17412. },
  17413. cancel: function() {
  17414. var n = this,
  17415. r = n.dataSource,
  17416. t, i;
  17417. n.editable && (t = n.editable.element, i = n._modelFromElement(t), n.trigger(c, {
  17418. model: i,
  17419. container: t
  17420. }) || (r.cancelChanges(i), n._closeEditable(!1)))
  17421. },
  17422. _crudHandlers: function() {
  17423. var t = this,
  17424. r = it + u;
  17425. t.element.on(r, ".k-edit-button", function(r) {
  17426. var u = n(this).closest("[" + i.attr("uid") + "]");
  17427. t.edit(u);
  17428. r.preventDefault()
  17429. });
  17430. t.element.on(r, ".k-delete-button", function(r) {
  17431. var u = n(this).closest("[" + i.attr("uid") + "]");
  17432. t.remove(u);
  17433. r.preventDefault()
  17434. });
  17435. t.element.on(r, ".k-update-button", function(n) {
  17436. t.save();
  17437. n.preventDefault()
  17438. });
  17439. t.element.on(r, ".k-cancel-button", function(n) {
  17440. t.cancel();
  17441. n.preventDefault()
  17442. })
  17443. },
  17444. destroy: function() {
  17445. var n = this;
  17446. e.fn.destroy.call(n);
  17447. n._unbindDataSource();
  17448. n._destroyEditable();
  17449. n.element.off(u);
  17450. n.pager && n.pager.destroy();
  17451. n.selectable && n.selectable.destroy();
  17452. i.destroy(n.element)
  17453. }
  17454. });
  17455. i.ui.plugin(ut)
  17456. }(window.kendo.jQuery);
  17457. kendo_module({
  17458. id: "numerictextbox",
  17459. name: "NumericTextBox",
  17460. category: "web",
  17461. description: "The NumericTextBox widget can format and display numeric, percentage or currency textbox.",
  17462. depends: ["core", "userevents"]
  17463. }),
  17464. function(n, t) {
  17465. function ut(n, t) {
  17466. return '<span unselectable="on" class="k-link"><span unselectable="on" class="k-icon k-i-arrow-' + n + '" title="' + t + '">' + t + "<\/span><\/span>"
  17467. }
  17468. function y(i, r) {
  17469. var f, s = r !== t,
  17470. u, e, o, h;
  17471. return i.selectionStart !== t ? s ? (i.focus(), i.setSelectionRange(r, r)) : r = [i.selectionStart, i.selectionEnd] : document.selection && (n(i).is(":visible") && i.focus(), f = document.selection.createRange(), s ? (f.move("character", r), f.select()) : (u = i.createTextRange(), e = u.duplicate(), u.moveToBookmark(f.getBookmark()), e.setEndPoint("EndToStart", u), o = e.text.length, h = o + u.text.length, r = [o, h])), r
  17472. }
  17473. var r = window.kendo,
  17474. e = r.keys,
  17475. p = r.ui,
  17476. s = p.Widget,
  17477. ft = r._activeElement,
  17478. et = r._extractFormat,
  17479. ot = r.parseFloat,
  17480. st = r.support.placeholder,
  17481. ht = r.getCulture,
  17482. w = r._round,
  17483. h = "change",
  17484. b = "disabled",
  17485. k = "readonly",
  17486. ct = "k-input",
  17487. d = "spin",
  17488. u = ".kendoNumericTextBox",
  17489. lt = "touchend",
  17490. at = "mouseleave" + u,
  17491. g = "mouseenter" + u + " " + at,
  17492. c = "k-state-default",
  17493. nt = "k-state-focused",
  17494. tt = "k-state-hover",
  17495. l = "focus",
  17496. f = ".",
  17497. a = "k-state-selected",
  17498. v = "k-state-disabled",
  17499. it = "aria-disabled",
  17500. rt = "aria-readonly",
  17501. vt = /^(-)?(\d*)$/,
  17502. i = null,
  17503. o = n.proxy,
  17504. yt = s.extend({
  17505. init: function(n, f) {
  17506. var e = this,
  17507. p = f && f.step !== t,
  17508. h, c, a, v, y;
  17509. if (s.fn.init.call(e, n, f), f = e.options, n = e.element.on("blur" + u, o(e._focusout, e)).attr("role", "spinbutton"), f.placeholder = f.placeholder || n.attr("placeholder"), e._reset(), e._wrapper(), e._arrows(), e._input(), r.support.mobileOS) e._text.on(lt + u + " " + l + u, function(t) {
  17510. e._toggleText(!1);
  17511. t.type === l && n.focus()
  17512. });
  17513. else e._text.on(l + u, o(e._click, e));
  17514. h = e.min(n.attr("min"));
  17515. c = e.max(n.attr("max"));
  17516. a = e._parse(n.attr("step"));
  17517. f.min === i && h !== i && (f.min = h);
  17518. f.max === i && c !== i && (f.max = c);
  17519. p || a === i || (f.step = a);
  17520. n.attr("aria-valuemin", f.min).attr("aria-valuemax", f.max);
  17521. f.format = et(f.format);
  17522. v = f.value;
  17523. e.value(v !== i ? v : n.val());
  17524. y = n.is("[disabled]");
  17525. y ? e.enable(!1) : e.readonly(n.is("[readonly]"));
  17526. r.notify(e)
  17527. },
  17528. options: {
  17529. name: "NumericTextBox",
  17530. decimals: i,
  17531. min: i,
  17532. max: i,
  17533. value: i,
  17534. step: 1,
  17535. culture: "",
  17536. format: "n",
  17537. spinners: !0,
  17538. placeholder: "",
  17539. upArrowText: "Increase value",
  17540. downArrowText: "Decrease value"
  17541. },
  17542. events: [h, d],
  17543. _editable: function(n) {
  17544. var t = this,
  17545. f = t.element,
  17546. i = n.disable,
  17547. r = n.readonly,
  17548. e = t._text.add(f),
  17549. s = t._inputWrapper.off(g);
  17550. if (t._toggleText(!0), t._upArrowEventHandler.unbind("press"), t._downArrowEventHandler.unbind("press"), f.off("keydown" + u).off("keypress" + u).off("paste" + u), r || i) s.addClass(i ? v : c).removeClass(i ? c : v), e.attr(b, i).attr(k, r).attr(it, i).attr(rt, r);
  17551. else {
  17552. s.addClass(c).removeClass(v).on(g, t._toggleHover);
  17553. e.removeAttr(b).removeAttr(k).attr(it, !1).attr(rt, !1);
  17554. t._upArrowEventHandler.bind("press", function(n) {
  17555. n.preventDefault();
  17556. t._spin(1);
  17557. t._upArrow.addClass(a)
  17558. });
  17559. t._downArrowEventHandler.bind("press", function(n) {
  17560. n.preventDefault();
  17561. t._spin(-1);
  17562. t._downArrow.addClass(a)
  17563. });
  17564. t.element.on("keydown" + u, o(t._keydown, t)).on("keypress" + u, o(t._keypress, t)).on("paste" + u, o(t._paste, t))
  17565. }
  17566. },
  17567. readonly: function(n) {
  17568. this._editable({
  17569. readonly: n === t ? !0 : n,
  17570. disable: !1
  17571. })
  17572. },
  17573. enable: function(n) {
  17574. this._editable({
  17575. readonly: !1,
  17576. disable: !(n = n === t ? !0 : n)
  17577. })
  17578. },
  17579. destroy: function() {
  17580. var n = this;
  17581. n.element.add(n._text).add(n._upArrow).add(n._downArrow).add(n._inputWrapper).off(u);
  17582. n._upArrowEventHandler.destroy();
  17583. n._downArrowEventHandler.destroy();
  17584. n._form && n._form.off("reset", n._resetHandler);
  17585. s.fn.destroy.call(n)
  17586. },
  17587. min: function(n) {
  17588. return this._option("min", n)
  17589. },
  17590. max: function(n) {
  17591. return this._option("max", n)
  17592. },
  17593. step: function(n) {
  17594. return this._option("step", n)
  17595. },
  17596. value: function(n) {
  17597. var i = this,
  17598. r;
  17599. if (n === t) return i._value;
  17600. (n = i._parse(n), r = i._adjust(n), n === r) && (i._update(n), i._old = i._value)
  17601. },
  17602. focus: function() {
  17603. this._focusin()
  17604. },
  17605. _adjust: function(n) {
  17606. var f = this,
  17607. u = f.options,
  17608. t = u.min,
  17609. r = u.max;
  17610. return n === i ? n : (t !== i && n < t ? n = t : r !== i && n > r && (n = r), n)
  17611. },
  17612. _arrows: function() {
  17613. var t = this,
  17614. i, f = function() {
  17615. clearTimeout(t._spinning);
  17616. i.removeClass(a)
  17617. },
  17618. u = t.options,
  17619. e = u.spinners,
  17620. o = t.element;
  17621. i = o.siblings(".k-icon");
  17622. i[0] || (i = n(ut("n", u.upArrowText) + ut("s", u.downArrowText)).insertAfter(o), i.wrapAll('<span class="k-select"/>'));
  17623. e || (i.parent().toggle(e), t._inputWrapper.addClass("k-expand-padding"));
  17624. t._upArrow = i.eq(0);
  17625. t._upArrowEventHandler = new r.UserEvents(t._upArrow, {
  17626. release: f
  17627. });
  17628. t._downArrow = i.eq(1);
  17629. t._downArrowEventHandler = new r.UserEvents(t._downArrow, {
  17630. release: f
  17631. })
  17632. },
  17633. _blur: function() {
  17634. var n = this;
  17635. n._toggleText(!0);
  17636. n._change(n.element.val())
  17637. },
  17638. _click: function(n) {
  17639. var t = this;
  17640. clearTimeout(t._focusing);
  17641. t._focusing = setTimeout(function() {
  17642. var o = n.target,
  17643. l = y(o)[0],
  17644. s = o.value.substring(0, l),
  17645. h = t._format(t.options.format),
  17646. i = h[","],
  17647. r, c, u, e = 0;
  17648. i && (c = new RegExp("\\" + i, "g"), u = new RegExp("([\\d\\" + i + "]+)(\\" + h[f] + ")?(\\d+)?"));
  17649. u && (r = u.exec(s));
  17650. r && (e = r[0].replace(c, "").length, s.indexOf("(") != -1 && t._value < 0 && e++);
  17651. t._focusin();
  17652. y(t.element[0], e)
  17653. })
  17654. },
  17655. _change: function(n) {
  17656. var t = this;
  17657. t._update(n);
  17658. n = t._value;
  17659. t._old != n && (t._old = n, t.trigger(h), t.element.trigger(h))
  17660. },
  17661. _culture: function(n) {
  17662. return n || ht(this.options.culture)
  17663. },
  17664. _focusin: function() {
  17665. var n = this;
  17666. n._inputWrapper.addClass(nt);
  17667. n._toggleText(!1);
  17668. n.element[0].focus()
  17669. },
  17670. _focusout: function() {
  17671. var n = this;
  17672. clearTimeout(n._focusing);
  17673. n._inputWrapper.removeClass(nt).removeClass(tt);
  17674. n._blur()
  17675. },
  17676. _format: function(n, t) {
  17677. var i = this._culture(t).numberFormat;
  17678. return n = n.toLowerCase(), n.indexOf("c") > -1 ? i = i.currency : n.indexOf("p") > -1 && (i = i.percent), i
  17679. },
  17680. _input: function() {
  17681. var r = this,
  17682. u = "k-formatted-value",
  17683. t = r.element.addClass(ct).show()[0],
  17684. e = t.accessKey,
  17685. o = r.wrapper,
  17686. i;
  17687. i = o.find(f + u);
  17688. i[0] || (i = n('<input type="text"/>').insertBefore(t).addClass(u));
  17689. try {
  17690. t.setAttribute("type", "text")
  17691. } catch (s) {
  17692. t.type = "text"
  17693. }
  17694. i[0].tabIndex = t.tabIndex;
  17695. i[0].style.cssText = t.style.cssText;
  17696. i.prop("placeholder", r.options.placeholder);
  17697. e && (i.attr("accesskey", e), t.accessKey = "");
  17698. r._text = i.addClass(t.className)
  17699. },
  17700. _keydown: function(n) {
  17701. var t = this,
  17702. i = n.keyCode;
  17703. i == e.DOWN ? t._step(-1) : i == e.UP ? t._step(1) : i == e.ENTER && t._change(t.element.val())
  17704. },
  17705. _keypress: function(n) {
  17706. if (n.which !== 0 && n.keyCode !== e.BACKSPACE && n.keyCode !== e.ENTER) {
  17707. var i = this.element,
  17708. f = String.fromCharCode(n.which),
  17709. r = y(i[0]),
  17710. o = r[0],
  17711. s = r[1],
  17712. u = this.options.min,
  17713. t = i.val();
  17714. t = t.substring(0, o) + f + t.substring(s);
  17715. (u !== null && u >= 0 && t.charAt(0) === "-" || !this._numericRegex().test(t)) && n.preventDefault()
  17716. }
  17717. },
  17718. _numericRegex: function() {
  17719. var t = this,
  17720. u = t.options,
  17721. e = t._format(u.format),
  17722. n = e[f],
  17723. r = u.decimals;
  17724. return (n === f && (n = "\\" + n), r === i && (r = e.decimals), r === 0) ? vt : (t._separator !== n && (t._separator = n, t._floatRegExp = new RegExp("^(-)?(((\\d+(" + n + "\\d*)?)|(" + n + "\\d*)))?$")), t._floatRegExp)
  17725. },
  17726. _paste: function(n) {
  17727. var t = this,
  17728. r = n.target,
  17729. u = r.value;
  17730. setTimeout(function() {
  17731. t._parse(r.value) === i && t._update(u)
  17732. })
  17733. },
  17734. _option: function(n, i) {
  17735. var r = this,
  17736. u = r.options;
  17737. if (i === t) return u[n];
  17738. (i = r._parse(i), i || n !== "step") && (u[n] = i, r.element.attr("aria-value" + n, i).attr(n, i))
  17739. },
  17740. _spin: function(n, t) {
  17741. var i = this;
  17742. t = t || 500;
  17743. clearTimeout(i._spinning);
  17744. i._spinning = setTimeout(function() {
  17745. i._spin(n, 50)
  17746. }, t);
  17747. i._step(n)
  17748. },
  17749. _step: function(n) {
  17750. var t = this,
  17751. i = t.element,
  17752. r = t._parse(i.val()) || 0;
  17753. ft() != i[0] && t._focusin();
  17754. r += t.options.step * n;
  17755. t._update(t._adjust(r));
  17756. t.trigger(d)
  17757. },
  17758. _toggleHover: function(t) {
  17759. n(t.currentTarget).toggleClass(tt, t.type === "mouseenter")
  17760. },
  17761. _toggleText: function(n) {
  17762. var t = this;
  17763. t._text.toggle(n);
  17764. t.element.toggle(!n)
  17765. },
  17766. _parse: function(n, t) {
  17767. return ot(n, this._culture(t), this.options.format)
  17768. },
  17769. _update: function(n) {
  17770. var t = this,
  17771. s = t.options,
  17772. h = s.format,
  17773. u = s.decimals,
  17774. e = t._culture(),
  17775. c = t._format(h, e),
  17776. o;
  17777. u === i && (u = c.decimals);
  17778. n = t._parse(n, e);
  17779. o = n !== i;
  17780. o && (n = parseFloat(w(n, u)));
  17781. t._value = n = t._adjust(n);
  17782. t._placeholder(r.toString(n, h, e));
  17783. o ? (n = n.toString(), n.indexOf("e") !== -1 && (n = w(+n, u)), n = n.replace(f, c[f])) : n = "";
  17784. t.element.val(n).attr("aria-valuenow", n)
  17785. },
  17786. _placeholder: function(n) {
  17787. this._text.val(n);
  17788. st || n || this._text.val(this.options.placeholder)
  17789. },
  17790. _wrapper: function() {
  17791. var i = this,
  17792. r = i.element,
  17793. u = r[0],
  17794. t;
  17795. t = r.parents(".k-numerictextbox");
  17796. t.is("span.k-numerictextbox") || (t = r.hide().wrap('<span class="k-numeric-wrap k-state-default" />').parent(), t = t.wrap("<span/>").parent());
  17797. t[0].style.cssText = u.style.cssText;
  17798. u.style.width = "";
  17799. i.wrapper = t.addClass("k-widget k-numerictextbox").addClass(u.className).css("display", "");
  17800. i._inputWrapper = n(t[0].firstChild)
  17801. },
  17802. _reset: function() {
  17803. var t = this,
  17804. i = t.element,
  17805. r = i.attr("form"),
  17806. u = r ? n("#" + r) : i.closest("form");
  17807. u[0] && (t._resetHandler = function() {
  17808. setTimeout(function() {
  17809. t.value(i[0].value)
  17810. })
  17811. }, t._form = u.on("reset", t._resetHandler))
  17812. }
  17813. });
  17814. p.plugin(yt)
  17815. }(window.kendo.jQuery);
  17816. kendo_module({
  17817. id: "menu",
  17818. name: "Menu",
  17819. category: "web",
  17820. description: "The Menu widget displays hierarchical data as a multi-level menu.",
  17821. depends: ["popup"]
  17822. }),
  17823. function(n, t) {
  17824. function yi(n, t) {
  17825. return n = n.split(" ")[!t + 0] || n, n.replace("top", "up").replace("bottom", "down")
  17826. }
  17827. function pi(n, t, r) {
  17828. n = n.split(" ")[!t + 0] || n;
  17829. var u = {
  17830. origin: ["bottom", r ? "right" : "left"],
  17831. position: ["top", r ? "right" : "left"]
  17832. },
  17833. f = /left|right/.test(n);
  17834. return f ? (u.origin = ["top", n], u.position[1] = i.directions[n].reverse) : (u.origin[0] = n, u.position[0] = i.directions[n].reverse), u.origin = u.origin.join(" "), u.position = u.position.join(" "), u
  17835. }
  17836. function d(t, i) {
  17837. try {
  17838. return n.contains(t, i)
  17839. } catch (r) {
  17840. return !1
  17841. }
  17842. }
  17843. function oi(t) {
  17844. t = n(t);
  17845. t.addClass("k-item").children(pt).addClass(kt);
  17846. t.children("a").addClass(k).children(pt).addClass(kt);
  17847. t.filter(":not([disabled])").addClass(ui);
  17848. t.filter(".k-separator:empty").append("&nbsp;");
  17849. t.filter("li[disabled]").addClass(y).removeAttr("disabled").attr("aria-disabled", !0);
  17850. t.filter("[role]").length || t.attr("role", "menuitem");
  17851. t.children("." + k).length || t.contents().filter(function() {
  17852. return !this.nodeName.match(ci) && !(this.nodeType == 3 && !n.trim(this.nodeValue))
  17853. }).wrapAll("<span class='" + k + "'/>");
  17854. b(t);
  17855. c(t)
  17856. }
  17857. function b(t) {
  17858. t = n(t);
  17859. t.find("> .k-link > [class*=k-i-arrow]:not(.k-sprite)").remove();
  17860. t.filter(":has(.k-group)").children(".k-link:not(:has([class*=k-i-arrow]:not(.k-sprite)))").each(function() {
  17861. var t = n(this),
  17862. i = t.parent().parent();
  17863. t.append("<span class='k-icon " + (i.hasClass(h + "-horizontal") ? "k-i-arrow-s" : "k-i-arrow-e") + "'/>")
  17864. })
  17865. }
  17866. function c(t) {
  17867. t = n(t);
  17868. t.filter(".k-first:not(:first-child)").removeClass(bt);
  17869. t.filter(".k-last:not(:last-child)").removeClass(wt);
  17870. t.filter(":first-child").addClass(bt);
  17871. t.filter(":last-child").addClass(wt)
  17872. }
  17873. var i = window.kendo,
  17874. si = i.ui,
  17875. hi = i._activeElement,
  17876. ft = i.support.touch && i.support.mobileOS,
  17877. et = "mousedown",
  17878. ot = "click",
  17879. f = n.extend,
  17880. u = n.proxy,
  17881. st = n.each,
  17882. o = i.template,
  17883. e = i.keys,
  17884. g = si.Widget,
  17885. ci = /^(ul|a|div)$/i,
  17886. r = ".kendoMenu",
  17887. pt = "img",
  17888. ht = "open",
  17889. h = "k-menu",
  17890. k = "k-link",
  17891. wt = "k-last",
  17892. nt = "close",
  17893. tt = "timer",
  17894. bt = "k-first",
  17895. kt = "k-image",
  17896. dt = "select",
  17897. a = "zIndex",
  17898. gt = "activate",
  17899. ni = "deactivate",
  17900. ti = "touchstart" + r + " MSPointerDown" + r + " pointerdown" + r,
  17901. it = i.support.pointers,
  17902. rt = i.support.msPointers,
  17903. ct = it ? "pointerover" : rt ? "MSPointerOver" : "mouseenter",
  17904. ii = it ? "pointerout" : rt ? "MSPointerOut" : "mouseleave",
  17905. ri = ft || rt || it,
  17906. ut = "kendoPopup",
  17907. ui = "k-state-default",
  17908. lt = "k-state-hover",
  17909. v = "k-state-focused",
  17910. y = "k-state-disabled",
  17911. at = ".k-group",
  17912. p = ":not(.k-list) > .k-item",
  17913. li = ".k-item.k-state-disabled",
  17914. vt = ".k-item:not(.k-state-disabled)",
  17915. ai = ".k-item:not(.k-state-disabled) > .k-link",
  17916. fi = ":not(.k-item.k-separator)",
  17917. w = fi + ":eq(0)",
  17918. ei = fi + ":last",
  17919. vi = "div:not(.k-animation-container,.k-list-container)",
  17920. s = {
  17921. content: o("<div class='k-content k-group' tabindex='-1'>#= content(item) #<\/div>"),
  17922. group: o("<ul class='#= groupCssClass(group) #'#= groupAttributes(group) # role='menu' aria-hidden='true'>#= renderItems(data) #<\/ul>"),
  17923. itemWrapper: o("<#= tag(item) # class='#= textClass(item) #'#= textAttributes(item) #>#= image(item) ##= sprite(item) ##= text(item) ##= arrow(data) #<\/#= tag(item) #>"),
  17924. item: o("<li class='#= wrapperCssClass(group, item) #' role='menuitem' #=item.items ? \"aria-haspopup='true'\": \"\"##=item.enabled === false ? \"aria-disabled='true'\" : ''#>#= itemWrapper(data) ## if (item.items) { ##= subGroup({ items: item.items, menu: menu, group: { expanded: item.expanded } }) ## } else if (item.content || item.contentUrl) { ##= renderContent(data) ## } #<\/li>"),
  17925. image: o("<img class='k-image' alt='' src='#= imageUrl #' />"),
  17926. arrow: o("<span class='#= arrowClass(item, group) #'><\/span>"),
  17927. sprite: o("<span class='k-sprite #= spriteCssClass #'><\/span>"),
  17928. empty: o("")
  17929. },
  17930. yt = {
  17931. wrapperCssClass: function(n, t) {
  17932. var i = "k-item",
  17933. r = t.index;
  17934. return i += t.enabled === !1 ? " k-state-disabled" : " k-state-default", n.firstLevel && r === 0 && (i += " k-first"), r == n.length - 1 && (i += " k-last"), t.cssClass && (i += " " + t.cssClass), i
  17935. },
  17936. textClass: function() {
  17937. return k
  17938. },
  17939. textAttributes: function(n) {
  17940. return n.url ? " href='" + n.url + "'" : ""
  17941. },
  17942. arrowClass: function(n, t) {
  17943. return "k-icon" + (t.horizontal ? " k-i-arrow-s" : " k-i-arrow-e")
  17944. },
  17945. text: function(n) {
  17946. return n.encoded === !1 ? n.text : i.htmlEncode(n.text)
  17947. },
  17948. tag: function(n) {
  17949. return n.url ? "a" : "span"
  17950. },
  17951. groupAttributes: function(n) {
  17952. return n.expanded !== !0 ? " style='display:none'" : ""
  17953. },
  17954. groupCssClass: function() {
  17955. return "k-group"
  17956. },
  17957. content: function(n) {
  17958. return n.content ? n.content : "&nbsp;"
  17959. }
  17960. },
  17961. l = g.extend({
  17962. init: function(t, f) {
  17963. var e = this;
  17964. g.fn.init.call(e, t, f);
  17965. t = e.wrapper = e.element;
  17966. f = e.options;
  17967. e._initData(f);
  17968. e._updateClasses();
  17969. e._animations(f);
  17970. e.nextItemZIndex = 100;
  17971. e._tabindex();
  17972. e._focusProxy = u(e._focusHandler, e);
  17973. t.on(ti, e._focusProxy).on(ot + r, li, !1).on(ot + r, vt, u(e._click, e)).on("keydown" + r, u(e._keydown, e)).on("focus" + r, u(e._focus, e)).on("focus" + r, ".k-content", u(e._focus, e)).on(ti + " " + et + r, ".k-content", u(e._preventClose, e)).on("blur" + r, u(e._removeHoverItem, e)).on("blur" + r, "[tabindex]", u(e._checkActiveElement, e)).on(ct + r, vt, u(e._mouseenter, e)).on(ii + r, vt, u(e._mouseleave, e)).on(ct + r + " " + ii + r + " " + et + r + " " + ot + r, ai, u(e._toggleHover, e));
  17974. f.openOnClick && (e.clicked = !1, e._documentClickHandler = u(e._documentClick, e), n(document).click(e._documentClickHandler));
  17975. t.attr("role", "menubar");
  17976. t[0].id && (e._ariaId = i.format("{0}_mn_active", t[0].id));
  17977. i.notify(e)
  17978. },
  17979. events: [ht, nt, gt, ni, dt],
  17980. options: {
  17981. name: "Menu",
  17982. animation: {
  17983. open: {
  17984. duration: 200
  17985. },
  17986. close: {
  17987. duration: 100
  17988. }
  17989. },
  17990. orientation: "horizontal",
  17991. direction: "default",
  17992. openOnClick: !1,
  17993. closeOnClick: !0,
  17994. hoverDelay: 100
  17995. },
  17996. _initData: function(n) {
  17997. var t = this;
  17998. n.dataSource && (t.element.empty(), t.append(n.dataSource, t.element))
  17999. },
  18000. setOptions: function(n) {
  18001. var t = this.options.animation;
  18002. this._animations(n);
  18003. n.animation = f(!0, t, n.animation);
  18004. "dataSource" in n && this._initData(n);
  18005. g.fn.setOptions.call(this, n)
  18006. },
  18007. destroy: function() {
  18008. var t = this;
  18009. g.fn.destroy.call(t);
  18010. t.element.off(r);
  18011. t._documentClickHandler && n(document).unbind("click", t._documentClickHandler);
  18012. i.destroy(t.element)
  18013. },
  18014. enable: function(n, t) {
  18015. return this._toggleDisabled(n, t !== !1), this
  18016. },
  18017. disable: function(n) {
  18018. return this._toggleDisabled(n, !1), this
  18019. },
  18020. append: function(n, t) {
  18021. t = this.element.find(t);
  18022. var i = this._insert(n, t, t.length ? t.find("> .k-group, > .k-animation-container > .k-group") : null);
  18023. return st(i.items, function() {
  18024. i.group.append(this);
  18025. b(this)
  18026. }), b(t), c(i.group.find(".k-first, .k-last").add(i.items)), this
  18027. },
  18028. insertBefore: function(n, t) {
  18029. t = this.element.find(t);
  18030. var i = this._insert(n, t, t.parent());
  18031. return st(i.items, function() {
  18032. t.before(this);
  18033. b(this);
  18034. c(this)
  18035. }), c(t), this
  18036. },
  18037. insertAfter: function(n, t) {
  18038. t = this.element.find(t);
  18039. var i = this._insert(n, t, t.parent());
  18040. return st(i.items, function() {
  18041. t.after(this);
  18042. b(this);
  18043. c(this)
  18044. }), c(t), this
  18045. },
  18046. _insert: function(t, i, r) {
  18047. var c = this,
  18048. u, s, e, o;
  18049. return i && i.length || (r = c.element), e = n.isPlainObject(t), o = {
  18050. firstLevel: r.hasClass(h),
  18051. horizontal: r.hasClass(h + "-horizontal"),
  18052. expanded: !0,
  18053. length: r.children().length
  18054. }, i && !r.length && (r = n(l.renderGroup({
  18055. group: o
  18056. })).appendTo(i)), e || n.isArray(t) ? u = n(n.map(e ? [t] : t, function(t, i) {
  18057. return typeof t == "string" ? n(t).get() : n(l.renderItem({
  18058. group: o,
  18059. item: f(t, {
  18060. index: i
  18061. })
  18062. })).get()
  18063. })) : (u = n(t), s = u.find("> ul").addClass("k-group").attr("role", "menu"), u = u.filter("li"), u.add(s.find("> li")).each(function() {
  18064. oi(this)
  18065. })), {
  18066. items: u,
  18067. group: r
  18068. }
  18069. },
  18070. remove: function(n) {
  18071. var r;
  18072. n = this.element.find(n);
  18073. var u = this,
  18074. t = n.parentsUntil(u.element, p),
  18075. i = n.parent("ul:not(.k-menu)");
  18076. return n.remove(), i && !i.children(p).length && (r = i.parent(".k-animation-container"), r.length ? r.remove() : i.remove()), t.length && (t = t.eq(0), b(t), c(t)), u
  18077. },
  18078. open: function(r) {
  18079. var u = this,
  18080. e = u.options,
  18081. s = e.orientation == "horizontal",
  18082. o = e.direction,
  18083. c = i.support.isRtl(u.wrapper);
  18084. return r = u.element.find(r), /^(top|bottom|default)$/.test(o) && (o = c ? s ? (o + " left").replace("default", "bottom") : "left" : s ? (o + " right").replace("default", "bottom") : "right"), r.siblings().find(">.k-popup:visible,>.k-animation-container>.k-popup:visible").each(function() {
  18085. var t = n(this).data("kendoPopup");
  18086. t && t.close()
  18087. }), r.each(function() {
  18088. var i = n(this);
  18089. clearTimeout(i.data(tt));
  18090. i.data(tt, setTimeout(function() {
  18091. var r = i.find(".k-group:first:hidden"),
  18092. l;
  18093. if (r[0] && u.trigger(ht, {
  18094. item: i[0]
  18095. }) === !1) {
  18096. !r.find(".k-group")[0] && r.children(".k-item").length > 1 ? setTimeout(function() {
  18097. r.css({
  18098. maxHeight: n(window).height(),
  18099. overflow: "auto"
  18100. })
  18101. }) : r.css({
  18102. maxHeight: "",
  18103. overflow: ""
  18104. });
  18105. i.data(a, i.css(a));
  18106. i.css(a, u.nextItemZIndex++);
  18107. l = r.data(ut);
  18108. var y = i.parent().hasClass(h),
  18109. b = y && s,
  18110. v = pi(o, y, c),
  18111. p = e.animation.open.effects,
  18112. w = p !== t ? p : "slideIn:" + yi(o, y);
  18113. l ? (l = r.data(ut), l.options.origin = v.origin, l.options.position = v.position, l.options.animation.open.effects = w) : l = r.kendoPopup({
  18114. activate: function() {
  18115. u.trigger(gt, {
  18116. item: this.wrapper.parent()
  18117. })
  18118. },
  18119. deactivate: function() {
  18120. u.trigger(ni, {
  18121. item: this.wrapper.parent()
  18122. })
  18123. },
  18124. origin: v.origin,
  18125. position: v.position,
  18126. collision: e.popupCollision !== t ? e.popupCollision : b ? "fit" : "fit flip",
  18127. anchor: i,
  18128. appendTo: i,
  18129. animation: {
  18130. open: f(!0, {
  18131. effects: w
  18132. }, e.animation.open),
  18133. close: e.animation.close
  18134. },
  18135. close: function(n) {
  18136. var t = n.sender.wrapper.parent();
  18137. u.trigger(nt, {
  18138. item: t[0]
  18139. }) ? n.preventDefault() : (t.css(a, t.data(a)), t.removeData(a), ri && (t.removeClass(lt), u._removeHoverItem()))
  18140. }
  18141. }).data(ut);
  18142. r.removeAttr("aria-hidden");
  18143. l.open()
  18144. }
  18145. }, u.options.hoverDelay))
  18146. }), u
  18147. },
  18148. close: function(t) {
  18149. var i = this,
  18150. r = i.element;
  18151. return t = r.find(t), t.length || (t = r.find(">.k-item")), t.each(function() {
  18152. var t = n(this);
  18153. i._isRootItem(t) && (i.clicked = !1);
  18154. clearTimeout(t.data(tt));
  18155. t.data(tt, setTimeout(function() {
  18156. var n = t.find(".k-group:not(.k-list-container):not(.k-calendar-container):first:visible").data(ut);
  18157. n && (n.close(), n.element.attr("aria-hidden", !0))
  18158. }, i.options.hoverDelay))
  18159. }), i
  18160. },
  18161. _toggleDisabled: function(t, i) {
  18162. this.element.find(t).each(function() {
  18163. n(this).toggleClass(ui, i).toggleClass(y, !i).attr("aria-disabled", !i)
  18164. })
  18165. },
  18166. _toggleHover: function(t) {
  18167. var r = n(i.eventTarget(t) || t.target).closest(p),
  18168. u = t.type == ct || et.indexOf(t.type) !== -1;
  18169. r.parents("li." + y).length || r.toggleClass(lt, u || t.type == "mousedown" || t.type == "click");
  18170. this._removeHoverItem()
  18171. },
  18172. _preventClose: function() {
  18173. this.options.closeOnClick || (this._closurePrevented = !0)
  18174. },
  18175. _checkActiveElement: function(t) {
  18176. var u = this,
  18177. f = n(t ? t.currentTarget : this._hoverItem()),
  18178. r = u._findRootParent(f)[0];
  18179. this._closurePrevented || setTimeout(function() {
  18180. document.hasFocus() && (d(r, i._activeElement()) || !t || d(r, t.currentTarget)) || u.close(r)
  18181. }, 0);
  18182. this._closurePrevented = !1
  18183. },
  18184. _removeHoverItem: function() {
  18185. var n = this._hoverItem();
  18186. n && n.hasClass(v) && (n.removeClass(v), this._oldHoverItem = null)
  18187. },
  18188. _updateClasses: function() {
  18189. var n = this.element,
  18190. t;
  18191. n.addClass("k-widget k-reset k-header " + h).addClass(h + "-" + this.options.orientation);
  18192. n.find("li > ul").addClass("k-group").attr("role", "menu").attr("aria-hidden", n.is(":visible")).end().find("li > div").addClass("k-content").attr("tabindex", "-1");
  18193. t = n.find("> li,.k-group > li");
  18194. t.each(function() {
  18195. oi(this)
  18196. })
  18197. },
  18198. _mouseenter: function(t) {
  18199. var i = this,
  18200. r = n(t.currentTarget),
  18201. f = r.children(".k-animation-container").length || r.children(at).length;
  18202. t.delegateTarget == r.parents(".k-menu")[0] && (i.options.openOnClick && !i.clicked || ft || !d(t.currentTarget, t.relatedTarget) && f && i.open(r), (i.options.openOnClick && i.clicked || ri) && r.siblings().each(u(function(n, t) {
  18203. i.close(t)
  18204. }, i)))
  18205. },
  18206. _mouseleave: function(t) {
  18207. var r = this,
  18208. i = n(t.currentTarget),
  18209. u = i.children(".k-animation-container").length || i.children(at).length;
  18210. if (i.parentsUntil(".k-animation-container", ".k-list-container,.k-calendar-container")[0]) {
  18211. t.stopImmediatePropagation();
  18212. return
  18213. }
  18214. r.options.openOnClick || ft || (it || rt) && t.originalEvent.pointerType == t.originalEvent.MSPOINTER_TYPE_TOUCH || d(t.currentTarget, t.relatedTarget || t.target) || !u || r.close(i)
  18215. },
  18216. _click: function(t) {
  18217. var r = this,
  18218. c, f = r.options,
  18219. e = n(i.eventTarget(t)),
  18220. o = e[0] ? e[0].nodeName.toUpperCase() : "",
  18221. v = o == "INPUT" || o == "SELECT" || o == "BUTTON" || o == "LABEL",
  18222. l = e.closest("." + k),
  18223. u = e.closest(p),
  18224. w = l.attr("href"),
  18225. s, b, a = !!w && w !== n("<a href='#' />").attr("href");
  18226. if (!u.children(vi)[0]) {
  18227. if (u.hasClass(y)) {
  18228. t.preventDefault();
  18229. return
  18230. }
  18231. if (t.handled || !r.trigger(dt, {
  18232. item: u[0]
  18233. }) || v || t.preventDefault(), t.handled = !0, s = u.children(at + ",.k-animation-container"), b = s.is(":visible"), f.closeOnClick && !a && (!s.length || f.openOnClick && b)) {
  18234. u.removeClass(lt).css("height");
  18235. r._oldHoverItem = r._findRootParent(u);
  18236. r.close(l.parentsUntil(r.element, p));
  18237. r.clicked = !1;
  18238. "MSPointerUp".indexOf(t.type) != -1 && t.preventDefault();
  18239. return
  18240. }(a && t.enterKey && l[0].click(), u.parent().hasClass(h) && f.openOnClick || i.support.touch) && (a || v || t.preventDefault(), r.clicked = !0, c = s.is(":visible") ? nt : ht, f.closeOnClick || c != nt) && r[c](u)
  18241. }
  18242. },
  18243. _documentClick: function(n) {
  18244. d(this.element[0], n.target) || (this.clicked = !1)
  18245. },
  18246. _focus: function(t) {
  18247. var i = this,
  18248. r = t.target,
  18249. u = i._hoverItem(),
  18250. f = hi();
  18251. if (r != i.wrapper[0] && !n(r).is(":kendoFocusable")) {
  18252. t.stopPropagation();
  18253. n(r).closest(".k-content").closest(".k-group").closest(".k-item").addClass(v);
  18254. i.wrapper.focus();
  18255. return
  18256. }
  18257. f === t.currentTarget && (u.length ? i._moveHover([], u) : i._oldHoverItem || i._moveHover([], i.wrapper.children().first()))
  18258. },
  18259. _keydown: function(n) {
  18260. var t = this,
  18261. f = n.keyCode,
  18262. r = t._oldHoverItem,
  18263. u, o, s, h = i.support.isRtl(t.wrapper);
  18264. if (n.target == n.currentTarget || f == e.ESC) {
  18265. if (r || (r = t._oldHoverItem = t._hoverItem()), o = t._itemBelongsToVertival(r), s = t._itemHasChildren(r), f == e.RIGHT) u = t[h ? "_itemLeft" : "_itemRight"](r, o, s);
  18266. else if (f == e.LEFT) u = t[h ? "_itemRight" : "_itemLeft"](r, o, s);
  18267. else if (f == e.DOWN) u = t._itemDown(r, o, s);
  18268. else if (f == e.UP) u = t._itemUp(r, o, s);
  18269. else if (f == e.ESC) u = t._itemEsc(r, o);
  18270. else if (f == e.ENTER || f == e.SPACEBAR) u = r.children(".k-link"), u.length > 0 && (t._click({
  18271. target: u[0],
  18272. preventDefault: function() {},
  18273. enterKey: !0
  18274. }), t._moveHover(r, t._findRootParent(r)));
  18275. else if (f == e.TAB) {
  18276. u = t._findRootParent(r);
  18277. t._moveHover(r, u);
  18278. t._checkActiveElement();
  18279. return
  18280. }
  18281. u && u[0] && (n.preventDefault(), n.stopPropagation())
  18282. }
  18283. },
  18284. _hoverItem: function() {
  18285. return this.wrapper.find(".k-item.k-state-hover,.k-item.k-state-focused").filter(":visible")
  18286. },
  18287. _itemBelongsToVertival: function(n) {
  18288. var t = this.wrapper.hasClass("k-menu-vertical");
  18289. return n.length ? n.parent().hasClass("k-group") || t : t
  18290. },
  18291. _itemHasChildren: function(n) {
  18292. return n.length ? n.children("ul.k-group, div.k-animation-container").length > 0 : !1
  18293. },
  18294. _moveHover: function(n, t) {
  18295. var r = this,
  18296. i = r._ariaId;
  18297. n.length && t.length && (n.removeClass(v), n[0].id === i && n.removeAttr("id"));
  18298. t.length && (t[0].id && (i = t[0].id), t.addClass(v), r._oldHoverItem = t, i && (r.element.removeAttr("aria-activedescendant"), t.attr("id", i), r.element.attr("aria-activedescendant", i)))
  18299. },
  18300. _findRootParent: function(n) {
  18301. return n.parent().hasClass("k-menu") ? n : n.parentsUntil(".k-menu", "li.k-item").last()
  18302. },
  18303. _isRootItem: function(n) {
  18304. return n.parent().hasClass("k-menu")
  18305. },
  18306. _itemRight: function(n, t, i) {
  18307. var u = this,
  18308. r, f;
  18309. if (!n.hasClass(y)) return t ? i ? (u.open(n), r = n.find(".k-group").children().first()) : u.options.orientation == "horizontal" && (f = u._findRootParent(n), u.close(f), r = f.nextAll(w)) : (r = n.nextAll(w), r.length || (r = n.prevAll(ei))), r && !r.length ? r = u.wrapper.children(".k-item").first() : r || (r = []), u._moveHover(n, r), r
  18310. },
  18311. _itemLeft: function(n, t) {
  18312. var r = this,
  18313. i;
  18314. return t ? (i = n.parent().closest(".k-item"), r.close(i), r._isRootItem(i) && r.options.orientation == "horizontal" && (i = i.prevAll(w))) : (i = n.prevAll(w), i.length || (i = n.nextAll(ei))), i.length || (i = r.wrapper.children(".k-item").last()), r._moveHover(n, i), i
  18315. },
  18316. _itemDown: function(n, t, i) {
  18317. var u = this,
  18318. r;
  18319. if (t) r = n.nextAll(w);
  18320. else {
  18321. if (!i || n.hasClass(y)) return;
  18322. u.open(n);
  18323. r = n.find(".k-group").children().first()
  18324. }
  18325. return !r.length && n.length ? r = n.parent().children().first() : n.length || (r = u.wrapper.children(".k-item").first()), u._moveHover(n, r), r
  18326. },
  18327. _itemUp: function(n, t) {
  18328. var r = this,
  18329. i;
  18330. if (t) i = n.prevAll(w);
  18331. else return;
  18332. return !i.length && n.length ? i = n.parent().children().last() : n.length || (i = r.wrapper.children(".k-item").last()), r._moveHover(n, i), i
  18333. },
  18334. _itemEsc: function(n, t) {
  18335. var r = this,
  18336. i;
  18337. if (t) i = n.parent().closest(".k-item"), r.close(i), r._moveHover(n, i);
  18338. else return n;
  18339. return i
  18340. },
  18341. _focusHandler: function(t) {
  18342. var u = this,
  18343. r = n(i.eventTarget(t)).closest(p);
  18344. setTimeout(function() {
  18345. u._moveHover([], r);
  18346. r.children(".k-content")[0] && r.parent().closest(".k-item").removeClass(v)
  18347. }, 200)
  18348. },
  18349. _animations: function(n) {
  18350. n && "animation" in n && !n.animation && (n.animation = {
  18351. open: {
  18352. effects: {}
  18353. },
  18354. close: {
  18355. hide: !0,
  18356. effects: {}
  18357. }
  18358. })
  18359. }
  18360. });
  18361. f(l, {
  18362. renderItem: function(n) {
  18363. n = f({
  18364. menu: {},
  18365. group: {}
  18366. }, n);
  18367. var i = s.empty,
  18368. t = n.item;
  18369. return s.item(f(n, {
  18370. image: t.imageUrl ? s.image : i,
  18371. sprite: t.spriteCssClass ? s.sprite : i,
  18372. itemWrapper: s.itemWrapper,
  18373. renderContent: l.renderContent,
  18374. arrow: t.items || t.content ? s.arrow : i,
  18375. subGroup: l.renderGroup
  18376. }, yt))
  18377. },
  18378. renderGroup: function(n) {
  18379. return s.group(f({
  18380. renderItems: function(n) {
  18381. for (var r = "", t = 0, i = n.items, u = i ? i.length : 0, e = f({
  18382. length: u
  18383. }, n.group); t < u; t++) r += l.renderItem(f(n, {
  18384. group: e,
  18385. item: f({
  18386. index: t
  18387. }, i[t])
  18388. }));
  18389. return r
  18390. }
  18391. }, n, yt))
  18392. },
  18393. renderContent: function(n) {
  18394. return s.content(f(n, yt))
  18395. }
  18396. });
  18397. i.ui.plugin(l)
  18398. }(window.kendo.jQuery);
  18399. kendo_module({
  18400. id: "filtermenu",
  18401. name: "Filtering Menu",
  18402. category: "framework",
  18403. depends: ["datepicker", "numerictextbox", "dropdownlist"],
  18404. advanced: !0
  18405. }),
  18406. function(n) {
  18407. function c(t, i) {
  18408. t.filters && (t.filters = n.grep(t.filters, function(n) {
  18409. return c(n, i), n.filters ? n.filters.length : n.field != i
  18410. }))
  18411. }
  18412. function l(n) {
  18413. var i, u, t, f, e, r;
  18414. if (n && n.length)
  18415. for (r = [], i = 0, u = n.length; i < u; i++) t = n[i], e = t.text || t.value || t, f = t.value == null ? t.text || t : t.value, r[i] = {
  18416. text: e,
  18417. value: f
  18418. };
  18419. return r
  18420. }
  18421. function d(t, i) {
  18422. return n.grep(t, function(t) {
  18423. return t.filters ? (t.filters = n.grep(t.filters, function(n) {
  18424. return n.field != i
  18425. }), t.filters.length) : t.field != i
  18426. })
  18427. }
  18428. var t = window.kendo,
  18429. s = t.ui,
  18430. i = n.proxy,
  18431. u = "kendoPopup",
  18432. h = "init",
  18433. r = ".kendoFilterMenu",
  18434. f = "Is equal to",
  18435. e = "Is not equal to",
  18436. a = {
  18437. number: "numerictextbox",
  18438. date: "datepicker"
  18439. },
  18440. v = {
  18441. string: "text",
  18442. number: "number",
  18443. date: "date"
  18444. },
  18445. y = t.isFunction,
  18446. o = s.Widget,
  18447. p = '<div><div class="k-filter-help-text">#=messages.info#<\/div><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value"/>#=messages.isTrue#<\/label><label><input type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value"/>#=messages.isFalse#<\/label><div><button type="submit" class="k-button">#=messages.filter#<\/button><button type="reset" class="k-button">#=messages.clear#<\/button><\/div><\/div>',
  18448. w = '<div><div class="k-filter-help-text">#=messages.info#<\/div><select data-#=ns#bind="value: filters[0].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#<\/option>#}#<\/select>#if(values){#<select data-#=ns#bind="value:filters[0].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#"><\/select>#}else{#<input data-#=ns#bind="value:filters[0].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}##if(extra){#<select class="k-filter-and" data-#=ns#bind="value: logic" data-#=ns#role="dropdownlist"><option value="and">#=messages.and#<\/option><option value="or">#=messages.or#<\/option><\/select><select data-#=ns#bind="value: filters[1].operator" data-#=ns#role="dropdownlist">#for(var op in operators){#<option value="#=op#">#=operators[op]#<\/option>#}#<\/select>#if(values){#<select data-#=ns#bind="value:filters[1].value" data-#=ns#text-field="text" data-#=ns#value-field="value" data-#=ns#source=\'#=kendo.stringify(values).replace(/\'/g,"&\\#39;")#\' data-#=ns#role="dropdownlist" data-#=ns#option-label="#=messages.selectValue#"><\/select>#}else{#<input data-#=ns#bind="value: filters[1].value" class="k-textbox" type="text" #=role ? "data-" + ns + "role=\'" + role + "\'" : ""#/>#}##}#<div><button type="submit" class="k-button">#=messages.filter#<\/button><button type="reset" class="k-button">#=messages.clear#<\/button><\/div><\/div>',
  18449. b = '<div data-#=ns#role="view" data-#=ns#init-widgets="false" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><button class="k-button k-cancel">#=messages.cancel#<\/button>#=field#<button type="submit" class="k-button k-submit">#=messages.filter#<\/button><\/div><form class="k-filter-menu k-mobile-list k-secondary"><ul class="k-filter-help-text"><li><span class="k-link">#=messages.info#<\/span><ul><li class="k-item"><label class="k-label">#=messages.operator#<select data-#=ns#bind="value: filters[0].operator">#for(var op in operators){#<option value="#=op#">#=operators[op]#<\/option>#}#<\/select><\/label><\/li><li class="k-item"><label class="k-label">#=messages.value##if(values){#<select data-#=ns#bind="value:filters[0].value"><option value="">#=messages.selectValue#<\/option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#<\/option>#}#<\/select>#}else{#<input data-#=ns#bind="value:filters[0].value" class="k-textbox" type="#=inputType#" #=useRole ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}#<\/label><\/li>#if(extra){#<\/ul><ul class="k-filter-help-text"><li><span class="k-link"><\/span><li class="k-item"><label class="k-label"><input type="radio" name="logic" class="k-check" data-#=ns#bind="checked: logic" value="and" />#=messages.and#<\/label><\/li><li class="k-item"><label class="k-label"><input type="radio" name="logic" class="k-check" data-#=ns#bind="checked: logic" value="or" />#=messages.or#<\/label><\/li><\/ul><ul class="k-filter-help-text"><li><span class="k-link"><\/span><li class="k-item"><label class="k-label">#=messages.operator#<select data-#=ns#bind="value: filters[1].operator">#for(var op in operators){#<option value="#=op#">#=operators[op]#<\/option>#}#<\/select><\/label><\/li><li class="k-item"><label class="k-label">#=messages.value##if(values){#<select data-#=ns#bind="value:filters[1].value"><option value="">#=messages.selectValue#<\/option>#for(var val in values){#<option value="#=values[val].value#">#=values[val].text#<\/option>#}#<\/select>#}else{#<input data-#=ns#bind="value:filters[1].value" class="k-textbox" type="#=inputType#" #=useRole ? "data-" + ns + "role=\'" + role + "\'" : ""# />#}#<\/label><\/li>#}#<\/ul><\/li><li class="k-button-container"><button type="reset" class="k-button">#=messages.clear#<\/button><\/li><\/ul><\/div><\/form><\/div>',
  18450. k = '<div data-#=ns#role="view" data-#=ns#init-widgets="false" class="k-grid-filter-menu"><div data-#=ns#role="header" class="k-header"><button class="k-button k-cancel">#=messages.cancel#<\/button>#=field#<button type="submit" class="k-button k-submit">#=messages.filter#<\/button><\/div><form class="k-filter-menu k-mobile-list k-secondary"><ul class="k-filter-help-text"><li><span class="k-link">#=messages.info#<\/span><ul><li class="k-item"><label class="k-label"><input class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="true" name="filters[0].value"/>#=messages.isTrue#<\/label><\/li><li class="k-item"><label class="k-label"><input class="k-check" type="radio" data-#=ns#bind="checked: filters[0].value" value="false" name="filters[0].value"/>#=messages.isFalse#<\/label><\/li><\/ul><\/li><li class="k-button-container"><button type="reset" class="k-button">#=messages.clear#<\/button><\/li><\/ul><\/form><\/div>',
  18451. g = o.extend({
  18452. init: function(u, f) {
  18453. var e = this,
  18454. h = "string",
  18455. l, a, c, s;
  18456. if (o.fn.init.call(e, u, f), l = e.operators = f.operators || {}, u = e.element, f = e.options, !f.appendToElement) {
  18457. c = u.addClass("k-with-icon k-filterable").find(".k-grid-filter");
  18458. c[0] || (c = u.prepend('<a class="k-grid-filter" href="#"><span class="k-icon k-filter"/><\/a>').find(".k-grid-filter"));
  18459. c.attr("tabindex", -1).on("click" + r, i(e._click, e))
  18460. }
  18461. e.link = c || n();
  18462. e.dataSource = f.dataSource;
  18463. e.field = f.field || u.attr(t.attr("field"));
  18464. e.model = e.dataSource.reader.model;
  18465. e._parse = function(n) {
  18466. return n + ""
  18467. };
  18468. e.model && e.model.fields && (s = e.model.fields[e.field], s && (h = s.type || "string", s.parse && (e._parse = i(s.parse, s))));
  18469. f.values && (h = "enums");
  18470. e.type = h;
  18471. l = l[h] || f.operators[h];
  18472. for (a in l) break;
  18473. e._defaultFilter = function() {
  18474. return {
  18475. field: e.field,
  18476. operator: a || "eq",
  18477. value: ""
  18478. }
  18479. };
  18480. e._refreshHandler = i(e.refresh, e);
  18481. e.dataSource.bind("change", e._refreshHandler);
  18482. f.appendToElement ? e._init() : e.refresh()
  18483. },
  18484. _init: function() {
  18485. var u = this,
  18486. f = u.options.ui,
  18487. o = y(f),
  18488. e;
  18489. u.pane = u.options.pane;
  18490. u.pane && (u._isMobile = !0);
  18491. o || (e = f || a[u.type]);
  18492. u._isMobile ? u._createMobileForm(e) : u._createForm(e);
  18493. u.form.on("submit" + r, i(u._submit, u)).on("reset" + r, i(u._reset, u));
  18494. o && u.form.find(".k-textbox").removeClass("k-textbox").each(function() {
  18495. f(n(this))
  18496. });
  18497. u.form.find("[" + t.attr("role") + "=numerictextbox]").removeClass("k-textbox").end().find("[" + t.attr("role") + "=datetimepicker]").removeClass("k-textbox").end().find("[" + t.attr("role") + "=timepicker]").removeClass("k-textbox").end().find("[" + t.attr("role") + "=datepicker]").removeClass("k-textbox");
  18498. u.refresh();
  18499. u.trigger(h, {
  18500. field: u.field,
  18501. container: u.form
  18502. })
  18503. },
  18504. _createForm: function(f) {
  18505. var e = this,
  18506. o = e.options,
  18507. h = e.operators || {},
  18508. s = e.type;
  18509. h = h[s] || o.operators[s];
  18510. e.form = n('<form class="k-filter-menu k-secondary"/>').html(t.template(s === "boolean" ? p : w)({
  18511. field: e.field,
  18512. format: o.format,
  18513. ns: t.ns,
  18514. messages: o.messages,
  18515. extra: o.extra,
  18516. operators: h,
  18517. type: s,
  18518. role: f,
  18519. values: l(o.values)
  18520. }));
  18521. o.appendToElement ? (e.element.append(e.form), e.popup = e.element.closest(".k-popup").data(u)) : e.popup = e.form[u]({
  18522. anchor: e.link,
  18523. open: i(e._open, e),
  18524. activate: i(e._activate, e),
  18525. close: e.options.closeCallback
  18526. }).data(u);
  18527. e.form.on("keydown" + r, i(e._keydown, e))
  18528. },
  18529. _createMobileForm: function(i) {
  18530. var r = this,
  18531. f = r.options,
  18532. e = r.operators || {},
  18533. u = r.type;
  18534. e = e[u] || f.operators[u];
  18535. r.form = n("<div />").html(t.template(u === "boolean" ? k : b)({
  18536. field: r.field,
  18537. format: f.format,
  18538. ns: t.ns,
  18539. messages: f.messages,
  18540. extra: f.extra,
  18541. operators: e,
  18542. type: u,
  18543. role: i,
  18544. useRole: !t.support.input.date && u === "date" || u === "number",
  18545. inputType: v[u],
  18546. values: l(f.values)
  18547. }));
  18548. r.view = r.pane.append(r.form.html());
  18549. r.form = r.view.element.find("form");
  18550. r.view.element.on("click", ".k-submit", function(n) {
  18551. r.form.submit();
  18552. n.preventDefault()
  18553. }).on("click", ".k-cancel", function(n) {
  18554. r._closeForm();
  18555. n.preventDefault()
  18556. })
  18557. },
  18558. refresh: function() {
  18559. var n = this,
  18560. i = n.dataSource.filter() || {
  18561. filters: [],
  18562. logic: "and"
  18563. };
  18564. n.filterModel = t.observable({
  18565. logic: "and",
  18566. filters: [n._defaultFilter(), n._defaultFilter()]
  18567. });
  18568. n.form && t.bind(n.form.children().first(), n.filterModel);
  18569. n._bind(i) ? n.link.addClass("k-state-active") : n.link.removeClass("k-state-active")
  18570. },
  18571. destroy: function() {
  18572. var n = this;
  18573. o.fn.destroy.call(n);
  18574. n.form && (t.unbind(n.form), t.destroy(n.form), n.form.unbind(r), n.popup && n.popup.destroy());
  18575. n.view && n.view.purge();
  18576. n.link.unbind(r);
  18577. n._refreshHandler && n.dataSource.unbind("change", n._refreshHandler)
  18578. },
  18579. _bind: function(n) {
  18580. for (var i = this, s = n.filters, f = !1, o = 0, e = i.filterModel, r, t, u = 0, h = s.length; u < h; u++) t = s[u], t.field == i.field ? (e.set("logic", n.logic), r = e.filters[o], r || (e.filters.push({
  18581. field: i.field
  18582. }), r = e.filters[o]), r.set("value", i._parse(t.value)), r.set("operator", t.operator), o++, f = !0) : t.filters && (f = f || i._bind(t));
  18583. return f
  18584. },
  18585. _merge: function(t) {
  18586. var f = this,
  18587. s = t.logic || "and",
  18588. r = t.filters,
  18589. e, i = f.dataSource.filter() || {
  18590. filters: [],
  18591. logic: "and"
  18592. },
  18593. u, o;
  18594. for (c(i, f.field), r = n.grep(r, function(n) {
  18595. return n.value !== "" && n.value != null
  18596. }), u = 0, o = r.length; u < o; u++) e = r[u], e.value = f._parse(e.value);
  18597. return r.length && (i.filters.length ? (t.filters = r, i.logic !== "and" && (i.filters = [{
  18598. logic: i.logic,
  18599. filters: i.filters
  18600. }], i.logic = "and"), r.length > 1 ? i.filters.push(t) : i.filters.push(r[0])) : (i.filters = r, i.logic = s)), i
  18601. },
  18602. filter: function(n) {
  18603. n = this._merge(n);
  18604. n.filters.length && this.dataSource.filter(n)
  18605. },
  18606. clear: function() {
  18607. var i = this,
  18608. t = i.dataSource.filter() || {
  18609. filters: []
  18610. };
  18611. t.filters = n.grep(t.filters, function(n) {
  18612. return n.filters ? (n.filters = d(n.filters, i.field), n.filters.length) : n.field != i.field
  18613. });
  18614. t.filters.length || (t = null);
  18615. i.dataSource.filter(t)
  18616. },
  18617. _submit: function(n) {
  18618. n.preventDefault();
  18619. n.stopPropagation();
  18620. this.filter(this.filterModel.toJSON());
  18621. this._closeForm()
  18622. },
  18623. _reset: function() {
  18624. this.clear();
  18625. this._closeForm()
  18626. },
  18627. _closeForm: function() {
  18628. this._isMobile ? this.pane.navigate("", this.options.animations.right) : this.popup.close()
  18629. },
  18630. _click: function(n) {
  18631. n.preventDefault();
  18632. n.stopPropagation();
  18633. this.popup || this.pane || this._init();
  18634. this._isMobile ? this.pane.navigate(this.view, this.options.animations.left) : this.popup.toggle()
  18635. },
  18636. _open: function() {
  18637. var t;
  18638. n(".k-filter-menu").not(this.form).each(function() {
  18639. t = n(this).data(u);
  18640. t && t.close()
  18641. })
  18642. },
  18643. _activate: function() {
  18644. this.form.find(":kendoFocusable:first").focus()
  18645. },
  18646. _keydown: function(n) {
  18647. n.keyCode == t.keys.ESC && this.popup.close()
  18648. },
  18649. events: [h],
  18650. options: {
  18651. name: "FilterMenu",
  18652. extra: !0,
  18653. appendToElement: !1,
  18654. type: "string",
  18655. operators: {
  18656. string: {
  18657. eq: f,
  18658. neq: e,
  18659. startswith: "Starts with",
  18660. contains: "Contains",
  18661. doesnotcontain: "Does not contain",
  18662. endswith: "Ends with"
  18663. },
  18664. number: {
  18665. eq: f,
  18666. neq: e,
  18667. gte: "Is greater than or equal to",
  18668. gt: "Is greater than",
  18669. lte: "Is less than or equal to",
  18670. lt: "Is less than"
  18671. },
  18672. date: {
  18673. eq: f,
  18674. neq: e,
  18675. gte: "Is after or equal to",
  18676. gt: "Is after",
  18677. lte: "Is before or equal to",
  18678. lt: "Is before"
  18679. },
  18680. enums: {
  18681. eq: f,
  18682. neq: e
  18683. }
  18684. },
  18685. messages: {
  18686. info: "Show items with value that:",
  18687. isTrue: "is true",
  18688. isFalse: "is false",
  18689. filter: "Filter",
  18690. clear: "Clear",
  18691. and: "And",
  18692. or: "Or",
  18693. selectValue: "-Select value-",
  18694. operator: "Operator",
  18695. value: "Value",
  18696. cancel: "Cancel"
  18697. },
  18698. animations: {
  18699. left: "slide",
  18700. right: "slide:right"
  18701. }
  18702. }
  18703. });
  18704. s.plugin(g)
  18705. }(window.kendo.jQuery);
  18706. kendo_module({
  18707. id: "panelbar",
  18708. name: "PanelBar",
  18709. category: "web",
  18710. description: "The PanelBar widget displays hierarchical data as a multi-level expandable panel bar.",
  18711. depends: ["core"]
  18712. }),
  18713. function(n, t) {
  18714. function wt(t) {
  18715. t = n(t);
  18716. t.children(r).children(".k-icon").remove();
  18717. t.filter(":has(.k-panel),:has(.k-content)").children(".k-link:not(:has([class*=k-i-arrow]))").each(function() {
  18718. var t = n(this),
  18719. i = t.parent();
  18720. t.append("<span class='k-icon " + (i.hasClass(w) ? "k-i-arrow-n k-panelbar-collapse" : "k-i-arrow-s k-panelbar-expand") + "'/>")
  18721. })
  18722. }
  18723. function a(t) {
  18724. t = n(t);
  18725. t.filter(".k-first:not(:first-child)").removeClass(ct);
  18726. t.filter(".k-last:not(:last-child)").removeClass(ht);
  18727. t.filter(":first-child").addClass(ct);
  18728. t.filter(":last-child").addClass(ht)
  18729. }
  18730. var e = window.kendo,
  18731. oi = e.ui,
  18732. o = e.keys,
  18733. i = n.extend,
  18734. ot = n.each,
  18735. s = e.template,
  18736. nt = oi.Widget,
  18737. si = /^(ul|a|div)$/i,
  18738. h = ".kendoPanelBar",
  18739. bt = "img",
  18740. st = "href",
  18741. ht = "k-last",
  18742. tt = "k-link",
  18743. r = "." + tt,
  18744. kt = "error",
  18745. u = ".k-item",
  18746. b = ".k-group:visible",
  18747. dt = "k-image",
  18748. ct = "k-first",
  18749. lt = "expand",
  18750. at = "select",
  18751. it = "k-content",
  18752. gt = "activate",
  18753. rt = "collapse",
  18754. ni = "mouseenter",
  18755. hi = "mouseleave",
  18756. ti = "contentLoad",
  18757. w = "k-state-active",
  18758. v = "> .k-panel",
  18759. k = "> .k-content",
  18760. ii = "k-state-focused",
  18761. f = "k-state-disabled",
  18762. d = "k-state-selected",
  18763. ut = "." + d,
  18764. c = "k-state-highlight",
  18765. ft = u + ":not(.k-state-disabled)",
  18766. ri = ft + " > .k-link",
  18767. ci = u + ".k-state-disabled > .k-link",
  18768. ui = "> li > " + ut + ", .k-panel > li > " + ut,
  18769. fi = "k-state-default",
  18770. vt = "aria-disabled",
  18771. g = "aria-expanded",
  18772. yt = "aria-hidden",
  18773. et = "aria-selected",
  18774. y = ":visible",
  18775. li = ":empty",
  18776. ei = "single",
  18777. l = {
  18778. content: s("<div role='region' class='k-content'#= contentAttributes(data) #>#= content(item) #<\/div>"),
  18779. group: s("<ul role='group' aria-hidden='true' class='#= groupCssClass(group) #'#= groupAttributes(group) #>#= renderItems(data) #<\/ul>"),
  18780. itemWrapper: s("<#= tag(item) # class='#= textClass(item, group) #' #= contentUrl(item) ##= textAttributes(item) #>#= image(item) ##= sprite(item) ##= text(item) ##= arrow(data) #<\/#= tag(item) #>"),
  18781. item: s("<li role='menuitem' #=aria(item)#class='#= wrapperCssClass(group, item) #'>#= itemWrapper(data) ## if (item.items) { ##= subGroup({ items: item.items, panelBar: panelBar, group: { expanded: item.expanded } }) ## } else if (item.content || item.contentUrl) { ##= renderContent(data) ## } #<\/li>"),
  18782. image: s("<img class='k-image' alt='' src='#= imageUrl #' />"),
  18783. arrow: s("<span class='#= arrowClass(item) #'><\/span>"),
  18784. sprite: s("<span class='k-sprite #= spriteCssClass #'><\/span>"),
  18785. empty: s("")
  18786. },
  18787. pt = {
  18788. aria: function(n) {
  18789. var t = "";
  18790. return (n.items || n.content || n.contentUrl) && (t += g + "='" + (n.expanded ? "true" : "false") + "' "), n.enabled === !1 && (t += vt + "='true'"), t
  18791. },
  18792. wrapperCssClass: function(n, t) {
  18793. var i = "k-item",
  18794. r = t.index;
  18795. return i += t.enabled === !1 ? " " + f : t.expanded === !0 ? " " + w : " k-state-default", r === 0 && (i += " k-first"), r == n.length - 1 && (i += " k-last"), t.cssClass && (i += " " + t.cssClass), i
  18796. },
  18797. textClass: function(n, t) {
  18798. var i = tt;
  18799. return t.firstLevel && (i += " k-header"), i
  18800. },
  18801. textAttributes: function(n) {
  18802. return n.url ? " href='" + n.url + "'" : ""
  18803. },
  18804. arrowClass: function(n) {
  18805. return "k-icon" + (n.expanded ? " k-i-arrow-n k-panelbar-collapse" : " k-i-arrow-s k-panelbar-expand")
  18806. },
  18807. text: function(n) {
  18808. return n.encoded === !1 ? n.text : e.htmlEncode(n.text)
  18809. },
  18810. tag: function(n) {
  18811. return n.url || n.contentUrl ? "a" : "span"
  18812. },
  18813. groupAttributes: function(n) {
  18814. return n.expanded !== !0 ? " style='display:none'" : ""
  18815. },
  18816. groupCssClass: function() {
  18817. return "k-group k-panel"
  18818. },
  18819. contentAttributes: function(n) {
  18820. return n.item.expanded !== !0 ? " style='display:none'" : ""
  18821. },
  18822. content: function(n) {
  18823. return n.content ? n.content : n.contentUrl ? "" : "&nbsp;"
  18824. },
  18825. contentUrl: function(n) {
  18826. return n.contentUrl ? 'href="' + n.contentUrl + '"' : ""
  18827. }
  18828. },
  18829. p = nt.extend({
  18830. init: function(t, i) {
  18831. var r = this,
  18832. u;
  18833. nt.fn.init.call(r, t, i);
  18834. t = r.wrapper = r.element.addClass("k-widget k-reset k-header k-panelbar");
  18835. i = r.options;
  18836. t[0].id && (r._itemId = t[0].id + "_pb_active");
  18837. r._tabindex();
  18838. r._initData(i);
  18839. r._updateClasses();
  18840. r._animations(i);
  18841. t.on("click" + h, ri, function(t) {
  18842. r._click(n(t.currentTarget)) && t.preventDefault()
  18843. }).on(ni + h + " " + hi + h, ri, r._toggleHover).on("click" + h, ci, !1).on("keydown" + h, n.proxy(r._keydown, r)).on("focus" + h, function() {
  18844. var n = r.select();
  18845. r._current(n[0] ? n : r._first())
  18846. }).on("blur" + h, function() {
  18847. r._current(null)
  18848. }).attr("role", "menu");
  18849. u = t.find("li." + w + " > ." + it);
  18850. u[0] && r.expand(u.parent(), !1);
  18851. e.notify(r)
  18852. },
  18853. events: [lt, rt, at, gt, kt, ti],
  18854. options: {
  18855. name: "PanelBar",
  18856. animation: {
  18857. expand: {
  18858. effects: "expand:vertical",
  18859. duration: 200
  18860. },
  18861. collapse: {
  18862. duration: 200
  18863. }
  18864. },
  18865. expandMode: "multiple"
  18866. },
  18867. destroy: function() {
  18868. nt.fn.destroy.call(this);
  18869. this.element.off(h);
  18870. e.destroy(this.element)
  18871. },
  18872. _initData: function(n) {
  18873. var t = this;
  18874. n.dataSource && (t.element.empty(), t.append(n.dataSource, t.element))
  18875. },
  18876. setOptions: function(n) {
  18877. var t = this.options.animation;
  18878. this._animations(n);
  18879. n.animation = i(!0, t, n.animation);
  18880. "dataSource" in n && this._initData(n);
  18881. nt.fn.setOptions.call(this, n)
  18882. },
  18883. expand: function(t, i) {
  18884. var r = this,
  18885. u = {};
  18886. return i = i !== !1, t = this.element.find(t), t.each(function(e, o) {
  18887. o = n(o);
  18888. var s = o.find(v).add(o.find(k));
  18889. if (!o.hasClass(f) && s.length > 0) {
  18890. if (r.options.expandMode == ei && r._collapseAllExpanded(o)) return r;
  18891. t.find("." + c).removeClass(c);
  18892. o.addClass(c);
  18893. i || (u = r.options.animation, r.options.animation = {
  18894. expand: {
  18895. effects: {}
  18896. },
  18897. collapse: {
  18898. hide: !0,
  18899. effects: {}
  18900. }
  18901. });
  18902. r._triggerEvent(lt, o) || r._toggleItem(o, !1);
  18903. i || (r.options.animation = u)
  18904. }
  18905. }), r
  18906. },
  18907. collapse: function(t, i) {
  18908. var r = this,
  18909. u = {};
  18910. return i = i !== !1, t = r.element.find(t), t.each(function(t, e) {
  18911. e = n(e);
  18912. var o = e.find(v).add(e.find(k));
  18913. !e.hasClass(f) && o.is(y) && (e.removeClass(c), i || (u = r.options.animation, r.options.animation = {
  18914. expand: {
  18915. effects: {}
  18916. },
  18917. collapse: {
  18918. hide: !0,
  18919. effects: {}
  18920. }
  18921. }), r._triggerEvent(rt, e) || r._toggleItem(e, !0), i || (r.options.animation = u))
  18922. }), r
  18923. },
  18924. _toggleDisabled: function(n, t) {
  18925. n = this.element.find(n);
  18926. n.toggleClass(fi, t).toggleClass(f, !t).attr(vt, !t)
  18927. },
  18928. select: function(i) {
  18929. var u = this;
  18930. return i === t ? u.element.find(ui).parent() : (u.element.find(i).each(function() {
  18931. var t = n(this),
  18932. i = t.children(r);
  18933. if (t.hasClass(f)) return u;
  18934. u._triggerEvent(at, t) || u._updateSelected(i)
  18935. }), u)
  18936. },
  18937. enable: function(n, t) {
  18938. return this._toggleDisabled(n, t !== !1), this
  18939. },
  18940. disable: function(n) {
  18941. return this._toggleDisabled(n, !1), this
  18942. },
  18943. append: function(n, t) {
  18944. t = this.element.find(t);
  18945. var i = this._insert(n, t, t.length ? t.find(v) : null);
  18946. return ot(i.items, function() {
  18947. i.group.append(this);
  18948. a(this)
  18949. }), wt(t), a(i.group.find(".k-first, .k-last")), i.group.height("auto"), this
  18950. },
  18951. insertBefore: function(n, t) {
  18952. t = this.element.find(t);
  18953. var i = this._insert(n, t, t.parent());
  18954. return ot(i.items, function() {
  18955. t.before(this);
  18956. a(this)
  18957. }), a(t), i.group.height("auto"), this
  18958. },
  18959. insertAfter: function(n, t) {
  18960. t = this.element.find(t);
  18961. var i = this._insert(n, t, t.parent());
  18962. return ot(i.items, function() {
  18963. t.after(this);
  18964. a(this)
  18965. }), a(t), i.group.height("auto"), this
  18966. },
  18967. remove: function(n) {
  18968. n = this.element.find(n);
  18969. var r = this,
  18970. t = n.parentsUntil(r.element, u),
  18971. i = n.parent("ul");
  18972. return n.remove(), !i || i.hasClass("k-panelbar") || i.children(u).length || i.remove(), t.length && (t = t.eq(0), wt(t), a(t)), r
  18973. },
  18974. reload: function(t) {
  18975. var i = this;
  18976. t = i.element.find(t);
  18977. t.each(function() {
  18978. var t = n(this);
  18979. i._ajaxRequest(t, t.children("." + it), !t.is(y))
  18980. })
  18981. },
  18982. _first: function() {
  18983. return this.element.children(ft).first()
  18984. },
  18985. _last: function() {
  18986. var n = this.element.children(ft).last(),
  18987. t = n.children(b);
  18988. return t[0] ? t.children(ft).last() : n
  18989. },
  18990. _current: function(n) {
  18991. var i = this,
  18992. u = i._focused,
  18993. f = i._itemId;
  18994. if (n === t) return u;
  18995. i.element.removeAttr("aria-activedescendant");
  18996. u && (u[0].id === f && u.removeAttr("id"), u.children(r).removeClass(ii));
  18997. n && (f = n[0].id || f, n.attr("id", f).children(r).addClass(ii), i.element.attr("aria-activedescendant", f));
  18998. i._focused = n
  18999. },
  19000. _keydown: function(n) {
  19001. var t = this,
  19002. i = n.keyCode,
  19003. u = t._current();
  19004. n.target == n.currentTarget && (i == o.DOWN || i == o.RIGHT ? (t._current(t._nextItem(u)), n.preventDefault()) : i == o.UP || i == o.LEFT ? (t._current(t._prevItem(u)), n.preventDefault()) : i == o.ENTER || i == o.SPACEBAR ? (t._click(u.children(r)), n.preventDefault()) : i == o.HOME ? (t._current(t._first()), n.preventDefault()) : i == o.END && (t._current(t._last()), n.preventDefault()))
  19005. },
  19006. _nextItem: function(n) {
  19007. if (!n) return this._first();
  19008. var i = n.children(b),
  19009. t = n.next();
  19010. return i[0] && (t = i.children("." + ct)), t[0] || (t = n.parent(b).parent(u).next()), t[0] && t.is(":visible") || (t = this._first()), t.hasClass(f) && (t = this._nextItem(t)), t
  19011. },
  19012. _prevItem: function(n) {
  19013. if (!n) return this._last();
  19014. var t = n.prev(),
  19015. i;
  19016. if (t[0])
  19017. for (i = t; i[0];) i = i.children(b).children("." + ht), i[0] && (t = i);
  19018. else t = n.parent(b).parent(u), t[0] || (t = this._last());
  19019. return t.hasClass(f) && (t = this._prevItem(t)), t
  19020. },
  19021. _insert: function(t, r, u) {
  19022. var s = this,
  19023. f, h = n.isPlainObject(t),
  19024. e = r && r[0],
  19025. o;
  19026. return e || (u = s.element), o = {
  19027. firstLevel: u.hasClass("k-panelbar"),
  19028. expanded: u.parent().hasClass(w),
  19029. length: u.children().length
  19030. }, e && !u.length && (u = n(p.renderGroup({
  19031. group: o
  19032. })).appendTo(r)), h || n.isArray(t) ? (f = n.map(h ? [t] : t, function(t, r) {
  19033. return typeof t == "string" ? n(t) : n(p.renderItem({
  19034. group: o,
  19035. item: i(t, {
  19036. index: r
  19037. })
  19038. }))
  19039. }), e && r.attr(g, !1)) : (f = n(t), s._updateItemsClasses(f)), {
  19040. items: f,
  19041. group: u
  19042. }
  19043. },
  19044. _toggleHover: function(t) {
  19045. var i = n(t.currentTarget);
  19046. i.parents("li." + f).length || i.toggleClass("k-state-hover", t.type == ni)
  19047. },
  19048. _updateClasses: function() {
  19049. var i = this,
  19050. r, t;
  19051. r = i.element.find("li > ul").not(function() {
  19052. return n(this).parentsUntil(".k-panelbar", "div").length
  19053. }).addClass("k-group k-panel").attr("role", "group");
  19054. r.parent().attr(g, !1).not("." + w).children("ul").attr(yt, !0).hide();
  19055. t = i.element.add(r).children();
  19056. i._updateItemsClasses(t);
  19057. wt(t);
  19058. a(t)
  19059. },
  19060. _updateItemsClasses: function(n) {
  19061. for (var i = n.length, t = 0; t < i; t++) this._updateItemClasses(n[t], t)
  19062. },
  19063. _updateItemClasses: function(t, i) {
  19064. var s = this._selected,
  19065. f = this.options.contentUrls,
  19066. h = f && f[i],
  19067. c = this.element[0],
  19068. o, u;
  19069. t = n(t).addClass("k-item").attr("role", "menuitem");
  19070. e.support.browser.msie && t.css("list-style-position", "inside").css("list-style-position", "");
  19071. t.children(bt).addClass(dt);
  19072. u = t.children("a").addClass(tt);
  19073. u[0] && (u.attr("href", h), u.children(bt).addClass(dt));
  19074. t.filter(":not([disabled]):not([class*=k-state])").addClass("k-state-default");
  19075. t.filter("li[disabled]").addClass("k-state-disabled").attr(vt, !0).removeAttr("disabled");
  19076. t.children("div").addClass(it).attr("role", "region").attr(yt, !0).hide().parent().attr(g, !1);
  19077. u = t.children(ut);
  19078. u[0] && (s && s.removeAttr(et).children(ut).removeClass(d), u.addClass(d), this._selected = t.attr(et, !0));
  19079. t.children(r)[0] || (o = "<span class='" + tt + "'/>", f && f[i] && t[0].parentNode == c && (o = '<a class="k-link k-header" href="' + f[i] + '"/>'), t.contents().filter(function() {
  19080. return !this.nodeName.match(si) && !(this.nodeType == 3 && !n.trim(this.nodeValue))
  19081. }).wrapAll(o));
  19082. t.parent(".k-panelbar")[0] && t.children(r).addClass("k-header")
  19083. },
  19084. _click: function(n) {
  19085. var t = this,
  19086. a = t.element,
  19087. i, o, s, l, h, e, c;
  19088. if (!n.parents("li." + f).length) return n.closest(".k-widget")[0] != a[0] ? void 0 : (h = n.closest(r), e = h.closest(u), t._updateSelected(h), o = e.find(v).add(e.find(k)), s = h.attr(st), l = s && (s.charAt(s.length - 1) == "#" || s.indexOf("#" + t.element[0].id + "-") != -1), i = !!(l || o.length), o.data("animating")) ? i : (t._triggerEvent(at, e) && (i = !0), i === !1) ? void 0 : t.options.expandMode == ei && t._collapseAllExpanded(e) ? i : (o.length && (c = o.is(y), t._triggerEvent(c ? rt : lt, e) || (i = t._toggleItem(e, c))), i)
  19089. },
  19090. _toggleItem: function(n, i) {
  19091. var e = this,
  19092. o = n.find(v),
  19093. s = n.find(r),
  19094. h = s.attr(st),
  19095. f, u;
  19096. return o.length ? (this._toggleGroup(o, i), f = !0) : (u = n.children("." + it), u.length && (f = !0, u.is(li) && h !== t ? e._ajaxRequest(n, u, i) : e._toggleGroup(u, i))), f
  19097. },
  19098. _toggleGroup: function(n, t) {
  19099. var e = this,
  19100. o = e.options.animation,
  19101. r = o.expand,
  19102. f = i({}, o.collapse),
  19103. s = f && "effects" in f;
  19104. n.is(y) == t && (n.parent().attr(g, !t).attr(yt, t).toggleClass(fi, t).toggleClass(w, !t).find("> .k-link > .k-icon").toggleClass("k-i-arrow-n", !t).toggleClass("k-panelbar-collapse", !t).toggleClass("k-i-arrow-s", t).toggleClass("k-panelbar-expand", t), r = t ? i(s ? f : i({
  19105. reverse: !0
  19106. }, r), {
  19107. hide: !0
  19108. }) : i({
  19109. complete: function(n) {
  19110. e._triggerEvent(gt, n.closest(u))
  19111. }
  19112. }, r), n.kendoStop(!0, !0).kendoAnimate(r))
  19113. },
  19114. _collapseAllExpanded: function(t) {
  19115. var e = this,
  19116. o, i = !1,
  19117. f;
  19118. if (t.children(r).hasClass("k-header")) return f = t.find(v).add(t.find(k)), f.is(y) && (i = !0), f.is(y) || f.length === 0 || (o = n(e.element).children(), o.find(v).add(o.find(k)).filter(function() {
  19119. return n(this).is(y)
  19120. }).each(function(t, r) {
  19121. r = n(r);
  19122. i = e._triggerEvent(rt, r.closest(u));
  19123. i || e._toggleGroup(r, !0)
  19124. })), i
  19125. },
  19126. _ajaxRequest: function(t, i, u) {
  19127. var f = this,
  19128. e = t.find(".k-panelbar-collapse, .k-panelbar-expand"),
  19129. s = t.find(r),
  19130. h = setTimeout(function() {
  19131. e.addClass("k-loading")
  19132. }, 100),
  19133. o = s.attr(st);
  19134. n.ajax({
  19135. type: "GET",
  19136. cache: !1,
  19137. url: o,
  19138. dataType: "html",
  19139. data: {},
  19140. error: function(n, t) {
  19141. e.removeClass("k-loading");
  19142. f.trigger(kt, {
  19143. xhr: n,
  19144. status: t
  19145. }) && this.complete()
  19146. },
  19147. complete: function() {
  19148. clearTimeout(h);
  19149. e.removeClass("k-loading")
  19150. },
  19151. success: function(n) {
  19152. try {
  19153. i.html(n)
  19154. } catch (e) {
  19155. var r = window.console;
  19156. r && r.error && r.error(e.name + ": " + e.message + " in " + o);
  19157. this.error(this.xhr, "error")
  19158. }
  19159. f._toggleGroup(i, u);
  19160. f.trigger(ti, {
  19161. item: t[0],
  19162. contentElement: i[0]
  19163. })
  19164. }
  19165. })
  19166. },
  19167. _triggerEvent: function(n, t) {
  19168. var i = this;
  19169. return i.trigger(n, {
  19170. item: t[0]
  19171. })
  19172. },
  19173. _updateSelected: function(n) {
  19174. var t = this,
  19175. i = t.element,
  19176. r = n.parent(u),
  19177. f = t._selected;
  19178. f && f.removeAttr(et);
  19179. t._selected = r.attr(et, !0);
  19180. i.find(ui).removeClass(d);
  19181. i.find("> ." + c + ", .k-panel > ." + c).removeClass(c);
  19182. n.addClass(d);
  19183. n.parentsUntil(i, u).filter(":has(.k-header)").addClass(c);
  19184. t._current(r)
  19185. },
  19186. _animations: function(n) {
  19187. n && "animation" in n && !n.animation && (n.animation = {
  19188. expand: {
  19189. effects: {}
  19190. },
  19191. collapse: {
  19192. hide: !0,
  19193. effects: {}
  19194. }
  19195. })
  19196. }
  19197. });
  19198. i(p, {
  19199. renderItem: function(n) {
  19200. n = i({
  19201. panelBar: {},
  19202. group: {}
  19203. }, n);
  19204. var r = l.empty,
  19205. t = n.item;
  19206. return l.item(i(n, {
  19207. image: t.imageUrl ? l.image : r,
  19208. sprite: t.spriteCssClass ? l.sprite : r,
  19209. itemWrapper: l.itemWrapper,
  19210. renderContent: p.renderContent,
  19211. arrow: t.items || t.content || t.contentUrl ? l.arrow : r,
  19212. subGroup: p.renderGroup
  19213. }, pt))
  19214. },
  19215. renderGroup: function(n) {
  19216. return l.group(i({
  19217. renderItems: function(n) {
  19218. for (var u = "", t = 0, r = n.items, f = r ? r.length : 0, e = i({
  19219. length: f
  19220. }, n.group); t < f; t++) u += p.renderItem(i(n, {
  19221. group: e,
  19222. item: i({
  19223. index: t
  19224. }, r[t])
  19225. }));
  19226. return u
  19227. }
  19228. }, n, pt))
  19229. },
  19230. renderContent: function(n) {
  19231. return l.content(i(n, pt))
  19232. }
  19233. });
  19234. e.ui.plugin(p)
  19235. }(window.kendo.jQuery);
  19236. kendo_module({
  19237. id: "timepicker",
  19238. name: "TimePicker",
  19239. category: "web",
  19240. description: "The TimePicker widget allows the end user to select a value from a list of predefined values or to type a new value.",
  19241. depends: ["popup"]
  19242. }),
  19243. function(n, t) {
  19244. function ui(n, t, i) {
  19245. var u = n.getTimezoneOffset(),
  19246. r;
  19247. n.setTime(n.getTime() + t);
  19248. i || (r = n.getTimezoneOffset() - u, n.setTime(n.getTime() + r * h))
  19249. }
  19250. function fi() {
  19251. var n = new u,
  19252. t = new u(n.getFullYear(), n.getMonth(), n.getDate(), 0, 0, 0),
  19253. i = new u(n.getFullYear(), n.getMonth(), n.getDate(), 12, 0, 0);
  19254. return -1 * (t.getTimezoneOffset() - i.getTimezoneOffset())
  19255. }
  19256. function e(n) {
  19257. return n.getHours() * 60 * h + n.getMinutes() * h + n.getSeconds() * 1e3 + n.getMilliseconds()
  19258. }
  19259. function kt(n, t, i) {
  19260. var u = e(t),
  19261. f = e(i),
  19262. r;
  19263. return !n || u == f ? !0 : (r = e(n), u > r && (r += s), f < u && (f += s), r >= u && r <= f)
  19264. }
  19265. function gt(n) {
  19266. var t = n.parseFormats;
  19267. n.format = ii(n.format || r.getCulture(n.culture).calendars.standard.patterns.t);
  19268. t = bt(t) ? t : [t];
  19269. t.splice(0, 0, n.format);
  19270. n.parseFormats = t
  19271. }
  19272. function ni(n) {
  19273. n.preventDefault()
  19274. }
  19275. var r = window.kendo,
  19276. o = r.keys,
  19277. ti = r._activeElement,
  19278. ii = r._extractFormat,
  19279. l = r.support,
  19280. tt = l.browser,
  19281. p = r.ui,
  19282. a = p.Widget,
  19283. it = "open",
  19284. rt = "close",
  19285. w = "change",
  19286. i = ".kendoTimePicker",
  19287. ut = "click" + i,
  19288. b = "k-state-default",
  19289. ft = "disabled",
  19290. et = "readonly",
  19291. k = "li",
  19292. ot = "<span/>",
  19293. st = "k-state-focused",
  19294. d = "k-state-hover",
  19295. ri = "mouseenter" + i + " mouseleave" + i,
  19296. ht = "mousedown" + i,
  19297. h = 6e4,
  19298. s = 864e5,
  19299. ct = "k-state-selected",
  19300. g = "k-state-disabled",
  19301. lt = "aria-selected",
  19302. at = "aria-expanded",
  19303. vt = "aria-hidden",
  19304. yt = "aria-disabled",
  19305. pt = "aria-readonly",
  19306. wt = "aria-activedescendant",
  19307. v = "id",
  19308. bt = n.isArray,
  19309. nt = n.extend,
  19310. y = n.proxy,
  19311. u = Date,
  19312. f = new u,
  19313. c, dt;
  19314. f = new u(f.getFullYear(), f.getMonth(), f.getDate(), 0, 0, 0);
  19315. c = function(t) {
  19316. var u = this,
  19317. f = t.id;
  19318. u.options = t;
  19319. u.ul = n('<ul tabindex="-1" role="listbox" aria-hidden="true" unselectable="on" class="k-list k-reset"/>').css({
  19320. overflow: l.kineticScrollNeeded ? "" : "auto"
  19321. }).on(ut, k, y(u._click, u)).on("mouseenter" + i, k, function() {
  19322. n(this).addClass(d)
  19323. }).on("mouseleave" + i, k, function() {
  19324. n(this).removeClass(d)
  19325. });
  19326. u.list = n("<div class='k-list-container'/>").append(u.ul).on(ht, ni);
  19327. f && (u._timeViewID = f + "_timeview", u._optionID = f + "_option_selected", u.ul.attr(v, u._timeViewID));
  19328. u._popup();
  19329. u.template = r.template('<li tabindex="-1" role="option" class="k-item" unselectable="on">#=data#<\/li>', {
  19330. useWithBlock: !1
  19331. })
  19332. };
  19333. c.prototype = {
  19334. current: function(i) {
  19335. var r = this,
  19336. u = r.options.active;
  19337. if (i !== t) r._current && r._current.removeClass(ct).removeAttr(lt).removeAttr(v), i && (i = n(i).addClass(ct).attr(v, r._optionID).attr(lt, !0), r.scroll(i[0])), r._current = i, u && u(i);
  19338. else return r._current
  19339. },
  19340. close: function() {
  19341. this.popup.close()
  19342. },
  19343. destroy: function() {
  19344. var n = this;
  19345. n.ul.off(i);
  19346. n.list.off(i);
  19347. n._touchScroller && n._touchScroller.destroy();
  19348. n.popup.destroy()
  19349. },
  19350. open: function() {
  19351. var n = this;
  19352. n.ul[0].firstChild || n.bind();
  19353. n.popup.open();
  19354. n._current && n.scroll(n._current[0])
  19355. },
  19356. dataBind: function(n) {
  19357. for (var i = this, t = i.options, s = t.format, h = r.toString, c = i.template, e = n.length, u = 0, f, o = ""; u < e; u++) f = n[u], kt(f, t.min, t.max) && (o += c(h(f, s, t.culture)));
  19358. i._html(o, e)
  19359. },
  19360. refresh: function() {
  19361. var l = this,
  19362. i = l.options,
  19363. g = i.format,
  19364. y = fi(),
  19365. p = y < 0,
  19366. w = i.min,
  19367. b = i.max,
  19368. a = e(w),
  19369. n = e(b),
  19370. o = i.interval * h,
  19371. nt = r.toString,
  19372. tt = l.template,
  19373. t = new u(+w),
  19374. it = t.getDate(),
  19375. v, k, c = 0,
  19376. f, d = "";
  19377. for (f = p ? (s + y * h) / o : s / o, a != n && (a > n && (n += s), f = (n - a) / o + 1), k = parseInt(f, 10); c < f; c++) c && ui(t, o, p), n && k == c && (v = e(t), it < t.getDate() && (v += s), v > n && (t = new u(+b))), d += tt(nt(t, g, i.culture));
  19378. l._html(d, f)
  19379. },
  19380. bind: function() {
  19381. var n = this,
  19382. t = n.options.dates;
  19383. t && t[0] ? n.dataBind(t) : n.refresh()
  19384. },
  19385. _html: function(n, t) {
  19386. var i = this;
  19387. i.ul[0].innerHTML = n;
  19388. i._height(t);
  19389. i.current(null);
  19390. i.select(i._value)
  19391. },
  19392. scroll: function(n) {
  19393. if (n) {
  19394. var i = this.ul[0],
  19395. t = n.offsetTop,
  19396. f = n.offsetHeight,
  19397. r = i.scrollTop,
  19398. e = i.clientHeight,
  19399. o = t + f,
  19400. s = this._touchScroller,
  19401. u;
  19402. s ? (u = this.list.height(), t > u && (t = t - u + f), s.scrollTo(0, -t)) : i.scrollTop = r > t ? t : o > r + e ? o - e : r
  19403. }
  19404. },
  19405. select: function(t) {
  19406. var i = this,
  19407. f = i.options,
  19408. u = i._current;
  19409. t instanceof Date && (t = r.toString(t, f.format, f.culture));
  19410. typeof t == "string" && (u && u.text() === t ? t = u : (t = n.grep(i.ul[0].childNodes, function(n) {
  19411. return (n.textContent || n.innerText) == t
  19412. }), t = t[0] ? t : null));
  19413. i.current(t)
  19414. },
  19415. setOptions: function(n) {
  19416. var t = this.options;
  19417. this.options = nt(t, n, {
  19418. active: t.active,
  19419. change: t.change,
  19420. close: t.close,
  19421. open: t.open
  19422. });
  19423. this.bind()
  19424. },
  19425. toggle: function() {
  19426. var n = this;
  19427. n.popup.visible() ? n.close() : n.open()
  19428. },
  19429. value: function(n) {
  19430. var t = this;
  19431. t._value = n;
  19432. t.ul[0].firstChild && t.select(n)
  19433. },
  19434. _click: function(t) {
  19435. var i = this,
  19436. r = n(t.currentTarget);
  19437. t.isDefaultPrevented() || (i.select(r), i.options.change(r.text(), !0), i.close())
  19438. },
  19439. _height: function(n) {
  19440. if (n) {
  19441. var t = this,
  19442. i = t.list,
  19443. u = i.parent(".k-animation-container"),
  19444. r = t.options.height;
  19445. i.add(u).show().height(t.ul[0].scrollHeight > r ? r : "auto").hide()
  19446. }
  19447. },
  19448. _parse: function(n) {
  19449. var o = this,
  19450. s = o.options,
  19451. t = o._value || f,
  19452. i, e;
  19453. return n instanceof u ? n : (n != null && (i = n.indexOf(":"), i == -1 ? n = n.length <= 2 ? n + ":00" : n.slice(2).length == 1 ? n.slice(0, 2) + ":" + n.slice(2) + "0" : n.slice(0, 2) + ":" + n.slice(2) : i == 0 ? n = "00" + n : (e = n.split(":"), e[1].length == 0 ? n = n + "00" : e[1].length == 1 && (n = n + "0"))), n = r.parseDate(n, s.parseFormats, s.culture), n && (n = new u(t.getFullYear(), t.getMonth(), t.getDate(), n.getHours(), n.getMinutes(), n.getSeconds(), n.getMilliseconds())), n)
  19454. },
  19455. _adjustListWidth: function() {
  19456. var t = this.list,
  19457. i = t[0].style.width,
  19458. r = this.options.anchor,
  19459. n, u;
  19460. (t.data("width") || !i) && (n = window.getComputedStyle ? window.getComputedStyle(r[0], null) : 0, u = n ? parseFloat(n.width) : r.outerWidth(), n && (tt.mozilla || tt.msie) && (u += parseFloat(n.paddingLeft) + parseFloat(n.paddingRight) + parseFloat(n.borderLeftWidth) + parseFloat(n.borderRightWidth)), i = u - (t.outerWidth() - t.width()), t.css({
  19461. fontFamily: r.css("font-family"),
  19462. width: i
  19463. }).data("width", i))
  19464. },
  19465. _popup: function() {
  19466. var t = this,
  19467. i = t.list,
  19468. n = t.options,
  19469. u = n.anchor;
  19470. t.popup = new p.Popup(i, nt(n.popup, {
  19471. anchor: u,
  19472. open: n.open,
  19473. close: n.close,
  19474. animation: n.animation,
  19475. isRtl: l.isRtl(n.anchor)
  19476. }));
  19477. t._touchScroller = r.touchScroller(t.popup.element)
  19478. },
  19479. move: function(n) {
  19480. var i = this,
  19481. r = n.keyCode,
  19482. f = i.ul[0],
  19483. t = i._current,
  19484. u = r === o.DOWN;
  19485. if (r === o.UP || u) {
  19486. if (n.altKey) {
  19487. i.toggle(u);
  19488. return
  19489. }
  19490. t = u ? t ? t[0].nextSibling : f.firstChild : t ? t[0].previousSibling : f.lastChild;
  19491. t && i.select(t);
  19492. i.options.change(i._current.text());
  19493. n.preventDefault()
  19494. } else(r === o.ENTER || r === o.TAB || r === o.ESC) && (n.preventDefault(), t && i.options.change(t.text(), !0), i.close())
  19495. }
  19496. };
  19497. c.getMilliseconds = e;
  19498. r.TimeView = c;
  19499. dt = a.extend({
  19500. init: function(n, t) {
  19501. var i = this,
  19502. f, u, e;
  19503. a.fn.init.call(i, n, t);
  19504. n = i.element;
  19505. t = i.options;
  19506. gt(t);
  19507. i._wrapper();
  19508. i.timeView = u = new c(nt({}, t, {
  19509. id: n.attr(v),
  19510. anchor: i.wrapper,
  19511. format: t.format,
  19512. change: function(t, r) {
  19513. r ? i._change(t) : n.val(t)
  19514. },
  19515. open: function(t) {
  19516. i.timeView._adjustListWidth();
  19517. i.trigger(it) ? t.preventDefault() : (n.attr(at, !0), f.attr(vt, !1))
  19518. },
  19519. close: function(t) {
  19520. i.trigger(rt) ? t.preventDefault() : (n.attr(at, !1), f.attr(vt, !0))
  19521. },
  19522. active: function(t) {
  19523. n.removeAttr(wt);
  19524. t && n.attr(wt, u._optionID)
  19525. }
  19526. }));
  19527. f = u.ul;
  19528. i._icon();
  19529. i._reset();
  19530. try {
  19531. n[0].setAttribute("type", "text")
  19532. } catch (o) {
  19533. n[0].type = "text"
  19534. }
  19535. n.addClass("k-input").attr({
  19536. role: "combobox",
  19537. "aria-expanded": !1,
  19538. "aria-owns": u._timeViewID
  19539. });
  19540. e = n.is("[disabled]");
  19541. e ? i.enable(!1) : i.readonly(n.is("[readonly]"));
  19542. i._old = i._update(t.value || i.element.val());
  19543. i._oldText = n.val();
  19544. r.notify(i)
  19545. },
  19546. options: {
  19547. name: "TimePicker",
  19548. min: f,
  19549. max: f,
  19550. format: "",
  19551. dates: [],
  19552. parseFormats: [],
  19553. value: null,
  19554. interval: 30,
  19555. height: 200,
  19556. animation: {}
  19557. },
  19558. events: [it, rt, w],
  19559. setOptions: function(n) {
  19560. var t = this,
  19561. i = t._value;
  19562. a.fn.setOptions.call(t, n);
  19563. n = t.options;
  19564. gt(n);
  19565. t.timeView.setOptions(n);
  19566. i && t.element.val(r.toString(i, n.format, n.culture))
  19567. },
  19568. dataBind: function(n) {
  19569. bt(n) && this.timeView.dataBind(n)
  19570. },
  19571. _editable: function(n) {
  19572. var t = this,
  19573. r = n.disable,
  19574. u = n.readonly,
  19575. o = t._arrow.off(i),
  19576. f = t.element.off(i),
  19577. e = t._inputWrapper.off(i);
  19578. if (u || r) e.addClass(r ? g : b).removeClass(r ? b : g), f.attr(ft, r).attr(et, u).attr(yt, r).attr(pt, u);
  19579. else {
  19580. e.addClass(b).removeClass(g).on(ri, t._toggleHover);
  19581. f.removeAttr(ft).removeAttr(et).attr(yt, !1).attr(pt, !1).on("keydown" + i, y(t._keydown, t)).on("blur" + i, y(t._blur, t)).on("focus" + i, function() {
  19582. t._inputWrapper.addClass(st)
  19583. });
  19584. o.on(ut, y(t._click, t)).on(ht, ni)
  19585. }
  19586. },
  19587. readonly: function(n) {
  19588. this._editable({
  19589. readonly: n === t ? !0 : n,
  19590. disable: !1
  19591. })
  19592. },
  19593. enable: function(n) {
  19594. this._editable({
  19595. readonly: !1,
  19596. disable: !(n = n === t ? !0 : n)
  19597. })
  19598. },
  19599. destroy: function() {
  19600. var n = this;
  19601. a.fn.destroy.call(n);
  19602. n.timeView.destroy();
  19603. n.element.off(i);
  19604. n._arrow.off(i);
  19605. n._inputWrapper.off(i);
  19606. n._form && n._form.off("reset", n._resetHandler)
  19607. },
  19608. close: function() {
  19609. this.timeView.close()
  19610. },
  19611. open: function() {
  19612. this.timeView.open()
  19613. },
  19614. min: function(n) {
  19615. return this._option("min", n)
  19616. },
  19617. max: function(n) {
  19618. return this._option("max", n)
  19619. },
  19620. value: function(n) {
  19621. var i = this;
  19622. if (n === t) return i._value;
  19623. i._old = i._update(n);
  19624. i._old === null && i.element.val("");
  19625. i._oldText = i.element.val()
  19626. },
  19627. _blur: function() {
  19628. var n = this,
  19629. t = n.element.val();
  19630. n.close();
  19631. t !== n._oldText && n._change(t);
  19632. n._inputWrapper.removeClass(st)
  19633. },
  19634. _click: function() {
  19635. var n = this,
  19636. t = n.element;
  19637. n.timeView.toggle();
  19638. l.touch || t[0] === ti() || t.focus()
  19639. },
  19640. _change: function(n) {
  19641. var t = this;
  19642. n = t._update(n); + t._old != +n && (t._old = n, t._oldText = t.element.val(), t.trigger(w), t.element.trigger(w))
  19643. },
  19644. _icon: function() {
  19645. var i = this,
  19646. r = i.element,
  19647. t;
  19648. t = r.next("span.k-select");
  19649. t[0] || (t = n('<span unselectable="on" class="k-select"><span unselectable="on" class="k-icon k-i-clock">select<\/span><\/span>').insertAfter(r));
  19650. i._arrow = t.attr({
  19651. role: "button",
  19652. "aria-controls": i.timeView._timeViewID
  19653. })
  19654. },
  19655. _keydown: function(n) {
  19656. var t = this,
  19657. u = n.keyCode,
  19658. i = t.timeView,
  19659. r = t.element.val();
  19660. i.popup.visible() || n.altKey ? i.move(n) : u === o.ENTER && r !== t._oldText && t._change(r)
  19661. },
  19662. _option: function(n, i) {
  19663. var r = this,
  19664. f = r.options;
  19665. if (i === t) return f[n];
  19666. (i = r.timeView._parse(i), i) && (i = new u(+i), f[n] = i, r.timeView.options[n] = i, r.timeView.bind())
  19667. },
  19668. _toggleHover: function(t) {
  19669. n(t.currentTarget).toggleClass(d, t.type === "mouseenter")
  19670. },
  19671. _update: function(n) {
  19672. var i = this,
  19673. u = i.options,
  19674. f = i.timeView,
  19675. t = f._parse(n);
  19676. return kt(t, u.min, u.max) || (t = null), i._value = t, i.element.val(t ? r.toString(t, u.format, u.culture) : n), f.value(t), t
  19677. },
  19678. _wrapper: function() {
  19679. var r = this,
  19680. i = r.element,
  19681. t;
  19682. t = i.parents(".k-timepicker");
  19683. t[0] || (t = i.wrap(ot).parent().addClass("k-picker-wrap k-state-default"), t = t.wrap(ot).parent());
  19684. t[0].style.cssText = i[0].style.cssText;
  19685. r.wrapper = t.addClass("k-widget k-timepicker k-header").addClass(i[0].className);
  19686. i.css({
  19687. width: "100%",
  19688. height: i[0].style.height
  19689. });
  19690. r._inputWrapper = n(t[0].firstChild)
  19691. },
  19692. _reset: function() {
  19693. var t = this,
  19694. i = t.element,
  19695. r = i.attr("form"),
  19696. u = r ? n("#" + r) : i.closest("form");
  19697. u[0] && (t._resetHandler = function() {
  19698. t.value(i[0].defaultValue)
  19699. }, t._form = u.on("reset", t._resetHandler))
  19700. }
  19701. });
  19702. p.plugin(dt)
  19703. }(window.kendo.jQuery);
  19704. kendo_module({
  19705. id: "window",
  19706. name: "Window",
  19707. category: "web",
  19708. description: "The Window widget displays content in a modal or non-modal HTML window.",
  19709. depends: ["draganddrop"]
  19710. }),
  19711. function(n, t) {
  19712. function rt(n) {
  19713. return typeof n != "undefined"
  19714. }
  19715. function o(n, t, i) {
  19716. return Math.max(Math.min(parseInt(n, 10), i === Infinity ? i : parseInt(i, 10)), parseInt(t, 10))
  19717. }
  19718. function ii(n, t) {
  19719. return function() {
  19720. var i = this,
  19721. r = i.wrapper,
  19722. f = r[0].style,
  19723. o = i.options;
  19724. if (!o.isMaximized && !o.isMinimized) return i.restoreOptions = {
  19725. width: f.width,
  19726. height: f.height
  19727. }, r.children(h).hide().end().children(e).find(gt).parent().hide().eq(0).before(u.action({
  19728. name: "Restore"
  19729. })), t.call(i), n == "maximize" ? i.wrapper.children(e).find(st).parent().hide() : i.wrapper.children(e).find(st).parent().show(), i
  19730. }
  19731. }
  19732. function ri(n) {
  19733. var t = this;
  19734. t.owner = n;
  19735. t._draggable = new ht(n.wrapper, {
  19736. filter: h,
  19737. group: n.wrapper.id + "-resizing",
  19738. dragstart: f(t.dragstart, t),
  19739. drag: f(t.drag, t),
  19740. dragend: f(t.dragend, t)
  19741. })
  19742. }
  19743. function ui(n, t) {
  19744. var i = this;
  19745. i.owner = n;
  19746. i._draggable = new ht(n.wrapper, {
  19747. filter: t,
  19748. group: n.wrapper.id + "-moving",
  19749. dragstart: f(i.dragstart, i),
  19750. drag: f(i.drag, i),
  19751. dragend: f(i.dragend, i),
  19752. dragcancel: f(i.dragcancel, i)
  19753. });
  19754. i._draggable.userEvents.stopPropagation = !1
  19755. }
  19756. var i = window.kendo,
  19757. d = i.ui.Widget,
  19758. ht = i.ui.Draggable,
  19759. ct = n.isPlainObject,
  19760. fi = i._activeElement,
  19761. f = n.proxy,
  19762. l = n.extend,
  19763. ut = n.each,
  19764. s = i.template,
  19765. g = "body",
  19766. u, r = ".kendoWindow",
  19767. a = ".k-window",
  19768. ft = ".k-window-title",
  19769. e = ft + "bar",
  19770. v = ".k-window-content",
  19771. h = ".k-resize-handle",
  19772. nt = ".k-overlay",
  19773. w = "k-content-frame",
  19774. lt = "k-loading",
  19775. at = "k-state-hover",
  19776. vt = "k-state-focused",
  19777. yt = "k-window-maximized",
  19778. y = ":visible",
  19779. tt = "hidden",
  19780. p = "cursor",
  19781. et = "open",
  19782. ot = "activate",
  19783. pt = "deactivate",
  19784. wt = "close",
  19785. it = "refresh",
  19786. bt = "dragstart",
  19787. kt = "dragend",
  19788. dt = "error",
  19789. c = "overflow",
  19790. b = "zIndex",
  19791. gt = ".k-window-actions .k-i-minimize,.k-window-actions .k-i-maximize",
  19792. ni = ".k-i-pin",
  19793. ti = ".k-i-unpin",
  19794. st = ni + "," + ti,
  19795. k = ".k-window-titlebar .k-window-action",
  19796. ei = i.isLocalUrl,
  19797. oi = d.extend({
  19798. init: function(u, o) {
  19799. var s = this,
  19800. h, w = {},
  19801. g, nt, c, it = !1,
  19802. l, b, ut = o && o.actions && !o.actions.length,
  19803. p;
  19804. d.fn.init.call(s, u, o);
  19805. o = s.options;
  19806. c = o.position;
  19807. u = s.element;
  19808. l = o.content;
  19809. ut && (o.actions = []);
  19810. s.appendTo = n(o.appendTo);
  19811. s._animations();
  19812. l && !ct(l) && (l = o.content = {
  19813. url: l
  19814. });
  19815. u.find("script").filter(function() {
  19816. return !this.type || this.type.toLowerCase().indexOf("script") >= 0
  19817. }).remove();
  19818. u.parent().is(s.appendTo) || c.top !== t && c.left !== t || (u.is(y) ? (w = u.offset(), it = !0) : (g = u.css("visibility"), nt = u.css("display"), u.css({
  19819. visibility: tt,
  19820. display: ""
  19821. }), w = u.offset(), u.css({
  19822. visibility: g,
  19823. display: nt
  19824. })), c.top === t && (c.top = w.top), c.left === t && (c.left = w.left));
  19825. rt(o.visible) && o.visible !== null || (o.visible = u.is(y));
  19826. h = s.wrapper = u.closest(a);
  19827. u.is(".k-content") && h[0] || (u.addClass("k-window-content k-content"), s._createWindow(u, o), h = s.wrapper = u.closest(a), s._dimensions());
  19828. s._position();
  19829. o.pinned && s.pin(!0);
  19830. l && s.refresh(l);
  19831. o.visible && s.toFront();
  19832. b = h.children(v);
  19833. s._tabindex(b);
  19834. o.visible && o.modal && s._overlay(h.is(y)).css({
  19835. opacity: .5
  19836. });
  19837. h.on("mouseenter" + r, k, function() {
  19838. n(this).addClass(at)
  19839. }).on("mouseleave" + r, k, function() {
  19840. n(this).removeClass(at)
  19841. }).on("click" + r, "> " + k, f(s._windowActionHandler, s));
  19842. b.on("keydown" + r, f(s._keydown, s)).on("focus" + r, function() {
  19843. h.addClass(vt)
  19844. }).on("blur" + r, function() {
  19845. h.removeClass(vt)
  19846. });
  19847. this._resizable();
  19848. this._draggable();
  19849. p = u.attr("id");
  19850. p && (p = p + "_wnd_title", h.children(e).children(ft).attr("id", p), b.attr({
  19851. role: "dialog",
  19852. "aria-labelledby": p
  19853. }));
  19854. h.add(h.children(".k-resize-handle," + e)).on("mousedown" + r, f(s.toFront, s));
  19855. s.touchScroller = i.touchScroller(u);
  19856. s._resizeHandler = function(n) {
  19857. return s._onDocumentResize(n)
  19858. };
  19859. n(window).on("resize", s._resizeHandler);
  19860. o.visible && (s.trigger(et), s.trigger(ot));
  19861. i.notify(s)
  19862. },
  19863. _dimensions: function() {
  19864. var i = this,
  19865. t = i.wrapper,
  19866. n = i.options,
  19867. r = n.width,
  19868. u = n.height,
  19869. f = n.maxHeight;
  19870. i.title(n.title);
  19871. ut(["minWidth", "minHeight", "maxWidth", "maxHeight"], function(i, r) {
  19872. var u = n[r];
  19873. u && u != Infinity && t.css(r, u)
  19874. });
  19875. f && f != Infinity && i.element.css("maxHeight", f);
  19876. r && (r.toString().indexOf("%") > 0 ? t.width(r) : t.width(o(r, n.minWidth, n.maxWidth)));
  19877. u && (u.toString().indexOf("%") > 0 ? t.height(u) : t.height(o(u, n.minHeight, n.maxHeight)));
  19878. n.visible || t.hide()
  19879. },
  19880. _position: function() {
  19881. var t = this,
  19882. i = t.wrapper,
  19883. n = t.options.position;
  19884. n.top === 0 && (n.top = n.top.toString());
  19885. n.left === 0 && (n.left = n.left.toString());
  19886. i.css({
  19887. top: n.top || "",
  19888. left: n.left || ""
  19889. })
  19890. },
  19891. _animations: function() {
  19892. var n = this.options;
  19893. n.animation === !1 && (n.animation = {
  19894. open: {
  19895. effects: {}
  19896. },
  19897. close: {
  19898. hide: !0,
  19899. effects: {}
  19900. }
  19901. })
  19902. },
  19903. _resize: function() {
  19904. i.resize(this.element.children())
  19905. },
  19906. _resizable: function() {
  19907. var i = this.options.resizable,
  19908. t = this.wrapper;
  19909. if (this.resizing && (t.off("dblclick" + r).children(h).remove(), this.resizing.destroy(), this.resizing = null), i) {
  19910. t.on("dblclick" + r, e, f(function(t) {
  19911. n(t.target).closest(".k-window-action").length || this.toggleMaximization()
  19912. }, this));
  19913. ut("n e s w se sw ne nw".split(" "), function(n, i) {
  19914. t.append(u.resizeHandle(i))
  19915. });
  19916. this.resizing = new ri(this)
  19917. }
  19918. },
  19919. _draggable: function() {
  19920. var n = this.options.draggable;
  19921. this.dragging && (this.dragging.destroy(), this.dragging = null);
  19922. n && (this.dragging = new ui(this, n.dragHandle || e))
  19923. },
  19924. setOptions: function(n) {
  19925. var t = this;
  19926. d.fn.setOptions.call(t, n);
  19927. t._animations();
  19928. t._dimensions();
  19929. t._position();
  19930. t._resizable();
  19931. t._draggable()
  19932. },
  19933. events: [et, ot, pt, wt, it, "resize", bt, kt, dt],
  19934. options: {
  19935. name: "Window",
  19936. animation: {
  19937. open: {
  19938. effects: {
  19939. zoom: {
  19940. direction: "in"
  19941. },
  19942. fade: {
  19943. direction: "in"
  19944. }
  19945. },
  19946. duration: 350
  19947. },
  19948. close: {
  19949. effects: {
  19950. zoom: {
  19951. direction: "out",
  19952. properties: {
  19953. scale: .7
  19954. }
  19955. },
  19956. fade: {
  19957. direction: "out"
  19958. }
  19959. },
  19960. duration: 350,
  19961. hide: !0
  19962. }
  19963. },
  19964. title: "",
  19965. actions: ["Close"],
  19966. autoFocus: !0,
  19967. modal: !1,
  19968. resizable: !0,
  19969. draggable: !0,
  19970. minWidth: 90,
  19971. minHeight: 50,
  19972. maxWidth: Infinity,
  19973. maxHeight: Infinity,
  19974. pinned: !1,
  19975. position: {},
  19976. content: null,
  19977. visible: null,
  19978. height: null,
  19979. width: null,
  19980. appendTo: "body"
  19981. },
  19982. _closable: function() {
  19983. return n.inArray("close", n.map(this.options.actions, function(n) {
  19984. return n.toLowerCase()
  19985. })) > -1
  19986. },
  19987. _keydown: function(n) {
  19988. var u = this,
  19989. h = u.options,
  19990. f = i.keys,
  19991. e = n.keyCode,
  19992. t = u.wrapper,
  19993. c, r, s = 10,
  19994. p = u.options.isMaximized,
  19995. v, y, l, a;
  19996. n.target != n.currentTarget || u._closing || (e == f.ESC && u._closable() && u._close(!0), !h.draggable || n.ctrlKey || p || (c = i.getOffset(t), e == f.UP ? r = t.css("top", c.top - s) : e == f.DOWN ? r = t.css("top", c.top + s) : e == f.LEFT ? r = t.css("left", c.left - s) : e == f.RIGHT && (r = t.css("left", c.left + s))), h.resizable && n.ctrlKey && !p && (e == f.UP ? (r = !0, y = t.height() - s) : e == f.DOWN && (r = !0, y = t.height() + s), e == f.LEFT ? (r = !0, v = t.width() - s) : e == f.RIGHT && (r = !0, v = t.width() + s), r && (l = o(v, h.minWidth, h.maxWidth), a = o(y, h.minHeight, h.maxHeight), isNaN(l) || (t.width(l), u.options.width = l + "px"), isNaN(a) || (t.height(a), u.options.height = a + "px"), u.resize())), r && n.preventDefault())
  19997. },
  19998. _overlay: function(t) {
  19999. var i = this.appendTo.children(nt),
  20000. r = this.wrapper;
  20001. return i.length || (i = n("<div class='k-overlay' />")), i.insertBefore(r[0]).toggle(t).css(b, parseInt(r.css(b), 10) - 1), i
  20002. },
  20003. _windowActionHandler: function(t) {
  20004. var r = n(t.target).closest(".k-window-action").find(".k-icon"),
  20005. i = this;
  20006. i._closing || ut({
  20007. "k-i-close": function() {
  20008. i._close(!0)
  20009. },
  20010. "k-i-maximize": i.maximize,
  20011. "k-i-minimize": i.minimize,
  20012. "k-i-restore": i.restore,
  20013. "k-i-refresh": i.refresh,
  20014. "k-i-pin": i.pin,
  20015. "k-i-unpin": i.unpin
  20016. }, function(n, u) {
  20017. if (r.hasClass(n)) return t.preventDefault(), u.call(i), !1
  20018. })
  20019. },
  20020. _modals: function() {
  20021. var t = this;
  20022. return n(a).filter(function() {
  20023. var i = n(this),
  20024. r = t._object(i).options;
  20025. return r.modal && r.visible && i.is(y)
  20026. }).sort(function(t, i) {
  20027. return +n(t).css("zIndex") - +n(i).css("zIndex")
  20028. })
  20029. },
  20030. _object: function(n) {
  20031. var t = n.children(v);
  20032. return t.data("kendoWindow") || t.data("kendo" + this.options.name)
  20033. },
  20034. center: function() {
  20035. var t = this,
  20036. e = t.options.position,
  20037. r = t.wrapper,
  20038. i = n(window),
  20039. o = 0,
  20040. s = 0,
  20041. u, f;
  20042. return t.options.isMaximized ? t : (t.options.pinned || (o = i.scrollTop(), s = i.scrollLeft()), f = s + Math.max(0, (i.width() - r.width()) / 2), u = o + Math.max(0, (i.height() - r.height()) / 2), r.css({
  20043. left: f,
  20044. top: u
  20045. }), e.top = u, e.left = f, t)
  20046. },
  20047. title: function(n) {
  20048. var i = this,
  20049. r = i.wrapper,
  20050. s = i.options,
  20051. t = r.children(e),
  20052. f = t.children(ft),
  20053. o = t.outerHeight();
  20054. return arguments.length ? (n === !1 ? (r.addClass("k-window-titleless"), t.remove()) : (t.length || r.prepend(u.titlebar(l(u, s))), r.css("padding-top", o), t.css("margin-top", -o)), f.text(n), i.options.title = n, i) : f.text()
  20055. },
  20056. content: function(n) {
  20057. var t = this.wrapper.children(v),
  20058. r = t.children(".km-scroll-container");
  20059. return (t = r[0] ? r : t, !rt(n)) ? t.html() : (i.destroy(this.element.children()), t.html(n), this)
  20060. },
  20061. open: function() {
  20062. var t = this,
  20063. f = t.wrapper,
  20064. r = t.options,
  20065. e = r.animation.open,
  20066. s = f.children(v),
  20067. h = s.css(c),
  20068. u, o;
  20069. return t.trigger(et) || (t._closing && f.kendoStop(!0, !0), t._closing = !1, t.toFront(), r.autoFocus && t.element.focus(), r.visible = !0, r.modal && (u = t._overlay(!1), u.kendoStop(!0, !0), e.duration && i.effects.Fade ? (o = i.fx(u).fadeIn(), o.duration(e.duration || 0), o.endValue(.5), o.play()) : u.css("opacity", .5), u.show()), f.is(y) || (s.css(c, tt), f.show().kendoStop().kendoAnimate({
  20070. effects: e.effects,
  20071. duration: e.duration,
  20072. complete: function() {
  20073. r.autoFocus && t.element.focus();
  20074. t.trigger(ot);
  20075. s.css(c, h)
  20076. }
  20077. }))), r.isMaximized && (t._documentScrollTop = n(document).scrollTop(), n("html, body").css(c, tt)), t
  20078. },
  20079. _removeOverlay: function(r) {
  20080. var f = this._modals(),
  20081. e = this.options,
  20082. s = e.modal && !f.length,
  20083. h = e.modal ? this._overlay(!0) : n(t),
  20084. o = e.animation.close,
  20085. u;
  20086. s ? !r && o.duration && i.effects.Fade ? (u = i.fx(h).fadeOut(), u.duration(o.duration || 0), u.startValue(.5), u.play()) : this._overlay(!1).remove() : f.length && this._object(f.last())._overlay(!0)
  20087. },
  20088. _close: function(t) {
  20089. var i = this,
  20090. r = i.wrapper,
  20091. u = i.options,
  20092. e = u.animation.open,
  20093. f = u.animation.close;
  20094. r.is(y) && !i.trigger(wt, {
  20095. userTriggered: !!t
  20096. }) && (i._closing = !0, u.visible = !1, n(a).each(function(t, i) {
  20097. var u = n(i).children(v);
  20098. i != r && u.find("> ." + w).length > 0 && u.children(nt).remove()
  20099. }), this._removeOverlay(), r.kendoStop().kendoAnimate({
  20100. effects: f.effects || e.effects,
  20101. reverse: f.reverse === !0,
  20102. duration: f.duration,
  20103. complete: function() {
  20104. r.hide().css("opacity", "");
  20105. i.trigger(pt);
  20106. var n = i._object(i._modals().last());
  20107. n && n.toFront()
  20108. }
  20109. }));
  20110. i.options.isMaximized && (n("html, body").css(c, ""), i._documentScrollTop && i._documentScrollTop > 0 && n(document).scrollTop(i._documentScrollTop))
  20111. },
  20112. close: function() {
  20113. return this._close(!1), this
  20114. },
  20115. _actionable: function(t) {
  20116. return n(t).is(k + "," + k + " .k-icon,:input,a")
  20117. },
  20118. _shouldFocus: function(t) {
  20119. var r = fi(),
  20120. i = this.element;
  20121. return this.options.autoFocus && !n(r).is(i) && !this._actionable(t) && (!i.find(r).length || !i.find(t).length)
  20122. },
  20123. toFront: function(t) {
  20124. var r = this,
  20125. i = r.wrapper,
  20126. s = i[0],
  20127. f = +i.css(b),
  20128. h = f,
  20129. c = t && t.target || null,
  20130. e, o;
  20131. return n(a).each(function(t, i) {
  20132. var r = n(i),
  20133. e = r.css(b),
  20134. o = r.children(v);
  20135. isNaN(e) || (f = Math.max(+e, f));
  20136. i != s && o.find("> ." + w).length > 0 && o.append(u.overlay)
  20137. }), (!i[0].style.zIndex || h < f) && i.css(b, f + 2), r.element.find("> .k-overlay").remove(), r._shouldFocus(c) && (r.element.focus(), e = n(window).scrollTop(), o = parseInt(i.position().top, 10), o > 0 && o < e && (e > 0 ? n(window).scrollTop(o) : i.css("top", e))), r
  20138. },
  20139. toggleMaximization: function() {
  20140. return this._closing ? this : this[this.options.isMaximized ? "restore" : "maximize"]()
  20141. },
  20142. restore: function() {
  20143. var t = this,
  20144. i = t.options,
  20145. u = i.minHeight,
  20146. r = t.restoreOptions;
  20147. return !i.isMaximized && !i.isMinimized ? t : (u && u != Infinity && t.wrapper.css("min-height", u), t.wrapper.css({
  20148. position: i.pinned ? "fixed" : "absolute",
  20149. left: r.left,
  20150. top: r.top,
  20151. width: r.width,
  20152. height: r.height
  20153. }).removeClass(yt).find(".k-window-content,.k-resize-handle").show().end().find(".k-window-titlebar .k-i-restore").parent().remove().end().end().find(gt).parent().show().end().end().find(st).parent().show(), t.options.width = r.width, t.options.height = r.height, n("html, body").css(c, ""), this._documentScrollTop && this._documentScrollTop > 0 && n(document).scrollTop(this._documentScrollTop), i.isMaximized = i.isMinimized = !1, t.resize(), t)
  20154. },
  20155. maximize: ii("maximize", function() {
  20156. var t = this,
  20157. i = t.wrapper,
  20158. r = i.position();
  20159. l(t.restoreOptions, {
  20160. left: r.left,
  20161. top: r.top
  20162. });
  20163. i.css({
  20164. left: 0,
  20165. top: 0,
  20166. position: "fixed"
  20167. }).addClass(yt);
  20168. this._documentScrollTop = n(document).scrollTop();
  20169. n("html, body").css(c, tt);
  20170. t.options.isMaximized = !0;
  20171. t._onDocumentResize()
  20172. }),
  20173. minimize: ii("minimize", function() {
  20174. var n = this;
  20175. n.wrapper.css({
  20176. height: "",
  20177. minHeight: ""
  20178. });
  20179. n.element.hide();
  20180. n.options.isMinimized = !0
  20181. }),
  20182. pin: function(t) {
  20183. var i = this,
  20184. u = n(window),
  20185. r = i.wrapper,
  20186. f = parseInt(r.css("top"), 10),
  20187. o = parseInt(r.css("left"), 10);
  20188. !t && (i.options.pinned || i.options.isMaximized) || (r.css({
  20189. position: "fixed",
  20190. top: f - u.scrollTop(),
  20191. left: o - u.scrollLeft()
  20192. }), r.children(e).find(ni).addClass("k-i-unpin").removeClass("k-i-pin"), i.options.pinned = !0)
  20193. },
  20194. unpin: function() {
  20195. var t = this,
  20196. r = n(window),
  20197. i = t.wrapper,
  20198. u = parseInt(i.css("top"), 10),
  20199. f = parseInt(i.css("left"), 10);
  20200. t.options.pinned && !t.options.isMaximized && (i.css({
  20201. position: "",
  20202. top: u + r.scrollTop(),
  20203. left: f + r.scrollLeft()
  20204. }), i.children(e).find(ti).addClass("k-i-pin").removeClass("k-i-unpin"), t.options.pinned = !1)
  20205. },
  20206. _onDocumentResize: function() {
  20207. var t = this,
  20208. u = t.wrapper,
  20209. f = n(window),
  20210. i, r;
  20211. t.options.isMaximized && (i = f.width(), r = f.height() - parseInt(u.css("padding-top"), 10), u.css({
  20212. width: i,
  20213. height: r
  20214. }), t.options.width = i, t.options.height = r, t.resize())
  20215. },
  20216. refresh: function(t) {
  20217. var i = this,
  20218. e = i.options,
  20219. o = n(i.element),
  20220. h, f, c;
  20221. if (ct(t) || (t = {
  20222. url: t
  20223. }), t = l({}, e.content, t), f = rt(e.iframe) ? e.iframe : t.iframe, c = t.url, c)
  20224. if (rt(f) || (f = !ei(c)), f) {
  20225. h = o.find("." + w)[0];
  20226. h ? h.src = c || h.src : o.html(u.contentFrame(l({}, e, {
  20227. content: t
  20228. })));
  20229. o.find("." + w).unbind("load" + r).on("load" + r, function() {
  20230. i.trigger(it)
  20231. })
  20232. } else i._ajaxRequest(t);
  20233. else t.template && i.content(s(t.template)({})), i.trigger(it);
  20234. return o.toggleClass("k-window-iframecontent", f), i
  20235. },
  20236. _ajaxRequest: function(t) {
  20237. var i = this,
  20238. r = t.template,
  20239. u = i.wrapper.find(".k-window-titlebar .k-i-refresh"),
  20240. f = setTimeout(function() {
  20241. u.addClass(lt)
  20242. }, 100);
  20243. n.ajax(l({
  20244. type: "GET",
  20245. dataType: "html",
  20246. cache: !1,
  20247. error: function(n, t) {
  20248. i.trigger(dt, {
  20249. status: t,
  20250. xhr: n
  20251. })
  20252. },
  20253. complete: function() {
  20254. clearTimeout(f);
  20255. u.removeClass(lt)
  20256. },
  20257. success: function(n) {
  20258. r && (n = s(r)(n || {}));
  20259. i.content(n);
  20260. i.element.prop("scrollTop", 0);
  20261. i.trigger(it)
  20262. }
  20263. }, t))
  20264. },
  20265. destroy: function() {
  20266. var t = this.wrapper;
  20267. d.fn.destroy.call(this);
  20268. i.destroy(t);
  20269. this.resizing && this.resizing.destroy();
  20270. this.dragging && this.dragging.destroy();
  20271. this.element.children("iframe").remove();
  20272. t.find(".k-resize-handle,.k-window-titlebar").off(r);
  20273. t.remove().off(r);
  20274. n(window).off("resize", this._resizeHandler);
  20275. this._removeOverlay(!0)
  20276. },
  20277. _createWindow: function() {
  20278. var e = this,
  20279. t = e.element,
  20280. f = e.options,
  20281. o, r, s = i.support.isRtl(t);
  20282. f.scrollable === !1 && t.attr("style", "overflow:hidden;");
  20283. r = n(u.wrapper(f));
  20284. f.title !== !1 && r.append(u.titlebar(l(u, f)));
  20285. o = t.find("iframe:not(.k-content)").map(function() {
  20286. var n = this.getAttribute("src");
  20287. return this.src = "", n
  20288. });
  20289. r.toggleClass("k-rtl", s).appendTo(e.appendTo).append(t).find("iframe:not(.k-content)").each(function(n) {
  20290. this.src = o[n]
  20291. });
  20292. r.find(".k-window-title").css(s ? "left" : "right", r.find(".k-window-actions").outerWidth() + 10);
  20293. t.show();
  20294. t.find("[data-role=editor]").each(function() {
  20295. var t = n(this).data("kendoEditor");
  20296. t && t.refresh()
  20297. })
  20298. }
  20299. });
  20300. u = {
  20301. wrapper: s("<div class='k-widget k-window' />"),
  20302. action: s("<a role='button' href='\\#' class='k-window-action k-link'><span role='presentation' class='k-icon k-i-#= name.toLowerCase() #'>#= name #<\/span><\/a>"),
  20303. titlebar: s("<div class='k-window-titlebar k-header'>&nbsp;<span class='k-window-title'>#= title #<\/span><div class='k-window-actions'># for (var i = 0; i < actions.length; i++) { ##= action({ name: actions[i] }) ## } #<\/div><\/div>"),
  20304. overlay: "<div class='k-overlay' />",
  20305. contentFrame: s("<iframe frameborder='0' title='#= title #' class='" + w + "' src='#= content.url #'>This page requires frames in order to show content<\/iframe>"),
  20306. resizeHandle: s("<div class='k-resize-handle k-resize-#= data #'><\/div>")
  20307. };
  20308. ri.prototype = {
  20309. dragstart: function(t) {
  20310. var r = this,
  20311. e = r.owner,
  20312. f = e.wrapper;
  20313. r.elementPadding = parseInt(e.wrapper.css("padding-top"), 10);
  20314. r.initialCursorPosition = i.getOffset(f, "position");
  20315. r.resizeDirection = t.currentTarget.prop("className").replace("k-resize-handle k-resize-", "");
  20316. r.initialSize = {
  20317. width: f.width(),
  20318. height: f.height()
  20319. };
  20320. r.containerOffset = i.getOffset(e.appendTo);
  20321. f.append(u.overlay).children(h).not(t.currentTarget).hide();
  20322. n(g).css(p, t.currentTarget.css(p))
  20323. },
  20324. drag: function(n) {
  20325. var u = this,
  20326. f = u.owner,
  20327. e = f.wrapper,
  20328. t = f.options,
  20329. s = u.resizeDirection,
  20330. h = u.containerOffset,
  20331. c = u.initialCursorPosition,
  20332. v = u.initialSize,
  20333. i, r, l, a, y = Math.max(n.x.location, h.left),
  20334. p = Math.max(n.y.location, h.top);
  20335. s.indexOf("e") >= 0 ? (i = y - c.left, e.width(o(i, t.minWidth, t.maxWidth))) : s.indexOf("w") >= 0 && (a = c.left + v.width, i = o(a - y, t.minWidth, t.maxWidth), e.css({
  20336. left: a - i - h.left,
  20337. width: i
  20338. }));
  20339. s.indexOf("s") >= 0 ? (r = p - c.top - u.elementPadding, e.height(o(r, t.minHeight, t.maxHeight))) : s.indexOf("n") >= 0 && (l = c.top + v.height, r = o(l - p, t.minHeight, t.maxHeight), e.css({
  20340. top: l - r - h.top,
  20341. height: r
  20342. }));
  20343. i && (f.options.width = i + "px");
  20344. r && (f.options.height = r + "px");
  20345. f.resize()
  20346. },
  20347. dragend: function(t) {
  20348. var i = this,
  20349. r = i.owner,
  20350. u = r.wrapper;
  20351. return u.find(nt).remove().end().children(h).not(t.currentTarget).show(), n(g).css(p, ""), r.touchScroller && r.touchScroller.reset(), t.keyCode == 27 && u.css(i.initialCursorPosition).css(i.initialSize), !1
  20352. },
  20353. destroy: function() {
  20354. this._draggable.destroy()
  20355. }
  20356. };
  20357. ui.prototype = {
  20358. dragstart: function(t) {
  20359. var r = this.owner,
  20360. f = r.element,
  20361. e = f.find(".k-window-actions"),
  20362. o = i.getOffset(r.appendTo);
  20363. r.trigger(bt);
  20364. r.initialWindowPosition = i.getOffset(r.wrapper, "position");
  20365. r.startPosition = {
  20366. left: t.x.client - r.initialWindowPosition.left,
  20367. top: t.y.client - r.initialWindowPosition.top
  20368. };
  20369. r.minLeftPosition = e.length > 0 ? e.outerWidth() + parseInt(e.css("right"), 10) - f.outerWidth() : 20 - f.outerWidth();
  20370. r.minLeftPosition -= o.left;
  20371. r.minTopPosition = -o.top;
  20372. r.wrapper.append(u.overlay).children(h).hide();
  20373. n(g).css(p, t.currentTarget.css(p))
  20374. },
  20375. drag: function(t) {
  20376. var i = this.owner,
  20377. r = i.options.position,
  20378. u = Math.max(t.y.client - i.startPosition.top, i.minTopPosition),
  20379. f = Math.max(t.x.client - i.startPosition.left, i.minLeftPosition),
  20380. e = {
  20381. left: f,
  20382. top: u
  20383. };
  20384. n(i.wrapper).css(e);
  20385. r.top = u;
  20386. r.left = f
  20387. },
  20388. _finishDrag: function() {
  20389. var t = this.owner;
  20390. t.wrapper.children(h).toggle(!t.options.isMinimized).end().find(nt).remove();
  20391. n(g).css(p, "")
  20392. },
  20393. dragcancel: function(n) {
  20394. this._finishDrag();
  20395. n.currentTarget.closest(a).css(this.owner.initialWindowPosition)
  20396. },
  20397. dragend: function() {
  20398. return this._finishDrag(), this.owner.trigger(kt), !1
  20399. },
  20400. destroy: function() {
  20401. this._draggable.destroy()
  20402. }
  20403. };
  20404. i.ui.plugin(oi)
  20405. }(window.kendo.jQuery);
  20406. ! function(n) {
  20407. return n(["./kendo.data.min", "./kendo.combobox.min", "./kendo.multiselect.min", "./kendo.validator.min"], function() {
  20408. ! function(n, t) {
  20409. function u(t, i, r, u) {
  20410. var f = {};
  20411. return t.sort ? (f[this.options.prefix + "sort"] = n.map(t.sort, function(n) {
  20412. return n.field + "-" + n.dir
  20413. }).join("~"), delete t.sort) : f[this.options.prefix + "sort"] = "", t.page && (f[this.options.prefix + "page"] = t.page, delete t.page), t.pageSize && (f[this.options.prefix + "pageSize"] = t.pageSize, delete t.pageSize), t.group ? (f[this.options.prefix + "group"] = n.map(t.group, function(n) {
  20414. return n.field + "-" + n.dir
  20415. }).join("~"), delete t.group) : f[this.options.prefix + "group"] = "", t.aggregate && (f[this.options.prefix + "aggregate"] = n.map(t.aggregate, function(n) {
  20416. return n.field + "-" + n.aggregate
  20417. }).join("~"), delete t.aggregate), t.filter ? (f[this.options.prefix + "filter"] = o(t.filter, r), delete t.filter) : (f[this.options.prefix + "filter"] = "", delete t.filter), delete t.take, delete t.skip, e(f, t, "", u), f
  20418. }
  20419. function c(n) {
  20420. var t = i.culture().numberFormat[h];
  20421. return ("" + n).replace(h, t)
  20422. }
  20423. function l(n, t) {
  20424. return n instanceof Date ? n = t ? i.stringify(n).replace(/"/g, "") : i.format("{0:G}", n) : "number" == typeof n && (n = c(n)), n
  20425. }
  20426. function f(n, i, r, u, f, o) {
  20427. b(i) ? a(n, i, f, o) : k(i) ? e(n, i, f, o) : n[f] === t && (n[f] = r[u] = l(i, o))
  20428. }
  20429. function e(n, t, i, r) {
  20430. var u, e, o;
  20431. for (u in t) e = i ? i + "." + u : u, o = t[u], f(n, o, t, u, e, r)
  20432. }
  20433. function a(n, t, i, r) {
  20434. for (var s, o, h, u = 0, e = 0; u < t.length; u++) s = t[u], o = "[" + e + "]", h = i + o, f(n, s, t, o, h, r), e++
  20435. }
  20436. function o(i, r) {
  20437. return i.filters ? n.map(i.filters, function(n) {
  20438. var i = n.filters && n.filters.length > 1,
  20439. t = o(n, r);
  20440. return t && i && (t = "(" + t + ")"), t
  20441. }).join("~" + i.logic + "~") : i.field ? i.field + "~" + i.operator + "~" + v(i.value, r) : t
  20442. }
  20443. function v(n, t) {
  20444. if ("string" == typeof n) {
  20445. if (!(n.indexOf("Date(") > -1)) return n = n.replace(w, "''"), t && (n = encodeURIComponent(n)), "'" + n + "'";
  20446. n = new Date(parseInt(n.replace(/^\/Date\((.*?)\)\/$/, "$1"), 10))
  20447. }
  20448. return n && n.getTime ? "datetime'" + i.format("{0:yyyy-MM-ddTHH-mm-ss}", n) + "'" : n
  20449. }
  20450. function s(i) {
  20451. return {
  20452. value: t !== i.Key ? i.Key : i.value,
  20453. field: i.Member || i.field,
  20454. hasSubgroups: i.HasSubgroups || i.hasSubgroups || !1,
  20455. aggregates: p(i.Aggregates || i.aggregates),
  20456. items: i.HasSubgroups ? n.map(i.Items || i.items, s) : i.Items || i.items
  20457. }
  20458. }
  20459. function y(n) {
  20460. var t = {};
  20461. return t[n.AggregateMethodName.toLowerCase()] = n.Value, t
  20462. }
  20463. function p(n) {
  20464. var t, i, r, u = {};
  20465. for (t in n) {
  20466. u = {};
  20467. r = n[t];
  20468. for (i in r) u[i.toLowerCase()] = r[i];
  20469. n[t] = u
  20470. }
  20471. return n
  20472. }
  20473. var i = window.kendo,
  20474. w = /'/gi,
  20475. r = n.extend,
  20476. b = n.isArray,
  20477. k = n.isPlainObject,
  20478. h = ".";
  20479. r(!0, i.data, {
  20480. schemas: {
  20481. "aspnetmvc-ajax": {
  20482. groups: function(t) {
  20483. return n.map(this.data(t), s)
  20484. },
  20485. aggregates: function(n) {
  20486. n = n.d || n;
  20487. for (var t, u = {}, e = n.AggregateResults || [], i = 0, f = e.length; f > i; i++) t = e[i], u[t.Member] = r(!0, u[t.Member], y(t));
  20488. return u
  20489. }
  20490. }
  20491. }
  20492. });
  20493. r(!0, i.data, {
  20494. transports: {
  20495. "aspnetmvc-ajax": i.data.RemoteTransport.extend({
  20496. init: function(n) {
  20497. var t = this,
  20498. f = (n || {}).stringifyDates;
  20499. i.data.RemoteTransport.fn.init.call(this, r(!0, {}, this.options, n, {
  20500. parameterMap: function(n, i) {
  20501. return u.call(t, n, i, !1, f)
  20502. }
  20503. }))
  20504. },
  20505. read: function(n) {
  20506. var t = this.options.data,
  20507. r = this.options.read.url;
  20508. t ? (r && (this.options.data = null), !t.Data.length && r ? i.data.RemoteTransport.fn.read.call(this, n) : n.success(t)) : i.data.RemoteTransport.fn.read.call(this, n)
  20509. },
  20510. options: {
  20511. read: {
  20512. type: "POST"
  20513. },
  20514. update: {
  20515. type: "POST"
  20516. },
  20517. create: {
  20518. type: "POST"
  20519. },
  20520. destroy: {
  20521. type: "POST"
  20522. },
  20523. parameterMap: u,
  20524. prefix: ""
  20525. }
  20526. })
  20527. }
  20528. });
  20529. r(!0, i.data, {
  20530. transports: {
  20531. "aspnetmvc-server": i.data.RemoteTransport.extend({
  20532. init: function(n) {
  20533. var t = this;
  20534. i.data.RemoteTransport.fn.init.call(this, r(n, {
  20535. parameterMap: function(n, i) {
  20536. return u.call(t, n, i, !0)
  20537. }
  20538. }))
  20539. },
  20540. read: function(t) {
  20541. var r, i, u = this.options.prefix,
  20542. f = [u + "sort", u + "page", u + "pageSize", u + "group", u + "aggregate", u + "filter"],
  20543. e = RegExp("(" + f.join("|") + ")=[^&]*&?", "g");
  20544. i = location.search.replace(e, "").replace("?", "");
  20545. i.length && !/&$/.test(i) && (i += "&");
  20546. t = this.setup(t, "read");
  20547. r = t.url;
  20548. r.indexOf("?") >= 0 ? (i = i.replace(/(.*?=.*?)&/g, function(n) {
  20549. return r.indexOf(n.substr(0, n.indexOf("="))) >= 0 ? "" : n
  20550. }), r += "&" + i) : r += "?" + i;
  20551. r += n.map(t.data, function(n, t) {
  20552. return t + "=" + n
  20553. }).join("&");
  20554. location.href = r
  20555. }
  20556. })
  20557. }
  20558. })
  20559. }(window.kendo.jQuery),
  20560. function(n) {
  20561. var i = window.kendo,
  20562. t = i.ui;
  20563. t && t.ComboBox && (t.ComboBox.requestData = function(t) {
  20564. var i = n(t).data("kendoComboBox"),
  20565. u = i.dataSource.filter(),
  20566. r = i.input.val();
  20567. return u || (r = ""), {
  20568. text: r
  20569. }
  20570. })
  20571. }(window.kendo.jQuery),
  20572. function(n) {
  20573. var i = window.kendo,
  20574. t = i.ui;
  20575. t && t.MultiSelect && (t.MultiSelect.requestData = function(t) {
  20576. var i = n(t).data("kendoMultiSelect"),
  20577. r = i.input.val();
  20578. return {
  20579. text: r !== i.options.placeholder ? r : ""
  20580. }
  20581. })
  20582. }(window.kendo.jQuery),
  20583. function(n) {
  20584. var t = window.kendo,
  20585. i = (t.ui, n.extend),
  20586. r = n.isFunction;
  20587. i(!0, t.data, {
  20588. schemas: {
  20589. "imagebrowser-aspnetmvc": {
  20590. data: function(n) {
  20591. return n || []
  20592. },
  20593. model: {
  20594. id: "name",
  20595. fields: {
  20596. name: {
  20597. field: "Name"
  20598. },
  20599. size: {
  20600. field: "Size"
  20601. },
  20602. type: {
  20603. field: "EntryType",
  20604. parse: function(n) {
  20605. return 0 == n ? "f" : "d"
  20606. }
  20607. }
  20608. }
  20609. }
  20610. }
  20611. }
  20612. });
  20613. i(!0, t.data, {
  20614. transports: {
  20615. "imagebrowser-aspnetmvc": t.data.RemoteTransport.extend({
  20616. init: function(i) {
  20617. t.data.RemoteTransport.fn.init.call(this, n.extend(!0, {}, this.options, i))
  20618. },
  20619. _call: function(i, u) {
  20620. u.data = n.extend({}, u.data, {
  20621. path: this.options.path()
  20622. });
  20623. r(this.options[i]) ? this.options[i].call(this, u) : t.data.RemoteTransport.fn[i].call(this, u)
  20624. },
  20625. read: function(n) {
  20626. this._call("read", n)
  20627. },
  20628. create: function(n) {
  20629. this._call("create", n)
  20630. },
  20631. destroy: function(n) {
  20632. this._call("destroy", n)
  20633. },
  20634. update: function() {},
  20635. options: {
  20636. read: {
  20637. type: "POST"
  20638. },
  20639. update: {
  20640. type: "POST"
  20641. },
  20642. create: {
  20643. type: "POST"
  20644. },
  20645. destroy: {
  20646. type: "POST"
  20647. },
  20648. parameterMap: function(n, t) {
  20649. return "read" != t && (n.EntryType = "f" === n.EntryType ? 0 : 1), n
  20650. }
  20651. }
  20652. })
  20653. }
  20654. })
  20655. }(window.kendo.jQuery),
  20656. function(n) {
  20657. function r() {
  20658. var n, i = {};
  20659. for (n in t) i["mvc" + n] = s(n);
  20660. return i
  20661. }
  20662. function u() {
  20663. var n, i = {};
  20664. for (n in t) i["mvc" + n] = h(n);
  20665. return i
  20666. }
  20667. function f(n, t) {
  20668. var u, i, r, f = {},
  20669. e = n.data(),
  20670. o = t.length;
  20671. for (r in e) i = r.toLowerCase(), u = i.indexOf(t), u > -1 && (i = i.substring(u + o, r.length), i && (f[i] = e[r]));
  20672. return f
  20673. }
  20674. function e(t) {
  20675. for (var u = t.Fields || [], f = {}, i = 0, r = u.length; r > i; i++) n.extend(!0, f, o(u[i]));
  20676. return f
  20677. }
  20678. function o(n) {
  20679. for (var i, f, o = {}, s = {}, u = n.FieldName, r = n.ValidationRules, t = 0, e = r.length; e > t; t++) i = r[t].ValidationType, f = r[t].ValidationParameters, o[u + i] = l(u, i, f), s[u + i] = c(r[t].ErrorMessage);
  20680. return {
  20681. rules: o,
  20682. messages: s
  20683. }
  20684. }
  20685. function s(n) {
  20686. return function(t) {
  20687. return t.attr("data-val-" + n)
  20688. }
  20689. }
  20690. function h(n) {
  20691. return function(i) {
  20692. return i.filter("[data-val-" + n + "]").length ? t[n](i, f(i, n)) : !0
  20693. }
  20694. }
  20695. function c(n) {
  20696. return function() {
  20697. return n
  20698. }
  20699. }
  20700. function l(n, i, r) {
  20701. return function(u) {
  20702. return u.filter("[name=" + n + "]").length ? t[i](u, r) : !0
  20703. }
  20704. }
  20705. function a(n, t) {
  20706. return "string" == typeof t && (t = RegExp("^(?:" + t + ")$")), t.test(n)
  20707. }
  20708. var i = /("|\%|'|\[|\]|\$|\.|\,|\:|\;|\+|\*|\&|\!|\#|\(|\)|<|>|\=|\?|\@|\^|\{|\}|\~|\/|\||`)/g,
  20709. t = {
  20710. required: function(n) {
  20711. var f, t, r = n.val(),
  20712. u = n.filter("[type=checkbox]");
  20713. return u.length && (f = u[0].name.replace(i, "\\$1"), t = u.next("input:hidden[name='" + f + "']"), r = t.length ? t.val() : "checked" === n.attr("checked")), !("" === r || !r)
  20714. },
  20715. number: function(n) {
  20716. return "" === n.val() || null !== kendo.parseFloat(n.val())
  20717. },
  20718. regex: function(n, t) {
  20719. return "" !== n.val() ? a(n.val(), t.pattern) : !0
  20720. },
  20721. range: function(n, t) {
  20722. return "" !== n.val() ? this.min(n, t) && this.max(n, t) : !0
  20723. },
  20724. min: function(n, t) {
  20725. var i = parseFloat(t.min) || 0,
  20726. r = kendo.parseFloat(n.val());
  20727. return r >= i
  20728. },
  20729. max: function(n, t) {
  20730. var i = parseFloat(t.max) || 0,
  20731. r = kendo.parseFloat(n.val());
  20732. return i >= r
  20733. },
  20734. date: function(n) {
  20735. return "" === n.val() || null !== kendo.parseDate(n.val())
  20736. },
  20737. length: function(t, i) {
  20738. if ("" !== t.val()) {
  20739. var r = n.trim(t.val()).length;
  20740. return (!i.min || r >= (i.min || 0)) && (!i.max || r <= (i.max || 0))
  20741. }
  20742. return !0
  20743. }
  20744. };
  20745. n.extend(!0, kendo.ui.validator, {
  20746. rules: u(),
  20747. messages: r(),
  20748. messageLocators: {
  20749. mvcLocator: {
  20750. locate: function(n, t) {
  20751. return t = t.replace(i, "\\$1"), n.find(".field-validation-valid[data-valmsg-for=" + t + "], .field-validation-error[data-valmsg-for=" + t + "]")
  20752. },
  20753. decorate: function(n, t) {
  20754. n.addClass("field-validation-error").attr("data-valmsg-for", t || "")
  20755. }
  20756. },
  20757. mvcMetadataLocator: {
  20758. locate: function(n, t) {
  20759. return t = t.replace(i, "\\$1"), n.find("#" + t + "_validationMessage.field-validation-valid")
  20760. },
  20761. decorate: function(n, t) {
  20762. n.addClass("field-validation-error").attr("id", t + "_validationMessage")
  20763. }
  20764. }
  20765. },
  20766. ruleResolvers: {
  20767. mvcMetaDataResolver: {
  20768. resolve: function(t) {
  20769. var i, r = window.mvcClientValidationMetadata || [];
  20770. if (r.length)
  20771. for (t = n(t), i = 0; i < r.length; i++)
  20772. if (r[i].FormId == t.attr("id")) return e(r[i]);
  20773. return {}
  20774. }
  20775. }
  20776. }
  20777. })
  20778. }(window.kendo.jQuery)
  20779. })
  20780. }("function" == typeof define && define.amd ? define : function(n, t) {
  20781. return t()
  20782. });
  20783. ! function(n) {
  20784. return n([], function() {
  20785. ! function(n) {
  20786. var t = n.kendo || (n.kendo = {
  20787. cultures: {}
  20788. });
  20789. t.cultures["pl-PL"] = {
  20790. name: "pl-PL",
  20791. numberFormat: {
  20792. pattern: ["-n"],
  20793. decimals: 2,
  20794. ",": " ",
  20795. ".": ",",
  20796. groupSize: [3],
  20797. percent: {
  20798. pattern: ["-n%", "n%"],
  20799. decimals: 2,
  20800. ",": " ",
  20801. ".": ",",
  20802. groupSize: [3],
  20803. symbol: "%"
  20804. },
  20805. currency: {
  20806. pattern: ["-n $", "n $"],
  20807. decimals: 2,
  20808. ",": " ",
  20809. ".": ",",
  20810. groupSize: [3],
  20811. symbol: "zł"
  20812. }
  20813. },
  20814. calendars: {
  20815. standard: {
  20816. days: {
  20817. names: ["niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"],
  20818. namesAbbr: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So"],
  20819. namesShort: ["N", "Pn", "Wt", "Śr", "Cz", "Pt", "So"]
  20820. },
  20821. months: {
  20822. names: ["styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień", ""],
  20823. namesAbbr: ["sty", "lut", "mar", "kwi", "maj", "cze", "lip", "sie", "wrz", "paź", "lis", "gru", ""]
  20824. },
  20825. AM: [""],
  20826. PM: [""],
  20827. patterns: {
  20828. d: "yyyy-MM-dd",
  20829. D: "d MMMM yyyy",
  20830. F: "d MMMM yyyy HH:mm:ss",
  20831. g: "yyyy-MM-dd HH:mm",
  20832. G: "yyyy-MM-dd HH:mm:ss",
  20833. m: "d MMMM",
  20834. M: "d MMMM",
  20835. s: "yyyy'-'MM'-'dd'T'HH':'mm':'ss",
  20836. t: "HH:mm",
  20837. T: "HH:mm:ss",
  20838. u: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",
  20839. y: "MMMM yyyy",
  20840. Y: "MMMM yyyy"
  20841. },
  20842. "/": "-",
  20843. ":": ":",
  20844. firstDay: 1
  20845. }
  20846. }
  20847. }
  20848. }(this)
  20849. })
  20850. }("function" == typeof define && define.amd ? define : function(n, t) {
  20851. return t()
  20852. }),
  20853. function() {
  20854. function n(n) {
  20855. return function() {
  20856. return n
  20857. }
  20858. }(function(t) {
  20859. var u = this || eval("this"),
  20860. r = u.document,
  20861. e = u.navigator,
  20862. i = u.jQuery,
  20863. f = u.JSON;
  20864. (function(n) {
  20865. "function" == typeof require && "object" == typeof exports && "object" == typeof module ? n(module.exports || exports) : "function" == typeof define && define.amd ? define(["exports"], n) : n(u.ko = {})
  20866. })(function(o) {
  20867. function c(n, t, i, r) {
  20868. s.d[n] = {
  20869. init: function(n) {
  20870. return s.a.f.set(n, a, {}), {
  20871. controlsDescendantBindings: !0
  20872. }
  20873. },
  20874. update: function(n, u, f, e, o) {
  20875. f = s.a.f.get(n, a);
  20876. u = s.a.c(u());
  20877. e = !i != !u;
  20878. var h = !f.fb;
  20879. (h || t || e !== f.vb) && (h && (f.fb = s.a.Oa(s.e.childNodes(n), !0)), e ? (h || s.e.P(n, s.a.Oa(f.fb)), s.Ja(r ? r(o, u) : o, n)) : s.e.ba(n), f.vb = e)
  20880. }
  20881. };
  20882. s.g.S[n] = !1;
  20883. s.e.L[n] = !0
  20884. }
  20885. function v(n, t, i) {
  20886. i && t !== s.h.n(n) && s.h.W(n, t);
  20887. t !== s.h.n(n) && s.q.I(s.a.Ga, null, [n, "change"])
  20888. }
  20889. var s = "undefined" != typeof o ? o : {},
  20890. y, h, l, a;
  20891. s.b = function(n, t) {
  20892. for (var i = n.split("."), r = s, u = 0; u < i.length - 1; u++) r = r[i[u]];
  20893. r[i[i.length - 1]] = t
  20894. };
  20895. s.r = function(n, t, i) {
  20896. n[t] = i
  20897. };
  20898. s.version = "2.3.0";
  20899. s.b("version", s.version);
  20900. s.a = function() {
  20901. function o(n, t) {
  20902. for (var i in n) n.hasOwnProperty(i) && t(i, n[i])
  20903. }
  20904. function h(n, t) {
  20905. if ("input" !== s.a.u(n) || !n.type || "click" != t.toLowerCase()) return !1;
  20906. var i = n.type;
  20907. return "checkbox" == i || "radio" == i
  20908. }
  20909. var c = {},
  20910. l = {},
  20911. a, n;
  20912. return c[e && /Firefox\/2/i.test(e.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"], c.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "), o(c, function(n, t) {
  20913. if (t.length)
  20914. for (var i = 0, r = t.length; i < r; i++) l[t[i]] = n
  20915. }), a = {
  20916. propertychange: !0
  20917. }, n = r && function() {
  20918. for (var n = 3, i = r.createElement("div"), u = i.getElementsByTagName("i"); i.innerHTML = "<!--[if gt IE " + ++n + "]><i><\/i><![endif]-->", u[0];);
  20919. return 4 < n ? n : t
  20920. }(), {
  20921. Ta: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/],
  20922. p: function(n, t) {
  20923. for (var i = 0, r = n.length; i < r; i++) t(n[i])
  20924. },
  20925. k: function(n, t) {
  20926. if ("function" == typeof Array.prototype.indexOf) return Array.prototype.indexOf.call(n, t);
  20927. for (var i = 0, r = n.length; i < r; i++)
  20928. if (n[i] === t) return i;
  20929. return -1
  20930. },
  20931. La: function(n, t, i) {
  20932. for (var r = 0, u = n.length; r < u; r++)
  20933. if (t.call(i, n[r])) return n[r];
  20934. return null
  20935. },
  20936. ka: function(n, t) {
  20937. var i = s.a.k(n, t);
  20938. 0 <= i && n.splice(i, 1)
  20939. },
  20940. Ma: function(n) {
  20941. n = n || [];
  20942. for (var i = [], t = 0, r = n.length; t < r; t++) 0 > s.a.k(i, n[t]) && i.push(n[t]);
  20943. return i
  20944. },
  20945. Z: function(n, t) {
  20946. n = n || [];
  20947. for (var r = [], i = 0, u = n.length; i < u; i++) r.push(t(n[i]));
  20948. return r
  20949. },
  20950. Y: function(n, t) {
  20951. n = n || [];
  20952. for (var r = [], i = 0, u = n.length; i < u; i++) t(n[i]) && r.push(n[i]);
  20953. return r
  20954. },
  20955. R: function(n, t) {
  20956. if (t instanceof Array) n.push.apply(n, t);
  20957. else
  20958. for (var i = 0, r = t.length; i < r; i++) n.push(t[i]);
  20959. return n
  20960. },
  20961. ja: function(n, t, i) {
  20962. var r = n.indexOf ? n.indexOf(t) : s.a.k(n, t);
  20963. 0 > r ? i && n.push(t) : i || n.splice(r, 1)
  20964. },
  20965. extend: function(n, t) {
  20966. if (t)
  20967. for (var i in t) t.hasOwnProperty(i) && (n[i] = t[i]);
  20968. return n
  20969. },
  20970. w: o,
  20971. oa: function(n) {
  20972. for (; n.firstChild;) s.removeNode(n.firstChild)
  20973. },
  20974. Mb: function(n) {
  20975. n = s.a.N(n);
  20976. for (var i = r.createElement("div"), t = 0, u = n.length; t < u; t++) i.appendChild(s.H(n[t]));
  20977. return i
  20978. },
  20979. Oa: function(n, t) {
  20980. for (var r, i = 0, f = n.length, u = []; i < f; i++) r = n[i].cloneNode(!0), u.push(t ? s.H(r) : r);
  20981. return u
  20982. },
  20983. P: function(n, t) {
  20984. if (s.a.oa(n), t)
  20985. for (var i = 0, r = t.length; i < r; i++) n.appendChild(t[i])
  20986. },
  20987. eb: function(n, t) {
  20988. var r = n.nodeType ? [n] : n;
  20989. if (0 < r.length) {
  20990. for (var f = r[0], e = f.parentNode, i = 0, u = t.length; i < u; i++) e.insertBefore(t[i], f);
  20991. for (i = 0, u = r.length; i < u; i++) s.removeNode(r[i])
  20992. }
  20993. },
  20994. hb: function(t, i) {
  20995. 7 > n ? t.setAttribute("selected", i) : t.selected = i
  20996. },
  20997. F: function(n) {
  20998. return null === n || n === t ? "" : n.trim ? n.trim() : n.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
  20999. },
  21000. Wb: function(n, t) {
  21001. for (var r, u = [], f = (n || "").split(t), i = 0, e = f.length; i < e; i++) r = s.a.F(f[i]), "" !== r && u.push(r);
  21002. return u
  21003. },
  21004. Tb: function(n, t) {
  21005. return n = n || "", t.length > n.length ? !1 : n.substring(0, t.length) === t
  21006. },
  21007. yb: function(n, t) {
  21008. if (t.compareDocumentPosition) return 16 == (t.compareDocumentPosition(n) & 16);
  21009. for (; null != n;) {
  21010. if (n == t) return !0;
  21011. n = n.parentNode
  21012. }
  21013. return !1
  21014. },
  21015. aa: function(n) {
  21016. return s.a.yb(n, n.ownerDocument)
  21017. },
  21018. pb: function(n) {
  21019. return !!s.a.La(n, s.a.aa)
  21020. },
  21021. u: function(n) {
  21022. return n && n.tagName && n.tagName.toLowerCase()
  21023. },
  21024. o: function(t, r, u) {
  21025. var o = n && a[r],
  21026. f, e, c;
  21027. if (o || "undefined" == typeof i)
  21028. if (o || "function" != typeof t.addEventListener)
  21029. if ("undefined" != typeof t.attachEvent) f = function(n) {
  21030. u.call(t, n)
  21031. }, e = "on" + r, t.attachEvent(e, f), s.a.C.ia(t, function() {
  21032. t.detachEvent(e, f)
  21033. });
  21034. else throw Error("Browser doesn't support addEventListener or attachEvent");
  21035. else t.addEventListener(r, u, !1);
  21036. else h(t, r) && (c = u, u = function(n, t) {
  21037. var i = this.checked;
  21038. t && (this.checked = !0 !== t.sb);
  21039. c.call(this, n);
  21040. this.checked = i
  21041. }), i(t).bind(r, u)
  21042. },
  21043. Ga: function(n, t) {
  21044. if (!n || !n.nodeType) throw Error("element must be a DOM node when calling triggerEvent");
  21045. if ("undefined" != typeof i) {
  21046. var f = [];
  21047. h(n, t) && f.push({
  21048. sb: n.checked
  21049. });
  21050. i(n).trigger(t, f)
  21051. } else if ("function" == typeof r.createEvent)
  21052. if ("function" == typeof n.dispatchEvent) f = r.createEvent(l[t] || "HTMLEvents"), f.initEvent(t, !0, !0, u, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, n), n.dispatchEvent(f);
  21053. else throw Error("The supplied element doesn't support dispatchEvent");
  21054. else if ("undefined" != typeof n.fireEvent) h(n, t) && (n.checked = !0 !== n.checked), n.fireEvent("on" + t);
  21055. else throw Error("Browser doesn't support triggering events");
  21056. },
  21057. c: function(n) {
  21058. return s.T(n) ? n() : n
  21059. },
  21060. ya: function(n) {
  21061. return s.T(n) ? n.t() : n
  21062. },
  21063. ga: function(n, t, i) {
  21064. if (t) {
  21065. var r = /\S+/g,
  21066. u = n.className.match(r) || [];
  21067. s.a.p(t.match(r), function(n) {
  21068. s.a.ja(u, n, i)
  21069. });
  21070. n.className = u.join(" ")
  21071. }
  21072. },
  21073. ib: function(n, i) {
  21074. var u = s.a.c(i),
  21075. f;
  21076. (null === u || u === t) && (u = "");
  21077. f = s.e.firstChild(n);
  21078. !f || 3 != f.nodeType || s.e.nextSibling(f) ? s.e.P(n, [r.createTextNode(u)]) : f.data = u;
  21079. s.a.Bb(n)
  21080. },
  21081. gb: function(t, i) {
  21082. if (t.name = i, 7 >= n) try {
  21083. t.mergeAttributes(r.createElement("<input name='" + t.name + "'/>"), !1)
  21084. } catch (u) {}
  21085. },
  21086. Bb: function(t) {
  21087. 9 <= n && (t = 1 == t.nodeType ? t : t.parentNode, t.style && (t.style.zoom = t.style.zoom))
  21088. },
  21089. zb: function(t) {
  21090. if (n) {
  21091. var i = t.style.width;
  21092. t.style.width = 0;
  21093. t.style.width = i
  21094. }
  21095. },
  21096. Qb: function(n, t) {
  21097. n = s.a.c(n);
  21098. t = s.a.c(t);
  21099. for (var r = [], i = n; i <= t; i++) r.push(i);
  21100. return r
  21101. },
  21102. N: function(n) {
  21103. for (var i = [], t = 0, r = n.length; t < r; t++) i.push(n[t]);
  21104. return i
  21105. },
  21106. Ub: 6 === n,
  21107. Vb: 7 === n,
  21108. ca: n,
  21109. Ua: function(n, t) {
  21110. for (var r = s.a.N(n.getElementsByTagName("input")).concat(s.a.N(n.getElementsByTagName("textarea"))), f = "string" == typeof t ? function(n) {
  21111. return n.name === t
  21112. } : function(n) {
  21113. return t.test(n.name)
  21114. }, u = [], i = r.length - 1; 0 <= i; i--) f(r[i]) && u.push(r[i]);
  21115. return u
  21116. },
  21117. Nb: function(n) {
  21118. return "string" == typeof n && (n = s.a.F(n)) ? f && f.parse ? f.parse(n) : new Function("return " + n)() : null
  21119. },
  21120. Ca: function(n, t, i) {
  21121. if (!f || !f.stringify) throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
  21122. return f.stringify(s.a.c(n), t, i)
  21123. },
  21124. Ob: function(n, t, i) {
  21125. var v, e, h, f, u, c;
  21126. i = i || {};
  21127. var l = i.params || {},
  21128. a = i.includeFields || this.Ta,
  21129. v = n;
  21130. if ("object" == typeof n && "form" === s.a.u(n))
  21131. for (v = n.action, e = a.length - 1; 0 <= e; e--)
  21132. for (h = s.a.Ua(n, a[e]), f = h.length - 1; 0 <= f; f--) l[h[f].name] = h[f].value;
  21133. t = s.a.c(t);
  21134. u = r.createElement("form");
  21135. u.style.display = "none";
  21136. u.action = v;
  21137. u.method = "post";
  21138. for (c in t) n = r.createElement("input"), n.name = c, n.value = s.a.Ca(s.a.c(t[c])), u.appendChild(n);
  21139. o(l, function(n, t) {
  21140. var i = r.createElement("input");
  21141. i.name = n;
  21142. i.value = t;
  21143. u.appendChild(i)
  21144. });
  21145. r.body.appendChild(u);
  21146. i.submitter ? i.submitter(u) : u.submit();
  21147. setTimeout(function() {
  21148. u.parentNode.removeChild(u)
  21149. }, 0)
  21150. }
  21151. }
  21152. }();
  21153. s.b("utils", s.a);
  21154. s.b("utils.arrayForEach", s.a.p);
  21155. s.b("utils.arrayFirst", s.a.La);
  21156. s.b("utils.arrayFilter", s.a.Y);
  21157. s.b("utils.arrayGetDistinctValues", s.a.Ma);
  21158. s.b("utils.arrayIndexOf", s.a.k);
  21159. s.b("utils.arrayMap", s.a.Z);
  21160. s.b("utils.arrayPushAll", s.a.R);
  21161. s.b("utils.arrayRemoveItem", s.a.ka);
  21162. s.b("utils.extend", s.a.extend);
  21163. s.b("utils.fieldsIncludedWithJsonPost", s.a.Ta);
  21164. s.b("utils.getFormFields", s.a.Ua);
  21165. s.b("utils.peekObservable", s.a.ya);
  21166. s.b("utils.postJson", s.a.Ob);
  21167. s.b("utils.parseJson", s.a.Nb);
  21168. s.b("utils.registerEventHandler", s.a.o);
  21169. s.b("utils.stringifyJson", s.a.Ca);
  21170. s.b("utils.range", s.a.Qb);
  21171. s.b("utils.toggleDomNodeCssClass", s.a.ga);
  21172. s.b("utils.triggerEvent", s.a.Ga);
  21173. s.b("utils.unwrapObservable", s.a.c);
  21174. s.b("utils.objectForEach", s.a.w);
  21175. s.b("utils.addOrRemoveItem", s.a.ja);
  21176. s.b("unwrap", s.a.c);
  21177. Function.prototype.bind || (Function.prototype.bind = function(n) {
  21178. var i = this,
  21179. t = Array.prototype.slice.call(arguments);
  21180. return n = t.shift(),
  21181. function() {
  21182. return i.apply(n, t.concat(Array.prototype.slice.call(arguments)))
  21183. }
  21184. });
  21185. s.a.f = new function() {
  21186. var r = 0,
  21187. n = "__ko__" + (new Date).getTime(),
  21188. i = {};
  21189. return {
  21190. get: function(n, i) {
  21191. var r = s.a.f.pa(n, !1);
  21192. return r === t ? t : r[i]
  21193. },
  21194. set: function(n, i, r) {
  21195. (r !== t || s.a.f.pa(n, !1) !== t) && (s.a.f.pa(n, !0)[i] = r)
  21196. },
  21197. pa: function(u, f) {
  21198. var e = u[n];
  21199. if (!e || "null" === e || !i[e]) {
  21200. if (!f) return t;
  21201. e = u[n] = "ko" + r++;
  21202. i[e] = {}
  21203. }
  21204. return i[e]
  21205. },
  21206. clear: function(t) {
  21207. var r = t[n];
  21208. return r ? (delete i[r], t[n] = null, !0) : !1
  21209. }
  21210. }
  21211. };
  21212. s.b("utils.domData", s.a.f);
  21213. s.b("utils.domData.clear", s.a.f.clear);
  21214. s.a.C = new function() {
  21215. function n(n, i) {
  21216. var r = s.a.f.get(n, u);
  21217. return r === t && i && (r = [], s.a.f.set(n, u, r)), r
  21218. }
  21219. function r(t) {
  21220. var u = n(t, !1),
  21221. e;
  21222. if (u)
  21223. for (u = u.slice(0), e = 0; e < u.length; e++) u[e](t);
  21224. if (s.a.f.clear(t), "function" == typeof i && "function" == typeof i.cleanData && i.cleanData([t]), f[t.nodeType])
  21225. for (u = t.firstChild; t = u;) u = t.nextSibling, 8 === t.nodeType && r(t)
  21226. }
  21227. var u = "__ko_domNodeDisposal__" + (new Date).getTime(),
  21228. e = {
  21229. 1: !0,
  21230. 8: !0,
  21231. 9: !0
  21232. },
  21233. f = {
  21234. 1: !0,
  21235. 9: !0
  21236. };
  21237. return {
  21238. ia: function(t, i) {
  21239. if ("function" != typeof i) throw Error("Callback must be a function");
  21240. n(t, !0).push(i)
  21241. },
  21242. cb: function(i, r) {
  21243. var f = n(i, !1);
  21244. f && (s.a.ka(f, r), 0 == f.length && s.a.f.set(i, u, t))
  21245. },
  21246. H: function(n) {
  21247. var t, i, u;
  21248. if (e[n.nodeType] && (r(n), f[n.nodeType]))
  21249. for (t = [], s.a.R(t, n.getElementsByTagName("*")), i = 0, u = t.length; i < u; i++) r(t[i]);
  21250. return n
  21251. },
  21252. removeNode: function(n) {
  21253. s.H(n);
  21254. n.parentNode && n.parentNode.removeChild(n)
  21255. }
  21256. }
  21257. };
  21258. s.H = s.a.C.H;
  21259. s.removeNode = s.a.C.removeNode;
  21260. s.b("cleanNode", s.H);
  21261. s.b("removeNode", s.removeNode);
  21262. s.b("utils.domNodeDisposal", s.a.C);
  21263. s.b("utils.domNodeDisposal.addDisposeCallback", s.a.C.ia);
  21264. s.b("utils.domNodeDisposal.removeDisposeCallback", s.a.C.cb),
  21265. function() {
  21266. s.a.xa = function(n) {
  21267. var t, f;
  21268. if ("undefined" != typeof i) {
  21269. if (i.parseHTML) t = i.parseHTML(n) || [];
  21270. else if ((t = i.clean([n])) && t[0]) {
  21271. for (n = t[0]; n.parentNode && 11 !== n.parentNode.nodeType;) n = n.parentNode;
  21272. n.parentNode && n.parentNode.removeChild(n)
  21273. }
  21274. } else {
  21275. for (f = s.a.F(n).toLowerCase(), t = r.createElement("div"), f = f.match(/^<(thead|tbody|tfoot)/) && [1, "<table>", "<\/table>"] || !f.indexOf("<tr") && [2, "<table><tbody>", "<\/tbody><\/table>"] || (!f.indexOf("<td") || !f.indexOf("<th")) && [3, "<table><tbody><tr>", "<\/tr><\/tbody><\/table>"] || [0, "", ""], n = "ignored<div>" + f[1] + n + f[2] + "<\/div>", "function" == typeof u.innerShiv ? t.appendChild(u.innerShiv(n)) : t.innerHTML = n; f[0]--;) t = t.lastChild;
  21276. t = s.a.N(t.lastChild.childNodes)
  21277. }
  21278. return t
  21279. };
  21280. s.a.fa = function(n, r) {
  21281. if (s.a.oa(n), r = s.a.c(r), null !== r && r !== t)
  21282. if ("string" != typeof r && (r = r.toString()), "undefined" != typeof i) i(n).html(r);
  21283. else
  21284. for (var f = s.a.xa(r), u = 0; u < f.length; u++) n.appendChild(f[u])
  21285. }
  21286. }();
  21287. s.b("utils.parseHtmlFragment", s.a.xa);
  21288. s.b("utils.setHtml", s.a.fa);
  21289. s.s = function() {
  21290. function i(n, t) {
  21291. var r;
  21292. if (n)
  21293. if (8 == n.nodeType) r = s.s.$a(n.nodeValue), null != r && t.push({
  21294. xb: n,
  21295. Kb: r
  21296. });
  21297. else if (1 == n.nodeType)
  21298. for (var r = 0, u = n.childNodes, f = u.length; r < f; r++) i(u[r], t)
  21299. }
  21300. var n = {};
  21301. return {
  21302. va: function(t) {
  21303. if ("function" != typeof t) throw Error("You can only pass a function to ko.memoization.memoize()");
  21304. var i = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1);
  21305. return n[i] = t, "<!--[ko_memo:" + i + "]-->"
  21306. },
  21307. mb: function(i, r) {
  21308. var u = n[i];
  21309. if (u === t) throw Error("Couldn't find any memo with ID " + i + ". Perhaps it's already been unmemoized.");
  21310. try {
  21311. return u.apply(null, r || []), !0
  21312. } finally {
  21313. delete n[i]
  21314. }
  21315. },
  21316. nb: function(n, t) {
  21317. var f = [],
  21318. u, o, r, e;
  21319. for (i(n, f), u = 0, o = f.length; u < o; u++) r = f[u].xb, e = [r], t && s.a.R(e, t), s.s.mb(f[u].Kb, e), r.nodeValue = "", r.parentNode && r.parentNode.removeChild(r)
  21320. },
  21321. $a: function(n) {
  21322. return (n = n.match(/^\[ko_memo\:(.*?)\]$/)) ? n[1] : null
  21323. }
  21324. }
  21325. }();
  21326. s.b("memoization", s.s);
  21327. s.b("memoization.memoize", s.s.va);
  21328. s.b("memoization.unmemoize", s.s.mb);
  21329. s.b("memoization.parseMemoText", s.s.$a);
  21330. s.b("memoization.unmemoizeDomNodeAndDescendants", s.s.nb);
  21331. s.Sa = {
  21332. throttle: function(n, t) {
  21333. n.throttleEvaluation = t;
  21334. var i = null;
  21335. return s.j({
  21336. read: n,
  21337. write: function(r) {
  21338. clearTimeout(i);
  21339. i = setTimeout(function() {
  21340. n(r)
  21341. }, t)
  21342. }
  21343. })
  21344. },
  21345. notify: function(t, i) {
  21346. return t.equalityComparer = "always" == i ? n(!1) : s.m.fn.equalityComparer, t
  21347. }
  21348. };
  21349. s.b("extenders", s.Sa);
  21350. s.kb = function(n, t, i) {
  21351. this.target = n;
  21352. this.la = t;
  21353. this.wb = i;
  21354. s.r(this, "dispose", this.B)
  21355. };
  21356. s.kb.prototype.B = function() {
  21357. this.Hb = !0;
  21358. this.wb()
  21359. };
  21360. s.V = function() {
  21361. this.G = {};
  21362. s.a.extend(this, s.V.fn);
  21363. s.r(this, "subscribe", this.Da);
  21364. s.r(this, "extend", this.extend);
  21365. s.r(this, "getSubscriptionsCount", this.Db)
  21366. };
  21367. s.V.fn = {
  21368. Da: function(n, t, i) {
  21369. i = i || "change";
  21370. var r = new s.kb(this, t ? n.bind(t) : n, function() {
  21371. s.a.ka(this.G[i], r)
  21372. }.bind(this));
  21373. return this.G[i] || (this.G[i] = []), this.G[i].push(r), r
  21374. },
  21375. notifySubscribers: function(n, t) {
  21376. t = t || "change";
  21377. this.G[t] && s.q.I(function() {
  21378. s.a.p(this.G[t].slice(0), function(t) {
  21379. t && !0 !== t.Hb && t.la(n)
  21380. })
  21381. }, this)
  21382. },
  21383. Db: function() {
  21384. var n = 0;
  21385. return s.a.w(this.G, function(t, i) {
  21386. n += i.length
  21387. }), n
  21388. },
  21389. extend: function(n) {
  21390. var t = this;
  21391. return n && s.a.w(n, function(n, i) {
  21392. var r = s.Sa[n];
  21393. "function" == typeof r && (t = r(t, i))
  21394. }), t
  21395. }
  21396. };
  21397. s.Wa = function(n) {
  21398. return null != n && "function" == typeof n.Da && "function" == typeof n.notifySubscribers
  21399. };
  21400. s.b("subscribable", s.V);
  21401. s.b("isSubscribable", s.Wa);
  21402. s.q = function() {
  21403. var n = [];
  21404. return {
  21405. rb: function(t) {
  21406. n.push({
  21407. la: t,
  21408. Ra: []
  21409. })
  21410. },
  21411. end: function() {
  21412. n.pop()
  21413. },
  21414. bb: function(t) {
  21415. if (!s.Wa(t)) throw Error("Only subscribable things can act as dependencies");
  21416. if (0 < n.length) {
  21417. var i = n[n.length - 1];
  21418. !i || 0 <= s.a.k(i.Ra, t) || (i.Ra.push(t), i.la(t))
  21419. }
  21420. },
  21421. I: function(t, i, r) {
  21422. try {
  21423. return n.push(null), t.apply(i, r || [])
  21424. } finally {
  21425. n.pop()
  21426. }
  21427. }
  21428. }
  21429. }();
  21430. y = {
  21431. undefined: !0,
  21432. boolean: !0,
  21433. number: !0,
  21434. string: !0
  21435. };
  21436. s.m = function(n) {
  21437. function t() {
  21438. return 0 < arguments.length ? (t.equalityComparer && t.equalityComparer(i, arguments[0]) || (t.K(), i = arguments[0], t.J()), this) : (s.q.bb(t), i)
  21439. }
  21440. var i = n;
  21441. return s.V.call(t), t.t = function() {
  21442. return i
  21443. }, t.J = function() {
  21444. t.notifySubscribers(i)
  21445. }, t.K = function() {
  21446. t.notifySubscribers(i, "beforeChange")
  21447. }, s.a.extend(t, s.m.fn), s.r(t, "peek", t.t), s.r(t, "valueHasMutated", t.J), s.r(t, "valueWillMutate", t.K), t
  21448. };
  21449. s.m.fn = {
  21450. equalityComparer: function(n, t) {
  21451. return null === n || typeof n in y ? n === t : !1
  21452. }
  21453. };
  21454. h = s.m.Pb = "__ko_proto__";
  21455. s.m.fn[h] = s.m;
  21456. s.qa = function(n, i) {
  21457. return null === n || n === t || n[h] === t ? !1 : n[h] === i ? !0 : s.qa(n[h], i)
  21458. };
  21459. s.T = function(n) {
  21460. return s.qa(n, s.m)
  21461. };
  21462. s.Xa = function(n) {
  21463. return "function" == typeof n && n[h] === s.m || "function" == typeof n && n[h] === s.j && n.Eb ? !0 : !1
  21464. };
  21465. s.b("observable", s.m);
  21466. s.b("isObservable", s.T);
  21467. s.b("isWriteableObservable", s.Xa);
  21468. s.U = function(n) {
  21469. if (n = n || [], "object" != typeof n || !("length" in n)) throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
  21470. return n = s.m(n), s.a.extend(n, s.U.fn), n
  21471. };
  21472. s.U.fn = {
  21473. remove: function(n) {
  21474. for (var u, r = this.t(), i = [], f = "function" == typeof n ? n : function(t) {
  21475. return t === n
  21476. }, t = 0; t < r.length; t++) u = r[t], f(u) && (0 === i.length && this.K(), i.push(u), r.splice(t, 1), t--);
  21477. return i.length && this.J(), i
  21478. },
  21479. removeAll: function(n) {
  21480. if (n === t) {
  21481. var i = this.t(),
  21482. r = i.slice(0);
  21483. return this.K(), i.splice(0, i.length), this.J(), r
  21484. }
  21485. return n ? this.remove(function(t) {
  21486. return 0 <= s.a.k(n, t)
  21487. }) : []
  21488. },
  21489. destroy: function(n) {
  21490. var i = this.t(),
  21491. r = "function" == typeof n ? n : function(t) {
  21492. return t === n
  21493. },
  21494. t;
  21495. for (this.K(), t = i.length - 1; 0 <= t; t--) r(i[t]) && (i[t]._destroy = !0);
  21496. this.J()
  21497. },
  21498. destroyAll: function(i) {
  21499. return i === t ? this.destroy(n(!0)) : i ? this.destroy(function(n) {
  21500. return 0 <= s.a.k(i, n)
  21501. }) : []
  21502. },
  21503. indexOf: function(n) {
  21504. var t = this();
  21505. return s.a.k(t, n)
  21506. },
  21507. replace: function(n, t) {
  21508. var i = this.indexOf(n);
  21509. 0 <= i && (this.K(), this.t()[i] = t, this.J())
  21510. }
  21511. };
  21512. s.a.p("pop push reverse shift sort splice unshift".split(" "), function(n) {
  21513. s.U.fn[n] = function() {
  21514. var t = this.t();
  21515. return this.K(), t = t[n].apply(t, arguments), this.J(), t
  21516. }
  21517. });
  21518. s.a.p(["slice"], function(n) {
  21519. s.U.fn[n] = function() {
  21520. var t = this();
  21521. return t[n].apply(t, arguments)
  21522. }
  21523. });
  21524. s.b("observableArray", s.U);
  21525. s.j = function(i, r, u) {
  21526. function w() {
  21527. s.a.p(o, function(n) {
  21528. n.B()
  21529. });
  21530. o = []
  21531. }
  21532. function nt() {
  21533. var n = f.throttleEvaluation;
  21534. n && 0 <= n ? (clearTimeout(d), d = setTimeout(c, n)) : c()
  21535. }
  21536. function c() {
  21537. var n, u, i;
  21538. if (!y)
  21539. if (a && p()) h();
  21540. else {
  21541. y = !0;
  21542. try {
  21543. for (n = s.a.Z(o, function(n) {
  21544. return n.target
  21545. }), s.q.rb(function(i) {
  21546. var r;
  21547. 0 <= (r = s.a.k(n, i)) ? n[r] = t : o.push(i.Da(nt))
  21548. }), u = e.call(r), i = n.length - 1; 0 <= i; i--) n[i] && o.splice(i, 1)[0].B();
  21549. a = !0;
  21550. f.notifySubscribers(l, "beforeChange");
  21551. l = u;
  21552. f.notifySubscribers(l)
  21553. } finally {
  21554. s.q.end();
  21555. y = !1
  21556. }
  21557. o.length || h()
  21558. }
  21559. }
  21560. function f() {
  21561. if (0 < arguments.length) {
  21562. if ("function" == typeof k) k.apply(r, arguments);
  21563. else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
  21564. return this
  21565. }
  21566. return a || c(), s.q.bb(f), l
  21567. }
  21568. function b() {
  21569. return !a || 0 < o.length
  21570. }
  21571. var l, a = !1,
  21572. y = !1,
  21573. e = i,
  21574. g, p;
  21575. if (e && "object" == typeof e ? (u = e, e = u.read) : (u = u || {}, e || (e = u.read)), "function" != typeof e) throw Error("Pass a function that returns the value of the ko.computed");
  21576. var k = u.write,
  21577. v = u.disposeWhenNodeIsRemoved || u.$ || null,
  21578. p = u.disposeWhen || u.Qa || n(!1),
  21579. h = w,
  21580. o = [],
  21581. d = null;
  21582. return r || (r = u.owner), f.t = function() {
  21583. return a || c(), l
  21584. }, f.Cb = function() {
  21585. return o.length
  21586. }, f.Eb = "function" == typeof u.write, f.B = function() {
  21587. h()
  21588. }, f.ta = b, s.V.call(f), s.a.extend(f, s.j.fn), s.r(f, "peek", f.t), s.r(f, "dispose", f.B), s.r(f, "isActive", f.ta), s.r(f, "getDependenciesCount", f.Cb), !0 !== u.deferEvaluation && c(), v && b() && (h = function() {
  21589. s.a.C.cb(v, h);
  21590. w()
  21591. }, s.a.C.ia(v, h), g = p, p = function() {
  21592. return !s.a.aa(v) || g()
  21593. }), f
  21594. };
  21595. s.Gb = function(n) {
  21596. return s.qa(n, s.j)
  21597. };
  21598. o = s.m.Pb;
  21599. s.j[o] = s.m;
  21600. s.j.fn = {};
  21601. s.j.fn[o] = s.j;
  21602. s.b("dependentObservable", s.j);
  21603. s.b("computed", s.j);
  21604. s.b("isComputed", s.Gb),
  21605. function() {
  21606. function n(u, f, e) {
  21607. if (e = e || new i, u = f(u), "object" != typeof u || null === u || u === t || u instanceof Date || u instanceof String || u instanceof Number || u instanceof Boolean) return u;
  21608. var o = u instanceof Array ? [] : {};
  21609. return e.save(u, o), r(u, function(i) {
  21610. var r = f(u[i]),
  21611. s;
  21612. switch (typeof r) {
  21613. case "boolean":
  21614. case "number":
  21615. case "string":
  21616. case "function":
  21617. o[i] = r;
  21618. break;
  21619. case "object":
  21620. case "undefined":
  21621. s = e.get(r);
  21622. o[i] = s !== t ? s : n(r, f, e)
  21623. }
  21624. }), o
  21625. }
  21626. function r(n, t) {
  21627. if (n instanceof Array) {
  21628. for (var i = 0; i < n.length; i++) t(i);
  21629. "function" == typeof n.toJSON && t("toJSON")
  21630. } else
  21631. for (i in n) t(i)
  21632. }
  21633. function i() {
  21634. this.keys = [];
  21635. this.Ha = []
  21636. }
  21637. s.lb = function(t) {
  21638. if (0 == arguments.length) throw Error("When calling ko.toJS, pass the object you want to convert.");
  21639. return n(t, function(n) {
  21640. for (var t = 0; s.T(n) && 10 > t; t++) n = n();
  21641. return n
  21642. })
  21643. };
  21644. s.toJSON = function(n, t, i) {
  21645. return n = s.lb(n), s.a.Ca(n, t, i)
  21646. };
  21647. i.prototype = {
  21648. save: function(n, t) {
  21649. var i = s.a.k(this.keys, n);
  21650. 0 <= i ? this.Ha[i] = t : (this.keys.push(n), this.Ha.push(t))
  21651. },
  21652. get: function(n) {
  21653. return n = s.a.k(this.keys, n), 0 <= n ? this.Ha[n] : t
  21654. }
  21655. }
  21656. }();
  21657. s.b("toJS", s.lb);
  21658. s.b("toJSON", s.toJSON),
  21659. function() {
  21660. s.h = {
  21661. n: function(n) {
  21662. switch (s.a.u(n)) {
  21663. case "option":
  21664. return !0 === n.__ko__hasDomDataOptionValue__ ? s.a.f.get(n, s.d.options.wa) : 7 >= s.a.ca ? n.getAttributeNode("value") && n.getAttributeNode("value").specified ? n.value : n.text : n.value;
  21665. case "select":
  21666. return 0 <= n.selectedIndex ? s.h.n(n.options[n.selectedIndex]) : t;
  21667. default:
  21668. return n.value
  21669. }
  21670. },
  21671. W: function(n, i) {
  21672. switch (s.a.u(n)) {
  21673. case "option":
  21674. switch (typeof i) {
  21675. case "string":
  21676. s.a.f.set(n, s.d.options.wa, t);
  21677. "__ko__hasDomDataOptionValue__" in n && delete n.__ko__hasDomDataOptionValue__;
  21678. n.value = i;
  21679. break;
  21680. default:
  21681. s.a.f.set(n, s.d.options.wa, i);
  21682. n.__ko__hasDomDataOptionValue__ = !0;
  21683. n.value = "number" == typeof i ? i : ""
  21684. }
  21685. break;
  21686. case "select":
  21687. "" === i && (i = t);
  21688. (null === i || i === t) && (n.selectedIndex = -1);
  21689. for (var r = n.options.length - 1; 0 <= r; r--)
  21690. if (s.h.n(n.options[r]) == i) {
  21691. n.selectedIndex = r;
  21692. break
  21693. }
  21694. 1 < n.size || -1 !== n.selectedIndex || (n.selectedIndex = 0);
  21695. break;
  21696. default:
  21697. (null === i || i === t) && (i = "");
  21698. n.value = i
  21699. }
  21700. }
  21701. }
  21702. }();
  21703. s.b("selectExtensions", s.h);
  21704. s.b("selectExtensions.readValue", s.h.n);
  21705. s.b("selectExtensions.writeValue", s.h.W);
  21706. s.g = function() {
  21707. function n(n, i) {
  21708. for (var r = null; n != r;) r = n, n = n.replace(t, function(n, t) {
  21709. return i[t]
  21710. });
  21711. return n
  21712. }
  21713. var t = /\@ko_token_(\d+)\@/g,
  21714. i = ["true", "false", "null", "undefined"],
  21715. r = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i;
  21716. return {
  21717. S: [],
  21718. da: function(t) {
  21719. var i = s.a.F(t),
  21720. f, e, r, u;
  21721. if (3 > i.length) return [];
  21722. for ("{" === i.charAt(0) && (i = i.substring(1, i.length - 1)), t = [], f = null, r = 0; r < i.length; r++)
  21723. if (u = i.charAt(r), null === f) switch (u) {
  21724. case '"':
  21725. case "'":
  21726. case "/":
  21727. f = r;
  21728. e = u
  21729. } else if (u == e && "\\" !== i.charAt(r - 1)) {
  21730. u = i.substring(f, r + 1);
  21731. t.push(u);
  21732. var c = "@ko_token_" + (t.length - 1) + "@",
  21733. i = i.substring(0, f) + c + i.substring(r + 1),
  21734. r = r - (u.length - c.length),
  21735. f = null
  21736. }
  21737. e = f = null;
  21738. for (var o = 0, h = null, r = 0; r < i.length; r++) {
  21739. if (u = i.charAt(r), null === f) switch (u) {
  21740. case "{":
  21741. f = r;
  21742. h = u;
  21743. e = "}";
  21744. break;
  21745. case "(":
  21746. f = r;
  21747. h = u;
  21748. e = ")";
  21749. break;
  21750. case "[":
  21751. f = r;
  21752. h = u;
  21753. e = "]"
  21754. }
  21755. u === h ? o++ : u === e && (o--, 0 === o && (u = i.substring(f, r + 1), t.push(u), c = "@ko_token_" + (t.length - 1) + "@", i = i.substring(0, f) + c + i.substring(r + 1), r -= u.length - c.length, f = null))
  21756. }
  21757. for (e = [], i = i.split(","), f = 0, r = i.length; f < r; f++) o = i[f], h = o.indexOf(":"), 0 < h && h < o.length - 1 ? (u = o.substring(h + 1), e.push({
  21758. key: n(o.substring(0, h), t),
  21759. value: n(u, t)
  21760. })) : e.push({
  21761. unknown: n(o, t)
  21762. });
  21763. return e
  21764. },
  21765. ea: function(n) {
  21766. var e = "string" == typeof n ? s.g.da(n) : n,
  21767. f = [],
  21768. t, h, o, u;
  21769. for (n = [], h = 0; t = e[h]; h++)
  21770. if (0 < f.length && f.push(","), t.key) {
  21771. n: {
  21772. o = t.key;u = s.a.F(o);
  21773. switch (u.length && u.charAt(0)) {
  21774. case "'":
  21775. case '"':
  21776. break n;
  21777. default:
  21778. o = "'" + u + "'"
  21779. }
  21780. }
  21781. t = t.value;f.push(o);f.push(":");f.push(t);t = s.a.F(t);0 <= s.a.k(i, s.a.F(t).toLowerCase()) ? t = !1 : (u = t.match(r), t = null === u ? !1 : u[1] ? "Object(" + u[1] + ")" + u[2] : t);t && (0 < n.length && n.push(", "), n.push(o + " : function(__ko_value) { " + t + " = __ko_value; }"))
  21782. }
  21783. else t.unknown && f.push(t.unknown);
  21784. return e = f.join(""), 0 < n.length && (e = e + ", '_ko_property_writers' : { " + n.join("") + " } "), e
  21785. },
  21786. Jb: function(n, t) {
  21787. for (var i = 0; i < n.length; i++)
  21788. if (s.a.F(n[i].key) == t) return !0;
  21789. return !1
  21790. },
  21791. ha: function(n, t, i, r, u) {
  21792. n && s.T(n) ? !s.Xa(n) || u && n.t() === r || n(r) : (n = t()._ko_property_writers) && n[i] && n[i](r)
  21793. }
  21794. }
  21795. }();
  21796. s.b("expressionRewriting", s.g);
  21797. s.b("expressionRewriting.bindingRewriteValidators", s.g.S);
  21798. s.b("expressionRewriting.parseObjectLiteral", s.g.da);
  21799. s.b("expressionRewriting.preProcessBindings", s.g.ea);
  21800. s.b("jsonExpressionRewriting", s.g);
  21801. s.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", s.g.ea),
  21802. function() {
  21803. function n(n) {
  21804. return 8 == n.nodeType && (i ? n.text : n.nodeValue).match(e)
  21805. }
  21806. function t(n) {
  21807. return 8 == n.nodeType && (i ? n.text : n.nodeValue).match(o)
  21808. }
  21809. function u(i, r) {
  21810. for (var u = i, f = 1, e = []; u = u.nextSibling;) {
  21811. if (t(u) && (f--, 0 === f)) return e;
  21812. e.push(u);
  21813. n(u) && f++
  21814. }
  21815. if (!r) throw Error("Cannot find closing comment tag to match: " + i.nodeValue);
  21816. return null
  21817. }
  21818. function f(n, t) {
  21819. var i = u(n, t);
  21820. return i ? 0 < i.length ? i[i.length - 1].nextSibling : n.nextSibling : null
  21821. }
  21822. var i = r && "<!--test-->" === r.createComment("test").text,
  21823. e = i ? /^\x3c!--\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*--\x3e$/ : /^\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*$/,
  21824. o = i ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/,
  21825. h = {
  21826. ul: !0,
  21827. ol: !0
  21828. };
  21829. s.e = {
  21830. L: {},
  21831. childNodes: function(t) {
  21832. return n(t) ? u(t) : t.childNodes
  21833. },
  21834. ba: function(t) {
  21835. if (n(t)) {
  21836. t = s.e.childNodes(t);
  21837. for (var i = 0, r = t.length; i < r; i++) s.removeNode(t[i])
  21838. } else s.a.oa(t)
  21839. },
  21840. P: function(t, i) {
  21841. if (n(t)) {
  21842. s.e.ba(t);
  21843. for (var u = t.nextSibling, r = 0, f = i.length; r < f; r++) u.parentNode.insertBefore(i[r], u)
  21844. } else s.a.P(t, i)
  21845. },
  21846. ab: function(t, i) {
  21847. n(t) ? t.parentNode.insertBefore(i, t.nextSibling) : t.firstChild ? t.insertBefore(i, t.firstChild) : t.appendChild(i)
  21848. },
  21849. Va: function(t, i, r) {
  21850. r ? n(t) ? t.parentNode.insertBefore(i, r.nextSibling) : r.nextSibling ? t.insertBefore(i, r.nextSibling) : t.appendChild(i) : s.e.ab(t, i)
  21851. },
  21852. firstChild: function(i) {
  21853. return n(i) ? !i.nextSibling || t(i.nextSibling) ? null : i.nextSibling : i.firstChild
  21854. },
  21855. nextSibling: function(i) {
  21856. return n(i) && (i = f(i)), i.nextSibling && t(i.nextSibling) ? null : i.nextSibling
  21857. },
  21858. ob: function(t) {
  21859. return (t = n(t)) ? t[1] : null
  21860. },
  21861. Za: function(i) {
  21862. var o, r, u, e;
  21863. if (h[s.a.u(i)] && (o = i.firstChild, o))
  21864. do
  21865. if (1 === o.nodeType) {
  21866. if (r = o.firstChild, u = null, r)
  21867. do u ? u.push(r) : n(r) ? (e = f(r, !0), e ? r = e : u = [r]) : t(r) && (u = [r]); while (r = r.nextSibling);
  21868. if (r = u)
  21869. for (u = o.nextSibling, e = 0; e < r.length; e++) u ? i.insertBefore(r[e], u) : i.appendChild(r[e])
  21870. }
  21871. while (o = o.nextSibling)
  21872. }
  21873. }
  21874. }();
  21875. s.b("virtualElements", s.e);
  21876. s.b("virtualElements.allowedBindings", s.e.L);
  21877. s.b("virtualElements.emptyNode", s.e.ba);
  21878. s.b("virtualElements.insertAfter", s.e.Va);
  21879. s.b("virtualElements.prepend", s.e.ab);
  21880. s.b("virtualElements.setDomNodeChildren", s.e.P),
  21881. function() {
  21882. s.M = function() {
  21883. this.Na = {}
  21884. };
  21885. s.a.extend(s.M.prototype, {
  21886. nodeHasBindings: function(n) {
  21887. switch (n.nodeType) {
  21888. case 1:
  21889. return null != n.getAttribute("data-bind");
  21890. case 8:
  21891. return null != s.e.ob(n);
  21892. default:
  21893. return !1
  21894. }
  21895. },
  21896. getBindings: function(n, t) {
  21897. var i = this.getBindingsString(n, t);
  21898. return i ? this.parseBindingsString(i, t, n) : null
  21899. },
  21900. getBindingsString: function(n) {
  21901. switch (n.nodeType) {
  21902. case 1:
  21903. return n.getAttribute("data-bind");
  21904. case 8:
  21905. return s.e.ob(n);
  21906. default:
  21907. return null
  21908. }
  21909. },
  21910. parseBindingsString: function(n, t, i) {
  21911. var r, f, e, o;
  21912. try {
  21913. return (r = this.Na[n]) || (f = this.Na, o = "with($context){with($data||{}){return{" + s.g.ea(n) + "}}}", e = new Function("$context", "$element", o), r = f[n] = e), r(t, i)
  21914. } catch (u) {
  21915. throw u.message = "Unable to parse bindings.\nBindings value: " + n + "\nMessage: " + u.message, u;
  21916. }
  21917. }
  21918. });
  21919. s.M.instance = new s.M
  21920. }();
  21921. s.b("bindingProvider", s.M),
  21922. function() {
  21923. function n(n, t, r) {
  21924. for (var u = s.e.firstChild(t); t = u;) u = s.e.nextSibling(t), i(n, t, r)
  21925. }
  21926. function i(t, i, u) {
  21927. var e = !0,
  21928. f = 1 === i.nodeType;
  21929. f && s.e.Za(i);
  21930. (f && u || s.M.instance.nodeHasBindings(i)) && (e = r(i, null, t, u).Sb);
  21931. e && n(t, i, !f)
  21932. }
  21933. function r(n, i, r, u) {
  21934. function c(n) {
  21935. return function() {
  21936. return e[n]
  21937. }
  21938. }
  21939. function l() {
  21940. return e
  21941. }
  21942. var o = 0,
  21943. e, h, a = s.a.f.get(n, f);
  21944. if (!i) {
  21945. if (a) throw Error("You cannot apply bindings multiple times to the same element.");
  21946. s.a.f.set(n, f, !0)
  21947. }
  21948. return s.j(function() {
  21949. var f = r && r instanceof s.A ? r : new s.A(s.a.c(r)),
  21950. v = f.$data;
  21951. !a && u && s.jb(n, f);
  21952. (e = ("function" == typeof i ? i(f, n) : i) || s.M.instance.getBindings(n, f)) && (0 === o && (o = 1, s.a.w(e, function(i) {
  21953. var r = s.d[i];
  21954. if (r && 8 === n.nodeType && !s.e.L[i]) throw Error("The binding '" + i + "' cannot be used with virtual elements");
  21955. if (r && "function" == typeof r.init && (r = r.init(n, c(i), l, v, f)) && r.controlsDescendantBindings) {
  21956. if (h !== t) throw Error("Multiple bindings (" + h + " and " + i + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
  21957. h = i
  21958. }
  21959. }), o = 2), 2 === o && s.a.w(e, function(t) {
  21960. var i = s.d[t];
  21961. i && "function" == typeof i.update && i.update(n, c(t), l, v, f)
  21962. }))
  21963. }, null, {
  21964. $: n
  21965. }), {
  21966. Sb: h === t
  21967. }
  21968. }
  21969. s.d = {};
  21970. s.A = function(n, t, i) {
  21971. t ? (s.a.extend(this, t), this.$parentContext = t, this.$parent = t.$data, this.$parents = (t.$parents || []).slice(0), this.$parents.unshift(this.$parent)) : (this.$parents = [], this.$root = n, this.ko = s);
  21972. this.$data = n;
  21973. i && (this[i] = n)
  21974. };
  21975. s.A.prototype.createChildContext = function(n, t) {
  21976. return new s.A(n, this, t)
  21977. };
  21978. s.A.prototype.extend = function(n) {
  21979. var t = s.a.extend(new s.A, this);
  21980. return s.a.extend(t, n)
  21981. };
  21982. var f = "__ko_boundElement";
  21983. s.jb = function(n, t) {
  21984. if (2 == arguments.length) s.a.f.set(n, "__ko_bindingContext__", t);
  21985. else return s.a.f.get(n, "__ko_bindingContext__")
  21986. };
  21987. s.Ka = function(n, t, i) {
  21988. return 1 === n.nodeType && s.e.Za(n), r(n, t, i, !0)
  21989. };
  21990. s.Ja = function(t, i) {
  21991. 1 !== i.nodeType && 8 !== i.nodeType || n(t, i, !0)
  21992. };
  21993. s.Ia = function(n, t) {
  21994. if (t && 1 !== t.nodeType && 8 !== t.nodeType) throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
  21995. t = t || u.document.body;
  21996. i(n, t, !0)
  21997. };
  21998. s.na = function(n) {
  21999. switch (n.nodeType) {
  22000. case 1:
  22001. case 8:
  22002. var i = s.jb(n);
  22003. if (i) return i;
  22004. if (n.parentNode) return s.na(n.parentNode)
  22005. }
  22006. return t
  22007. };
  22008. s.ub = function(n) {
  22009. return (n = s.na(n)) ? n.$data : t
  22010. };
  22011. s.b("bindingHandlers", s.d);
  22012. s.b("applyBindings", s.Ia);
  22013. s.b("applyBindingsToDescendants", s.Ja);
  22014. s.b("applyBindingsToNode", s.Ka);
  22015. s.b("contextFor", s.na);
  22016. s.b("dataFor", s.ub)
  22017. }();
  22018. l = {
  22019. "class": "className",
  22020. "for": "htmlFor"
  22021. };
  22022. s.d.attr = {
  22023. update: function(n, i) {
  22024. var r = s.a.c(i()) || {};
  22025. s.a.w(r, function(i, r) {
  22026. r = s.a.c(r);
  22027. var u = !1 === r || null === r || r === t;
  22028. u && n.removeAttribute(i);
  22029. 8 >= s.a.ca && i in l ? (i = l[i], u ? n.removeAttribute(i) : n[i] = r) : u || n.setAttribute(i, r.toString());
  22030. "name" === i && s.a.gb(n, u ? "" : r.toString())
  22031. })
  22032. }
  22033. };
  22034. s.d.checked = {
  22035. init: function(t, i, r) {
  22036. s.a.o(t, "click", function() {
  22037. var u, n, f;
  22038. if ("checkbox" == t.type) u = t.checked;
  22039. else if ("radio" == t.type && t.checked) u = t.value;
  22040. else return;
  22041. n = i();
  22042. f = s.a.c(n);
  22043. "checkbox" == t.type && f instanceof Array ? s.a.ja(n, t.value, t.checked) : s.g.ha(n, r, "checked", u, !0)
  22044. });
  22045. "radio" != t.type || t.name || s.d.uniqueName.init(t, n(!0))
  22046. },
  22047. update: function(n, t) {
  22048. var i = s.a.c(t());
  22049. "checkbox" == n.type ? n.checked = i instanceof Array ? 0 <= s.a.k(i, n.value) : i : "radio" == n.type && (n.checked = n.value == i)
  22050. }
  22051. };
  22052. s.d.css = {
  22053. update: function(n, t) {
  22054. var i = s.a.c(t());
  22055. "object" == typeof i ? s.a.w(i, function(t, i) {
  22056. i = s.a.c(i);
  22057. s.a.ga(n, t, i)
  22058. }) : (i = String(i || ""), s.a.ga(n, n.__ko__cssValue, !1), n.__ko__cssValue = i, s.a.ga(n, i, !0))
  22059. }
  22060. };
  22061. s.d.enable = {
  22062. update: function(n, t) {
  22063. var i = s.a.c(t());
  22064. i && n.disabled ? n.removeAttribute("disabled") : i || n.disabled || (n.disabled = !0)
  22065. }
  22066. };
  22067. s.d.disable = {
  22068. update: function(n, t) {
  22069. s.d.enable.update(n, function() {
  22070. return !s.a.c(t())
  22071. })
  22072. }
  22073. };
  22074. s.d.event = {
  22075. init: function(n, t, i, r) {
  22076. var u = t() || {};
  22077. s.a.w(u, function(u) {
  22078. "string" == typeof u && s.a.o(n, u, function(n) {
  22079. var e, o = t()[u],
  22080. h, f;
  22081. if (o) {
  22082. h = i();
  22083. try {
  22084. f = s.a.N(arguments);
  22085. f.unshift(r);
  22086. e = o.apply(r, f)
  22087. } finally {
  22088. !0 !== e && (n.preventDefault ? n.preventDefault() : n.returnValue = !1)
  22089. }!1 === h[u + "Bubble"] && (n.cancelBubble = !0, n.stopPropagation && n.stopPropagation())
  22090. }
  22091. })
  22092. })
  22093. }
  22094. };
  22095. s.d.foreach = {
  22096. Ya: function(n) {
  22097. return function() {
  22098. var i = n(),
  22099. t = s.a.ya(i);
  22100. return !t || "number" == typeof t.length ? {
  22101. foreach: i,
  22102. templateEngine: s.D.sa
  22103. } : (s.a.c(i), {
  22104. foreach: t.data,
  22105. as: t.as,
  22106. includeDestroyed: t.includeDestroyed,
  22107. afterAdd: t.afterAdd,
  22108. beforeRemove: t.beforeRemove,
  22109. afterRender: t.afterRender,
  22110. beforeMove: t.beforeMove,
  22111. afterMove: t.afterMove,
  22112. templateEngine: s.D.sa
  22113. })
  22114. }
  22115. },
  22116. init: function(n, t) {
  22117. return s.d.template.init(n, s.d.foreach.Ya(t))
  22118. },
  22119. update: function(n, t, i, r, u) {
  22120. return s.d.template.update(n, s.d.foreach.Ya(t), i, r, u)
  22121. }
  22122. };
  22123. s.g.S.foreach = !1;
  22124. s.e.L.foreach = !0;
  22125. s.d.hasfocus = {
  22126. init: function(n, t, i) {
  22127. function r(r) {
  22128. var u, f;
  22129. if (n.__ko_hasfocusUpdating = !0, u = n.ownerDocument, "activeElement" in u) {
  22130. try {
  22131. f = u.activeElement
  22132. } catch (e) {
  22133. f = u.body
  22134. }
  22135. r = f === n
  22136. }
  22137. u = t();
  22138. s.g.ha(u, i, "hasfocus", r, !0);
  22139. n.__ko_hasfocusLastValue = r;
  22140. n.__ko_hasfocusUpdating = !1
  22141. }
  22142. var u = r.bind(null, !0),
  22143. f = r.bind(null, !1);
  22144. s.a.o(n, "focus", u);
  22145. s.a.o(n, "focusin", u);
  22146. s.a.o(n, "blur", f);
  22147. s.a.o(n, "focusout", f)
  22148. },
  22149. update: function(n, t) {
  22150. var i = !!s.a.c(t());
  22151. n.__ko_hasfocusUpdating || n.__ko_hasfocusLastValue === i || (i ? n.focus() : n.blur(), s.q.I(s.a.Ga, null, [n, i ? "focusin" : "focusout"]))
  22152. }
  22153. };
  22154. s.d.hasFocus = s.d.hasfocus;
  22155. s.d.html = {
  22156. init: function() {
  22157. return {
  22158. controlsDescendantBindings: !0
  22159. }
  22160. },
  22161. update: function(n, t) {
  22162. s.a.fa(n, t())
  22163. }
  22164. };
  22165. a = "__ko_withIfBindingData";
  22166. c("if");
  22167. c("ifnot", !1, !0);
  22168. c("with", !0, !1, function(n, t) {
  22169. return n.createChildContext(t)
  22170. });
  22171. s.d.options = {
  22172. init: function(n) {
  22173. if ("select" !== s.a.u(n)) throw Error("options binding applies only to SELECT elements");
  22174. for (; 0 < n.length;) n.remove(0);
  22175. return {
  22176. controlsDescendantBindings: !0
  22177. }
  22178. },
  22179. update: function(n, i, u) {
  22180. function a(n, t, i) {
  22181. var r = typeof t;
  22182. return "function" == r ? t(n) : "string" == r ? n[t] : i
  22183. }
  22184. function y(n, t) {
  22185. if (e) {
  22186. var i = 0 <= s.a.k(e, s.h.n(t[0]));
  22187. s.a.hb(t[0], i)
  22188. }
  22189. }
  22190. var p = 0 == n.length,
  22191. h = !p && n.multiple ? n.scrollTop : null,
  22192. l;
  22193. i = s.a.c(i());
  22194. var f = u(),
  22195. w = f.optionsIncludeDestroyed,
  22196. c = {},
  22197. o, e;
  22198. n.multiple ? e = s.a.Z(n.selectedOptions || s.a.Y(n.childNodes, function(n) {
  22199. return n.tagName && "option" === s.a.u(n) && n.selected
  22200. }), function(n) {
  22201. return s.h.n(n)
  22202. }) : 0 <= n.selectedIndex && (e = [s.h.n(n.options[n.selectedIndex])]);
  22203. i ? ("undefined" == typeof i.length && (i = [i]), l = s.a.Y(i, function(n) {
  22204. return w || n === t || null === n || !s.a.c(n._destroy)
  22205. }), "optionsCaption" in f && (o = s.a.c(f.optionsCaption), null !== o && o !== t && l.unshift(c))) : i = [];
  22206. u = y;
  22207. f.optionsAfterRender && (u = function(n, i) {
  22208. y(0, i);
  22209. s.q.I(f.optionsAfterRender, null, [i[0], n !== c ? n : t])
  22210. });
  22211. s.a.Aa(n, l, function(n, i, u) {
  22212. return u.length && (e = u[0].selected && [s.h.n(u[0])]), i = r.createElement("option"), n === c ? (s.a.fa(i, o), s.h.W(i, t)) : (u = a(n, f.optionsValue, n), s.h.W(i, s.a.c(u)), n = a(n, f.optionsText, u), s.a.ib(i, n)), [i]
  22213. }, null, u);
  22214. e = null;
  22215. p && "value" in f && v(n, s.a.ya(f.value), !0);
  22216. s.a.zb(n);
  22217. h && 20 < Math.abs(h - n.scrollTop) && (n.scrollTop = h)
  22218. }
  22219. };
  22220. s.d.options.wa = "__ko.optionValueDomData__";
  22221. s.d.selectedOptions = {
  22222. init: function(n, t, i) {
  22223. s.a.o(n, "change", function() {
  22224. var u = t(),
  22225. r = [];
  22226. s.a.p(n.getElementsByTagName("option"), function(n) {
  22227. n.selected && r.push(s.h.n(n))
  22228. });
  22229. s.g.ha(u, i, "selectedOptions", r)
  22230. })
  22231. },
  22232. update: function(n, t) {
  22233. if ("select" != s.a.u(n)) throw Error("values binding applies only to SELECT elements");
  22234. var i = s.a.c(t());
  22235. i && "number" == typeof i.length && s.a.p(n.getElementsByTagName("option"), function(n) {
  22236. var t = 0 <= s.a.k(i, s.h.n(n));
  22237. s.a.hb(n, t)
  22238. })
  22239. }
  22240. };
  22241. s.d.style = {
  22242. update: function(n, t) {
  22243. var i = s.a.c(t() || {});
  22244. s.a.w(i, function(t, i) {
  22245. i = s.a.c(i);
  22246. n.style[t] = i || ""
  22247. })
  22248. }
  22249. };
  22250. s.d.submit = {
  22251. init: function(n, t, i, r) {
  22252. if ("function" != typeof t()) throw Error("The value for a submit binding must be a function");
  22253. s.a.o(n, "submit", function(i) {
  22254. var u, f = t();
  22255. try {
  22256. u = f.call(r, n)
  22257. } finally {
  22258. !0 !== u && (i.preventDefault ? i.preventDefault() : i.returnValue = !1)
  22259. }
  22260. })
  22261. }
  22262. };
  22263. s.d.text = {
  22264. update: function(n, t) {
  22265. s.a.ib(n, t())
  22266. }
  22267. };
  22268. s.e.L.text = !0;
  22269. s.d.uniqueName = {
  22270. init: function(n, t) {
  22271. if (t()) {
  22272. var i = "ko_unique_" + ++s.d.uniqueName.tb;
  22273. s.a.gb(n, i)
  22274. }
  22275. }
  22276. };
  22277. s.d.uniqueName.tb = 0;
  22278. s.d.value = {
  22279. init: function(n, t, i) {
  22280. function f() {
  22281. e = !1;
  22282. var r = t(),
  22283. u = s.h.n(n);
  22284. s.g.ha(r, i, "value", u)
  22285. }
  22286. var r = ["change"],
  22287. u = i().valueUpdate,
  22288. e = !1;
  22289. u && ("string" == typeof u && (u = [u]), s.a.R(r, u), r = s.a.Ma(r));
  22290. !s.a.ca || "input" != n.tagName.toLowerCase() || "text" != n.type || "off" == n.autocomplete || n.form && "off" == n.form.autocomplete || -1 != s.a.k(r, "propertychange") || (s.a.o(n, "propertychange", function() {
  22291. e = !0
  22292. }), s.a.o(n, "blur", function() {
  22293. e && f()
  22294. }));
  22295. s.a.p(r, function(t) {
  22296. var i = f;
  22297. s.a.Tb(t, "after") && (i = function() {
  22298. setTimeout(f, 0)
  22299. }, t = t.substring(5));
  22300. s.a.o(n, t, i)
  22301. })
  22302. },
  22303. update: function(n, t) {
  22304. var u = "select" === s.a.u(n),
  22305. r = s.a.c(t()),
  22306. i = s.h.n(n);
  22307. r !== i && (i = function() {
  22308. s.h.W(n, r)
  22309. }, i(), u && setTimeout(i, 0));
  22310. u && 0 < n.length && v(n, r, !1)
  22311. }
  22312. };
  22313. s.d.visible = {
  22314. update: function(n, t) {
  22315. var i = s.a.c(t()),
  22316. r = "none" != n.style.display;
  22317. i && !r ? n.style.display = "" : !i && r && (n.style.display = "none")
  22318. }
  22319. },
  22320. function(n) {
  22321. s.d[n] = {
  22322. init: function(t, i, r, u) {
  22323. return s.d.event.init.call(this, t, function() {
  22324. var t = {};
  22325. return t[n] = i(), t
  22326. }, r, u)
  22327. }
  22328. }
  22329. }("click");
  22330. s.v = function() {};
  22331. s.v.prototype.renderTemplateSource = function() {
  22332. throw Error("Override renderTemplateSource");
  22333. };
  22334. s.v.prototype.createJavaScriptEvaluatorBlock = function() {
  22335. throw Error("Override createJavaScriptEvaluatorBlock");
  22336. };
  22337. s.v.prototype.makeTemplateSource = function(n, t) {
  22338. if ("string" == typeof n) {
  22339. t = t || r;
  22340. var i = t.getElementById(n);
  22341. if (!i) throw Error("Cannot find template with ID " + n);
  22342. return new s.l.i(i)
  22343. }
  22344. if (1 == n.nodeType || 8 == n.nodeType) return new s.l.Q(n);
  22345. throw Error("Unknown template type: " + n);
  22346. };
  22347. s.v.prototype.renderTemplate = function(n, t, i, r) {
  22348. return n = this.makeTemplateSource(n, r), this.renderTemplateSource(n, t, i)
  22349. };
  22350. s.v.prototype.isTemplateRewritten = function(n, t) {
  22351. return !1 === this.allowTemplateRewriting ? !0 : this.makeTemplateSource(n, t).data("isRewritten")
  22352. };
  22353. s.v.prototype.rewriteTemplate = function(n, t, i) {
  22354. n = this.makeTemplateSource(n, i);
  22355. t = t(n.text());
  22356. n.text(t);
  22357. n.data("isRewritten", !0)
  22358. };
  22359. s.b("templateEngine", s.v);
  22360. s.Ea = function() {
  22361. function n(n, t, i, r) {
  22362. var o, f, u, e;
  22363. for (n = s.g.da(n), o = s.g.S, f = 0; f < n.length; f++)
  22364. if (u = n[f].key, o.hasOwnProperty(u))
  22365. if (e = o[u], "function" == typeof e) {
  22366. if (u = e(n[f].value)) throw Error(u);
  22367. } else if (!e) throw Error("This template engine does not support the '" + u + "' binding within its templates");
  22368. return i = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + s.g.ea(n) + " } })()},'" + i.toLowerCase() + "')", r.createJavaScriptEvaluatorBlock(i) + t
  22369. }
  22370. var t = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
  22371. i = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;
  22372. return {
  22373. Ab: function(n, t, i) {
  22374. t.isTemplateRewritten(n, i) || t.rewriteTemplate(n, function(n) {
  22375. return s.Ea.Lb(n, t)
  22376. }, i)
  22377. },
  22378. Lb: function(r, u) {
  22379. return r.replace(t, function(t, i, r, f, e) {
  22380. return n(e, i, r, u)
  22381. }).replace(i, function(t, i) {
  22382. return n(i, "<!-- ko -->", "#comment", u)
  22383. })
  22384. },
  22385. qb: function(n, t) {
  22386. return s.s.va(function(i, r) {
  22387. var u = i.nextSibling;
  22388. u && u.nodeName.toLowerCase() === t && s.Ka(u, n, r)
  22389. })
  22390. }
  22391. }
  22392. }();
  22393. s.b("__tr_ambtns", s.Ea.qb),
  22394. function() {
  22395. s.l = {};
  22396. s.l.i = function(n) {
  22397. this.i = n
  22398. };
  22399. s.l.i.prototype.text = function() {
  22400. var n = s.a.u(this.i),
  22401. n = "script" === n ? "text" : "textarea" === n ? "value" : "innerHTML",
  22402. t;
  22403. if (0 == arguments.length) return this.i[n];
  22404. t = arguments[0];
  22405. "innerHTML" === n ? s.a.fa(this.i, t) : this.i[n] = t
  22406. };
  22407. s.l.i.prototype.data = function(n) {
  22408. if (1 === arguments.length) return s.a.f.get(this.i, "templateSourceData_" + n);
  22409. s.a.f.set(this.i, "templateSourceData_" + n, arguments[1])
  22410. };
  22411. s.l.Q = function(n) {
  22412. this.i = n
  22413. };
  22414. s.l.Q.prototype = new s.l.i;
  22415. s.l.Q.prototype.text = function() {
  22416. if (0 == arguments.length) {
  22417. var n = s.a.f.get(this.i, "__ko_anon_template__") || {};
  22418. return n.Fa === t && n.ma && (n.Fa = n.ma.innerHTML), n.Fa
  22419. }
  22420. s.a.f.set(this.i, "__ko_anon_template__", {
  22421. Fa: arguments[0]
  22422. })
  22423. };
  22424. s.l.i.prototype.nodes = function() {
  22425. if (0 == arguments.length) return (s.a.f.get(this.i, "__ko_anon_template__") || {}).ma;
  22426. s.a.f.set(this.i, "__ko_anon_template__", {
  22427. ma: arguments[0]
  22428. })
  22429. };
  22430. s.b("templateSources", s.l);
  22431. s.b("templateSources.domElement", s.l.i);
  22432. s.b("templateSources.anonymousTemplate", s.l.Q)
  22433. }(),
  22434. function() {
  22435. function r(n, t, i) {
  22436. var r;
  22437. for (t = s.e.nextSibling(t); n && (r = n) !== t;) n = s.e.nextSibling(r), 1 !== r.nodeType && 8 !== r.nodeType || i(r)
  22438. }
  22439. function u(n, t) {
  22440. if (n.length) {
  22441. var i = n[0],
  22442. u = n[n.length - 1];
  22443. r(i, u, function(n) {
  22444. s.Ia(t, n)
  22445. });
  22446. r(i, u, function(n) {
  22447. s.s.nb(n, [t])
  22448. })
  22449. }
  22450. }
  22451. function n(n) {
  22452. return n.nodeType ? n : 0 < n.length ? n[0] : null
  22453. }
  22454. function f(t, r, f, e, o) {
  22455. o = o || {};
  22456. var h = t && n(t),
  22457. h = h && h.ownerDocument,
  22458. c = o.templateEngine || i;
  22459. if (s.Ea.Ab(f, c, h), f = c.renderTemplate(f, e, o, h), "number" != typeof f.length || 0 < f.length && "number" != typeof f[0].nodeType) throw Error("Template engine must return an array of DOM nodes");
  22460. h = !1;
  22461. switch (r) {
  22462. case "replaceChildren":
  22463. s.e.P(t, f);
  22464. h = !0;
  22465. break;
  22466. case "replaceNode":
  22467. s.a.eb(t, f);
  22468. h = !0;
  22469. break;
  22470. case "ignoreTargetNode":
  22471. break;
  22472. default:
  22473. throw Error("Unknown renderMode: " + r);
  22474. }
  22475. return h && (u(f, e), o.afterRender && s.q.I(o.afterRender, null, [f, e.$data])), f
  22476. }
  22477. var i;
  22478. s.Ba = function(n) {
  22479. if (n != t && !(n instanceof s.v)) throw Error("templateEngine must inherit from ko.templateEngine");
  22480. i = n
  22481. };
  22482. s.za = function(r, u, e, o, h) {
  22483. if (e = e || {}, (e.templateEngine || i) == t) throw Error("Set a template engine before calling renderTemplate");
  22484. if (h = h || "replaceChildren", o) {
  22485. var c = n(o);
  22486. return s.j(function() {
  22487. var t = u && u instanceof s.A ? u : new s.A(s.a.c(u)),
  22488. i = "function" == typeof r ? r(t.$data, t) : r,
  22489. t = f(o, h, i, t, e);
  22490. "replaceNode" == h && (o = t, c = n(o))
  22491. }, null, {
  22492. Qa: function() {
  22493. return !c || !s.a.aa(c)
  22494. },
  22495. $: c && "replaceNode" == h ? c.parentNode : c
  22496. })
  22497. }
  22498. return s.s.va(function(n) {
  22499. s.za(r, u, e, n, "replaceNode")
  22500. })
  22501. };
  22502. s.Rb = function(n, i, r, e, o) {
  22503. function c(n, t) {
  22504. u(t, h);
  22505. r.afterRender && r.afterRender(t, n)
  22506. }
  22507. function l(t, i) {
  22508. h = o.createChildContext(s.a.c(t), r.as);
  22509. h.$index = i;
  22510. var u = "function" == typeof n ? n(t, h) : n;
  22511. return f(null, "ignoreTargetNode", u, h, r)
  22512. }
  22513. var h;
  22514. return s.j(function() {
  22515. var n = s.a.c(i) || [];
  22516. "undefined" == typeof n.length && (n = [n]);
  22517. n = s.a.Y(n, function(n) {
  22518. return r.includeDestroyed || n === t || null === n || !s.a.c(n._destroy)
  22519. });
  22520. s.q.I(s.a.Aa, null, [e, n, l, r, c])
  22521. }, null, {
  22522. $: e
  22523. })
  22524. };
  22525. s.d.template = {
  22526. init: function(n, t) {
  22527. var i = s.a.c(t());
  22528. return "string" == typeof i || i.name || 1 != n.nodeType && 8 != n.nodeType || (i = 1 == n.nodeType ? n.childNodes : s.e.childNodes(n), i = s.a.Mb(i), new s.l.Q(n).nodes(i)), {
  22529. controlsDescendantBindings: !0
  22530. }
  22531. },
  22532. update: function(n, i, r, u, f) {
  22533. i = s.a.c(i());
  22534. r = {};
  22535. u = !0;
  22536. var e, o = null;
  22537. "string" != typeof i && (r = i, i = s.a.c(r.name), "if" in r && (u = s.a.c(r["if"])), u && "ifnot" in r && (u = !s.a.c(r.ifnot)), e = s.a.c(r.data));
  22538. "foreach" in r ? o = s.Rb(i || n, u && r.foreach || [], r, n, f) : u ? (f = "data" in r ? f.createChildContext(e, r.as) : f, o = s.za(i || n, f, r, n)) : s.e.ba(n);
  22539. f = o;
  22540. (e = s.a.f.get(n, "__ko__templateComputedDomDataKey__")) && "function" == typeof e.B && e.B();
  22541. s.a.f.set(n, "__ko__templateComputedDomDataKey__", f && f.ta() ? f : t)
  22542. }
  22543. };
  22544. s.g.S.template = function(n) {
  22545. return n = s.g.da(n), 1 == n.length && n[0].unknown || s.g.Jb(n, "name") ? null : "This template engine does not support anonymous templates nested within its templates"
  22546. };
  22547. s.e.L.template = !0
  22548. }();
  22549. s.b("setTemplateEngine", s.Ba);
  22550. s.b("renderTemplate", s.za);
  22551. s.a.Pa = function() {
  22552. function n(n, t, i, r, u) {
  22553. for (var o = Math.min, l = Math.max, s = [], a = n.length, f, h = t.length, c = h - a || 1, w = a + h + 1, v, p, b, y, e = 0; e <= a; e++)
  22554. for (p = v, s.push(v = []), b = o(h, e + c), f = l(0, e - 1); f <= b; f++) v[f] = f ? e ? n[e - 1] === t[f - 1] ? p[f - 1] : o(p[f] || w, v[f - 1] || w) + 1 : f + 1 : e + 1;
  22555. for (o = [], l = [], c = [], e = a, f = h; e || f;) h = s[e][f] - 1, f && h === s[e][f - 1] ? l.push(o[o.length] = {
  22556. status: i,
  22557. value: t[--f],
  22558. index: f
  22559. }) : e && h === s[e - 1][f] ? c.push(o[o.length] = {
  22560. status: r,
  22561. value: n[--e],
  22562. index: e
  22563. }) : (o.push({
  22564. status: "retained",
  22565. value: t[--f]
  22566. }), --e);
  22567. if (l.length && c.length)
  22568. for (n = 10 * a, t = i = 0;
  22569. (u || t < n) && (y = l[i]); i++) {
  22570. for (r = 0; s = c[r]; r++)
  22571. if (y.value === s.value) {
  22572. y.moved = s.index;
  22573. s.moved = y.index;
  22574. c.splice(r, 1);
  22575. t = r = 0;
  22576. break
  22577. }
  22578. t += r
  22579. }
  22580. return o.reverse()
  22581. }
  22582. return function(t, i, r) {
  22583. return t = t || [], i = i || [], t.length <= i.length ? n(t, i, "added", "deleted", r) : n(i, t, "deleted", "added", r)
  22584. }
  22585. }();
  22586. s.b("utils.compareArrays", s.a.Pa),
  22587. function() {
  22588. function n(n) {
  22589. for (; n.length && !s.a.aa(n[0]);) n.splice(0, 1);
  22590. if (1 < n.length) {
  22591. for (var t = n[0], r = n[n.length - 1], i = [t]; t !== r;) {
  22592. if (t = t.nextSibling, !t) return;
  22593. i.push(t)
  22594. }
  22595. Array.prototype.splice.apply(n, [0, n.length].concat(i))
  22596. }
  22597. return n
  22598. }
  22599. function i(i, r, u, f, e) {
  22600. var o = [];
  22601. return i = s.j(function() {
  22602. var t = r(u, e, n(o)) || [];
  22603. 0 < o.length && (s.a.eb(o, t), f && s.q.I(f, null, [u, t, e]));
  22604. o.splice(0, o.length);
  22605. s.a.R(o, t)
  22606. }, null, {
  22607. $: i,
  22608. Qa: function() {
  22609. return !s.a.pb(o)
  22610. }
  22611. }), {
  22612. O: o,
  22613. j: i.ta() ? i : t
  22614. }
  22615. }
  22616. s.a.Aa = function(r, u, f, e, o) {
  22617. function rt(t, i) {
  22618. h = k[i];
  22619. nt !== i && (it[t] = h);
  22620. h.ra(nt++);
  22621. n(h.O);
  22622. g.push(h);
  22623. p.push(h)
  22624. }
  22625. function v(n, t) {
  22626. if (n)
  22627. for (var i = 0, r = t.length; i < r; i++) t[i] && s.a.p(t[i].O, function(r) {
  22628. n(r, i, t[i].X)
  22629. })
  22630. }
  22631. var c, y, ut;
  22632. u = u || [];
  22633. e = e || {};
  22634. var y = s.a.f.get(r, "setDomNodeChildrenFromArrayMapping_lastMappingResult") === t,
  22635. k = s.a.f.get(r, "setDomNodeChildrenFromArrayMapping_lastMappingResult") || [],
  22636. d = s.a.Z(k, function(n) {
  22637. return n.X
  22638. }),
  22639. l = s.a.Pa(d, u, e.dontLimitMoves),
  22640. g = [],
  22641. a = 0,
  22642. nt = 0,
  22643. tt = [],
  22644. p = [];
  22645. u = [];
  22646. for (var it = [], d = [], h, c = 0, w, b; w = l[c]; c++) switch (b = w.moved, w.status) {
  22647. case "deleted":
  22648. b === t && (h = k[a], h.j && h.j.B(), tt.push.apply(tt, n(h.O)), e.beforeRemove && (u[c] = h, p.push(h)));
  22649. a++;
  22650. break;
  22651. case "retained":
  22652. rt(c, a++);
  22653. break;
  22654. case "added":
  22655. b !== t ? rt(c, b) : (h = {
  22656. X: w.value,
  22657. ra: s.m(nt++)
  22658. }, g.push(h), p.push(h), y || (d[c] = h))
  22659. }
  22660. for (v(e.beforeMove, it), s.a.p(tt, e.beforeRemove ? s.H : s.removeNode), c = 0, y = s.e.firstChild(r); h = p[c]; c++) {
  22661. for (h.O || s.a.extend(h, i(r, f, h.X, o, h.ra)), a = 0; l = h.O[a]; y = l.nextSibling, ut = l, a++) l !== y && s.e.Va(r, l, ut);
  22662. !h.Fb && o && (o(h.X, h.O, h.ra), h.Fb = !0)
  22663. }
  22664. v(e.beforeRemove, u);
  22665. v(e.afterMove, it);
  22666. v(e.afterAdd, d);
  22667. s.a.f.set(r, "setDomNodeChildrenFromArrayMapping_lastMappingResult", g)
  22668. }
  22669. }();
  22670. s.b("utils.setDomNodeChildrenFromArrayMapping", s.a.Aa);
  22671. s.D = function() {
  22672. this.allowTemplateRewriting = !1
  22673. };
  22674. s.D.prototype = new s.v;
  22675. s.D.prototype.renderTemplateSource = function(n) {
  22676. var t = (9 > s.a.ca ? 0 : n.nodes) ? n.nodes() : null;
  22677. return t ? s.a.N(t.cloneNode(!0).childNodes) : (n = n.text(), s.a.xa(n))
  22678. };
  22679. s.D.sa = new s.D;
  22680. s.Ba(s.D.sa);
  22681. s.b("nativeTemplateEngine", s.D),
  22682. function() {
  22683. s.ua = function() {
  22684. var n = this.Ib = function() {
  22685. if ("undefined" == typeof i || !i.tmpl) return 0;
  22686. try {
  22687. if (0 <= i.tmpl.tag.tmpl.open.toString().indexOf("__")) return 2
  22688. } catch (n) {}
  22689. return 1
  22690. }();
  22691. this.renderTemplateSource = function(t, u, f) {
  22692. if (f = f || {}, 2 > n) throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");
  22693. var e = t.data("precompiled");
  22694. return e || (e = t.text() || "", e = i.template(null, "{{ko_with $item.koBindingContext}}" + e + "{{/ko_with}}"), t.data("precompiled", e)), t = [u.$data], u = i.extend({
  22695. koBindingContext: u
  22696. }, f.templateOptions), u = i.tmpl(e, t, u), u.appendTo(r.createElement("div")), i.fragments = {}, u
  22697. };
  22698. this.createJavaScriptEvaluatorBlock = function(n) {
  22699. return "{{ko_code ((function() { return " + n + " })()) }}"
  22700. };
  22701. this.addTemplate = function(n, t) {
  22702. r.write("<script type='text/html' id='" + n + "'>" + t + "<\/script>")
  22703. };
  22704. 0 < n && (i.tmpl.tag.ko_code = {
  22705. open: "__.push($1 || '');"
  22706. }, i.tmpl.tag.ko_with = {
  22707. open: "with($1) {",
  22708. close: "} "
  22709. })
  22710. };
  22711. s.ua.prototype = new s.v;
  22712. var n = new s.ua;
  22713. 0 < n.Ib && s.Ba(n);
  22714. s.b("jqueryTmplTemplateEngine", s.ua)
  22715. }()
  22716. })
  22717. })()
  22718. }();
  22719. ! function(n) {
  22720. "function" == typeof require && "object" == typeof exports && "object" == typeof module ? n(require("knockout"), require("jquery"), require("kendo")) : "function" == typeof define && define.amd ? define(["knockout", "jquery", "kendo"], n) : n(window.ko, window.jQuery, window.kendo)
  22721. }(function(n, t, i, r) {
  22722. var y;
  22723. i = i || window.kendo;
  22724. n.kendo = n.kendo || {};
  22725. n.kendo.BindingFactory = function() {
  22726. var u = this,
  22727. f;
  22728. this.createBinding = function(i) {
  22729. if (t()[i.parent || i.name]) {
  22730. var r = {};
  22731. r.init = function(n, t, f, e, o) {
  22732. var s = u.buildOptions(i, t);
  22733. return s.async === !0 || i.async === !0 && s.async !== !1 ? (setTimeout(function() {
  22734. r.setup(n, s, o)
  22735. }, 0), void 0) : (r.setup(n, s, o), s && s.useKOTemplates ? {
  22736. controlsDescendantBindings: !0
  22737. } : void 0)
  22738. };
  22739. r.setup = function(r, f, e) {
  22740. var o, s = t(r);
  22741. u.setupTemplates(i.templates, f, r, e);
  22742. o = u.getWidget(i, f, s);
  22743. u.handleEvents(f, i, r, o, e);
  22744. u.watchValues(o, f, i, r);
  22745. o.destroy && n.utils.domNodeDisposal.addDisposeCallback(r, function() {
  22746. o.destroy()
  22747. })
  22748. };
  22749. r.options = {};
  22750. r.widgetConfig = i;
  22751. n.bindingHandlers[i.bindingName || i.name] = r
  22752. }
  22753. };
  22754. this.buildOptions = function(t, r) {
  22755. var f = t.defaultOption,
  22756. e = n.utils.extend({}, n.bindingHandlers[t.name].options),
  22757. u = n.utils.unwrapObservable(r());
  22758. return u instanceof i.data.DataSource || "object" != typeof u || null === u || f && !(f in u) ? e[f] = r() : n.utils.extend(e, u), e
  22759. };
  22760. f = function(t, i) {
  22761. return function(r) {
  22762. return n.renderTemplate(t, i.createChildContext(r._raw && r._raw() || r))
  22763. }
  22764. };
  22765. this.setupTemplates = function(t, i, r, u) {
  22766. var e, h, o, s;
  22767. if (t && i && i.useKOTemplates) {
  22768. for (e = 0, h = t.length; h > e; e++) o = t[e], i[o] && (i[o] = f(i[o], u));
  22769. s = i.dataBound;
  22770. i.dataBound = function() {
  22771. n.memoization.unmemoizeDomNodeAndDescendants(r);
  22772. s && s.apply(this, arguments)
  22773. }
  22774. }
  22775. };
  22776. this.unwrapOneLevel = function(t) {
  22777. var r, u = {};
  22778. if (t)
  22779. if (t instanceof i.data.DataSource) u = t;
  22780. else if ("object" == typeof t)
  22781. for (r in t) u[r] = n.utils.unwrapObservable(t[r]);
  22782. return u
  22783. };
  22784. this.getWidget = function(t, i, r) {
  22785. var u, f;
  22786. return t.parent ? (f = r.closest("[data-bind*='" + t.parent + ":']"), u = f.length ? f.data(t.parent) : null) : u = r[t.name](this.unwrapOneLevel(i)).data(t.name), n.isObservable(i.widget) && i.widget(u), u
  22787. };
  22788. this.watchValues = function(n, t, i, r) {
  22789. var f, e = i.watch;
  22790. if (e)
  22791. for (f in e) e.hasOwnProperty(f) && u.watchOneValue(f, n, t, i, r)
  22792. };
  22793. this.watchOneValue = function(i, u, f, e, o) {
  22794. var s = n.computed({
  22795. read: function() {
  22796. var a, l, s = e.watch[i],
  22797. h = n.utils.unwrapObservable(f[i]),
  22798. c = e.parent ? [o] : [];
  22799. t.isArray(s) ? s = u[h ? s[0] : s[1]] : "string" == typeof s ? s = u[s] : l = !0;
  22800. s && f[i] !== r && (l ? c.push(h, f) : (a = s.apply(u, c), c.push(h)), (l || a !== h) && s.apply(u, c))
  22801. },
  22802. disposeWhenNodeIsRemoved: o
  22803. }).extend({
  22804. throttle: f.throttle || 0 === f.throttle ? f.throttle : 1
  22805. });
  22806. n.isObservable(f[i]) || s.dispose()
  22807. };
  22808. this.handleEvents = function(n, t, i, r, f) {
  22809. var o, e, s = t.events;
  22810. if (s)
  22811. for (o in s) s.hasOwnProperty(o) && (e = s[o], "string" == typeof e && (e = {
  22812. value: e,
  22813. writeTo: e
  22814. }), u.handleOneEvent(o, e, n, i, r, t.childProp, f))
  22815. };
  22816. this.handleOneEvent = function(t, i, r, u, f, e, o) {
  22817. var s = "function" == typeof i ? i : r[i.call];
  22818. "function" == typeof i ? s = s.bind(o.$data, r) : i.call && "function" == typeof r[i.call] ? s = r[i.call].bind(o.$data, o.$data) : i.writeTo && n.isWriteableObservable(r[i.writeTo]) && (s = function(n) {
  22819. var t, f;
  22820. e && n[e] && n[e] !== u || (t = i.value, f = "string" == typeof t && this[t] ? this[t](e && u) : t, r[i.writeTo](f))
  22821. });
  22822. s && f.bind(t, s)
  22823. }
  22824. };
  22825. n.kendo.bindingFactory = new n.kendo.BindingFactory;
  22826. n.kendo.setDataSource = function(t, r, u) {
  22827. var f, e;
  22828. return r instanceof i.data.DataSource ? (t.setDataSource(r), void 0) : (u && u.useKOTemplates || (f = n.mapping && r && r.__ko_mapping__, e = r && f ? n.mapping.toJS(r) : n.toJS(r)), t.dataSource.data(e || r), void 0)
  22829. },
  22830. function() {
  22831. var n = i.data.ObservableArray.fn.wrap;
  22832. i.data.ObservableArray.fn.wrap = function(t) {
  22833. var i = n.apply(this, arguments);
  22834. return i._raw = function() {
  22835. return t
  22836. }, i
  22837. }
  22838. }();
  22839. var c = function(t) {
  22840. return function(i) {
  22841. i && (n.utils.extend(this.options[t], i), this.redraw(), this.value(.001 + this.value()))
  22842. }
  22843. },
  22844. f = n.kendo.bindingFactory.createBinding.bind(n.kendo.bindingFactory),
  22845. d = "clicked",
  22846. s = "close",
  22847. p = "collapse",
  22848. g = "content",
  22849. w = "data",
  22850. e = "enable",
  22851. b = "expand",
  22852. l = "expanded",
  22853. rt = "error",
  22854. ut = "info",
  22855. o = "isOpen",
  22856. a = "max",
  22857. v = "min",
  22858. h = "open",
  22859. nt = "search",
  22860. tt = "selected",
  22861. ft = "success",
  22862. it = "size",
  22863. u = "value",
  22864. k = "values",
  22865. et = "warning";
  22866. f({
  22867. name: "kendoAutoComplete",
  22868. events: {
  22869. change: u,
  22870. open: {
  22871. writeTo: o,
  22872. value: !0
  22873. },
  22874. close: {
  22875. writeTo: o,
  22876. value: !1
  22877. }
  22878. },
  22879. watch: {
  22880. enabled: e,
  22881. search: [nt, s],
  22882. data: function(t) {
  22883. n.kendo.setDataSource(this, t)
  22884. },
  22885. value: u
  22886. }
  22887. });
  22888. f({
  22889. name: "kendoButton",
  22890. defaultOption: d,
  22891. events: {
  22892. click: {
  22893. call: d
  22894. }
  22895. },
  22896. watch: {
  22897. enabled: e
  22898. }
  22899. });
  22900. f({
  22901. name: "kendoCalendar",
  22902. defaultOption: u,
  22903. events: {
  22904. change: u
  22905. },
  22906. watch: {
  22907. max: a,
  22908. min: v,
  22909. value: u
  22910. }
  22911. });
  22912. f({
  22913. name: "kendoColorPicker",
  22914. events: {
  22915. change: u,
  22916. open: {
  22917. writeTo: o,
  22918. value: !0
  22919. },
  22920. close: {
  22921. writeTo: o,
  22922. value: !1
  22923. }
  22924. },
  22925. watch: {
  22926. enabled: e,
  22927. value: u,
  22928. color: u,
  22929. palette: "palette"
  22930. }
  22931. });
  22932. f({
  22933. name: "kendoComboBox",
  22934. events: {
  22935. change: u,
  22936. open: {
  22937. writeTo: o,
  22938. value: !0
  22939. },
  22940. close: {
  22941. writeTo: o,
  22942. value: !1
  22943. }
  22944. },
  22945. watch: {
  22946. enabled: e,
  22947. isOpen: [h, s],
  22948. data: function(t) {
  22949. n.kendo.setDataSource(this, t)
  22950. },
  22951. value: u
  22952. }
  22953. });
  22954. f({
  22955. name: "kendoDatePicker",
  22956. defaultOption: u,
  22957. events: {
  22958. change: u,
  22959. open: {
  22960. writeTo: o,
  22961. value: !0
  22962. },
  22963. close: {
  22964. writeTo: o,
  22965. value: !1
  22966. }
  22967. },
  22968. watch: {
  22969. enabled: e,
  22970. max: a,
  22971. min: v,
  22972. value: u,
  22973. isOpen: [h, s]
  22974. }
  22975. });
  22976. f({
  22977. name: "kendoDateTimePicker",
  22978. defaultOption: u,
  22979. events: {
  22980. change: u,
  22981. open: {
  22982. writeTo: o,
  22983. value: !0
  22984. },
  22985. close: {
  22986. writeTo: o,
  22987. value: !1
  22988. }
  22989. },
  22990. watch: {
  22991. enabled: e,
  22992. max: a,
  22993. min: v,
  22994. value: u,
  22995. isOpen: [h, s]
  22996. }
  22997. });
  22998. f({
  22999. name: "kendoDropDownList",
  23000. events: {
  23001. change: u,
  23002. open: {
  23003. writeTo: o,
  23004. value: !0
  23005. },
  23006. close: {
  23007. writeTo: o,
  23008. value: !1
  23009. }
  23010. },
  23011. watch: {
  23012. enabled: e,
  23013. isOpen: [h, s],
  23014. data: function(t) {
  23015. n.kendo.setDataSource(this, t);
  23016. t.length && this.options.optionLabel && this.select() < 0 && this.select(0)
  23017. },
  23018. value: u
  23019. }
  23020. });
  23021. f({
  23022. name: "kendoEditor",
  23023. defaultOption: u,
  23024. events: {
  23025. change: u
  23026. },
  23027. watch: {
  23028. enabled: e,
  23029. value: u
  23030. }
  23031. });
  23032. f({
  23033. name: "kendoGrid",
  23034. defaultOption: w,
  23035. watch: {
  23036. data: function(t, i) {
  23037. n.kendo.setDataSource(this, t, i)
  23038. }
  23039. },
  23040. templates: ["rowTemplate", "altRowTemplate"]
  23041. });
  23042. f({
  23043. name: "kendoListView",
  23044. defaultOption: w,
  23045. watch: {
  23046. data: function(t, i) {
  23047. n.kendo.setDataSource(this, t, i)
  23048. }
  23049. },
  23050. templates: ["template"]
  23051. });
  23052. f({
  23053. name: "kendoMaskedTextBox",
  23054. defaultOption: u,
  23055. events: {
  23056. change: u
  23057. },
  23058. watch: {
  23059. enabled: e,
  23060. isReadOnly: "readonly",
  23061. value: u
  23062. }
  23063. });
  23064. f({
  23065. name: "kendoMenu",
  23066. async: !0
  23067. });
  23068. f({
  23069. name: "kendoMenuItem",
  23070. parent: "kendoMenu",
  23071. watch: {
  23072. enabled: e,
  23073. isOpen: [h, s]
  23074. },
  23075. async: !0
  23076. });
  23077. f({
  23078. name: "kendoMultiSelect",
  23079. events: {
  23080. change: u,
  23081. open: {
  23082. writeTo: o,
  23083. value: !0
  23084. },
  23085. close: {
  23086. writeTo: o,
  23087. value: !1
  23088. }
  23089. },
  23090. watch: {
  23091. enabled: e,
  23092. search: [nt, s],
  23093. data: function(t) {
  23094. n.kendo.setDataSource(this, t)
  23095. },
  23096. value: u
  23097. }
  23098. });
  23099. y = function(n, t) {
  23100. t || 0 === t ? this.show(t, n) : this.hide()
  23101. };
  23102. f({
  23103. name: "kendoNotification",
  23104. watch: {
  23105. error: function(n) {
  23106. y.call(this, rt, n)
  23107. },
  23108. info: function(n) {
  23109. y.call(this, ut, n)
  23110. },
  23111. success: function(n) {
  23112. y.call(this, ft, n)
  23113. },
  23114. warning: function(n) {
  23115. y.call(this, et, n)
  23116. }
  23117. }
  23118. });
  23119. f({
  23120. name: "kendoNumericTextBox",
  23121. defaultOption: u,
  23122. events: {
  23123. change: u
  23124. },
  23125. watch: {
  23126. enabled: e,
  23127. value: u,
  23128. max: function(n) {
  23129. this.options.max = n;
  23130. var t = this.value();
  23131. (t || 0 === t) && t > n && this.value(n)
  23132. },
  23133. min: function(n) {
  23134. this.options.min = n;
  23135. var t = this.value();
  23136. (t || 0 === t) && n > t && this.value(n)
  23137. }
  23138. }
  23139. });
  23140. f({
  23141. name: "kendoPanelBar",
  23142. async: !0
  23143. });
  23144. f({
  23145. name: "kendoPanelItem",
  23146. parent: "kendoPanelBar",
  23147. watch: {
  23148. enabled: e,
  23149. expanded: [b, p],
  23150. selected: ["select"]
  23151. },
  23152. childProp: "item",
  23153. events: {
  23154. expand: {
  23155. writeTo: l,
  23156. value: !0
  23157. },
  23158. collapse: {
  23159. writeTo: l,
  23160. value: !1
  23161. },
  23162. select: {
  23163. writeTo: tt,
  23164. value: u
  23165. }
  23166. },
  23167. async: !0
  23168. });
  23169. f({
  23170. name: "kendoProgressBar",
  23171. defaultOption: u,
  23172. events: {
  23173. change: u
  23174. },
  23175. watch: {
  23176. enabled: e,
  23177. value: u
  23178. }
  23179. });
  23180. f({
  23181. name: "kendoRangeSlider",
  23182. defaultOption: k,
  23183. events: {
  23184. change: k
  23185. },
  23186. watch: {
  23187. values: k,
  23188. enabled: e
  23189. }
  23190. });
  23191. f({
  23192. async: !0,
  23193. name: "kendoScheduler",
  23194. watch: {
  23195. data: function(t, i) {
  23196. n.kendo.setDataSource(this, t, i)
  23197. }
  23198. }
  23199. });
  23200. f({
  23201. name: "kendoSlider",
  23202. defaultOption: u,
  23203. events: {
  23204. change: u
  23205. },
  23206. watch: {
  23207. value: u,
  23208. enabled: e
  23209. }
  23210. });
  23211. f({
  23212. name: "kendoSortable",
  23213. defaultOption: w,
  23214. events: {
  23215. end: function(i, r) {
  23216. var u = "__ko_kendo_sortable_data__",
  23217. f = "receive" !== r.action ? n.dataFor(r.item[0]) : r.draggableEvent[u],
  23218. o = i.data,
  23219. e = i.data;
  23220. ("sort" === r.action || "remove" === r.action) && (e.splice(r.oldIndex, 1), "remove" === r.action && (r.draggableEvent[u] = f));
  23221. ("sort" === r.action || "receive" === r.action) && (e.splice(r.newIndex, 0, f), delete r.draggableEvent[u], t(r.draggableEvent.target).hide(), r.preventDefault());
  23222. o.valueHasMutated()
  23223. }
  23224. }
  23225. });
  23226. f({
  23227. name: "kendoSplitter",
  23228. async: !0
  23229. });
  23230. f({
  23231. name: "kendoSplitterPane",
  23232. parent: "kendoSplitter",
  23233. watch: {
  23234. max: a,
  23235. min: v,
  23236. size: it,
  23237. expanded: [b, p]
  23238. },
  23239. childProp: "pane",
  23240. events: {
  23241. collapse: {
  23242. writeTo: l,
  23243. value: !1
  23244. },
  23245. expand: {
  23246. writeTo: l,
  23247. value: !0
  23248. },
  23249. resize: it
  23250. },
  23251. async: !0
  23252. });
  23253. f({
  23254. name: "kendoTabStrip",
  23255. async: !0
  23256. });
  23257. f({
  23258. name: "kendoTab",
  23259. parent: "kendoTabStrip",
  23260. watch: {
  23261. enabled: e
  23262. },
  23263. childProp: "item",
  23264. async: !0
  23265. });
  23266. f({
  23267. name: "kendoTooltip",
  23268. events: {},
  23269. watch: {
  23270. content: g,
  23271. filter: "filter"
  23272. }
  23273. });
  23274. f({
  23275. name: "kendoTimePicker",
  23276. defaultOption: u,
  23277. events: {
  23278. change: u
  23279. },
  23280. watch: {
  23281. max: a,
  23282. min: v,
  23283. value: u,
  23284. enabled: e,
  23285. isOpen: [h, s]
  23286. }
  23287. });
  23288. f({
  23289. name: "kendoTreeView",
  23290. async: !0
  23291. });
  23292. f({
  23293. name: "kendoTreeItem",
  23294. parent: "kendoTreeView",
  23295. watch: {
  23296. enabled: e,
  23297. expanded: [b, p],
  23298. selected: function(n, t) {
  23299. t ? this.select(n) : this.select()[0] == n && this.select(null)
  23300. }
  23301. },
  23302. childProp: "node",
  23303. events: {
  23304. collapse: {
  23305. writeTo: l,
  23306. value: !1
  23307. },
  23308. expand: {
  23309. writeTo: l,
  23310. value: !0
  23311. },
  23312. select: {
  23313. writeTo: tt,
  23314. value: !0
  23315. }
  23316. },
  23317. async: !0
  23318. });
  23319. f({
  23320. name: "kendoUpload",
  23321. watch: {
  23322. enabled: e
  23323. }
  23324. });
  23325. f({
  23326. async: !0,
  23327. name: "kendoWindow",
  23328. events: {
  23329. open: {
  23330. writeTo: o,
  23331. value: !0
  23332. },
  23333. close: {
  23334. writeTo: o,
  23335. value: !1
  23336. }
  23337. },
  23338. watch: {
  23339. content: g,
  23340. title: "title",
  23341. isOpen: [h, s]
  23342. }
  23343. });
  23344. f({
  23345. name: "kendoChart",
  23346. watch: {
  23347. data: function(t) {
  23348. n.kendo.setDataSource(this, t)
  23349. }
  23350. }
  23351. });
  23352. f({
  23353. name: "kendoLinearGauge",
  23354. defaultOption: u,
  23355. watch: {
  23356. value: u,
  23357. gaugeArea: c("gaugeArea"),
  23358. pointer: c("pointer"),
  23359. scale: c("scale")
  23360. }
  23361. });
  23362. f({
  23363. name: "kendoRadialGauge",
  23364. defaultOption: u,
  23365. watch: {
  23366. value: u,
  23367. gaugeArea: c("gaugeArea"),
  23368. pointer: c("pointer"),
  23369. scale: c("scale")
  23370. }
  23371. })
  23372. });
  23373. Raphael = function() {
  23374. function n() {
  23375. var r;
  23376. if (n.is(arguments[0], et)) {
  23377. for (var i = arguments[0], f = rr[b](n, i.splice(0, 3 + n.is(i[0], nt))), e = f.set(), u = 0, o = i[t]; u < o; u++) r = i[u] || {}, ku.test(r.type) && e[a](f[r.type]().attr(r));
  23378. return e
  23379. }
  23380. return rr[b](n, arguments)
  23381. }
  23382. function y() {}
  23383. function si(t) {
  23384. var u, i;
  23385. return n.vml ? (u = /^\s+|\s+$/g, si = ut(function(n) {
  23386. var f, t, i;
  23387. n = (n + r)[w](u, r);
  23388. try {
  23389. t = new st.ActiveXObject("htmlfile");
  23390. t.write("<body>");
  23391. t.close();
  23392. f = t.body
  23393. } catch (e) {
  23394. f = st.createPopup().document.body
  23395. }
  23396. t = f.createTextRange();
  23397. try {
  23398. return f.style.color = n, i = t.queryCommandValue("ForeColor"), i = (i & 255) << 16 | i & 65280 | (i & 16711680) >>> 16, "#" + ("000000" + i[d](16)).slice(-6)
  23399. } catch (o) {
  23400. return "none"
  23401. }
  23402. })) : (i = c.createElement("i"), i.title = "Raphaël Colour Picker", i.style.display = "none", c.body[o](i), si = ut(function(n) {
  23403. return i.style.color = n, c.defaultView.getComputedStyle(i, r).getPropertyValue("color")
  23404. })), si(t)
  23405. }
  23406. function nf() {
  23407. return "hsb(" + [this.h, this.s, this.b] + ")"
  23408. }
  23409. function tf() {
  23410. return this.hex
  23411. }
  23412. function ut(n, r, u) {
  23413. function f() {
  23414. var c = Array[i].slice.call(arguments, 0),
  23415. e = c[tt]("►"),
  23416. o = f.cache = f.cache || {},
  23417. h = f.count = f.count || [];
  23418. return o[s](e) ? u ? u(o[e]) : o[e] : (h[t] >= 1e3 && delete o[h.shift()], h[a](e), o[e] = n[b](r, c), u ? u(o[e]) : o[e])
  23419. }
  23420. return f
  23421. }
  23422. function ci(i) {
  23423. var f = [],
  23424. r, e, u, o;
  23425. for (n.is(i, et) && n.is(i && i[0], et) || (i = n.parsePathString(i)), r = 0, e = i[t]; r < e; r++)
  23426. for (f[r] = [], u = 0, o = i[r][t]; u < o; u++) f[r][u] = i[r][u];
  23427. return f[d] = n._path2string, f
  23428. }
  23429. function li(n, t, i, r) {
  23430. return [n, t, i, r, i, r]
  23431. }
  23432. function vr(n, t, i, r, u, f) {
  23433. var e = 1 / 3,
  23434. o = 2 / 3;
  23435. return [e * n + o * i, e * t + o * r, e * u + o * i, e * f + o * r, u, f]
  23436. }
  23437. function yr(n, i, r, u, f, o, s, h, c, l) {
  23438. var y = e.PI,
  23439. it = y * 120 / 180,
  23440. g = y / 180 * (+f || 0),
  23441. b = [],
  23442. a, nt = ut(function(n, t, i) {
  23443. var r = n * e.cos(i) - t * e.sin(i);
  23444. return n = n * e.sin(i) + t * e.cos(i), {
  23445. x: r,
  23446. y: n
  23447. }
  23448. }),
  23449. d, w, v;
  23450. if (l ? (v = l[0], a = l[1], o = l[2], w = l[3]) : (a = nt(n, i, -g), n = a.x, i = a.y, a = nt(h, c, -g), h = a.x, c = a.y, e.cos(y / 180 * f), e.sin(y / 180 * f), a = (n - h) / 2, v = (i - c) / 2, w = a * a / (r * r) + v * v / (u * u), w > 1 && (w = e.sqrt(w), r = w * r, u = w * u), w = r * r, d = u * u, w = (o == s ? -1 : 1) * e.sqrt(e.abs((w * d - w * v * v - d * a * a) / (w * v * v + d * a * a))), o = w * r * v / u + (n + h) / 2, w = w * -u * a / r + (i + c) / 2, v = e.asin(((i - w) / u).toFixed(7)), a = e.asin(((c - w) / u).toFixed(7)), v = n < o ? y - v : v, a = h < o ? y - a : a, v < 0 && (v = y * 2 + v), a < 0 && (a = y * 2 + a), s && v > a && (v -= y * 2), !s && a > v && (a -= y * 2)), y = a - v, e.abs(y) > it && (b = a, y = h, d = c, a = v + it * (s && a > v ? 1 : -1), h = o + r * e.cos(a), c = w + u * e.sin(a), b = yr(h, c, r, u, f, 0, s, y, d, [a, b, o, w])), y = a - v, f = e.cos(v), o = e.sin(v), s = e.cos(a), a = e.sin(a), y = e.tan(y / 4), r = 4 / 3 * r * y, y = 4 / 3 * u * y, u = [n, i], n = [n + r * o, i - y * f], i = [h + r * a, c - y * s], h = [h, c], n[0] = 2 * u[0] - n[0], n[1] = 2 * u[1] - n[1], l) return [n, i, h][k](b);
  23451. for (b = [n, i, h][k](b)[tt]()[p](","), l = [], h = 0, c = b[t]; h < c; h++) l[h] = h % 2 ? nt(b[h - 1], b[h], g).y : nt(b[h], b[h + 1], g).x;
  23452. return l
  23453. }
  23454. function ii(n, t, i, r, u, f, e, o, s) {
  23455. var h = 1 - s;
  23456. return {
  23457. x: l(h, 3) * n + l(h, 2) * 3 * s * i + h * 3 * s * s * u + l(s, 3) * e,
  23458. y: l(h, 3) * t + l(h, 2) * 3 * s * r + h * 3 * s * s * f + l(s, 3) * o
  23459. }
  23460. }
  23461. function wr(t, i, r, u) {
  23462. if (n.is(t, wt) || n.is(t, "object")) {
  23463. if (t = n.is(t, wt) ? c.getElementById(t) : t, t.tagName) return i == null ? {
  23464. container: t,
  23465. width: t.style.pixelWidth || t.offsetWidth,
  23466. height: t.style.pixelHeight || t.offsetHeight
  23467. } : {
  23468. container: t,
  23469. width: i,
  23470. height: r
  23471. }
  23472. } else return {
  23473. container: 1,
  23474. x: t,
  23475. y: i,
  23476. width: r,
  23477. height: u
  23478. }
  23479. }
  23480. function nr(n, t) {
  23481. var r = this;
  23482. for (var i in t)
  23483. if (t[s](i) && !(i in n)) switch (typeof t[i]) {
  23484. case "function":
  23485. (function(t) {
  23486. n[i] = n === r ? t : function() {
  23487. return t[b](r, arguments)
  23488. }
  23489. })(t[i]);
  23490. break;
  23491. case "object":
  23492. n[i] = n[i] || {};
  23493. nr.call(this, n[i], t[i]);
  23494. break;
  23495. default:
  23496. n[i] = t[i]
  23497. }
  23498. }
  23499. function gt(n, t) {
  23500. n == t.top && (t.top = n.prev);
  23501. n == t.bottom && (t.bottom = n.next);
  23502. n.next && (n.next.prev = n.prev);
  23503. n.prev && (n.prev.next = n.next)
  23504. }
  23505. function br(n, t) {
  23506. t.top !== n && (gt(n, t), n.next = null, n.prev = t.top, t.top.next = n, t.top = n)
  23507. }
  23508. function kr(n, t) {
  23509. t.bottom !== n && (gt(n, t), n.next = t.bottom, n.prev = null, t.bottom.prev = n, t.bottom = n)
  23510. }
  23511. function dr(n, t, i) {
  23512. gt(n, i);
  23513. t == i.top && (i.top = n);
  23514. t.next && (t.next.prev = n);
  23515. n.next = t.next;
  23516. n.prev = t;
  23517. t.next = n
  23518. }
  23519. function gr(n, t, i) {
  23520. gt(n, i);
  23521. t == i.bottom && (i.bottom = n);
  23522. t.prev && (t.prev.next = n);
  23523. n.prev = t.prev;
  23524. t.prev = n;
  23525. n.next = t
  23526. }
  23527. function nu(n) {
  23528. return function() {
  23529. throw new Error("Raphaël: you are calling to method “" + n + "” of removed object");
  23530. }
  23531. }
  23532. function cf() {
  23533. this.returnValue = !1
  23534. }
  23535. function lf() {
  23536. return this.originalEvent.preventDefault()
  23537. }
  23538. function af() {
  23539. this.cancelBubble = !0
  23540. }
  23541. function vf() {
  23542. return this.originalEvent.stopPropagation()
  23543. }
  23544. function vu() {
  23545. return this.x + g + this.y
  23546. }
  23547. function fr(t, i) {
  23548. return function(r, u, f) {
  23549. r = ai(r);
  23550. for (var o, s, e, l, h = "", a = {}, c = 0, v = 0, y = r.length; v < y; v++) {
  23551. if (e = r[v], e[0] == "M") o = +e[1], s = +e[2];
  23552. else {
  23553. if (l = yf(o, s, e[1], e[2], e[3], e[4], e[5], e[6]), c + l > u) {
  23554. if (i && !a.start) {
  23555. if (o = ur(o, s, e[1], e[2], e[3], e[4], e[5], e[6], u - c), h += ["C", o.start.x, o.start.y, o.m.x, o.m.y, o.x, o.y], f) return h;
  23556. a.start = h;
  23557. h = ["M", o.x, o.y + "C", o.n.x, o.n.y, o.end.x, o.end.y, e[5], e[6]][tt]();
  23558. c += l;
  23559. o = +e[5];
  23560. s = +e[6];
  23561. continue
  23562. }
  23563. if (!t && !i) return o = ur(o, s, e[1], e[2], e[3], e[4], e[5], e[6], u - c), {
  23564. x: o.x,
  23565. y: o.y,
  23566. alpha: o.alpha
  23567. }
  23568. }
  23569. c += l;
  23570. o = +e[5];
  23571. s = +e[6]
  23572. }
  23573. h += e
  23574. }
  23575. return a.end = h, o = t ? c : i ? a : n.findDotsAtSegment(o, s, e[1], e[2], e[3], e[4], e[5], e[6], 1), o.alpha && (o = {
  23576. x: o.x,
  23577. y: o.y,
  23578. alpha: o.alpha
  23579. }), o
  23580. }
  23581. }
  23582. function pu() {
  23583. var et = +new Date,
  23584. p, l, i, ut, k, ft;
  23585. for (p in rt)
  23586. if (p != "length" && rt[s](p))
  23587. if (l = rt[p], l.stop || l.el.removed) delete rt[p], rt[t]--;
  23588. else {
  23589. var w = et - l.start,
  23590. a = l.ms,
  23591. u = l.easing,
  23592. o = l.from,
  23593. f = l.diff,
  23594. h = l.to,
  23595. b = l.t,
  23596. d = l.prev || 0,
  23597. c = l.el,
  23598. y = l.callback,
  23599. it = {},
  23600. e;
  23601. if (w < a) {
  23602. y = n.easing_formulas[u] ? n.easing_formulas[u](w / a) : w / a;
  23603. for (i in o)
  23604. if (o[s](i)) {
  23605. switch (di[i]) {
  23606. case "along":
  23607. e = y * a * f[i];
  23608. h.back && (e = h.len - e);
  23609. u = vi(h[i], e);
  23610. c.translate(f.sx - f.x || 0, f.sy - f.y || 0);
  23611. f.x = u.x;
  23612. f.y = u.y;
  23613. c.translate(u.x - f.sx, u.y - f.sy);
  23614. h.rot && c.rotate(f.r + u.alpha, u.x, u.y);
  23615. break;
  23616. case nt:
  23617. e = +o[i] + y * a * f[i];
  23618. break;
  23619. case "colour":
  23620. e = "rgb(" + [or(v(o[i].r + y * a * f[i].r)), or(v(o[i].g + y * a * f[i].g)), or(v(o[i].b + y * a * f[i].b))][tt](",") + ")";
  23621. break;
  23622. case "path":
  23623. for (e = [], u = 0, ut = o[i][t]; u < ut; u++) {
  23624. for (e[u] = [o[i][u][0]], k = 1, ft = o[i][u][t]; k < ft; k++) e[u][k] = +o[i][u][k] + y * a * f[i][u][k];
  23625. e[u] = e[u][tt](g)
  23626. }
  23627. e = e[tt](g);
  23628. break;
  23629. case "csv":
  23630. switch (i) {
  23631. case "translation":
  23632. e = f[i][0] * (w - d);
  23633. u = f[i][1] * (w - d);
  23634. b.x += e;
  23635. b.y += u;
  23636. e = e + g + u;
  23637. break;
  23638. case "rotation":
  23639. e = +o[i][0] + y * a * f[i][0];
  23640. o[i][1] && (e += "," + o[i][1] + "," + o[i][2]);
  23641. break;
  23642. case "scale":
  23643. e = [+o[i][0] + y * a * f[i][0], +o[i][1] + y * a * f[i][1], 2 in h[i] ? h[i][2] : r, 3 in h[i] ? h[i][3] : r][tt](g);
  23644. break;
  23645. case "clip-rect":
  23646. for (e = [], u = 4; u--;) e[u] = +o[i][u] + y * a * f[i][u]
  23647. }
  23648. }
  23649. it[i] = e
  23650. }
  23651. c.attr(it);
  23652. c._run && c._run.call(c)
  23653. } else h.along && (u = vi(h.along, h.len * !h.back), c.translate(f.sx - (f.x || 0) + u.x - f.sx, f.sy - (f.y || 0) + u.y - f.sy), h.rot && c.rotate(f.r + u.alpha, u.x, u.y)), (b.x || b.y) && c.translate(-b.x, -b.y), h.scale && (h.scale += r), c.attr(h), delete rt[p], rt[t]--, c.in_animation = null, n.is(y, "function") && y.call(c);
  23654. l.prev = w
  23655. }
  23656. n.svg && c && c.paper && c.paper.safari();
  23657. rt[t] && st.setTimeout(pu)
  23658. }
  23659. function or(n) {
  23660. return ht(lt(n, 255), 0)
  23661. }
  23662. function yi(n, t) {
  23663. if (n == null) return {
  23664. x: this._.tx,
  23665. y: this._.ty,
  23666. toString: vu
  23667. };
  23668. this._.tx += +n;
  23669. this._.ty += +t;
  23670. switch (this.type) {
  23671. case "circle":
  23672. case "ellipse":
  23673. this.attr({
  23674. cx: +n + this.attrs.cx,
  23675. cy: +t + this.attrs.cy
  23676. });
  23677. break;
  23678. case "rect":
  23679. case "image":
  23680. case "text":
  23681. this.attr({
  23682. x: +n + this.attrs.x,
  23683. y: +t + this.attrs.y
  23684. });
  23685. break;
  23686. case "path":
  23687. var i = gi(this.attrs.path);
  23688. i[0][1] += +n;
  23689. i[0][2] += +t;
  23690. this.attr({
  23691. path: i
  23692. })
  23693. }
  23694. return this
  23695. }
  23696. function wu(t) {
  23697. return function(i, r, f, e) {
  23698. var o = {
  23699. back: t
  23700. };
  23701. return n.is(f, "function") ? e = f : o.rot = f, i && i.constructor == u && (i = i.attrs.path), i && (o.along = i), this.animate(o, r, e)
  23702. }
  23703. }
  23704. function ct(n) {
  23705. if (this.items = [], this[t] = 0, this.type = "set", n)
  23706. for (var i = 0, r = n[t]; i < r; i++) n[i] && (n[i].constructor == u || n[i].constructor == ct) && (this[this.items[t]] = this.items[this.items[t]] = n[i], this[t]++)
  23707. }
  23708. var bt, lr, ar, ti, gi, dt, tr, f, cu, it, au, ur, rt, pi, bu;
  23709. n.version = "1.4.3";
  23710. var ft = /[, ]+/,
  23711. ku = /^(circle|rect|path|ellipse|text|image)$/,
  23712. i = "prototype",
  23713. s = "hasOwnProperty",
  23714. c = document,
  23715. st = window,
  23716. sr = {
  23717. was: Object[i][s].call(st, "Raphael"),
  23718. is: st.Raphael
  23719. };
  23720. var o = "appendChild",
  23721. b = "apply",
  23722. k = "concat",
  23723. wi = "createTouch" in c,
  23724. r = "",
  23725. g = " ",
  23726. p = "split",
  23727. hr = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend orientationchange touchcancel gesturestart gesturechange gestureend" [p](g),
  23728. bi = {
  23729. mousedown: "touchstart",
  23730. mousemove: "touchmove",
  23731. mouseup: "touchend"
  23732. },
  23733. tt = "join",
  23734. t = "length",
  23735. yt = String[i].toLowerCase,
  23736. e = Math,
  23737. ht = e.max,
  23738. lt = e.min,
  23739. nt = "number",
  23740. wt = "string",
  23741. et = "array",
  23742. d = "toString",
  23743. at = "fill",
  23744. du = Object[i][d],
  23745. l = e.pow,
  23746. a = "push",
  23747. kt = /^(?=[\da-f]$)/,
  23748. cr = /^url\(['"]?([^\)]+?)['"]?\)$/i,
  23749. gu = /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+(?:\s*,\s*[\d\.]+)?)\s*\)|rgba?\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%(?:\s*,\s*[\d\.]+%))\s*\)|hs[bl]\(\s*([\d\.]+\s*,\s*[\d\.]+\s*,\s*[\d\.]+)\s*\)|hs[bl]\(\s*([\d\.]+%\s*,\s*[\d\.]+%\s*,\s*[\d\.]+%)\s*\))\s*$/i,
  23750. v = e.round,
  23751. ot = "setAttribute",
  23752. h = parseFloat,
  23753. pt = parseInt,
  23754. ki = " progid:DXImageTransform.Microsoft",
  23755. ei = String[i].toUpperCase,
  23756. oi = {
  23757. blur: 0,
  23758. "clip-rect": "0 0 1e9 1e9",
  23759. cursor: "default",
  23760. cx: 0,
  23761. cy: 0,
  23762. fill: "#fff",
  23763. "fill-opacity": 1,
  23764. font: '10px "Arial"',
  23765. "font-family": '"Arial"',
  23766. "font-size": "10",
  23767. "font-style": "normal",
  23768. "font-weight": 400,
  23769. gradient: 0,
  23770. height: 0,
  23771. href: "http://raphaeljs.com/",
  23772. opacity: 1,
  23773. path: "M0,0",
  23774. r: 0,
  23775. rotation: 0,
  23776. rx: 0,
  23777. ry: 0,
  23778. scale: "1 1",
  23779. src: "",
  23780. stroke: "#000",
  23781. "stroke-dasharray": "",
  23782. "stroke-linecap": "butt",
  23783. "stroke-linejoin": "butt",
  23784. "stroke-miterlimit": 0,
  23785. "stroke-opacity": 1,
  23786. "stroke-width": 1,
  23787. target: "_blank",
  23788. "text-anchor": "middle",
  23789. title: "Raphael",
  23790. translation: "0 0",
  23791. width: 0,
  23792. x: 0,
  23793. y: 0
  23794. },
  23795. di = {
  23796. along: "along",
  23797. blur: nt,
  23798. "clip-rect": "csv",
  23799. cx: nt,
  23800. cy: nt,
  23801. fill: "colour",
  23802. "fill-opacity": nt,
  23803. "font-size": nt,
  23804. height: nt,
  23805. opacity: nt,
  23806. path: "path",
  23807. r: nt,
  23808. rotation: "csv",
  23809. rx: nt,
  23810. ry: nt,
  23811. scale: "csv",
  23812. stroke: "colour",
  23813. "stroke-opacity": nt,
  23814. "stroke-width": nt,
  23815. translation: "csv",
  23816. width: nt,
  23817. x: nt,
  23818. y: nt
  23819. },
  23820. w = "replace";
  23821. if (n.type = st.SVGAngle || c.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML", n.type == "VML") {
  23822. if (bt = c.createElement("div"), bt.innerHTML = "<!--[if vml]><br><br><![endif]-->", bt.childNodes[t] != 2) return n.type = null;
  23823. bt = null
  23824. }
  23825. n.svg = !(n.vml = n.type == "VML");
  23826. y[i] = n[i];
  23827. n._id = 0;
  23828. n._oid = 0;
  23829. n.fn = {};
  23830. n.is = function(n, t) {
  23831. return t = yt.call(t), t == "object" && n === Object(n) || t == "undefined" && typeof n == t || t == "null" && n == null || yt.call(du.call(n).slice(8, -1)) == t
  23832. };
  23833. n.setWindow = function(n) {
  23834. st = n;
  23835. c = st.document
  23836. };
  23837. n.hsb2rgb = ut(function(t, i, r) {
  23838. var u;
  23839. if (n.is(t, "object") && "h" in t && "s" in t && "b" in t && (r = t.b, i = t.s, t = t.h), r == 0) return {
  23840. r: 0,
  23841. g: 0,
  23842. b: 0,
  23843. hex: "#000"
  23844. };
  23845. (t > 1 || i > 1 || r > 1) && (t /= 255, i /= 255, r /= 255);
  23846. u = ~~(t * 6);
  23847. t = t * 6 - u;
  23848. var f = r * (1 - i),
  23849. o = r * (1 - i * t),
  23850. e = r * (1 - i * (1 - t));
  23851. return t = [r, o, f, f, e, r, r][u], i = [e, r, r, o, f, f, e][u], u = [f, f, e, r, r, o, f][u], t *= 255, i *= 255, u *= 255, r = {
  23852. r: t,
  23853. g: i,
  23854. b: u,
  23855. toString: tf
  23856. }, t = (~~t)[d](16), i = (~~i)[d](16), u = (~~u)[d](16), t = t[w](kt, "0"), i = i[w](kt, "0"), u = u[w](kt, "0"), r.hex = "#" + t + i + u, r
  23857. }, n);
  23858. n.rgb2hsb = ut(function(t, i, r) {
  23859. var f, u, e, o;
  23860. return (n.is(t, "object") && "r" in t && "g" in t && "b" in t && (r = t.b, i = t.g, t = t.r), n.is(t, wt) && (f = n.getRGB(t), t = f.r, i = f.g, r = f.b), (t > 1 || i > 1 || r > 1) && (t /= 255, i /= 255, r /= 255), u = ht(t, i, r), e = lt(t, i, r), f = u, e == u) ? {
  23861. h: 0,
  23862. s: 0,
  23863. b: u
  23864. } : (o = u - e, e = o / u, t = t == u ? (i - r) / o : i == u ? 2 + (r - t) / o : 4 + (t - i) / o, t /= 6, t < 0 && t++, t > 1 && t--, {
  23865. h: t,
  23866. s: e,
  23867. b: f,
  23868. toString: nf
  23869. })
  23870. }, n);
  23871. var rf = /,?([achlmqrstvxz]),?/gi,
  23872. hi = /\s*,\s*/,
  23873. uf = {
  23874. hs: 1,
  23875. rg: 1
  23876. };
  23877. n._path2string = function() {
  23878. return this.join(",")[w](rf, "$1")
  23879. };
  23880. n.getRGB = ut(function(t) {
  23881. if (!t || (t += r).indexOf("-") + 1) return {
  23882. r: -1,
  23883. g: -1,
  23884. b: -1,
  23885. hex: "none",
  23886. error: 1
  23887. };
  23888. if (t == "none") return {
  23889. r: -1,
  23890. g: -1,
  23891. b: -1,
  23892. hex: "none"
  23893. };
  23894. uf[s](t.substring(0, 2)) || t.charAt() == "#" || (t = si(t));
  23895. var i, u, f, o, e;
  23896. return (t = t.match(gu)) ? (t[2] && (f = pt(t[2].substring(5), 16), u = pt(t[2].substring(3, 5), 16), i = pt(t[2].substring(1, 3), 16)), t[3] && (f = pt((e = t[3].charAt(3)) + e, 16), u = pt((e = t[3].charAt(2)) + e, 16), i = pt((e = t[3].charAt(1)) + e, 16)), t[4] && (t = t[4][p](hi), i = h(t[0]), u = h(t[1]), f = h(t[2]), o = h(t[3])), t[5] && (t = t[5][p](hi), i = h(t[0]) * 2.55, u = h(t[1]) * 2.55, f = h(t[2]) * 2.55, o = h(t[3])), t[6]) ? (t = t[6][p](hi), i = h(t[0]), u = h(t[1]), f = h(t[2]), n.hsb2rgb(i, u, f)) : t[7] ? (t = t[7][p](hi), i = h(t[0]) * 2.55, u = h(t[1]) * 2.55, f = h(t[2]) * 2.55, n.hsb2rgb(i, u, f)) : (t = {
  23897. r: i,
  23898. g: u,
  23899. b: f
  23900. }, i = (~~i)[d](16), u = (~~u)[d](16), f = (~~f)[d](16), i = i[w](kt, "0"), u = u[w](kt, "0"), f = f[w](kt, "0"), t.hex = "#" + i + u + f, isFinite(h(o)) && (t.o = o), t) : {
  23901. r: -1,
  23902. g: -1,
  23903. b: -1,
  23904. hex: "none",
  23905. error: 1
  23906. }
  23907. }, n);
  23908. n.getColor = function(n) {
  23909. n = this.getColor.start = this.getColor.start || {
  23910. h: 0,
  23911. s: 1,
  23912. b: n || .75
  23913. };
  23914. var t = this.hsb2rgb(n.h, n.s, n.b);
  23915. return n.h += .075, n.h > 1 && (n.h = 0, n.s -= .2, n.s <= 0 && (this.getColor.start = {
  23916. h: 0,
  23917. s: 1,
  23918. b: n.b
  23919. })), t.hex
  23920. };
  23921. n.getColor.reset = function() {
  23922. delete this.start
  23923. };
  23924. lr = /([achlmqstvz])[\s,]*((-?\d*\.?\d*(?:e[-+]?\d+)?\s*,?\s*)+)/ig;
  23925. ar = /(-?\d*\.?\d*(?:e[-+]?\d+)?)\s*,?\s*/ig;
  23926. n.parsePathString = ut(function(i) {
  23927. if (!i) return null;
  23928. var f = {
  23929. a: 7,
  23930. c: 6,
  23931. h: 1,
  23932. l: 2,
  23933. m: 2,
  23934. q: 4,
  23935. s: 4,
  23936. t: 2,
  23937. v: 1,
  23938. z: 0
  23939. },
  23940. u = [];
  23941. return n.is(i, et) && n.is(i[0], et) && (u = ci(i)), u[t] || (i + r)[w](lr, function(n, i, r) {
  23942. var e = [];
  23943. for (n = yt.call(i), r[w](ar, function(n, t) {
  23944. t && e[a](+t)
  23945. }), n == "m" && e[t] > 2 && (u[a]([i][k](e.splice(0, 2))), n = "l", i = i == "m" ? "l" : "L"); e[t] >= f[n];)
  23946. if (u[a]([i][k](e.splice(0, f[n]))), !f[n]) break
  23947. }), u[d] = n._path2string, u
  23948. });
  23949. n.findDotsAtSegment = function(n, t, i, r, u, f, o, s, h) {
  23950. var c = 1 - h,
  23951. w = l(c, 3) * n + l(c, 2) * 3 * h * i + c * 3 * h * h * u + l(h, 3) * o;
  23952. c = l(c, 3) * t + l(c, 2) * 3 * h * r + c * 3 * h * h * f + l(h, 3) * s;
  23953. var a = n + 2 * h * (i - n) + h * h * (u - 2 * i + n),
  23954. v = t + 2 * h * (r - t) + h * h * (f - 2 * r + t),
  23955. y = i + 2 * h * (u - i) + h * h * (o - 2 * u + i),
  23956. p = r + 2 * h * (f - r) + h * h * (s - 2 * f + r);
  23957. return n = (1 - h) * n + h * i, t = (1 - h) * t + h * r, u = (1 - h) * u + h * o, f = (1 - h) * f + h * s, s = 90 - e.atan((a - y) / (v - p)) * 180 / e.PI, (a > y || v < p) && (s += 180), {
  23958. x: w,
  23959. y: c,
  23960. m: {
  23961. x: a,
  23962. y: v
  23963. },
  23964. n: {
  23965. x: y,
  23966. y: p
  23967. },
  23968. start: {
  23969. x: n,
  23970. y: t
  23971. },
  23972. end: {
  23973. x: u,
  23974. y: f
  23975. },
  23976. alpha: s
  23977. }
  23978. };
  23979. ti = ut(function(n) {
  23980. if (!n) return {
  23981. x: 0,
  23982. y: 0,
  23983. width: 0,
  23984. height: 0
  23985. };
  23986. n = ai(n);
  23987. for (var r = 0, e = 0, u = [], f = [], i, o = 0, s = n[t]; o < s; o++) i = n[o], i[0] == "M" ? (r = i[1], e = i[2], u[a](r), f[a](e)) : (r = ff(r, e, i[1], i[2], i[3], i[4], i[5], i[6]), u = u[k](r.min.x, r.max.x), f = f[k](r.min.y, r.max.y), r = i[5], e = i[6]);
  23988. return n = lt[b](0, u), i = lt[b](0, f), {
  23989. x: n,
  23990. y: i,
  23991. width: ht[b](0, u) - n,
  23992. height: ht[b](0, f) - i
  23993. }
  23994. });
  23995. gi = ut(function(i) {
  23996. var v, u, r, h, y;
  23997. n.is(i, et) && n.is(i && i[0], et) || (i = n.parsePathString(i));
  23998. var e = [],
  23999. s = 0,
  24000. o = 0,
  24001. c = 0,
  24002. l = 0,
  24003. f = 0;
  24004. for (i[0][0] == "M" && (s = i[0][1], o = i[0][2], c = s, l = o, f++, e[a](["M", s, o])), f = f, v = i[t]; f < v; f++) {
  24005. if (u = e[f] = [], r = i[f], r[0] != yt.call(r[0])) {
  24006. u[0] = yt.call(r[0]);
  24007. switch (u[0]) {
  24008. case "a":
  24009. u[1] = r[1];
  24010. u[2] = r[2];
  24011. u[3] = r[3];
  24012. u[4] = r[4];
  24013. u[5] = r[5];
  24014. u[6] = +(r[6] - s).toFixed(3);
  24015. u[7] = +(r[7] - o).toFixed(3);
  24016. break;
  24017. case "v":
  24018. u[1] = +(r[1] - o).toFixed(3);
  24019. break;
  24020. case "m":
  24021. c = r[1];
  24022. l = r[2];
  24023. default:
  24024. for (h = 1, y = r[t]; h < y; h++) u[h] = +(r[h] - (h % 2 ? s : o)).toFixed(3)
  24025. }
  24026. } else
  24027. for (e[f] = [], r[0] == "m" && (c = r[1] + s, l = r[2] + o), u = 0, h = r[t]; u < h; u++) e[f][u] = r[u];
  24028. r = e[f][t];
  24029. switch (e[f][0]) {
  24030. case "z":
  24031. s = c;
  24032. o = l;
  24033. break;
  24034. case "h":
  24035. s += +e[f][r - 1];
  24036. break;
  24037. case "v":
  24038. o += +e[f][r - 1];
  24039. break;
  24040. default:
  24041. s += +e[f][r - 2];
  24042. o += +e[f][r - 1]
  24043. }
  24044. }
  24045. return e[d] = n._path2string, e
  24046. }, 0, ci);
  24047. dt = ut(function(i) {
  24048. var v, u, r, e, c;
  24049. n.is(i, et) && n.is(i && i[0], et) || (i = n.parsePathString(i));
  24050. var h = [],
  24051. o = 0,
  24052. s = 0,
  24053. l = 0,
  24054. a = 0,
  24055. f = 0;
  24056. for (i[0][0] == "M" && (o = +i[0][1], s = +i[0][2], l = o, a = s, f++, h[0] = ["M", o, s]), f = f, v = i[t]; f < v; f++) {
  24057. if (u = h[f] = [], r = i[f], r[0] != ei.call(r[0])) {
  24058. u[0] = ei.call(r[0]);
  24059. switch (u[0]) {
  24060. case "A":
  24061. u[1] = r[1];
  24062. u[2] = r[2];
  24063. u[3] = r[3];
  24064. u[4] = r[4];
  24065. u[5] = r[5];
  24066. u[6] = +(r[6] + o);
  24067. u[7] = +(r[7] + s);
  24068. break;
  24069. case "V":
  24070. u[1] = +r[1] + s;
  24071. break;
  24072. case "H":
  24073. u[1] = +r[1] + o;
  24074. break;
  24075. case "M":
  24076. l = +r[1] + o;
  24077. a = +r[2] + s;
  24078. default:
  24079. for (e = 1, c = r[t]; e < c; e++) u[e] = +r[e] + (e % 2 ? o : s)
  24080. }
  24081. } else
  24082. for (e = 0, c = r[t]; e < c; e++) h[f][e] = r[e];
  24083. switch (u[0]) {
  24084. case "Z":
  24085. o = l;
  24086. s = a;
  24087. break;
  24088. case "H":
  24089. o = u[1];
  24090. break;
  24091. case "V":
  24092. s = u[1];
  24093. break;
  24094. default:
  24095. o = h[f][h[f][t] - 2];
  24096. s = h[f][h[f][t] - 1]
  24097. }
  24098. }
  24099. return h[d] = n._path2string, h
  24100. }, null, ci);
  24101. var ff = ut(function(n, t, i, r, u, f, o, s) {
  24102. var c = u - 2 * i + n - (o - 2 * u + i),
  24103. l = 2 * (i - n) - 2 * (u - i),
  24104. p = n - i,
  24105. h = (-l + e.sqrt(l * l - 4 * c * p)) / 2 / c,
  24106. v, y;
  24107. return c = (-l - e.sqrt(l * l - 4 * c * p)) / 2 / c, v = [t, s], y = [n, o], e.abs(h) > 1e12 && (h = .5), e.abs(c) > 1e12 && (c = .5), h > 0 && h < 1 && (h = ii(n, t, i, r, u, f, o, s, h), y[a](h.x), v[a](h.y)), c > 0 && c < 1 && (h = ii(n, t, i, r, u, f, o, s, c), y[a](h.x), v[a](h.y)), c = f - 2 * r + t - (s - 2 * f + r), l = 2 * (r - t) - 2 * (f - r), p = t - r, h = (-l + e.sqrt(l * l - 4 * c * p)) / 2 / c, c = (-l - e.sqrt(l * l - 4 * c * p)) / 2 / c, e.abs(h) > 1e12 && (h = .5), e.abs(c) > 1e12 && (c = .5), h > 0 && h < 1 && (h = ii(n, t, i, r, u, f, o, s, h), y[a](h.x), v[a](h.y)), c > 0 && c < 1 && (h = ii(n, t, i, r, u, f, o, s, c), y[a](h.x), v[a](h.y)), {
  24108. min: {
  24109. x: lt[b](0, y),
  24110. y: lt[b](0, v)
  24111. },
  24112. max: {
  24113. x: ht[b](0, y),
  24114. y: ht[b](0, v)
  24115. }
  24116. }
  24117. }),
  24118. ai = ut(function(n, i) {
  24119. function a(n, t) {
  24120. var i;
  24121. if (!n) return ["C", t.x, t.y, t.x, t.y, t.x, t.y];
  24122. n[0] in {
  24123. T: 1,
  24124. Q: 1
  24125. } || (t.qx = t.qy = null);
  24126. switch (n[0]) {
  24127. case "M":
  24128. t.X = n[1];
  24129. t.Y = n[2];
  24130. break;
  24131. case "A":
  24132. n = ["C"][k](yr[b](0, [t.x, t.y][k](n.slice(1))));
  24133. break;
  24134. case "S":
  24135. i = t.x + (t.x - (t.bx || t.x));
  24136. t = t.y + (t.y - (t.by || t.y));
  24137. n = ["C", i, t][k](n.slice(1));
  24138. break;
  24139. case "T":
  24140. t.qx = t.x + (t.x - (t.qx || t.x));
  24141. t.qy = t.y + (t.y - (t.qy || t.y));
  24142. n = ["C"][k](vr(t.x, t.y, t.qx, t.qy, n[1], n[2]));
  24143. break;
  24144. case "Q":
  24145. t.qx = n[1];
  24146. t.qy = n[2];
  24147. n = ["C"][k](vr(t.x, t.y, n[1], n[2], n[3], n[4]));
  24148. break;
  24149. case "L":
  24150. n = ["C"][k](li(t.x, t.y, n[1], n[2]));
  24151. break;
  24152. case "H":
  24153. n = ["C"][k](li(t.x, t.y, n[1], t.y));
  24154. break;
  24155. case "V":
  24156. n = ["C"][k](li(t.x, t.y, t.x, n[1]));
  24157. break;
  24158. case "Z":
  24159. n = ["C"][k](li(t.x, t.y, t.X, t.Y))
  24160. }
  24161. return n
  24162. }
  24163. function v(n, i) {
  24164. if (n[i][t] > 7) {
  24165. n[i].shift();
  24166. for (var u = n[i]; u[t];) n.splice(i++, 0, ["C"][k](u.splice(0, 6)));
  24167. n.splice(i, 1);
  24168. s = ht(f[t], r && r[t] || 0)
  24169. }
  24170. }
  24171. function y(n, i, u, e, o) {
  24172. n && i && n[o][0] == "M" && i[o][0] != "M" && (i.splice(o, 0, ["M", e.x, e.y]), u.bx = 0, u.by = 0, u.x = n[o][1], u.y = n[o][2], s = ht(f[t], r && r[t] || 0))
  24173. }
  24174. var f = dt(n),
  24175. r = i && dt(i),
  24176. u, s;
  24177. for (n = {
  24178. x: 0,
  24179. y: 0,
  24180. bx: 0,
  24181. by: 0,
  24182. X: 0,
  24183. Y: 0,
  24184. qx: null,
  24185. qy: null
  24186. }, i = {
  24187. x: 0,
  24188. y: 0,
  24189. bx: 0,
  24190. by: 0,
  24191. X: 0,
  24192. Y: 0,
  24193. qx: null,
  24194. qy: null
  24195. }, u = 0, s = ht(f[t], r && r[t] || 0); u < s; u++) {
  24196. f[u] = a(f[u], n);
  24197. v(f, u);
  24198. r && (r[u] = a(r[u], i));
  24199. r && v(r, u);
  24200. y(f, r, n, i, u);
  24201. y(r, f, i, n, u);
  24202. var e = f[u],
  24203. o = r && r[u],
  24204. c = e[t],
  24205. l = r && o[t];
  24206. n.x = e[c - 2];
  24207. n.y = e[c - 1];
  24208. n.bx = h(e[c - 4]) || n.x;
  24209. n.by = h(e[c - 3]) || n.y;
  24210. i.bx = r && (h(o[l - 4]) || i.x);
  24211. i.by = r && (h(o[l - 3]) || i.y);
  24212. i.x = r && o[l - 2];
  24213. i.y = r && o[l - 1]
  24214. }
  24215. return r ? [f, r] : f
  24216. }, null, ci),
  24217. pr = ut(function(i) {
  24218. for (var r, f, e = [], u = 0, o = i[t]; u < o; u++) {
  24219. if (r = {}, f = i[u].match(/^([^:]*):?([\d\.]*)/), r.color = n.getRGB(f[1]), r.color.error) return null;
  24220. r.color = r.color.hex;
  24221. f[2] && (r.offset = f[2] + "%");
  24222. e[a](r)
  24223. }
  24224. for (u = 1, o = e[t] - 1; u < o; u++)
  24225. if (!e[u].offset) {
  24226. for (i = h(e[u - 1].offset || 0), f = 0, r = u + 1; r < o; r++)
  24227. if (e[r].offset) {
  24228. f = e[r].offset;
  24229. break
  24230. }
  24231. for (f || (f = 100, r = o), f = h(f), f = (f - i) / (r - u + 1); u < r; u++) i += f, e[u].offset = i + "%"
  24232. }
  24233. return e
  24234. });
  24235. if (tr = /^r(?:\(([^,]+?)\s*,\s*([^\)]+?)\))?/, n.svg) {
  24236. y[i].svgns = "http://www.w3.org/2000/svg";
  24237. y[i].xlink = "http://www.w3.org/1999/xlink";
  24238. v = function(n) {
  24239. return +n + (~~n === n) * .5
  24240. };
  24241. f = function(n, t) {
  24242. if (t)
  24243. for (var u in t) t[s](u) && n[ot](u, t[u] + r);
  24244. else return n = c.createElementNS(y[i].svgns, n), n.style.webkitTapHighlightColor = "rgba(0,0,0,0)", n
  24245. };
  24246. n[d] = function() {
  24247. return "Your browser supports SVG.\nYou are running Raphaël " + this.version
  24248. };
  24249. var tu = function(n, t) {
  24250. var i = f("path");
  24251. return t.canvas && t.canvas[o](i), t = new u(i, t), t.type = "path", vt(t, {
  24252. fill: "none",
  24253. stroke: "#000",
  24254. path: n
  24255. }), t
  24256. },
  24257. ri = function(i, u, s) {
  24258. var b = "linear",
  24259. k = .5,
  24260. y = .5,
  24261. g = i.style,
  24262. a, v, nt;
  24263. if (u = (u + r)[w](tr, function(n, t, i) {
  24264. return b = "radial", t && i && (k = h(t), y = h(i), n = (y > .5) * 2 - 1, l(k - .5, 2) + l(y - .5, 2) > .25 && (y = e.sqrt(.25 - l(k - .5, 2)) * n + .5) && y != .5 && (y = y.toFixed(5) - 1e-5 * n)), r
  24265. }), u = u[p](/\s*\-\s*/), b == "linear") {
  24266. if (a = u.shift(), a = -h(a), isNaN(a)) return null;
  24267. a = [0, 0, e.cos(a * e.PI / 180), e.sin(a * e.PI / 180)];
  24268. v = 1 / (ht(e.abs(a[2]), e.abs(a[3])) || 1);
  24269. a[2] *= v;
  24270. a[3] *= v;
  24271. a[2] < 0 && (a[0] = -a[2], a[2] = 0);
  24272. a[3] < 0 && (a[1] = -a[3], a[3] = 0)
  24273. }
  24274. if (u = pr(u), !u) return null;
  24275. for (v = i.getAttribute(at), (v = v.match(/^url\(#(.*)\)$/)) && s.defs.removeChild(c.getElementById(v[1])), v = f(b + "Gradient"), v.id = "r" + (n._id++)[d](36), f(v, b == "radial" ? {
  24276. fx: k,
  24277. fy: y
  24278. } : {
  24279. x1: a[0],
  24280. y1: a[1],
  24281. x2: a[2],
  24282. y2: a[3]
  24283. }), s.defs[o](v), s = 0, a = u[t]; s < a; s++) nt = f("stop"), f(nt, {
  24284. offset: u[s].offset ? u[s].offset : s ? "100%" : "0%",
  24285. "stop-color": u[s].color || "#fff"
  24286. }), v[o](nt);
  24287. return f(i, {
  24288. fill: "url(#" + v.id + ")",
  24289. opacity: 1,
  24290. "fill-opacity": 1
  24291. }), g.fill = r, g.opacity = 1, g.fillOpacity = 1
  24292. },
  24293. ir = function(t) {
  24294. var i = t.getBBox();
  24295. f(t.pattern, {
  24296. patternTransform: n.format("translate({0},{1})", i.x, i.y)
  24297. })
  24298. },
  24299. vt = function(i, u) {
  24300. function et(n, i) {
  24301. var e, o, r;
  24302. if (i = st[yt.call(i)]) {
  24303. for (e = n.attrs["stroke-width"] || "1", n = {
  24304. round: e,
  24305. square: e,
  24306. butt: 0
  24307. }[n.attrs["stroke-linecap"] || u["stroke-linecap"]] || 0, o = [], r = i[t]; r--;) o[r] = i[r] * e + (r % 2 ? 1 : -1) * n;
  24308. f(l, {
  24309. "stroke-dasharray": o[tt](",")
  24310. })
  24311. }
  24312. }
  24313. var st = {
  24314. "": [0],
  24315. none: [0],
  24316. "-": [3, 1],
  24317. ".": [1, 1],
  24318. "-.": [3, 1, 1, 1],
  24319. "-..": [3, 1, 1, 1, 1, 1],
  24320. ". ": [1, 3],
  24321. "- ": [4, 3],
  24322. "--": [8, 3],
  24323. "- .": [4, 3, 1, 3],
  24324. "--.": [8, 3, 1, 3],
  24325. "--..": [8, 3, 1, 3, 1, 3]
  24326. },
  24327. l = i.node,
  24328. b = i.attrs,
  24329. rt = i.rotate(),
  24330. k, y, e, a, it, nt, ut;
  24331. u[s]("rotation") && (rt = u.rotation);
  24332. k = (rt + r)[p](ft);
  24333. k.length - 1 ? (k[1] = +k[1], k[2] = +k[2]) : k = null;
  24334. h(rt) && i.rotate(0, !0);
  24335. for (y in u)
  24336. if (u[s](y) && oi[s](y)) {
  24337. e = u[y];
  24338. b[y] = e;
  24339. switch (y) {
  24340. case "blur":
  24341. i.blur(e);
  24342. break;
  24343. case "rotation":
  24344. i.rotate(e, !0);
  24345. break;
  24346. case "href":
  24347. case "title":
  24348. case "target":
  24349. a = l.parentNode;
  24350. yt.call(a.tagName) != "a" && (it = f("a"), a.insertBefore(it, l), it[o](l), a = it);
  24351. a.setAttributeNS(i.paper.xlink, y, e);
  24352. break;
  24353. case "cursor":
  24354. l.style.cursor = e;
  24355. break;
  24356. case "clip-rect":
  24357. a = (e + r)[p](ft);
  24358. a[t] == 4 && (i.clip && i.clip.parentNode.parentNode.removeChild(i.clip.parentNode), nt = f("clipPath"), it = f("rect"), nt.id = "r" + (n._id++)[d](36), f(it, {
  24359. x: a[0],
  24360. y: a[1],
  24361. width: a[2],
  24362. height: a[3]
  24363. }), nt[o](it), i.paper.defs[o](nt), f(l, {
  24364. "clip-path": "url(#" + nt.id + ")"
  24365. }), i.clip = it);
  24366. e || ((e = c.getElementById(l.getAttribute("clip-path")[w](/(^url\(#|\)$)/g, r))) && e.parentNode.removeChild(e), f(l, {
  24367. "clip-path": r
  24368. }), delete i.clip);
  24369. break;
  24370. case "path":
  24371. i.type == "path" && f(l, {
  24372. d: e ? b.path = dt(e) : "M0,0"
  24373. });
  24374. break;
  24375. case "width":
  24376. if (l[ot](y, e), b.fx) y = "x", e = b.x;
  24377. else break;
  24378. case "x":
  24379. b.fx && (e = -b.x - (b.width || 0));
  24380. case "rx":
  24381. if (y == "rx" && i.type == "rect") break;
  24382. case "cx":
  24383. k && (y == "x" || y == "cx") && (k[1] += e - b[y]);
  24384. l[ot](y, v(e));
  24385. i.pattern && ir(i);
  24386. break;
  24387. case "height":
  24388. if (l[ot](y, e), b.fy) y = "y", e = b.y;
  24389. else break;
  24390. case "y":
  24391. b.fy && (e = -b.y - (b.height || 0));
  24392. case "ry":
  24393. if (y == "ry" && i.type == "rect") break;
  24394. case "cy":
  24395. k && (y == "y" || y == "cy") && (k[2] += e - b[y]);
  24396. l[ot](y, v(e));
  24397. i.pattern && ir(i);
  24398. break;
  24399. case "r":
  24400. i.type == "rect" ? f(l, {
  24401. rx: e,
  24402. ry: e
  24403. }) : l[ot](y, e);
  24404. break;
  24405. case "src":
  24406. i.type == "image" && l.setAttributeNS(i.paper.xlink, "href", e);
  24407. break;
  24408. case "stroke-width":
  24409. l.style.strokeWidth = e;
  24410. l[ot](y, e);
  24411. b["stroke-dasharray"] && et(i, b["stroke-dasharray"]);
  24412. break;
  24413. case "stroke-dasharray":
  24414. et(i, e);
  24415. break;
  24416. case "translation":
  24417. e = (e + r)[p](ft);
  24418. e[0] = +e[0] || 0;
  24419. e[1] = +e[1] || 0;
  24420. k && (k[1] += e[0], k[2] += e[1]);
  24421. yi.call(i, e[0], e[1]);
  24422. break;
  24423. case "scale":
  24424. e = (e + r)[p](ft);
  24425. i.scale(+e[0] || 1, +e[1] || +e[0] || 1, isNaN(h(e[2])) ? null : +e[2], isNaN(h(e[3])) ? null : +e[3]);
  24426. break;
  24427. case at:
  24428. if (a = (e + r).match(cr)) {
  24429. nt = f("pattern");
  24430. ut = f("image");
  24431. nt.id = "r" + (n._id++)[d](36);
  24432. f(nt, {
  24433. x: 0,
  24434. y: 0,
  24435. patternUnits: "userSpaceOnUse",
  24436. height: 1,
  24437. width: 1
  24438. });
  24439. f(ut, {
  24440. x: 0,
  24441. y: 0
  24442. });
  24443. ut.setAttributeNS(i.paper.xlink, "href", a[1]);
  24444. nt[o](ut);
  24445. e = c.createElement("img");
  24446. e.style.cssText = "position:absolute;left:-9999em;top-9999em";
  24447. e.onload = function() {
  24448. f(nt, {
  24449. width: this.offsetWidth,
  24450. height: this.offsetHeight
  24451. });
  24452. f(ut, {
  24453. width: this.offsetWidth,
  24454. height: this.offsetHeight
  24455. });
  24456. c.body.removeChild(this);
  24457. i.paper.safari()
  24458. };
  24459. c.body[o](e);
  24460. e.src = a[1];
  24461. i.paper.defs[o](nt);
  24462. l.style.fill = "url(#" + nt.id + ")";
  24463. f(l, {
  24464. fill: "url(#" + nt.id + ")"
  24465. });
  24466. i.pattern = nt;
  24467. i.pattern && ir(i);
  24468. break
  24469. }
  24470. if (a = n.getRGB(e), a.error) {
  24471. if (({
  24472. circle: 1,
  24473. ellipse: 1
  24474. }[s](i.type) || (e + r).charAt() != "r") && ri(l, e, i.paper)) {
  24475. b.gradient = e;
  24476. b.fill = "none";
  24477. break
  24478. }
  24479. } else delete u.gradient, delete b.gradient, !n.is(b.opacity, "undefined") && n.is(u.opacity, "undefined") && f(l, {
  24480. opacity: b.opacity
  24481. }), !n.is(b["fill-opacity"], "undefined") && n.is(u["fill-opacity"], "undefined") && f(l, {
  24482. "fill-opacity": b["fill-opacity"]
  24483. });
  24484. a[s]("o") && f(l, {
  24485. "fill-opacity": a.o / 100
  24486. });
  24487. case "stroke":
  24488. a = n.getRGB(e);
  24489. l[ot](y, a.hex);
  24490. y == "stroke" && a[s]("o") && f(l, {
  24491. "stroke-opacity": a.o / 100
  24492. });
  24493. break;
  24494. case "gradient":
  24495. ({
  24496. circle: 1,
  24497. ellipse: 1
  24498. }[s](i.type) || (e + r).charAt() != "r") && ri(l, e, i.paper);
  24499. break;
  24500. case "opacity":
  24501. case "fill-opacity":
  24502. if (b.gradient) {
  24503. (a = c.getElementById(l.getAttribute(at)[w](/^url\(#|\)$/g, r))) && (a = a.getElementsByTagName("stop"), a[a[t] - 1][ot]("stop-opacity", e));
  24504. break
  24505. }
  24506. default:
  24507. y == "font-size" && (e = pt(e, 10) + "px");
  24508. a = y[w](/(\-.)/g, function(n) {
  24509. return ei.call(n.substring(1))
  24510. });
  24511. l.style[a] = e;
  24512. l[ot](y, e)
  24513. }
  24514. }
  24515. ef(i, u);
  24516. k ? i.rotate(k.join(g)) : h(rt) && i.rotate(rt, !0)
  24517. },
  24518. iu = 1.2,
  24519. ef = function(n, i) {
  24520. var u, l, a;
  24521. if (!(n.type != "text" || !(i[s]("text") || i[s]("font") || i[s]("font-size") || i[s]("x") || i[s]("y")))) {
  24522. var h = n.attrs,
  24523. e = n.node,
  24524. v = e.firstChild ? pt(c.defaultView.getComputedStyle(e.firstChild, r).getPropertyValue("font-size"), 10) : 10;
  24525. if (i[s]("text")) {
  24526. for (h.text = i.text; e.firstChild;) e.removeChild(e.firstChild);
  24527. for (i = (i.text + r)[p]("\n"), u = 0, l = i[t]; u < l; u++) i[u] && (a = f("tspan"), u && f(a, {
  24528. dy: v * iu,
  24529. x: h.x
  24530. }), a[o](c.createTextNode(i[u])), e[o](a))
  24531. } else
  24532. for (i = e.getElementsByTagName("tspan"), u = 0, l = i[t]; u < l; u++) u && f(i[u], {
  24533. dy: v * iu,
  24534. x: h.x
  24535. });
  24536. f(e, {
  24537. y: h.y
  24538. });
  24539. n = n.getBBox();
  24540. (n = h.y - (n.y + n.height / 2)) && isFinite(n) && f(e, {
  24541. y: h.y + n
  24542. })
  24543. }
  24544. },
  24545. u = function(t, i) {
  24546. this[0] = t;
  24547. this.id = n._oid++;
  24548. this.node = t;
  24549. t.raphael = this;
  24550. this.paper = i;
  24551. this.attrs = this.attrs || {};
  24552. this.transformations = [];
  24553. this._ = {
  24554. tx: 0,
  24555. ty: 0,
  24556. rt: {
  24557. deg: 0,
  24558. cx: 0,
  24559. cy: 0
  24560. },
  24561. sx: 1,
  24562. sy: 1
  24563. };
  24564. i.bottom || (i.bottom = this);
  24565. (this.prev = i.top) && (i.top.next = this);
  24566. i.top = this;
  24567. this.next = null
  24568. };
  24569. u[i].rotate = function(i, u, e) {
  24570. if (this.removed) return this;
  24571. if (i == null) return this._.rt.cx ? [this._.rt.deg, this._.rt.cx, this._.rt.cy][tt](g) : this._.rt.deg;
  24572. var o = this.getBBox();
  24573. return i = (i + r)[p](ft), i[t] - 1 && (u = h(i[1]), e = h(i[2])), i = h(i[0]), u != null ? this._.rt.deg = i : this._.rt.deg += i, e == null && (u = null), this._.rt.cx = u, this._.rt.cy = e, u = u == null ? o.x + o.width / 2 : u, e = e == null ? o.y + o.height / 2 : e, this._.rt.deg ? (this.transformations[0] = n.format("rotate({0} {1} {2})", this._.rt.deg, u, e), this.clip && f(this.clip, {
  24574. transform: n.format("rotate({0} {1} {2})", -this._.rt.deg, u, e)
  24575. })) : (this.transformations[0] = r, this.clip && f(this.clip, {
  24576. transform: r
  24577. })), f(this.node, {
  24578. transform: this.transformations[tt](g)
  24579. }), this
  24580. };
  24581. u[i].hide = function() {
  24582. return this.removed || (this.node.style.display = "none"), this
  24583. };
  24584. u[i].show = function() {
  24585. return this.removed || (this.node.style.display = ""), this
  24586. };
  24587. u[i].remove = function() {
  24588. if (!this.removed) {
  24589. gt(this, this.paper);
  24590. this.node.parentNode.removeChild(this.node);
  24591. for (var n in this) delete this[n];
  24592. this.removed = !0
  24593. }
  24594. };
  24595. u[i].getBBox = function() {
  24596. var r, n, i, u, t;
  24597. if (this.removed) return this;
  24598. if (this.type == "path") return ti(this.attrs.path);
  24599. this.node.style.display == "none" && (this.show(), r = !0);
  24600. n = {};
  24601. try {
  24602. n = this.node.getBBox()
  24603. } catch (f) {} finally {
  24604. n = n || {}
  24605. }
  24606. if (this.type == "text")
  24607. for (n = {
  24608. x: n.x,
  24609. y: Infinity,
  24610. width: 0,
  24611. height: 0
  24612. }, i = 0, u = this.node.getNumberOfChars(); i < u; i++) t = this.node.getExtentOfChar(i), t.y < n.y && (n.y = t.y), t.y + t.height - n.y > n.height && (n.height = t.y + t.height - n.y), t.x + t.width - n.x > n.width && (n.width = t.x + t.width - n.x);
  24613. return r && this.hide(), n
  24614. };
  24615. u[i].attr = function(t, i) {
  24616. var r, u;
  24617. if (this.removed) return this;
  24618. if (t == null) {
  24619. t = {};
  24620. for (r in this.attrs) this.attrs[s](r) && (t[r] = this.attrs[r]);
  24621. return this._.rt.deg && (t.rotation = this.rotate()), (this._.sx != 1 || this._.sy != 1) && (t.scale = this.scale()), t.gradient && t.fill == "none" && (t.fill = t.gradient) && delete t.gradient, t
  24622. }
  24623. if (i == null && n.is(t, wt)) return t == "translation" ? yi.call(this) : t == "rotation" ? this.rotate() : t == "scale" ? this.scale() : t == at && this.attrs.fill == "none" && this.attrs.gradient ? this.attrs.gradient : this.attrs[t];
  24624. if (i == null && n.is(t, et)) {
  24625. for (i = {}, r = 0, u = t.length; r < u; r++) i[t[r]] = this.attr(t[r]);
  24626. return i
  24627. }
  24628. return i != null ? (r = {}, r[t] = i, vt(this, r)) : t != null && n.is(t, "object") && vt(this, t), this
  24629. };
  24630. u[i].toFront = function() {
  24631. if (this.removed) return this;
  24632. this.node.parentNode[o](this.node);
  24633. var n = this.paper;
  24634. return n.top != this && br(this, n), this
  24635. };
  24636. u[i].toBack = function() {
  24637. return this.removed ? this : (this.node.parentNode.firstChild != this.node && (this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild), kr(this, this.paper)), this)
  24638. };
  24639. u[i].insertAfter = function(n) {
  24640. if (this.removed) return this;
  24641. var t = n.node;
  24642. return t.nextSibling ? t.parentNode.insertBefore(this.node, t.nextSibling) : t.parentNode[o](this.node), dr(this, n, this.paper), this
  24643. };
  24644. u[i].insertBefore = function(n) {
  24645. if (this.removed) return this;
  24646. var t = n.node;
  24647. return t.parentNode.insertBefore(this.node, t), gr(this, n, this.paper), this
  24648. };
  24649. u[i].blur = function(t) {
  24650. var i = this,
  24651. r, u; + t != 0 ? (r = f("filter"), u = f("feGaussianBlur"), i.attrs.blur = t, r.id = "r" + (n._id++)[d](36), f(u, {
  24652. stdDeviation: +t || 1.5
  24653. }), r.appendChild(u), i.paper.defs.appendChild(r), i._blur = r, f(i.node, {
  24654. filter: "url(#" + r.id + ")"
  24655. })) : (i._blur && (i._blur.parentNode.removeChild(i._blur), delete i._blur, delete i.attrs.blur), i.node.removeAttribute("filter"))
  24656. };
  24657. var ru = function(n, t, i, r) {
  24658. t = v(t);
  24659. i = v(i);
  24660. var e = f("circle");
  24661. return n.canvas && n.canvas[o](e), n = new u(e, n), n.attrs = {
  24662. cx: t,
  24663. cy: i,
  24664. r: r,
  24665. fill: "none",
  24666. stroke: "#000"
  24667. }, n.type = "circle", f(e, n.attrs), n
  24668. },
  24669. uu = function(n, t, i, r, e, s) {
  24670. t = v(t);
  24671. i = v(i);
  24672. var h = f("rect");
  24673. return n.canvas && n.canvas[o](h), n = new u(h, n), n.attrs = {
  24674. x: t,
  24675. y: i,
  24676. width: r,
  24677. height: e,
  24678. r: s || 0,
  24679. rx: s || 0,
  24680. ry: s || 0,
  24681. fill: "none",
  24682. stroke: "#000"
  24683. }, n.type = "rect", f(h, n.attrs), n
  24684. },
  24685. fu = function(n, t, i, r, e) {
  24686. t = v(t);
  24687. i = v(i);
  24688. var s = f("ellipse");
  24689. return n.canvas && n.canvas[o](s), n = new u(s, n), n.attrs = {
  24690. cx: t,
  24691. cy: i,
  24692. rx: r,
  24693. ry: e,
  24694. fill: "none",
  24695. stroke: "#000"
  24696. }, n.type = "ellipse", f(s, n.attrs), n
  24697. },
  24698. eu = function(n, t, i, r, e, s) {
  24699. var h = f("image");
  24700. return f(h, {
  24701. x: i,
  24702. y: r,
  24703. width: e,
  24704. height: s,
  24705. preserveAspectRatio: "none"
  24706. }), h.setAttributeNS(n.xlink, "href", t), n.canvas && n.canvas[o](h), n = new u(h, n), n.attrs = {
  24707. x: i,
  24708. y: r,
  24709. width: e,
  24710. height: s,
  24711. src: t
  24712. }, n.type = "image", n
  24713. },
  24714. ou = function(n, t, i, r) {
  24715. var e = f("text");
  24716. return f(e, {
  24717. x: t,
  24718. y: i,
  24719. "text-anchor": "middle"
  24720. }), n.canvas && n.canvas[o](e), n = new u(e, n), n.attrs = {
  24721. x: t,
  24722. y: i,
  24723. "text-anchor": "middle",
  24724. text: r,
  24725. font: oi.font,
  24726. stroke: "none",
  24727. fill: "#000"
  24728. }, n.type = "text", vt(n, n.attrs), n
  24729. },
  24730. su = function(n, t) {
  24731. return this.width = n || this.width, this.height = t || this.height, this.canvas[ot]("width", this.width), this.canvas[ot]("height", this.height), this
  24732. },
  24733. rr = function() {
  24734. var i = wr[b](0, arguments),
  24735. t = i && i.container,
  24736. e = i.x,
  24737. s = i.y,
  24738. u = i.width,
  24739. r;
  24740. if (i = i.height, !t) throw new Error("SVG container not found.");
  24741. return r = f("svg"), e = e || 0, s = s || 0, u = u || 512, i = i || 342, f(r, {
  24742. xmlns: "http://www.w3.org/2000/svg",
  24743. version: 1.1,
  24744. width: u,
  24745. height: i
  24746. }), t == 1 ? (r.style.cssText = "position:absolute;left:" + e + "px;top:" + s + "px", c.body[o](r)) : t.firstChild ? t.insertBefore(r, t.firstChild) : t[o](r), t = new y, t.width = u, t.height = i, t.canvas = r, nr.call(t, t, n.fn), t.clear(), t
  24747. };
  24748. y[i].clear = function() {
  24749. for (var n = this.canvas; n.firstChild;) n.removeChild(n.firstChild);
  24750. this.bottom = this.top = null;
  24751. (this.desc = f("desc"))[o](c.createTextNode("Created with Raphaël"));
  24752. n[o](this.desc);
  24753. n[o](this.defs = f("defs"))
  24754. };
  24755. y[i].remove = function() {
  24756. this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas);
  24757. for (var n in this) this[n] = nu(n)
  24758. }
  24759. }
  24760. if (n.vml) {
  24761. var hu = {
  24762. M: "m",
  24763. L: "l",
  24764. C: "c",
  24765. Z: "x",
  24766. m: "t",
  24767. l: "r",
  24768. c: "v",
  24769. z: "x"
  24770. },
  24771. of = /([clmz]),?([^clmz]*)/gi,
  24772. sf = /-?[^,\s-]+/g,
  24773. ui = 1e3 + g + 1e3,
  24774. ni = 10,
  24775. fi = {
  24776. path: 1,
  24777. rect: 1
  24778. },
  24779. hf = function(n) {
  24780. var i = /[ahqstv]/ig,
  24781. u = dt,
  24782. f, e, h, o, s;
  24783. if ((n + r).match(i) && (u = ai), i = /[clmz]/g, u == dt && !(n + r).match(i)) return (n + r)[w]( of , function(n, i, r) {
  24784. var u = [],
  24785. e = yt.call(i) == "m",
  24786. f = hu[i];
  24787. return r[w](sf, function(n) {
  24788. e && u[t] == 2 && (f += u + hu[i == "m" ? "l" : "L"], u = []);
  24789. u[a](v(n * ni))
  24790. }), f + u
  24791. });
  24792. for (i = u(n), n = [], e = 0, h = i[t]; e < h; e++) {
  24793. for (u = i[e], f = yt.call(i[e][0]), f == "z" && (f = "x"), o = 1, s = u[t]; o < s; o++) f += v(u[o] * ni) + (o != s - 1 ? "," : r);
  24794. n[a](f)
  24795. }
  24796. return n[tt](g)
  24797. };
  24798. n[d] = function() {
  24799. return "Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël " + this.version
  24800. };
  24801. tu = function(n, t) {
  24802. var f = it("group"),
  24803. i, e;
  24804. return f.style.cssText = "position:absolute;left:0;top:0;width:" + t.width + "px;height:" + t.height + "px", f.coordsize = t.coordsize, f.coordorigin = t.coordorigin, i = it("shape"), e = i.style, e.width = t.width + "px", e.height = t.height + "px", i.coordsize = ui, i.coordorigin = t.coordorigin, f[o](i), i = new u(i, f, t), e = {
  24805. fill: "none",
  24806. stroke: "#000"
  24807. }, n && (e.path = n), i.isAbsolute = !0, i.type = "path", i.path = [], i.Path = r, vt(i, e), t.canvas[o](f), i
  24808. };
  24809. vt = function(i, u) {
  24810. var y, b, k, d;
  24811. i.attrs = i.attrs || {};
  24812. var a = i.node,
  24813. e = i.attrs,
  24814. f = a.style,
  24815. l;
  24816. l = (u.x != e.x || u.y != e.y || u.width != e.width || u.height != e.height || u.r != e.r) && i.type == "rect";
  24817. y = i;
  24818. for (b in u) u[s](b) && (e[b] = u[b]);
  24819. if (l && (e.path = lu(e.x, e.y, e.width, e.height, e.r), i.X = e.x, i.Y = e.y, i.W = e.width, i.H = e.height), u.href && (a.href = u.href), u.title && (a.title = u.title), u.target && (a.target = u.target), u.cursor && (f.cursor = u.cursor), "blur" in u && i.blur(u.blur), (u.path && i.type == "path" || l) && (a.path = hf(e.path)), u.rotation != null && i.rotate(u.rotation, !0), u.translation && (l = (u.translation + r)[p](ft), yi.call(i, l[0], l[1]), i._.rt.cx != null && (i._.rt.cx += +l[0], i._.rt.cy += +l[1], i.setBox(i.attrs, l[0], l[1]))), u.scale && (l = (u.scale + r)[p](ft), i.scale(+l[0] || 1, +l[1] || +l[0] || 1, +l[2] || null, +l[3] || null)), "clip-rect" in u && (l = (u["clip-rect"] + r)[p](ft), l[t] == 4 && (l[2] = +l[2] + +l[0], l[3] = +l[3] + +l[1], b = a.clipRect || c.createElement("div"), k = b.style, d = a.parentNode, k.clip = n.format("rect({1}px {2}px {3}px {0}px)", l), a.clipRect || (k.position = "absolute", k.top = 0, k.left = 0, k.width = i.paper.width + "px", k.height = i.paper.height + "px", d.parentNode.insertBefore(b, d), b[o](d), a.clipRect = b)), u["clip-rect"] || a.clipRect && (a.clipRect.style.clip = r)), i.type == "image" && u.src && (a.src = u.src), i.type == "image" && u.opacity && (a.filterOpacity = ki + ".Alpha(opacity=" + u.opacity * 100 + ")", f.filter = (a.filterMatrix || r) + (a.filterOpacity || r)), u.font && (f.font = u.font), u["font-family"] && (f.fontFamily = '"' + u["font-family"][p](",")[0][w](/^['"]+|['"]+$/g, r) + '"'), u["font-size"] && (f.fontSize = u["font-size"]), u["font-weight"] && (f.fontWeight = u["font-weight"]), u["font-style"] && (f.fontStyle = u["font-style"]), (u.opacity != null || u["stroke-width"] != null || u.fill != null || u.stroke != null || u["stroke-width"] != null || u["stroke-opacity"] != null || u["fill-opacity"] != null || u["stroke-dasharray"] != null || u["stroke-miterlimit"] != null || u["stroke-linejoin"] != null || u["stroke-linecap"] != null) && (a = i.shape || a, f = a.getElementsByTagName(at) && a.getElementsByTagName(at)[0], l = !1, f || (l = f = it(at)), ("fill-opacity" in u || "opacity" in u) && (i = ((+e["fill-opacity"] + 1 || 2) - 1) * ((+e.opacity + 1 || 2) - 1) * ((+n.getRGB(u.fill).o + 1 || 2) - 1), i < 0 && (i = 0), i > 1 && (i = 1), f.opacity = i), u.fill && (f.on = !0), (f.on == null || u.fill == "none") && (f.on = !1), f.on && u.fill && ((i = u.fill.match(cr)) ? (f.src = i[1], f.type = "tile") : (f.color = n.getRGB(u.fill).hex, f.src = r, f.type = "solid", n.getRGB(u.fill).error && (y.type in {
  24820. circle: 1,
  24821. ellipse: 1
  24822. } || (u.fill + r).charAt() != "r") && ri(y, u.fill) && (e.fill = "none", e.gradient = u.fill))), l && a[o](f), f = a.getElementsByTagName("stroke") && a.getElementsByTagName("stroke")[0], l = !1, f || (l = f = it("stroke")), (u.stroke && u.stroke != "none" || u["stroke-width"] || u["stroke-opacity"] != null || u["stroke-dasharray"] || u["stroke-miterlimit"] || u["stroke-linejoin"] || u["stroke-linecap"]) && (f.on = !0), (u.stroke == "none" || f.on == null || u.stroke == 0 || u["stroke-width"] == 0) && (f.on = !1), i = n.getRGB(u.stroke), f.on && u.stroke && (f.color = i.hex), i = ((+e["stroke-opacity"] + 1 || 2) - 1) * ((+e.opacity + 1 || 2) - 1) * ((+i.o + 1 || 2) - 1), b = (h(u["stroke-width"]) || 1) * .75, i < 0 && (i = 0), i > 1 && (i = 1), u["stroke-width"] == null && (b = e["stroke-width"]), u["stroke-width"] && (f.weight = b), b && b < 1 && (i *= b) && (f.weight = 1), f.opacity = i, u["stroke-linejoin"] && (f.joinstyle = u["stroke-linejoin"] || "miter"), f.miterlimit = u["stroke-miterlimit"] || 8, u["stroke-linecap"] && (f.endcap = u["stroke-linecap"] == "butt" ? "flat" : u["stroke-linecap"] == "square" ? "square" : "round"), u["stroke-dasharray"] && (i = {
  24823. "-": "shortdash",
  24824. ".": "shortdot",
  24825. "-.": "shortdashdot",
  24826. "-..": "shortdashdotdot",
  24827. ". ": "dot",
  24828. "- ": "dash",
  24829. "--": "longdash",
  24830. "- .": "dashdot",
  24831. "--.": "longdashdot",
  24832. "--..": "longdashdotdot"
  24833. }, f.dashstyle = i[s](u["stroke-dasharray"]) ? i[u["stroke-dasharray"]] : r), l && a[o](f)), y.type == "text") {
  24834. f = y.paper.span.style;
  24835. e.font && (f.font = e.font);
  24836. e["font-family"] && (f.fontFamily = e["font-family"]);
  24837. e["font-size"] && (f.fontSize = e["font-size"]);
  24838. e["font-weight"] && (f.fontWeight = e["font-weight"]);
  24839. e["font-style"] && (f.fontStyle = e["font-style"]);
  24840. y.node.string && (y.paper.span.innerHTML = (y.node.string + r)[w](/</g, "&#60;")[w](/&/g, "&#38;")[w](/\n/g, "<br>"));
  24841. y.W = e.w = y.paper.span.offsetWidth;
  24842. y.H = e.h = y.paper.span.offsetHeight;
  24843. y.X = e.x;
  24844. y.Y = e.y + v(y.H / 2);
  24845. switch (e["text-anchor"]) {
  24846. case "start":
  24847. y.node.style["v-text-align"] = "left";
  24848. y.bbx = v(y.W / 2);
  24849. break;
  24850. case "end":
  24851. y.node.style["v-text-align"] = "right";
  24852. y.bbx = -v(y.W / 2);
  24853. break;
  24854. default:
  24855. y.node.style["v-text-align"] = "center"
  24856. }
  24857. }
  24858. };
  24859. ri = function(n, i) {
  24860. var s, c, o, u, f, v;
  24861. if ((n.attrs = n.attrs || {}, s = "linear", c = ".5 .5", n.attrs.gradient = i, i = (i + r)[w](tr, function(n, t, i) {
  24862. return s = "radial", t && i && (t = h(t), i = h(i), l(t - .5, 2) + l(i - .5, 2) > .25 && (i = e.sqrt(.25 - l(t - .5, 2)) * ((i > .5) * 2 - 1) + .5), c = t + g + i), r
  24863. }), i = i[p](/\s*\-\s*/), s == "linear" && (o = i.shift(), o = -h(o), isNaN(o))) || (u = pr(i), !u)) return null;
  24864. if (n = n.shape || n.node, i = n.getElementsByTagName(at)[0] || it(at), i.parentNode || n.appendChild(i), u[t]) {
  24865. for (i.on = !0, i.method = "none", i.color = u[0].color, i.color2 = u[u[t] - 1].color, n = [], f = 0, v = u[t]; f < v; f++) u[f].offset && n[a](u[f].offset + g + u[f].color);
  24866. i.colors && (i.colors.value = n[t] ? n[tt]() : "0% " + i.color);
  24867. s == "radial" ? (i.type = "gradientradial", i.focus = "100%", i.focussize = c, i.focusposition = c) : (i.type = "gradient", i.angle = (270 - o) % 360)
  24868. }
  24869. return 1
  24870. };
  24871. u = function(t, i, r) {
  24872. this[0] = t;
  24873. this.id = n._oid++;
  24874. this.node = t;
  24875. t.raphael = this;
  24876. this.Y = this.X = 0;
  24877. this.attrs = {};
  24878. this.Group = i;
  24879. this.paper = r;
  24880. this._ = {
  24881. tx: 0,
  24882. ty: 0,
  24883. rt: {
  24884. deg: 0
  24885. },
  24886. sx: 1,
  24887. sy: 1
  24888. };
  24889. r.bottom || (r.bottom = this);
  24890. (this.prev = r.top) && (r.top.next = this);
  24891. r.top = this;
  24892. this.next = null
  24893. };
  24894. u[i].rotate = function(n, i, u) {
  24895. return this.removed ? this : n == null ? this._.rt.cx ? [this._.rt.deg, this._.rt.cx, this._.rt.cy][tt](g) : this._.rt.deg : (n = (n + r)[p](ft), n[t] - 1 && (i = h(n[1]), u = h(n[2])), n = h(n[0]), i != null ? this._.rt.deg = n : this._.rt.deg += n, u == null && (i = null), this._.rt.cx = i, this._.rt.cy = u, this.setBox(this.attrs, i, u), this.Group.style.rotation = this._.rt.deg, this)
  24896. };
  24897. u[i].setBox = function(n, t, i) {
  24898. var c, e, o, u, h, f;
  24899. if (this.removed) return this;
  24900. c = this.Group.style;
  24901. e = this.shape && this.shape.style || this.node.style;
  24902. n = n || {};
  24903. for (o in n) n[s](o) && (this.attrs[o] = n[o]);
  24904. t = t || this._.rt.cx;
  24905. i = i || this._.rt.cy;
  24906. u = this.attrs;
  24907. switch (this.type) {
  24908. case "circle":
  24909. n = u.cx - u.r;
  24910. o = u.cy - u.r;
  24911. h = u = u.r * 2;
  24912. break;
  24913. case "ellipse":
  24914. n = u.cx - u.rx;
  24915. o = u.cy - u.ry;
  24916. h = u.rx * 2;
  24917. u = u.ry * 2;
  24918. break;
  24919. case "image":
  24920. n = +u.x;
  24921. o = +u.y;
  24922. h = u.width || 0;
  24923. u = u.height || 0;
  24924. break;
  24925. case "text":
  24926. this.textpath.v = ["m", v(u.x), ", ", v(u.y - 2), "l", v(u.x) + 1, ", ", v(u.y - 2)][tt](r);
  24927. n = u.x - v(this.W / 2);
  24928. o = u.y - this.H / 2;
  24929. h = this.W;
  24930. u = this.H;
  24931. break;
  24932. case "rect":
  24933. case "path":
  24934. this.attrs.path ? (u = ti(this.attrs.path), n = u.x, o = u.y, h = u.width, u = u.height) : (o = n = 0, h = this.paper.width, u = this.paper.height);
  24935. break;
  24936. default:
  24937. o = n = 0;
  24938. h = this.paper.width;
  24939. u = this.paper.height
  24940. }
  24941. t = t == null ? n + h / 2 : t;
  24942. i = i == null ? o + u / 2 : i;
  24943. t = t - this.paper.width / 2;
  24944. i = i - this.paper.height / 2;
  24945. c.left != (f = t + "px") && (c.left = f);
  24946. c.top != (f = i + "px") && (c.top = f);
  24947. this.X = fi[s](this.type) ? -t : n;
  24948. this.Y = fi[s](this.type) ? -i : o;
  24949. this.W = h;
  24950. this.H = u;
  24951. fi[s](this.type) ? (e.left != (f = -t * ni + "px") && (e.left = f), e.top != (f = -i * ni + "px") && (e.top = f)) : this.type == "text" ? (e.left != (f = -t + "px") && (e.left = f), e.top != (f = -i + "px") && (e.top = f)) : (c.width != (f = this.paper.width + "px") && (c.width = f), c.height != (f = this.paper.height + "px") && (c.height = f), e.left != (f = n - t + "px") && (e.left = f), e.top != (f = o - i + "px") && (e.top = f), e.width != (f = h + "px") && (e.width = f), e.height != (f = u + "px") && (e.height = f))
  24952. };
  24953. u[i].hide = function() {
  24954. return this.removed || (this.Group.style.display = "none"), this
  24955. };
  24956. u[i].show = function() {
  24957. return this.removed || (this.Group.style.display = "block"), this
  24958. };
  24959. u[i].getBBox = function() {
  24960. return this.removed ? this : fi[s](this.type) ? ti(this.attrs.path) : {
  24961. x: this.X + (this.bbx || 0),
  24962. y: this.Y,
  24963. width: this.W,
  24964. height: this.H
  24965. }
  24966. };
  24967. u[i].remove = function() {
  24968. if (!this.removed) {
  24969. gt(this, this.paper);
  24970. this.node.parentNode.removeChild(this.node);
  24971. this.Group.parentNode.removeChild(this.Group);
  24972. this.shape && this.shape.parentNode.removeChild(this.shape);
  24973. for (var n in this) delete this[n];
  24974. this.removed = !0
  24975. }
  24976. };
  24977. u[i].attr = function(i, u) {
  24978. var e, f;
  24979. if (this.removed) return this;
  24980. if (i == null) {
  24981. i = {};
  24982. for (e in this.attrs) this.attrs[s](e) && (i[e] = this.attrs[e]);
  24983. return this._.rt.deg && (i.rotation = this.rotate()), (this._.sx != 1 || this._.sy != 1) && (i.scale = this.scale()), i.gradient && i.fill == "none" && (i.fill = i.gradient) && delete i.gradient, i
  24984. }
  24985. if (u == null && n.is(i, wt)) return i == "translation" ? yi.call(this) : i == "rotation" ? this.rotate() : i == "scale" ? this.scale() : i == at && this.attrs.fill == "none" && this.attrs.gradient ? this.attrs.gradient : this.attrs[i];
  24986. if (this.attrs && u == null && n.is(i, et)) {
  24987. for (f = {}, e = 0, u = i[t]; e < u; e++) f[i[e]] = this.attr(i[e]);
  24988. return f
  24989. }
  24990. return u != null && (f = {}, f[i] = u), u == null && n.is(i, "object") && (f = i), f && (f.text && this.type == "text" && (this.node.string = f.text), vt(this, f), f.gradient && ({
  24991. circle: 1,
  24992. ellipse: 1
  24993. }[s](this.type) || (f.gradient + r).charAt() != "r") && ri(this, f.gradient), (!fi[s](this.type) || this._.rt.deg) && this.setBox(this.attrs)), this
  24994. };
  24995. u[i].toFront = function() {
  24996. return this.removed || this.Group.parentNode[o](this.Group), this.paper.top != this && br(this, this.paper), this
  24997. };
  24998. u[i].toBack = function() {
  24999. return this.removed ? this : (this.Group.parentNode.firstChild != this.Group && (this.Group.parentNode.insertBefore(this.Group, this.Group.parentNode.firstChild), kr(this, this.paper)), this)
  25000. };
  25001. u[i].insertAfter = function(n) {
  25002. return this.removed ? this : (n.Group.nextSibling ? n.Group.parentNode.insertBefore(this.Group, n.Group.nextSibling) : n.Group.parentNode[o](this.Group), dr(this, n, this.paper), this)
  25003. };
  25004. u[i].insertBefore = function(n) {
  25005. return this.removed ? this : (n.Group.parentNode.insertBefore(this.Group, n.Group), gr(this, n, this.paper), this)
  25006. };
  25007. cu = / progid:\S+Blur\([^\)]+\)/g;
  25008. u[i].blur = function(n) {
  25009. var t = this.node.style,
  25010. i = t.filter;
  25011. i = i.replace(cu, ""); + n != 0 ? (this.attrs.blur = n, t.filter = i + ki + ".Blur(pixelradius=" + (+n || 1.5) + ")", t.margin = Raphael.format("-{0}px 0 0 -{0}px", Math.round(+n || 1.5))) : (t.filter = i, t.margin = 0, delete this.attrs.blur)
  25012. };
  25013. ru = function(n, t, i, r) {
  25014. var e = it("group"),
  25015. f = it("oval");
  25016. return e.style.cssText = "position:absolute;left:0;top:0;width:" + n.width + "px;height:" + n.height + "px", e.coordsize = ui, e.coordorigin = n.coordorigin, e[o](f), f = new u(f, e, n), f.type = "circle", vt(f, {
  25017. stroke: "#000",
  25018. fill: "none"
  25019. }), f.attrs.cx = t, f.attrs.cy = i, f.attrs.r = r, f.setBox({
  25020. x: t - r,
  25021. y: i - r,
  25022. width: r * 2,
  25023. height: r * 2
  25024. }), n.canvas[o](e), f
  25025. };
  25026. function lu(t, i, r, u, f) {
  25027. return f ? n.format("M{0},{1}l{2},0a{3},{3},0,0,1,{3},{3}l0,{5}a{3},{3},0,0,1,{4},{3}l{6},0a{3},{3},0,0,1,{4},{4}l0,{7}a{3},{3},0,0,1,{3},{4}z", t + f, i, r - f * 2, f, -f, u - f * 2, f * 2 - r, f * 2 - u) : n.format("M{0},{1}l{2},0,0,{3},{4},0z", t, i, r, u, -r)
  25028. }
  25029. uu = function(n, t, i, r, u, f) {
  25030. var o = lu(t, i, r, u, f),
  25031. e;
  25032. return n = n.path(o), e = n.attrs, n.X = e.x = t, n.Y = e.y = i, n.W = e.width = r, n.H = e.height = u, e.r = f, e.path = o, n.type = "rect", n
  25033. };
  25034. fu = function(n, t, i, r, f) {
  25035. var s = it("group"),
  25036. e = it("oval");
  25037. return s.style.cssText = "position:absolute;left:0;top:0;width:" + n.width + "px;height:" + n.height + "px", s.coordsize = ui, s.coordorigin = n.coordorigin, s[o](e), e = new u(e, s, n), e.type = "ellipse", vt(e, {
  25038. stroke: "#000"
  25039. }), e.attrs.cx = t, e.attrs.cy = i, e.attrs.rx = r, e.attrs.ry = f, e.setBox({
  25040. x: t - r,
  25041. y: i - f,
  25042. width: r * 2,
  25043. height: f * 2
  25044. }), n.canvas[o](s), e
  25045. };
  25046. eu = function(n, t, i, r, f, e) {
  25047. var h = it("group"),
  25048. s = it("image");
  25049. return h.style.cssText = "position:absolute;left:0;top:0;width:" + n.width + "px;height:" + n.height + "px", h.coordsize = ui, h.coordorigin = n.coordorigin, s.src = t, h[o](s), s = new u(s, h, n), s.type = "image", s.attrs.src = t, s.attrs.x = i, s.attrs.y = r, s.attrs.w = f, s.attrs.h = e, s.setBox({
  25050. x: i,
  25051. y: r,
  25052. width: f,
  25053. height: e
  25054. }), n.canvas[o](h), s
  25055. };
  25056. ou = function(t, i, f, e) {
  25057. var h = it("group"),
  25058. c = it("shape"),
  25059. s = c.style,
  25060. l = it("path"),
  25061. a = it("textpath");
  25062. return h.style.cssText = "position:absolute;left:0;top:0;width:" + t.width + "px;height:" + t.height + "px", h.coordsize = ui, h.coordorigin = t.coordorigin, l.v = n.format("m{0},{1}l{2},{1}", v(i * 10), v(f * 10), v(i * 10) + 1), l.textpathok = !0, s.width = t.width, s.height = t.height, a.string = e + r, a.on = !0, c[o](a), c[o](l), h[o](c), s = new u(a, h, t), s.shape = c, s.textpath = l, s.type = "text", s.attrs.text = e, s.attrs.x = i, s.attrs.y = f, s.attrs.w = 1, s.attrs.h = 1, vt(s, {
  25063. font: oi.font,
  25064. stroke: "none",
  25065. fill: "#000"
  25066. }), s.setBox(), t.canvas[o](h), s
  25067. };
  25068. su = function(n, t) {
  25069. var i = this.canvas.style;
  25070. return n == +n && (n += "px"), t == +t && (t += "px"), i.width = n, i.height = t, i.clip = "rect(0 " + n + " " + t + " 0)", this
  25071. };
  25072. c.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");
  25073. try {
  25074. c.namespaces.rvml || c.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");
  25075. it = function(n) {
  25076. return c.createElement("<rvml:" + n + ' class="rvml">')
  25077. }
  25078. } catch (pf) {
  25079. it = function(n) {
  25080. return c.createElement("<" + n + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')
  25081. }
  25082. }
  25083. rr = function() {
  25084. var i = wr[b](0, arguments),
  25085. r = i.container,
  25086. u = i.height,
  25087. f = i.width,
  25088. h = i.x;
  25089. if (i = i.y, !r) throw new Error("VML container not found.");
  25090. var t = new y,
  25091. e = t.canvas = c.createElement("div"),
  25092. s = e.style;
  25093. return h = h || 0, i = i || 0, f = f || 512, u = u || 342, f == +f && (f += "px"), u == +u && (u += "px"), t.width = 1e3, t.height = 1e3, t.coordsize = ni * 1e3 + g + ni * 1e3, t.coordorigin = "0 0", t.span = c.createElement("span"), t.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;", e[o](t.span), s.cssText = n.format("width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", f, u), r == 1 ? (c.body[o](e), s.left = h + "px", s.top = i + "px", s.position = "absolute") : r.firstChild ? r.insertBefore(e, r.firstChild) : r[o](e), nr.call(t, t, n.fn), t
  25094. };
  25095. y[i].clear = function() {
  25096. this.canvas.innerHTML = r;
  25097. this.span = c.createElement("span");
  25098. this.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;";
  25099. this.canvas[o](this.span);
  25100. this.bottom = this.top = null
  25101. };
  25102. y[i].remove = function() {
  25103. this.canvas.parentNode.removeChild(this.canvas);
  25104. for (var n in this) this[n] = nu(n);
  25105. return !0
  25106. }
  25107. }
  25108. for (y[i].safari = /^Apple|^Google/.test(st.navigator.vendor) && (!(st.navigator.userAgent.indexOf("Version/4.0") + 1) || st.navigator.platform.slice(0, 2) == "iP") ? function() {
  25109. var n = this.rect(-99, -99, this.width + 99, this.height + 99);
  25110. st.setTimeout(function() {
  25111. n.remove()
  25112. })
  25113. } : function() {}, au = function() {
  25114. return c.addEventListener ? function(n, t, i, r) {
  25115. function f(u) {
  25116. if (wi && bi[s](t))
  25117. for (var f = 0, e = u.targetTouches && u.targetTouches.length; f < e; f++)
  25118. if (u.targetTouches[f].target == n) {
  25119. e = u;
  25120. u = u.targetTouches[f];
  25121. u.originalEvent = e;
  25122. u.preventDefault = lf;
  25123. u.stopPropagation = vf;
  25124. break
  25125. }
  25126. return i.call(r, u)
  25127. }
  25128. var u = wi && bi[t] ? bi[t] : t;
  25129. return n.addEventListener(u, f, !1),
  25130. function() {
  25131. return n.removeEventListener(u, f, !1), !0
  25132. }
  25133. } : c.attachEvent ? function(n, t, i, r) {
  25134. function u(n) {
  25135. return n = n || st.event, n.preventDefault = n.preventDefault || cf, n.stopPropagation = n.stopPropagation || af, i.call(r, n)
  25136. }
  25137. function f() {
  25138. return n.detachEvent("on" + t, u), !0
  25139. }
  25140. return n.attachEvent("on" + t, u), f
  25141. } : void 0
  25142. }(), bt = hr[t]; bt--;)(function(r) {
  25143. n[r] = u[i][r] = function(t) {
  25144. return n.is(t, "function") && (this.events = this.events || [], this.events.push({
  25145. name: r,
  25146. f: t,
  25147. unbind: au(this.shape || this.node || c, r, t, this)
  25148. })), this
  25149. };
  25150. n["un" + r] = u[i]["un" + r] = function(n) {
  25151. for (var i = this.events, u = i[t]; u--;)
  25152. if (i[u].name == r && i[u].f == n) return i[u].unbind(), i.splice(u, 1), i.length || delete this.events, this;
  25153. return this
  25154. }
  25155. })(hr[bt]);
  25156. u[i].hover = function(n, t) {
  25157. return this.mouseover(n).mouseout(t)
  25158. };
  25159. u[i].unhover = function(n, t) {
  25160. return this.unmouseover(n).unmouseout(t)
  25161. };
  25162. u[i].drag = function(n, t, i) {
  25163. function u(t) {
  25164. var u = t.clientX,
  25165. f = t.clientY,
  25166. e, i;
  25167. if (wi) {
  25168. for (e = t.touches.length; e--;)
  25169. if (i = t.touches[e], i.identifier == r._drag.id) {
  25170. u = i.clientX;
  25171. f = i.clientY;
  25172. (t.originalEvent ? t.originalEvent : t).preventDefault();
  25173. break
  25174. }
  25175. } else t.preventDefault();
  25176. n && n.call(r, u - r._drag.x, f - r._drag.y, u, f)
  25177. }
  25178. function f() {
  25179. r._drag = {};
  25180. Raphael.unmousemove(u).unmouseup(f);
  25181. i && i.call(r)
  25182. }
  25183. this._drag = {};
  25184. var r = this.mousedown(function(n) {
  25185. (n.originalEvent ? n.originalEvent : n).preventDefault();
  25186. this._drag.x = n.clientX;
  25187. this._drag.y = n.clientY;
  25188. this._drag.id = n.identifier;
  25189. t && t.call(this, n.clientX, n.clientY);
  25190. Raphael.mousemove(u).mouseup(f)
  25191. });
  25192. return this
  25193. };
  25194. y[i].circle = function(n, t, i) {
  25195. return ru(this, n || 0, t || 0, i || 0)
  25196. };
  25197. y[i].rect = function(n, t, i, r, u) {
  25198. return uu(this, n || 0, t || 0, i || 0, r || 0, u || 0)
  25199. };
  25200. y[i].ellipse = function(n, t, i, r) {
  25201. return fu(this, n || 0, t || 0, i || 0, r || 0)
  25202. };
  25203. y[i].path = function(t) {
  25204. return !t || n.is(t, wt) || n.is(t[0], et) || (t += r), tu(n.format[b](n, arguments), this)
  25205. };
  25206. y[i].image = function(n, t, i, r, u) {
  25207. return eu(this, n || "about:blank", t || 0, i || 0, r || 0, u || 0)
  25208. };
  25209. y[i].text = function(n, t, i) {
  25210. return ou(this, n || 0, t || 0, i || r)
  25211. };
  25212. y[i].set = function(n) {
  25213. return arguments[t] > 1 && (n = Array[i].splice.call(arguments, 0, arguments[t])), new ct(n)
  25214. };
  25215. y[i].setSize = su;
  25216. y[i].top = y[i].bottom = null;
  25217. y[i].raphael = n;
  25218. u[i].resetScale = function() {
  25219. if (this.removed) return this;
  25220. this._.sx = 1;
  25221. this._.sy = 1;
  25222. this.attrs.scale = "1 1"
  25223. };
  25224. u[i].scale = function(n, i, u, f) {
  25225. var a, o, h, nt, it, l, s, w;
  25226. if (this.removed) return this;
  25227. if (n == null && i == null) return {
  25228. x: this._.sx,
  25229. y: this._.sy,
  25230. toString: vu
  25231. };
  25232. if (i = i || n, +i || (i = n), h = this.attrs, n != 0) {
  25233. var c = this.getBBox(),
  25234. v = c.x + c.width / 2,
  25235. p = c.y + c.height / 2;
  25236. a = n / this._.sx;
  25237. o = i / this._.sy;
  25238. u = +u || u == 0 ? u : v;
  25239. f = +f || f == 0 ? f : p;
  25240. c = ~~(n / e.abs(n));
  25241. var y = ~~(i / e.abs(i)),
  25242. rt = this.node.style,
  25243. d = u + (v - u) * a;
  25244. p = f + (p - f) * o;
  25245. switch (this.type) {
  25246. case "rect":
  25247. case "image":
  25248. nt = h.width * c * a;
  25249. it = h.height * y * o;
  25250. this.attr({
  25251. height: it,
  25252. r: h.r * lt(c * a, y * o),
  25253. width: nt,
  25254. x: d - nt / 2,
  25255. y: p - it / 2
  25256. });
  25257. break;
  25258. case "circle":
  25259. case "ellipse":
  25260. this.attr({
  25261. rx: h.rx * c * a,
  25262. ry: h.ry * y * o,
  25263. r: h.r * lt(c * a, y * o),
  25264. cx: d,
  25265. cy: p
  25266. });
  25267. break;
  25268. case "text":
  25269. this.attr({
  25270. x: d,
  25271. y: p
  25272. });
  25273. break;
  25274. case "path":
  25275. v = gi(h.path);
  25276. for (var ut = !0, b = 0, ft = v[t]; b < ft; b++)
  25277. if (l = v[b], s = ei.call(l[0]), !(s == "M" && ut))
  25278. if (ut = !1, s == "A") l[v[b][t] - 2] *= a, l[v[b][t] - 1] *= o, l[1] *= c * a, l[2] *= y * o, l[5] = +!(c + y ? !+l[5] : +l[5]);
  25279. else if (s == "H")
  25280. for (s = 1, w = l[t]; s < w; s++) l[s] *= a;
  25281. else if (s == "V")
  25282. for (s = 1, w = l[t]; s < w; s++) l[s] *= o;
  25283. else
  25284. for (s = 1, w = l[t]; s < w; s++) l[s] *= s % 2 ? a : o;
  25285. o = ti(v);
  25286. a = d - o.x - o.width / 2;
  25287. o = p - o.y - o.height / 2;
  25288. v[0][1] += a;
  25289. v[0][2] += o;
  25290. this.attr({
  25291. path: v
  25292. })
  25293. }
  25294. this.type in {
  25295. text: 1,
  25296. image: 1
  25297. } && (c != 1 || y != 1) ? this.transformations ? (this.transformations[2] = "scale(" [k](c, ",", y, ")"), this.node[ot]("transform", this.transformations[tt](g)), a = c == -1 ? -h.x - (nt || 0) : h.x, o = y == -1 ? -h.y - (it || 0) : h.y, this.attr({
  25298. x: a,
  25299. y: o
  25300. }), h.fx = c - 1, h.fy = y - 1) : (this.node.filterMatrix = ki + ".Matrix(M11=" [k](c, ", M12=0, M21=0, M22=", y, ", Dx=0, Dy=0, sizingmethod='auto expand', filtertype='bilinear')"), rt.filter = (this.node.filterMatrix || r) + (this.node.filterOpacity || r)) : this.transformations ? (this.transformations[2] = r, this.node[ot]("transform", this.transformations[tt](g)), h.fx = 0, h.fy = 0) : (this.node.filterMatrix = r, rt.filter = (this.node.filterMatrix || r) + (this.node.filterOpacity || r));
  25301. h.scale = [n, i, u, f][tt](g);
  25302. this._.sx = n;
  25303. this._.sy = i
  25304. }
  25305. return this
  25306. };
  25307. u[i].clone = function() {
  25308. if (this.removed) return null;
  25309. var n = this.attr();
  25310. return delete n.scale, delete n.translation, this.paper[this.type]().attr(n)
  25311. };
  25312. ur = ut(function(t, i, r, u, f, e, o, s, h) {
  25313. for (var y, a, v = 0, c = 0; c < 1.001; c += .001) {
  25314. if (a = n.findDotsAtSegment(t, i, r, u, f, e, o, s, c), c && (v += l(l(y.x - a.x, 2) + l(y.y - a.y, 2), .5)), v >= h) return a;
  25315. y = a
  25316. }
  25317. });
  25318. var yf = ut(function(n, t, i, r, u, f, e, o) {
  25319. for (var h, c = {
  25320. x: 0,
  25321. y: 0
  25322. }, a = 0, s = 0; s < 1.01; s += .01) h = ii(n, t, i, r, u, f, e, o, s), s && (a += l(l(c.x - h.x, 2) + l(c.y - h.y, 2), .5)), c = h;
  25323. return a
  25324. }),
  25325. yu = fr(1),
  25326. vi = fr(),
  25327. er = fr(0, 1);
  25328. u[i].getTotalLength = function() {
  25329. if (this.type == "path") return this.node.getTotalLength ? this.node.getTotalLength() : yu(this.attrs.path)
  25330. };
  25331. u[i].getPointAtLength = function(n) {
  25332. if (this.type == "path") return vi(this.attrs.path, n)
  25333. };
  25334. u[i].getSubpath = function(n, t) {
  25335. if (this.type == "path") return e.abs(this.getTotalLength() - t) < 1e-6 ? er(this.attrs.path, n).end : (t = er(this.attrs.path, t, 1), n ? er(t, n).end : t)
  25336. };
  25337. n.easing_formulas = {
  25338. linear: function(n) {
  25339. return n
  25340. },
  25341. "<": function(n) {
  25342. return l(n, 3)
  25343. },
  25344. ">": function(n) {
  25345. return l(n - 1, 3) + 1
  25346. },
  25347. "<>": function(n) {
  25348. return (n *= 2, n < 1) ? l(n, 3) / 2 : (n -= 2, (l(n, 3) + 2) / 2)
  25349. },
  25350. backIn: function(n) {
  25351. var t = 1.70158;
  25352. return n * n * ((t + 1) * n - t)
  25353. },
  25354. backOut: function(n) {
  25355. n -= 1;
  25356. var t = 1.70158;
  25357. return n * n * ((t + 1) * n + t) + 1
  25358. },
  25359. elastic: function(n) {
  25360. if (n == 0 || n == 1) return n;
  25361. var t = .3,
  25362. i = t / 4;
  25363. return l(2, -10 * n) * e.sin((n - i) * 2 * e.PI / t) + 1
  25364. },
  25365. bounce: function(n) {
  25366. var i = 7.5625,
  25367. t = 2.75;
  25368. return n < 1 / t ? n = i * n * n : n < 2 / t ? (n -= 1.5 / t, n = i * n * n + .75) : n < 2.5 / t ? (n -= 2.25 / t, n = i * n * n + .9375) : (n -= 2.625 / t, n = i * n * n + .984375), n
  25369. }
  25370. };
  25371. rt = {
  25372. length: 0
  25373. };
  25374. u[i].animateWith = function(n, t, i, r, u) {
  25375. return rt[n.id] && (t.start = rt[n.id].start), this.animate(t, i, r, u)
  25376. };
  25377. u[i].animateAlong = wu();
  25378. u[i].animateAlongBack = wu(1);
  25379. u[i].onAnimation = function(n) {
  25380. return this._run = n || 0, this
  25381. };
  25382. u[i].animate = function(i, u, f, e) {
  25383. var o, w, k;
  25384. (n.is(f, "function") || !f) && (e = f || null);
  25385. var l = {},
  25386. y = {},
  25387. a = {};
  25388. for (o in i)
  25389. if (i[s](o) && di[s](o)) {
  25390. l[o] = this.attr(o);
  25391. l[o] == null && (l[o] = oi[o]);
  25392. y[o] = i[o];
  25393. switch (di[o]) {
  25394. case "along":
  25395. var c = yu(i[o]),
  25396. v = vi(i[o], c * !!i.back),
  25397. b = this.getBBox();
  25398. a[o] = c / u;
  25399. a.tx = b.x;
  25400. a.ty = b.y;
  25401. a.sx = v.x;
  25402. a.sy = v.y;
  25403. y.rot = i.rot;
  25404. y.back = i.back;
  25405. y.len = c;
  25406. i.rot && (a.r = h(this.rotate()) || 0);
  25407. break;
  25408. case nt:
  25409. a[o] = (y[o] - l[o]) / u;
  25410. break;
  25411. case "colour":
  25412. l[o] = n.getRGB(l[o]);
  25413. c = n.getRGB(y[o]);
  25414. a[o] = {
  25415. r: (c.r - l[o].r) / u,
  25416. g: (c.g - l[o].g) / u,
  25417. b: (c.b - l[o].b) / u
  25418. };
  25419. break;
  25420. case "path":
  25421. for (c = ai(l[o], y[o]), l[o] = c[0], v = c[1], a[o] = [], c = 0, b = l[o][t]; c < b; c++)
  25422. for (a[o][c] = [0], w = 1, k = l[o][c][t]; w < k; w++) a[o][c][w] = (v[c][w] - l[o][c][w]) / u;
  25423. break;
  25424. case "csv":
  25425. v = (i[o] + r)[p](ft);
  25426. c = (l[o] + r)[p](ft);
  25427. switch (o) {
  25428. case "translation":
  25429. l[o] = [0, 0];
  25430. a[o] = [v[0] / u, v[1] / u];
  25431. break;
  25432. case "rotation":
  25433. l[o] = c[1] == v[1] && c[2] == v[2] ? c : [0, v[1], v[2]];
  25434. a[o] = [(v[0] - l[o][0]) / u, 0, 0];
  25435. break;
  25436. case "scale":
  25437. i[o] = v;
  25438. l[o] = (l[o] + r)[p](ft);
  25439. a[o] = [(v[0] - l[o][0]) / u, (v[1] - l[o][1]) / u, 0, 0];
  25440. break;
  25441. case "clip-rect":
  25442. for (l[o] = (l[o] + r)[p](ft), a[o] = [], c = 4; c--;) a[o][c] = (v[c] - l[o][c]) / u
  25443. }
  25444. y[o] = v
  25445. }
  25446. }
  25447. return this.stop(), this.in_animation = 1, rt[this.id] = {
  25448. start: i.start || +new Date,
  25449. ms: u,
  25450. easing: f,
  25451. from: l,
  25452. diff: a,
  25453. to: y,
  25454. el: this,
  25455. callback: e,
  25456. t: {
  25457. x: 0,
  25458. y: 0
  25459. }
  25460. }, ++rt[t] == 1 && pu(), this
  25461. };
  25462. u[i].stop = function() {
  25463. return rt[this.id] && rt[t]--, delete rt[this.id], this
  25464. };
  25465. u[i].translate = function(n, t) {
  25466. return this.attr({
  25467. translation: n + " " + t
  25468. })
  25469. };
  25470. u[i][d] = function() {
  25471. return "Raphaël’s object"
  25472. };
  25473. n.ae = rt;
  25474. ct[i][a] = function() {
  25475. for (var n, i, r = 0, f = arguments[t]; r < f; r++)(n = arguments[r]) && (n.constructor == u || n.constructor == ct) && (i = this.items[t], this[i] = this.items[i] = n, this[t]++);
  25476. return this
  25477. };
  25478. ct[i].pop = function() {
  25479. return delete this[this[t]--], this.items.pop()
  25480. };
  25481. for (pi in u[i]) u[i][s](pi) && (ct[i][pi] = function(n) {
  25482. return function() {
  25483. for (var i = 0, r = this.items[t]; i < r; i++) this.items[i][n][b](this.items[i], arguments);
  25484. return this
  25485. }
  25486. }(pi));
  25487. return ct[i].attr = function(i, r) {
  25488. var u, f;
  25489. if (i && n.is(i, et) && n.is(i[0], "object"))
  25490. for (r = 0, u = i[t]; r < u; r++) this.items[r].attr(i[r]);
  25491. else
  25492. for (u = 0, f = this.items[t]; u < f; u++) this.items[u].attr(i, r);
  25493. return this
  25494. }, ct[i].animate = function(i, r, u, f) {
  25495. (n.is(u, "function") || !u) && (f = u || null);
  25496. var s = this.items[t],
  25497. o = s,
  25498. h, c = this,
  25499. e;
  25500. for (f && (e = function() {
  25501. --s || f.call(c)
  25502. }), u = n.is(u, wt) ? u : e, h = this.items[--o].animate(i, r, u, e); o--;) this.items[o].animateWith(h, i, r, u, e);
  25503. return this
  25504. }, ct[i].insertAfter = function(n) {
  25505. for (var i = this.items[t]; i--;) this.items[i].insertAfter(n);
  25506. return this
  25507. }, ct[i].getBBox = function() {
  25508. for (var n, i = [], r = [], u = [], f = [], e = this.items[t]; e--;) n = this.items[e].getBBox(), i[a](n.x), r[a](n.y), u[a](n.x + n.width), f[a](n.y + n.height);
  25509. return i = lt[b](0, i), r = lt[b](0, r), {
  25510. x: i,
  25511. y: r,
  25512. width: ht[b](0, u) - i,
  25513. height: ht[b](0, f) - r
  25514. }
  25515. }, ct[i].clone = function(n) {
  25516. n = new ct;
  25517. for (var i = 0, r = this.items[t]; i < r; i++) n[a](this.items[i].clone());
  25518. return n
  25519. }, n.registerFont = function(n) {
  25520. var i, t, u, r, f;
  25521. if (!n.face) return n;
  25522. this.fonts = this.fonts || {};
  25523. i = {
  25524. w: n.w,
  25525. face: {},
  25526. glyphs: {}
  25527. };
  25528. t = n.face["font-family"];
  25529. for (u in n.face) n.face[s](u) && (i.face[u] = n.face[u]);
  25530. if (this.fonts[t] ? this.fonts[t][a](i) : this.fonts[t] = [i], !n.svg) {
  25531. i.face["units-per-em"] = pt(n.face["units-per-em"], 10);
  25532. for (r in n.glyphs)
  25533. if (n.glyphs[s](r) && (t = n.glyphs[r], i.glyphs[r] = {
  25534. w: t.w,
  25535. k: {},
  25536. d: t.d && "M" + t.d[w](/[mlcxtrv]/g, function(n) {
  25537. return {
  25538. l: "L",
  25539. c: "C",
  25540. x: "z",
  25541. t: "m",
  25542. r: "l",
  25543. v: "c"
  25544. }[n] || "M"
  25545. }) + "z"
  25546. }, t.k))
  25547. for (f in t.k) t[s](f) && (i.glyphs[r].k[f] = t.k[f])
  25548. }
  25549. return n
  25550. }, y[i].getFont = function(i, u, f, e) {
  25551. var h, o, c;
  25552. if (e = e || "normal", f = f || "normal", u = +u || {
  25553. normal: 400,
  25554. bold: 700,
  25555. lighter: 300,
  25556. bolder: 800
  25557. }[u] || 400, n.fonts) {
  25558. if (h = n.fonts[i], !h) {
  25559. i = new RegExp("(^|\\s)" + i[w](/[^\w\d\s+!~.:_-]/g, r) + "(\\s|$)", "i");
  25560. for (o in n.fonts)
  25561. if (n.fonts[s](o) && i.test(o)) {
  25562. h = n.fonts[o];
  25563. break
  25564. }
  25565. }
  25566. if (h)
  25567. for (o = 0, i = h[t]; o < i; o++)
  25568. if (c = h[o], c.face["font-weight"] == u && (c.face["font-style"] == f || !c.face["font-style"]) && c.face["font-stretch"] == e) break;
  25569. return c
  25570. }
  25571. }, y[i].print = function(i, u, f, e, o, s) {
  25572. var h, b, l, v;
  25573. s = s || "middle";
  25574. var y = this.set(),
  25575. c = (f + r)[p](r),
  25576. w = 0;
  25577. if (n.is(e, f) && (e = this.getFont(e)), e) {
  25578. for (f = (o || 16) / e.face["units-per-em"], h = e.face.bbox.split(ft), o = +h[0], s = +h[1] + (s == "baseline" ? h[3] - h[1] + +e.face.descent : (h[3] - h[1]) / 2), h = 0, b = c[t]; h < b; h++) l = h && e.glyphs[c[h - 1]] || {}, v = e.glyphs[c[h]], w += h ? (l.w || e.w) + (l.k && l.k[c[h]] || 0) : 0, v && v.d && y[a](this.path(v.d).attr({
  25579. fill: "#000",
  25580. stroke: "none",
  25581. translation: [w, 0]
  25582. }));
  25583. y.scale(f, f, o, s).translate(i - o, u - s)
  25584. }
  25585. return y
  25586. }, bu = /\{(\d+)\}/g, n.format = function(i, u) {
  25587. var f = n.is(u, et) ? [0][k](u) : arguments;
  25588. return i && n.is(i, wt) && f[t] - 1 && (i = i[w](bu, function(n, t) {
  25589. return f[++t] == null ? r : f[t]
  25590. })), i || r
  25591. }, n.ninja = function() {
  25592. return sr.was ? Raphael = sr.is : delete Raphael, n
  25593. }, n.el = u[i], n
  25594. }();
  25595. dateTimeFromServer = new Date;
  25596. dateTimeFromClient = new Date;
  25597. $(document).ready(function() {
  25598. function n(n) {
  25599. return n < 10 ? "0" + n.toString() : n.toString()
  25600. }
  25601. $(".multiMenu").hover(function() {
  25602. mouse_is_inside = !0
  25603. }, function() {
  25604. mouse_is_inside = !1
  25605. });
  25606. $("body").mouseup(function() {
  25607. mouse_is_inside || $(".multiMenu .layer").slideUp(function() {
  25608. $(this).parent("div").removeClass("active")
  25609. })
  25610. });
  25611. try {
  25612. $.ajax({
  25613. url: "/Home/BiezacaDataGodzina",
  25614. type: "GET",
  25615. async: !1,
  25616. cache: !1,
  25617. success: function(n) {
  25618. dateTimeFromServer = new Date(parseInt(n.substr(6)));
  25619. dateTimeFromClient = new Date
  25620. }
  25621. })
  25622. } catch (t) {}
  25623. setInterval(function() {
  25624. var u = dateTimeFromServer - dateTimeFromClient,
  25625. f = (new Date).getTime(),
  25626. r = new Date,
  25627. t, i;
  25628. r.setTime(f + u);
  25629. t = r;
  25630. t.setDate(t.getDate());
  25631. var e = t.getDate(),
  25632. o = t.getMonth() + 1,
  25633. s = t.getFullYear(),
  25634. h = n(e) + " - " + n(o) + " - " + s;
  25635. $("#date").html(h);
  25636. i = r;
  25637. i.setDate(i.getDate());
  25638. var c = i.getHours(),
  25639. l = i.getMinutes(),
  25640. a = n(c) + ":" + n(l);
  25641. $("#time").html(a)
  25642. }, 1e3);
  25643. $(".showDetails").click(function() {
  25644. $(this).prev(".details").slideToggle();
  25645. $(this).find(".gui").toggleClass("icoDArrDown icoDArrUp");
  25646. $(this).toggleClass("act")
  25647. });
  25648. indirectStation()
  25649. });
  25650. mouse_is_inside = !1,
  25651. function(n) {
  25652. n.cookies = {
  25653. render: function(t) {
  25654. var i = "";
  25655. i += '<div id="cookiesBar"><div id="cookiesBarWrap"><p>' + C_Cookie_Tekst_1;
  25656. i += t.privacyPolicy ? ' <a href="' + t.cookiesPageURL + '" title="' + C_Cookie_PolitykaPrywatnosciTitle + '">' + C_Cookie_PolitykaPrywatnosci + "<\/a>.<\/p>" : ' <a href="' + t.cookiesPageURL + '" title="' + C_Cookie_RegulaminSerwisu + '">' + C_Cookie_RegulaminSerwisu + "<\/a>.<\/p>";
  25657. i += "<p>" + C_Cookie_Tekst_2 + '<\/p><a id="cookiesBarClose" href="#" title="' + C_Cookie_Zamknij + '">' + C_Cookie_Zamknij + "<\/a><\/div><\/div>";
  25658. n.cookie("cookie") || (n("body").append(i), n.fn.delegate ? n("#cookiesBar").delegate("#cookiesBarClose", "click", function(t) {
  25659. n.cookies.closeCallback(t)
  25660. }) : n("#cookiesBarClose").bind("click", function(t) {
  25661. n.cookies.closeCallback(t)
  25662. }))
  25663. },
  25664. closeCallback: function(t) {
  25665. return n("#cookiesBar").fadeOut(), n.cookie("cookie") || n.cookie("cookie", !0, {
  25666. path: "/",
  25667. expires: 30
  25668. }), t.preventDefault(), !1
  25669. }
  25670. }
  25671. }(jQuery);
  25672. String.prototype.replaceAll = function(n, t) {
  25673. return this.split(n).join(t)
  25674. };
  25675. $.ajaxSetup({
  25676. headers: {
  25677. "X-Kendo-Ui-Version": "r3-2016-sp2"
  25678. }
  25679. });
  25680. ! function(n) {
  25681. function i() {
  25682. var i = document.createElement("smartbanner"),
  25683. n = {
  25684. WebkitTransition: "webkitTransitionEnd",
  25685. MozTransition: "transitionend",
  25686. OTransition: "oTransitionEnd otransitionend",
  25687. transition: "transitionend"
  25688. };
  25689. for (var t in n)
  25690. if (i.style[t] !== undefined) return {
  25691. end: n[t]
  25692. };
  25693. return !1
  25694. }
  25695. var t = function(t) {
  25696. var f, i, r, u;
  25697. if ((this.origHtmlMargin = parseFloat(n("html").css("margin-top")), this.options = n.extend({}, n.smartbanner.defaults, t), f = navigator.standalone, i = navigator.userAgent, this.options.force ? this.type = this.options.force : i.match(/Windows Phone 8/i) != null && i.match(/Touch/i) !== null ? this.type = "windows" : i.match(/iPhone|iPod/i) != null || i.match(/iPad/) && this.options.iOSUniversalApp ? i.match(/Safari/i) != null && (i.match(/CriOS/i) != null || window.Number(i.substr(i.indexOf("OS ") + 3, 3).replace("_", ".")) < 6) && (this.type = "ios") : i.match(/\bSilk\/(.*\bMobile Safari\b)?/) || i.match(/\bKF\w/) || i.match("Kindle Fire") ? this.type = "kindle" : i.match(/Android/i) != null && (this.type = "android"), this.type && !f && !this.getCookie("sb-closed") && !this.getCookie("sb-installed")) && (this.scale = this.options.scale == "auto" ? n(window).width() / window.screen.width : this.options.scale, this.scale < 1 && (this.scale = 1), r = n(this.type == "android" ? 'meta[name="google-play-app"]' : this.type == "ios" ? 'meta[name="apple-itunes-app"]' : this.type == "kindle" ? 'meta[name="kindle-fire-app"]' : 'meta[name="msApplication-ID"]'), r.length != 0)) {
  25698. if (this.type == "windows") this.appId = n('meta[name="msApplication-PackageFamilyName"]').attr("content");
  25699. else if (u = /app-id=([^\s,]+)/.exec(r.attr("content")), u) this.appId = u[1];
  25700. else return;
  25701. this.title = this.options.title ? this.options.title : r.data("title") || n("title").text().replace(/\s*[|\-·].*$/, "");
  25702. this.author = this.options.author ? this.options.author : r.data("author") || (n('meta[name="author"]').length ? n('meta[name="author"]').attr("content") : window.location.hostname);
  25703. this.iconUrl = r.data("icon-url");
  25704. this.price = r.data("price");
  25705. this.create();
  25706. this.show();
  25707. this.listen()
  25708. }
  25709. };
  25710. (t.prototype = {
  25711. constructor: t,
  25712. create: function() {
  25713. var t, i = this.options.url ? this.options.url : (this.type == "windows" ? "ms-windows-store:navigate?appid=" : this.type == "android" ? "market://details?id=" : this.type == "kindle" ? "amzn://apps/android?asin=" : "https://itunes.apple.com/" + this.options.appStoreLanguage + "/app/id") + this.appId,
  25714. u = this.price || this.options.price,
  25715. e = u ? u + " - " + (this.type == "android" ? this.options.inGooglePlay : this.type == "kindle" ? this.options.inAmazonAppStore : this.type == "ios" ? this.options.inAppStore : this.options.inWindowsStore) : "",
  25716. f = this.options.iconGloss === null ? this.type == "ios" : this.options.iconGloss,
  25717. r;
  25718. this.type == "android" && this.options.GooglePlayParams && (i = i + "&referrer=" + this.options.GooglePlayParams);
  25719. r = '<div id="smartbanner" class="' + this.type + '"><div class="sb-container"><a href="#" class="sb-close">&times;<\/a><span class="sb-icon"><\/span><div class="sb-info"><strong>' + this.title + "<\/strong><span>" + this.author + "<\/span><span>" + e + '<\/span><\/div><a href="' + i + '" class="sb-button"><span>' + this.options.button + "<\/span><\/a><\/div><\/div>";
  25720. this.options.layer ? n(this.options.appendToSelector).append(r) : n(this.options.appendToSelector).prepend(r);
  25721. this.options.icon ? t = this.options.icon : this.iconUrl ? t = this.iconUrl : n('link[rel="apple-touch-icon-precomposed"]').length > 0 ? (t = n('link[rel="apple-touch-icon-precomposed"]').attr("href"), this.options.iconGloss === null && (f = !1)) : n('link[rel="apple-touch-icon"]').length > 0 ? t = n('link[rel="apple-touch-icon"]').attr("href") : n('meta[name="msApplication-TileImage"]').length > 0 ? t = n('meta[name="msApplication-TileImage"]').attr("content") : n('meta[name="msapplication-TileImage"]').length > 0 && (t = n('meta[name="msapplication-TileImage"]').attr("content"));
  25722. t ? (n("#smartbanner .sb-icon").css("background-image", "url(" + t + ")"), f && n("#smartbanner .sb-icon").addClass("gloss")) : n("#smartbanner").addClass("no-icon");
  25723. this.bannerHeight = n("#smartbanner").outerHeight() + 2;
  25724. this.scale > 1 && (n("#smartbanner").css("top", parseFloat(n("#smartbanner").css("top")) * this.scale).css("height", parseFloat(n("#smartbanner").css("height")) * this.scale).hide(), n("#smartbanner .sb-container").css("-webkit-transform", "scale(" + this.scale + ")").css("-msie-transform", "scale(" + this.scale + ")").css("-moz-transform", "scale(" + this.scale + ")").css("width", n(window).width() / this.scale));
  25725. n("#smartbanner").css("position", this.options.layer ? "absolute" : "static")
  25726. },
  25727. listen: function() {
  25728. n("#smartbanner .sb-close").on("click", n.proxy(this.close, this));
  25729. n("#smartbanner .sb-button").on("click", n.proxy(this.install, this))
  25730. },
  25731. show: function(t) {
  25732. var i = n("#smartbanner"),
  25733. r;
  25734. i.stop();
  25735. this.options.layer ? (i.animate({
  25736. top: 0,
  25737. display: "block"
  25738. }, this.options.speedIn).addClass("shown").show(), n(this.pushSelector).animate({
  25739. paddingTop: this.origHtmlMargin + this.bannerHeight * this.scale
  25740. }, this.options.speedIn, "swing", t)) : n.support.transition ? (i.animate({
  25741. top: 0
  25742. }, this.options.speedIn).addClass("shown"), r = function() {
  25743. n("html").removeClass("sb-animation");
  25744. t && t()
  25745. }, n(this.pushSelector).addClass("sb-animation").one(n.support.transition.end, r).emulateTransitionEnd(this.options.speedIn).css("margin-top", this.origHtmlMargin + this.bannerHeight * this.scale)) : i.slideDown(this.options.speedIn).addClass("shown")
  25746. },
  25747. hide: function(t) {
  25748. var i = n("#smartbanner"),
  25749. r;
  25750. i.stop();
  25751. this.options.layer ? (i.animate({
  25752. top: -1 * this.bannerHeight * this.scale,
  25753. display: "block"
  25754. }, this.options.speedIn).removeClass("shown"), n(this.pushSelector).animate({
  25755. paddingTop: this.origHtmlMargin
  25756. }, this.options.speedIn, "swing", t)) : n.support.transition ? (this.type !== "android" ? i.css("top", -1 * this.bannerHeight * this.scale).removeClass("shown") : i.css({
  25757. display: "none"
  25758. }).removeClass("shown"), r = function() {
  25759. n("html").removeClass("sb-animation");
  25760. t && t()
  25761. }, n(this.pushSelector).addClass("sb-animation").one(n.support.transition.end, r).emulateTransitionEnd(this.options.speedOut).css("margin-top", this.origHtmlMargin)) : i.slideUp(this.options.speedOut).removeClass("shown")
  25762. },
  25763. close: function(n) {
  25764. n.preventDefault();
  25765. this.hide();
  25766. this.setCookie("sb-closed", "true", this.options.daysHidden)
  25767. },
  25768. install: function() {
  25769. this.options.hideOnInstall && this.hide();
  25770. this.setCookie("sb-installed", "true", this.options.daysReminder)
  25771. },
  25772. setCookie: function(n, t, i) {
  25773. var r = new Date;
  25774. r.setDate(r.getDate() + i);
  25775. t = encodeURI(t) + (i == null ? "" : "; expires=" + r.toUTCString());
  25776. document.cookie = n + "=" + t + "; path=/;"
  25777. },
  25778. getCookie: function(n) {
  25779. for (var r, u, i = document.cookie.split(";"), t = 0; t < i.length; t++)
  25780. if (r = i[t].substr(0, i[t].indexOf("=")), u = i[t].substr(i[t].indexOf("=") + 1), r = r.replace(/^\s+|\s+$/g, ""), r == n) return decodeURI(u);
  25781. return null
  25782. },
  25783. switchType: function() {
  25784. var t = this;
  25785. this.hide(function() {
  25786. t.type = t.type == "android" ? "ios" : "android";
  25787. var i = n(t.type == "android" ? 'meta[name="google-play-app"]' : 'meta[name="apple-itunes-app"]').attr("content");
  25788. t.appId = /app-id=([^\s,]+)/.exec(i)[1];
  25789. n("#smartbanner").detach();
  25790. t.create();
  25791. t.show()
  25792. })
  25793. }
  25794. }, n.smartbanner = function(i) {
  25795. var u = n(window),
  25796. r = u.data("smartbanner"),
  25797. f = typeof i == "object" && i;
  25798. r || u.data("smartbanner", r = new t(f));
  25799. typeof i == "string" && r[i]()
  25800. }, n.smartbanner.defaults = {
  25801. title: null,
  25802. author: null,
  25803. price: "FREE",
  25804. appStoreLanguage: "us",
  25805. inAppStore: "On the App Store",
  25806. inGooglePlay: "In Google Play",
  25807. inAmazonAppStore: "In the Amazon Appstore",
  25808. inWindowsStore: "In the Windows Store",
  25809. GooglePlayParams: null,
  25810. icon: null,
  25811. iconGloss: null,
  25812. button: "VIEW",
  25813. url: null,
  25814. scale: "auto",
  25815. speedIn: 300,
  25816. speedOut: 400,
  25817. daysHidden: 15,
  25818. daysReminder: 90,
  25819. force: null,
  25820. hideOnInstall: !0,
  25821. layer: !1,
  25822. iOSUniversalApp: !0,
  25823. appendToSelector: "body",
  25824. pushSelector: "html"
  25825. }, n.smartbanner.Constructor = t, n.support.transition === undefined) && (n.fn.emulateTransitionEnd = function(t) {
  25826. var i = !1,
  25827. u = this,
  25828. r;
  25829. n(this).one(n.support.transition.end, function() {
  25830. i = !0
  25831. });
  25832. return r = function() {
  25833. i || n(u).trigger(n.support.transition.end)
  25834. }, setTimeout(r, t), this
  25835. }, n(function() {
  25836. n.support.transition = i()
  25837. }):)
  25838. }(window.jQuery)