5 Star 18 Fork 4

南漂一卒 / EasyImport.js

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
EasyImport_Modern.js 122.64 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720
//
// >>> iQuery.js <<<
//
//
// [Version] v1.0 (2016-05-12) Stable
//
// (Modern & Mobile Edition)
//
// [Usage] A Light-weight jQuery Compatible API
// with IE 8+ compatibility.
//
//
// (C)2015-2016 shiy2008@gmail.com
//
/* ---------- ECMAScript API Patch & Extension ---------- */
(function (BOM) {
/* ----- String Extension ----- */
if (! ''.trim)
var Blank_Char = /(^\s*)|(\s*$)/g;
else
var _Trim_ = ''.trim;
String.prototype.trim = function (iChar) {
if (! iChar)
return Blank_Char ? this.replace(Blank_Char, '') : _Trim_.call(this);
else {
for (var i = 0, a = 0, b; i < iChar.length; i++) {
if ((this[0] == iChar[i]) && (! a))
a = 1;
if ((this[this.length - 1] == iChar[i]) && (! b))
b = -1;
}
return this.slice(a, b);
}
};
if (! ''.repeat)
String.prototype.repeat = function (Times) {
return (new Array(Times + 1)).join(this);
};
String.prototype.toCamelCase = function () {
var iName = this.split(arguments[0] || '-');
for (var i = 1; i < iName.length; i++)
iName[i] = iName[i][0].toUpperCase() + iName[i].slice(1);
return iName.join('');
};
String.prototype.toHyphenCase = function () {
return this.replace(/([a-z0-9])[\s_]?([A-Z])/g, function () {
return arguments[1] + '-' + arguments[2].toLowerCase();
});
};
/* ----- JSON Extension v0.4 ----- */
BOM.JSON.format = function () {
return this.stringify(arguments[0], null, 4)
.replace(/(\s+"[^"]+":) ([^\s]+)/g, '$1 $2');
};
BOM.JSON.parseAll = function (iJSON) {
return BOM.JSON.parse(iJSON, function (iKey, iValue) {
if (iKey && (typeof iValue == 'string')) try {
return BOM.JSON.parse(iValue);
} catch (iError) { }
return iValue;
});
};
/* ----- BOM/DOM Fix v0.3 ----- */
BOM.new_Window_Fix = function (Fix_More) {
if (! this) return false;
try {
var _Window_ = this.opener,
This_DOM = this.document;
This_DOM.defaultView = this;
if (_Window_ && (this.location.href == 'about:blank'))
This_DOM.domain = _Window_.document.domain;
} catch (iError) {
return false;
}
if (Fix_More) Fix_More.call(this);
return true;
};
BOM.new_Window_Fix();
})(self);
/* ---------- iQuery Core & API ---------- */
(function (BOM, DOM) {
/* ---------- UA Check ---------- */
var UA = navigator.userAgent;
var is_Trident = UA.match(/MSIE (\d+)|Trident[^\)]+rv:(\d+)/i),
is_Gecko = UA.match(/; rv:(\d+)[^\/]+Gecko\/\d+/),
is_Webkit = UA.match(/AppleWebkit\/(\d+\.\d+)/i);
var IE_Ver = is_Trident ? Number(is_Trident[1] || is_Trident[2]) : NaN,
FF_Ver = is_Gecko ? Number(is_Gecko[1]) : NaN,
WK_Ver = is_Webkit ? parseFloat(is_Webkit[1]) : NaN;
var is_Pad = UA.match(/Tablet|Pad|Book|Android 3/i),
is_Phone = UA.match(/Phone|Touch|Android 2|Symbian/i);
var is_Mobile = (
is_Pad || is_Phone || UA.match(/Mobile/i)
) && (! UA.match(/ PC /));
var is_iOS = UA.match(/(iTouch|iPhone|iPad|iWatch);[^\)]+CPU[^\)]+OS (\d+_\d+)/i),
is_Android = UA.match(/(Android |Silk\/)(\d+\.\d+)/i);
var _Browser_ = {
msie: IE_Ver,
mozilla: FF_Ver,
webkit: WK_Ver,
modern: ! (IE_Ver < 9),
mobile: !! is_Mobile,
pad: !! is_Pad,
phone: !! is_Phone,
ios: is_iOS ? parseFloat( is_iOS[2].replace('_', '.') ) : NaN,
android: is_Android ? parseFloat(is_Android[2]) : NaN,
versionNumber: IE_Ver || FF_Ver || WK_Ver
};
/* ---------- Object Base ---------- */
var _Object_ = {
isEmptyObject: function () {
for (var iKey in arguments[0])
return false;
return true;
},
isPlainObject: function (iValue) {
return iValue && (iValue.constructor === Object);
},
likeArray: function (iObject) {
if ((! iObject) || (typeof iObject != 'object'))
return false;
iObject = (typeof iObject.valueOf == 'function') ?
iObject.valueOf() : iObject;
return Boolean(
iObject &&
(typeof iObject.length == 'number') &&
(typeof iObject != 'string')
);
},
each: function (Arr_Obj, iEvery) {
if (this.likeArray( Arr_Obj ))
for (var i = 0; i < Arr_Obj.length; i++) try {
if (false === iEvery.call(Arr_Obj[i], i, Arr_Obj[i]))
break;
} catch (iError) {
console.dir( iError.valueOf() );
}
else
for (var iKey in Arr_Obj) try {
if (false === iEvery.call(
Arr_Obj[iKey], iKey, Arr_Obj[iKey]
))
break;
} catch (iError) {
console.dir( iError.valueOf() );
}
return Arr_Obj;
},
extend: function () {
var iDeep = (arguments[0] === true);
var iTarget,
iFirst = iDeep ? 1 : 0;
if (arguments.length > (iFirst + 1)) {
iTarget = arguments[iFirst] || (
(arguments[iFirst + 1] instanceof Array) ? [ ] : { }
);
iFirst++ ;
} else
iTarget = this;
for (var i = iFirst, iValue; i < arguments.length; i++)
for (var iKey in arguments[i])
if (
Object.prototype.hasOwnProperty.call(arguments[i], iKey) &&
(arguments[i][iKey] !== undefined)
) {
iTarget[iKey] = iValue = arguments[i][iKey];
if (iDeep) try {
if ((iValue instanceof Array) || _Object_.isPlainObject(iValue))
iTarget[iKey] = arguments.callee.call(
this, true, undefined, iValue
);
} catch (iError) { }
}
return iTarget;
},
map: function (iSource, iCallback) {
var iTarget = { }, iArray;
if (this.likeArray( iSource )) {
iTarget = [ ];
iArray = true;
}
if (typeof iCallback == 'function')
this.each(iSource, function (iKey) {
if (this === undefined) return;
var _Element_ = iCallback(arguments[1], iKey, iSource);
if ((_Element_ !== undefined) && (_Element_ !== null))
if (iArray)
iTarget = iTarget.concat(_Element_);
else
iTarget[iKey] = _Element_;
});
return iTarget;
},
makeArray: function () {
return Array.apply(null, arguments[0]);
},
inArray: function () {
return Array.prototype.indexOf.call(arguments[1], arguments[0]);
},
merge: function (iSource) {
if (! (iSource instanceof Array))
iSource = this.makeArray(iSource);
for (var i = 1; i < arguments.length; i++)
iSource = Array.prototype.concat.apply(
iSource,
this.likeArray( arguments[i] ) ? arguments[i] : [arguments[i]]
);
return iSource;
},
unique: function (iArray) {
var iResult = [ ];
for (var i = iArray.length - 1, j = 0; i > -1 ; i--)
if (this.inArray(iArray[i], iArray) == i)
iResult[j++] = iArray[i];
return iResult.reverse();
},
isEqual: function (iLeft, iRight) {
if (! (iLeft && iRight))
return (iLeft == iRight);
iLeft = iLeft.valueOf();
iRight = iRight.valueOf();
if (iLeft == iRight) return true;
if (! (
(iLeft instanceof Object) && (iRight instanceof Object)
))
return false;
var Left_Key = Object.getOwnPropertyNames(iLeft),
Right_Key = Object.getOwnPropertyNames(iRight);
if (Left_Key.length != Right_Key.length) return false;
for (var i = 0, _Key_; i < Left_Key.length; i++) {
_Key_ = Left_Key[i];
if (! (
(_Key_ in iRight) &&
arguments.callee.call(this, iLeft[_Key_], iRight[_Key_])
))
return false;
}
return true;
},
makeSet: function () {
var iArgs = arguments, iValue = true, iSet = { };
if (this.likeArray( iArgs[1] )) {
iValue = iArgs[0];
iArgs = iArgs[1];
} else if (this.likeArray( iArgs[0] )) {
iValue = iArgs[1];
iArgs = iArgs[0];
}
for (var i = 0; i < iArgs.length; i++)
iSet[ iArgs[i] ] = (typeof iValue == 'function') ?
iValue() : iValue;
return iSet;
},
trace: function (iObject, iName, iCount, iCallback) {
if (typeof iCount == 'function') iCallback = iCount;
iCount = parseInt(iCount);
iCount = isNaN(iCount) ? Infinity : iCount;
var iResult = [ ];
for (
var _Next_, i = 0, j = 0;
iObject[iName] && (j < iCount);
iObject = _Next_, i++
) {
_Next_ = iObject[iName];
if (
(typeof iCallback != 'function') ||
(iCallback.call(_Next_, i, _Next_) !== false)
)
iResult[j++] = _Next_;
}
return iResult;
},
intersect: function () {
if (arguments.length < 2) return arguments[0];
var iArgs = this.makeArray( arguments );
var iArray = this.likeArray( iArgs[0] );
iArgs[0] = this.map(iArgs.shift(), function (iValue, iKey) {
if ( iArray ) {
if (iArgs.indexOf.call(iArgs[0], iValue) > -1)
return iValue;
} else if (
(iArgs[0][iKey] !== undefined) &&
(iArgs[0][iKey] === iValue)
)
return iValue;
});
return arguments.callee.apply(this, iArgs);
}
};
var Type_Info = {
Data: _Object_.makeSet('String', 'Number', 'Boolean'),
BOM: _Object_.makeSet('Window', 'DOMWindow', 'global'),
DOM: {
set: _Object_.makeSet(
'Array', 'HTMLCollection', 'NodeList', 'jQuery', 'iQuery'
),
element: _Object_.makeSet('Window', 'Document', 'HTMLElement'),
root: _Object_.makeSet('Document', 'Window')
}
};
_Object_.type = function (iVar) {
var iType = typeof iVar;
try {
iType = (iType == 'object') ? (
(iVar && iVar.constructor.name) ||
Object.prototype.toString.call(iVar).match(/\[object\s+([^\]]+)\]/i)[1]
) : (
iType[0].toUpperCase() + iType.slice(1)
);
} catch (iError) {
return 'Window';
}
if (! iVar) switch (true) {
case (isNaN(iVar) && (iVar !== iVar)): return 'NaN';
case (iVar === null): return 'Null';
default: return iType;
}
if (
Type_Info.BOM[iType] ||
((iVar == iVar.document) && (iVar.document != iVar))
)
return 'Window';
if (iVar.location && (
iVar.location === (iVar.defaultView || { }).location
))
return 'Document';
if (
iType.match(/HTML\w+?Element$/) ||
(typeof iVar.tagName == 'string')
)
return 'HTMLElement';
if ( this.likeArray(iVar) ) iType = 'Array';
return iType;
};
_Object_.isData = function (iValue) {
return Boolean(iValue) || (this.type(iValue) in Type_Info.Data);
};
/* ---------- DOM Info Operator - Get first, Set all. ---------- */
var _DOM_ = {
Get_Name_Type: _Object_.makeSet('String', 'Array', 'Undefined'),
operate: function (iType, iElement, iName, iValue) {
if (iValue === null) {
if (this[iType].clear)
for (var i = 0; i < iElement.length; i++)
this[iType].clear(iElement[i], iName);
return iElement;
}
if (
(iValue === undefined) &&
(_Object_.type(iName) in this.Get_Name_Type)
) {
if (! iElement.length) return;
if (iName instanceof Array) {
var iData = { };
for (var i = 0; i < iName.length; i++)
iData[iName[i]] = this[iType].get(iElement[0], iName[i]);
return iData;
}
return this[iType].get(iElement[0], iName);
}
var iResult;
if (typeof iName == 'string') {
if (typeof iValue == 'function') {
for (var i = 0; i < iElement.length; i++)
iResult = this[iType].set(iElement[i], iName, iValue.call(
iElement[i], i, this[iType].get(iElement[i], iName)
));
return iResult || iElement;
} else {
iResult = { };
iResult[iName] = iValue;
iName = iResult;
iResult = undefined;
}
}
for (var i = 0; i < iElement.length; i++)
for (var iKey in iName)
iResult = this[iType].set(iElement[i], iKey, iName[iKey]);
return iResult || iElement;
}
};
/* ----- DOM Attribute ----- */
_DOM_.Attribute = {
get: function (iElement, iName) {
if (_Object_.type(iElement) in Type_Info.DOM.root) return;
if (! iName) return iElement.attributes;
var iValue = iElement.getAttribute(iName);
if (iValue !== null) return iValue;
},
set: function (iElement, iName, iValue) {
return (_Object_.type(iElement) in Type_Info.DOM.root) ?
false : iElement.setAttribute(iName, iValue);
},
clear: function (iElement, iName) {
iElement.removeAttribute(iName);
}
};
/* ----- DOM Property ----- */
_DOM_.Property = {
get: function (iElement, iName) {
return iName ? iElement[iName] : iElement;
},
set: function (iElement, iName, iValue) {
iElement[iName] = iValue;
}
};
/* ----- DOM Style ----- */
_DOM_.Style = {
PX_Needed:
RegExp([
'width', 'height', 'margin', 'padding',
'top', 'right', 'bottom', 'left',
'border-radius'
].join('|')),
get: function (iElement, iName) {
if ((! iElement) || (_Object_.type(iElement) in Type_Info.DOM.root))
return;
var iStyle = DOM.defaultView.getComputedStyle(iElement, null);
if (iName && iStyle) {
iStyle = iStyle.getPropertyValue(iName);
if (! iStyle) {
if (iName.match( this.PX_Needed ))
iStyle = 0;
} else if (iStyle.indexOf(' ') == -1) {
var iNumber = parseFloat(iStyle);
iStyle = isNaN(iNumber) ? iStyle : iNumber;
}
}
return _Object_.isData(iStyle) ? iStyle : '';
},
set: function (iElement, iName, iValue) {
if (_Object_.type(iElement) in Type_Info.DOM.root) return false;
if ((! isNaN( Number(iValue) )) && iName.match(this.PX_Needed))
iValue += 'px';
if (iElement)
iElement.style.setProperty(iName, String(iValue), 'important');
else
return iName + ':' + iValue;
}
};
/* ----- DOM Data ----- */
_DOM_.Data = {
_Data_: [ ],
set: function (iElement, iName, iValue) {
if (typeof iElement.dataIndex != 'number')
iElement.dataIndex = this._Data_.push({ }) - 1;
this._Data_[iElement.dataIndex][iName] = iValue;
},
get: function (iElement, iName) {
if (typeof iElement.dataIndex != 'number')
iElement.dataIndex = this._Data_.push({ }) - 1;
var iData = this._Data_[iElement.dataIndex] || iElement.dataset;
if (iName) {
iData = iData || { };
iData = iData[iName] || iData[ iName.toCamelCase() ];
if (typeof iData == 'string') try {
iData = BOM.JSON.parseAll(iData);
} catch (iError) { }
}
return ((iData instanceof Array) || _Object_.isPlainObject(iData)) ?
_Object_.extend(true, undefined, iData) : iData;
},
clear: function (iElement, iName) {
if (typeof iElement.dataIndex != 'number') return;
if (iName)
delete this._Data_[iElement.dataIndex][iName];
else {
delete this._Data_[iElement.dataIndex];
delete iElement.dataIndex;
}
}
};
/* ----- DOM Content ----- */
_DOM_.innerHTML = {
set: function (iElement, iHTML) {
iElement.innerHTML = iHTML;
return _Object_.makeArray(iElement.childNodes);
}
};
/* ---------- DOM Event ---------- */
_DOM_.operate('Data', [BOM], '_timer_', { });
var _Time_ = {
_Root_: BOM,
now: Date.now,
every: function (iSecond, iCallback) {
var _BOM_ = this._Root_,
iTimeOut = (iSecond || 1) * 1000,
iTimer, iReturn, Index = 0,
iStart = this.now(), iDuring;
iTimer = _BOM_.setTimeout(function () {
iDuring = (Date.now() - iStart) / 1000;
iReturn = iCallback.call(_BOM_, ++Index, iDuring);
if ((typeof iReturn == 'undefined') || iReturn)
_BOM_.setTimeout(arguments.callee, iTimeOut);
}, iTimeOut);
return iTimer;
},
wait: function (iSecond, iCallback) {
return this.every(iSecond, function () {
iCallback.apply(this, arguments);
return false;
});
},
start: function (iName) {
var _This_ = this, Time_Stamp;
_DOM_.operate('Data', [BOM], '_timer_', function (_Index_, iTimer) {
iTimer = iTimer || { };
Time_Stamp = iTimer[iName] = _This_.now();
return iTimer;
});
return Time_Stamp;
},
end: function () {
var iTimer = _DOM_.operate('Data', [BOM], '_timer_');
return (this.now() - iTimer[arguments[0]]) / 1000;
},
uuid: function () {
return [
(arguments[0] || 'uuid'), '_',
this.now().toString(16),
Math.random().toString(16).slice(2)
].join('');
}
};
/* ---------- DOM Constructor ---------- */
function DOM_Create(TagName, AttrList) {
var iNew, iTag = TagName.match(/^\s*<(.+?)\s*\/?>([\s\S]+)?/);
if (! iTag) return [ DOM.createTextNode(TagName) ];
iNew = (iTag[2] || (iTag[1].split(/\s/).length > 1)) ?
_DOM_.innerHTML.set(
DOM.createElement('div'), TagName
) : [
DOM.createElement( iTag[1] )
];
if ((iNew.length == 1) && (iNew[0].nodeType == 1) && AttrList)
_Object_.each(AttrList, function (iKey, iValue) {
switch (iKey) {
case 'text': return iNew[0].textContent = iValue;
case 'html': return _DOM_.innerHTML.set(iNew[0], iValue);
case 'style': {
if ( _Object_.isPlainObject(iValue) )
return _DOM_.operate('Style', iNew, iValue);
}
}
_DOM_.operate('Attribute', iNew, iKey, iValue);
});
return iNew[0].parentNode ?
_Object_.map(iNew, function (iDOM, _Index_) {
if (iDOM.nodeType == 1) {
iNew[_Index_].parentNode.removeChild(iDOM);
return iDOM;
}
}) : iNew;
}
/* ---------- DOM Selector ---------- */
var iPseudo = {
':header': {
filter: function () {
return (arguments[0] instanceof HTMLHeadingElement);
}
},
':image': {
feature: _Object_.extend(_Object_.makeSet(
'img', 'svg', 'canvas'
), {
input: {type: 'image'},
link: {type: 'image/x-icon'}
}),
filter: function (iElement) {
var iTag = iElement.tagName.toLowerCase();
if (iTag in this.feature)
return (this.feature[iTag] instanceof Boolean) ? true : (
this.feature[iTag].type == iElement.type.toLowerCase()
);
}
},
':button': {
feature: _Object_.makeSet(
'button', 'image', 'submit', 'reset'
),
filter: function (iElement) {
var iTag = iElement.tagName.toLowerCase();
return ((iTag == 'button') || (
(iTag == 'input') &&
(iElement.type.toLowerCase() in this.feature)
));
}
},
':input': {
feature: _Object_.makeSet(
'input', 'textarea', 'button', 'select'
),
filter: function (iDOM) {
return (
(iDOM.tagName.toLowerCase() in this.feature) ||
(typeof iDOM.getAttribute('contentEditable') == 'string') ||
iDOM.designMode
);
}
},
':list': {
feature: _Object_.makeSet('ul', 'ol', 'dl', 'datalist'),
filter: function () {
return (arguments[0].tagName.toLowerCase() in this.feature);
}
},
':data': {
filter: function () {
return (! _Object_.isEmptyObject(arguments[0].dataset));
}
},
':visible': {
feature: {
display: 'none',
width: 0,
height: 0
},
filter: function (iElement) {
var iStyle = _DOM_.operate('Style', [iElement], [
'display', 'width', 'height'
]);
for (var iKey in iStyle)
if (iStyle[iKey] === this.feature[iKey])
return;
return true;
}
},
':parent': {
filter: function () {
var iNode = arguments[0].childNodes;
if (! arguments[0].children.length) {
for (var i = 0; i < iNode.length; i++)
if (iNode[i].nodeType == 3)
return true;
} else return true;
}
}
};
_Object_.extend(iPseudo, {
':hidden': {
filter: function () {
return (! iPseudo[':visible'].filter(arguments[0]));
}
},
':empty': {
filter: function () {
return (! iPseudo[':parent'].filter(arguments[0]));
}
}
});
for (var _Pseudo_ in iPseudo)
iPseudo[_Pseudo_].regexp = RegExp(
'(.*?)' + _Pseudo_ + "([>\\+~\\s]*.*)"
);
function QuerySelector(iPath) {
var iRoot = this;
if ((this.nodeType == 9) || (! this.parentNode))
return iRoot.querySelectorAll(iPath);
var _ID_ = this.getAttribute('id');
if (! _ID_) {
_ID_ = _Time_.uuid('iQS');
this.setAttribute('id', _ID_);
}
iPath = '#' + _ID_ + ' ' + iPath;
iRoot = this.parentNode;
iPath = iRoot.querySelectorAll(iPath);
if (_ID_.slice(0, 3) == 'iQS') this.removeAttribute('id');
return iPath;
}
function DOM_Search(iRoot, iSelector) {
var _Self_ = arguments.callee;
return _Object_.map(iSelector.split(/\s*,\s*/), function () {
try {
return _Object_.makeArray(
QuerySelector.call(iRoot, arguments[0] || '*')
);
} catch (iError) {
var _Selector_;
for (var _Pseudo_ in iPseudo) {
_Selector_ = arguments[0].match(iPseudo[_Pseudo_].regexp);
if (_Selector_) break;
};
if (! _Selector_) return;
_Selector_[1] = _Selector_[1] || '*';
_Selector_[1] += (_Selector_[1].match(/[\s>\+~]\s*$/) ? '*' : '');
return _Object_.map(
QuerySelector.call(iRoot, _Selector_[1]),
function (iDOM) {
if ( iPseudo[_Pseudo_].filter(iDOM) )
return _Selector_[2] ?
_Self_(iDOM, '*' + _Selector_[2]) : iDOM;
}
);
}
});
}
var DOM_Sort = _Browser_.msie ?
function (iSet) {
var $_Temp = [ ], $_Result = [ ];
for (var i = 0; i < iSet.length; i++) {
$_Temp[i] = new String(iSet[i].sourceIndex);
$_Temp[i].DOM = iSet[i];
}
$_Temp.sort();
for (var i = 0, j = 0; i < $_Temp.length; i++)
if ((! i) || (
$_Temp[i].valueOf() != $_Temp[i - 1].valueOf()
) || (
$_Temp[i].DOM.outerHTML != $_Temp[i - 1].DOM.outerHTML
))
$_Result[j++] = $_Temp[i].DOM;
return $_Result;
} :
function (iSet) {
iSet.sort(function (A, B) {
return (A.compareDocumentPosition(B) & 2) - 1;
});
var $_Result = [ ];
for (var i = 0, j = 0; i < iSet.length; i++) {
if (i && (iSet[i] === iSet[i - 1])) continue;
$_Result[j++] = iSet[i];
}
return $_Result;
};
/* ---------- jQuery API ---------- */
function iQuery(Element_Set, iContext) {
/* ----- Global Wrapper ----- */
var _Self_ = arguments.callee;
if (! (this instanceof _Self_))
return new _Self_(Element_Set, iContext);
if (Element_Set instanceof _Self_)
return Element_Set;
/* ----- Constructor ----- */
this.length = 0;
if (! Element_Set) return;
var iType = _Object_.type(Element_Set);
if (iType == 'String') {
Element_Set = Element_Set.trim();
if (Element_Set[0] != '<') {
this.context = iContext || DOM;
this.selector = Element_Set;
Element_Set = DOM_Search(this.context, Element_Set);
Element_Set = (Element_Set.length < 2) ?
Element_Set : DOM_Sort(Element_Set);
} else
Element_Set = DOM_Create(
Element_Set, _Object_.isPlainObject(iContext) && iContext
);
} else if (iType in Type_Info.DOM.element)
Element_Set = [ Element_Set ];
if (! _Object_.likeArray(Element_Set))
return;
_Object_.extend(this, Element_Set, {
length: Element_Set.length,
context: (Element_Set.length == 1) ?
Element_Set[0].ownerDocument : this.context
});
}
var $ = BOM.iQuery = iQuery;
$.fn = $.prototype;
if (typeof BOM.jQuery != 'function')
BOM.jQuery = BOM.$ = $;
/* ----- iQuery Static Method ----- */
_Object_.extend($, _Object_, _Time_, {
browser: _Browser_,
isSelector: function () {
try {
DOM.querySelector(arguments[0])
} catch (iError) {
return false;
}
return true;
},
trim: function () {
return arguments[0].trim();
},
split: function (iString, iSplit, iLimit, iJoin) {
iString = iString.split(iSplit);
if (iLimit) {
iString[iLimit - 1] = iString.slice(iLimit - 1).join(
(typeof iJoin == 'string') ? iJoin : iSplit
);
iString.length = iLimit;
}
return iString;
},
byteLength: function () {
return arguments[0].replace(
/[^\u0021-\u007e\uff61-\uffef]/g, 'xx'
).length;
},
parseJSON: BOM.JSON.parseAll,
parseXML: function (iString) {
iString = iString.trim();
if ((iString[0] != '<') || (iString[iString.length - 1] != '>'))
throw 'Illegal XML Format...';
var iXML = (new BOM.DOMParser()).parseFromString(iString, 'text/xml');
var iError = iXML.getElementsByTagName('parsererror');
if (iError.length)
throw new SyntaxError(1, iError[0].childNodes[1].nodeValue);
iXML.cookie; // for old WebKit core to throw Error
return iXML;
},
globalEval: function () {
this('<script />').prop('text', arguments[0]).appendTo('head');
},
param: function (iObject) {
var iParameter = [ ], iValue;
if ( $.isPlainObject(iObject) )
for (var iName in iObject) {
iValue = iObject[iName];
if ( $.isPlainObject(iValue) )
iValue = BOM.JSON.stringify(iValue);
else if (! $.isData(iValue))
continue;
iParameter.push(iName + '=' + BOM.encodeURIComponent(iValue));
}
else if ($.type(iObject) in Type_Info.DOM.set)
for (var i = 0, j = 0; i < iObject.length; i++)
iParameter[j++] = iObject[i].name + '=' +
BOM.encodeURIComponent( iObject[i].value );
return iParameter.join('&');
},
paramJSON: function (Args_Str) {
Args_Str = (
Args_Str ? $.split(Args_Str, '?', 2)[1] : BOM.location.search
).match(/[^\?&\s]+/g);
if (! Args_Str) return { };
var _Args_ = { };
for (var i = 0, iValue; i < Args_Str.length; i++) {
Args_Str[i] = $.split(Args_Str[i], '=', 2);
iValue = BOM.decodeURIComponent( Args_Str[i][1] );
try {
iValue = $.parseJSON(iValue);
} catch (iError) { }
_Args_[ Args_Str[i][0] ] = iValue;
}
return _Args_;
},
paramSign: function (iData) {
iData = (typeof iData == 'string') ? $.paramJSON(iData) : iData;
return $.map(
Object.getOwnPropertyNames(iData).sort(),
function (iKey) {
switch (typeof iData[iKey]) {
case 'function': return;
case 'object': try {
return iKey + '=' + JSON.stringify(iData[iKey]);
} catch (iError) { }
}
return iKey + '=' + iData[iKey];
}
).join(arguments[1] || '&');
},
fileName: function () {
return (
arguments[0] || BOM.location.pathname
).match(/([^\?\#]+)(\?|\#)?/)[1].split('/').slice(-1)[0];
},
filePath: function () {
return (
arguments[0] || BOM.location.href
).match(/([^\?\#]+)(\?|\#)?/)[1].split('/').slice(0, -1).join('/');
},
urlDomain: function () {
return ((
arguments[0] || BOM.location.href
).match(/^(\w+:)?\/\/[^\/]+/) || [ ])[0];
},
data: function (iElement, iName, iValue) {
return _DOM_.operate('Data', [iElement], iName, iValue);
},
contains: function (iParent, iChild) {
if (! iChild) return false;
return !!(iParent.compareDocumentPosition(iChild) & 16);
},
proxy: function (iFunction, iContext) {
var iArgs = $.makeArray(arguments).slice(2);
return function () {
return iFunction.apply(
iContext || this, $.merge(iArgs, arguments)
);
};
}
});
/* ----- iQuery Instance Method ----- */
function DOM_Size(iName) {
iName = {
scroll: 'scroll' + iName,
inner: 'inner' + iName,
client: 'client' + iName,
css: iName.toLowerCase()
};
return function () {
if (! this[0]) return arguments.length ? this : 0;
switch ( $.type(this[0]) ) {
case 'Document':
return Math.max(
this[0].documentElement[iName.scroll],
this[0].body[iName.scroll]
);
case 'Window':
return this[0][iName.inner] || Math.max(
this[0].document.documentElement[iName.client],
this[0].document.body[iName.client]
);
}
var iValue = parseFloat(arguments[0]),
iFix = this.is('table') ? 4 : 0;
if (isNaN( iValue )) return this[0][iName.client] + iFix;
for (var i = 0; i < this.length; i++)
this[i].style[iName.css] = iValue - iFix;
return this;
};
}
function Scroll_DOM() {
return (
($.browser.webkit || (
(this.tagName || '').toLowerCase() != 'body'
)) ?
this : this.ownerDocument.documentElement
);
}
function DOM_Scroll(iName) {
iName = {
scroll: 'scroll' + iName,
offset: (iName == 'Top') ? 'pageYOffset' : 'pageXOffset'
};
return function (iPX) {
iPX = parseInt(iPX);
if ( isNaN(iPX) ) {
iPX = Scroll_DOM.call(this[0])[iName.scroll];
return (iPX !== undefined) ? iPX : (
this[0].documentElement[iName.scroll] ||
this[0].defaultView[iName.offset] ||
this[0].body[iName.scroll]
);
}
for (var i = 0; i < this.length; i++) {
if (this[i][iName.scroll] !== undefined) {
Scroll_DOM.call(this[i])[iName.scroll] = iPX;
continue;
}
this[i].documentElement[iName.scroll] =
this[i].defaultView[iName.offset] =
this[i].body[iName.scroll] = iPX;
}
};
}
function DOM_Insert(iName) {
return function () {
if (
this.length &&
(! this.before.apply($(this[0][iName]), arguments).length)
)
this.append.apply(
(iName == 'firstElementChild') ? this : this.parent(),
arguments
);
return this;
};
}
var Array_Reverse = Array.prototype.reverse, DOM_Proto = Element.prototype;
DOM_Proto.matches = DOM_Proto.matches || DOM_Proto.webkitMatchesSelector ||
DOM_Proto.msMatchesSelector || DOM_Proto.mozMatchesSelector;
$.fn.extend = $.extend;
$.fn.extend({
splice: Array.prototype.splice,
jquery: '1.9.1',
iquery: '1.0',
pushStack: function ($_New) {
$_New = $(DOM_Sort(
($_New instanceof Array) ? $_New : $.makeArray($_New)
));
$_New.prevObject = this;
return $_New;
},
refresh: function () {
if (! this.selector) return this;
var $_New = $(this.selector, this.context);
if (this.prevObject instanceof $)
$_New = this.prevObject.pushStack($_New);
return $_New;
},
add: function () {
return this.pushStack(
$.merge(this, $.apply(BOM, arguments))
);
},
slice: function () {
return this.pushStack( [ ].slice.apply(this, arguments) );
},
eq: function (Index) {
return this.pushStack(
[ ].slice.call(this, Index, (Index + 1) || undefined)
);
},
index: function (iTarget) {
if (! iTarget)
return $.trace(this[0], 'previousElementSibling').length;
var iType = $.type(iTarget);
switch (true) {
case (iType == 'String'):
return $.inArray(this[0], $(iTarget));
case ((iType in Type_Info.DOM.set) && (!! iTarget.length)): {
iTarget = iTarget[0];
iType = $.type(iTarget);
}
case (iType in Type_Info.DOM.element):
return $.inArray(iTarget, this);
}
return -1;
},
each: function () {
return $.each(this, arguments[0]);
},
is: function ($_Match) {
var iPath = (typeof $_Match == 'string');
for (var i = 0, $_Is; i < this.length; i++) {
if (this[i] === $_Match) return true;
if (iPath) try {
return this[i].matches($_Match);
} catch (iError) { }
if (! this[i].parentNode) $('<div />')[0].appendChild( this[i] );
$_Is = iPath ? $($_Match, this[i].parentNode) : $($_Match);
return ($_Is.index( this[i] ) > -1);
}
return false;
},
filter: function () {
var $_Result = [ ];
for (var i = 0, j = 0; i < this.length; i++)
if ($( this[i] ).is( arguments[0] ))
$_Result[j++] = this[i];
return this.pushStack($_Result);
},
not: function () {
var $_Result = [ ];
for (var i = 0, j = 0; i < this.length; i++)
if (! $( this[i] ).is( arguments[0] ))
$_Result[j++] = this[i];
return this.pushStack($_Result);
},
attr: function () {
return _DOM_.operate('Attribute', this, arguments[0], arguments[1]);
},
removeAttr: function (iAttr) {
iAttr = iAttr.trim().split(/\s+/);
for (var i = 0; i < iAttr.length; i++)
this.attr(iAttr[i], null);
return this;
},
prop: function () {
return _DOM_.operate('Property', this, arguments[0], arguments[1]);
},
data: function () {
return _DOM_.operate('Data', this, arguments[0], arguments[1]);
},
addBack: function () {
return this.pushStack( $.merge(this, this.prevObject) );
},
parent: function () {
var $_Result = [ ];
for (var i = 0, j = 0; i < this.length; i++)
if ($.inArray(this[i].parentNode, $_Result) == -1)
$_Result[j++] = this[i].parentNode;
return this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
);
},
parents: function () {
var $_Result = [ ];
for (var i = 0; i < this.length; i++)
$_Result = $_Result.concat(
$.trace(this[i], 'parentNode').slice(0, -1)
);
return Array_Reverse.call(this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
));
},
sameParents: function () {
if (this.length < 2) return this.parents();
var iMin = $.trace(this[0], 'parentNode').slice(0, -1),
iPrev;
for (var i = 1, iLast; i < this.length; i++) {
iLast = $.trace(this[i], 'parentNode').slice(0, -1);
if (iLast.length < iMin.length) {
iPrev = iMin;
iMin = iLast;
}
}
iPrev = iPrev || iLast;
var iDiff = iPrev.length - iMin.length, $_Result = [ ];
for (var i = 0; i < iMin.length; i++)
if (iMin[i] === iPrev[i + iDiff]) {
$_Result = iMin.slice(i);
break;
}
return Array_Reverse.call(this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
));
},
parentsUntil: function () {
return Array_Reverse.call(
this.parents().not( $(arguments[0]).parents().addBack() )
);
},
children: function () {
var $_Result = [ ];
for (var i = 0; i < this.length; i++)
$_Result = $.merge($_Result, this[i].children);
return this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
);
},
contents: function () {
var $_Result = [ ],
Type_Filter = parseInt(arguments[0]);
for (var i = 0; i < this.length; i++)
$_Result = $.merge(
$_Result,
(this[i].tagName.toLowerCase() != 'iframe') ?
this[i].childNodes : this[i].contentWindow.document
);
if ($.type(Type_Filter) == 'Number')
for (var i = 0; i < $_Result.length; i++)
if ($_Result[i].nodeType != Type_Filter)
$_Result[i] = null;
return this.pushStack($_Result);
},
nextAll: function () {
var $_Result = [ ];
for (var i = 0; i < this.length; i++)
$_Result = $_Result.concat(
$.trace(this[i], 'nextElementSibling')
);
return this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
);
},
prevAll: function () {
var $_Result = [ ];
for (var i = 0; i < this.length; i++)
$_Result = $_Result.concat(
$.trace(this[i], 'previousElementSibling')
);
$_Result.reverse();
return Array_Reverse.call(this.pushStack(
arguments[0] ? $($_Result).filter(arguments[0]) : $_Result
));
},
siblings: function () {
var $_Result = this.prevAll().add( this.nextAll() );
return this.pushStack(
arguments[0] ? $_Result.filter(arguments[0]) : $_Result
);
},
find: function () {
var $_Result = [ ];
for (var i = 0; i < this.length; i++)
$_Result = $.merge($_Result, $(arguments[0], this[i]));
return this.pushStack($_Result);
},
has: function ($_Filter) {
if (typeof $_Filter != 'string') {
var _UUID_ = $.uuid('Has');
$($_Filter).addClass(_UUID_);
$_Filter = '.' + _UUID_;
}
return this.pushStack($.map(this, function () {
if ( $($_Filter, arguments[0]).removeClass(_UUID_).length )
return arguments[0];
}));
},
detach: function () {
for (var i = 0; i < this.length; i++)
if (this[i].parentNode)
this[i].parentNode.removeChild(this[i]);
return this;
},
remove: function () {
return this.detach();
},
empty: function () {
this.children().remove();
for (var i = 0, iChild; i < this.length; i++) {
iChild = this[i].childNodes;
for (var j = 0; j < iChild.length; j++)
this[i].removeChild(iChild[j]);
}
return this;
},
text: function (iText) {
var iGetter = (! $.isData(iText)), iResult = [ ];
if (! iGetter) this.empty();
for (var i = 0, j = 0; i < this.length; i++)
if (iGetter)
iResult[j++] = this[i].textContent;
else
this[i].textContent = iText;
return iResult.length ? iResult.join('') : this;
},
html: function (iHTML) {
if (! $.isData(iHTML))
return this[0].innerHTML;
this.empty();
for (var i = 0; i < this.length; i++)
_DOM_.innerHTML.set(this[i], iHTML);
return this;
},
css: function () {
return _DOM_.operate('Style', this, arguments[0], arguments[1]);
},
width: DOM_Size('Width'),
height: DOM_Size('Height'),
scrollParents: function () {
return Array_Reverse.call(this.pushStack(
$.map(this.parents(), function () {
var $_This = $(arguments[0]);
if (
($_This.height() < $_This[0].scrollHeight) ||
($_This.width() < $_This[0].scrollWidth)
)
return $_This[0];
})
));
},
scrollTop: DOM_Scroll('Top'),
scrollLeft: DOM_Scroll('Left'),
position: function () {
return {
left: this[0].offsetLeft,
top: this[0].offsetTop
};
},
offset: function (iCoordinate) {
if ( $.isPlainObject(iCoordinate) )
return this.css($.extend({
position: 'fixed'
}, iCoordinate));
var _DOM_ = (this[0] || { }).ownerDocument;
var _Body_ = _DOM_ && $('body', _DOM_)[0];
if (! (_DOM_ && _Body_ && $.contains(_Body_, this[0])))
return {left: 0, top: 0};
var $_DOM_ = $(_DOM_), iBCR = this[0].getBoundingClientRect();
return {
left: parseFloat(
($_DOM_.scrollLeft() + iBCR.left).toFixed(4)
),
top: parseFloat(
($_DOM_.scrollTop() + iBCR.top).toFixed(4)
)
};
},
addClass: function (new_Class) {
if (typeof new_Class != 'string') return this;
new_Class = new_Class.trim().split(/\s+/);
return this.attr('class', function (_Index_, old_Class) {
old_Class = (old_Class || '').trim().split(/\s+/);
for (var i = 0, j = old_Class.length; i < new_Class.length; i++)
if ($.inArray(new_Class[i], old_Class) == -1)
old_Class[j++] = new_Class[i];
return old_Class.join(' ').trim();
});
},
removeClass: function (iClass) {
if (typeof iClass != 'string') return this;
iClass = iClass.trim().split(/\s+/);
return this.attr('class', function (_Index_, old_Class) {
old_Class = (old_Class || '').trim().split(/\s+/);
if (! old_Class[0]) return;
var new_Class = [ ];
for (var i = 0, j = 0; i < old_Class.length; i++)
if ($.inArray(old_Class[i], iClass) == -1)
new_Class[j++] = old_Class[i];
return new_Class.join(' ');
});
},
hasClass: function () {
try {
return this[0].classList.contains(arguments[0]);
} catch (iError) {
return false;
}
},
append: function () {
var $_Child = $(arguments[0], arguments[1]),
DOM_Cache = DOM.createDocumentFragment();
return this.each(function (Index) {
var _Child_ = Index ? $_Child.clone(true) : $_Child,
_Cache_ = DOM_Cache.cloneNode();
for (var i = 0; i < _Child_.length; i++)
_Cache_.appendChild( _Child_[i] );
this.appendChild(_Cache_);
});
},
appendTo: function () {
$(arguments[0], arguments[1]).append(this);
return this;
},
before: function () {
var $_Brother = $(arguments[0], arguments[1]),
DOM_Cache = DOM.createDocumentFragment();
return this.each(function (Index) {
var _Brother_ = Index ? $_Brother.clone(true) : $_Brother,
_Cache_ = DOM_Cache.cloneNode();
for (var i = 0; i < _Brother_.length; i++)
if (_Brother_[i] !== this)
_Cache_.appendChild(_Brother_[i]);
this.parentNode.insertBefore(_Cache_, this);
});
},
prepend: DOM_Insert('firstElementChild'),
prependTo: function () {
$(arguments[0], arguments[1]).prepend(this);
return this;
},
after: DOM_Insert('nextElementSibling'),
val: function () {
if (! $.isData(arguments[0]))
return this[0] && this[0].value;
else
return this.not('input[type="file"]').prop('value', arguments[0]);
},
serializeArray: function () {
var $_Value = this.find('*[name]:input').not(':button, [disabled]'),
iValue = [ ];
for (var i = 0, j = 0; i < $_Value.length; i++)
if (
(! $_Value[i].type.match(/radio|checkbox/i)) ||
$_Value[i].checked
)
iValue[j++] = $($_Value[i]).prop(['name', 'value']);
return iValue;
},
serialize: function () {
return $.param( this.serializeArray() );
}
});
/* ----- DOM Data Reduce ----- */
var iOperator = {
'+': function () {
return arguments[0] + arguments[1];
},
'-': function () {
return arguments[0] - arguments[1];
}
};
$.fn.reduce = function (iMethod, iKey, iCallback) {
if (arguments.length < 3) {
iCallback = iKey;
iKey = undefined;
}
if (typeof iCallback == 'string') iCallback = iOperator[iCallback];
return $.map(this, function () {
return $( arguments[0] )[iMethod](iKey);
}).reduce(iCallback);
};
/* ----- DOM UI Data Operator ----- */
var RE_URL = /^(\w+:)?\/\/[\u0021-\u007e\uff61-\uffef]+$/;
function Value_Operator(iValue) {
var $_This = $(this),
End_Element = (! this.children.length);
var _Set_ = $.isData(iValue),
iURL = (typeof iValue == 'string') && iValue.trim();
var isURL = iURL && iURL.split('#')[0].match(RE_URL);
switch ( this.tagName.toLowerCase() ) {
case 'a': {
if (_Set_) {
if (isURL) $_This.attr('href', iURL);
if (End_Element) $_This.text(iValue);
return;
}
return $_This.attr('href') || (End_Element && $_This.text());
}
case 'img': return $_This.attr('src', iValue);
case 'textarea': ;
case 'select': return $_This.val(iValue);
case 'option': return $_This.text(iValue);
case 'input': {
var _Value_ = this.value;
if (this.getAttribute('type') != 'tel') try {
_Value_ = JSON.parse(_Value_);
} catch (iError) { }
if ((this.type || '').match(/radio|checkbox/i)) {
if (_Set_) {
if ((! _Value_) || (_Value_ == 'on'))
this.value = iValue;
else if (_Value_ === iValue)
this.checked = true;
} else
return this.checked && _Value_;
} else if (_Set_)
this.value = iValue;
return _Value_;
}
default: {
if (_Set_) {
if ((! End_Element) && isURL)
$_This.css('background-image', 'url("' + iURL + '")');
else
$_This.html(iValue);
return;
}
iURL = $_This.css('background-image')
.match(/^url\(('|")?([^'"]+)('|")?\)/);
return End_Element ? $_This.text() : (iURL && iURL[2]);
}
}
}
$.fn.value = function (iAttr, iFiller) {
if (typeof iAttr == 'function') {
iFiller = iAttr;
iAttr = '';
}
var $_Value = iAttr ? this.filter('[' + iAttr + ']') : this;
$_Value = $_Value.length ? $_Value : this.find('[' + iAttr + ']');
if (! iFiller) return Value_Operator.call($_Value[0]);
var Data_Set = (typeof iFiller != 'function');
for (var i = 0, iKey; i < $_Value.length; i++) {
iKey = iAttr && $_Value[i].getAttribute(iAttr);
Value_Operator.call(
$_Value[i],
Data_Set ? iFiller[iKey] : iFiller.apply($_Value[i], [
iKey || Value_Operator.call($_Value[i]), i, $_Value
])
);
}
return this;
};
/* ---------- Smart zIndex ---------- */
function Get_zIndex() {
var $_This = $(this);
var _zIndex_ = $_This.css('z-index');
if (_zIndex_ != 'auto') return parseInt(_zIndex_);
var $_Parents = $_This.parents();
_zIndex_ = 0;
$_Parents.each(function () {
var _Index_ = $(this).css('z-index');
_zIndex_ = _zIndex_ + (
(_Index_ == 'auto') ? 1 : _Index_
);
});
return ++_zIndex_;
}
function Set_zIndex() {
var $_This = $(this), _Index_ = 0;
$_This.siblings().addBack().filter(':visible').each(function () {
_Index_ = Math.max(_Index_, Get_zIndex.call(this));
});
$_This.css('z-index', ++_Index_);
}
$.fn.zIndex = function (new_Index) {
if (! $.isData(new_Index))
return Get_zIndex.call(this[0]);
else if (new_Index == '+')
return this.each(Set_zIndex);
else
return this.css('z-index', parseInt(new_Index) || 'auto');
};
/* ---------- CSS Rule ---------- */
function CSS_Rule2Text(iRule) {
var Rule_Text = [''], Rule_Block, _Rule_Block_;
$.each(iRule, function (iSelector) {
Rule_Block = iSelector + ' {';
_Rule_Block_ = [ ];
for (var iAttribute in this)
_Rule_Block_.push(
_DOM_.operate('Style', [null], iAttribute, this[iAttribute])
.replace(/^(\w)/m, '$1')
);
Rule_Text.push(
[Rule_Block, _Rule_Block_.join(";\n"), '}'].join("\n")
);
});
Rule_Text.push('');
return Rule_Text.join("\n");
}
$.cssRule = function (iMedia, iRule) {
if (typeof iMedia != 'string') {
iRule = iMedia;
iMedia = null;
}
var CSS_Text = CSS_Rule2Text(iRule);
return $('<style />', {
type: 'text/css',
'class': 'iQuery_CSS-Rule',
text: (! iMedia) ? CSS_Text : [
'@media ' + iMedia + ' {',
CSS_Text.replace(/\n/m, "\n "),
'}'
].join("\n")
}).appendTo(DOM.head)[0].sheet;
};
function CSS_Rule_Search(iStyleSheet, iFilter) {
return $.map(iStyleSheet || DOM.styleSheets, function () {
var iRule = arguments[0].cssRules, _Self_ = arguments.callee;
if (! iRule) return;
return $.map(iRule, function (_Rule_) {
return (_Rule_.cssRules ? _Self_ : iFilter)(_Rule_);
});
});
}
function CSSRuleList() {
$.extend(this, arguments[0]);
this.length = arguments[0].length;
}
if (typeof BOM.getMatchedCSSRules != 'function')
BOM.getMatchedCSSRules = function (iElement, iPseudo) {
if (! (iElement instanceof Element)) return null;
if (typeof iPseudo == 'string') {
iPseudo = (iPseudo.match(/^\s*:{1,2}([\w\-]+)\s*$/) || [ ])[1];
if (! iPseudo) return null;
} else if (iPseudo)
iPseudo = null;
return new CSSRuleList(CSS_Rule_Search(null, function (iRule) {
var iSelector = iRule.selectorText;
if (iPseudo) {
iSelector = iSelector.replace(/:{1,2}([\w\-]+)$/, function () {
return (arguments[1] == iPseudo) ? '' : arguments[0];
});
if (iSelector == iRule.selectorText) return;
}
if (iElement.matches( iSelector )) return iRule;
}));
};
$.fn.cssRule = function (iRule, iCallback) {
if (! $.isPlainObject(iRule)) {
var $_This = this;
return ($_This[0] && CSS_Rule_Search(null, function (_Rule_) {
if ((
(typeof $_This.selector != 'string') ||
($_This.selector != _Rule_.selectorText)
) &&
(! $_This[0].matches(_Rule_.selectorText))
)
return;
if ((! iRule) || (iRule && _Rule_.style[iRule]))
return _Rule_;
}));
}
return this.each(function () {
var _Rule_ = { }, _ID_ = this.getAttribute('id');
if (! _ID_) {
_ID_ = $.uuid();
this.setAttribute('id', _ID_);
}
for (var iSelector in iRule)
_Rule_['#' + _ID_ + iSelector] = iRule[iSelector];
var iSheet = $.cssRule(_Rule_);
if (typeof iCallback == 'function') iCallback.call(this, iSheet);
});
};
/* ---------- Selection Getter & Setter ---------- */
var W3C_Selection = (! ($.browser.msie < 10));
function Select_Node(iSelection) {
var iFocus = W3C_Selection ?
iSelection.focusNode : iSelection.createRange().parentElement();
var iActive = iFocus.ownerDocument.activeElement;
return $.contains(iActive, iFocus) ? iFocus : iActive;
}
function Find_Selection() {
var iDOM = this.document || this.ownerDocument || this;
if (iDOM.activeElement.tagName.toLowerCase() == 'iframe') try {
return arguments.callee.call( iDOM.activeElement.contentWindow );
} catch (iError) { }
var iSelection = W3C_Selection ? iDOM.getSelection() : iDOM.selection;
var iNode = Select_Node(iSelection);
return $.contains(
(this instanceof Element) ? this : iDOM, iNode
) && [
iSelection, iNode
];
}
$.fn.selection = function (iContent) {
if (iContent === undefined) {
var iSelection = Find_Selection.call(this[0])[0];
return W3C_Selection ?
iSelection.toString() : iSelection.createRange().htmlText;
}
return this.each(function () {
var iSelection = Find_Selection.call(this);
var iNode = iSelection[1];
iSelection = iSelection[0];
iNode = (iNode.nodeType == 1) ? iNode : iNode.parentNode;
if (! W3C_Selection) {
iSelection = iSelection.createRange();
return iSelection.text = (
(typeof iContent == 'function') ?
iContent.call(iNode, iSelection.text) : iContent
);
}
var iProperty, iStart, iEnd;
if ((iNode.tagName || '').match(/input|textarea/i)) {
iProperty = 'value';
iStart = Math.min(iNode.selectionStart, iNode.selectionEnd);
iEnd = Math.max(iNode.selectionStart, iNode.selectionEnd);
} else {
iProperty = 'innerHTML';
iStart = Math.min(iSelection.anchorOffset, iSelection.focusOffset);
iEnd = Math.max(iSelection.anchorOffset, iSelection.focusOffset);
}
var iValue = iNode[iProperty];
iNode[iProperty] = iValue.slice(0, iStart) + (
(typeof iContent == 'function') ?
iContent.call(iNode, iValue.slice(iStart, iEnd)) : iContent
) + iValue.slice(iEnd);
});
};
})(self, self.document);
/* ---------- jQuery Event System ---------- */
(function (BOM, DOM, $) {
var Mutation_Event = $.makeSet(
'DOMContentLoaded',
'DOMAttrModified', 'DOMAttributeNameChanged',
'DOMCharacterDataModified',
'DOMElementNameChanged',
'DOMNodeInserted', 'DOMNodeInsertedIntoDocument',
'DOMNodeRemoved', 'DOMNodeRemovedFromDocument',
'DOMSubtreeModified'
);
function isOriginalEvent() {
return (
('on' + this.type) in
(this.target || DOM.documentElement).constructor.prototype
) || (
this.type in Mutation_Event
);
}
function W3C_Event_Object(iType, iCustom, iDetail) {
var iEvent = DOM.createEvent(iCustom ? 'CustomEvent' : 'HTMLEvents');
iEvent['init' + (iCustom ? 'CustomEvent' : 'Event')](
iType, true, true, iDetail
);
return iEvent;
}
$.Event = function (iEvent, iProperty) {
// Instantiation without "new"
var _Self_ = arguments.callee;
if (iEvent instanceof _Self_)
return $.isPlainObject(iProperty) ?
$.extend(iEvent, iProperty) : iEvent;
if (! (this instanceof _Self_))
return new _Self_(iEvent, iProperty);
// Default Property
$.extend(this, {
bubbles: true,
cancelable: true,
isTrusted: true,
detail: 0,
view: BOM,
eventPhase: 3
});
// Special Property
var iCreate = (typeof iEvent == 'string');
if (! iCreate) {
if ($.isPlainObject( iEvent ))
$.extend(this, iEvent);
else for (var iKey in iEvent)
if ((typeof iEvent[iKey] != 'function') && (iKey[0] > 'Z'))
this[iKey] = iEvent[iKey];
}
if ($.isPlainObject( iProperty )) $.extend(this, iProperty);
this.type = iCreate ? iEvent : this.type;
this.isCustom = (! isOriginalEvent.call(this));
this.originalEvent = (iCreate || $.isPlainObject(iEvent)) ?
W3C_Event_Object(this.type, this.isCustom, this.detail) : iEvent;
};
$.extend($.Event.prototype, {
preventDefault: function () {
this.originalEvent.preventDefault();
this.defaultPrevented = true;
},
stopPropagation: function () {
this.originalEvent.stopPropagation();
this.cancelBubble = true;
}
});
function Proxy_Handler(iEvent, iCallback) {
iEvent = $.Event(iEvent);
var $_Target = $(iEvent.target);
var iHandler = iCallback ?
[iCallback] :
($(this).data('_event_') || { })[iEvent.type],
iArgs = [iEvent].concat( $_Target.data('_trigger_') ),
iThis = this, iReturn;
if (! (iHandler && iHandler.length)) return;
for (var i = 0, _Return_; i < iHandler.length; i++)
if (false === (
iHandler[i] && iHandler[i].apply(iThis, iArgs)
)) {
iEvent.preventDefault();
iEvent.stopPropagation();
}
$_Target.data('_trigger_', null);
return iReturn;
}
$.event = {
dispatch: function (iEvent, iFilter) {
iEvent = $.Event(iEvent);
var iTarget = iEvent.target, $_Path;
switch ( $.type(iTarget) ) {
case 'HTMLElement': {
$_Path = $(iTarget).parents().addBack();
$_Path = iFilter ?
Array.prototype.reverse.call( $_Path.filter(iFilter) ) :
$($.makeArray($_Path).reverse().concat([
iTarget.ownerDocument, iTarget.ownerDocument.defaultView
]));
break;
}
case 'Document': iTarget = [iTarget, iTarget.defaultView];
case 'Window': {
if (iFilter) return;
$_Path = $(iTarget);
}
}
for (var i = 0; i < $_Path.length; i++)
if (
(false === Proxy_Handler.call(
$_Path[i], iEvent, (! i) && arguments[2]
)) ||
iEvent.cancelBubble
)
break;
}
};
function Direct_Bind(iType, iCallback) {
return this.data('_event_', function () {
var Event_Data = arguments[1] || { };
if (! Event_Data[iType]) {
Event_Data[iType] = [ ];
this.addEventListener(iType, Proxy_Handler, false);
}
Event_Data[iType].push(iCallback);
return Event_Data;
});
}
$.fn.extend({
bind: function (iType) {
iType = (typeof iType == 'string') ?
$.makeSet.apply($, iType.trim().split(/\s+/)) : iType;
for (var _Type_ in iType)
Direct_Bind.apply(this, [
_Type_,
(iType[_Type_] === true) ? arguments[1] : iType[_Type_]
]);
return this;
},
unbind: function (iType, iCallback) {
iType = iType.trim().split(/\s+/);
return this.data('_event_', function () {
var Event_Data = arguments[1] || { };
for (var i = 0, iHandler; i < iType.length; i++) {
iHandler = Event_Data[iType[i]];
if (! iHandler) continue;
if (typeof iCallback == 'function')
iHandler.splice(iHandler.indexOf(iCallback), 1);
else
delete Event_Data[iType[i]];
if (! Event_Data[iType[i]])
this.removeEventListener(iType[i], Proxy_Handler);
}
return Event_Data;
});
},
on: function (iType, iFilter, iCallback) {
if (typeof iFilter != 'string')
return this.bind.apply(this, arguments);
return this.bind(iType, function () {
$.event.dispatch(arguments[0], iFilter, iCallback);
});
},
one: function () {
var iArgs = $.makeArray(arguments), $_This = this;
var iCallback = iArgs[iArgs.length - 1];
iArgs.splice(-1, 1, function () {
$.fn.unbind.apply($_This, (
(iArgs.length > 2) ? [iArgs[0], iArgs[2]] : iArgs
));
return iCallback.apply(this, arguments);
});
return this.on.apply(this, iArgs);
},
trigger: function () {
this.data('_trigger_', arguments[1]);
for (var i = 0, iEvent; i < this.length; i++)
this[i].dispatchEvent($.extend(
iEvent.originalEvent,
$.Event(arguments[0], {target: this[i]})
));
return this;
},
triggerHandler: function () {
var iHandler = $(this[0]).data('_event_'), iReturn;
iHandler = iHandler && iHandler[arguments[0]];
if (! iHandler) return;
for (var i = 0; i < iHandler.length; i++)
iReturn = iHandler[i].apply(
this[0], $.merge([ ], arguments)
);
return iReturn;
},
clone: function (iDeep) {
return $($.map(this, function () {
var $_Old = $(arguments[0]);
var $_New = $( $_Old[0].cloneNode(iDeep) );
if (iDeep) {
$_Old = $_Old.find('*').addBack();
$_New = $_New.find('*').addBack();
}
for (var i = 0, iData; i < $_Old.length; i++) {
iData = $($_Old[i]).data();
if ($.isEmptyObject( iData )) continue;
$($_New[i]).data(iData);
for (var iType in iData._event_)
$_New[i].addEventListener(iType, Proxy_Handler, false);
}
return $_New[0];
}));
}
});
/* ---------- Event ShortCut ---------- */
$.fn.off = $.fn.unbind;
function Event_Method(iName) {
return function (iCallback) {
if ((typeof iCallback == 'function') || (iCallback === false))
return this.bind(iName, arguments[0]);
for (var i = 0; i < this.length; i++) try {
this[i][iName]();
} catch (iError) {
$(this[i]).trigger(iName);
}
return this;
};
}
for (var iName in $.makeSet(
'abort', 'error',
'keydown', 'keypress', 'keyup',
'mousedown', 'mouseup', 'mousemove', 'mousewheel',
'click', 'dblclick', 'scroll', 'resize',
'select', 'focus', 'blur', 'change', 'submit', 'reset',
'tap', 'press', 'swipe'
))
$.fn[iName] = Event_Method(iName);
var DOM_Focus = $.fn.focus,
iFocusable = [
'a[href], area',
'label, input, textarea, button, select, option',
'*[tabIndex], *[contentEditable]'
].join(', ');
$.fn.focus = function () {
this.not(iFocusable).attr('tabIndex', -1).css('outline', 'none');
return DOM_Focus.apply(this, arguments);
};
if ($.browser.mobile) $.fn.click = $.fn.tap;
/* ---------- Complex Events ---------- */
/* ----- DOM Ready ----- */
var $_DOM = $(DOM);
$.start('DOM_Ready');
function DOM_Ready_Event() {
if (DOM.isReady || (
(this !== DOM) && (
(DOM.readyState != 'complete') ||
(! (DOM.body || { }).lastChild)
)
))
return;
DOM.isReady = true;
BOM.clearTimeout( $_DOM.data('Ready_Timer') );
$_DOM.data('Load_During', $.end('DOM_Ready'))
.data('Ready_Event', arguments[0]);
console.info('[DOM Ready Event]');
console.log(this, arguments);
$_DOM.trigger('ready');
return false;
}
$_DOM.data('Ready_Timer', $.every(0.5, DOM_Ready_Event));
$_DOM.one('DOMContentLoaded', DOM_Ready_Event);
$(BOM).one('load', DOM_Ready_Event);
$.fn.ready = function (iCallback) {
if ($.type(this[0]) != 'Document')
throw 'The Ready Method is only used for Document Object !';
if (! DOM.isReady)
$_DOM.one('ready', iCallback);
else
iCallback.call(this[0], $.data(DOM, 'Ready_Event'));
return this;
};
/* ----- Mouse Hover ----- */
var _Float_ = {
absolute: true,
fixed: true
};
$.fn.hover = function (iEnter, iLeave) {
return this.bind('mouseover', function () {
if (
$.contains(this, arguments[0].relatedTarget) ||
($(arguments[0].target).css('position') in _Float_)
)
return false;
iEnter.apply(this, arguments);
}).bind('mouseout', function () {
if (
$.contains(this, arguments[0].relatedTarget) ||
($(arguments[0].target).css('position') in _Float_)
)
return false;
(iLeave || iEnter).apply(this, arguments);
});
};
/* ----- Single Finger Touch ----- */
function get_Touch(iEvent) {
if (! iEvent.timeStamp)
iEvent.timeStamp = $.now();
if (! $.browser.mobile) return iEvent;
try {
return iEvent.changedTouches[0];
} catch (iError) {
return iEvent.touches[0];
}
}
var Touch_Data;
$_DOM.bind(
$.browser.mobile ? 'touchstart MSPointerDown' : 'mousedown',
function (iEvent) {
var iTouch = get_Touch(iEvent);
Touch_Data = {
pX: iTouch.pageX,
pY: iTouch.pageY,
time: iEvent.timeStamp
};
}
).bind(
$.browser.mobile ? 'touchend touchcancel MSPointerUp' : 'mouseup',
function (iEvent) {
if (! Touch_Data) return;
var iTouch = get_Touch(iEvent);
var swipeLeft = Touch_Data.pX - iTouch.pageX,
swipeTop = Touch_Data.pY - iTouch.pageY,
iDuring = iEvent.timeStamp - Touch_Data.time;
var iShift = Math.sqrt(
Math.pow(swipeLeft, 2) + Math.pow(swipeTop, 2)
),
_Event_;
if (iDuring > 300)
_Event_ = 'press';
else if (iShift < 22)
_Event_ = 'tap';
else
_Event_ = {
type: 'swipe',
deltaX: swipeLeft,
deltaY: swipeTop,
detail: iShift
};
$(iEvent.target).trigger(_Event_);
}
);
/* ----- Text Input Event ----- */
function TypeBack(iHandler, iKey, iEvent) {
var $_This = $(this);
var iValue = $_This[iKey]();
if (false !== iHandler.call(iEvent.target, iEvent, iValue))
return;
iValue = iValue.split('');
iValue.splice(
BOM.getSelection().getRangeAt(0).startOffset - 1, 1
);
$_This[iKey]( iValue.join('') );
}
$.fn.input = function (iHandler) {
this.filter('input, textarea').on(
'input', $.proxy(TypeBack, null, iHandler, 'val')
);
this.not('input, textarea').on('paste', function (iEvent) {
return iHandler.call(
iEvent.target,
iEvent,
iEvent.clipboardData.getData('text/plain')
);
}).keyup(function (iEvent) {
var iKey = iEvent.which;
if (
(iKey < 48) || (iKey > 105) ||
((iKey > 90) && (iKey < 96)) ||
iEvent.ctrlKey || iEvent.shiftKey || iEvent.altKey
)
return;
TypeBack.call(iEvent.target, iHandler, 'text', iEvent);
});
return this;
};
/* ----- Cross Page Event ----- */
function CrossPageEvent(iType, iSource) {
if (typeof iType == 'string') {
this.type = iType;
this.target = iSource;
} else
$.extend(this, iType);
if (! (iSource instanceof Element)) return;
$.extend(this, $.map(iSource.dataset, function (iValue) {
if (typeof iValue == 'string') try {
return $.parseJSON(iValue);
} catch (iError) { }
return iValue;
}));
}
CrossPageEvent.prototype.valueOf = function () {
var iValue = $.extend({ }, this);
delete iValue.data;
delete iValue.target;
delete iValue.valueOf;
return iValue;
};
var $_BOM = $(BOM);
$.fn.onReply = function (iType, iData, iCallback) {
var iTarget = this[0], $_Source;
if ((iTarget === BOM) || ($.type(iTarget) != 'Window'))
return this;
if (arguments.length == 4) {
$_Source = $(iData);
iData = iCallback;
iCallback = arguments[3];
}
var _Event_ = new CrossPageEvent(iType, ($_Source || { })[0]);
if (typeof iCallback == 'function')
$_BOM.on('message', function (iEvent) {
var iReturn = new CrossPageEvent(
(typeof iEvent.data == 'string') ?
$.parseJSON(iEvent.data) : iEvent.data
);
if (
(iEvent.source === iTarget) &&
(iReturn.type == iType) &&
$.isEqual(iReturn, _Event_)
) {
iCallback.call($_Source ? $_Source[0] : this, iReturn);
$_BOM.off('message', arguments.callee);
}
});
iData = $.extend({data: iData}, _Event_.valueOf());
iTarget.postMessage(
($.browser.msie < 10) ? BOM.JSON.stringify(iData) : iData, '*'
);
};
/* ----- Mouse Wheel Event ----- */
if (! $.browser.mozilla) return;
$_DOM.on('DOMMouseScroll', function (iEvent) {
$(iEvent.target).trigger({
type: 'mousewheel',
wheelDelta: -iEvent.detail * 40
});
});
})(self, self.document, self.iQuery);
/* ---------- DOM/CSS Animation ---------- */
(function (BOM, DOM, $) {
/* ----- Atom Effect ----- */
var Pseudo_Class = $.makeSet([
':link', 'visited', 'hover', 'active', 'focus', 'lang',
'enabled', 'disabled', 'checked',
'first-child', 'last-child', 'first-of-type', 'last-of-type',
'nth-child', 'nth-of-type', 'nth-last-child', 'nth-last-of-type',
'only-child', 'only-of-type', 'empty'
].join(' :').split(' '));
function CSS_Selector_Priority(iSelector) {
var iPriority = [0, 0, 0];
if ( iSelector.match(/\#[^\s>\+~]+/) ) iPriority[0]++ ;
var iPseudo = (iSelector.match(/:[^\s>\+~]+/g) || [ ]);
var pClass = $.map(iPseudo, function () {
if (arguments[0] in Pseudo_Class) return arguments[0];
});
iPriority[1] += (
iSelector.match(/\.[^\s>\+~]+/g) || [ ]
).concat(
iSelector.match(/\[[^\]]+\]/g) || [ ]
).concat(pClass).length;
iPriority[2] += ((
iSelector.match(/[^\#\.\[:]?[^\s>\+~]+/g) || [ ]
).length + (
iPseudo.length - pClass.length
));
return iPriority;
}
function CSS_Rule_Sort(A, B) {
var pA = CSS_Selector_Priority(A.selectorText),
pB = CSS_Selector_Priority(B.selectorText);
for (var i = 0; i < pA.length; i++)
if (pA[i] == pB[i]) continue;
else
return (pA[i] > pB[i]) ? -1 : 1;
return 0;
}
var Tag_Style = { },
$_SandBox = $('<iframe />', {
id: '_iQuery_SandBox_',
style: 'display: none',
src: 'blank.html'
});
$(DOM).ready(function () {
$_SandBox.appendTo( this.body );
});
function Tag_Default_CSS(iTagName) {
var _BOM_ = $_SandBox[0].contentWindow;
if (! Tag_Style[iTagName]) {
var $_Default = $('<' + iTagName + ' />').appendTo(
_BOM_.document.body
);
Tag_Style[iTagName] = $.extend(
{ }, _BOM_.getComputedStyle( $_Default[0] )
);
$_Default.remove();
}
return Tag_Style[iTagName];
}
var Disable_Value = $.makeSet('none', '0', '0px', 'hidden');
function Last_Valid_CSS(iName) {
var iRule = [this[0]].concat(
this.cssRule( iName ).sort( CSS_Rule_Sort ),
{
style: Tag_Default_CSS( this[0].tagName.toLowerCase() )
}
);
for (var i = 0, iValue; i < iRule.length; i++) {
iValue = iRule[i].style[iName];
if (iValue && (! (iValue in Disable_Value)))
return iValue;
}
}
$.fn.extend({
hide: function () {
return this.css('display', function () {
if (arguments[1] != 'none')
$(this).data('_CSS_Display_', arguments[1]);
return 'none';
});
},
show: function () {
return this.each(function () {
var $_This = $(this);
var iStyle = $_This.css(['display', 'visibility', 'opacity']);
if (iStyle.display == 'none')
$_This.css('display', (
$_This.data('_CSS_Display_') ||
Last_Valid_CSS.call($_This, 'display')
));
if (iStyle.visibility == 'hidden')
$_This.css('visibility', 'visible');
if (iStyle.opacity == 0)
$_This.css('opacity', 1);
});
}
});
/* ----- KeyFrame Animation ----- */
var FPS = 60,
Animate_Property = {
scrollLeft: true,
scrollTop: true
};
function KeyFrame(iStart, iEnd, During_Second) {
During_Second = Number(During_Second) || 1;
var iKF = [ ], KF_Sum = FPS * During_Second;
var iStep = (iEnd - iStart) / KF_Sum;
for (var i = 0, KFV = iStart, j = 0; i < KF_Sum; i++) {
KFV += iStep;
iKF[j++] = Number( KFV.toFixed(2) );
}
return iKF;
}
function KeyFrame_Animate(CSS_Final, During_Second, iEasing, iCallback) {
var $_This = this.data('_Animate_', 0);
$.each(CSS_Final, function (iName) {
if (isNaN( Number(this) )) return $_This.css(iName, this);
$_This.data('_Animate_', $_This.data('_Animate_') + 1);
var iSpecial = (iName in Animate_Property);
var iKeyFrame = KeyFrame(
iSpecial ? $_This[iName]() : $_This.css(iName),
this,
During_Second
);
$.every(1 / FPS, function () {
if ($_This.data('_Animate_') && iKeyFrame.length) {
if (iSpecial)
$_This[iName]( iKeyFrame.shift() );
else
$_This.css(iName, iKeyFrame.shift());
} else {
var iCount = $_This.data('_Animate_') - 1;
$_This.data('_Animate_', iCount);
if ((! iCount) && iCallback) iCallback.call( $_This[0] );
return iKeyFrame = false;
}
});
});
return $_This;
}
/* ----- Transition Animation ----- */
var CSS_Prefix = (function (iHash) {
for (var iKey in iHash)
if ( $.browser[iKey] ) return iHash[iKey];
})({
mozilla: 'moz',
webkit: 'webkit',
msie: 'ms'
});
function CSS_AMP() {
return '-' + CSS_Prefix + '-' + arguments[0];
}
var End_Event = 'TransitionEnd';
var Bind_Name = End_Event.toLowerCase() + ' ' + CSS_Prefix + End_Event;
function Transition_Animate() {
var iTransition = [
'all', (arguments[1] + 's'), arguments[2]
].join(' ');
return this.on(Bind_Name, arguments[3])
.css('transition', iTransition).css(
CSS_AMP('transition'), iTransition
)
.css( arguments[0] );
}
$.fn.extend({
animate: function (CSS_Final) {
if (! this[0]) return this;
var iArgs = $.makeArray(arguments).slice(1),
iCSS = Object.getOwnPropertyNames( CSS_Final );
this.data('_CSS_Animate_', function () {
return $.extend(arguments[1], $(this).css(iCSS));
});
return (
(($.browser.msie < 10) || (! $.isEmptyObject(
$.intersect($.makeSet.apply($, iCSS), Animate_Property)
))) ?
KeyFrame_Animate : Transition_Animate
).call(
this,
CSS_Final,
isNaN(Number( iArgs[0] )) ? 0.4 : (iArgs.shift() / 1000),
(typeof iArgs[0] == 'string') ? iArgs.shift() : '',
(typeof iArgs[0] == 'function') && iArgs[0]
);
},
stop: function () {
return this.data('_Animate_', 0);
}
});
/* ----- Animation ShortCut ----- */
$.fn.extend($.map({
fadeIn: {opacity: 1},
fadeOut: {opacity: 0},
slideUp: {
overflow: 'hidden',
height: 0,
padding: 0,
opacity: 0
},
slideDown: {
overflow: 'auto',
height: 'auto',
padding: 'auto',
opacity: 1
}
}, function (CSS_Next) {
return function () {
if (! this[0]) return this;
var $_This = this, CSS_Prev = this.data('_CSS_Animate_');
return this.animate.apply(this, $.merge(
[$.map(CSS_Next, function (iValue, iKey) {
if (iValue == 'auto') {
iValue = (CSS_Prev || { })[iKey];
if ((! iValue) && (iValue !== 0))
iValue = Last_Valid_CSS.call($_This, iKey);
}
return (iValue || (iValue === 0)) ?
iValue : CSS_Next[iKey];
})],
arguments
));
};
}));
$.fn.toggle = function () {
return this[[
['show', 'hide'], ['slideDown', 'slideUp']
][
arguments.length && 1
][
this.height() && 1
]].apply(
this, arguments
);
};
$.fx = {interval: 1000 / FPS};
/* ----- Smooth Scroll ----- */
$.fn.scrollTo = function ($_Target) {
$_Target = $($_Target);
this.has($_Target).each(function () {
var $_Scroll = $(this);
var iCoord = $($.map($_Target, function () {
if ( $.contains($_Scroll[0], arguments[0]) )
return arguments[0];
})).offset(),
_Coord_ = $_Scroll.offset();
if (! $_Scroll.length) return;
$_Scroll.animate({
scrollTop:
$_Scroll.scrollTop() + (iCoord.top - _Coord_.top),
scrollLeft:
$_Scroll.scrollLeft() + (iCoord.left - _Coord_.left)
});
});
return this;
};
})(self, self.document, self.iQuery);
/* ---------- HTTP Client ---------- */
(function (BOM, DOM, $) {
/* ----- XML HTTP Request ----- */
function onLoad(iProperty, iData) {
if (iProperty) $.extend(this, iProperty);
if (! (this.option.crossDomain || (this.readyState == 4)))
return;
var iError = (this.status > 399), iArgs = [this, this.option];
$_DOM.trigger('ajaxComplete', iArgs);
$_DOM.trigger('ajax' + (iError ? 'Error' : 'Success'), iArgs);
if (typeof this.onready != 'function') return;
this.onready(
iData || this.responseAny(), iError ? 'error' : 'success', this
);
}
var Success_State = {
readyState: 4,
status: 200,
statusText: 'OK'
},
$_DOM = $(DOM);
function XD_Request(iData) {
var iOption = this.option;
this.open.call(this, iOption.type, iOption.url, true);
this[this.option.crossDomain ? 'onload' : 'onreadystatechange'] = $.proxy(
onLoad,
this,
(! (this instanceof BOM.XMLHttpRequest)) && Success_State,
null
);
if (iOption.xhrFields) $.extend(this, iOption.xhrFields);
if (! iOption.crossDomain)
iOption.headers = $.extend(iOption.headers || { }, {
'X-Requested-With': 'XMLHttpRequest',
Accept: '*/*'
});
for (var iKey in iOption.headers)
this.setRequestHeader(iKey, iOption.headers[iKey]);
if ((iData instanceof Array) || $.isPlainObject(iData))
iData = $.param(iData);
if ((typeof iData == 'string') || iOption.contentType)
this.setRequestHeader('Content-Type', (
iOption.contentType || 'application/x-www-form-urlencoded'
));
this.option.data = iData;
$_DOM.trigger('ajaxSend', [this, this.option]);
this.send(iData);
return this;
}
var XHR_Extension = {
timeOut: function (iSecond, iCallback) {
var iXHR = this;
$.wait(iSecond, function () {
iXHR[
(iXHR.$_DOM || iXHR.option.crossDomain) ?
'onload' : 'onreadystatechange'
] = null;
iXHR.abort();
iCallback.call(iXHR);
iXHR = null;
});
},
responseAny: function () {
var iContent = this.responseText,
iType = this.responseType || 'text/plain';
switch ( iType.split('/')[1] ) {
case 'plain': ;
case 'json': {
var _Content_ = iContent.trim();
try {
iContent = $.parseJSON(_Content_);
this.responseType = 'application/json';
} catch (iError) {
if ($.browser.msie != 9) try {
if (! $.browser.mozilla)
iContent = $.parseXML(_Content_);
else if (this.responseXML)
iContent = this.responseXML;
else
break;
this.responseType = 'text/xml';
} catch (iError) { }
}
break;
}
case 'xml': iContent = this.responseXML;
}
return iContent;
},
retry: function () {
$.wait(arguments[0], $.proxy(XD_Request, this));
}
};
$.extend(BOM.XMLHttpRequest.prototype, XHR_Extension);
if ($.browser.msie < 10)
$.extend(BOM.XDomainRequest.prototype, XHR_Extension, {
setRequestHeader: function () {
console.warn("IE 8/9 XDR doesn't support Changing HTTP Headers...");
}
});
function X_Domain() {
var iDomain = $.urlDomain( arguments[0] );
return iDomain && (
iDomain != [
BOM.location.protocol, '//', DOM.domain, (
BOM.location.port ? (':' + BOM.location.port) : ''
)
].join('')
);
}
$.ajaxPrefilter = function (iFilter) {
if (typeof iFilter == 'function')
$_DOM.on('ajaxPrefilter', function (iEvent, iXHR) {
iFilter(iXHR.option, iXHR.option, iXHR);
});
};
function beforeOpen(iMethod, iURL, iData) {
this.option = {
type: iMethod.toUpperCase(),
url: iURL,
crossDomain: X_Domain(iURL),
data: iData
};
$_DOM.triggerHandler('ajaxPrefilter', [this]);
}
/* ----- HTML DOM SandBox ----- */
$.fn.sandBox = function () {
var iArgs = $.makeArray(arguments);
var iCallback = (typeof iArgs.slice(-1)[0] == 'function') && iArgs.pop();
var iHTML = $.isSelector(iArgs[0]) ? '' : iArgs.shift();
var iSelector = iArgs[0];
var $_iFrame = this.filter('iframe').eq(0);
if (! $_iFrame.length)
$_iFrame = $('<iframe style="display: none"></iframe>');
$_iFrame.one('load', function () {
var _DOM_ = this.contentWindow.document;
function Frame_Ready() {
if (! (_DOM_.body && _DOM_.body.childNodes.length))
return;
var $_Content = $(iSelector || 'body > *', _DOM_);
if (iCallback && (false === iCallback.call(
$_iFrame[0], $($.merge(
$.makeArray($('head style, head script', _DOM_)),
$_Content[0] ? $_Content : _DOM_.body.childNodes
))
)))
$_iFrame.remove();
return false;
}
if (! iHTML) Frame_Ready();
$.every(0.04, Frame_Ready);
_DOM_.write(iHTML);
_DOM_.close();
}).attr('src', ((! iHTML.match(/<.+?>/)) && iHTML.trim()) || 'about:blank');
return $_iFrame[0].parentNode ? this : $_iFrame.appendTo(DOM.body);
};
/* ----- DOM HTTP Request ----- */
BOM.DOMHttpRequest = function () {
this.status = 0;
this.readyState = 0;
this.responseType = 'text/plain';
};
BOM.DOMHttpRequest.JSONP = { };
$.extend(BOM.DOMHttpRequest.prototype, XHR_Extension, {
open: function (iMethod, iTarget) {
// <script />, JSONP
if (iMethod.match(/^Get$/i)) {
beforeOpen.apply(this, arguments);
this.responseURL = this.option.url;
return;
}
// <iframe />
var $_Form = $(iTarget).submit(function () {
if ( $(this).data('_AJAX_Submitting_') ) return false;
}),
iDHR = this;
beforeOpen.call(this, iMethod, $_Form[0].action);
$_Form[0].action = this.responseURL = this.option.url;
var iTarget = $_Form.attr('target');
if ((! iTarget) || iTarget.match(/^_(top|parent|self|blank)$/i)) {
iTarget = $.uuid('iframe');
$_Form.attr('target', iTarget);
}
$('iframe[name="' + iTarget + '"]').sandBox(function () {
$(this).on('load', function () {
$_Form.data('_AJAX_Submitting_', 0);
if (iDHR.readyState) try {
onLoad.call(iDHR, $.extend({
responseText:
$(this).contents().find('body').text()
}, Success_State));
} catch (iError) { }
});
}).attr('name', iTarget);
this.$_DOM = $_Form;
},
send: function () {
$_DOM.trigger('ajaxSend', [this, this.option]);
if (this.option.type == 'POST')
this.$_DOM.submit(); // <iframe />
else {
// <script />, JSONP
var iURL = this.responseURL.match(/([^\?=&]+\?|\?)?(\w.+)?/);
if (! iURL) throw 'Illegal URL !';
var _UUID_ = $.uuid(), iDHR = this;
BOM.DOMHttpRequest.JSONP[_UUID_] = function () {
if (iDHR.readyState)
onLoad.call(iDHR, Success_State, arguments[0]);
delete this[_UUID_];
iDHR.$_DOM.remove();
};
this.option.data = arguments[0];
this.responseURL = iURL[1] + $.param(
$.extend({ }, arguments[0], $.paramJSON(
'?' + iURL[2].replace(
/(\w+)=\?/, '$1=DOMHttpRequest.JSONP.' + _UUID_
)
))
);
this.$_DOM = $('<script />', {src: this.responseURL})
.appendTo(DOM.head);
}
this.readyState = 1;
},
setRequestHeader: function () {
console.warn("JSONP/iframe doesn't support Changing HTTP Headers...");
},
abort: function () {
this.readyState = 0;
}
});
/* ----- HTTP Wraped Method ----- */
function HTTP_Request(iMethod, iURL, iData, iCallback) {
var iXHR = BOM[
(X_Domain(iURL) && ($.browser.msie < 10)) ? 'XDomainRequest' : 'XMLHttpRequest'
];
if ($.type(iData) == 'HTMLElement') {
var $_Form = $(iData);
iData = { };
if ($_Form[0].tagName.toLowerCase() == 'form') {
if (! $_Form.find('input[type="file"]').length)
iData = $.paramJSON('?' + $_Form.serialize());
else if (! ($.browser.msie < 10))
iData = new FormData($_Form[0]);
else
iXHR = BOM.DOMHttpRequest;
}
}
iXHR = new iXHR();
iXHR.onready = iCallback;
beforeOpen.call(
iXHR, iMethod, ((! iData) && $_Form) ? $_Form : iURL, iData
);
return XD_Request.call(iXHR, iXHR.option.data);
}
var HTTP_Method = $.makeSet('POST', 'PUT', 'DELETE');
for (var iMethod in HTTP_Method)
$[ iMethod.toLowerCase() ] = $.proxy(HTTP_Request, BOM, iMethod);
$.getJSON = $.get = function (iURL, iData, iCallback) {
if (typeof iData == 'function') {
iCallback = iData;
iData = { };
}
// JSONP
if ( iURL.match(/\w+=\?/) ) {
var iDHR = new BOM.DOMHttpRequest();
iDHR.open('GET', iURL);
iDHR.onready = iCallback;
return iDHR.send(iData);
}
// XHR
iData = $.extend($.paramJSON(iURL), iData);
var File_Name = $.fileName(iURL);
if (! $.map($('link[rel="next"], link[rel="prefetch"]'), function () {
if ($.fileName( arguments[0].href ) == File_Name)
return iURL;
}).length)
iData._ = $.now();
return HTTP_Request(
'GET',
(iURL.split('?')[0] + '?' + $.param(iData)).trim('?'),
null,
iCallback
);
};
/* ----- Smart HTML Loading ----- */
$.fn.load = function (iURL, iData, iCallback) {
if (! this[0]) return this;
var $_This = this;
iURL = $.split(iURL.trim(), /\s+/, 2, ' ');
if (typeof iData == 'function') {
iCallback = iData;
iData = null;
}
function Append_Back() {
$_This.children().fadeOut();
var $_Content = $(arguments[0]);
var $_Script = $_Content.filter('script').not('[src]');
arguments[0] = $_Content.not( $_Script )
.appendTo( $_This.empty() ).fadeIn();
for (var i = 0; i < $_Script.length; i++)
$.globalEval( $_Script[i].text );
if (typeof iCallback == 'function')
for (var i = 0; i < $_This.length; i++)
iCallback.apply($_This[i], arguments);
}
function Load_Back(iHTML) {
if (typeof iHTML != 'string') return;
if (! iHTML.match(/<\s*(html|head|body)(\s|>)/i)) {
Append_Back.apply(this, arguments);
return;
}
var _Context_ = [this, $.makeArray(arguments)];
$(DOM.body).sandBox(iHTML, iURL[1], function ($_innerDOM) {
_Context_[1][0] = $_innerDOM;
Append_Back.apply(_Context_[0], _Context_[1]);
return false;
});
}
$[iData ? 'post' : 'get'](iURL[0], iData, Load_Back);
return this;
};
/* ----- Form Element AJAX Submit ----- */
$.fn.ajaxSubmit = function (iCallback) {
if (! this.length) return this;
function AJAX_Submit(iEvent) {
var $_Form = $(this);
if ((! this.checkValidity()) || $_Form.data('_AJAX_Submitting_'))
return false;
$_Form.data('_AJAX_Submitting_', 1);
var iMethod = ($_Form.attr('method') || 'Get').toUpperCase();
if ((iMethod in HTTP_Method) || (iMethod == 'GET'))
$[ iMethod.toLowerCase() ](
this.action,
$.paramJSON('?' + $_Form.serialize()),
function () {
$_Form.data('_AJAX_Submitting_', 0);
iCallback.apply($_Form[0], arguments);
}
);
return false;
}
var $_Form = this.filter('form');
if ( $_Form[0] )
$_Form.submit(AJAX_Submit);
else
this.on('submit', 'form:visible', AJAX_Submit);
return this;
};
})(self, self.document, self.iQuery);
/* ---------- W3C HTML 5 Shim ---------- */
(function (BOM, DOM, $) {
if (! ($.browser.msie < 11)) return;
/* ----- Element Data Set ----- */
function DOMStringMap(iElement) {
for (var i = 0, iAttr; i < iElement.attributes.length; i++) {
iAttr = iElement.attributes[i];
if (iAttr.nodeName.slice(0, 5) == 'data-')
this[ iAttr.nodeName.slice(5).toCamelCase() ] = iAttr.nodeValue;
}
}
Object.defineProperty(Element.prototype, 'dataset', {
get: function () {
return new DOMStringMap(this);
}
});
if (! ($.browser.msie < 10)) return;
/* ----- Error Useful Information ----- */
// Thanks "Kevin Yang" ---
//
// http://www.imkevinyang.com/2010/01/%E8%A7%A3%E6%9E%90ie%E4%B8%AD%E7%9A%84javascript-error%E5%AF%B9%E8%B1%A1.html
Error.prototype.valueOf = function () {
return $.extend(this, {
code: this.number & 0x0FFFF,
helpURL: 'https://msdn.microsoft.com/en-us/library/1dk3k160(VS.85).aspx'
});
};
/* ----- DOM Class List ----- */
function DOMTokenList() {
var iClass = (arguments[0].getAttribute('class') || '').trim().split(/\s+/);
$.extend(this, iClass);
this.length = iClass.length;
}
DOMTokenList.prototype.contains = function (iClass) {
if (iClass.match(/\s+/))
throw new DOMException([
"Failed to execute 'contains' on 'DOMTokenList': The token provided (",
iClass,
") contains HTML space characters, which are not valid in tokens."
].join("'"));
return (Array.prototype.indexOf.call(this, iClass) > -1);
};
Object.defineProperty(Element.prototype, 'classList', {
get: function () {
return new DOMTokenList(this);
}
});
/* ----- History API ----- */
var _BOM_, $_BOM = $(BOM),
_Pushing_, _State_ = [[null, DOM.title, DOM.URL]];
$(DOM).ready(function () {
var iFrame = $('#_iQuery_SandBox_')[0];
_BOM_ = iFrame.contentWindow;
iFrame.onload = function () {
if (_Pushing_) {
_Pushing_ = false;
return;
}
var iState = _State_[ _BOM_.location.search.slice(7) ];
if (! iState) return;
BOM.history.state = iState[0];
DOM.title = iState[1];
$_BOM.trigger({
type: 'popstate',
state: iState[0]
});
};
});
BOM.history.pushState = function (iState, iTitle, iURL) {
for (var iKey in iState)
if (! $.isData(iState[iKey]))
throw ReferenceError("The History State can't be Complex Object !");
if (typeof iTitle != 'string')
throw TypeError("The History State needs a Title String !");
_BOM_.document.title = DOM.title = iTitle;
_Pushing_ = true;
_BOM_.location.search = 'index=' + (_State_.push(arguments) - 1);
};
BOM.history.replaceState = function () {
_State_ = [ ];
this.pushState.apply(this, arguments);
};
})(self, self.document, self.jQuery);
(function (BOM, DOM, $) {
if (! (($.browser.msie < 10) || $.browser.ios))
return;
/* ----- Form API ----- */
function Value_Check() {
var $_This = $(this);
if ((typeof $_This.attr('required') == 'string') && (! this.value))
return false;
var iRegEx = $_This.attr('pattern');
if (iRegEx) try {
return RegExp(iRegEx).test(this.value);
} catch (iError) { }
if ((this.tagName.toLowerCase() == 'input') && (this.type == 'number')) {
var iNumber = Number(this.value),
iMin = Number( $_This.attr('min') );
if (
isNaN(iNumber) ||
(iNumber < iMin) ||
(iNumber > Number( $_This.attr('max') )) ||
((iNumber - iMin) % Number( $_This.attr('step') ))
)
return false;
}
return true;
}
HTMLInputElement.prototype.checkValidity = Value_Check;
HTMLSelectElement.prototype.checkValidity = Value_Check;
HTMLTextAreaElement.prototype.checkValidity = Value_Check;
HTMLFormElement.prototype.checkValidity = function () {
var $_Input = $('*[name]:input', this);
for (var i = 0; i < $_Input.length; i++)
if (! $_Input[i].checkValidity())
return false;
return true;
};
})(self, self.document, self.iQuery);
//
// >>> EasyImport.js <<<
//
//
// [Version] v1.2 (2016-04-06) Stable
//
// (Modern & Mobile Edition)
//
// [Usage] A Asynchronous & Responsive Loader
// for Resource File in Web Browser.
//
//
// (C)2013-2016 SCU FYclub-RDD
//
(function (BOM, DOM, $) {
/* ----------- Standard Mode Meta Patches ----------- */
var $_Meta = [ ], $_Head = $('head');
if ($.browser.mobile)
$_Meta.push(
$('<meta />', {
name: "viewport",
content: [
'width' + '=' + (
BOM.navigator.userAgent.match(
/MicroMessenger|UCBrowser|UCWeb/i
) ?
320 : 'device-width'
),
'initial-scale=1.0',
'minimum-scale=1.0',
'maximum-scale=1.0',
'user-scalable=no',
'target-densitydpi=medium-dpi'
].join(',')
})[0]
);
if ($.browser.msie)
$_Meta.push(
$('<meta />', {
'http-equiv': 'X-UA-Compatible',
content: 'IE=Edge, Chrome=1'
})[0]
);
$_Meta = $($_Meta);
if (! $('head meta').slice(-1).after($_Meta).length)
$_Head.find('link, title, script').eq(0).before($_Meta);
/* ---------- Loading Queue ---------- */
var Root_Path = (function ($_Script) {
for (var i = 0, iPath; i < $_Script.length; i++) {
iPath = $_Script[i].src.match(
/(.+)[^\/]*EasyImport[^\/]*\.js[^\/]*$/i
);
if (iPath) return iPath[1];
}
})( $('head > script') );
function Queue_Filter(iList) {
for (var i = 0, _Group_; i < iList.length; i++) {
_Group_ = iList[i];
if (typeof _Group_ == 'string') {
iList[i] = { };
iList[i][_Group_] = true;
}
if ($.isPlainObject( iList[i] )) {
_Group_ = [ ];
for (var iScript in iList[i])
if ( iList[i][iScript] ) _Group_.push(iScript);
iList[i] = _Group_;
}
for (var j = 0; j < _Group_.length; j++)
if (! _Group_[j].match(/^(\w+:)?\/\//))
_Group_[j] = Root_Path + _Group_[j];
}
return iList;
}
/* ---------- DOM Cache ---------- */
var $_Script = $('<script />', {
type: 'text/javascript',
charset: 'UTF-8',
'class': 'EasyImport'
}),
$_BOM = $(BOM), $_DOM = $(DOM);
/* ---------- DOM Load-Engine ---------- */
function DOM_Load(iOrder, iFinal) {
if (! iOrder[0]) {
iFinal();
return;
}
var This_Call = arguments;
if ((! iOrder[1]) && (this !== DOM)) {
$_DOM.ready(function () {
This_Call.callee.apply(this, This_Call);
});
return;
}
var This_Group = 0;
function _Next_() {
if ( iOrder[0][++This_Group] ) return;
if (typeof this != 'function')
$(this).data('Load_During', $.end( $.fileName(this.src) ));
iOrder.shift();
This_Call.callee.apply(this, This_Call);
}
for (var i = 0, iScript; (iOrder[0] && (i < iOrder[0].length)); i++) {
iScript = iOrder[0][i];
$_Head.trigger({
type: 'loading',
detail: 0,
data: 'Web Loading ...'
});
if (typeof iScript == 'function') {
iScript();
_Next_.call(iScript);
continue;
}
$_Script.clone().one('load', _Next_)
.attr('src', iScript).appendTo($_Head);
$.start( $.fileName(iScript) );
}
}
/* ----------- Open API ----------- */
var Load_Times = 0;
function Load_End() {
$(DOM.body).trigger({
type: 'loading',
detail: 1
});
if ( Load_Times++ ) return;
var iTimer = (! $.browser.ios) && BOM.performance.timing;
var Async_Time = (! iTimer) ? $.end('DOM_Ready') : (
(iTimer.domContentLoadedEventEnd - iTimer.navigationStart) / 1000
),
Sync_Time = $_DOM.data('Load_During');
$('head > script.EasyImport').each(function () {
Sync_Time += $(this).data('Load_During') || 0;
});
console.info([
'[ EasyImport.js ] Time Statistics',
' Async Sum: ' + Async_Time.toFixed(3) + ' s',
' Sync Sum: ' + Sync_Time.toFixed(3) + ' s',
' Saving: ' + (
((Sync_Time - Async_Time) / Sync_Time) * 100
).toFixed(2) + ' %'
].join("\n\n"));
}
BOM.ImportJS = function () {
var Func_Args = $.makeArray(arguments),
JS_List, CallBack;
Root_Path = (typeof Func_Args[0] == 'string') ?
Func_Args.shift() : Root_Path;
if (Func_Args[0] instanceof Array)
JS_List = Func_Args.shift();
else
throw "Format of Importing List isn't currect !";
CallBack = (typeof Func_Args[0] == 'function') ?
Func_Args.shift() : null;
var JS_Item = Queue_Filter(JS_List);
if (CallBack) JS_Item.push( [CallBack] );
if (! JS_Item[0].length) return;
DOM_Load(JS_Item, Load_End);
};
/* ----------- Practical Extension ----------- */
/* ----- Lazy Loading v0.2 ----- */
function Scroll_Queue() {
this.$_ViewPort = $(arguments[0] || BOM);
this.vpHeight = this.$_ViewPort.height();
this.count = 0;
this.finish = [ ];
}
Scroll_Queue.prototype.watch = function () {
var _This_ = this, $_DOM = $(this.$_ViewPort[0].document);
this.$_ViewPort.scroll(function () {
var iLazy = _This_[ $_DOM.scrollTop() ];
if (! iLazy) return;
for (var i = 0; i < iLazy.length; i++)
if (
($.inArray(iLazy[i], this.finish) == -1) &&
(false === _This_.onScroll( iLazy[i] ))
) {
this.finish.push( iLazy[i] );
if (--_This_.count == 0)
_This_.$_ViewPort.unbind('scroll', arguments.callee);
}
});
};
Scroll_Queue.prototype.register = function (Item) {
if (! Item) return;
Item = $.likeArray(Item) ? Item : [Item];
if ((! this.count) && Item.length) this.watch();
for (var i = 0, Off_Top, iNO; i < Item.length; i++) {
Off_Top = $(Item[i]).offset().top;
iNO = Math.round(
(Off_Top < this.vpHeight) ? 0 : (Off_Top - this.vpHeight)
);
for (; iNO < Off_Top; iNO++)
if (! this[iNO])
this[iNO] = [ Item[i] ];
else
this[iNO].push( Item[i] );
}
this.count += Item.length;
};
$_DOM.ready(function () {
var iQueue = new Scroll_Queue(), Lazy_Tag = $.makeSet('IMG', 'IFRAME');
iQueue.onScroll = function (iLazy) {
if ( iLazy.dataset.src )
iLazy.src = iLazy.dataset.src;
else
iLazy.style.backgroundImage = iLazy.dataset.background;
};
this.addEventListener('DOMNodeInserted', function () {
var iTarget = arguments[0].target;
if (iTarget.nodeType != 1) return;
if (iTarget.tagName in Lazy_Tag) {
if (! iTarget.dataset.src) return;
} else if (! iTarget.dataset.background)
return;
iQueue.register( iTarget );
});
iQueue.register(
$('img[data-src], iframe[data-src], *[data-background]', this.body)
);
});
/* ----- Remote Error Log v0.2 ----- */
// Thanks "raphealguo" --- http://rapheal.sinaapp.com/2014/11/06/javascript-error-monitor/
var Console_URL = $('head link[rel="console"]').attr('href');
BOM.onerror = function (iMessage, iURL, iLine, iColumn, iError){
if (! Console_URL) return;
$.wait(0, function () {
var iData = {
message: iMessage,
url: iURL,
line: iLine,
column:
iColumn || (BOM.event && BOM.event.errorCharacter) || 0
};
if (iError) iData.stack = String(iError.stack || iError.stacktrace);
$[iData.stack ? 'post' : 'get'](Console_URL, iData);
});
return true;
};
})(self, self.document, self.iQuery);
JavaScript
1
https://gitee.com/Tech_Query/EasyImport.js.git
git@gitee.com:Tech_Query/EasyImport.js.git
Tech_Query
EasyImport.js
EasyImport.js
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891