123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455 |
-
- (function (S, undefined) {
-
- var host = this,
- meta = {
-
- mix:function (r, s, ov, wl, deep) {
- if (!s || !r) {
- return r;
- }
- if (ov === undefined) {
- ov = true;
- }
- var i, p, len;
- if (wl && (len = wl.length)) {
- for (i = 0; i < len; i++) {
- p = wl[i];
- if (p in s) {
- _mix(p, r, s, ov, deep);
- }
- }
- } else {
- for (p in s) {
- _mix(p, r, s, ov, deep);
- }
- }
- return r;
- }
- },
- _mix = function (p, r, s, ov, deep) {
- if (ov || !(p in r)) {
- var target = r[p], src = s[p];
-
- if (target === src) {
- return;
- }
-
- if (deep && src && (S.isArray(src) || S.isPlainObject(src))) {
-
-
- var clone = target && (S.isArray(target) || S.isPlainObject(target)) ?
- target :
- (S.isArray(src) ? [] : {});
- r[p] = S.mix(clone, src, ov, undefined, true);
- } else if (src !== undefined) {
- r[p] = s[p];
- }
- }
- },
-
-
- seed = (host && host[S]) || {},
- guid = 0,
- EMPTY = '';
-
-
- host = seed.__HOST || (seed.__HOST = host || {});
-
-
- S = host[S] = meta.mix(seed, meta);
- S.mix(S, {
- configs:{},
-
- __APP_MEMBERS:['namespace'],
- __APP_INIT_METHODS:['__init'],
-
- version:'1.20',
- buildTime:'20120208172832',
-
- merge:function () {
- var o = {}, i, l = arguments.length;
- for (i = 0; i < l; i++) {
- S.mix(o, arguments[i]);
- }
- return o;
- },
-
- augment:function (/*r, s1, s2, ..., ov, wl*/) {
- var args = S.makeArray(arguments),
- len = args.length - 2,
- r = args[0],
- ov = args[len],
- wl = args[len + 1],
- i = 1;
- if (!S.isArray(wl)) {
- ov = wl;
- wl = undefined;
- len++;
- }
- if (!S.isBoolean(ov)) {
- ov = undefined;
- len++;
- }
- for (; i < len; i++) {
- S.mix(r.prototype, args[i].prototype || args[i], ov, wl);
- }
- return r;
- },
-
- extend:function (r, s, px, sx) {
- if (!s || !r) {
- return r;
- }
- var create = Object.create ?
- function (proto, c) {
- return Object.create(proto, {
- constructor:{
- value:c
- }
- });
- } :
- function (proto, c) {
- function F() {
- }
- F.prototype = proto;
- var o = new F();
- o.constructor = c;
- return o;
- },
- sp = s.prototype,
- rp;
-
- rp = create(sp, r);
- r.prototype = S.mix(rp, r.prototype);
- r.superclass = create(sp, s);
-
- if (px) {
- S.mix(rp, px);
- }
-
- if (sx) {
- S.mix(r, sx);
- }
- return r;
- },
-
-
- __init:function () {
- this.Config = this.Config || {};
- this.Env = this.Env || {};
-
-
-
- this.Config.debug = '@DEBUG@';
- },
-
- namespace:function () {
- var args = S.makeArray(arguments),
- l = args.length,
- o = null, i, j, p,
- global = (args[l - 1] === true && l--);
- for (i = 0; i < l; i++) {
- p = (EMPTY + args[i]).split('.');
- o = global ? host : this;
- for (j = (host[p[0]] === o) ? 1 : 0; j < p.length; ++j) {
- o = o[p[j]] = o[p[j]] || { };
- }
- }
- return o;
- },
-
- app:function (name, sx) {
- var isStr = S.isString(name),
- O = isStr ? host[name] || {} : name,
- i = 0,
- len = S.__APP_INIT_METHODS.length;
- S.mix(O, this, true, S.__APP_MEMBERS);
- for (; i < len; i++) {
- S[S.__APP_INIT_METHODS[i]].call(O);
- }
- S.mix(O, S.isFunction(sx) ? sx() : sx);
- isStr && (host[name] = O);
- return O;
- },
- config:function (c) {
- var configs, cfg, r;
- for (var p in c) {
- if (c.hasOwnProperty(p)) {
- if ((configs = this['configs']) &&
- (cfg = configs[p])) {
- r = cfg(c[p]);
- }
- }
- }
- return r;
- },
-
- log:function (msg, cat, src) {
- if (S.Config.debug) {
- if (src) {
- msg = src + ': ' + msg;
- }
- if (host['console'] !== undefined && console.log) {
- console[cat && console[cat] ? cat : 'log'](msg);
- }
- }
- },
-
- error:function (msg) {
- if (S.Config.debug) {
- throw msg;
- }
- },
-
- guid:function (pre) {
- return (pre || EMPTY) + guid++;
- }
- });
- S.__init();
- return S;
- })('KISSY', undefined);
- (function (S, undefined) {
- var host = S.__HOST,
- TRUE = true,
- FALSE = false,
- OP = Object.prototype,
- toString = OP.toString,
- hasOwnProperty = OP.hasOwnProperty,
- AP = Array.prototype,
- indexOf = AP.indexOf,
- lastIndexOf = AP.lastIndexOf,
- filter = AP.filter,
- every = AP.every,
- some = AP.some,
-
- trim = String.prototype.trim,
- map = AP.map,
- EMPTY = '',
- HEX_BASE = 16,
- CLONE_MARKER = '__~ks_cloned',
- COMPARE_MARKER = '__~ks_compared',
- STAMP_MARKER = '__~ks_stamped',
- RE_TRIM = /^[\s\xa0]+|[\s\xa0]+$/g,
- encode = encodeURIComponent,
- decode = decodeURIComponent,
- SEP = '&',
- EQ = '=',
-
- class2type = {},
-
- htmlEntities = {
- '&':'&',
- '>':'>',
- '<':'<',
- '`':'`',
- '/':'/',
- '"':'"',
- ''':"'"
- },
- reverseEntities = {},
- escapeReg,
- unEscapeReg,
-
- escapeRegExp = /[\-#$\^*()+\[\]{}|\\,.?\s]/g;
- (function () {
- for (var k in htmlEntities) {
- if (htmlEntities.hasOwnProperty(k)) {
- reverseEntities[htmlEntities[k]] = k;
- }
- }
- })();
- function getEscapeReg() {
- if (escapeReg) {
- return escapeReg
- }
- var str = EMPTY;
- S.each(htmlEntities, function (entity) {
- str += entity + '|';
- });
- str = str.slice(0, -1);
- return escapeReg = new RegExp(str, "g");
- }
- function getUnEscapeReg() {
- if (unEscapeReg) {
- return unEscapeReg
- }
- var str = EMPTY;
- S.each(reverseEntities, function (entity) {
- str += entity + '|';
- });
- str += '&#(\\d{1,5});';
- return unEscapeReg = new RegExp(str, "g");
- }
- function isValidParamValue(val) {
- var t = typeof val;
-
- return nullOrUndefined(val) || (t !== 'object' && t !== 'function');
- }
- S.mix(S, {
-
- stamp:function (o, readOnly, marker) {
- if (!o) {
- return o
- }
- marker = marker || STAMP_MARKER;
- var guid = o[marker];
- if (guid) {
- return guid;
- } else if (!readOnly) {
- try {
- guid = o[marker] = S.guid(marker);
- }
- catch (e) {
- guid = undefined;
- }
- }
- return guid;
- },
- noop:function () {
- },
-
- type:function (o) {
- return nullOrUndefined(o) ?
- String(o) :
- class2type[toString.call(o)] || 'object';
- },
- isNullOrUndefined:nullOrUndefined,
- isNull:function (o) {
- return o === null;
- },
- isUndefined:function (o) {
- return o === undefined;
- },
-
- isEmptyObject:function (o) {
- for (var p in o) {
- if (p !== undefined) {
- return FALSE;
- }
- }
- return TRUE;
- },
-
- isPlainObject:function (o) {
-
- return o && toString.call(o) === '[object Object]' && 'isPrototypeOf' in o;
- },
-
- equals:function (a, b, /*internal use*/mismatchKeys, /*internal use*/mismatchValues) {
-
- mismatchKeys = mismatchKeys || [];
- mismatchValues = mismatchValues || [];
- if (a === b) {
- return TRUE;
- }
- if (a === undefined || a === null || b === undefined || b === null) {
-
- return nullOrUndefined(a) && nullOrUndefined(b);
- }
- if (a instanceof Date && b instanceof Date) {
- return a.getTime() == b.getTime();
- }
- if (S.isString(a) && S.isString(b)) {
- return (a == b);
- }
- if (S.isNumber(a) && S.isNumber(b)) {
- return (a == b);
- }
- if (typeof a === "object" && typeof b === "object") {
- return compareObjects(a, b, mismatchKeys, mismatchValues);
- }
-
- return (a === b);
- },
-
- clone:function (input, filter) {
-
-
-
-
- var memory = {},
- ret = cloneInternal(input, filter, memory);
- S.each(memory, function (v) {
-
- v = v.input;
- if (v[CLONE_MARKER]) {
- try {
- delete v[CLONE_MARKER];
- } catch (e) {
- S.log("delete CLONE_MARKER error : ");
- v[CLONE_MARKER] = undefined;
- }
- }
- });
- memory = null;
- return ret;
- },
-
- trim:trim ?
- function (str) {
- return nullOrUndefined(str) ? EMPTY : trim.call(str);
- } :
- function (str) {
- return nullOrUndefined(str) ? EMPTY : str.toString().replace(RE_TRIM, EMPTY);
- },
-
- substitute:function (str, o, regexp) {
- if (!S.isString(str)
- || !S.isPlainObject(o)) {
- return str;
- }
- return str.replace(regexp || /\\?\{([^{}]+)\}/g, function (match, name) {
- if (match.charAt(0) === '\\') {
- return match.slice(1);
- }
- return (o[name] === undefined) ? EMPTY : o[name];
- });
- },
-
- each:function (object, fn, context) {
- if (object) {
- var key,
- val,
- i = 0,
- length = object && object.length,
- isObj = length === undefined || S.type(object) === 'function';
- context = context || host;
- if (isObj) {
- for (key in object) {
-
- if (fn.call(context, object[key], key, object) === FALSE) {
- break;
- }
- }
- } else {
- for (val = object[0];
- i < length && fn.call(context, val, i, object) !== FALSE; val = object[++i]) {
- }
- }
- }
- return object;
- },
-
- indexOf:indexOf ?
- function (item, arr) {
- return indexOf.call(arr, item);
- } :
- function (item, arr) {
- for (var i = 0, len = arr.length; i < len; ++i) {
- if (arr[i] === item) {
- return i;
- }
- }
- return -1;
- },
-
- lastIndexOf:(lastIndexOf) ?
- function (item, arr) {
- return lastIndexOf.call(arr, item);
- } :
- function (item, arr) {
- for (var i = arr.length - 1; i >= 0; i--) {
- if (arr[i] === item) {
- break;
- }
- }
- return i;
- },
-
- unique:function (a, override) {
- var b = a.slice();
- if (override) {
- b.reverse();
- }
- var i = 0,
- n,
- item;
- while (i < b.length) {
- item = b[i];
- while ((n = S.lastIndexOf(item, b)) !== i) {
- b.splice(n, 1);
- }
- i += 1;
- }
- if (override) {
- b.reverse();
- }
- return b;
- },
-
- inArray:function (item, arr) {
- return S.indexOf(item, arr) > -1;
- },
-
- filter:filter ?
- function (arr, fn, context) {
- return filter.call(arr, fn, context || this);
- } :
- function (arr, fn, context) {
- var ret = [];
- S.each(arr, function (item, i, arr) {
- if (fn.call(context || this, item, i, arr)) {
- ret.push(item);
- }
- });
- return ret;
- },
-
- map:map ?
- function (arr, fn, context) {
- return map.call(arr, fn, context || this);
- } :
- function (arr, fn, context) {
- var len = arr.length,
- res = new Array(len);
- for (var i = 0; i < len; i++) {
- var el = S.isString(arr) ? arr.charAt(i) : arr[i];
- if (el
- ||
-
- i in arr) {
- res[i] = fn.call(context || this, el, i, arr);
- }
- }
- return res;
- },
-
- reduce:
- function (arr, callback, initialValue) {
- var len = arr.length;
- if (typeof callback !== "function") {
- throw new TypeError("callback is not function!");
- }
-
- if (len === 0 && arguments.length == 2) {
- throw new TypeError("arguments invalid");
- }
- var k = 0;
- var accumulator;
- if (arguments.length >= 3) {
- accumulator = arguments[2];
- }
- else {
- do {
- if (k in arr) {
- accumulator = arr[k++];
- break;
- }
-
- k += 1;
- if (k >= len) {
- throw new TypeError();
- }
- }
- while (TRUE);
- }
- while (k < len) {
- if (k in arr) {
- accumulator = callback.call(undefined, accumulator, arr[k], k, arr);
- }
- k++;
- }
- return accumulator;
- },
- every:every ?
- function (arr, fn, context) {
- return every.call(arr, fn, context || this);
- } :
- function (arr, fn, context) {
- var len = arr && arr.length || 0;
- for (var i = 0; i < len; i++) {
- if (i in arr && !fn.call(context, arr[i], i, arr)) {
- return FALSE;
- }
- }
- return TRUE;
- },
- some:some ?
- function (arr, fn, context) {
- return some.call(arr, fn, context || this);
- } :
- function (arr, fn, context) {
- var len = arr && arr.length || 0;
- for (var i = 0; i < len; i++) {
- if (i in arr && fn.call(context, arr[i], i, arr)) {
- return TRUE;
- }
- }
- return FALSE;
- },
-
- bind:function (fn, obj) {
- var slice = [].slice,
- args = slice.call(arguments, 2),
- fNOP = function () {
- },
- bound = function () {
- return fn.apply(this instanceof fNOP ? this : obj,
- args.concat(slice.call(arguments)));
- };
- fNOP.prototype = fn.prototype;
- bound.prototype = new fNOP();
- return bound;
- },
-
- now:Date.now || function () {
- return +new Date();
- },
-
- fromUnicode:function (str) {
- return str.replace(/\\u([a-f\d]{4})/ig, function (m, u) {
- return String.fromCharCode(parseInt(u, HEX_BASE));
- });
- },
-
- escapeHTML:function (str) {
- return str.replace(getEscapeReg(), function (m) {
- return reverseEntities[m];
- });
- },
- escapeRegExp:function (str) {
- return str.replace(escapeRegExp, '\\$&');
- },
-
- unEscapeHTML:function (str) {
- return str.replace(getUnEscapeReg(), function (m, n) {
- return htmlEntities[m] || String.fromCharCode(+n);
- });
- },
-
- makeArray:function (o) {
- if (nullOrUndefined(o)) {
- return [];
- }
- if (S.isArray(o)) {
- return o;
- }
-
- if (typeof o.length !== 'number' || S.isString(o) || S.isFunction(o)) {
- return [o];
- }
- var ret = [];
- for (var i = 0, l = o.length; i < l; i++) {
- ret[i] = o[i];
- }
- return ret;
- },
-
- param:function (o, sep, eq, arr) {
- if (!S.isPlainObject(o)) {
- return EMPTY;
- }
- sep = sep || SEP;
- eq = eq || EQ;
- if (S.isUndefined(arr)) {
- arr = TRUE;
- }
- var buf = [], key, val;
- for (key in o) {
- if (o.hasOwnProperty(key)) {
- val = o[key];
- key = encode(key);
-
- if (isValidParamValue(val)) {
- buf.push(key, eq, encode(val + EMPTY), sep);
- }
-
- else if (S.isArray(val) && val.length) {
- for (var i = 0, len = val.length; i < len; ++i) {
- if (isValidParamValue(val[i])) {
- buf.push(key,
- (arr ? encode("[]") : EMPTY),
- eq, encode(val[i] + EMPTY), sep);
- }
- }
- }
-
- }
- }
- buf.pop();
- return buf.join(EMPTY);
- },
-
- unparam:function (str, sep, eq) {
- if (typeof str !== 'string'
- || (str = S.trim(str)).length === 0) {
- return {};
- }
- sep = sep || SEP;
- eq = eq || EQ;
- var ret = {},
- pairs = str.split(sep),
- pair, key, val,
- i = 0, len = pairs.length;
- for (; i < len; ++i) {
- pair = pairs[i].split(eq);
- key = decode(pair[0]);
- try {
- val = decode(pair[1] || EMPTY);
- } catch (e) {
- S.log(e + "decodeURIComponent error : " + pair[1], "error");
- val = pair[1] || EMPTY;
- }
- if (S.endsWith(key, "[]")) {
- key = key.substring(0, key.length - 2);
- }
- if (hasOwnProperty.call(ret, key)) {
- if (S.isArray(ret[key])) {
- ret[key].push(val);
- } else {
- ret[key] = [ret[key], val];
- }
- } else {
- ret[key] = val;
- }
- }
- return ret;
- },
-
- later:function (fn, when, periodic, context, data) {
- when = when || 0;
- var m = fn,
- d = S.makeArray(data),
- f,
- r;
- if (S.isString(fn)) {
- m = context[fn];
- }
- if (!m) {
- S.error('method undefined');
- }
- f = function () {
- m.apply(context, d);
- };
- r = (periodic) ? setInterval(f, when) : setTimeout(f, when);
- return {
- id:r,
- interval:periodic,
- cancel:function () {
- if (this.interval) {
- clearInterval(r);
- } else {
- clearTimeout(r);
- }
- }
- };
- },
- startsWith:function (str, prefix) {
- return str.lastIndexOf(prefix, 0) === 0;
- },
- endsWith:function (str, suffix) {
- var ind = str.length - suffix.length;
- return ind >= 0 && str.indexOf(suffix, ind) == ind;
- },
-
- throttle:function (fn, ms, context) {
- ms = ms || 150;
- if (ms === -1) {
- return (function () {
- fn.apply(context || this, arguments);
- });
- }
- var last = S.now();
- return (function () {
- var now = S.now();
- if (now - last > ms) {
- last = now;
- fn.apply(context || this, arguments);
- }
- });
- },
-
- buffer:function (fn, ms, context) {
- ms = ms || 150;
- if (ms === -1) {
- return (function () {
- fn.apply(context || this, arguments);
- });
- }
- var bufferTimer = null;
- function f() {
- f.stop();
- bufferTimer = S.later(fn, ms, FALSE, context || this);
- }
- f.stop = function () {
- if (bufferTimer) {
- bufferTimer.cancel();
- bufferTimer = 0;
- }
- };
- return f;
- }
- });
-
- S.mix(S, {
- isBoolean:isValidParamValue,
- isNumber:isValidParamValue,
- isString:isValidParamValue,
- isFunction:isValidParamValue,
- isArray:isValidParamValue,
- isDate:isValidParamValue,
- isRegExp:isValidParamValue,
- isObject:isValidParamValue
- });
- S.each('Boolean Number String Function Array Date RegExp Object'.split(' '),
- function (name, lc) {
-
- class2type['[object ' + name + ']'] = (lc = name.toLowerCase());
-
- S['is' + name] = function (o) {
- return S.type(o) == lc;
- }
- });
- function nullOrUndefined(o) {
- return S.isNull(o) || S.isUndefined(o);
- }
- function cloneInternal(input, f, memory) {
- var destination = input,
- isArray,
- isPlainObject,
- k,
- stamp;
- if (!input) {
- return destination;
- }
-
-
-
- if (input[CLONE_MARKER]) {
-
- return memory[input[CLONE_MARKER]].destination;
- } else if (typeof input === "object") {
-
- var constructor = input.constructor;
- if (S.inArray(constructor, [Boolean, String, Number, Date, RegExp])) {
- destination = new constructor(input.valueOf());
- }
- // ImageData , File, Blob , FileList .. etc
- else if (isArray = S.isArray(input)) {
- destination = f ? S.filter(input, f) : input.concat();
- } else if (isPlainObject = S.isPlainObject(input)) {
- destination = {};
- }
-
-
-
- input[CLONE_MARKER] = (stamp = S.guid());
-
- memory[stamp] = {destination:destination, input:input};
- }
-
-
-
-
-
-
-
- if (isArray) {
- for (var i = 0; i < destination.length; i++) {
- destination[i] = cloneInternal(destination[i], f, memory);
- }
- } else if (isPlainObject) {
- for (k in input) {
- if (input.hasOwnProperty(k)) {
- if (k !== CLONE_MARKER &&
- (!f || (f.call(input, input[k], k, input) !== FALSE))) {
- destination[k] = cloneInternal(input[k], f, memory);
- }
- }
- }
- }
- return destination;
- }
- function compareObjects(a, b, mismatchKeys, mismatchValues) {
-
- if (a[COMPARE_MARKER] === b && b[COMPARE_MARKER] === a) {
- return TRUE;
- }
- a[COMPARE_MARKER] = b;
- b[COMPARE_MARKER] = a;
- var hasKey = function (obj, keyName) {
- return (obj !== null && obj !== undefined) && obj[keyName] !== undefined;
- };
- for (var property in b) {
- if (b.hasOwnProperty(property)) {
- if (!hasKey(a, property) && hasKey(b, property)) {
- mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
- }
- }
- }
- for (property in a) {
- if (a.hasOwnProperty(property)) {
- if (!hasKey(b, property) && hasKey(a, property)) {
- mismatchKeys.push("expected missing key '" + property + "', but present in actual.");
- }
- }
- }
- for (property in b) {
- if (b.hasOwnProperty(property)) {
- if (property == COMPARE_MARKER) {
- continue;
- }
- if (!S.equals(a[property], b[property], mismatchKeys, mismatchValues)) {
- mismatchValues.push("'" + property + "' was '" + (b[property] ? (b[property].toString()) : b[property])
- + "' in expected, but was '" +
- (a[property] ? (a[property].toString()) : a[property]) + "' in actual.");
- }
- }
- }
- if (S.isArray(a) && S.isArray(b) && a.length != b.length) {
- mismatchValues.push("arrays were not the same length");
- }
- delete a[COMPARE_MARKER];
- delete b[COMPARE_MARKER];
- return (mismatchKeys.length === 0 && mismatchValues.length === 0);
- }
- })(KISSY, undefined);
- (function(S){
- if("require" in this) {
- return;
- }
- S.__loader={};
- S.__loaderUtils={};
- S.__loaderData={};
- })(KISSY);
- (function (S, loader) {
- if ("require" in this) {
- return;
- }
-
- S.configs.map = function (rules) {
- S.Config.mappedRules = (S.Config.mappedRules || []).concat(rules);
- };
- S.mix(loader, {
- __getMappedPath:function (path) {
- var __mappedRules = S.Config.mappedRules || [];
- for (var i = 0; i < __mappedRules.length; i++) {
- var m, rule = __mappedRules[i];
- if (m = path.match(rule[0])) {
- return path.replace(rule[0], rule[1]);
- }
- }
- return path;
- }
- });
- })(KISSY, KISSY.__loader);
- (function (S, loader) {
- if ("require" in this) {
- return;
- }
- var combines;
-
- combines = S.configs.combines = function (from, to) {
- var cs;
- if (S.isObject(from)) {
- S.each(from, function (v, k) {
- S.each(v, function (v2) {
- combines(v2, k);
- });
- });
- return;
- }
- cs = S.Config.combines = S.Config.combines || {};
- if (to) {
- cs[from] = to;
- } else {
- return cs[from] || from;
- }
- };
- S.mix(loader, {
- __getCombinedMod:function (modName) {
- var cs;
- cs = S.Config.combines = S.Config.combines || {};
- return cs[modName] || modName;
- }
- });
- })(KISSY, KISSY.__loader);
- (function(S, data) {
- if ("require" in this) {
- return;
- }
-
- S.mix(data, {
- "INIT":0,
- "LOADING" : 1,
- "LOADED" : 2,
- "ERROR" : 3,
-
- "ATTACHED" : 4
- });
- })(KISSY, KISSY.__loaderData);
- (function(S, loader, utils) {
- if ("require" in this) {
- return;
- }
- var ua = navigator.userAgent,doc = document;
- S.mix(utils, {
- docHead:function() {
- return doc.getElementsByTagName('head')[0] || doc.documentElement;
- },
- isWebKit:!!ua.match(/AppleWebKit/),
- IE : !!ua.match(/MSIE/),
- isCss:function(url) {
- return /\.css(?:\?|$)/i.test(url);
- },
- isLinkNode:function(n) {
- return n.nodeName.toLowerCase() == 'link';
- },
-
- normalizePath:function(path) {
- var paths = path.split("/"),
- re = [],
- p;
- for (var i = 0; i < paths.length; i++) {
- p = paths[i];
- if (p == ".") {
- } else if (p == "..") {
- re.pop();
- } else {
- re.push(p);
- }
- }
- return re.join("/");
- },
-
- normalDepModuleName:function normalDepModuleName(moduleName, depName) {
- if (!depName) {
- return depName;
- }
- if (S.isArray(depName)) {
- for (var i = 0; i < depName.length; i++) {
- depName[i] = normalDepModuleName(moduleName, depName[i]);
- }
- return depName;
- }
- if (startsWith(depName, "../") || startsWith(depName, "./")) {
- var anchor = "",index;
-
- if ((index = moduleName.lastIndexOf("/")) != -1) {
- anchor = moduleName.substring(0, index + 1);
- }
- return normalizePath(anchor + depName);
- } else if (depName.indexOf("./") != -1
- || depName.indexOf("../") != -1) {
- return normalizePath(depName);
- } else {
- return depName;
- }
- },
-
- removePostfix:function (path) {
- return path.replace(/(-min)?\.js[^/]*$/i, "");
- },
-
- normalBasePath:function (path) {
- path = S.trim(path);
-
- if (path && path.charAt(path.length - 1) != '/') {
- path += "/";
- }
-
- if (!path.match(/^(http(s)?)|(file):/i)
- && !startsWith(path, "/")) {
- path = loader.__pagePath + path;
- }
- return normalizePath(path);
- },
-
- absoluteFilePath:function(path) {
- path = utils.normalBasePath(path);
- return path.substring(0, path.length - 1);
- },
-
-
- indexMapping:function (names) {
- for (var i = 0; i < names.length; i++) {
- if (names[i].match(/\/$/)) {
- names[i] += "index";
- }
- }
- return names;
- }
- });
- var startsWith = S.startsWith,normalizePath = utils.normalizePath;
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils);
- (function(S, utils) {
- if ("require" in this) {
- return;
- }
- var CSS_POLL_INTERVAL = 30,
-
- timer = 0,
- monitors = {
-
- };
- function startCssTimer() {
- if (!timer) {
- S.log("start css polling");
- cssPoll();
- }
- }
-
- function cssPoll() {
- for (var url in monitors) {
- var callbacks = monitors[url],
- node = callbacks.node,
- loaded = 0;
- if (utils.isWebKit) {
- if (node['sheet']) {
- S.log("webkit loaded : " + url);
- loaded = 1;
- }
- } else if (node['sheet']) {
- try {
- var cssRules;
- if (cssRules = node['sheet'].cssRules) {
- S.log('firefox ' + cssRules + ' loaded : ' + url);
- loaded = 1;
- }
- } catch(ex) {
-
-
- if (ex.code === 1000) {
- S.log('firefox ' + ex.name + ' loaded : ' + url);
- loaded = 1;
- }
- }
- }
- if (loaded) {
- for (var i = 0; i < callbacks.length; i++) {
- callbacks[i].call(node);
- }
- delete monitors[url];
- }
- }
- if (S.isEmptyObject(monitors)) {
- timer = 0;
- S.log("end css polling");
- } else {
- timer = setTimeout(cssPoll, CSS_POLL_INTERVAL);
- }
- }
- S.mix(utils, {
- scriptOnload:document.addEventListener ?
- function(node, callback) {
- if (utils.isLinkNode(node)) {
- return utils.styleOnload(node, callback);
- }
- node.addEventListener('load', callback, false);
- } :
- function(node, callback) {
- if (utils.isLinkNode(node)) {
- return utils.styleOnload(node, callback);
- }
- var oldCallback = node.onreadystatechange;
- node.onreadystatechange = function() {
- var rs = node.readyState;
- if (/loaded|complete/i.test(rs)) {
- node.onreadystatechange = null;
- oldCallback && oldCallback();
- callback.call(this);
- }
- };
- },
-
- styleOnload:window.attachEvent ?
-
- function(node, callback) {
-
- function t() {
- node.detachEvent('onload', t);
- S.log('ie/opera loaded : ' + node.href);
- callback.call(node);
- }
- node.attachEvent('onload', t);
- } :
-
-
- function(node, callback) {
- var href = node.href,arr;
- arr = monitors[href] = monitors[href] || [];
- arr.node = node;
- arr.push(callback);
- startCssTimer();
- }
- });
- })(KISSY, KISSY.__loaderUtils);
- (function(S, utils) {
- if ("require" in this) {
- return;
- }
- var MILLISECONDS_OF_SECOND = 1000,
- scriptOnload = utils.scriptOnload;
- S.mix(S, {
-
- getStyle:function(url, success, charset) {
- var doc = document,
- head = utils.docHead(),
- node = doc.createElement('link'),
- config = success;
- if (S.isPlainObject(config)) {
- success = config.success;
- charset = config.charset;
- }
- node.href = url;
- node.rel = 'stylesheet';
- if (charset) {
- node.charset = charset;
- }
- if (success) {
- utils.scriptOnload(node, success);
- }
- head.appendChild(node);
- return node;
- },
-
- getScript:function(url, success, charset) {
- if (utils.isCss(url)) {
- return S.getStyle(url, success, charset);
- }
- var doc = document,
- head = doc.head || doc.getElementsByTagName("head")[0],
- node = doc.createElement('script'),
- config = success,
- error,
- timeout,
- timer;
- if (S.isPlainObject(config)) {
- success = config.success;
- error = config.error;
- timeout = config.timeout;
- charset = config.charset;
- }
- function clearTimer() {
- if (timer) {
- timer.cancel();
- timer = undefined;
- }
- }
- node.src = url;
- node.async = true;
- if (charset) {
- node.charset = charset;
- }
- if (success || error) {
- scriptOnload(node, function() {
- clearTimer();
- S.isFunction(success) && success.call(node);
- });
- if (S.isFunction(error)) {
-
- if (doc.addEventListener) {
- node.addEventListener("error", function() {
- clearTimer();
- error.call(node);
- }, false);
- }
- timer = S.later(function() {
- timer = undefined;
- error();
- }, (timeout || this.Config.timeout) * MILLISECONDS_OF_SECOND);
- }
- }
- head.insertBefore(node, head.firstChild);
- return node;
- }
- });
- })(KISSY, KISSY.__loaderUtils);
- (function(S, loader, utils, data) {
- if ("require" in this) {
- return;
- }
- var IE = utils.IE,
- ATTACHED = data.ATTACHED,
- mix = S.mix;
- mix(loader, {
-
- add: function(name, def, config) {
- var self = this,
- mods = self.Env.mods,
- o;
-
- if (S.isString(name)
- && !config
- && S.isPlainObject(def)) {
- o = {};
- o[name] = def;
- name = o;
- }
-
- if (S.isPlainObject(name)) {
- S.each(name, function(v, k) {
- v.name = k;
- if (mods[k]) {
-
- mix(v, mods[k], false);
- }
- });
- mix(mods, name);
- return self;
- }
-
- if (S.isString(name)) {
- var host;
- if (config && ( host = config.host )) {
- var hostMod = mods[host];
- if (!hostMod) {
- S.log("module " + host + " can not be found !", "error");
-
- return self;
- }
- if (self.__isAttached(host)) {
- def.call(self, self);
- } else {
-
- hostMod.fns = hostMod.fns || [];
- hostMod.fns.push(def);
- }
- return self;
- }
- self.__registerModule(name, def, config);
-
- if (config && config['attach'] === false) {
- return self;
- }
-
- var mod = mods[name];
- var requires = utils.normalDepModuleName(name, mod.requires);
- if (self.__isAttached(requires)) {
-
- self.__attachMod(mod);
- }
-
- else if (this.Config.debug && !mod) {
- var i,modNames;
- i = (modNames = S.makeArray(requires)).length - 1;
- for (; i >= 0; i--) {
- var requireName = modNames[i];
- var requireMod = mods[requireName] || {};
- if (requireMod.status !== ATTACHED) {
- S.log(mod.name + " not attached when added : depends " + requireName);
- }
- }
- }
- return self;
- }
-
- if (S.isFunction(name)) {
- config = def;
- def = name;
- if (IE) {
-
-
-
- name = self.__findModuleNameByInteractive();
- S.log("old_ie get modname by interactive : " + name);
- self.__registerModule(name, def, config);
- self.__startLoadModuleName = null;
- self.__startLoadTime = 0;
- } else {
-
- self.__currentModule = {
- def:def,
- config:config
- };
- }
- return self;
- }
- S.log("invalid format for KISSY.add !", "error");
- return self;
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils, KISSY.__loaderData);
- (function (S, loader, utils, data) {
- if ("require" in this) {
- return;
- }
- S.mix(loader, {
- __buildPath:function (mod, base) {
- var self = this,
- Config = self.Config;
- base = base || Config.base;
- build("fullpath", "path");
- if (mod["cssfullpath"] !== data.LOADED) {
- build("cssfullpath", "csspath");
- }
- function build(fullpath, path) {
- if (!mod[fullpath] && mod[path]) {
-
- mod[path] = utils.normalDepModuleName(mod.name, mod[path]);
- mod[fullpath] = base + mod[path];
- }
-
- if (mod[fullpath] && Config.debug) {
- mod[fullpath] = mod[fullpath].replace(/-min/ig, "");
- }
-
- if (mod[fullpath]
- && !(mod[fullpath].match(/\?t=/))
- && mod.tag) {
- mod[fullpath] += "?t=" + mod.tag;
- }
- if (mod[fullpath]) {
- mod[fullpath] = self.__getMappedPath(mod[fullpath]);
- }
- }
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils, KISSY.__loaderData);
- (function(S, loader) {
- if ("require" in this) {
- return;
- }
- S.mix(loader, {
-
- __mixMod: function(name, global) {
-
- var self = this,
- mods = self.Env.mods,
- gMods = global.Env.mods,
- mod = mods[name] || {},
- status = mod.status;
- if (gMods[name]) {
- S.mix(mod, S.clone(gMods[name]));
-
-
-
-
- if (status) {
- mod.status = status;
- }
- }
-
- self.__buildPath(mod, global.Config.base);
- mods[name] = mod;
- }
- });
- })(KISSY, KISSY.__loader);
- (function (S, loader, utils) {
- if ("require" in this) {
- return;
- }
- S.mix(loader, {
-
-
- __findModuleNameByInteractive:function () {
- var self = this,
- scripts = document.getElementsByTagName("script"),
- re,
- script;
- for (var i = 0; i < scripts.length; i++) {
- script = scripts[i];
- if (script.readyState == "interactive") {
- re = script;
- break;
- }
- }
- if (!re) {
-
-
-
- S.log("can not find interactive script,time diff : " + (+new Date() - self.__startLoadTime), "error");
- S.log("old_ie get modname from cache : " + self.__startLoadModuleName);
- return self.__startLoadModuleName;
-
- }
-
-
-
- var src = utils.absoluteFilePath(re.src);
-
-
-
-
- self.Config.base = utils.normalBasePath(self.Config.base);
- if (src.lastIndexOf(self.Config.base, 0)
- === 0) {
- return utils.removePostfix(src.substring(self.Config.base.length));
- }
- var packages = self.Config.packages;
-
- for (var p in packages) {
- if (packages.hasOwnProperty(p)) {
- var p_path = packages[p].path;
- if (packages.hasOwnProperty(p) &&
- src.lastIndexOf(p_path, 0) === 0) {
- return utils.removePostfix(src.substring(p_path.length));
- }
- }
- }
- S.log("interactive script does not have package config :" + src, "error");
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils);
- (function(S, loader, utils, data) {
- if ("require" in this) {
- return;
- }
- var IE = utils.IE,
- LOADING = data.LOADING,
- LOADED = data.LOADED,
- ERROR = data.ERROR,
- ATTACHED = data.ATTACHED;
- S.mix(loader, {
-
- __load: function(mod, callback, cfg) {
- var self = this,
- url = mod['fullpath'],
- isCss = utils.isCss(url),
-
- loadQueque = S.Env._loadQueue,
- status = loadQueque[url],
- node = status;
- mod.status = mod.status || 0;
-
- if (mod.status < LOADING && status) {
-
- mod.status = status === LOADED ? LOADED : LOADING;
- }
-
-
- if (S.isString(mod["cssfullpath"])) {
- S.getScript(mod["cssfullpath"]);
- mod["cssfullpath"] = mod.csspath = LOADED;
- }
- if (mod.status < LOADING && url) {
- mod.status = LOADING;
- if (IE && !isCss) {
- self.__startLoadModuleName = mod.name;
- self.__startLoadTime = Number(+new Date());
- }
- node = S.getScript(url, {
- success: function() {
- if (isCss) {
- } else {
-
-
- if (self.__currentModule) {
- S.log("standard browser get modname after load : " + mod.name);
- self.__registerModule(mod.name, self.__currentModule.def,
- self.__currentModule.config);
- self.__currentModule = null;
- }
-
- mixGlobal();
- if (mod.fns && mod.fns.length > 0) {
- } else {
- _modError();
- }
- }
- if (mod.status != ERROR) {
- S.log(mod.name + ' is loaded.', 'info');
- }
- _scriptOnComplete();
- },
- error: function() {
- _modError();
- _scriptOnComplete();
- },
- charset: mod.charset
- });
- loadQueque[url] = node;
- }
-
-
- else if (mod.status === LOADING) {
- utils.scriptOnload(node, function() {
-
- mixGlobal();
- _scriptOnComplete();
- });
- }
-
- else {
-
- mixGlobal();
- callback();
- }
- function _modError() {
- S.log(mod.name + ' is not loaded! can not find module in path : ' + mod['fullpath'], 'error');
- mod.status = ERROR;
- }
- function mixGlobal() {
-
-
-
- if (cfg.global) {
- self.__mixMod(mod.name, cfg.global);
- }
- }
- function _scriptOnComplete() {
- loadQueque[url] = LOADED;
- if (mod.status !== ERROR) {
-
-
-
- if (mod.status !== ATTACHED) {
- mod.status = LOADED;
- }
- callback();
- }
- }
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils, KISSY.__loaderData);
- (function(S, loader, data) {
- if ("require" in this) {
- return;
- }
- var ATTACHED = data.ATTACHED,
- mix = S.mix;
- mix(loader, {
-
-
-
-
- __pagePath:location.href.replace(location.hash, "").replace(/[^/]*$/i, ""),
-
- __currentModule:null,
-
- __startLoadTime:0,
-
- __startLoadModuleName:null,
- __isAttached: function(modNames) {
- var mods = this.Env.mods,
- ret = true;
- S.each(modNames, function(name) {
- var mod = mods[name];
- if (!mod || mod.status !== ATTACHED) {
- ret = false;
- return ret;
- }
- });
- return ret;
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderData);
- (function (S, loader, utils) {
- if ("require" in this) {
- return;
- }
-
- S.configs.packages = function (cfgs) {
- var ps;
- ps = S.Config.packages = S.Config.packages || {};
- S.each(cfgs, function (cfg) {
- ps[cfg.name] = cfg;
-
- cfg.path = cfg.path && utils.normalBasePath(cfg.path);
- cfg.tag = cfg.tag && encodeURIComponent(cfg.tag);
- });
- };
- S.mix(loader, {
- __getPackagePath:function (mod) {
-
- if (mod.packagepath) {
- return mod.packagepath;
- }
- var self = this,
-
- modName = S.__getCombinedMod(mod.name),
- packages = self.Config.packages || {},
- pName = "",
- p_def;
- for (var p in packages) {
- if (packages.hasOwnProperty(p)) {
- if (S.startsWith(modName, p) &&
- p.length > pName) {
- pName = p;
- }
- }
- }
- p_def = packages[pName];
- mod.charset = p_def && p_def.charset || mod.charset;
- if (p_def) {
- mod.tag = p_def.tag;
- } else {
-
- mod.tag = encodeURIComponent(S.Config.tag || S.buildTime);
- }
- return mod.packagepath = (p_def && p_def.path) || self.Config.base;
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils);
- (function(S, loader,data) {
- if ("require" in this) {
- return;
- }
- var LOADED = data.LOADED,
- mix = S.mix;
- mix(loader, {
-
- __registerModule:function(name, def, config) {
- config = config || {};
- var self = this,
- mods = self.Env.mods,
- mod = mods[name] || {};
-
-
- mix(mod, { name: name, status: LOADED });
- if (mod.fns && mod.fns.length) {
- S.log(name + " is defined more than once");
-
- }
-
- mod.fns = mod.fns || [];
- mod.fns.push(def);
- mix((mods[name] = mod), config);
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderData);
- (function (S, loader, utils, data) {
- if ("require" in this) {
- return;
- }
- var LOADED = data.LOADED,
- ATTACHED = data.ATTACHED;
- S.mix(loader, {
-
- use:function (modNames, callback, cfg) {
- modNames = modNames.replace(/\s+/g, "").split(',');
- utils.indexMapping(modNames);
- cfg = cfg || {};
- var self = this,
- fired;
-
- if (self.__isAttached(modNames)) {
- var mods = self.__getModules(modNames);
- callback && callback.apply(self, mods);
- return;
- }
-
- S.each(modNames, function (modName) {
-
- self.__attachModByName(modName, function () {
- if (!fired &&
- self.__isAttached(modNames)) {
- fired = true;
- var mods = self.__getModules(modNames);
- callback && callback.apply(self, mods);
- }
- }, cfg);
- });
- return self;
- },
- __getModules:function (modNames) {
- var self = this,
- mods = [self];
- S.each(modNames, function (modName) {
- if (!utils.isCss(modName)) {
- mods.push(self.require(modName));
- }
- });
- return mods;
- },
-
- require:function (moduleName) {
- var self = this,
- mods = self.Env.mods,
- mod = mods[moduleName],
- re = self['onRequire'] && self['onRequire'](mod);
- if (re !== undefined) {
- return re;
- }
- return mod && mod.value;
- },
-
- __attachModByName:function (modName, callback, cfg) {
- var self = this,
- mods = self.Env.mods;
- var mod = mods[modName];
-
- if (!mod) {
-
-
-
- var componentJsName = self.Config['componentJsName'] ||
- function (m) {
- var suffix = "js", match;
- if (match = m.match(/(.+)\.(js|css)$/i)) {
- suffix = match[2];
- m = match[1];
- }
- return m + '-min.' + suffix;
- },
- path = componentJsName(S.__getCombinedMod(modName));
- mod = {
- path:path,
- charset:'utf-8'
- };
-
- mods[modName] = mod;
- }
- mod.name = modName;
- if (mod && mod.status === ATTACHED) {
- return;
- }
-
- if (cfg.global) {
- self.__mixMod(modName, cfg.global);
- }
- self.__attach(mod, callback, cfg);
- },
-
- __attach:function (mod, callback, cfg) {
- var self = this,
- r,
- rMod,
- i,
- attached = 0,
- mods = self.Env.mods,
-
- requires = (mod['requires'] || []).concat();
- mod['requires'] = requires;
-
- function cyclicCheck() {
- var __allRequires,
- myName = mod.name,
- r, r2, rmod,
- r__allRequires,
- requires = mod.requires;
-
- __allRequires = mod.__allRequires = mod.__allRequires || {};
- for (var i = 0; i < requires.length; i++) {
- r = requires[i];
- rmod = mods[r];
- __allRequires[r] = 1;
- if (rmod && (r__allRequires = rmod.__allRequires)) {
- for (r2 in r__allRequires) {
- if (r__allRequires.hasOwnProperty(r2)) {
- __allRequires[r2] = 1;
- }
- }
- }
- }
- if (__allRequires[myName]) {
- var t = [];
- for (r in __allRequires) {
- if (__allRequires.hasOwnProperty(r)) {
- t.push(r);
- }
- }
- S.error("find cyclic dependency by mod " + myName + " between mods : " + t.join(","));
- }
- }
- if (S.Config.debug) {
- cyclicCheck();
- }
-
- for (i = 0; i < requires.length; i++) {
- r = requires[i] = utils.normalDepModuleName(mod.name, requires[i]);
- rMod = mods[r];
- if (rMod && rMod.status === ATTACHED) {
-
- } else {
- self.__attachModByName(r, fn, cfg);
- }
- }
-
- self.__buildPath(mod, self.__getPackagePath(mod));
- self.__load(mod, function () {
-
- mod['requires'] = mod['requires'] || [];
- var newRequires = mod['requires'],
- needToLoad = [];
-
- for (i = 0; i < newRequires.length; i++) {
- r = newRequires[i] = utils.normalDepModuleName(mod.name, newRequires[i]);
- var rMod = mods[r],
- inA = S.inArray(r, requires);
-
- if (rMod &&
- rMod.status === ATTACHED
-
- || inA) {
-
- } else {
-
- needToLoad.push(r);
- }
- }
- if (needToLoad.length) {
- for (i = 0; i < needToLoad.length; i++) {
- self.__attachModByName(needToLoad[i], fn, cfg);
- }
- } else {
- fn();
- }
- }, cfg);
- function fn() {
- if (!attached &&
- self.__isAttached(mod['requires'])) {
- if (mod.status === LOADED) {
- self.__attachMod(mod);
- }
- if (mod.status === ATTACHED) {
- attached = 1;
- callback();
- }
- }
- }
- },
- __attachMod:function (mod) {
- var self = this,
- fns = mod.fns;
- if (fns) {
- S.each(fns, function (fn) {
- var value;
- if (S.isFunction(fn)) {
- value = fn.apply(self, self.__getModules(mod['requires']));
- } else {
- value = fn;
- }
- mod.value = mod.value || value;
- });
- }
- mod.status = ATTACHED;
- }
- });
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils, KISSY.__loaderData);
- (function (S, loader, utils) {
- if ("require" in this) {
- return;
- }
- S.mix(S, loader);
-
-
- var baseReg = /^(.*)(seed|kissy)(-aio)?(-min)?\.js[^/]*/i,
- baseTestReg = /(seed|kissy)(-aio)?(-min)?\.js/i;
- function getBaseUrl(script) {
- var src = utils.absoluteFilePath(script.src),
- prefix = script.getAttribute('data-combo-prefix') || '??',
- sep = script.getAttribute('data-combo-sep') || ',',
- parts = src.split(sep),
- base,
- part0 = parts[0],
- index = part0.indexOf(prefix);
-
- if (index == -1) {
- base = src.replace(baseReg, '$1');
- } else {
- base = part0.substring(0, index);
- var part01 = part0.substring(index + 2, part0.length);
-
-
- if (part01.match(baseTestReg)) {
- base += part01.replace(baseReg, '$1');
- }
-
- else {
- S.each(parts, function (part) {
- if (part.match(baseTestReg)) {
- base += part.replace(baseReg, '$1');
- return false;
- }
- });
- }
- }
- return base;
- }
-
- S.__initLoader = function () {
- var self = this;
- self.Env.mods = self.Env.mods || {};
- };
- S.Env._loadQueue = {};
- S.__initLoader();
- (function () {
-
- var scripts = document.getElementsByTagName('script'),
- currentScript = scripts[scripts.length - 1],
- base = getBaseUrl(currentScript);
- S.Config.base = utils.normalBasePath(base);
-
- S.Config.timeout = 10;
- })();
- S.mix(S.configs, {
- base:function (base) {
- S.Config.base = utils.normalBasePath(base);
- },
- timeout:function (v) {
- S.Config.timeout = v;
- },
- debug:function (v) {
- S.Config.debug = v;
- }
- });
-
- S.each(loader, function (v, k) {
- S.__APP_MEMBERS.push(k);
- });
- S.__APP_INIT_METHODS.push('__initLoader');
- })(KISSY, KISSY.__loader, KISSY.__loaderUtils);
- (function(S, undefined) {
- var win = S.__HOST,
- doc = win['document'],
- docElem = doc.documentElement,
- EMPTY = '',
-
- isReady = false,
-
- readyList = [],
-
- POLL_RETRYS = 500,
-
- POLL_INTERVAL = 40,
-
- RE_IDSTR = /^#?([\w-]+)$/,
- RE_NOT_WHITE = /\S/;
- S.mix(S, {
-
- isWindow: function(o) {
- return S.type(o) === 'object'
- && 'setInterval' in o
- && 'document' in o
- && o.document.nodeType == 9;
- },
- parseXML: function(data) {
- var xml;
- try {
-
- if (window.DOMParser) {
- xml = new DOMParser().parseFromString(data, "text/xml");
- } else {
- xml = new ActiveXObject("Microsoft.XMLDOM");
- xml.async = "false";
- xml.loadXML(data);
- }
- } catch(e) {
- S.log("parseXML error : ");
- S.log(e);
- xml = undefined;
- }
- if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) {
- S.error("Invalid XML: " + data);
- }
- return xml;
- },
-
- globalEval: function(data) {
- if (data && RE_NOT_WHITE.test(data)) {
-
- ( window.execScript || function(data) {
- window[ "eval" ].call(window, data);
- } )(data);
- }
- },
-
- ready: function(fn) {
-
- if (isReady) {
-
- fn.call(win, this);
- } else {
-
- readyList.push(fn);
- }
- return this;
- },
-
- available: function(id, fn) {
- id = (id + EMPTY).match(RE_IDSTR)[1];
- if (!id || !S.isFunction(fn)) {
- return;
- }
- var retryCount = 1,
- node,
- timer = S.later(function() {
- if ((node = doc.getElementById(id)) && (fn(node) || 1) ||
- ++retryCount > POLL_RETRYS) {
- timer.cancel();
- }
- }, POLL_INTERVAL, true);
- }
- });
-
- function _bindReady() {
- var doScroll = docElem.doScroll,
- eventType = doScroll ? 'onreadystatechange' : 'DOMContentLoaded',
- COMPLETE = 'complete',
- fire = function() {
- _fireReady();
- };
-
-
- if (doc.readyState === COMPLETE) {
- return fire();
- }
-
- if (doc.addEventListener) {
- function domReady() {
- doc.removeEventListener(eventType, domReady, false);
- fire();
- }
- doc.addEventListener(eventType, domReady, false);
-
- win.addEventListener('load', fire, false);
- }
-
- else {
- function stateChange() {
- if (doc.readyState === COMPLETE) {
- doc.detachEvent(eventType, stateChange);
- fire();
- }
- }
-
- doc.attachEvent(eventType, stateChange);
-
- win.attachEvent('onload', fire);
-
-
- var notframe = false;
- try {
- notframe = (win['frameElement'] === null);
- } catch(e) {
- S.log("frameElement error : ");
- S.log(e);
- }
- if (doScroll && notframe) {
- function readyScroll() {
- try {
-
- doScroll('left');
- fire();
- } catch(ex) {
-
- setTimeout(readyScroll, POLL_INTERVAL);
- }
- }
- readyScroll();
- }
- }
- return 0;
- }
-
- function _fireReady() {
- if (isReady) {
- return;
- }
-
- isReady = true;
-
- if (readyList) {
-
- var fn, i = 0;
- while (fn = readyList[i++]) {
- fn.call(win, S);
- }
-
- readyList = null;
- }
- }
-
- if (location && (location.search || EMPTY).indexOf('ks-debug') !== -1) {
- S.Config.debug = true;
- }
-
- _bindReady();
- })(KISSY, undefined);
- (function (S) {
- S.config({
- 'combines':{
- 'core':['dom', 'ua', 'event', 'node', 'json', 'ajax', 'anim', 'base', 'cookie']
- }
- });
- })(KISSY);
- KISSY.add('ua/base', function() {
- var ua = navigator.userAgent,
- EMPTY = '', MOBILE = 'mobile',
- core = EMPTY, shell = EMPTY, m,
- IE_DETECT_RANGE = [6, 9], v, end,
- VERSION_PLACEHOLDER = '{{version}}',
- IE_DETECT_TPL = '<!--[if IE ' + VERSION_PLACEHOLDER + ']><s></s><![endif]-->',
- div = document.createElement('div'), s,
- o = {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- },
- numberify = function(s) {
- var c = 0;
-
- return parseFloat(s.replace(/\./g, function() {
- return (c++ === 0) ? '.' : '';
- }));
- };
-
-
- div.innerHTML = IE_DETECT_TPL.replace(VERSION_PLACEHOLDER, '');
- s = div.getElementsByTagName('s');
- if (s.length > 0) {
- shell = 'ie';
- o[core = 'trident'] = 0.1;
-
- if ((m = ua.match(/Trident\/([\d.]*)/)) && m[1]) {
- o[core] = numberify(m[1]);
- }
-
-
-
-
-
-
- for (v = IE_DETECT_RANGE[0],end = IE_DETECT_RANGE[1]; v <= end; v++) {
- div.innerHTML = IE_DETECT_TPL.replace(VERSION_PLACEHOLDER, v);
- if (s.length > 0) {
- o[shell] = v;
- break;
- }
- }
- } else {
-
- if ((m = ua.match(/AppleWebKit\/([\d.]*)/)) && m[1]) {
- o[core = 'webkit'] = numberify(m[1]);
-
- if ((m = ua.match(/Chrome\/([\d.]*)/)) && m[1]) {
- o[shell = 'chrome'] = numberify(m[1]);
- }
-
- else if ((m = ua.match(/\/([\d.]*) Safari/)) && m[1]) {
- o[shell = 'safari'] = numberify(m[1]);
- }
-
- if (/ Mobile\//.test(ua)) {
- o[MOBILE] = 'apple';
- }
-
- else if ((m = ua.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/))) {
- o[MOBILE] = m[0].toLowerCase();
- }
- }
-
- else {
-
-
- if ((m = ua.match(/Presto\/([\d.]*)/)) && m[1]) {
- o[core = 'presto'] = numberify(m[1]);
-
- if ((m = ua.match(/Opera\/([\d.]*)/)) && m[1]) {
- o[shell = 'opera'] = numberify(m[1]);
- if ((m = ua.match(/Opera\/.* Version\/([\d.]*)/)) && m[1]) {
- o[shell] = numberify(m[1]);
- }
-
- if ((m = ua.match(/Opera Mini[^;]*/)) && m) {
- o[MOBILE] = m[0].toLowerCase();
- }
-
-
-
- else if ((m = ua.match(/Opera Mobi[^;]*/)) && m) {
- o[MOBILE] = m[0];
- }
- }
-
- } else {
-
-
- if ((m = ua.match(/MSIE\s([^;]*)/)) && m[1]) {
- o[core = 'trident'] = 0.1;
- o[shell = 'ie'] = numberify(m[1]);
-
- if ((m = ua.match(/Trident\/([\d.]*)/)) && m[1]) {
- o[core] = numberify(m[1]);
- }
-
- } else {
-
- if ((m = ua.match(/Gecko/))) {
- o[core = 'gecko'] = 0.1;
- if ((m = ua.match(/rv:([\d.]*)/)) && m[1]) {
- o[core] = numberify(m[1]);
- }
-
- if ((m = ua.match(/Firefox\/([\d.]*)/)) && m[1]) {
- o[shell = 'firefox'] = numberify(m[1]);
- }
- }
- }
- }
- }
- }
- o.core = core;
- o.shell = shell;
- o._numberify = numberify;
- return o;
- });
- KISSY.add('ua/extra', function(S, UA) {
- var ua = navigator.userAgent,
- m, external, shell,
- o = { },
- numberify = UA._numberify;
-
-
- if (m = ua.match(/360SE/)) {
- o[shell = 'se360'] = 3;
- }
-
- else if ((m = ua.match(/Maxthon/)) && (external = window.external)) {
-
-
- shell = 'maxthon';
- try {
- o[shell] = numberify(external['max_version']);
- } catch(ex) {
- o[shell] = 0.1;
- }
- }
-
- else if (m = ua.match(/TencentTraveler\s([\d.]*)/)) {
- o[shell = 'tt'] = m[1] ? numberify(m[1]) : 0.1;
- }
-
- else if (m = ua.match(/TheWorld/)) {
- o[shell = 'theworld'] = 3;
- }
-
- else if (m = ua.match(/SE\s([\d.]*)/)) {
- o[shell = 'sougou'] = m[1] ? numberify(m[1]) : 0.1;
- }
-
- shell && (o.shell = shell);
- S.mix(UA, o);
- return UA;
- }, {
- requires:["ua/base"]
- });
- KISSY.add("ua", function(S,UA) {
- return UA;
- }, {
- requires:["ua/extra"]
- });
- KISSY.add('dom/base', function(S, UA, undefined) {
- function nodeTypeIs(node, val) {
- return node && node.nodeType === val;
- }
- var NODE_TYPE = {
-
- ELEMENT_NODE : 1,
- "ATTRIBUTE_NODE" : 2,
- TEXT_NODE:3,
- "CDATA_SECTION_NODE" : 4,
- "ENTITY_REFERENCE_NODE": 5,
- "ENTITY_NODE" : 6,
- "PROCESSING_INSTRUCTION_NODE" :7,
- COMMENT_NODE : 8,
- DOCUMENT_NODE : 9,
- "DOCUMENT_TYPE_NODE" : 10,
- DOCUMENT_FRAGMENT_NODE : 11,
- "NOTATION_NODE" : 12
- };
- var DOM = {
- _isCustomDomain :function (win) {
- win = win || window;
- var domain = win.document.domain,
- hostname = win.location.hostname;
- return domain != hostname &&
- domain != ( '[' + hostname + ']' );
- },
- _genEmptyIframeSrc:function(win) {
- win = win || window;
- if (UA['ie'] && DOM._isCustomDomain(win)) {
- return 'javascript:void(function(){' + encodeURIComponent("" +
- "document.open();" +
- "document.domain='" +
- win.document.domain
- + "';" +
- "document.close();") + "}())";
- }
- },
- _NODE_TYPE:NODE_TYPE,
-
- _isElementNode: function(elem) {
- return nodeTypeIs(elem, DOM.ELEMENT_NODE);
- },
-
- _getWin: function(elem) {
- return (elem && ('scrollTo' in elem) && elem['document']) ?
- elem :
- nodeTypeIs(elem, DOM.DOCUMENT_NODE) ?
- elem.defaultView || elem.parentWindow :
- (elem === undefined || elem === null) ?
- window : false;
- },
- _nodeTypeIs: nodeTypeIs,
-
- _isNodeList:function(o) {
-
-
-
-
-
- return o && !o.nodeType && o.item && !o.setTimeout;
- },
- _nodeName:function(e, name) {
- return e && e.nodeName.toLowerCase() === name.toLowerCase();
- }
- };
- S.mix(DOM, NODE_TYPE);
- return DOM;
- }, {
- requires:['ua']
- });
- KISSY.add('dom/attr', function(S, DOM, UA, undefined) {
- var doc = document,
- docElement = doc.documentElement,
- oldIE = !docElement.hasAttribute,
- TEXT = docElement.textContent === undefined ?
- 'innerText' : 'textContent',
- EMPTY = '',
- nodeName = DOM._nodeName,
- isElementNode = DOM._isElementNode,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
- rclickable = /^a(?:rea)?$/i,
- rinvalidChar = /:|^on/,
- rreturn = /\r/g,
- attrFix = {
- },
- attrFn = {
- val: 1,
- css: 1,
- html: 1,
- text: 1,
- data: 1,
- width: 1,
- height: 1,
- offset: 1,
- scrollTop:1,
- scrollLeft:1
- },
- attrHooks = {
-
- tabindex:{
- get:function(el) {
-
- var attributeNode = el.getAttributeNode("tabindex");
- return attributeNode && attributeNode.specified ?
- parseInt(attributeNode.value, 10) :
- rfocusable.test(el.nodeName) || rclickable.test(el.nodeName) && el.href ?
- 0 :
- undefined;
- }
- },
-
-
-
- style:{
- get:function(el) {
- return el.style.cssText;
- },
- set:function(el, val) {
- el.style.cssText = val;
- }
- }
- },
- propFix = {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- "cellpadding": "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- "contenteditable": "contentEditable"
- },
-
-
-
-
-
- boolHook = {
- get: function(elem, name) {
-
- return DOM.prop(elem, name) ?
-
- name.toLowerCase() :
- undefined;
- },
- set: function(elem, value, name) {
- var propName;
- if (value === false) {
-
- DOM.removeAttr(elem, name);
- } else {
-
- propName = propFix[ name ] || name;
- if (propName in elem) {
-
- elem[ propName ] = true;
- }
- elem.setAttribute(name, name.toLowerCase());
- }
- return name;
- }
- },
- propHooks = {},
-
- attrNodeHook = {
- },
- valHooks = {
- option: {
- get: function(elem) {
-
-
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
-
- get: function(elem) {
- var index = elem.selectedIndex,
- options = elem.options,
- one = elem.type === "select-one";
-
- if (index < 0) {
- return null;
- } else if (one) {
- return DOM.val(options[index]);
- }
-
- var ret = [], i = 0, len = options.length;
- for (; i < len; ++i) {
- if (options[i].selected) {
- ret.push(DOM.val(options[i]));
- }
- }
-
- return ret;
- },
- set: function(elem, value) {
- var values = S.makeArray(value),
- opts = elem.options;
- S.each(opts, function(opt) {
- opt.selected = S.inArray(DOM.val(opt), values);
- });
- if (!values.length) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }};
- function isTextNode(elem) {
- return DOM._nodeTypeIs(elem, DOM.TEXT_NODE);
- }
- if (oldIE) {
-
- attrNodeHook = {
- get: function(elem, name) {
- var ret;
- ret = elem.getAttributeNode(name);
-
- return ret && ret.nodeValue !== "" ?
- ret.nodeValue :
- undefined;
- },
- set: function(elem, value, name) {
-
-
- var ret = elem.getAttributeNode(name);
- if (ret) {
- ret.nodeValue = value;
- } else {
- try {
- var attr = elem.ownerDocument.createAttribute(name);
- attr.value = value;
- elem.setAttributeNode(attr);
- }
- catch (e) {
-
- return elem.setAttribute(name, value, 0);
- }
- }
- }
- };
-
- attrFix = propFix;
-
- attrHooks.tabIndex = attrHooks.tabindex;
-
-
-
- S.each([ "href", "src", "width", "height","colSpan","rowSpan" ], function(name) {
- attrHooks[ name ] = {
- get: function(elem) {
- var ret = elem.getAttribute(name, 2);
- return ret === null ? undefined : ret;
- }
- };
- });
-
-
- valHooks.button = attrHooks.value = attrNodeHook;
- }
-
- S.each([ "radio", "checkbox" ], function(r) {
- valHooks[ r ] = {
- get: function(elem) {
-
- return elem.getAttribute("value") === null ? "on" : elem.value;
- },
- set: function(elem, value) {
- if (S.isArray(value)) {
- return elem.checked = S.inArray(DOM.val(elem), value);
- }
- }
- };
- });
- function getProp(elem, name) {
- name = propFix[ name ] || name;
- var hook = propHooks[ name ];
- if (hook && hook.get) {
- return hook.get(elem, name);
- } else {
- return elem[ name ];
- }
- }
- S.mix(DOM, {
-
- prop: function(selector, name, value) {
-
- if (S.isPlainObject(name)) {
- for (var k in name) {
- DOM.prop(selector, k, name[k]);
- }
- return;
- }
- var elems = DOM.query(selector);
-
- name = propFix[ name ] || name;
- var hook = propHooks[ name ];
- if (value !== undefined) {
- elems.each(function(elem) {
- if (hook && hook.set) {
- hook.set(elem, value, name);
- } else {
- elem[ name ] = value;
- }
- });
- } else {
- if (elems.length) {
- return getProp(elems[0], name);
- }
- }
- },
-
- hasProp:function(selector, name) {
- var elems = DOM.query(selector);
- for (var i = 0; i < elems.length; i++) {
- var el = elems[i];
- if (getProp(el, name) !== undefined) {
- return true;
- }
- }
- return false;
- },
-
- removeProp:function(selector, name) {
- name = propFix[ name ] || name;
- DOM.query(selector).each(function(el) {
- try {
- el[ name ] = undefined;
- delete el[ name ];
- } catch(e) {
- S.log("delete el property error : ");
- S.log(e);
- }
- });
- },
-
- attr:function(selector, name, val, pass) {
-
-
- if (S.isPlainObject(name)) {
- pass = val;
- for (var k in name) {
- DOM.attr(selector, k, name[k], pass);
- }
- return;
- }
- if (!(name = S.trim(name))) {
- return;
- }
-
- if (pass && attrFn[name]) {
- return DOM[name](selector, val);
- }
-
- name = name.toLowerCase();
- if (pass && attrFn[name]) {
- return DOM[name](selector, val);
- }
- var els = DOM.query(selector);
- if (val === undefined) {
- return DOM.__attr(els[0], name);
- } else {
- els.each(function(el) {
- DOM.__attr(el, name, val);
- });
- }
- },
- __attr:function(el, name, val) {
- if (!isElementNode(el)) {
- return;
- }
-
- name = attrFix[name] || name;
- var attrNormalizer,
- ret;
-
- if (nodeName(el, "form")) {
- attrNormalizer = attrNodeHook;
- }
- else if (rboolean.test(name)) {
- attrNormalizer = boolHook;
- }
-
- else if (rinvalidChar.test(name)) {
- attrNormalizer = attrNodeHook;
- } else {
- attrNormalizer = attrHooks[name];
- }
-
- if (val === undefined) {
- if (attrNormalizer && attrNormalizer.get) {
- return attrNormalizer.get(el, name);
- }
- ret = el.getAttribute(name);
-
-
-
- return ret === null ? undefined : ret;
- } else {
- if (attrNormalizer && attrNormalizer.set) {
- attrNormalizer.set(el, val, name);
- } else {
-
- el.setAttribute(name, EMPTY + val);
- }
- }
- },
-
- removeAttr: function(selector, name) {
- name = name.toLowerCase();
- name = attrFix[name] || name;
- DOM.query(selector).each(function(el) {
- if (isElementNode(el)) {
- var propName;
- el.removeAttribute(name);
-
- if (rboolean.test(name) && (propName = propFix[ name ] || name) in el) {
- el[ propName ] = false;
- }
- }
- });
- },
-
- hasAttr: oldIE ?
- function(selector, name) {
- name = name.toLowerCase();
- var elems = DOM.query(selector);
-
-
-
- for (var i = 0; i < elems.length; i++) {
- var el = elems[i];
- var $attr = el.getAttributeNode(name);
- if ($attr && $attr.specified) {
- return true;
- }
- }
- return false;
- }
- :
- function(selector, name) {
- var elems = DOM.query(selector);
- for (var i = 0; i < elems.length; i++) {
- var el = elems[i];
-
- if (el.hasAttribute(name)) {
- return true;
- }
- }
- return false;
- },
-
- val : function(selector, value) {
- var hook, ret;
-
- if (value === undefined) {
- var elem = DOM.get(selector);
- if (elem) {
- hook = valHooks[ elem.nodeName.toLowerCase() ] || valHooks[ elem.type ];
- if (hook && "get" in hook && (ret = hook.get(elem, "value")) !== undefined) {
- return ret;
- }
- ret = elem.value;
- return typeof ret === "string" ?
-
- ret.replace(rreturn, "") :
-
- S.isNullOrUndefined(ret) ? "" : ret;
- }
- return;
- }
- DOM.query(selector).each(function(elem) {
- if (elem.nodeType !== 1) {
- return;
- }
- var val = value;
-
- if (S.isNullOrUndefined(val)) {
- val = "";
- } else if (typeof val === "number") {
- val += "";
- } else if (S.isArray(val)) {
- val = S.map(val, function (value) {
- return S.isNullOrUndefined(val) ? "" : value + "";
- });
- }
- hook = valHooks[ elem.nodeName.toLowerCase() ] || valHooks[ elem.type ];
-
- if (!hook || !("set" in hook) || hook.set(elem, val, "value") === undefined) {
- elem.value = val;
- }
- });
- },
-
- text: function(selector, val) {
-
- if (val === undefined) {
-
- var el = DOM.get(selector);
-
- if (isElementNode(el)) {
- return el[TEXT] || EMPTY;
- }
- else if (isTextNode(el)) {
- return el.nodeValue;
- }
- return undefined;
- }
-
- else {
- DOM.query(selector).each(function(el) {
- if (isElementNode(el)) {
- el[TEXT] = val;
- }
- else if (isTextNode(el)) {
- el.nodeValue = val;
- }
- });
- }
- }
- });
- return DOM;
- }, {
- requires:["./base","ua"]
- }
- );
- KISSY.add('dom/class', function(S, DOM, undefined) {
- var SPACE = ' ',
- REG_SPLIT = /[\.\s]\s*\.?/,
- REG_CLASS = /[\n\t]/g;
- function norm(elemClass) {
- return (SPACE + elemClass + SPACE).replace(REG_CLASS, SPACE);
- }
- S.mix(DOM, {
- __hasClass:function(el, cls) {
- var className = el.className;
- if (className) {
- className = norm(className);
- return className.indexOf(SPACE + cls + SPACE) > -1;
- } else {
- return false;
- }
- },
-
- hasClass: function(selector, value) {
- return batch(selector, value, function(elem, classNames, cl) {
- var elemClass = elem.className;
- if (elemClass) {
- var className = norm(elemClass),
- j = 0,
- ret = true;
- for (; j < cl; j++) {
- if (className.indexOf(SPACE + classNames[j] + SPACE) < 0) {
- ret = false;
- break;
- }
- }
- if (ret) {
- return true;
- }
- }
- }, true);
- },
-
- addClass: function(selector, value) {
- batch(selector, value, function(elem, classNames, cl) {
- var elemClass = elem.className;
- if (!elemClass) {
- elem.className = value;
- } else {
- var className = norm(elemClass),
- setClass = elemClass,
- j = 0;
- for (; j < cl; j++) {
- if (className.indexOf(SPACE + classNames[j] + SPACE) < 0) {
- setClass += SPACE + classNames[j];
- }
- }
- elem.className = S.trim(setClass);
- }
- }, undefined);
- },
-
- removeClass: function(selector, value) {
- batch(selector, value, function(elem, classNames, cl) {
- var elemClass = elem.className;
- if (elemClass) {
- if (!cl) {
- elem.className = '';
- } else {
- var className = norm(elemClass),
- j = 0,
- needle;
- for (; j < cl; j++) {
- needle = SPACE + classNames[j] + SPACE;
-
- while (className.indexOf(needle) >= 0) {
- className = className.replace(needle, SPACE);
- }
- }
- elem.className = S.trim(className);
- }
- }
- }, undefined);
- },
-
- replaceClass: function(selector, oldClassName, newClassName) {
- DOM.removeClass(selector, oldClassName);
- DOM.addClass(selector, newClassName);
- },
-
- toggleClass: function(selector, value, state) {
- var isBool = S.isBoolean(state), has;
- batch(selector, value, function(elem, classNames, cl) {
- var j = 0, className;
- for (; j < cl; j++) {
- className = classNames[j];
- has = isBool ? !state : DOM.hasClass(elem, className);
- DOM[has ? 'removeClass' : 'addClass'](elem, className);
- }
- }, undefined);
- }
- });
- function batch(selector, value, fn, resultIsBool) {
- if (!(value = S.trim(value))) {
- return resultIsBool ? false : undefined;
- }
- var elems = DOM.query(selector),
- len = elems.length,
- tmp = value.split(REG_SPLIT),
- elem,
- ret;
- var classNames = [];
- for (var i = 0; i < tmp.length; i++) {
- var t = S.trim(tmp[i]);
- if (t) {
- classNames.push(t);
- }
- }
- for (i = 0; i < len; i++) {
- elem = elems[i];
- if (DOM._isElementNode(elem)) {
- ret = fn(elem, classNames, classNames.length);
- if (ret !== undefined) {
- return ret;
- }
- }
- }
- if (resultIsBool) {
- return false;
- }
- return undefined;
- }
- return DOM;
- }, {
- requires:["dom/base"]
- });
- KISSY.add('dom/create', function(S, DOM, UA, undefined) {
- var doc = document,
- ie = UA['ie'],
- nodeTypeIs = DOM._nodeTypeIs,
- isElementNode = DOM._isElementNode,
- isString = S.isString,
- DIV = 'div',
- PARENT_NODE = 'parentNode',
- DEFAULT_DIV = doc.createElement(DIV),
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
- RE_TAG = /<([\w:]+)/,
- rleadingWhitespace = /^\s+/,
- lostLeadingWhitespace = ie && ie < 9,
- rhtml = /<|&#?\w+;/,
- RE_SIMPLE_TAG = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
-
- function getElementsByTagName(el, tag) {
- return el.getElementsByTagName(tag);
- }
- function cleanData(els) {
- var Event = S.require("event");
- if (Event) {
- Event.detach(els);
- }
- DOM.removeData(els);
- }
- S.mix(DOM, {
-
- create: function(html, props, ownerDoc, _trim/*internal*/) {
- if (isElementNode(html)
- || nodeTypeIs(html, DOM.TEXT_NODE)) {
- return DOM.clone(html);
- }
- var ret = null;
- if (!isString(html)) {
- return ret;
- }
- if (_trim === undefined) {
- _trim = true;
- }
- if (_trim) {
- html = S.trim(html);
- }
- if (!html) {
- return ret;
- }
- var creators = DOM._creators,
- holder,
- whitespaceMatch,
- context = ownerDoc || doc,
- m,
- tag = DIV,
- k,
- nodes;
- if (!rhtml.test(html)) {
- ret = context.createTextNode(html);
- }
-
- else if ((m = RE_SIMPLE_TAG.exec(html))) {
- ret = context.createElement(m[1]);
- }
-
- else {
-
- html = html.replace(rxhtmlTag, "<$1><" + "/$2>");
- if ((m = RE_TAG.exec(html)) && (k = m[1])) {
- tag = k.toLowerCase();
- }
- holder = (creators[tag] || creators[DIV])(html, context);
-
- if (lostLeadingWhitespace && (whitespaceMatch = html.match(rleadingWhitespace))) {
- holder.insertBefore(context.createTextNode(whitespaceMatch[0]), holder.firstChild);
- }
- nodes = holder.childNodes;
- if (nodes.length === 1) {
-
- ret = nodes[0][PARENT_NODE].removeChild(nodes[0]);
- }
- else if (nodes.length) {
-
- ret = nl2frag(nodes, context);
- } else {
- S.error(html + " : create node error");
- }
- }
- return attachProps(ret, props);
- },
- _creators: {
- div: function(html, ownerDoc) {
- var frag = ownerDoc && ownerDoc != doc ? ownerDoc.createElement(DIV) : DEFAULT_DIV;
-
- frag['innerHTML'] = "m<div>" + html + "<" + "/div>";
- return frag.lastChild;
- }
- },
-
- html: function(selector, val, loadScripts, callback) {
-
- var els = DOM.query(selector),el = els[0];
- if (!el) {
- return
- }
-
- if (val === undefined) {
-
- if (isElementNode(el)) {
- return el['innerHTML'];
- } else {
- return null;
- }
- }
-
- else {
- var success = false;
- val += "";
-
- if (! val.match(/<(?:script|style)/i) &&
- (!lostLeadingWhitespace || !val.match(rleadingWhitespace)) &&
- !creatorsMap[ (val.match(RE_TAG) || ["",""])[1].toLowerCase() ]) {
- try {
- els.each(function(elem) {
- if (isElementNode(elem)) {
- cleanData(getElementsByTagName(elem, "*"));
- elem.innerHTML = val;
- }
- });
- success = true;
- } catch(e) {
-
-
- }
- }
- if (!success) {
- val = DOM.create(val, 0, el.ownerDocument, false);
- els.each(function(elem) {
- if (isElementNode(elem)) {
- DOM.empty(elem);
- DOM.append(val, elem, loadScripts);
- }
- });
- }
- callback && callback();
- }
- },
-
- remove: function(selector, keepData) {
- DOM.query(selector).each(function(el) {
- if (!keepData && isElementNode(el)) {
-
- var elChildren = getElementsByTagName(el, "*");
- cleanData(elChildren);
- cleanData(el);
- }
- if (el.parentNode) {
- el.parentNode.removeChild(el);
- }
- });
- },
-
- clone:function(selector, deep, withDataAndEvent, deepWithDataAndEvent) {
- var elem = DOM.get(selector);
- if (!elem) {
- return null;
- }
-
-
-
-
- var clone = elem.cloneNode(deep);
- if (isElementNode(elem) ||
- nodeTypeIs(elem, DOM.DOCUMENT_FRAGMENT_NODE)) {
-
-
-
-
-
- if (isElementNode(elem)) {
- fixAttributes(elem, clone);
- }
- if (deep) {
- processAll(fixAttributes, elem, clone);
- }
- }
-
- if (withDataAndEvent) {
- cloneWidthDataAndEvent(elem, clone);
- if (deep && deepWithDataAndEvent) {
- processAll(cloneWidthDataAndEvent, elem, clone);
- }
- }
- return clone;
- },
- empty:function(selector) {
- DOM.query(selector).each(function(el) {
- DOM.remove(el.childNodes);
- });
- },
- _nl2frag:nl2frag
- });
- function processAll(fn, elem, clone) {
- if (nodeTypeIs(elem, DOM.DOCUMENT_FRAGMENT_NODE)) {
- var eCs = elem.childNodes,
- cloneCs = clone.childNodes,
- fIndex = 0;
- while (eCs[fIndex]) {
- if (cloneCs[fIndex]) {
- processAll(fn, eCs[fIndex], cloneCs[fIndex]);
- }
- fIndex++;
- }
- } else if (isElementNode(elem)) {
- var elemChildren = getElementsByTagName(elem, "*"),
- cloneChildren = getElementsByTagName(clone, "*"),
- cIndex = 0;
- while (elemChildren[cIndex]) {
- if (cloneChildren[cIndex]) {
- fn(elemChildren[cIndex], cloneChildren[cIndex]);
- }
- cIndex++;
- }
- }
- }
-
- function cloneWidthDataAndEvent(src, dest) {
- var Event = S.require('event');
- if (isElementNode(dest) && !DOM.hasData(src)) {
- return;
- }
- var srcData = DOM.data(src);
-
- for (var d in srcData) {
- DOM.data(dest, d, srcData[d]);
- }
-
- if (Event) {
-
- Event._removeData(dest);
- Event._clone(src, dest);
- }
- }
-
- function fixAttributes(src, dest) {
-
-
- if (dest.clearAttributes) {
- dest.clearAttributes();
- }
-
-
- if (dest.mergeAttributes) {
- dest.mergeAttributes(src);
- }
- var nodeName = dest.nodeName.toLowerCase(),
- srcChilds = src.childNodes;
-
-
-
- if (nodeName === "object" && !dest.childNodes.length) {
- for (var i = 0; i < srcChilds.length; i++) {
- dest.appendChild(srcChilds[i].cloneNode(true));
- }
-
- } else if (nodeName === "input" && (src.type === "checkbox" || src.type === "radio")) {
-
-
-
- if (src.checked) {
- dest['defaultChecked'] = dest.checked = src.checked;
- }
-
-
- if (dest.value !== src.value) {
- dest.value = src.value;
- }
-
-
- } else if (nodeName === "option") {
- dest.selected = src.defaultSelected;
-
-
- } else if (nodeName === "input" || nodeName === "textarea") {
- dest.defaultValue = src.defaultValue;
- }
-
-
-
- dest.removeAttribute(DOM.__EXPANDO);
- }
-
- function attachProps(elem, props) {
- if (S.isPlainObject(props)) {
- if (isElementNode(elem)) {
- DOM.attr(elem, props, true);
- }
-
- else if (nodeTypeIs(elem, DOM.DOCUMENT_FRAGMENT_NODE)) {
- DOM.attr(elem.childNodes, props, true);
- }
- }
- return elem;
- }
-
- function nl2frag(nodes, ownerDoc) {
- var ret = null, i, len;
- if (nodes
- && (nodes.push || nodes.item)
- && nodes[0]) {
- ownerDoc = ownerDoc || nodes[0].ownerDocument;
- ret = ownerDoc.createDocumentFragment();
- nodes = S.makeArray(nodes);
- for (i = 0,len = nodes.length; i < len; i++) {
- ret.appendChild(nodes[i]);
- }
- }
- else {
- S.log('Unable to convert ' + nodes + ' to fragment.');
- }
- return ret;
- }
-
-
-
-
- var creators = DOM._creators,
- create = DOM.create,
- TABLE_OPEN = '<table>',
- TABLE_CLOSE = '<' + '/table>',
- RE_TBODY = /(?:\/(?:thead|tfoot|caption|col|colgroup)>)+\s*<tbody/,
- creatorsMap = {
- option: 'select',
- optgroup:'select',
- area:'map',
- thead:'table',
- td: 'tr',
- th:'tr',
- tr: 'tbody',
- tbody: 'table',
- tfoot:'table',
- caption:'table',
- colgroup:'table',
- col: 'colgroup',
- legend: 'fieldset'
- };
- for (var p in creatorsMap) {
- (function(tag) {
- creators[p] = function(html, ownerDoc) {
- return create('<' + tag + '>' + html + '<' + '/' + tag + '>', null, ownerDoc);
- }
- })(creatorsMap[p]);
- }
-
- if (ie < 8) {
- creators.tbody = function(html, ownerDoc) {
- var frag = create(TABLE_OPEN + html + TABLE_CLOSE, null, ownerDoc),
- tbody = frag.children['tags']('tbody')[0];
- if (frag.children.length > 1 && tbody && !RE_TBODY.test(html)) {
- tbody[PARENT_NODE].removeChild(tbody);
- }
- return frag;
- };
- }
-
- S.mix(creators, {
- thead: creators.tbody,
- tfoot: creators.tbody,
- caption: creators.tbody,
- colgroup: creators.tbody
- });
-
- return DOM;
- },
- {
- requires:["./base","ua"]
- });
- KISSY.add('dom/data', function (S, DOM, undefined) {
- var win = window,
- EXPANDO = '_ks_data_' + S.now(),
- dataCache = { },
- winDataCache = { };
-
-
- var noData = {
- };
- noData['applet'] = 1;
- noData['object'] = 1;
- noData['embed'] = 1;
- var commonOps = {
- hasData:function (cache, name) {
- if (cache) {
- if (name !== undefined) {
- if (name in cache) {
- return true;
- }
- } else if (!S.isEmptyObject(cache)) {
- return true;
- }
- }
- return false;
- }
- };
- var objectOps = {
- hasData:function (ob, name) {
-
- if (ob == win) {
- return objectOps.hasData(winDataCache, name);
- }
-
- var thisCache = ob[EXPANDO];
- return commonOps.hasData(thisCache, name);
- },
- data:function (ob, name, value) {
- if (ob == win) {
- return objectOps.data(winDataCache, name, value);
- }
- var cache = ob[EXPANDO];
- if (value !== undefined) {
- cache = ob[EXPANDO] = ob[EXPANDO] || {};
- cache[name] = value;
- } else {
- if (name !== undefined) {
- return cache && cache[name];
- } else {
- cache = ob[EXPANDO] = ob[EXPANDO] || {};
- return cache;
- }
- }
- },
- removeData:function (ob, name) {
- if (ob == win) {
- return objectOps.removeData(winDataCache, name);
- }
- var cache = ob[EXPANDO];
- if (name !== undefined) {
- delete cache[name];
- if (S.isEmptyObject(cache)) {
- objectOps.removeData(ob);
- }
- } else {
- try {
-
-
- delete ob[EXPANDO];
- } catch (e) {
- ob[EXPANDO] = undefined;
- }
- }
- }
- };
- var domOps = {
- hasData:function (elem, name) {
- var key = elem[EXPANDO];
- if (!key) {
- return false;
- }
- var thisCache = dataCache[key];
- return commonOps.hasData(thisCache, name);
- },
- data:function (elem, name, value) {
- if (noData[elem.nodeName.toLowerCase()]) {
- return undefined;
- }
- var key = elem[EXPANDO], cache;
- if (!key) {
-
- if (name !== undefined &&
- value === undefined) {
- return undefined;
- }
-
- key = elem[EXPANDO] = S.guid();
- }
- cache = dataCache[key];
- if (value !== undefined) {
-
- cache = dataCache[key] = dataCache[key] || {};
- cache[name] = value;
- } else {
- if (name !== undefined) {
- return cache && cache[name];
- } else {
-
- cache = dataCache[key] = dataCache[key] || {};
- return cache;
- }
- }
- },
- removeData:function (elem, name) {
- var key = elem[EXPANDO], cache;
- if (!key) {
- return;
- }
- cache = dataCache[key];
- if (name !== undefined) {
- delete cache[name];
- if (S.isEmptyObject(cache)) {
- domOps.removeData(elem);
- }
- } else {
- delete dataCache[key];
- try {
- delete elem[EXPANDO];
- } catch (e) {
- elem[EXPANDO] = undefined;
-
-
- }
- if (elem.removeAttribute) {
- elem.removeAttribute(EXPANDO);
- }
- }
- }
- };
- S.mix(DOM,
-
- {
- __EXPANDO:EXPANDO,
-
- hasData:function (selector, name) {
- var ret = false, elems = DOM.query(selector);
- for (var i = 0; i < elems.length; i++) {
- var elem = elems[i];
- if (checkIsNode(elem)) {
- ret = domOps.hasData(elem, name);
- } else {
- ret = objectOps.hasData(elem, name);
- }
- if (ret) {
- return ret;
- }
- }
- return ret;
- },
-
- data:function (selector, name, data) {
-
- if (S.isPlainObject(name)) {
- for (var k in name) {
- DOM.data(selector, k, name[k]);
- }
- return undefined;
- }
-
- if (data === undefined) {
- var elem = DOM.get(selector);
- if (checkIsNode(elem)) {
- return domOps.data(elem, name, data);
- } else if (elem) {
- return objectOps.data(elem, name, data);
- }
- }
-
- else {
- DOM.query(selector).each(function (elem) {
- if (checkIsNode(elem)) {
- domOps.data(elem, name, data);
- } else {
- objectOps.data(elem, name, data);
- }
- });
- }
- return undefined;
- },
-
- removeData:function (selector, name) {
- DOM.query(selector).each(function (elem) {
- if (checkIsNode(elem)) {
- domOps.removeData(elem, name);
- } else {
- objectOps.removeData(elem, name);
- }
- });
- }
- });
- function checkIsNode(elem) {
-
- return elem && elem.nodeType;
- }
- return DOM;
- }, {
- requires:["./base"]
- });
- KISSY.add('dom/insertion', function(S, UA, DOM) {
- var PARENT_NODE = 'parentNode',
- rformEls = /^(?:button|input|object|select|textarea)$/i,
- nodeName = DOM._nodeName,
- makeArray = S.makeArray,
- _isElementNode = DOM._isElementNode,
- NEXT_SIBLING = 'nextSibling';
-
- function fixChecked(ret) {
- for (var i = 0; i < ret.length; i++) {
- var el = ret[i];
- if (el.nodeType == DOM.DOCUMENT_FRAGMENT_NODE) {
- fixChecked(el.childNodes);
- } else if (nodeName(el, "input")) {
- fixCheckedInternal(el);
- } else if (_isElementNode(el)) {
- var cs = el.getElementsByTagName("input");
- for (var j = 0; j < cs.length; j++) {
- fixChecked(cs[j]);
- }
- }
- }
- }
- function fixCheckedInternal(el) {
- if (el.type === "checkbox" || el.type === "radio") {
-
- el.defaultChecked = el.checked;
- }
- }
- var rscriptType = /\/(java|ecma)script/i;
- function isJs(el) {
- return !el.type || rscriptType.test(el.type);
- }
-
- function filterScripts(nodes, scripts) {
- var ret = [],i,el,nodeName;
- for (i = 0; nodes[i]; i++) {
- el = nodes[i];
- nodeName = el.nodeName.toLowerCase();
- if (el.nodeType == DOM.DOCUMENT_FRAGMENT_NODE) {
- ret.push.apply(ret, filterScripts(makeArray(el.childNodes), scripts));
- } else if (nodeName === "script" && isJs(el)) {
-
- if (el.parentNode) {
- el.parentNode.removeChild(el)
- }
- if (scripts) {
- scripts.push(el);
- }
- } else {
- if (_isElementNode(el) &&
-
- !rformEls.test(nodeName)) {
- var tmp = [],
- s,
- j,
- ss = el.getElementsByTagName("script");
- for (j = 0; j < ss.length; j++) {
- s = ss[j];
- if (isJs(s)) {
- tmp.push(s);
- }
- }
- nodes.splice.apply(nodes, [i + 1,0].concat(tmp));
- }
- ret.push(el);
- }
- }
- return ret;
- }
-
- function evalScript(el) {
- if (el.src) {
- S.getScript(el.src);
- } else {
- var code = S.trim(el.text || el.textContent || el.innerHTML || "");
- if (code) {
- S.globalEval(code);
- }
- }
- }
-
- function insertion(newNodes, refNodes, fn, scripts) {
- newNodes = DOM.query(newNodes);
- if (scripts) {
- scripts = [];
- }
-
- newNodes = filterScripts(newNodes, scripts);
-
-
- if (UA['ie'] < 8) {
- fixChecked(newNodes);
- }
- refNodes = DOM.query(refNodes);
- var newNodesLength = newNodes.length,
- refNodesLength = refNodes.length;
- if ((!newNodesLength &&
- (!scripts || !scripts.length)) ||
- !refNodesLength) {
- return;
- }
-
- var newNode = DOM._nl2frag(newNodes),
- clonedNode;
-
- if (refNodesLength > 1) {
- clonedNode = DOM.clone(newNode, true);
- }
- for (var i = 0; i < refNodesLength; i++) {
- var refNode = refNodes[i];
- if (newNodesLength) {
-
- var node = i > 0 ? DOM.clone(clonedNode, true) : newNode;
- fn(node, refNode);
- }
- if (scripts && scripts.length) {
- S.each(scripts, evalScript);
- }
- }
- }
-
- S.mix(DOM, {
-
- insertBefore: function(newNodes, refNodes, loadScripts) {
- insertion(newNodes, refNodes, function(newNode, refNode) {
- if (refNode[PARENT_NODE]) {
- refNode[PARENT_NODE].insertBefore(newNode, refNode);
- }
- }, loadScripts);
- },
-
- insertAfter: function(newNodes, refNodes, loadScripts) {
- insertion(newNodes, refNodes, function(newNode, refNode) {
- if (refNode[PARENT_NODE]) {
- refNode[PARENT_NODE].insertBefore(newNode, refNode[NEXT_SIBLING]);
- }
- }, loadScripts);
- },
-
- appendTo: function(newNodes, parents, loadScripts) {
- insertion(newNodes, parents, function(newNode, parent) {
- parent.appendChild(newNode);
- }, loadScripts);
- },
-
- prependTo:function(newNodes, parents, loadScripts) {
- insertion(newNodes, parents, function(newNode, parent) {
- parent.insertBefore(newNode, parent.firstChild);
- }, loadScripts);
- }
- });
- var alias = {
- "prepend":"prependTo",
- "append":"appendTo",
- "before":"insertBefore",
- "after":"insertAfter"
- };
- for (var a in alias) {
- DOM[a] = DOM[alias[a]];
- }
- return DOM;
- }, {
- requires:["ua","./create"]
- });
- KISSY.add('dom/offset', function(S, DOM, UA, undefined) {
- var win = window,
- doc = document,
- isIE = UA['ie'],
- docElem = doc.documentElement,
- isElementNode = DOM._isElementNode,
- nodeTypeIs = DOM._nodeTypeIs,
- getWin = DOM._getWin,
- CSS1Compat = "CSS1Compat",
- compatMode = "compatMode",
- isStrict = doc[compatMode] === CSS1Compat,
- MAX = Math.max,
- PARSEINT = parseInt,
- POSITION = 'position',
- RELATIVE = 'relative',
- DOCUMENT = 'document',
- BODY = 'body',
- DOC_ELEMENT = 'documentElement',
- OWNER_DOCUMENT = 'ownerDocument',
- VIEWPORT = 'viewport',
- SCROLL = 'scroll',
- CLIENT = 'client',
- LEFT = 'left',
- TOP = 'top',
- isNumber = S.isNumber,
- SCROLL_LEFT = SCROLL + 'Left',
- SCROLL_TOP = SCROLL + 'Top',
- GET_BOUNDING_CLIENT_RECT = 'getBoundingClientRect';
- S.mix(DOM, {
-
- offset: function(selector, val, relativeWin) {
-
- if (val === undefined) {
- var elem = DOM.get(selector),ret;
- if (elem) {
- ret = getOffset(elem, relativeWin);
- }
- return ret;
- }
-
- DOM.query(selector).each(function(elem) {
- setOffset(elem, val);
- });
- },
-
- scrollIntoView: function(elem, container, top, hscroll, auto) {
- if (!(elem = DOM.get(elem))) {
- return;
- }
- if (container) {
- container = DOM.get(container);
- }
- if (!container) {
- container = elem.ownerDocument;
- }
- if (auto !== true) {
- hscroll = hscroll === undefined ? true : !!hscroll;
- top = top === undefined ? true : !!top;
- }
-
- if (nodeTypeIs(container, DOM.DOCUMENT_NODE)) {
- container = getWin(container);
- }
- var isWin = !!getWin(container),
- elemOffset = DOM.offset(elem),
- eh = DOM.outerHeight(elem),
- ew = DOM.outerWidth(elem),
- containerOffset,
- ch,
- cw,
- containerScroll,
- diffTop,
- diffBottom,
- win,
- winScroll,
- ww,
- wh;
- if (isWin) {
- win = container;
- wh = DOM.height(win);
- ww = DOM.width(win);
- winScroll = {
- left:DOM.scrollLeft(win),
- top:DOM.scrollTop(win)
- };
-
- diffTop = {
- left: elemOffset[LEFT] - winScroll[LEFT],
- top: elemOffset[TOP] - winScroll[TOP]
- };
- diffBottom = {
- left: elemOffset[LEFT] + ew - (winScroll[LEFT] + ww),
- top:elemOffset[TOP] + eh - (winScroll[TOP] + wh)
- };
- containerScroll = winScroll;
- }
- else {
- containerOffset = DOM.offset(container);
- ch = container.clientHeight;
- cw = container.clientWidth;
- containerScroll = {
- left:DOM.scrollLeft(container),
- top:DOM.scrollTop(container)
- };
-
-
- diffTop = {
- left: elemOffset[LEFT] - containerOffset[LEFT] -
- (PARSEINT(DOM.css(container, 'borderLeftWidth')) || 0),
- top: elemOffset[TOP] - containerOffset[TOP] -
- (PARSEINT(DOM.css(container, 'borderTopWidth')) || 0)
- };
- diffBottom = {
- left: elemOffset[LEFT] + ew -
- (containerOffset[LEFT] + cw +
- (PARSEINT(DOM.css(container, 'borderRightWidth')) || 0)) ,
- top:elemOffset[TOP] + eh -
- (containerOffset[TOP] + ch +
- (PARSEINT(DOM.css(container, 'borderBottomWidth')) || 0))
- };
- }
- if (diffTop.top < 0 || diffBottom.top > 0) {
-
- if (top === true) {
- DOM.scrollTop(container, containerScroll.top + diffTop.top);
- } else if (top === false) {
- DOM.scrollTop(container, containerScroll.top + diffBottom.top);
- } else {
-
- if (diffTop.top < 0) {
- DOM.scrollTop(container, containerScroll.top + diffTop.top);
- } else {
- DOM.scrollTop(container, containerScroll.top + diffBottom.top);
- }
- }
- }
- if (hscroll) {
- if (diffTop.left < 0 || diffBottom.left > 0) {
-
- if (top === true) {
- DOM.scrollLeft(container, containerScroll.left + diffTop.left);
- } else if (top === false) {
- DOM.scrollLeft(container, containerScroll.left + diffBottom.left);
- } else {
-
- if (diffTop.left < 0) {
- DOM.scrollLeft(container, containerScroll.left + diffTop.left);
- } else {
- DOM.scrollLeft(container, containerScroll.left + diffBottom.left);
- }
- }
- }
- }
- },
-
- docWidth:0,
- docHeight:0,
- viewportHeight:0,
- viewportWidth:0
- });
-
-
-
- S.each(['Left', 'Top'], function(name, i) {
- var method = SCROLL + name;
- DOM[method] = function(elem, v) {
- if (isNumber(elem)) {
- return arguments.callee(win, elem);
- }
- elem = DOM.get(elem);
- var ret,
- w = getWin(elem),
- d;
- if (w) {
- if (v !== undefined) {
- v = parseFloat(v);
-
- var left = name == "Left" ? v : DOM.scrollLeft(w),
- top = name == "Top" ? v : DOM.scrollTop(w);
- w['scrollTo'](left, top);
- } else {
-
-
-
- ret = w[ 'page' + (i ? 'Y' : 'X') + 'Offset'];
- if (!isNumber(ret)) {
- d = w[DOCUMENT];
-
- ret = d[DOC_ELEMENT][method];
- if (!isNumber(ret)) {
-
- ret = d[BODY][method];
- }
- }
- }
- } else if (isElementNode(elem)) {
- if (v !== undefined) {
- elem[method] = parseFloat(v)
- } else {
- ret = elem[method];
- }
- }
- return ret;
- }
- });
-
- S.each(['Width', 'Height'], function(name) {
- DOM['doc' + name] = function(refWin) {
- refWin = DOM.get(refWin);
- var w = getWin(refWin),
- d = w[DOCUMENT];
- return MAX(
-
-
- d[DOC_ELEMENT][SCROLL + name],
-
- d[BODY][SCROLL + name],
- DOM[VIEWPORT + name](d));
- };
- DOM[VIEWPORT + name] = function(refWin) {
- refWin = DOM.get(refWin);
- var prop = CLIENT + name,
- win = getWin(refWin),
- doc = win[DOCUMENT],
- body = doc[BODY],
- documentElement = doc[DOC_ELEMENT],
- documentElementProp = documentElement[prop];
-
-
- return doc[compatMode] === CSS1Compat
- && documentElementProp ||
- body && body[ prop ] || documentElementProp;
- }
- });
- function getClientPosition(elem) {
- var box, x = 0, y = 0,
- body = doc.body,
- w = getWin(elem[OWNER_DOCUMENT]);
-
- if (elem[GET_BOUNDING_CLIENT_RECT]) {
- box = elem[GET_BOUNDING_CLIENT_RECT]();
-
-
-
- x = box[LEFT];
- y = box[TOP];
-
-
-
-
-
-
-
- var clientTop = isIE && doc['documentMode'] != 9
- && (isStrict ? docElem.clientTop : body.clientTop)
- || 0,
- clientLeft = isIE && doc['documentMode'] != 9
- && (isStrict ? docElem.clientLeft : body.clientLeft)
- || 0;
- if (1 > 2) {
- }
- x -= clientLeft;
- y -= clientTop;
-
- if (UA.mobile == 'apple') {
- x -= DOM[SCROLL_LEFT](w);
- y -= DOM[SCROLL_TOP](w);
- }
- }
- return { left: x, top: y };
- }
- function getPageOffset(el) {
- var pos = getClientPosition(el);
- var w = getWin(el[OWNER_DOCUMENT]);
- pos.left += DOM[SCROLL_LEFT](w);
- pos.top += DOM[SCROLL_TOP](w);
- return pos;
- }
-
- function getOffset(el, relativeWin) {
- var position = {left:0,top:0};
-
-
- var currentWin = getWin(el[OWNER_DOCUMENT]);
- var currentEl = el;
- relativeWin = relativeWin || currentWin;
- do {
-
-
-
-
- var offset = currentWin == relativeWin ?
- getPageOffset(currentEl) :
- getClientPosition(currentEl);
- position.left += offset.left;
- position.top += offset.top;
- } while (currentWin && currentWin != relativeWin &&
- (currentEl = currentWin['frameElement']) &&
- (currentWin = currentWin.parent));
- return position;
- }
-
- function setOffset(elem, offset) {
-
- if (DOM.css(elem, POSITION) === 'static') {
- elem.style[POSITION] = RELATIVE;
- }
- var old = getOffset(elem), ret = { }, current, key;
- for (key in offset) {
- current = PARSEINT(DOM.css(elem, key), 10) || 0;
- ret[key] = current + offset[key] - old[key];
- }
- DOM.css(elem, ret);
- }
- return DOM;
- }, {
- requires:["./base","ua"]
- });
- KISSY.add('dom/style', function(S, DOM, UA, undefined) {
- var doc = document,
- docElem = doc.documentElement,
- isIE = UA['ie'],
- STYLE = 'style',
- FLOAT = 'float',
- CSS_FLOAT = 'cssFloat',
- STYLE_FLOAT = 'styleFloat',
- WIDTH = 'width',
- HEIGHT = 'height',
- AUTO = 'auto',
- DISPLAY = 'display',
- OLD_DISPLAY = DISPLAY + S.now(),
- NONE = 'none',
- PARSEINT = parseInt,
- RE_NUMPX = /^-?\d+(?:px)?$/i,
- cssNumber = {
- "fillOpacity": 1,
- "fontWeight": 1,
- "lineHeight": 1,
- "opacity": 1,
- "orphans": 1,
- "widows": 1,
- "zIndex": 1,
- "zoom": 1
- },
- RE_DASH = /-([a-z])/ig,
- CAMELCASE_FN = function(all, letter) {
- return letter.toUpperCase();
- },
-
- rupper = /([A-Z]|^ms)/g,
- EMPTY = '',
- DEFAULT_UNIT = 'px',
- CUSTOM_STYLES = {},
- cssProps = {},
- defaultDisplay = {};
-
- if (docElem[STYLE][CSS_FLOAT] !== undefined) {
- cssProps[FLOAT] = CSS_FLOAT;
- }
- else if (docElem[STYLE][STYLE_FLOAT] !== undefined) {
- cssProps[FLOAT] = STYLE_FLOAT;
- }
- function camelCase(name) {
- return name.replace(RE_DASH, CAMELCASE_FN);
- }
- var defaultDisplayDetectIframe,
- defaultDisplayDetectIframeDoc;
-
-
- function getDefaultDisplay(tagName) {
- var body,
- elem;
- if (!defaultDisplay[ tagName ]) {
- body = doc.body || doc.documentElement;
- elem = doc.createElement(tagName);
- DOM.prepend(elem, body);
- var oldDisplay = DOM.css(elem, "display");
- body.removeChild(elem);
-
-
- if (oldDisplay === "none" || oldDisplay === "") {
-
- if (!defaultDisplayDetectIframe) {
- defaultDisplayDetectIframe = doc.createElement("iframe");
- defaultDisplayDetectIframe.frameBorder =
- defaultDisplayDetectIframe.width =
- defaultDisplayDetectIframe.height = 0;
- DOM.prepend(defaultDisplayDetectIframe, body);
- var iframeSrc;
- if (iframeSrc = DOM._genEmptyIframeSrc()) {
- defaultDisplayDetectIframe.src = iframeSrc;
- }
- } else {
- DOM.prepend(defaultDisplayDetectIframe, body);
- }
-
-
-
- if (!defaultDisplayDetectIframeDoc || !defaultDisplayDetectIframe.createElement) {
- try {
- defaultDisplayDetectIframeDoc = defaultDisplayDetectIframe.contentWindow.document;
- defaultDisplayDetectIframeDoc.write(( doc.compatMode === "CSS1Compat" ? "<!doctype html>" : "" )
- + "<html><head>" +
- (UA['ie'] && DOM._isCustomDomain() ?
- "<script>document.domain = '" +
- doc.domain
- + "';</script>" : "")
- +
- "</head><body>");
- defaultDisplayDetectIframeDoc.close();
- } catch(e) {
-
-
- return "block";
- }
- }
- elem = defaultDisplayDetectIframeDoc.createElement(tagName);
- defaultDisplayDetectIframeDoc.body.appendChild(elem);
- oldDisplay = DOM.css(elem, "display");
- body.removeChild(defaultDisplayDetectIframe);
- }
-
- defaultDisplay[ tagName ] = oldDisplay;
- }
- return defaultDisplay[ tagName ];
- }
- S.mix(DOM, {
- _camelCase:camelCase,
- _cssNumber:cssNumber,
- _CUSTOM_STYLES: CUSTOM_STYLES,
- _cssProps:cssProps,
- _getComputedStyle: function(elem, name) {
- var val = "",
- computedStyle = {},
- d = elem.ownerDocument;
- name = name.replace(rupper, "-$1").toLowerCase();
-
- if (computedStyle = d.defaultView.getComputedStyle(elem, null)) {
- val = computedStyle.getPropertyValue(name) || computedStyle[name];
- }
-
- if (val == "" && !DOM.__contains(d.documentElement, elem)) {
- name = cssProps[name] || name;
- val = elem[STYLE][name];
- }
- return val;
- },
-
- style:function(selector, name, val) {
-
- if (S.isPlainObject(name)) {
- for (var k in name) {
- DOM.style(selector, k, name[k]);
- }
- return;
- }
- if (val === undefined) {
- var elem = DOM.get(selector),ret = '';
- if (elem) {
- ret = style(elem, name, val);
- }
- return ret;
- } else {
- DOM.query(selector).each(function(elem) {
- style(elem, name, val);
- });
- }
- },
-
- css: function(selector, name, val) {
-
- if (S.isPlainObject(name)) {
- for (var k in name) {
- DOM.css(selector, k, name[k]);
- }
- return;
- }
- name = camelCase(name);
- var hook = CUSTOM_STYLES[name];
-
- if (val === undefined) {
-
- var elem = DOM.get(selector), ret = '';
- if (elem) {
-
- if (hook && "get" in hook && (ret = hook.get(elem, true)) !== undefined) {
- } else {
- ret = DOM._getComputedStyle(elem, name);
- }
- }
- return ret === undefined ? '' : ret;
- }
-
- else {
- DOM.style(selector, name, val);
- }
- },
-
- show: function(selector) {
- DOM.query(selector).each(function(elem) {
- elem[STYLE][DISPLAY] = DOM.data(elem, OLD_DISPLAY) || EMPTY;
-
- if (DOM.css(elem, DISPLAY) === NONE) {
- var tagName = elem.tagName.toLowerCase(),
- old = getDefaultDisplay(tagName);
- DOM.data(elem, OLD_DISPLAY, old);
- elem[STYLE][DISPLAY] = old;
- }
- });
- },
-
- hide: function(selector) {
- DOM.query(selector).each(function(elem) {
- var style = elem[STYLE], old = style[DISPLAY];
- if (old !== NONE) {
- if (old) {
- DOM.data(elem, OLD_DISPLAY, old);
- }
- style[DISPLAY] = NONE;
- }
- });
- },
-
- toggle: function(selector) {
- DOM.query(selector).each(function(elem) {
- if (DOM.css(elem, DISPLAY) === NONE) {
- DOM.show(elem);
- } else {
- DOM.hide(elem);
- }
- });
- },
-
- addStyleSheet: function(refWin, cssText, id) {
- if (S.isString(refWin)) {
- id = cssText;
- cssText = refWin;
- refWin = window;
- }
- refWin = DOM.get(refWin);
- var win = DOM._getWin(refWin),doc = win.document;
- var elem;
- if (id && (id = id.replace('#', EMPTY))) {
- elem = DOM.get('#' + id, doc);
- }
-
- if (elem) {
- return;
- }
- elem = DOM.create('<style>', { id: id }, doc);
-
- DOM.get('head', doc).appendChild(elem);
- if (elem.styleSheet) {
- elem.styleSheet.cssText = cssText;
- } else {
- elem.appendChild(doc.createTextNode(cssText));
- }
- },
- unselectable:function(selector) {
- DOM.query(selector).each(function(elem) {
- if (UA['gecko']) {
- elem[STYLE]['MozUserSelect'] = 'none';
- }
- else if (UA['webkit']) {
- elem[STYLE]['KhtmlUserSelect'] = 'none';
- } else {
- if (UA['ie'] || UA['opera']) {
- var e,i = 0,
- els = elem.getElementsByTagName("*");
- elem.setAttribute("unselectable", 'on');
- while (( e = els[ i++ ] )) {
- switch (e.tagName.toLowerCase()) {
- case 'iframe' :
- case 'textarea' :
- case 'input' :
- case 'select' :
-
- break;
- default :
- e.setAttribute("unselectable", 'on');
- }
- }
- }
- }
- });
- },
- innerWidth:0,
- innerHeight:0,
- outerWidth:0,
- outerHeight:0,
- width:0,
- height:0
- });
- function capital(str) {
- return str.charAt(0).toUpperCase() + str.substring(1);
- }
- S.each([WIDTH,HEIGHT], function(name) {
- DOM["inner" + capital(name)] = function(selector) {
- var el = DOM.get(selector);
- if (el) {
- return getWH(el, name, "padding");
- } else {
- return null;
- }
- };
- DOM["outer" + capital(name)] = function(selector, includeMargin) {
- var el = DOM.get(selector);
- if (el) {
- return getWH(el, name, includeMargin ? "margin" : "border");
- } else {
- return null;
- }
- };
- DOM[name] = function(selector, val) {
- var ret = DOM.css(selector, name, val);
- if (ret) {
- ret = parseFloat(ret);
- }
- return ret;
- };
- });
- var cssShow = { position: "absolute", visibility: "hidden", display: "block" };
-
- S.each(["height", "width"], function(name) {
- CUSTOM_STYLES[ name ] = {
- get: function(elem, computed) {
- var val;
- if (computed) {
- if (elem.offsetWidth !== 0) {
- val = getWH(elem, name);
- } else {
- swap(elem, cssShow, function() {
- val = getWH(elem, name);
- });
- }
- return val + "px";
- }
- },
- set: function(elem, value) {
- if (RE_NUMPX.test(value)) {
- value = parseFloat(value);
- if (value >= 0) {
- return value + "px";
- }
- } else {
- return value;
- }
- }
- };
- });
- S.each(["left", "top"], function(name) {
- CUSTOM_STYLES[ name ] = {
- get: function(elem, computed) {
- if (computed) {
- var val = DOM._getComputedStyle(elem, name),offset;
-
-
-
-
-
- if (val === AUTO) {
- val = 0;
- if (S.inArray(DOM.css(elem, 'position'), ['absolute','fixed'])) {
- offset = elem[name === 'left' ? 'offsetLeft' : 'offsetTop'];
-
- if (isIE && document['documentMode'] != 9 || UA['opera']) {
-
-
-
-
-
-
- offset -= elem.offsetParent && elem.offsetParent['client' + (name == 'left' ? 'Left' : 'Top')]
- || 0;
- }
- val = offset - (PARSEINT(DOM.css(elem, 'margin-' + name)) || 0);
- }
- val += "px";
- }
- return val;
- }
- }
- };
- });
- function swap(elem, options, callback) {
- var old = {};
-
- for (var name in options) {
- old[ name ] = elem[STYLE][ name ];
- elem[STYLE][ name ] = options[ name ];
- }
- callback.call(elem);
-
- for (name in options) {
- elem[STYLE][ name ] = old[ name ];
- }
- }
- function style(elem, name, val) {
- var style;
- if (elem.nodeType === 3 || elem.nodeType === 8 || !(style = elem[STYLE])) {
- return undefined;
- }
- name = camelCase(name);
- var ret,hook = CUSTOM_STYLES[name];
- name = cssProps[name] || name;
-
- if (val !== undefined) {
-
- if (val === null || val === EMPTY) {
- val = EMPTY;
- }
-
- else if (!isNaN(Number(val)) && !cssNumber[name]) {
- val += DEFAULT_UNIT;
- }
- if (hook && hook.set) {
- val = hook.set(elem, val);
- }
- if (val !== undefined) {
-
- try {
- elem[STYLE][name] = val;
- } catch(e) {
- S.log("css set error :" + e);
- }
- }
- return undefined;
- }
-
- else {
-
- if (hook && "get" in hook && (ret = hook.get(elem, false)) !== undefined) {
- } else {
-
- ret = style[ name ];
- }
- return ret === undefined ? "" : ret;
- }
- }
-
- function getWH(elem, name, extra) {
- if (S.isWindow(elem)) {
- return name == WIDTH ? DOM.viewportWidth(elem) : DOM.viewportHeight(elem);
- } else if (elem.nodeType == 9) {
- return name == WIDTH ? DOM.docWidth(elem) : DOM.docHeight(elem);
- }
- var which = name === WIDTH ? ['Left', 'Right'] : ['Top', 'Bottom'],
- val = name === WIDTH ? elem.offsetWidth : elem.offsetHeight;
- if (val > 0) {
- if (extra !== "border") {
- S.each(which, function(w) {
- if (!extra) {
- val -= parseFloat(DOM.css(elem, "padding" + w)) || 0;
- }
- if (extra === "margin") {
- val += parseFloat(DOM.css(elem, extra + w)) || 0;
- } else {
- val -= parseFloat(DOM.css(elem, "border" + w + "Width")) || 0;
- }
- });
- }
- return val
- }
-
- val = DOM._getComputedStyle(elem, name);
- if (val < 0 || S.isNullOrUndefined(val)) {
- val = elem.style[ name ] || 0;
- }
-
- val = parseFloat(val) || 0;
-
- if (extra) {
- S.each(which, function(w) {
- val += parseFloat(DOM.css(elem, "padding" + w)) || 0;
- if (extra !== "padding") {
- val += parseFloat(DOM.css(elem, "border" + w + "Width")) || 0;
- }
- if (extra === "margin") {
- val += parseFloat(DOM.css(elem, extra + w)) || 0;
- }
- });
- }
- return val;
- }
- return DOM;
- }, {
- requires:["dom/base","ua"]
- });
- KISSY.add('dom/selector', function(S, DOM, undefined) {
- var doc = document,
- filter = S.filter,
- require = function(selector) {
- return S.require(selector);
- },
- isArray = S.isArray,
- makeArray = S.makeArray,
- isNodeList = DOM._isNodeList,
- nodeName = DOM._nodeName,
- push = Array.prototype.push,
- SPACE = ' ',
- COMMA = ',',
- trim = S.trim,
- ANY = '*',
- REG_ID = /^#[\w-]+$/,
- REG_QUERY = /^(?:#([\w-]+))?\s*([\w-]+|\*)?\.?([\w-]+)?$/;
-
- function query(selector, context) {
- var ret,
- i,
- isSelectorString = typeof selector === 'string',
-
- contexts = context === undefined ? [doc] : tuneContext(context);
- if (isSelectorString) {
- selector = trim(selector);
- if (contexts.length == 1 && selector) {
- ret = quickFindBySelectorStr(selector, contexts[0]);
- }
- }
- if (!ret) {
- ret = [];
- if (selector) {
- for (i = 0; i < contexts.length; i++) {
- push.apply(ret, queryByContexts(selector, contexts[i]));
- }
-
- if (ret.length > 1 &&
-
- (contexts.length > 1 ||
- (isSelectorString &&
-
- selector.indexOf(COMMA) > -1))) {
- unique(ret);
- }
- }
- }
-
- ret.each = function(f) {
- var self = this,el,i;
- for (i = 0; i < self.length; i++) {
- el = self[i];
- if (f(el, i) === false) {
- break;
- }
- }
- };
- return ret;
- }
- function queryByContexts(selector, context) {
- var ret = [],
- isSelectorString = typeof selector === 'string';
- if (isSelectorString && selector.match(REG_QUERY) ||
- !isSelectorString) {
-
- ret = queryBySimple(selector, context);
- }
-
- else if (isSelectorString && selector.indexOf(COMMA) > -1) {
- ret = queryBySelectors(selector, context);
- }
- else {
-
- ret = queryBySizzle(selector, context);
- }
- return ret;
- }
-
- function queryBySizzle(selector, context) {
- var ret = [],
- sizzle = require("sizzle");
- if (sizzle) {
- sizzle(selector, context, ret);
- } else {
-
- error(selector);
- }
- return ret;
- }
-
- function queryBySelectors(selector, context) {
- var ret = [],
- i,
- selectors = selector.split(/\s*,\s*/);
- for (i = 0; i < selectors.length; i++) {
- push.apply(ret, queryByContexts(selectors[i], context));
- }
-
- return ret;
- }
- function quickFindBySelectorStr(selector, context) {
- var ret,t,match,id,tag,cls;
-
- if (REG_ID.test(selector)) {
- t = getElementById(selector.slice(1), context);
- if (t) {
-
- ret = [t];
- } else {
- ret = [];
- }
- }
-
- else {
- match = REG_QUERY.exec(selector);
- if (match) {
-
- id = match[1];
- tag = match[2];
- cls = match[3];
-
- context = (id ? getElementById(id, context) : context);
- if (context) {
-
- if (cls) {
- if (!id || selector.indexOf(SPACE) != -1) {
- ret = [].concat(getElementsByClassName(cls, tag, context));
- }
-
- else {
- t = getElementById(id, context);
- if (t && hasClass(t, cls)) {
- ret = [t];
- }
- }
- }
-
- else if (tag) {
- ret = getElementsByTagName(tag, context);
- }
- }
- ret = ret || [];
- }
- }
- return ret;
- }
-
- function queryBySimple(selector, context) {
- var ret,
- isSelectorString = typeof selector === 'string';
- if (isSelectorString) {
- ret = quickFindBySelectorStr(selector, context) || [];
- }
-
- else if (selector && (isArray(selector) || isNodeList(selector))) {
-
- ret = filter(selector, function(s) {
- return testByContext(s, context);
- });
- }
-
-
- else if (selector && testByContext(selector, context)) {
- ret = [selector];
- }
- return ret;
- }
- function testByContext(element, context) {
- if (!element) {
- return false;
- }
-
-
-
- if (context == doc) {
- return true;
- }
-
- return DOM.__contains(context, element);
- }
- var unique;
- (function() {
- var sortOrder,
- t,
- hasDuplicate,
- baseHasDuplicate = true;
-
- [0, 0].sort(function() {
- baseHasDuplicate = false;
- return 0;
- });
-
- unique = function (elements) {
- if (sortOrder) {
- hasDuplicate = baseHasDuplicate;
- elements.sort(sortOrder);
- if (hasDuplicate) {
- var i = 1,len = elements.length;
- while (i < len) {
- if (elements[i] === elements[ i - 1 ]) {
- elements.splice(i, 1);
- } else {
- i++;
- }
- }
- }
- }
- return elements;
- };
-
- if (doc.documentElement.compareDocumentPosition) {
- sortOrder = t = function(a, b) {
- if (a == b) {
- hasDuplicate = true;
- return 0;
- }
- if (!a.compareDocumentPosition || !b.compareDocumentPosition) {
- return a.compareDocumentPosition ? -1 : 1;
- }
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
- };
- } else {
- sortOrder = t = function(a, b) {
-
- if (a == b) {
- hasDuplicate = true;
- return 0;
-
- } else if (a.sourceIndex && b.sourceIndex) {
- return a.sourceIndex - b.sourceIndex;
- }
- };
- }
- })();
-
- function tuneContext(context) {
-
- if (context === undefined) {
- return [doc];
- }
-
- return query(context, undefined);
- }
-
- function getElementById(id, context) {
- var doc = context,
- el;
- if (context.nodeType !== DOM.DOCUMENT_NODE) {
- doc = context.ownerDocument;
- }
- el = doc.getElementById(id);
- if (el && el.id === id) {
-
- }
- else if (el && el.parentNode) {
-
-
-
- if (DOM.__attr(el, "id") !== id) {
-
- el = DOM.filter(ANY, "#" + id, context)[0] || null;
- }
-
-
- else if (!testByContext(el, context)) {
- el = null;
- }
- } else {
- el = null;
- }
- return el;
- }
-
- function getElementsByTagName(tag, context) {
- return context && makeArray(context.getElementsByTagName(tag)) || [];
- }
- (function() {
-
-
-
- var div = doc.createElement('div');
- div.appendChild(doc.createComment(''));
-
- if (div.getElementsByTagName(ANY).length > 0) {
- getElementsByTagName = function(tag, context) {
- var ret = makeArray(context.getElementsByTagName(tag));
- if (tag === ANY) {
- var t = [], i = 0,node;
- while ((node = ret[i++])) {
-
- if (node.nodeType === 1) {
- t.push(node);
- }
- }
- ret = t;
- }
- return ret;
- };
- }
- })();
-
- var getElementsByClassName = doc.getElementsByClassName ? function(cls, tag, context) {
-
-
- if (!context) {
- return [];
- }
- var els = context.getElementsByClassName(cls),
- ret,
- i = 0,
- len = els.length,
- el;
- if (tag && tag !== ANY) {
- ret = [];
- for (; i < len; ++i) {
- el = els[i];
- if (nodeName(el, tag)) {
- ret.push(el);
- }
- }
- } else {
- ret = makeArray(els);
- }
- return ret;
- } : ( doc.querySelectorAll ? function(cls, tag, context) {
-
- return context && makeArray(context.querySelectorAll((tag ? tag : '') + '.' + cls)) || [];
- } : function(cls, tag, context) {
- if (!context) {
- return [];
- }
- var els = context.getElementsByTagName(tag || ANY),
- ret = [],
- i = 0,
- len = els.length,
- el;
- for (; i < len; ++i) {
- el = els[i];
- if (hasClass(el, cls)) {
- ret.push(el);
- }
- }
- return ret;
- });
- function hasClass(el, cls) {
- return DOM.__hasClass(el, cls);
- }
-
- function error(msg) {
- S.error('Unsupported selector: ' + msg);
- }
- S.mix(DOM, {
- query: query,
- get: function(selector, context) {
- return query(selector, context)[0] || null;
- },
- unique:unique,
-
- filter: function(selector, filter, context) {
- var elems = query(selector, context),
- sizzle = require("sizzle"),
- match,
- tag,
- id,
- cls,
- ret = [];
-
- if (typeof filter === 'string' &&
- (filter = trim(filter)) &&
- (match = REG_QUERY.exec(filter))) {
- id = match[1];
- tag = match[2];
- cls = match[3];
- if (!id) {
- filter = function(elem) {
- var tagRe = true,clsRe = true;
-
- if (tag) {
- tagRe = nodeName(elem, tag);
- }
-
- if (cls) {
- clsRe = hasClass(elem, cls);
- }
- return clsRe && tagRe;
- }
- } else if (id && !tag && !cls) {
- filter = function(elem) {
- return DOM.__attr(elem, "id") === id;
- };
- }
- }
- if (S.isFunction(filter)) {
- ret = S.filter(elems, filter);
- }
-
- else if (filter && sizzle) {
- ret = sizzle.matches(filter, elems);
- }
-
- else {
- error(filter);
- }
- return ret;
- },
-
- test: function(selector, filter, context) {
- var elements = query(selector, context);
- return elements.length && (DOM.filter(elements, filter, context).length === elements.length);
- }
- });
- return DOM;
- }, {
- requires:["./base"]
- });
- KISSY.add('dom/style-ie', function(S, DOM, UA, Style) {
- var HUNDRED = 100;
-
- if (!UA['ie']) {
- return DOM;
- }
- var doc = document,
- docElem = doc.documentElement,
- OPACITY = 'opacity',
- STYLE = 'style',
- FILTER = "filter",
- CURRENT_STYLE = 'currentStyle',
- RUNTIME_STYLE = 'runtimeStyle',
- LEFT = 'left',
- PX = 'px',
- CUSTOM_STYLES = Style._CUSTOM_STYLES,
- RE_NUMPX = /^-?\d+(?:px)?$/i,
- RE_NUM = /^-?\d/,
- ropacity = /opacity=([^)]*)/,
- ralpha = /alpha\([^)]*\)/i;
-
- try {
- if (S.isNullOrUndefined(docElem.style[OPACITY])) {
- CUSTOM_STYLES[OPACITY] = {
- get: function(elem, computed) {
-
-
-
- return ropacity.test((
- computed && elem[CURRENT_STYLE] ?
- elem[CURRENT_STYLE][FILTER] :
- elem[STYLE][FILTER]) || "") ?
- ( parseFloat(RegExp.$1) / HUNDRED ) + "" :
- computed ? "1" : "";
- },
- set: function(elem, val) {
- val = parseFloat(val);
- var style = elem[STYLE],
- currentStyle = elem[CURRENT_STYLE],
- opacity = isNaN(val) ? "" : "alpha(" + OPACITY + "=" + val * HUNDRED + ")",
- filter = S.trim(currentStyle && currentStyle[FILTER] || style[FILTER] || "");
-
- style.zoom = 1;
-
- if (val >= 1 && S.trim(filter.replace(ralpha, "")) === "") {
-
-
-
- style.removeAttribute(FILTER);
-
- if (currentStyle && !currentStyle[FILTER]) {
- return;
- }
- }
-
-
- style.filter = ralpha.test(filter) ?
- filter.replace(ralpha, opacity) :
- filter + (filter ? ", " : "") + opacity;
- }
- };
- }
- }
- catch(ex) {
- S.log('IE filters ActiveX is disabled. ex = ' + ex);
- }
-
- var IE8 = UA['ie'] == 8,
- BORDER_MAP = {
- },
- BORDERS = ["","Top","Left","Right","Bottom"];
- BORDER_MAP['thin'] = IE8 ? '1px' : '2px';
- BORDER_MAP['medium'] = IE8 ? '3px' : '4px';
- BORDER_MAP['thick'] = IE8 ? '5px' : '6px';
- S.each(BORDERS, function(b) {
- var name = "border" + b + "Width",
- styleName = "border" + b + "Style";
- CUSTOM_STYLES[name] = {
- get: function(elem, computed) {
-
- var currentStyle = computed ? elem[CURRENT_STYLE] : 0,
- current = currentStyle && String(currentStyle[name]) || undefined;
-
- if (current && current.indexOf("px") < 0) {
-
- if (BORDER_MAP[current] && currentStyle[styleName] !== "none") {
- current = BORDER_MAP[current];
- } else {
-
- current = 0;
- }
- }
- return current;
- }
- };
- });
-
- if (!(doc.defaultView || { }).getComputedStyle && docElem[CURRENT_STYLE]) {
- DOM._getComputedStyle = function(elem, name) {
- name = DOM._cssProps[name] || name;
- var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
-
-
-
-
-
-
-
-
- if ((!RE_NUMPX.test(ret) && RE_NUM.test(ret))) {
-
- var style = elem[STYLE],
- left = style[LEFT],
- rsLeft = elem[RUNTIME_STYLE] && elem[RUNTIME_STYLE][LEFT];
-
- if (rsLeft) {
- elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
- }
- style[LEFT] = name === 'fontSize' ? '1em' : (ret || 0);
- ret = style['pixelLeft'] + PX;
-
- style[LEFT] = left;
- if (rsLeft) {
- elem[RUNTIME_STYLE][LEFT] = rsLeft;
- }
- }
- return ret === "" ? "auto" : ret;
- };
- }
- return DOM;
- },
- {
- requires:["./base","ua","./style"]
- }
- );
- KISSY.add('dom/traversal', function(S, DOM, undefined) {
- var isElementNode = DOM._isElementNode,
- CONTAIN_MASK = 16;
- S.mix(DOM, {
- closest:function(selector, filter, context) {
- return nth(selector, filter, 'parentNode', function(elem) {
- return elem.nodeType != DOM.DOCUMENT_FRAGMENT_NODE;
- }, context, true);
- },
-
- parent: function(selector, filter, context) {
- return nth(selector, filter, 'parentNode', function(elem) {
- return elem.nodeType != DOM.DOCUMENT_FRAGMENT_NODE;
- }, context);
- },
- first:function(selector, filter) {
- var elem = DOM.get(selector);
- return nth(elem && elem.firstChild, filter, 'nextSibling',
- undefined, undefined, true);
- },
- last:function(selector, filter) {
- var elem = DOM.get(selector);
- return nth(elem && elem.lastChild, filter, 'previousSibling',
- undefined, undefined, true);
- },
-
- next: function(selector, filter) {
- return nth(selector, filter, 'nextSibling', undefined);
- },
-
- prev: function(selector, filter) {
- return nth(selector, filter, 'previousSibling', undefined);
- },
-
- siblings: function(selector, filter) {
- return getSiblings(selector, filter, true);
- },
-
- children: function(selector, filter) {
- return getSiblings(selector, filter, undefined);
- },
- __contains:document.documentElement.contains ?
- function(a, b) {
- if (a.nodeType == DOM.TEXT_NODE) {
- return false;
- }
- var precondition;
- if (b.nodeType == DOM.TEXT_NODE) {
- b = b.parentNode;
-
- precondition = true;
- } else if (b.nodeType == DOM.DOCUMENT_NODE) {
-
-
- return false;
- } else {
-
- precondition = a !== b;
- }
-
-
- return precondition && (a.contains ? a.contains(b) : true);
- } : (
- document.documentElement.compareDocumentPosition ?
- function(a, b) {
- return !!(a.compareDocumentPosition(b) & CONTAIN_MASK);
- } :
-
- 0
- ),
-
- contains:
- function(a, b) {
- a = DOM.get(a);
- b = DOM.get(b);
- if (a && b) {
- return DOM.__contains(a, b);
- }
- },
- equals:function(n1, n2) {
- n1 = DOM.query(n1);
- n2 = DOM.query(n2);
- if (n1.length != n2.length) {
- return false;
- }
- for (var i = n1.length; i >= 0; i--) {
- if (n1[i] != n2[i]) {
- return false;
- }
- }
- return true;
- }
- });
-
-
-
-
- function nth(elem, filter, direction, extraFilter, context, includeSef) {
- if (!(elem = DOM.get(elem))) {
- return null;
- }
- if (filter === 0) {
- return elem;
- }
- if (!includeSef) {
- elem = elem[direction];
- }
- if (!elem) {
- return null;
- }
- context = (context && DOM.get(context)) || null;
- if (filter === undefined) {
-
- filter = 1;
- }
- var ret = [],
- isArray = S.isArray(filter),
- fi,
- flen;
- if (S.isNumber(filter)) {
- fi = 0;
- flen = filter;
- filter = function() {
- return ++fi === flen;
- };
- }
-
- while (elem && elem != context) {
- if (isElementNode(elem)
- && testFilter(elem, filter)
- && (!extraFilter || extraFilter(elem))) {
- ret.push(elem);
- if (!isArray) {
- break;
- }
- }
- elem = elem[direction];
- }
- return isArray ? ret : ret[0] || null;
- }
- function testFilter(elem, filter) {
- if (!filter) {
- return true;
- }
- if (S.isArray(filter)) {
- for (var i = 0; i < filter.length; i++) {
- if (DOM.test(elem, filter[i])) {
- return true;
- }
- }
- } else if (DOM.test(elem, filter)) {
- return true;
- }
- return false;
- }
-
- function getSiblings(selector, filter, parent) {
- var ret = [],
- elem = DOM.get(selector),
- j,
- parentNode = elem,
- next;
- if (elem && parent) {
- parentNode = elem.parentNode;
- }
- if (parentNode) {
- for (j = 0,next = parentNode.firstChild;
- next;
- next = next.nextSibling) {
- if (isElementNode(next)
- && next !== elem
- && (!filter || DOM.test(next, filter))) {
- ret[j++] = next;
- }
- }
- }
- return ret;
- }
- return DOM;
- }, {
- requires:["./base"]
- });
- KISSY.add("dom", function(S,DOM) {
- return DOM;
- }, {
- requires:["dom/attr",
- "dom/class",
- "dom/create",
- "dom/data",
- "dom/insertion",
- "dom/offset",
- "dom/style",
- "dom/selector",
- "dom/style-ie",
- "dom/traversal"]
- });
- KISSY.add("event/keycodes", function() {
- var KeyCodes = {
- MAC_ENTER: 3,
- BACKSPACE: 8,
- TAB: 9,
- NUM_CENTER: 12,
- ENTER: 13,
- SHIFT: 16,
- CTRL: 17,
- ALT: 18,
- PAUSE: 19,
- CAPS_LOCK: 20,
- ESC: 27,
- SPACE: 32,
- PAGE_UP: 33,
- PAGE_DOWN: 34,
- END: 35,
- HOME: 36,
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- PRINT_SCREEN: 44,
- INSERT: 45,
- DELETE: 46,
- ZERO: 48,
- ONE: 49,
- TWO: 50,
- THREE: 51,
- FOUR: 52,
- FIVE: 53,
- SIX: 54,
- SEVEN: 55,
- EIGHT: 56,
- NINE: 57,
- QUESTION_MARK: 63,
- A: 65,
- B: 66,
- C: 67,
- D: 68,
- E: 69,
- F: 70,
- G: 71,
- H: 72,
- I: 73,
- J: 74,
- K: 75,
- L: 76,
- M: 77,
- N: 78,
- O: 79,
- P: 80,
- Q: 81,
- R: 82,
- S: 83,
- T: 84,
- U: 85,
- V: 86,
- W: 87,
- X: 88,
- Y: 89,
- Z: 90,
- META: 91,
- WIN_KEY_RIGHT: 92,
- CONTEXT_MENU: 93,
- NUM_ZERO: 96,
- NUM_ONE: 97,
- NUM_TWO: 98,
- NUM_THREE: 99,
- NUM_FOUR: 100,
- NUM_FIVE: 101,
- NUM_SIX: 102,
- NUM_SEVEN: 103,
- NUM_EIGHT: 104,
- NUM_NINE: 105,
- NUM_MULTIPLY: 106,
- NUM_PLUS: 107,
- NUM_MINUS: 109,
- NUM_PERIOD: 110,
- NUM_DIVISION: 111,
- F1: 112,
- F2: 113,
- F3: 114,
- F4: 115,
- F5: 116,
- F6: 117,
- F7: 118,
- F8: 119,
- F9: 120,
- F10: 121,
- F11: 122,
- F12: 123,
- NUMLOCK: 144,
- SEMICOLON: 186,
- DASH: 189,
- EQUALS: 187,
- COMMA: 188,
- PERIOD: 190,
- SLASH: 191,
- APOSTROPHE: 192,
- SINGLE_QUOTE: 222,
- OPEN_SQUARE_BRACKET: 219,
- BACKSLASH: 220,
- CLOSE_SQUARE_BRACKET: 221,
- WIN_KEY: 224,
- MAC_FF_META: 224,
- WIN_IME: 229
- };
- KeyCodes.isTextModifyingKeyEvent = function(e) {
- if (e.altKey && !e.ctrlKey ||
- e.metaKey ||
-
- e.keyCode >= KeyCodes.F1 &&
- e.keyCode <= KeyCodes.F12) {
- return false;
- }
-
-
- switch (e.keyCode) {
- case KeyCodes.ALT:
- case KeyCodes.CAPS_LOCK:
- case KeyCodes.CONTEXT_MENU:
- case KeyCodes.CTRL:
- case KeyCodes.DOWN:
- case KeyCodes.END:
- case KeyCodes.ESC:
- case KeyCodes.HOME:
- case KeyCodes.INSERT:
- case KeyCodes.LEFT:
- case KeyCodes.MAC_FF_META:
- case KeyCodes.META:
- case KeyCodes.NUMLOCK:
- case KeyCodes.NUM_CENTER:
- case KeyCodes.PAGE_DOWN:
- case KeyCodes.PAGE_UP:
- case KeyCodes.PAUSE:
- case KeyCodes.PHANTOM:
- case KeyCodes.PRINT_SCREEN:
- case KeyCodes.RIGHT:
- case KeyCodes.SHIFT:
- case KeyCodes.UP:
- case KeyCodes.WIN_KEY:
- case KeyCodes.WIN_KEY_RIGHT:
- return false;
- default:
- return true;
- }
- };
- KeyCodes.isCharacterKey = function(keyCode) {
- if (keyCode >= KeyCodes.ZERO &&
- keyCode <= KeyCodes.NINE) {
- return true;
- }
- if (keyCode >= KeyCodes.NUM_ZERO &&
- keyCode <= KeyCodes.NUM_MULTIPLY) {
- return true;
- }
- if (keyCode >= KeyCodes.A &&
- keyCode <= KeyCodes.Z) {
- return true;
- }
-
- if (goog.userAgent.WEBKIT && keyCode == 0) {
- return true;
- }
- switch (keyCode) {
- case KeyCodes.SPACE:
- case KeyCodes.QUESTION_MARK:
- case KeyCodes.NUM_PLUS:
- case KeyCodes.NUM_MINUS:
- case KeyCodes.NUM_PERIOD:
- case KeyCodes.NUM_DIVISION:
- case KeyCodes.SEMICOLON:
- case KeyCodes.DASH:
- case KeyCodes.EQUALS:
- case KeyCodes.COMMA:
- case KeyCodes.PERIOD:
- case KeyCodes.SLASH:
- case KeyCodes.APOSTROPHE:
- case KeyCodes.SINGLE_QUOTE:
- case KeyCodes.OPEN_SQUARE_BRACKET:
- case KeyCodes.BACKSLASH:
- case KeyCodes.CLOSE_SQUARE_BRACKET:
- return true;
- default:
- return false;
- }
- };
- return KeyCodes;
- });
- KISSY.add('event/object', function(S, undefined) {
- var doc = document,
- props = ('altKey attrChange attrName bubbles button cancelable ' +
- 'charCode clientX clientY ctrlKey currentTarget data detail ' +
- 'eventPhase fromElement handler keyCode metaKey ' +
- 'newValue offsetX offsetY originalTarget pageX pageY prevValue ' +
- 'relatedNode relatedTarget screenX screenY shiftKey srcElement ' +
- 'target toElement view wheelDelta which axis').split(' ');
-
- function EventObject(currentTarget, domEvent, type) {
- var self = this;
- self.currentTarget = currentTarget;
- self.originalEvent = domEvent || { };
- if (domEvent) {
- self.type = domEvent.type;
- self._fix();
- }
- else {
- self.type = type;
- self.target = currentTarget;
- }
-
- self.currentTarget = currentTarget;
- self.fixed = true;
- }
- S.augment(EventObject, {
- _fix: function() {
- var self = this,
- originalEvent = self.originalEvent,
- l = props.length, prop,
- ct = self.currentTarget,
- ownerDoc = (ct.nodeType === 9) ? ct : (ct.ownerDocument || doc);
-
- while (l) {
- prop = props[--l];
- self[prop] = originalEvent[prop];
- }
-
- if (!self.target) {
- self.target = self.srcElement || doc;
- }
-
- if (self.target.nodeType === 3) {
- self.target = self.target.parentNode;
- }
-
- if (!self.relatedTarget && self.fromElement) {
- self.relatedTarget = (self.fromElement === self.target) ? self.toElement : self.fromElement;
- }
-
- if (self.pageX === undefined && self.clientX !== undefined) {
- var docEl = ownerDoc.documentElement, bd = ownerDoc.body;
- self.pageX = self.clientX + (docEl && docEl.scrollLeft || bd && bd.scrollLeft || 0) - (docEl && docEl.clientLeft || bd && bd.clientLeft || 0);
- self.pageY = self.clientY + (docEl && docEl.scrollTop || bd && bd.scrollTop || 0) - (docEl && docEl.clientTop || bd && bd.clientTop || 0);
- }
-
- if (self.which === undefined) {
- self.which = (self.charCode === undefined) ? self.keyCode : self.charCode;
- }
-
- if (self.metaKey === undefined) {
- self.metaKey = self.ctrlKey;
- }
-
-
- if (!self.which && self.button !== undefined) {
- self.which = (self.button & 1 ? 1 : (self.button & 2 ? 3 : ( self.button & 4 ? 2 : 0)));
- }
- },
-
- preventDefault: function() {
- var e = this.originalEvent;
-
- if (e.preventDefault) {
- e.preventDefault();
- }
-
- else {
- e.returnValue = false;
- }
- this.isDefaultPrevented = true;
- },
-
- stopPropagation: function() {
- var e = this.originalEvent;
-
- if (e.stopPropagation) {
- e.stopPropagation();
- }
-
- else {
- e.cancelBubble = true;
- }
- this.isPropagationStopped = true;
- },
-
- stopImmediatePropagation: function() {
- var self = this;
- self.isImmediatePropagationStopped = true;
-
-
- self.stopPropagation();
- },
-
- halt: function(immediate) {
- if (immediate) {
- this.stopImmediatePropagation();
- } else {
- this.stopPropagation();
- }
- this.preventDefault();
- }
- });
- if (1 > 2) {
- alert(S.cancelBubble);
- }
- return EventObject;
- });
- KISSY.add("event/utils", function(S, DOM) {
-
- function isIdenticalHandler(h1, h2, el) {
- var scope1 = h1.scope || el,
- ret = 1,
- d1,
- d2,
- scope2 = h2.scope || el;
- if (h1.fn !== h2.fn
- || scope1 !== scope2) {
- ret = 0;
- } else if ((d1 = h1.data) !== (d2 = h2.data)) {
-
-
- if (!d1 && d2
- || d1 && !d2
- ) {
- ret = 0;
- } else if (d1 && d2) {
- if (!d1.equals || !d2.equals) {
- S.error("no equals in data");
- } else if (!d1.equals(d2,el)) {
- ret = 0;
- }
- }
- }
- return ret;
- }
- function isValidTarget(target) {
-
-
- return target &&
- target.nodeType !== DOM.TEXT_NODE &&
- target.nodeType !== DOM.COMMENT_NODE;
- }
- function batchForType(obj, methodName, targets, types) {
-
- if (types && types.indexOf(" ") > 0) {
- var args = S.makeArray(arguments);
- S.each(types.split(/\s+/), function(type) {
- var args2 = [].concat(args);
- args2.splice(0, 4, targets, type);
- obj[methodName].apply(obj, args2);
- });
- return true;
- }
- return 0;
- }
- function splitAndRun(type, fn) {
- S.each(type.split(/\s+/), fn);
- }
- var doc = document,
- simpleAdd = doc.addEventListener ?
- function(el, type, fn, capture) {
- if (el.addEventListener) {
- el.addEventListener(type, fn, !!capture);
- }
- } :
- function(el, type, fn) {
- if (el.attachEvent) {
- el.attachEvent('on' + type, fn);
- }
- },
- simpleRemove = doc.removeEventListener ?
- function(el, type, fn, capture) {
- if (el.removeEventListener) {
- el.removeEventListener(type, fn, !!capture);
- }
- } :
- function(el, type, fn) {
- if (el.detachEvent) {
- el.detachEvent('on' + type, fn);
- }
- };
- return {
- splitAndRun:splitAndRun,
- batchForType:batchForType,
- isValidTarget:isValidTarget,
- isIdenticalHandler:isIdenticalHandler,
- simpleAdd:simpleAdd,
- simpleRemove:simpleRemove
- };
- }, {
- requires:['dom']
- });
- KISSY.add('event/base', function(S, DOM, EventObject, Utils, undefined) {
- var isValidTarget = Utils.isValidTarget,
- isIdenticalHandler = Utils.isIdenticalHandler,
- batchForType = Utils.batchForType,
- simpleRemove = Utils.simpleRemove,
- simpleAdd = Utils.simpleAdd,
- splitAndRun = Utils.splitAndRun,
- nodeName = DOM._nodeName,
- makeArray = S.makeArray,
- each = S.each,
- trim = S.trim,
-
-
-
- Event_Triggered = "",
- TRIGGERED_NONE = "trigger-none-" + S.now(),
- EVENT_SPECIAL = {},
-
-
- EVENT_GUID = 'ksEventTargetId' + S.now();
-
- var Event = {
- _clone:function(src, dest) {
- if (dest.nodeType !== DOM.ELEMENT_NODE ||
- !Event._hasData(src)) {
- return;
- }
- var eventDesc = Event._data(src),
- events = eventDesc.events;
- each(events, function(handlers, type) {
- each(handlers, function(handler) {
-
- Event.on(dest, type, handler.fn, handler.scope, handler.data);
- });
- });
- },
- _hasData:function(elem) {
- return DOM.hasData(elem, EVENT_GUID);
- },
- _data:function(elem) {
- var args = makeArray(arguments);
- args.splice(1, 0, EVENT_GUID);
- return DOM.data.apply(DOM, args);
- },
- _removeData:function(elem) {
- var args = makeArray(arguments);
- args.splice(1, 0, EVENT_GUID);
- return DOM.removeData.apply(DOM, args);
- },
-
- special: EVENT_SPECIAL,
-
- __add:function(isNativeTarget, target, type, fn, scope, data) {
- var eventDesc;
-
- if (!target ||
- !S.isFunction(fn) ||
- (isNativeTarget && !isValidTarget(target))) {
- return;
- }
-
- eventDesc = Event._data(target);
- if (!eventDesc) {
- Event._data(target, eventDesc = {});
- }
-
- var events = eventDesc.events = eventDesc.events || {},
- handlers = events[type] = events[type] || [],
- handleObj = {
- fn: fn,
- scope: scope,
- data:data
- },
- eventHandler = eventDesc.handler;
-
- if (!eventHandler) {
- eventHandler = eventDesc.handler = function(event, data) {
-
-
- if (event && event.type == Event_Triggered) {
- return;
- }
- var currentTarget = eventHandler.target;
- if (!event || !event.fixed) {
- event = new EventObject(currentTarget, event);
- }
- var type = event.type;
- if (S.isPlainObject(data)) {
- S.mix(event, data);
- }
-
- if (type) {
- event.type = type;
- }
- return _handle(currentTarget, event);
- };
-
- eventHandler.target = target;
- }
- for (var i = handlers.length - 1; i >= 0; --i) {
-
- if (isIdenticalHandler(handlers[i], handleObj, target)) {
- return;
- }
- }
- if (isNativeTarget) {
- addDomEvent(target, type, eventHandler, handlers, handleObj);
-
- target = null;
- }
-
- handlers.push(handleObj);
- },
-
- add: function(targets, type, fn, scope /* optional */, data/*internal usage*/) {
- type = trim(type);
-
-
- if (batchForType(Event, 'add', targets, type, fn, scope, data)) {
- return targets;
- }
- DOM.query(targets).each(function(target) {
- Event.__add(true, target, type, fn, scope, data);
- });
- return targets;
- },
-
- __remove:function(isNativeTarget, target, type, fn, scope, data) {
- if (
- !target ||
- (isNativeTarget && !isValidTarget(target))
- ) {
- return;
- }
- var eventDesc = Event._data(target),
- events = eventDesc && eventDesc.events,
- handlers,
- len,
- i,
- j,
- t,
- special = (isNativeTarget && EVENT_SPECIAL[type]) || { };
- if (!events) {
- return;
- }
-
- if (!type) {
- for (type in events) {
- Event.__remove(isNativeTarget, target, type);
- }
- return;
- }
- if ((handlers = events[type])) {
- len = handlers.length;
-
- if (fn && len) {
- var currentHandler = {
- data:data,
- fn:fn,
- scope:scope
- },handler;
- for (i = 0,j = 0,t = []; i < len; ++i) {
- handler = handlers[i];
-
- if (!isIdenticalHandler(handler, currentHandler, target)) {
- t[j++] = handler;
- } else if (special.remove) {
- special.remove.call(target, handler);
- }
- }
- events[type] = t;
- len = t.length;
- }
-
- if (fn === undefined || len === 0) {
-
- if (isNativeTarget &&
- (!special['tearDown'] ||
- special['tearDown'].call(target) === false)) {
- simpleRemove(target, type, eventDesc.handler);
- }
-
- delete events[type];
- }
- }
-
- if (S.isEmptyObject(events)) {
- eventDesc.handler.target = null;
- delete eventDesc.handler;
- delete eventDesc.events;
- Event._removeData(target);
- }
- },
-
- remove: function(targets, type /* optional */, fn /* optional */, scope /* optional */, data/*internal usage*/) {
- type = trim(type);
- if (batchForType(Event, 'remove', targets, type, fn, scope)) {
- return targets;
- }
- DOM.query(targets).each(function(target) {
- Event.__remove(true, target, type, fn, scope, data);
- });
- return targets;
- },
- _handle:_handle,
-
- fire: function(targets, eventType, eventData, onlyHandlers) {
- var ret = true;
- eventType = trim(eventType);
- if (eventType.indexOf(" ") > -1) {
- splitAndRun(eventType, function(t) {
- ret = Event.fire(targets, t, eventData, onlyHandlers) && ret;
- });
- return ret;
- }
-
- eventData = eventData || {};
-
- eventData.type = eventType;
- DOM.query(targets).each(function(target) {
- ret = fireDOMEvent(target, eventType, eventData, onlyHandlers) && ret;
- });
- return ret;
- }
- };
-
- Event['__getListeners'] = getListeners
-
- Event.on = Event.add;
- Event.detach = Event.remove;
- function getListeners(target, type) {
- var events = getEvents(target) || {};
- return events[type] || [];
- }
- function _handle(target, event) {
-
-
- var listeners = getListeners(target, event.type).slice(0),
- ret,
- gRet,
- i = 0,
- len = listeners.length,
- listener;
- for (; i < len; ++i) {
- listener = listeners[i];
-
-
- ret = listener.fn.call(listener.scope || target,
- event, listener.data);
-
- if (ret !== undefined) {
-
-
- if (gRet !== false) {
- gRet = ret;
- }
-
- if (ret === false) {
- event.halt();
- }
- }
- if (event.isImmediatePropagationStopped) {
- break;
- }
- }
-
-
- return gRet;
- }
- function getEvents(target) {
-
- var eventDesc = Event._data(target);
- return eventDesc && eventDesc.events;
- }
-
- function addDomEvent(target, type, eventHandler, handlers, handleObj) {
- var special = EVENT_SPECIAL[type] || {};
-
- if (!handlers.length &&
- (!special.setup || special.setup.call(target) === false)) {
- simpleAdd(target, type, eventHandler)
- }
- if (special.add) {
- special.add.call(target, handleObj);
- }
- }
-
- function fireDOMEvent(target, eventType, eventData, onlyHandlers) {
- if (!isValidTarget(target)) {
- return false;
- }
- var event,
- ret = true;
- if (eventData instanceof EventObject) {
- event = eventData;
- } else {
- event = new EventObject(target, undefined, eventType);
- S.mix(event, eventData);
- }
-
-
-
-
- event.type = eventType;
-
- if (onlyHandlers) {
- event.halt();
- }
- var cur = target,
- ontype = "on" + eventType;
-
- do{
- event.currentTarget = cur;
- _handle(cur, event);
-
- if (cur[ ontype ] &&
- cur[ ontype ].call(cur) === false) {
- event.preventDefault();
- }
-
- cur = cur.parentNode ||
- cur.ownerDocument ||
- cur === target.ownerDocument && window;
- } while (cur && !event.isPropagationStopped);
- if (!event.isDefaultPrevented) {
- if (!(eventType === "click" &&
- nodeName(target, "a"))) {
- var old;
- try {
- if (ontype && target[ eventType ]) {
-
- old = target[ ontype ];
- if (old) {
- target[ ontype ] = null;
- }
-
- Event_Triggered = eventType;
-
-
- target[ eventType ]();
- }
- } catch (ieError) {
- S.log("trigger action error : ");
- S.log(ieError);
- }
- if (old) {
- target[ ontype ] = old;
- }
- Event_Triggered = TRIGGERED_NONE;
- }
- } else {
- ret = false;
- }
- return ret;
- }
- return Event;
- }, {
- requires:["dom","./object","./utils"]
- });
- KISSY.add('event/target', function(S, Event, EventObject, Utils, undefined) {
- var KS_PUBLISH = "__~ks_publish",
- trim = S.trim,
- splitAndRun = Utils.splitAndRun,
- KS_BUBBLE_TARGETS = "__~ks_bubble_targets",
- ALL_EVENT = "*";
- function getCustomEvent(self, type, eventData) {
- if (eventData instanceof EventObject) {
-
- eventData.currentTarget = self;
- return eventData;
- }
- var customEvent = new EventObject(self, undefined, type);
- if (S.isPlainObject(eventData)) {
- S.mix(customEvent, eventData);
- }
-
- customEvent.type = type;
- return customEvent
- }
- function getEventPublishObj(self) {
- self[KS_PUBLISH] = self[KS_PUBLISH] || {};
- return self[KS_PUBLISH];
- }
- function getBubbleTargetsObj(self) {
- self[KS_BUBBLE_TARGETS] = self[KS_BUBBLE_TARGETS] || {};
- return self[KS_BUBBLE_TARGETS];
- }
- function isBubblable(self, eventType) {
- var publish = getEventPublishObj(self);
- return publish[eventType] && publish[eventType].bubbles || publish[ALL_EVENT] && publish[ALL_EVENT].bubbles
- }
- function attach(method) {
- return function(type, fn, scope) {
- var self = this;
- type = trim(type);
- splitAndRun(type, function(t) {
- Event["__" + method](false, self, t, fn, scope);
- });
- return self;
- };
- }
-
- var Target =
-
- {
-
- fire: function(type, eventData) {
- var self = this,
- ret,
- r2,
- customEvent;
- type = trim(type);
- if (type.indexOf(" ") > 0) {
- splitAndRun(type, function(t) {
- r2 = self.fire(t, eventData);
- if (r2 === false) {
- ret = false;
- }
- });
- return ret;
- }
- customEvent = getCustomEvent(self, type, eventData);
- ret = Event._handle(self, customEvent);
- if (!customEvent.isPropagationStopped &&
- isBubblable(self, type)) {
- r2 = self.bubble(type, customEvent);
-
- if (ret !== false) {
- ret = r2;
- }
- }
- return ret
- },
-
- publish: function(type, cfg) {
- var self = this,
- publish = getEventPublishObj(self);
- type = trim(type);
- if (type) {
- publish[type] = cfg;
- }
- },
-
- bubble: function(type, eventData) {
- var self = this,
- ret,
- targets = getBubbleTargetsObj(self);
- S.each(targets, function(t) {
- var r2 = t.fire(type, eventData);
- if (ret !== false) {
- ret = r2;
- }
- });
- return ret;
- },
-
- addTarget: function(target) {
- var self = this,
- targets = getBubbleTargetsObj(self);
- targets[S.stamp(target)] = target;
- },
- removeTarget:function(target) {
- var self = this,
- targets = getBubbleTargetsObj(self);
- delete targets[S.stamp(target)];
- },
-
- on: attach("add")
- };
-
- Target.detach = attach("remove");
- return Target;
- }, {
-
- requires:["./base",'./object','./utils']
- });
- KISSY.add('event/focusin', function(S, UA, Event) {
-
- if (!UA['ie']) {
- S.each([
- { name: 'focusin', fix: 'focus' },
- { name: 'focusout', fix: 'blur' }
- ], function(o) {
- var attaches = 0;
- Event.special[o.name] = {
-
-
-
- setup: function() {
- if (attaches++ === 0) {
- document.addEventListener(o.fix, handler, true);
- }
- },
- tearDown:function() {
- if (--attaches === 0) {
- document.removeEventListener(o.fix, handler, true);
- }
- }
- };
- function handler(event) {
- var target = event.target;
- return Event.fire(target, o.name);
- }
- });
- }
- return Event;
- }, {
- requires:["ua","./base"]
- });
- KISSY.add('event/hashchange', function(S, Event, DOM, UA) {
- var doc = document,
- docMode = doc['documentMode'],
- ie = docMode || UA['ie'],
- HASH_CHANGE = 'hashchange';
-
-
-
-
- if ((!( 'on' + HASH_CHANGE in window)) || ie && ie < 8) {
- function getIframeDoc(iframe) {
- return iframe.contentWindow.document;
- }
- var POLL_INTERVAL = 50,
- win = window,
- IFRAME_TEMPLATE = "<html><head><title>" + (doc.title || "") +
- " - {hash}</title>{head}</head><body>{hash}</body></html>",
- getHash = function() {
-
-
-
-
- var url = location.href;
- return '#' + url.replace(/^[^#]*#?(.*)$/, '$1');
- },
- timer,
-
- lastHash,
- poll = function () {
- var hash = getHash();
- if (hash !== lastHash) {
-
-
- lastHash = hash;
-
- hashChange(hash);
- }
- timer = setTimeout(poll, POLL_INTERVAL);
- },
- hashChange = ie && ie < 8 ? function(hash) {
-
- var html = S.substitute(IFRAME_TEMPLATE, {
- hash: hash,
-
- head:DOM._isCustomDomain() ? "<script>document.domain = '" +
- doc.domain
- + "';</script>" : ""
- }),
- iframeDoc = getIframeDoc(iframe);
- try {
-
- iframeDoc.open();
-
-
- iframeDoc.write(html);
- iframeDoc.close();
-
- } catch (e) {
-
-
- }
- } : function () {
- notifyHashChange();
- },
- notifyHashChange = function () {
-
- Event.fire(win, HASH_CHANGE);
- },
- setup = function () {
- if (!timer) {
- poll();
- }
- },
- tearDown = function () {
- timer && clearTimeout(timer);
- timer = 0;
- },
- iframe;
-
- if (ie < 8) {
-
- setup = function() {
- if (!iframe) {
- var iframeSrc = DOM._genEmptyIframeSrc();
-
- iframe = DOM.create('<iframe ' +
- (iframeSrc ? 'src="' + iframeSrc + '"' : '') +
- ' style="display: none" ' +
- 'height="0" ' +
- 'width="0" ' +
- 'tabindex="-1" ' +
- 'title="empty"/>');
-
-
-
- DOM.prepend(iframe, doc.documentElement);
-
- Event.add(iframe, "load", function() {
- Event.remove(iframe, "load");
-
-
-
- hashChange(getHash());
- Event.add(iframe, "load", onIframeLoad);
- poll();
- });
-
-
-
-
- doc.onpropertychange = function() {
- try {
- if (event.propertyName === 'title') {
- getIframeDoc(iframe).title =
- doc.title + " - " + getHash();
- }
- } catch(e) {
- }
- };
-
- function onIframeLoad() {
-
-
-
-
- var c = S.trim(getIframeDoc(iframe).body.innerText),
- ch = getHash();
-
-
- if (c != ch) {
- S.log("set loc hash :" + c);
- location.hash = c;
-
-
-
-
- lastHash = c;
- }
- notifyHashChange();
- }
- }
- };
- tearDown = function() {
- timer && clearTimeout(timer);
- timer = 0;
- Event.detach(iframe);
- DOM.remove(iframe);
- iframe = 0;
- };
- }
- Event.special[HASH_CHANGE] = {
- setup: function() {
- if (this !== win) {
- return;
- }
-
-
- lastHash = getHash();
-
- setup();
- },
- tearDown: function() {
- if (this !== win) {
- return;
- }
- tearDown();
- }
- };
- }
- }, {
- requires:["./base","dom","ua"]
- });
- KISSY.add('event/valuechange', function (S, Event, DOM) {
- var VALUE_CHANGE = "valuechange",
- nodeName = DOM._nodeName,
- KEY = "event/valuechange",
- HISTORY_KEY = KEY + "/history",
- POLL_KEY = KEY + "/poll",
- interval = 50;
- function stopPoll(target) {
- DOM.removeData(target, HISTORY_KEY);
- if (DOM.hasData(target, POLL_KEY)) {
- var poll = DOM.data(target, POLL_KEY);
- clearTimeout(poll);
- DOM.removeData(target, POLL_KEY);
- }
- }
- function stopPollHandler(ev) {
- var target = ev.target;
- stopPoll(target);
- }
- function startPoll(target) {
- if (DOM.hasData(target, POLL_KEY)) return;
- DOM.data(target, POLL_KEY, setTimeout(function () {
- var v = target.value, h = DOM.data(target, HISTORY_KEY);
- if (v !== h) {
-
- Event.fire(target, VALUE_CHANGE, {
- prevVal:h,
- newVal:v
- }, true);
- DOM.data(target, HISTORY_KEY, v);
- }
- DOM.data(target, POLL_KEY, setTimeout(arguments.callee, interval));
- }, interval));
- }
- function startPollHandler(ev) {
- var target = ev.target;
-
- if (ev.type == "focus") {
- DOM.data(target, HISTORY_KEY, target.value);
- }
- startPoll(target);
- }
- function monitor(target) {
- unmonitored(target);
- Event.on(target, "blur", stopPollHandler);
- Event.on(target, "mousedown keyup keydown focus", startPollHandler);
- }
- function unmonitored(target) {
- stopPoll(target);
- Event.remove(target, "blur", stopPollHandler);
- Event.remove(target, "mousedown keyup keydown focus", startPollHandler);
- }
- Event.special[VALUE_CHANGE] = {
- setup:function () {
- var target = this;
- if (nodeName(target, "input")
- || nodeName(target, "textarea")) {
- monitor(target);
- }
- },
- tearDown:function () {
- var target = this;
- unmonitored(target);
- }
- };
- return Event;
- }, {
- requires:["./base", "dom"]
- });
- KISSY.add("event/delegate", function(S, DOM, Event, Utils) {
- var batchForType = Utils.batchForType,
- delegateMap = {
- "focus":{
- type:"focusin"
- },
- "blur":{
- type:"focusout"
- },
- "mouseenter":{
- type:"mouseover",
- handler:mouseHandler
- },
- "mouseleave":{
- type:"mouseout",
- handler:mouseHandler
- }
- };
- S.mix(Event, {
- delegate:function(targets, type, selector, fn, scope) {
- if (batchForType(Event, 'delegate', targets, type, selector, fn, scope)) {
- return targets;
- }
- DOM.query(targets).each(function(target) {
- var preType = type,handler = delegateHandler;
- if (delegateMap[type]) {
- type = delegateMap[preType].type;
- handler = delegateMap[preType].handler || handler;
- }
- Event.on(target, type, handler, target, {
- fn:fn,
- selector:selector,
- preType:preType,
- scope:scope,
- equals:equals
- });
- });
- return targets;
- },
- undelegate:function(targets, type, selector, fn, scope) {
- if (batchForType(Event, 'undelegate', targets, type, selector, fn, scope)) {
- return targets;
- }
- DOM.query(targets).each(function(target) {
- var preType = type,
- handler = delegateHandler;
- if (delegateMap[type]) {
- type = delegateMap[preType].type;
- handler = delegateMap[preType].handler || handler;
- }
- Event.remove(target, type, handler, target, {
- fn:fn,
- selector:selector,
- preType:preType,
- scope:scope,
- equals:equals
- });
- });
- return targets;
- }
- });
-
-
- function equals(d, el) {
-
- if (d.fn === undefined && d.selector === undefined) {
- return true;
- }
-
- else if (d.fn === undefined) {
- return this.selector == d.selector;
- } else {
- var scope = this.scope || el,
- dScope = d.scope || el;
- return this.fn == d.fn && this.selector == d.selector && scope == dScope;
- }
- }
-
- function delegateHandler(event, data) {
- var delegateTarget = this,
- target = event.target,
- invokeds = DOM.closest(target, [data.selector], delegateTarget);
-
- return invokes.call(delegateTarget, invokeds, event, data);
- }
-
- function mouseHandler(event, data) {
- var delegateTarget = this,
- ret,
- target = event.target,
- relatedTarget = event.relatedTarget;
-
- event.type = data.preType;
-
- target = DOM.closest(target, data.selector, delegateTarget);
- if (target) {
- if (target !== relatedTarget &&
- (!relatedTarget || !DOM.contains(target, relatedTarget))
- ) {
- var currentTarget = event.currentTarget;
- event.currentTarget = target;
- ret = data.fn.call(data.scope || delegateTarget, event);
- event.currentTarget = currentTarget;
- }
- }
- return ret;
- }
- function invokes(invokeds, event, data) {
- var self = this;
- if (invokeds) {
-
-
- var currentTarget = event.currentTarget;
- for (var i = 0; i < invokeds.length; i++) {
- event.currentTarget = invokeds[i];
- var ret = data.fn.call(data.scope || self, event);
-
- if (ret === false) {
- event.halt();
- }
- if (event.isPropagationStopped) {
- break;
- }
- }
- event.currentTarget = currentTarget;
- }
- }
- return Event;
- }, {
- requires:["dom","./base","./utils"]
- });
- KISSY.add('event/mouseenter', function(S, Event, DOM, UA) {
- if (!UA['ie']) {
- S.each([
- { name: 'mouseenter', fix: 'mouseover' },
- { name: 'mouseleave', fix: 'mouseout' }
- ], function(o) {
-
- function withinElement(event) {
- var self = this,
- parent = event.relatedTarget;
-
- event.type = o.name;
-
-
- try {
-
-
- if (parent && parent !== document && !parent.parentNode) {
- return;
- }
-
- if (parent !== self &&
-
- (!parent || !DOM.contains(self, parent))
- ) {
-
- Event._handle(self, event);
- }
-
- } catch(e) {
- S.log("withinElement error : ", "error");
- S.log(e, "error");
- }
- }
- Event.special[o.name] = {
-
-
- setup: function() {
- Event.add(this, o.fix, withinElement);
- },
-
- tearDown:function() {
- Event.remove(this, o.fix, withinElement);
- }
- }
- });
- }
- return Event;
- }, {
- requires:["./base","dom","ua"]
- });
- KISSY.add("event/submit", function(S, UA, Event, DOM) {
- var mode = document['documentMode'];
- if (UA['ie'] && (UA['ie'] < 9 || (mode && mode < 9))) {
- var nodeName = DOM._nodeName;
- Event.special['submit'] = {
- setup: function() {
- var el = this;
-
- if (nodeName(el, "form")) {
- return false;
- }
-
-
-
- Event.on(el, "click keypress", detector);
- },
- tearDown:function() {
- var el = this;
-
- if (nodeName(el, "form")) {
- return false;
- }
- Event.remove(el, "click keypress", detector);
- DOM.query("form", el).each(function(form) {
- if (form.__submit__fix) {
- form.__submit__fix = 0;
- Event.remove(form, "submit", submitBubble);
- }
- });
- }
- };
- function detector(e) {
- var t = e.target,
- form = nodeName(t, "input") || nodeName(t, "button") ? t.form : null;
- if (form && !form.__submit__fix) {
- form.__submit__fix = 1;
- Event.on(form, "submit", submitBubble);
- }
- }
- function submitBubble(e) {
- var form = this;
- if (form.parentNode) {
-
-
- Event.fire(form.parentNode, "submit", e);
- }
- }
- }
- }, {
- requires:["ua","./base","dom"]
- });
- KISSY.add("event/change", function(S, UA, Event, DOM) {
- var mode = document['documentMode'];
- if (UA['ie'] && (UA['ie'] < 9 || (mode && mode < 9))) {
- var rformElems = /^(?:textarea|input|select)$/i;
- function isFormElement(n) {
- return rformElems.test(n.nodeName);
- }
- function isCheckBoxOrRadio(el) {
- var type = el.type;
- return type == "checkbox" || type == "radio";
- }
- Event.special['change'] = {
- setup: function() {
- var el = this;
- if (isFormElement(el)) {
-
-
- if (isCheckBoxOrRadio(el)) {
-
-
- Event.on(el, "propertychange", propertyChange);
- Event.on(el, "click", onClick);
- } else {
-
- return false;
- }
- } else {
-
-
-
- Event.on(el, "beforeactivate", beforeActivate);
- }
- },
- tearDown:function() {
- var el = this;
- if (isFormElement(el)) {
- if (isCheckBoxOrRadio(el)) {
- Event.remove(el, "propertychange", propertyChange);
- Event.remove(el, "click", onClick);
- } else {
- return false;
- }
- } else {
- Event.remove(el, "beforeactivate", beforeActivate);
- DOM.query("textarea,input,select", el).each(function(fel) {
- if (fel.__changeHandler) {
- fel.__changeHandler = 0;
- Event.remove(fel, "change", changeHandler);
- }
- });
- }
- }
- };
- function propertyChange(e) {
- if (e.originalEvent.propertyName == "checked") {
- this.__changed = 1;
- }
- }
- function onClick(e) {
- if (this.__changed) {
- this.__changed = 0;
-
- Event.fire(this, "change", e);
- }
- }
- function beforeActivate(e) {
- var t = e.target;
- if (isFormElement(t) && !t.__changeHandler) {
- t.__changeHandler = 1;
-
- Event.on(t, "change", changeHandler);
- }
- }
- function changeHandler(e) {
- var fel = this;
-
- if (isCheckBoxOrRadio(fel)) {
- return;
- }
- var p;
- if (p = fel.parentNode) {
-
- Event.fire(p, "change", e);
- }
- }
- }
- }, {
- requires:["ua","./base","dom"]
- });
- KISSY.add("event/mousewheel", function(S, Event, UA, Utils, EventObject) {
- var MOUSE_WHEEL = UA.gecko ? 'DOMMouseScroll' : 'mousewheel',
- simpleRemove = Utils.simpleRemove,
- simpleAdd = Utils.simpleAdd,
- mousewheelHandler = "mousewheelHandler";
- function handler(e) {
- var deltaX,
- currentTarget = this,
- deltaY,
- delta,
- detail = e.detail;
- if (e.wheelDelta) {
- delta = e.wheelDelta / 120;
- }
- if (e.detail) {
-
- delta = -(detail % 3 == 0 ? detail / 3 : detail);
- }
-
- if (e.axis !== undefined) {
- if (e.axis === e['HORIZONTAL_AXIS']) {
- deltaY = 0;
- deltaX = -1 * delta;
- } else if (e.axis === e['VERTICAL_AXIS']) {
- deltaX = 0;
- deltaY = delta;
- }
- }
-
- if (e['wheelDeltaY'] !== undefined) {
- deltaY = e['wheelDeltaY'] / 120;
- }
- if (e['wheelDeltaX'] !== undefined) {
- deltaX = -1 * e['wheelDeltaX'] / 120;
- }
-
- if (!deltaX && !deltaY) {
- deltaY = delta;
- }
-
-
- e = new EventObject(currentTarget, e);
- S.mix(e, {
- deltaY:deltaY,
- delta:delta,
- deltaX:deltaX,
- type:'mousewheel'
- });
- return Event._handle(currentTarget, e);
- }
- Event.special['mousewheel'] = {
- setup: function() {
- var el = this,
- mousewheelHandler,
- eventDesc = Event._data(el);
-
- mousewheelHandler = eventDesc[mousewheelHandler] = S.bind(handler, el);
- simpleAdd(this, MOUSE_WHEEL, mousewheelHandler);
- },
- tearDown:function() {
- var el = this,
- mousewheelHandler,
- eventDesc = Event._data(el);
- mousewheelHandler = eventDesc[mousewheelHandler];
- simpleRemove(this, MOUSE_WHEEL, mousewheelHandler);
- delete eventDesc[mousewheelHandler];
- }
- };
- }, {
- requires:['./base','ua','./utils','./object']
- });
- KISSY.add("event", function(S, KeyCodes, Event, Target, Object) {
- Event.KeyCodes = KeyCodes;
- Event.Target = Target;
- Event.Object = Object;
- return Event;
- }, {
- requires:[
- "event/keycodes",
- "event/base",
- "event/target",
- "event/object",
- "event/focusin",
- "event/hashchange",
- "event/valuechange",
- "event/delegate",
- "event/mouseenter",
- "event/submit",
- "event/change",
- "event/mousewheel"
- ]
- });
- KISSY.add("node/base", function(S, DOM, undefined) {
- var AP = Array.prototype,
- makeArray = S.makeArray,
- isNodeList = DOM._isNodeList;
-
- function NodeList(html, props, ownerDocument) {
- var self = this,
- domNode;
- if (!(self instanceof NodeList)) {
- return new NodeList(html, props, ownerDocument);
- }
-
- if (!html) {
- return undefined;
- }
- else if (S.isString(html)) {
-
- domNode = DOM.create(html, props, ownerDocument);
-
- if (domNode.nodeType === DOM.DOCUMENT_FRAGMENT_NODE) {
- AP.push.apply(this, makeArray(domNode.childNodes));
- return undefined;
- }
- }
- else if (S.isArray(html) || isNodeList(html)) {
- AP.push.apply(this, makeArray(html));
- return undefined;
- }
- else {
-
- domNode = html;
- }
- self[0] = domNode;
- self.length = 1;
- return undefined;
- }
- S.augment(NodeList, {
-
- length: 0,
- item: function(index) {
- var self = this;
- if (S.isNumber(index)) {
- if (index >= self.length) {
- return null;
- } else {
- return new NodeList(self[index]);
- }
- } else {
- return new NodeList(index);
- }
- },
- add:function(selector, context, index) {
- if (S.isNumber(context)) {
- index = context;
- context = undefined;
- }
- var list = NodeList.all(selector, context).getDOMNodes(),
- ret = new NodeList(this);
- if (index === undefined) {
- AP.push.apply(ret, list);
- } else {
- var args = [index,0];
- args.push.apply(args, list);
- AP.splice.apply(ret, args);
- }
- return ret;
- },
- slice:function(start, end) {
- return new NodeList(AP.slice.call(this, start, end));
- },
-
- getDOMNodes: function() {
- return AP.slice.call(this);
- },
-
- each: function(fn, context) {
- var self = this;
- S.each(self, function(n, i) {
- n = new NodeList(n);
- return fn.call(context || n, n, i, self);
- });
- return self;
- },
-
- getDOMNode: function() {
- return this[0];
- },
-
- end:function() {
- var self = this;
- return self.__parent || self;
- },
- all:function(selector) {
- var ret,self = this;
- if (self.length > 0) {
- ret = NodeList.all(selector, self);
- } else {
- ret = new NodeList();
- }
- ret.__parent = self;
- return ret;
- },
- one:function(selector) {
- var self = this,all = self.all(selector),
- ret = all.length ? all.slice(0, 1) : null;
- if (ret) {
- ret.__parent = self;
- }
- return ret;
- }
- });
- S.mix(NodeList, {
-
- all:function(selector, context) {
-
-
- if (S.isString(selector)
- && (selector = S.trim(selector))
- && selector.length >= 3
- && S.startsWith(selector, "<")
- && S.endsWith(selector, ">")
- ) {
- if (context) {
- if (context.getDOMNode) {
- context = context.getDOMNode();
- }
- if (context.ownerDocument) {
- context = context.ownerDocument;
- }
- }
- return new NodeList(selector, undefined, context);
- }
- return new NodeList(DOM.query(selector, context));
- },
- one:function(selector, context) {
- var all = NodeList.all(selector, context);
- return all.length ? all.slice(0, 1) : null;
- }
- });
- S.mix(NodeList, DOM._NODE_TYPE);
- return NodeList;
- }, {
- requires:["dom"]
- });
- KISSY.add('node/attach', function(S, DOM, Event, NodeList, undefined) {
- var NLP = NodeList.prototype,
- makeArray = S.makeArray,
-
-
- DOM_INCLUDES_NORM = [
- "equals",
- "contains",
- "scrollTop",
- "scrollLeft",
- "height",
- "width",
- "innerHeight",
- "innerWidth",
- "outerHeight",
- "outerWidth",
- "addStyleSheet",
-
- "appendTo",
-
- "prependTo",
- "insertBefore",
- "before",
- "after",
- "insertAfter",
- "test",
- "hasClass",
- "addClass",
- "removeClass",
- "replaceClass",
- "toggleClass",
- "removeAttr",
- "hasAttr",
- "hasProp",
-
- "scrollIntoView",
- "remove",
- "empty",
- "removeData",
- "hasData",
- "unselectable"
- ],
-
- DOM_INCLUDES_NORM_NODE_LIST = [
- "filter",
- "first",
- "last",
- "parent",
- "closest",
- "next",
- "prev",
- "clone",
- "siblings",
- "children"
- ],
-
- DOM_INCLUDES_NORM_IF = {
-
- "attr":1,
- "text":0,
- "css":1,
- "style":1,
- "val":0,
- "prop":1,
- "offset":0,
- "html":0,
- "data":1
- },
-
- EVENT_INCLUDES = ["on","detach","fire","delegate","undelegate"];
- function accessNorm(fn, self, args) {
- args.unshift(self);
- var ret = DOM[fn].apply(DOM, args);
- if (ret === undefined) {
- return self;
- }
- return ret;
- }
- function accessNormList(fn, self, args) {
- args.unshift(self);
- var ret = DOM[fn].apply(DOM, args);
- if (ret === undefined) {
- return self;
- }
- else if (ret === null) {
- return null;
- }
- return new NodeList(ret);
- }
- function accessNormIf(fn, self, index, args) {
-
- if (args[index] === undefined
-
- && !S.isObject(args[0])) {
- args.unshift(self);
- return DOM[fn].apply(DOM, args);
- }
-
- return accessNorm(fn, self, args);
- }
- S.each(DOM_INCLUDES_NORM, function(k) {
- NLP[k] = function() {
- var args = makeArray(arguments);
- return accessNorm(k, this, args);
- };
- });
- S.each(DOM_INCLUDES_NORM_NODE_LIST, function(k) {
- NLP[k] = function() {
- var args = makeArray(arguments);
- return accessNormList(k, this, args);
- };
- });
- S.each(DOM_INCLUDES_NORM_IF, function(index, k) {
- NLP[k] = function() {
- var args = makeArray(arguments);
- return accessNormIf(k, this, index, args);
- };
- });
- S.each(EVENT_INCLUDES, function(k) {
- NLP[k] = function() {
- var self=this,
- args = makeArray(arguments);
- args.unshift(self);
- Event[k].apply(Event, args);
- return self;
- }
- });
- }, {
- requires:["dom","event","./base"]
- });
- KISSY.add("node/override", function(S, DOM, Event, NodeList) {
-
- S.each(['append', 'prepend','before','after'], function(insertType) {
- NodeList.prototype[insertType] = function(html) {
- var newNode = html,self = this;
-
- if (S.isString(newNode)) {
- newNode = DOM.create(newNode);
- }
- if (newNode) {
- DOM[insertType](newNode, self);
- }
- return self;
- };
- });
- }, {
- requires:["dom","event","./base","./attach"]
- });
- KISSY.add('anim/easing', function() {
-
-
-
-
- var PI = Math.PI,
- pow = Math.pow,
- sin = Math.sin,
- BACK_CONST = 1.70158,
- Easing = {
- swing:function(t) {
- return ( -Math.cos(t * PI) / 2 ) + 0.5;
- },
-
- easeNone: function (t) {
- return t;
- },
-
- easeIn: function (t) {
- return t * t;
- },
-
- easeOut: function (t) {
- return ( 2 - t) * t;
- },
-
- easeBoth: function (t) {
- return (t *= 2) < 1 ?
- .5 * t * t :
- .5 * (1 - (--t) * (t - 2));
- },
-
- easeInStrong: function (t) {
- return t * t * t * t;
- },
-
- easeOutStrong: function (t) {
- return 1 - (--t) * t * t * t;
- },
-
- easeBothStrong: function (t) {
- return (t *= 2) < 1 ?
- .5 * t * t * t * t :
- .5 * (2 - (t -= 2) * t * t * t);
- },
-
- elasticIn: function (t) {
- var p = .3, s = p / 4;
- if (t === 0 || t === 1) return t;
- return -(pow(2, 10 * (t -= 1)) * sin((t - s) * (2 * PI) / p));
- },
-
- elasticOut: function (t) {
- var p = .3, s = p / 4;
- if (t === 0 || t === 1) return t;
- return pow(2, -10 * t) * sin((t - s) * (2 * PI) / p) + 1;
- },
-
- elasticBoth: function (t) {
- var p = .45, s = p / 4;
- if (t === 0 || (t *= 2) === 2) return t;
- if (t < 1) {
- return -.5 * (pow(2, 10 * (t -= 1)) *
- sin((t - s) * (2 * PI) / p));
- }
- return pow(2, -10 * (t -= 1)) *
- sin((t - s) * (2 * PI) / p) * .5 + 1;
- },
-
- backIn: function (t) {
- if (t === 1) t -= .001;
- return t * t * ((BACK_CONST + 1) * t - BACK_CONST);
- },
-
- backOut: function (t) {
- return (t -= 1) * t * ((BACK_CONST + 1) * t + BACK_CONST) + 1;
- },
-
- backBoth: function (t) {
- if ((t *= 2 ) < 1) {
- return .5 * (t * t * (((BACK_CONST *= (1.525)) + 1) * t - BACK_CONST));
- }
- return .5 * ((t -= 2) * t * (((BACK_CONST *= (1.525)) + 1) * t + BACK_CONST) + 2);
- },
-
- bounceIn: function (t) {
- return 1 - Easing.bounceOut(1 - t);
- },
-
- bounceOut: function (t) {
- var s = 7.5625, r;
- if (t < (1 / 2.75)) {
- r = s * t * t;
- }
- else if (t < (2 / 2.75)) {
- r = s * (t -= (1.5 / 2.75)) * t + .75;
- }
- else if (t < (2.5 / 2.75)) {
- r = s * (t -= (2.25 / 2.75)) * t + .9375;
- }
- else {
- r = s * (t -= (2.625 / 2.75)) * t + .984375;
- }
- return r;
- },
-
- bounceBoth: function (t) {
- if (t < .5) {
- return Easing.bounceIn(t * 2) * .5;
- }
- return Easing.bounceOut(t * 2 - 1) * .5 + .5;
- }
- };
- Easing.NativeTimeFunction = {
- easeNone: 'linear',
- ease: 'ease',
- easeIn: 'ease-in',
- easeOut: 'ease-out',
- easeBoth: 'ease-in-out',
-
-
-
-
-
- easeInStrong: 'cubic-bezier(0.9, 0.0, 0.9, 0.5)',
- easeOutStrong: 'cubic-bezier(0.1, 0.5, 0.1, 1.0)',
- easeBothStrong: 'cubic-bezier(0.9, 0.0, 0.1, 1.0)'
- };
- return Easing;
- });
- KISSY.add("anim/manager", function(S) {
- var stamp = S.stamp;
- return {
- interval:15,
- runnings:{},
- timer:null,
- start:function(anim) {
- var self = this,
- kv = stamp(anim);
- if (self.runnings[kv]) {
- return;
- }
- self.runnings[kv] = anim;
- self.startTimer();
- },
- stop:function(anim) {
- this.notRun(anim);
- },
- notRun:function(anim) {
- var self = this,
- kv = stamp(anim);
- delete self.runnings[kv];
- if (S.isEmptyObject(self.runnings)) {
- self.stopTimer();
- }
- },
- pause:function(anim) {
- this.notRun(anim);
- },
- resume:function(anim) {
- this.start(anim);
- },
- startTimer:function() {
- var self = this;
- if (!self.timer) {
- self.timer = setTimeout(function() {
- if (!self.runFrames()) {
- self.timer = 0;
- self.startTimer();
- } else {
- self.stopTimer();
- }
- }, self.interval);
- }
- },
- stopTimer:function() {
- var self = this,
- t = self.timer;
- if (t) {
- clearTimeout(t);
- self.timer = 0;
- }
- },
- runFrames:function() {
- var self = this,
- done = 1,
- runnings = self.runnings;
- for (var r in runnings) {
- if (runnings.hasOwnProperty(r)) {
- done = 0;
- runnings[r]._frame();
- }
- }
- return done;
- }
- };
- });
- KISSY.add("anim/fx", function(S, DOM, undefined) {
-
- function Fx(cfg) {
- this.load(cfg);
- }
- S.augment(Fx, {
- load:function(cfg) {
- var self = this;
- S.mix(self, cfg);
- self.startTime = S.now();
- self.pos = 0;
- self.unit = self.unit || "";
- },
- frame:function(end) {
- var self = this,
- endFlag = 0,
- elapsedTime,
- t = S.now();
- if (end || t >= self.duration + self.startTime) {
- self.pos = 1;
- endFlag = 1;
- } else {
- elapsedTime = t - self.startTime;
- self.pos = self.easing(elapsedTime / self.duration);
- }
- self.update();
- return endFlag;
- },
-
- interpolate:function (from, to, pos) {
-
- if (S.isNumber(from) &&
- S.isNumber(to)) {
- return (from + (to - from) * pos).toFixed(3);
- } else {
- return undefined;
- }
- },
- update:function() {
- var self = this,
- prop = self.prop,
- elem = self.elem,
- from = self.from,
- to = self.to,
- val = self.interpolate(from, to, self.pos);
- if (val === undefined) {
-
- if (!self.finished) {
- self.finished = 1;
- DOM.css(elem, prop, to);
- S.log(self.prop + " update directly ! : " + val + " : " + from + " : " + to);
- }
- } else {
- val += self.unit;
- if (isAttr(elem, prop)) {
- DOM.attr(elem, prop, val, 1);
- } else {
- DOM.css(elem, prop, val);
- }
- }
- },
-
- cur:function() {
- var self = this,
- prop = self.prop,
- elem = self.elem;
- if (isAttr(elem, prop)) {
- return DOM.attr(elem, prop, undefined, 1);
- }
- var parsed,
- r = DOM.css(elem, prop);
-
-
-
- return isNaN(parsed = parseFloat(r)) ?
- !r || r === "auto" ? 0 : r
- : parsed;
- }
- });
- function isAttr(elem, prop) {
-
- if ((!elem.style || elem.style[ prop ] == null) &&
- DOM.attr(elem, prop, undefined, 1) != null) {
- return 1;
- }
- return 0;
- }
- Fx.Factories = {};
- Fx.getFx = function(cfg) {
- var Constructor = Fx.Factories[cfg.prop] || Fx;
- return new Constructor(cfg);
- };
- return Fx;
- }, {
- requires:['dom']
- });
- KISSY.add("anim/queue", function(S, DOM) {
- var
- queueCollectionKey = S.guid("ks-queue-" + S.now() + "-"),
-
- queueKey = S.guid("ks-queue-" + S.now() + "-"),
-
- processing = "...";
- function getQueue(elem, name, readOnly) {
- name = name || queueKey;
- var qu,
- quCollection = DOM.data(elem, queueCollectionKey);
- if (!quCollection && !readOnly) {
- DOM.data(elem, queueCollectionKey, quCollection = {});
- }
- if (quCollection) {
- qu = quCollection[name];
- if (!qu && !readOnly) {
- qu = quCollection[name] = [];
- }
- }
- return qu;
- }
- function removeQueue(elem, name) {
- name = name || queueKey;
- var quCollection = DOM.data(elem, queueCollectionKey);
- if (quCollection) {
- delete quCollection[name];
- }
- if (S.isEmptyObject(quCollection)) {
- DOM.removeData(elem, queueCollectionKey);
- }
- }
- var q = {
- queueCollectionKey:queueCollectionKey,
- queue:function(anim) {
- var elem = anim.elem,
- name = anim.config.queue,
- qu = getQueue(elem, name);
- qu.push(anim);
- if (qu[0] !== processing) {
- q.dequeue(anim);
- }
- return qu;
- },
- remove:function(anim) {
- var elem = anim.elem,
- name = anim.config.queue,
- qu = getQueue(elem, name, 1),index;
- if (qu) {
- index = S.indexOf(anim, qu);
- if (index > -1) {
- qu.splice(index, 1);
- }
- }
- },
- removeQueues:function(elem) {
- DOM.removeData(elem, queueCollectionKey);
- },
- removeQueue:removeQueue,
- dequeue:function(anim) {
- var elem = anim.elem,
- name = anim.config.queue,
- qu = getQueue(elem, name, 1),
- nextAnim = qu && qu.shift();
- if (nextAnim == processing) {
- nextAnim = qu.shift();
- }
- if (nextAnim) {
- qu.unshift(processing);
- nextAnim._runInternal();
- } else {
-
- removeQueue(elem, name);
- }
- }
- };
- return q;
- }, {
- requires:['dom']
- });
- KISSY.add('anim/base', function(S, DOM, Event, Easing, UA, AM, Fx, Q) {
- var camelCase = DOM._camelCase,
- _isElementNode = DOM._isElementNode,
- specialVals = ["hide","show","toggle"],
-
- SHORT_HANDS = {
- border:[
- "borderBottomWidth",
- "borderLeftWidth",
- 'borderRightWidth',
-
- 'borderTopWidth'
- ],
- "borderBottom":["borderBottomWidth"],
- "borderLeft":["borderLeftWidth"],
- borderTop:["borderTopWidth"],
- borderRight:["borderRightWidth"],
- font:[
- 'fontSize',
- 'fontWeight'
- ],
- margin:[
- 'marginBottom',
- 'marginLeft',
- 'marginRight',
- 'marginTop'
- ],
- padding:[
- 'paddingBottom',
- 'paddingLeft',
- 'paddingRight',
- 'paddingTop'
- ]
- },
- defaultConfig = {
- duration: 1,
- easing: 'easeNone'
- },
- rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i;
- Anim.SHORT_HANDS = SHORT_HANDS;
-
- function Anim(elem, props, duration, easing, callback) {
- var self = this,config;
-
- if (!(elem = DOM.get(elem))) {
- return;
- }
-
- if (!(self instanceof Anim)) {
- return new Anim(elem, props, duration, easing, callback);
- }
-
- if (S.isString(props)) {
- props = S.unparam(props, ";", ":");
- } else {
-
- props = S.clone(props);
- }
-
- for (var prop in props) {
- var camelProp = camelCase(S.trim(prop));
- if (prop != camelProp) {
- props[camelProp] = props[prop];
- delete props[prop];
- }
- }
-
- if (S.isPlainObject(duration)) {
- config = S.clone(duration);
- } else {
- config = {
- duration:parseFloat(duration) || undefined,
- easing:easing,
- complete:callback
- };
- }
- config = S.merge(defaultConfig, config);
- self.config = config;
- config.duration *= 1000;
-
- self.elem = self['domEl'] = elem;
- self.props = props;
-
- self._backupProps = {};
- self._fxs = {};
-
- self.on("complete", onComplete);
- }
- function onComplete(e) {
- var self = this,
- _backupProps = self._backupProps,
- config = self.config;
-
- if (!S.isEmptyObject(_backupProps = self._backupProps)) {
- DOM.css(self.elem, _backupProps);
- }
- if (config.complete) {
- config.complete.call(self, e);
- }
- }
- function runInternal() {
- var self = this,
- config = self.config,
- _backupProps = self._backupProps,
- elem = self.elem,
- hidden,
- val,
- prop,
- specialEasing = (config['specialEasing'] || {}),
- fxs = self._fxs,
- props = self.props;
-
- saveRunning(self);
- if (self.fire("start") === false) {
-
- self.stop(0);
- return;
- }
- if (_isElementNode(elem)) {
- hidden = DOM.css(elem, "display") == "none";
- for (prop in props) {
- val = props[prop];
-
- if (val == "hide" && hidden || val == 'show' && !hidden) {
-
- self.stop(1);
- return;
- }
- }
- }
-
- S.each(props, function(val, prop) {
- if (!props.hasOwnProperty(prop)) {
- return;
- }
- var easing;
- if (S.isArray(val)) {
- easing = specialEasing[prop] = val[1];
- props[prop] = val[0];
- } else {
- easing = specialEasing[prop] = (specialEasing[prop] || config.easing);
- }
- if (S.isString(easing)) {
- easing = specialEasing[prop] = Easing[easing];
- }
- specialEasing[prop] = easing || Easing.easeNone;
- });
-
- S.each(SHORT_HANDS, function(shortHands, p) {
- var sh,
- origin,
- val;
- if (val = props[p]) {
- origin = {};
- S.each(shortHands, function(sh) {
-
- origin[sh] = DOM.css(elem, sh);
- specialEasing[sh] = specialEasing[p];
- });
- DOM.css(elem, p, val);
- for (sh in origin) {
-
- props[sh] = DOM.css(elem, sh);
-
- DOM.css(elem, sh, origin[sh]);
- }
-
- delete props[p];
- }
- });
-
- for (prop in props) {
- if (!props.hasOwnProperty(prop)) {
- continue;
- }
- val = S.trim(props[prop]);
- var to,
- from,
- propCfg = {
- elem:elem,
- prop:prop,
- duration:config.duration,
- easing:specialEasing[prop]
- },
- fx = Fx.getFx(propCfg);
-
- if (S.inArray(val, specialVals)) {
-
- _backupProps[prop] = DOM.style(elem, prop);
- if (val == "toggle") {
- val = hidden ? "show" : "hide";
- }
- if (val == "hide") {
- to = 0;
- from = fx.cur();
-
- _backupProps.display = 'none';
- } else {
- from = 0;
- to = fx.cur();
-
- DOM.css(elem, prop, from);
- DOM.show(elem);
- }
- val = to;
- } else {
- to = val;
- from = fx.cur();
- }
- val += "";
- var unit = "",
- parts = val.match(rfxnum);
- if (parts) {
- to = parseFloat(parts[2]);
- unit = parts[3];
-
- if (unit && unit !== "px") {
- DOM.css(elem, prop, val);
- from = (to / fx.cur()) * from;
- DOM.css(elem, prop, from + unit);
- }
-
- if (parts[1]) {
- to = ( (parts[ 1 ] === "-=" ? -1 : 1) * to ) + from;
- }
- }
- propCfg.from = from;
- propCfg.to = to;
- propCfg.unit = unit;
- fx.load(propCfg);
- fxs[prop] = fx;
- }
- if (_isElementNode(elem) &&
- (props.width || props.height)) {
-
-
-
-
- S.mix(_backupProps, {
- overflow:DOM.style(elem, "overflow"),
- "overflow-x":DOM.style(elem, "overflowX"),
- "overflow-y":DOM.style(elem, "overflowY")
- });
- DOM.css(elem, "overflow", "hidden");
-
- if (DOM.css(elem, "display") === "inline" &&
- DOM.css(elem, "float") === "none") {
- if (UA['ie']) {
- DOM.css(elem, "zoom", 1);
- } else {
- DOM.css(elem, "display", "inline-block");
- }
- }
- }
- AM.start(self);
- }
- S.augment(Anim, Event.Target, {
-
- isRunning:function() {
- return isRunning(this);
- },
- _runInternal:runInternal,
-
- run: function() {
- var self = this,
- queueName = self.config.queue;
- if (queueName === false) {
- runInternal.call(self);
- } else {
-
- Q.queue(self);
- }
- return self;
- },
- _frame:function() {
- var self = this,
- prop,
- end = 1,
- fxs = self._fxs;
- for (prop in fxs) {
- if (fxs.hasOwnProperty(prop)) {
- end &= fxs[prop].frame();
- }
- }
- if ((self.fire("step") === false) ||
- end) {
-
- self.stop(end);
- }
- },
- stop: function(finish) {
- var self = this,
- config = self.config,
- queueName = config.queue,
- prop,
- fxs = self._fxs;
-
- if (!self.isRunning()) {
-
- if (queueName !== false) {
- Q.remove(self);
- }
- return;
- }
- if (finish) {
- for (prop in fxs) {
- if (fxs.hasOwnProperty(prop)) {
- fxs[prop].frame(1);
- }
- }
- self.fire("complete");
- }
- AM.stop(self);
- removeRunning(self);
- if (queueName !== false) {
-
- Q.dequeue(self);
- }
- return self;
- }
- });
- var runningKey = S.guid("ks-anim-unqueued-" + S.now() + "-");
- function saveRunning(anim) {
- var elem = anim.elem,
- allRunning = DOM.data(elem, runningKey);
- if (!allRunning) {
- DOM.data(elem, runningKey, allRunning = {});
- }
- allRunning[S.stamp(anim)] = anim;
- }
- function removeRunning(anim) {
- var elem = anim.elem,
- allRunning = DOM.data(elem, runningKey);
- if (allRunning) {
- delete allRunning[S.stamp(anim)];
- if (S.isEmptyObject(allRunning)) {
- DOM.removeData(elem, runningKey);
- }
- }
- }
- function isRunning(anim) {
- var elem = anim.elem,
- allRunning = DOM.data(elem, runningKey);
- if (allRunning) {
- return !!allRunning[S.stamp(anim)];
- }
- return 0;
- }
-
- Anim.stop = function(elem, end, clearQueue, queueName) {
- if (
-
- queueName === null ||
-
- S.isString(queueName) ||
-
- queueName === false
- ) {
- return stopQueue.apply(undefined, arguments);
- }
-
- if (clearQueue) {
- Q.removeQueues(elem);
- }
- var allRunning = DOM.data(elem, runningKey),
-
- anims = S.merge(allRunning);
- for (var k in anims) {
- anims[k].stop(end);
- }
- };
-
- function stopQueue(elem, end, clearQueue, queueName) {
- if (clearQueue && queueName !== false) {
- Q.removeQueue(elem, queueName);
- }
- var allRunning = DOM.data(elem, runningKey),
- anims = S.merge(allRunning);
- for (var k in anims) {
- var anim = anims[k];
- if (anim.config.queue == queueName) {
- anim.stop(end);
- }
- }
- }
-
- Anim['isRunning'] = function(elem) {
- var allRunning = DOM.data(elem, runningKey);
- return allRunning && !S.isEmptyObject(allRunning);
- };
- Anim.Q = Q;
- if (SHORT_HANDS) {
- }
- return Anim;
- }, {
- requires:["dom","event","./easing","ua","./manager","./fx","./queue"]
- });
- KISSY.add("anim/color", function(S, DOM, Anim, Fx) {
- var HEX_BASE = 16,
- floor = Math.floor,
- KEYWORDS = {
- "black":[0,0,0],
- "silver":[192,192,192],
- "gray":[128,128,128],
- "white":[255,255,255],
- "maroon":[128,0,0],
- "red":[255,0,0],
- "purple":[128,0,128],
- "fuchsia":[255,0,255],
- "green":[0,128,0],
- "lime":[0,255,0],
- "olive":[128,128,0],
- "yellow":[255,255,0],
- "navy":[0,0,128],
- "blue":[0,0,255],
- "teal":[0,128,128],
- "aqua":[0,255,255]
- },
- re_RGB = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,
- re_RGBA = /^rgba\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+),\s*([0-9]+)\)$/i,
- re_hex = /^#?([0-9A-F]{1,2})([0-9A-F]{1,2})([0-9A-F]{1,2})$/i,
- SHORT_HANDS = Anim.SHORT_HANDS,
- COLORS = [
- 'backgroundColor' ,
- 'borderBottomColor' ,
- 'borderLeftColor' ,
- 'borderRightColor' ,
- 'borderTopColor' ,
- 'color' ,
- 'outlineColor'
- ];
- SHORT_HANDS['background'] = ['backgroundColor'];
- SHORT_HANDS['borderColor'] = [
- 'borderBottomColor',
- 'borderLeftColor',
- 'borderRightColor',
- 'borderTopColor'
- ];
- SHORT_HANDS['border'].push(
- 'borderBottomColor',
- 'borderLeftColor',
- 'borderRightColor',
- 'borderTopColor'
- );
- SHORT_HANDS['borderBottom'].push(
- 'borderBottomColor'
- );
- SHORT_HANDS['borderLeft'].push(
- 'borderLeftColor'
- );
- SHORT_HANDS['borderRight'].push(
- 'borderRightColor'
- );
- SHORT_HANDS['borderTop'].push(
- 'borderTopColor'
- );
-
- function numericColor(val) {
- val = (val + "");
- var match;
- if (match = val.match(re_RGB)) {
- return [
- parseInt(match[1]),
- parseInt(match[2]),
- parseInt(match[3])
- ];
- }
- else if (match = val.match(re_RGBA)) {
- return [
- parseInt(match[1]),
- parseInt(match[2]),
- parseInt(match[3]),
- parseInt(match[4])
- ];
- }
- else if (match = val.match(re_hex)) {
- for (var i = 1; i < match.length; i++) {
- if (match[i].length < 2) {
- match[i] += match[i];
- }
- }
- return [
- parseInt(match[1], HEX_BASE),
- parseInt(match[2], HEX_BASE),
- parseInt(match[3], HEX_BASE)
- ];
- }
- if (KEYWORDS[val = val.toLowerCase()]) {
- return KEYWORDS[val];
- }
-
- S.log("only allow rgb or hex color string : " + val, "warn");
- return [255,255,255];
- }
- function ColorFx() {
- ColorFx.superclass.constructor.apply(this, arguments);
- }
- S.extend(ColorFx, Fx, {
- load:function() {
- var self = this;
- ColorFx.superclass.load.apply(self, arguments);
- if (self.from) {
- self.from = numericColor(self.from);
- }
- if (self.to) {
- self.to = numericColor(self.to);
- }
- },
- interpolate:function (from, to, pos) {
- var interpolate = ColorFx.superclass.interpolate;
- if (from.length == 3 && to.length == 3) {
- return 'rgb(' + [
- floor(interpolate(from[0], to[0], pos)),
- floor(interpolate(from[1], to[1], pos)),
- floor(interpolate(from[2], to[2], pos))
- ].join(', ') + ')';
- } else if (from.length == 4 || to.length == 4) {
- return 'rgba(' + [
- floor(interpolate(from[0], to[0], pos)),
- floor(interpolate(from[1], to[1], pos)),
- floor(interpolate(from[2], to[2], pos)),
-
- floor(interpolate(from[3] || 1, to[3] || 1, pos))
- ].join(', ') + ')';
- } else {
- S.log("anim/color unknown value : " + from);
- }
- }
- });
- S.each(COLORS, function(color) {
- Fx.Factories[color] = ColorFx;
- });
- return ColorFx;
- }, {
- requires:["dom","./base","./fx"]
- });
- KISSY.add("anim", function(S, Anim,Easing) {
- Anim.Easing=Easing;
- return Anim;
- }, {
- requires:["anim/base","anim/easing","anim/color"]
- });
- KISSY.add('node/anim', function(S, DOM, Anim, Node, undefined) {
- var FX = [
-
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
-
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
-
- [ "opacity" ]
- ];
- function getFxs(type, num, from) {
- var ret = [],
- obj = {};
- for (var i = from || 0; i < num; i++) {
- ret.push.apply(ret, FX[i]);
- }
- for (i = 0; i < ret.length; i++) {
- obj[ret[i]] = type;
- }
- return obj;
- }
- S.augment(Node, {
- animate:function() {
- var self = this,
- args = S.makeArray(arguments);
- S.each(self, function(elem) {
- Anim.apply(undefined, [elem].concat(args)).run();
- });
- return self;
- },
- stop:function(end, clearQueue, queue) {
- var self = this;
- S.each(self, function(elem) {
- Anim.stop(elem, end, clearQueue, queue);
- });
- return self;
- },
- isRunning:function() {
- var self = this;
- for (var i = 0; i < self.length; i++) {
- if (Anim.isRunning(self[i])) {
- return 1;
- }
- }
- return 0;
- }
- });
- S.each({
- show: getFxs("show", 3),
- hide: getFxs("hide", 3),
- toggle:getFxs("toggle", 3),
- fadeIn: getFxs("show", 3, 2),
- fadeOut: getFxs("hide", 3, 2),
- fadeToggle:getFxs("toggle", 3, 2),
- slideDown: getFxs("show", 1),
- slideUp: getFxs("hide", 1),
- slideToggle:getFxs("toggle", 1)
- },
- function(v, k) {
- Node.prototype[k] = function(speed, callback, easing) {
- var self = this;
-
- if (DOM[k] && !speed) {
- DOM[k](self);
- } else {
- S.each(self, function(elem) {
- Anim(elem, v, speed, easing || 'easeOut', callback).run();
- });
- }
- return self;
- };
- });
- }, {
- requires:["dom","anim","./base"]
- });
- KISSY.add("node", function(S, Event, Node) {
- Node.KeyCodes = Event.KeyCodes;
- return Node;
- }, {
- requires:[
- "event",
- "node/base",
- "node/attach",
- "node/override",
- "node/anim"]
- });
- KISSY.add("json/json2", function(S, UA) {
- var win = window,JSON = win.JSON;
-
- if (!JSON || UA['ie'] < 9) {
- JSON = win.JSON = {};
- }
- function f(n) {
-
- return n < 10 ? '0' + n : n;
- }
- if (typeof Date.prototype.toJSON !== 'function') {
- Date.prototype.toJSON = function (key) {
- return isFinite(this.valueOf()) ?
- this.getUTCFullYear() + '-' +
- f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z' : null;
- };
- String.prototype.toJSON =
- Number.prototype.toJSON =
- Boolean.prototype.toJSON = function (key) {
- return this.valueOf();
- };
- }
- var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
- gap,
- indent,
- meta = {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '"' : '\\"',
- '\\': '\\\\'
- },
- rep;
- function quote(string) {
- escapable['lastIndex'] = 0;
- return escapable.test(string) ?
- '"' + string.replace(escapable, function (a) {
- var c = meta[a];
- return typeof c === 'string' ? c :
- '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' :
- '"' + string + '"';
- }
- function str(key, holder) {
- var i,
- k,
- v,
- length,
- mind = gap,
- partial,
- value = holder[key];
- if (value && typeof value === 'object' &&
- typeof value.toJSON === 'function') {
- value = value.toJSON(key);
- }
- if (typeof rep === 'function') {
- value = rep.call(holder, key, value);
- }
- switch (typeof value) {
- case 'string':
- return quote(value);
- case 'number':
- return isFinite(value) ? String(value) : 'null';
- case 'boolean':
- case 'null':
- return String(value);
- case 'object':
- if (!value) {
- return 'null';
- }
- gap += indent;
- partial = [];
- if (Object.prototype.toString.apply(value) === '[object Array]') {
- length = value.length;
- for (i = 0; i < length; i += 1) {
- partial[i] = str(i, value) || 'null';
- }
- v = partial.length === 0 ? '[]' :
- gap ? '[\n' + gap +
- partial.join(',\n' + gap) + '\n' +
- mind + ']' :
- '[' + partial.join(',') + ']';
- gap = mind;
- return v;
- }
- if (rep && typeof rep === 'object') {
- length = rep.length;
- for (i = 0; i < length; i += 1) {
- k = rep[i];
- if (typeof k === 'string') {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- } else {
- for (k in value) {
- if (Object.hasOwnProperty.call(value, k)) {
- v = str(k, value);
- if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
- }
- }
- }
- }
- v = partial.length === 0 ? '{}' :
- gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
- mind + '}' : '{' + partial.join(',') + '}';
- gap = mind;
- return v;
- }
- }
- if (typeof JSON.stringify !== 'function') {
- JSON.stringify = function (value, replacer, space) {
- var i;
- gap = '';
- indent = '';
- if (typeof space === 'number') {
- for (i = 0; i < space; i += 1) {
- indent += ' ';
- }
- } else if (typeof space === 'string') {
- indent = space;
- }
- rep = replacer;
- if (replacer && typeof replacer !== 'function' &&
- (typeof replacer !== 'object' ||
- typeof replacer.length !== 'number')) {
- throw new Error('JSON.stringify');
- }
- return str('', {'': value});
- };
- }
- if (typeof JSON.parse !== 'function') {
- JSON.parse = function (text, reviver) {
- var j;
- function walk(holder, key) {
- var k, v, value = holder[key];
- if (value && typeof value === 'object') {
- for (k in value) {
- if (Object.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== undefined) {
- value[k] = v;
- } else {
- delete value[k];
- }
- }
- }
- }
- return reviver.call(holder, key, value);
- }
- text = String(text);
- cx['lastIndex'] = 0;
- if (cx.test(text)) {
- text = text.replace(cx, function (a) {
- return '\\u' +
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- });
- }
- if (/^[\],:{}\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, ''))) {
- j = eval('(' + text + ')');
- return typeof reviver === 'function' ?
- walk({'': j}, '') : j;
- }
- throw new SyntaxError('JSON.parse');
- };
- }
- return JSON;
- }, {requires:['ua']});
- KISSY.add('json', function (S, JSON) {
- return {
- parse: function(text) {
-
- if (S.isNullOrUndefined(text) || text === '') {
- return null;
- }
- return JSON.parse(text);
- },
- stringify: JSON.stringify
- };
- }, {
- requires:["json/json2"]
- });
- KISSY.add("ajax/form-serializer", function(S, DOM) {
- var rselectTextarea = /^(?:select|textarea)/i,
- rCRLF = /\r?\n/g,
- rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i;
- return {
-
- serialize:function(forms) {
- var elements = [],data = {};
- DOM.query(forms).each(function(el) {
-
-
- var subs = el.elements ? S.makeArray(el.elements) : [el];
- elements.push.apply(elements, subs);
- });
-
- elements = S.filter(elements, function(el) {
-
- return el.name &&
-
- !el.disabled &&
- (
-
- el.checked ||
-
- rselectTextarea.test(el.nodeName) ||
-
- rinput.test(el.type)
- );
-
- });
- S.each(elements, function(el) {
- var val = DOM.val(el),vs;
-
- val = S.map(S.makeArray(val), function(v) {
- return v.replace(rCRLF, "\r\n");
- });
-
- vs = data[el.name] = data[el.name] || [];
- vs.push.apply(vs, val);
- });
-
- return S.param(data, undefined, undefined, false);
- }
- };
- }, {
- requires:['dom']
- });
- KISSY.add("ajax/xhrobject", function(S, Event) {
- var OK_CODE = 200,
- MULTIPLE_CHOICES = 300,
- NOT_MODIFIED = 304,
-
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg;
- function handleResponseData(xhr) {
-
- var text = xhr.responseText,
- xml = xhr.responseXML,
- c = xhr.config,
- cConverts = c.converters,
- xConverts = xhr.converters || {},
- type,
- responseData,
- contents = c.contents,
- dataType = c.dataType;
-
-
- if (text || xml) {
- var contentType = xhr.mimeType || xhr.getResponseHeader("Content-Type");
-
- while (dataType[0] == "*") {
- dataType.shift();
- }
- if (!dataType.length) {
-
- for (type in contents) {
- if (contents[type].test(contentType)) {
- if (dataType[0] != type) {
- dataType.unshift(type);
- }
- break;
- }
- }
- }
-
- dataType[0] = dataType[0] || "text";
-
- if (dataType[0] == "text" && text !== undefined) {
- responseData = text;
- }
-
- else if (dataType[0] == "xml" && xml !== undefined) {
- responseData = xml;
- } else {
-
- S.each(["text","xml"], function(prevType) {
- var type = dataType[0],
- converter = xConverts[prevType] && xConverts[prevType][type] ||
- cConverts[prevType] && cConverts[prevType][type];
- if (converter) {
- dataType.unshift(prevType);
- responseData = prevType == "text" ? text : xml;
- return false;
- }
- });
- }
- }
- var prevType = dataType[0];
-
- for (var i = 1; i < dataType.length; i++) {
- type = dataType[i];
- var converter = xConverts[prevType] && xConverts[prevType][type] ||
- cConverts[prevType] && cConverts[prevType][type];
- if (!converter) {
- throw "no covert for " + prevType + " => " + type;
- }
- responseData = converter(responseData);
- prevType = type;
- }
- xhr.responseData = responseData;
- }
- function XhrObject(c) {
- S.mix(this, {
-
- responseData:null,
- config:c || {},
- timeoutTimer:null,
- responseText:null,
- responseXML:null,
- responseHeadersString:"",
- responseHeaders:null,
- requestHeaders:{},
- readyState:0,
-
- state:0,
- statusText:null,
- status:0,
- transport:null
- });
- }
- S.augment(XhrObject, Event.Target, {
-
- setRequestHeader: function(name, value) {
- this.requestHeaders[ name ] = value;
- return this;
- },
-
- getAllResponseHeaders: function() {
- return this.state === 2 ? this.responseHeadersString : null;
- },
-
- getResponseHeader: function(key) {
- var match;
- if (this.state === 2) {
- if (!this.responseHeaders) {
- this.responseHeaders = {};
- while (( match = rheaders.exec(this.responseHeadersString) )) {
- this.responseHeaders[ match[1] ] = match[ 2 ];
- }
- }
- match = this.responseHeaders[ key];
- }
- return match === undefined ? null : match;
- },
-
- overrideMimeType: function(type) {
- if (!this.state) {
- this.mimeType = type;
- }
- return this;
- },
-
- abort: function(statusText) {
- statusText = statusText || "abort";
- if (this.transport) {
- this.transport.abort(statusText);
- }
- this.callback(0, statusText);
- return this;
- },
- callback:function(status, statusText) {
-
- var xhr = this;
-
-
-
-
-
- if (xhr.state == 2) {
- return;
- }
- xhr.state = 2;
- xhr.readyState = 4;
- var isSuccess;
- if (status >= OK_CODE && status < MULTIPLE_CHOICES || status == NOT_MODIFIED) {
- if (status == NOT_MODIFIED) {
- statusText = "notmodified";
- isSuccess = true;
- } else {
- try {
- handleResponseData(xhr);
- statusText = "success";
- isSuccess = true;
- } catch(e) {
- statusText = "parsererror : " + e;
- }
- }
- } else {
- if (status < 0) {
- status = 0;
- }
- }
- xhr.status = status;
- xhr.statusText = statusText;
- if (isSuccess) {
- xhr.fire("success");
- } else {
- xhr.fire("error");
- }
- xhr.fire("complete");
- xhr.transport = undefined;
- }
- }
- );
- return XhrObject;
- }, {
- requires:["event"]
- });
- KISSY.add("ajax/base", function(S, JSON, Event, XhrObject) {
- var rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
- rspace = /\s+/,
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
- mirror = function(s) {
- return s;
- },
- HTTP_PORT = 80,
- HTTPS_PORT = 443,
- rnoContent = /^(?:GET|HEAD)$/,
- curLocation,
- curLocationParts;
- try {
- curLocation = location.href;
- } catch(e) {
- S.log("ajax/base get curLocation error : ");
- S.log(e);
-
-
- curLocation = document.createElement("a");
- curLocation.href = "";
- curLocation = curLocation.href;
- }
- curLocationParts = rurl.exec(curLocation);
- var isLocal = rlocalProtocol.test(curLocationParts[1]),
- transports = {},
- defaultConfig = {
-
- type:"GET",
-
- contentType: "application/x-www-form-urlencoded; charset=UTF-8",
- async:true,
-
- serializeArray:true,
-
- processData:true,
-
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- text: "text/plain",
- json: "application/json, text/javascript",
- "*": "*/*"
- },
- converters:{
- text:{
- json:JSON.parse,
- html:mirror,
- text:mirror,
- xml:S.parseXML
- }
- },
- contents:{
- xml:/xml/,
- html:/html/,
- json:/json/
- }
- };
- defaultConfig.converters.html = defaultConfig.converters.text;
- function setUpConfig(c) {
-
- c = S.mix(S.clone(defaultConfig), c || {}, undefined, undefined, true);
- if (!S.isBoolean(c.crossDomain)) {
- var parts = rurl.exec(c.url.toLowerCase());
- c.crossDomain = !!( parts &&
- ( parts[ 1 ] != curLocationParts[ 1 ] || parts[ 2 ] != curLocationParts[ 2 ] ||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? HTTP_PORT : HTTPS_PORT ) )
- !=
- ( curLocationParts[ 3 ] || ( curLocationParts[ 1 ] === "http:" ? HTTP_PORT : HTTPS_PORT ) ) )
- );
- }
- if (c.processData && c.data && !S.isString(c.data)) {
-
- c.data = S.param(c.data, undefined, undefined, c.serializeArray);
- }
- c.type = c.type.toUpperCase();
- c.hasContent = !rnoContent.test(c.type);
- if (!c.hasContent) {
- if (c.data) {
- c.url += ( /\?/.test(c.url) ? "&" : "?" ) + c.data;
- }
- if (c.cache === false) {
- c.url += ( /\?/.test(c.url) ? "&" : "?" ) + "_ksTS=" + (S.now() + "_" + S.guid());
- }
- }
-
- c.dataType = S.trim(c.dataType || "*").split(rspace);
- c.context = c.context || c;
- return c;
- }
- function fire(eventType, xhr) {
- io.fire(eventType, { ajaxConfig: xhr.config ,xhr:xhr});
- }
- function handleXhrEvent(e) {
- var xhr = this,
- c = xhr.config,
- type = e.type;
- if (this.timeoutTimer) {
- clearTimeout(this.timeoutTimer);
- }
- if (c[type]) {
- c[type].call(c.context, xhr.responseData, xhr.statusText, xhr);
- }
- fire(type, xhr);
- }
- function io(c) {
- if (!c.url) {
- return undefined;
- }
- c = setUpConfig(c);
- var xhr = new XhrObject(c);
- fire("start", xhr);
- var transportContructor = transports[c.dataType[0]] || transports["*"],
- transport = new transportContructor(xhr);
- xhr.transport = transport;
- if (c.contentType) {
- xhr.setRequestHeader("Content-Type", c.contentType);
- }
- var dataType = c.dataType[0],
- accepts = c.accepts;
-
- xhr.setRequestHeader(
- "Accept",
- dataType && accepts[dataType] ?
- accepts[ dataType ] + (dataType === "*" ? "" : ", */*; q=0.01" ) :
- accepts[ "*" ]
- );
-
- for (var i in c.headers) {
- xhr.setRequestHeader(i, c.headers[ i ]);
- }
- xhr.on("complete success error", handleXhrEvent);
- xhr.readyState = 1;
- fire("send", xhr);
-
- if (c.async && c.timeout > 0) {
- xhr.timeoutTimer = setTimeout(function() {
- xhr.abort("timeout");
- }, c.timeout * 1000);
- }
- try {
-
- xhr.state = 1;
- transport.send();
- } catch (e) {
-
- if (xhr.status < 2) {
- xhr.callback(-1, e);
-
- } else {
- S.error(e);
- }
- }
- return xhr;
- }
- S.mix(io, Event.Target);
- S.mix(io, {
- isLocal:isLocal,
- setupConfig:function(setting) {
- S.mix(defaultConfig, setting, undefined, undefined, true);
- },
- setupTransport:function(name, fn) {
- transports[name] = fn;
- },
- getTransport:function(name) {
- return transports[name];
- },
- getConfig:function() {
- return defaultConfig;
- }
- });
- return io;
- },
- {
- requires:["json","event","./xhrobject"]
- });
- KISSY.add("ajax/xhrbase", function(S, io) {
- var OK_CODE = 200,
- win = window,
-
- _XDomainRequest = win['XDomainRequest'],
- NO_CONTENT_CODE = 204,
- NOT_FOUND_CODE = 404,
- NO_CONTENT_CODE2 = 1223,
- XhrBase = {
- proto:{}
- };
- function createStandardXHR(_, refWin) {
- try {
- return new (refWin || win)['XMLHttpRequest']();
- } catch(e) {
-
- }
- return undefined;
- }
- function createActiveXHR(_, refWin) {
- try {
- return new (refWin || win)['ActiveXObject']("Microsoft.XMLHTTP");
- } catch(e) {
- S.log("createActiveXHR error");
- }
- return undefined;
- }
- XhrBase.xhr = win.ActiveXObject ? function(crossDomain, refWin) {
- if (crossDomain && _XDomainRequest) {
- return new _XDomainRequest();
- }
-
- return !io.isLocal && createStandardXHR(crossDomain, refWin) || createActiveXHR(crossDomain, refWin);
- } : createStandardXHR;
- function isInstanceOfXDomainRequest(xhr) {
- return _XDomainRequest && (xhr instanceof _XDomainRequest);
- }
- S.mix(XhrBase.proto, {
- sendInternal:function() {
- var self = this,
- xhrObj = self.xhrObj,
- c = xhrObj.config;
- var xhr = self.xhr,
- xhrFields,
- i;
- if (c['username']) {
- xhr.open(c.type, c.url, c.async, c['username'], c.password)
- } else {
- xhr.open(c.type, c.url, c.async);
- }
- if (xhrFields = c['xhrFields']) {
- for (i in xhrFields) {
- xhr[ i ] = xhrFields[ i ];
- }
- }
-
- if (xhrObj.mimeType && xhr.overrideMimeType) {
- xhr.overrideMimeType(xhrObj.mimeType);
- }
-
- if (!c.crossDomain && !xhrObj.requestHeaders["X-Requested-With"]) {
- xhrObj.requestHeaders[ "X-Requested-With" ] = "XMLHttpRequest";
- }
- try {
-
-
- if (!c.crossDomain) {
- for (i in xhrObj.requestHeaders) {
- xhr.setRequestHeader(i, xhrObj.requestHeaders[ i ]);
- }
- }
- } catch(e) {
- S.log("setRequestHeader in xhr error : ");
- S.log(e);
- }
- xhr.send(c.hasContent && c.data || null);
- if (!c.async || xhr.readyState == 4) {
- self._callback();
- } else {
-
- if (isInstanceOfXDomainRequest(xhr)) {
- xhr.onload = function() {
- xhr.readyState = 4;
- xhr.status = 200;
- self._callback();
- };
- xhr.onerror = function() {
- xhr.readyState = 4;
- xhr.status = 500;
- self._callback();
- };
- } else {
- xhr.onreadystatechange = function() {
- self._callback();
- };
- }
- }
- },
-
- abort:function() {
- this._callback(0, 1);
- },
- _callback:function(event, abort) {
-
-
-
- try {
- var self = this,
- xhr = self.xhr,
- xhrObj = self.xhrObj,
- c = xhrObj.config;
-
- if (abort || xhr.readyState == 4) {
-
- if (isInstanceOfXDomainRequest(xhr)) {
- xhr.onerror = S.noop;
- xhr.onload = S.noop;
- } else {
-
- xhr.onreadystatechange = S.noop;
- }
- if (abort) {
-
- if (xhr.readyState !== 4) {
- xhr.abort();
- }
- } else {
- var status = xhr.status;
-
- if (!isInstanceOfXDomainRequest(xhr)) {
- xhrObj.responseHeadersString = xhr.getAllResponseHeaders();
- }
- var xml = xhr.responseXML;
-
- if (xml && xml.documentElement ) {
- xhrObj.responseXML = xml;
- }
- xhrObj.responseText = xhr.responseText;
-
-
- try {
- var statusText = xhr.statusText;
- } catch(e) {
- S.log("xhr statustext error : ");
- S.log(e);
-
- statusText = "";
- }
-
-
-
-
- if (!status && io.isLocal && !c.crossDomain) {
- status = xhrObj.responseText ? OK_CODE : NOT_FOUND_CODE;
-
- } else if (status === NO_CONTENT_CODE2) {
- status = NO_CONTENT_CODE;
- }
- xhrObj.callback(status, statusText);
- }
- }
- } catch (firefoxAccessException) {
- xhr.onreadystatechange = S.noop;
- if (!abort) {
- xhrObj.callback(-1, firefoxAccessException);
- }
- }
- }
- });
- return XhrBase;
- }, {
- requires:['./base']
- });
- KISSY.add("ajax/subdomain", function(S, XhrBase, Event, DOM) {
- var rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
- PROXY_PAGE = "/sub_domain_proxy.html",
- doc = document,
- iframeMap = {
-
- };
- function SubDomain(xhrObj) {
- var self = this,
- c = xhrObj.config;
- self.xhrObj = xhrObj;
- var m = c.url.match(rurl);
- self.__hostname = m[2];
- self.__protocol = m[1];
- c.crossDomain = false;
- }
- S.augment(SubDomain, XhrBase.proto, {
- send:function() {
- var self = this,
- c = self.xhrObj.config,
- hostname = self.__hostname,
- iframe,
- iframeDesc = iframeMap[hostname];
- var proxy = PROXY_PAGE;
- if (c['xdr'] && c['xdr']['subDomain'] && c['xdr']['subDomain'].proxy) {
- proxy = c['xdr']['subDomain'].proxy;
- }
- if (iframeDesc && iframeDesc.ready) {
- self.xhr = XhrBase.xhr(0, iframeDesc.iframe.contentWindow);
- if (self.xhr) {
- self.sendInternal();
- } else {
- S.error("document.domain not set correctly!");
- }
- return;
- }
- if (!iframeDesc) {
- iframeDesc = iframeMap[hostname] = {};
- iframe = iframeDesc.iframe = document.createElement("iframe");
- DOM.css(iframe, {
- position:'absolute',
- left:'-9999px',
- top:'-9999px'
- });
- DOM.prepend(iframe, doc.body || doc.documentElement);
- iframe.src = self.__protocol + "//" + hostname + proxy;
- } else {
- iframe = iframeDesc.iframe;
- }
- Event.on(iframe, "load", _onLoad, self);
- }
- });
- function _onLoad() {
- var self = this,
- hostname = self.__hostname,
- iframeDesc = iframeMap[hostname];
- iframeDesc.ready = 1;
- Event.detach(iframeDesc.iframe, "load", _onLoad, self);
- self.send();
- }
- return SubDomain;
- }, {
- requires:['./xhrbase','event','dom']
- });
- KISSY.add("ajax/xdr", function(S, io, DOM) {
- var
- maps = {},
- ID = "io_swf",
-
- flash,
- doc = document,
-
- init = false;
-
- function _swf(uri, _, uid) {
- if (init) {
- return;
- }
- init = true;
- var o = '<object id="' + ID +
- '" type="application/x-shockwave-flash" data="' +
- uri + '" width="0" height="0">' +
- '<param name="movie" value="' +
- uri + '" />' +
- '<param name="FlashVars" value="yid=' +
- _ + '&uid=' +
- uid +
- '&host=KISSY.io" />' +
- '<param name="allowScriptAccess" value="always" />' +
- '</object>',
- c = doc.createElement('div');
- DOM.prepend(c, doc.body || doc.documentElement);
- c.innerHTML = o;
- }
- function XdrTransport(xhrObj) {
- S.log("use flash xdr");
- this.xhrObj = xhrObj;
- }
- S.augment(XdrTransport, {
-
- send:function() {
- var self = this,
- xhrObj = self.xhrObj,
- c = xhrObj.config;
- var xdr = c['xdr'] || {};
-
- _swf(xdr.src || (S.Config.base + "ajax/io.swf"), 1, 1);
-
- if (!flash) {
-
- setTimeout(function() {
- self.send();
- }, 200);
- return;
- }
- self._uid = S.guid();
- maps[self._uid] = self;
-
- flash.send(c.url, {
- id:self._uid,
- uid:self._uid,
- method:c.type,
- data:c.hasContent && c.data || {}
- });
- },
- abort:function() {
- flash.abort(this._uid);
- },
- _xdrResponse:function(e, o) {
-
- var self = this,
- ret,
- xhrObj = self.xhrObj;
-
- xhrObj.responseText = decodeURI(o.c.responseText);
- switch (e) {
- case 'success':
- ret = { status: 200, statusText: "success" };
- delete maps[o.id];
- break;
- case 'abort':
- delete maps[o.id];
- break;
- case 'timeout':
- case 'transport error':
- case 'failure':
- delete maps[o.id];
- ret = { status: 500, statusText: e };
- break;
- }
- if (ret) {
- xhrObj.callback(ret.status, ret.statusText);
- }
- }
- });
-
- io['applyTo'] = function(_, cmd, args) {
-
- var cmds = cmd.split("."),
- func = S;
- S.each(cmds, function(c) {
- func = func[c];
- });
- func.apply(null, args);
- };
-
- io['xdrReady'] = function() {
- flash = doc.getElementById(ID);
- };
-
- io['xdrResponse'] = function(e, o, c) {
- var xhr = maps[o.uid];
- xhr && xhr._xdrResponse(e, o, c);
- };
-
- S.io = io;
- return XdrTransport;
- }, {
- requires:["./base",'dom']
- });
- KISSY.add("ajax/xhr", function(S, io, XhrBase, SubDomain, XdrTransport) {
- var rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;
- var _XDomainRequest = window['XDomainRequest'];
- var detectXhr = XhrBase.xhr();
- if (detectXhr) {
-
-
- function getMainDomain(host) {
- var t = host.split('.');
- if (t.length < 2) {
- return t.join(".");
- } else {
- return t.reverse().slice(0, 2).reverse().join('.');
- }
- }
- function XhrTransport(xhrObj) {
- var c = xhrObj.config,
- xdrCfg = c['xdr'] || {};
- if (c.crossDomain) {
- var parts = c.url.match(rurl);
-
- if (getMainDomain(location.hostname) == getMainDomain(parts[2])) {
- return new SubDomain(xhrObj);
- }
-
- if (!("withCredentials" in detectXhr) &&
- (String(xdrCfg.use) === "flash" || !_XDomainRequest)) {
- return new XdrTransport(xhrObj);
- }
- }
- this.xhrObj = xhrObj;
- return undefined;
- }
- S.augment(XhrTransport, XhrBase.proto, {
- send:function() {
- var self = this,
- xhrObj = self.xhrObj,
- c = xhrObj.config;
- self.xhr = XhrBase.xhr(c.crossDomain);
- self.sendInternal();
- }
- });
- io.setupTransport("*", XhrTransport);
- }
- return io;
- }, {
- requires:["./base",'./xhrbase','./subdomain',"./xdr"]
- });
- KISSY.add("ajax/script", function(S, io) {
- var doc = document;
- var OK_CODE = 200,ERROR_CODE = 500;
- io.setupConfig({
- accepts:{
- script:"text/javascript, " +
- "application/javascript, " +
- "application/ecmascript, " +
- "application/x-ecmascript"
- },
- contents:{
- script:/javascript|ecmascript/
- },
- converters:{
- text:{
-
-
-
- script:function(text) {
- S.globalEval(text);
- return text;
- }
- }
- }
- });
- function ScriptTransport(xhrObj) {
-
- if (!xhrObj.config.crossDomain &&
- !xhrObj.config['forceScript']) {
- return new (io.getTransport("*"))(xhrObj);
- }
- this.xhrObj = xhrObj;
- return 0;
- }
- S.augment(ScriptTransport, {
- send:function() {
- var self = this,
- script,
- xhrObj = this.xhrObj,
- c = xhrObj.config,
- head = doc['head'] ||
- doc.getElementsByTagName("head")[0] ||
- doc.documentElement;
- self.head = head;
- script = doc.createElement("script");
- self.script = script;
- script.async = "async";
- if (c['scriptCharset']) {
- script.charset = c['scriptCharset'];
- }
- script.src = c.url;
- script.onerror =
- script.onload =
- script.onreadystatechange = function(e) {
- e = e || window.event;
-
- self._callback((e.type || "error").toLowerCase());
- };
- head.insertBefore(script, head.firstChild);
- },
- _callback:function(event, abort) {
- var script = this.script,
- xhrObj = this.xhrObj,
- head = this.head;
-
- if (!script) {
- return;
- }
- if (abort ||
- !script.readyState ||
- /loaded|complete/.test(script.readyState)
- || event == "error"
- ) {
- script['onerror'] = script.onload = script.onreadystatechange = null;
-
- if (head && script.parentNode) {
-
-
-
- head.removeChild(script);
- }
- this.script = undefined;
- this.head = undefined;
-
- if (!abort && event != "error") {
- xhrObj.callback(OK_CODE, "success");
- }
-
- else if (event == "error") {
- xhrObj.callback(ERROR_CODE, "scripterror");
- }
- }
- },
- abort:function() {
- this._callback(0, 1);
- }
- });
- io.setupTransport("script", ScriptTransport);
- return io;
- }, {
- requires:['./base','./xhr']
- });
- KISSY.add("ajax/jsonp", function(S, io) {
- io.setupConfig({
- jsonp:"callback",
- jsonpCallback:function() {
-
- return S.guid("jsonp");
- }
- });
- io.on("start", function(e) {
- var xhr = e.xhr,c = xhr.config;
- if (c.dataType[0] == "jsonp") {
- var response,
- cJsonpCallback = c.jsonpCallback,
- jsonpCallback = S.isFunction(cJsonpCallback) ?
- cJsonpCallback() :
- cJsonpCallback,
- previous = window[ jsonpCallback ];
- c.url += ( /\?/.test(c.url) ? "&" : "?" ) + c.jsonp + "=" + jsonpCallback;
-
- window[jsonpCallback] = function(r) {
-
-
- if (arguments.length > 1) {
- r = S.makeArray(arguments);
- }
- response = [r];
- };
-
- xhr.on("complete", function() {
- window[ jsonpCallback ] = previous;
- if (previous === undefined) {
- try {
- delete window[ jsonpCallback ];
- } catch(e) {
-
-
- }
- } else if (response) {
-
-
- previous(response[0]);
- }
- });
- xhr.converters = xhr.converters || {};
- xhr.converters.script = xhr.converters.script || {};
-
- xhr.converters.script.json = function() {
- if (!response) {
- S.error(" not call jsonpCallback : " + jsonpCallback)
- }
- return response[0];
- };
- c.dataType.length = 2;
-
- c.dataType[0] = 'script';
- c.dataType[1] = 'json';
- }
- });
- return io;
- }, {
- requires:['./base']
- });
- KISSY.add("ajax/form", function(S, io, DOM, FormSerializer) {
- io.on("start", function(e) {
- var xhr = e.xhr,
- c = xhr.config;
-
- if (c.form) {
- var form = DOM.get(c.form),
- enctype = form['encoding'] || form.enctype;
-
- if (enctype.toLowerCase() != "multipart/form-data") {
-
- var formParam = FormSerializer.serialize(form);
- if (formParam) {
- if (c.hasContent) {
-
- c.data = c.data || "";
- if (c.data) {
- c.data += "&";
- }
- c.data += formParam;
- } else {
-
- c.url += ( /\?/.test(c.url) ? "&" : "?" ) + formParam;
- }
- }
- } else {
- var d = c.dataType[0];
- if (d == "*") {
- d = "text";
- }
- c.dataType.length = 2;
- c.dataType[0] = "iframe";
- c.dataType[1] = d;
- }
- }
- });
- return io;
- }, {
- requires:['./base',"dom","./form-serializer"]
- });
- KISSY.add("ajax/iframe-upload", function(S, DOM, Event, io) {
- var doc = document;
- var OK_CODE = 200,ERROR_CODE = 500,BREATH_INTERVAL = 30;
-
- io.setupConfig({
- converters:{
-
- iframe:io.getConfig().converters.text,
- text:{
- iframe:function(text) {
- return text;
- }
- }}});
- function createIframe(xhr) {
- var id = S.guid("ajax-iframe");
- xhr.iframe = DOM.create("<iframe " +
- " id='" + id + "'" +
-
- " name='" + id + "'" +
- " style='position:absolute;left:-9999px;top:-9999px;'/>");
- xhr.iframeId = id;
- DOM.prepend(xhr.iframe, doc.body || doc.documentElement);
- }
- function addDataToForm(data, form, serializeArray) {
- data = S.unparam(data);
- var ret = [];
- for (var d in data) {
- var isArray = S.isArray(data[d]),
- vs = S.makeArray(data[d]);
-
- for (var i = 0; i < vs.length; i++) {
- var e = doc.createElement("input");
- e.type = 'hidden';
- e.name = d + (isArray && serializeArray ? "[]" : "");
- e.value = vs[i];
- DOM.append(e, form);
- ret.push(e);
- }
- }
- return ret;
- }
- function removeFieldsFromData(fields) {
- DOM.remove(fields);
- }
- function IframeTransport(xhr) {
- this.xhr = xhr;
- }
- S.augment(IframeTransport, {
- send:function() {
-
- var xhr = this.xhr,
- c = xhr.config,
- fields,
- form = DOM.get(c.form);
- this.attrs = {
- target:DOM.attr(form, "target") || "",
- action:DOM.attr(form, "action") || ""
- };
- this.form = form;
- createIframe(xhr);
-
- DOM.attr(form, {"target": xhr.iframeId,"action": c.url});
- if (c.data) {
- fields = addDataToForm(c.data, form, c.serializeArray);
- }
- this.fields = fields;
- var iframe = xhr.iframe;
- Event.on(iframe, "load error", this._callback, this);
- form.submit();
- },
- _callback:function(event
- //, abort
- ) {
-
- var form = this.form,
- xhr = this.xhr,
- eventType = event.type,
- iframe = xhr.iframe;
-
- if (!iframe) {
- return;
- }
- DOM.attr(form, this.attrs);
- if (eventType == "load") {
- var iframeDoc = iframe.contentWindow.document;
- xhr.responseXML = iframeDoc;
- xhr.responseText = DOM.text(iframeDoc.body);
- xhr.callback(OK_CODE, "success");
- } else if (eventType == 'error') {
- xhr.callback(ERROR_CODE, "error");
- }
- removeFieldsFromData(this.fields);
- Event.detach(iframe);
- setTimeout(function() {
-
- DOM.remove(iframe);
- }, BREATH_INTERVAL);
-
- xhr.iframe = null;
- },
- abort:function() {
- this._callback(0, 1);
- }
- });
- io.setupTransport("iframe", IframeTransport);
- return io;
- }, {
- requires:["dom","event","./base"]
- });
- KISSY.add("ajax", function(S, serializer, io) {
- var undef = undefined;
-
- S.mix(io, {
-
- serialize:serializer.serialize,
- get: function(url, data, callback, dataType, _t) {
-
- if (S.isFunction(data)) {
- dataType = callback;
- callback = data;
- data = undef;
- }
- return io({
- type: _t || "get",
- url: url,
- data: data,
- success: callback,
- dataType: dataType
- });
- },
- post: function(url, data, callback, dataType) {
- if (S.isFunction(data)) {
- dataType = callback;
- callback = data;
- data = undef;
- }
- return io.get(url, data, callback, dataType, "post");
- },
- jsonp: function(url, data, callback) {
- if (S.isFunction(data)) {
- callback = data;
- data = undef;
- }
- return io.get(url, data, callback, "jsonp");
- },
-
-
-
- getScript:S.getScript,
- getJSON: function(url, data, callback) {
- if (S.isFunction(data)) {
- callback = data;
- data = undef;
- }
- return io.get(url, data, callback, "json");
- },
- upload:function(url, form, data, callback, dataType) {
- if (S.isFunction(data)) {
- dataType = callback;
- callback = data;
- data = undef;
- }
- return io({
- url:url,
- type:'post',
- dataType:dataType,
- form:form,
- data:data,
- success:callback
- });
- }
- });
- return io;
- }, {
- requires:[
- "ajax/form-serializer",
- "ajax/base",
- "ajax/xhrobject",
- "ajax/xhr",
- "ajax/script",
- "ajax/jsonp",
- "ajax/form",
- "ajax/iframe-upload"]
- });
- KISSY.add('base/attribute', function(S, undef) {
-
- Attribute.INVALID = {};
- var INVALID = Attribute.INVALID;
-
- function normalFn(host, method) {
- if (S.isString(method)) {
- return host[method];
- }
- return method;
- }
-
- function __fireAttrChange(self, when, name, prevVal, newVal, subAttrName, attrName) {
- attrName = attrName || name;
- return self.fire(when + capitalFirst(name) + 'Change', {
- attrName: attrName,
- subAttrName:subAttrName,
- prevVal: prevVal,
- newVal: newVal
- });
- }
-
- function ensureNonEmpty(obj, name, create) {
- var ret = obj[name] || {};
- if (create) {
- obj[name] = ret;
- }
- return ret;
- }
-
- function getAttrs(self) {
-
- return ensureNonEmpty(self, "__attrs", true);
- }
-
- function getAttrVals(self) {
-
- return ensureNonEmpty(self, "__attrVals", true);
- }
-
- function getValueByPath(o, path) {
- for (var i = 0,len = path.length;
- o != undef && i < len;
- i++) {
- o = o[path[i]];
- }
- return o;
- }
-
- function setValueByPath(o, path, val) {
- var rlen = path.length - 1,
- s = o;
- if (rlen >= 0) {
- for (var i = 0; i < rlen; i++) {
- o = o[path[i]];
- }
- if (o != undef) {
- o[path[i]] = val;
- } else {
- s = undef;
- }
- }
- return s;
- }
- function setInternal(self, name, value, opts, attrs) {
- var ret;
- opts = opts || {};
- var dot = ".",
- path,
- subVal,
- prevVal,
- fullName = name;
- if (name.indexOf(dot) !== -1) {
- path = name.split(dot);
- name = path.shift();
- }
- prevVal = self.get(name);
- if (path) {
- subVal = getValueByPath(prevVal, path);
- }
-
- if (!path && prevVal === value) {
- return undefined;
- } else if (path && subVal === value) {
- return undefined;
- }
- if (path) {
- var tmp = S.clone(prevVal);
- setValueByPath(tmp, path, value);
- value = tmp;
- }
-
- if (!opts['silent']) {
- if (false === __fireAttrChange(self, 'before', name, prevVal, value, fullName)) {
- return false;
- }
- }
-
- ret = self.__set(name, value);
- if (ret === false) {
- return ret;
- }
-
- if (!opts['silent']) {
- value = getAttrVals(self)[name];
- __fireAttrChange(self, 'after', name, prevVal, value, fullName);
- if (!attrs) {
- __fireAttrChange(self,
- '', '*',
- [prevVal], [value],
- [fullName], [name]);
- } else {
- attrs.push({
- prevVal:prevVal,
- newVal:value,
- attrName:name,
- subAttrName:fullName
- });
- }
- }
- return self;
- }
-
- function Attribute() {
- }
- S.augment(Attribute, {
-
- getAttrs: function() {
- return getAttrs(this);
- },
-
- getAttrVals:function() {
- var self = this,
- o = {},
- a,
- attrs = getAttrs(self);
- for (a in attrs) {
- o[a] = self.get(a);
- }
- return o;
- },
-
- addAttr: function(name, attrConfig, override) {
- var self = this,
- attrs = getAttrs(self),
- cfg = S.clone(attrConfig);
- if (!attrs[name]) {
- attrs[name] = cfg;
- } else {
- S.mix(attrs[name], cfg, override);
- }
- return self;
- },
-
- addAttrs: function(attrConfigs, initialValues) {
- var self = this;
- S.each(attrConfigs, function(attrConfig, name) {
- self.addAttr(name, attrConfig);
- });
- if (initialValues) {
- self.set(initialValues);
- }
- return self;
- },
-
- hasAttr: function(name) {
- return name && getAttrs(this).hasOwnProperty(name);
- },
-
- removeAttr: function(name) {
- var self = this;
- if (self.hasAttr(name)) {
- delete getAttrs(self)[name];
- delete getAttrVals(self)[name];
- }
- return self;
- },
-
- set: function(name, value, opts) {
- var ret,self = this;
- if (S.isPlainObject(name)) {
- var all = name;
- name = 0;
- ret = true;
- opts = value;
- var attrs = [];
- for (name in all) {
- ret = setInternal(self, name, all[name], opts, attrs);
- if (ret === false) {
- break;
- }
- }
- var attrNames = [],
- prevVals = [],
- newVals = [],
- subAttrNames = [];
- S.each(attrs, function(attr) {
- prevVals.push(attr.prevVal);
- newVals.push(attr.newVal);
- attrNames.push(attr.attrName);
- subAttrNames.push(attr.subAttrName);
- });
- if (attrNames.length) {
- __fireAttrChange(self,
- '',
- '*',
- prevVals,
- newVals,
- subAttrNames,
- attrNames);
- }
- return ret;
- }
- return setInternal(self, name, value, opts);
- },
-
- __set: function(name, value) {
- var self = this,
- setValue,
-
-
-
-
- attrConfig = ensureNonEmpty(getAttrs(self), name, true),
- validator = attrConfig['validator'],
- setter = attrConfig['setter'];
-
- if (validator = normalFn(self, validator)) {
- if (validator.call(self, value, name) === false) {
- return false;
- }
- }
-
- if (setter = normalFn(self, setter)) {
- setValue = setter.call(self, value, name);
- }
- if (setValue === INVALID) {
- return false;
- }
- if (setValue !== undef) {
- value = setValue;
- }
-
- getAttrVals(self)[name] = value;
- },
-
- get: function(name) {
- var self = this,
- dot = ".",
- path,
- attrConfig,
- getter, ret;
- if (name.indexOf(dot) !== -1) {
- path = name.split(dot);
- name = path.shift();
- }
- attrConfig = ensureNonEmpty(getAttrs(self), name);
- getter = attrConfig['getter'];
-
-
- ret = name in getAttrVals(self) ?
- getAttrVals(self)[name] :
- self.__getDefAttrVal(name);
-
- if (getter = normalFn(self, getter)) {
- ret = getter.call(self, ret, name);
- }
- if (path) {
- ret = getValueByPath(ret, path);
- }
- return ret;
- },
-
- __getDefAttrVal: function(name) {
- var self = this,
- attrConfig = ensureNonEmpty(getAttrs(self), name),
- valFn,
- val;
- if ((valFn = normalFn(self, attrConfig.valueFn))) {
- val = valFn.call(self);
- if (val !== undef) {
- attrConfig.value = val;
- }
- delete attrConfig.valueFn;
- getAttrs(self)[name] = attrConfig;
- }
- return attrConfig.value;
- },
-
- reset: function (name, opts) {
- var self = this;
- if (S.isString(name)) {
- if (self.hasAttr(name)) {
-
- return self.set(name, self.__getDefAttrVal(name), opts);
- }
- else {
- return self;
- }
- }
- opts = name;
- var attrs = getAttrs(self),
- values = {};
-
- for (name in attrs) {
- values[name] = self.__getDefAttrVal(name);
- }
- self.set(values, opts);
- return self;
- }
- });
- function capitalFirst(s) {
- return s.charAt(0).toUpperCase() + s.substring(1);
- }
- if (undef) {
- Attribute.prototype.addAttrs = undef;
- }
- return Attribute;
- });
- KISSY.add('base/base', function (S, Attribute, Event) {
-
- function Base(config) {
- var c = this.constructor;
-
- while (c) {
- addAttrs(this, c['ATTRS']);
- c = c.superclass ? c.superclass.constructor : null;
- }
-
- initAttrs(this, config);
- }
- function addAttrs(host, attrs) {
- if (attrs) {
- for (var attr in attrs) {
-
- if (attrs.hasOwnProperty(attr)) {
-
-
- host.addAttr(attr, attrs[attr], false);
- }
- }
- }
- }
- function initAttrs(host, config) {
- if (config) {
- for (var attr in config) {
- if (config.hasOwnProperty(attr)) {
-
- host.__set(attr, config[attr]);
- }
- }
- }
- }
- S.augment(Base, Event.Target, Attribute);
- return Base;
- }, {
- requires:["./attribute","event"]
- });
- KISSY.add("base", function(S, Base, Attribute) {
- Base.Attribute = Attribute;
- return Base;
- }, {
- requires:["base/base","base/attribute"]
- });
- KISSY.add('cookie/base', function(S) {
- var doc = document,
- MILLISECONDS_OF_DAY = 24 * 60 * 60 * 1000,
- encode = encodeURIComponent,
- decode = decodeURIComponent;
- function isNotEmptyString(val) {
- return S.isString(val) && val !== '';
- }
- return {
-
- get: function(name) {
- var ret, m;
- if (isNotEmptyString(name)) {
- if ((m = String(doc.cookie).match(
- new RegExp('(?:^| )' + name + '(?:(?:=([^;]*))|;|$)')))) {
- ret = m[1] ? decode(m[1]) : '';
- }
- }
- return ret;
- },
- set: function(name, val, expires, domain, path, secure) {
- var text = String(encode(val)), date = expires;
-
- if (typeof date === 'number') {
- date = new Date();
- date.setTime(date.getTime() + expires * MILLISECONDS_OF_DAY);
- }
-
- if (date instanceof Date) {
- text += '; expires=' + date.toUTCString();
- }
-
- if (isNotEmptyString(domain)) {
- text += '; domain=' + domain;
- }
-
- if (isNotEmptyString(path)) {
- text += '; path=' + path;
- }
-
- if (secure) {
- text += '; secure';
- }
-
- doc.cookie = name + '=' + text;
- },
- remove: function(name, domain, path, secure) {
-
- this.set(name, '', -1, domain, path, secure);
- }
- };
- });
- KISSY.add("cookie", function(S,C) {
- return C;
- }, {
- requires:["cookie/base"]
- });
- KISSY.add("core", function(S, UA, DOM, Event, Node, JSON, Ajax, Anim, Base, Cookie) {
- var re = {
- UA:UA,
- DOM:DOM,
- Event:Event,
- EventTarget:Event.Target,
- "EventObject":Event.Object,
- Node:Node,
- NodeList:Node,
- JSON:JSON,
- "Ajax":Ajax,
- "IO":Ajax,
- ajax:Ajax,
- io:Ajax,
- jsonp:Ajax.jsonp,
- Anim:Anim,
- Easing:Anim.Easing,
- Base:Base,
- "Cookie":Cookie,
- one:Node.one,
- all:Node.all,
- get:DOM.get,
- query:DOM.query
- };
- S.mix(S, re);
- return re;
- }, {
- requires:[
- "ua",
- "dom",
- "event",
- "node",
- "json",
- "ajax",
- "anim",
- "base",
- "cookie"
- ]
- });
- KISSY.use('core');
|