<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1 +1 @@
-if(typeof fleegix==&quot;undefined&quot;){var fleegix={}}if(typeof $==&quot;undefined&quot;){var $=function(A){return document.getElementById(A)}}var $elem=function(A,E){var C=E||{};var B=document.createElement(A);for(var D in C){B[D]=C[D]}return B};var $text=function(A){return document.createTextNode(A)};fleegix.bind=function(B,A){return function(){B.apply(A,arguments)}};fleegix.extend=function(A,B){return function(){A.apply(this,arguments);A.prototype.constructor.apply(this,arguments);B.apply(this,arguments);this.superClass=A;this.subClass=B}};fleegix.mixin=function(E,C){var B;if(typeof C==&quot;function&quot;){B=new C()}else{B=C}var A={};for(var D in B){if(typeof A[D]==&quot;undefined&quot;||baseObjj[D]!=B[D]){E[D]=B[D]}}return E};fleegix.clone=function(C){if(typeof C==&quot;object&quot;){var A;if(typeof C.constructor==&quot;function&quot;){A=new C.constructor()}else{A={}}for(var B in C){if(typeof C[B]==&quot;object&quot;&amp;&amp;C[B]!==null){A[B]=fleegix.clone(C[B])}else{A[B]=C[B]}}}else{A=C}return A};fleegix.ua=new function(){var C=navigator.userAgent;var A=function(F,G){var E=G.exec(F);if(E&amp;&amp;E.length&gt;1){E=E[1].substr(0,1);if(!isNaN(E)){return parseInt(E)}else{return null}}return null};this.isWebKit=C.indexOf(&quot;AppleWebKit&quot;)&gt;-1;this.isKHTML=C.indexOf(&quot;KHTML&quot;)&gt;-1;this.isGecko=C.indexOf(&quot;Gecko&quot;)&gt;-1&amp;&amp;!this.isWebKit&amp;&amp;!this.isKHTML;this.isOpera=C.indexOf(&quot;Opera&quot;)&gt;-1;this.isChrome=C.indexOf(&quot;Chrome&quot;)&gt;-1;this.isSafari=C.indexOf(&quot;Safari&quot;)&gt;-1&amp;&amp;!this.isChrome;this.isFF=C.indexOf(&quot;Firefox&quot;)&gt;-1||C.indexOf(&quot;Iceweasel&quot;)&gt;-1||C.indexOf(&quot;IceCat&quot;)&gt;-1;this.isFirefox=this.isFF;this.isIE=C.indexOf(&quot;MSIE &quot;)&gt;-1&amp;&amp;!this.isOpera;this.isIPhone=C.indexOf(&quot;iPhone&quot;)&gt;-1;this.isMobile=this.isIPhone||C.indexOf(&quot;Opera Mini&quot;)&gt;-1;this.isMac=C.indexOf(&quot;Mac&quot;)&gt;-1;this.isUnix=C.indexOf(&quot;Linux&quot;)&gt;-1||C.indexOf(&quot;BSD&quot;)&gt;-1||C.indexOf(&quot;SunOS&quot;)&gt;-1;this.isLinux=C.indexOf(&quot;Linux&quot;)&gt;-1;this.isWindows=C.indexOf(&quot;Windows&quot;)&gt;-1||C.indexOf(&quot;Win&quot;);this.majorVersion=null;var B={FF:/Firefox\/([0-9\.]*)/,Safari:/Version\/([0-9\.]*) /,IE:/MSIE ([0-9\.]*);/,Opera:/Opera\/([0-9\.]*) /,Chrome:/Chrome\/([0-9\.]*)/};for(var D in B){if(this[&quot;is&quot;+D]){this.majorVersion=A(C,B[D])}}for(var D in this){fleegix[D]=this[D]}};fleegix.fx=new function(){function B(G,D,H){var F={};var M=0;var I=0;if(D.blindType==&quot;clip&quot;){M=H==&quot;down&quot;?0:G.offsetHeight;I=H==&quot;down&quot;?G.offsetHeight:0;M=[0,G.offsetWidth,M,0];I=[0,G.offsetWidth,I,0];F.props={clip:[M,I]}}else{if(H==&quot;down&quot;){if(D.endHeight){I=D.endHeight}else{G.style.height=&quot;&quot;;var J=document.createElement(&quot;div&quot;);J.position=&quot;absolute&quot;;J.style.top=&quot;-9999999999px&quot;;J.style.left=&quot;-9999999999px&quot;;var K=G.parentNode;var C=K.removeChild(G);J.appendChild(C);document.body.appendChild(J);I=C.offsetHeight;G=J.removeChild(C);var L=document.body.removeChild(J);G.style.height=&quot;0px&quot;;K.appendChild(G)}M=0}else{M=G.offsetHeight;I=0}F.props={height:[M,I]}}for(var E in D){F[E]=D[E]}F.trans=&quot;lightEaseIn&quot;;return new fleegix.fx.Effecter(G,F)}function A(F,E,C){var D=C==&quot;in&quot;?0:100;var H=C==&quot;in&quot;?100:0;var I={props:{opacity:[D,H]},trans:&quot;lightEaseIn&quot;};for(var G in E){I[G]=E[G]}return new fleegix.fx.Effecter(F,I)}this.fadeOut=function(E,D){return A(E,D,&quot;out&quot;);E.style.visibility=&quot;hidden&quot;;var C=this.setCssProp(E,&quot;opacity&quot;,100)};this.fadeIn=function(E,D){var C=this.setCssProp(E,&quot;opacity&quot;,0);E.style.visibility=&quot;visible&quot;;return A(E,D,&quot;in&quot;)};this.blindUp=function(D,C){var E=C||{};E.blindType=E.blindType||&quot;height&quot;;return B(D,E,&quot;up&quot;)};this.blindDown=function(D,C){var E=C||{};E.blindType=E.blindType||&quot;height&quot;;return B(D,E,&quot;down&quot;)};this.setCSSProp=function(D,E,C){if(E==&quot;opacity&quot;){if(document.all){D.style.filter=&quot;alpha(opacity=&quot;+C+&quot;)&quot;}else{var F=C/100;D.style.opacity=F}}else{if(E==&quot;clip&quot;||E.toLowerCase().indexOf(&quot;color&quot;)&gt;-1){D.style[E]=C}else{D.style[E]=document.all?parseInt(C,10)+&quot;px&quot;:C+&quot;px&quot;}}return true};this.setCssProp=this.setCSSProp;this.hexPat=/^[#]{0,1}([\w]{1,2})([\w]{1,2})([\w]{1,2})$/;this.hex2rgb=function(G){var C=[];var F=G.match(this.hexPat);if(F){for(var D=1;D&lt;F.length;D++){var E=F[D];E=E.length==1?E+E:E;C.push(parseInt(E,16))}return C}else{throw (&quot;\&quot;&quot;+G+&quot;\&quot; not a valid hex value.&quot;)}}};fleegix.fx.Effecter=function(B,A){var C=this;this.props=A.props;this.trans=A.trans||&quot;lightEaseIn&quot;;this.duration=A.duration||500;this.fps=30;this.startTime=new Date().getTime();this.timeSpent=0;this.doBeforeStart=A.doBeforeStart||null;this.doAfterFinish=A.doAfterFinish||null;this.autoStart=A.autoStart===false?false:true;if(typeof this.transitions[this.trans]!=&quot;function&quot;){throw (&quot;\&quot;&quot;+this.trans+&quot;\&quot; is not a valid transition.&quot;)}this.start=function(){C.id=setInterval(function(){C.doStep.apply(C,[B])},Math.round(1000/C.fps));if(typeof A.doBeforeStart==&quot;function&quot;){C.doBeforeStart()}};if(this.autoStart){this.start()}return this};fleegix.fx.Effecter.prototype.doStep=function(C){var B=new Date().getTime();var D=this.props;if(B&lt;(this.startTime+this.duration)){this.timeSpent=B-this.startTime;for(var A in D){fleegix.fx.setCSSProp(C,A,this.calcCurrVal(A))}}else{for(var A in D){if(A==&quot;clip&quot;){fleegix.fx.setCSSProp(C,A,&quot;rect(&quot;+D[A][1].join(&quot;px,&quot;)+&quot;px)&quot;)}else{fleegix.fx.setCSSProp(C,A,D[A][1])}}clearInterval(this.id);if(typeof this.doAfterFinish==&quot;function&quot;){this.doAfterFinish()}}};fleegix.fx.Effecter.prototype.calcCurrVal=function(G){var A=this.props[G][0];var F=this.props[G][1];var I=this.transitions[this.trans];var B;var D;var J;var H;var E;if(G.toLowerCase().indexOf(&quot;color&quot;)&gt;-1){B=fleegix.fx.hex2rgb(A);D=fleegix.fx.hex2rgb(F);J=[];for(var C=0;C&lt;B.length;C++){H=B[C];E=D[C];J.push(parseInt(I(this.timeSpent,H,(E-H),this.duration),10))}return&quot;rgb(&quot;+J.join()+&quot;)&quot;}else{if(G==&quot;clip&quot;){B=A;D=F;J=[];for(var C=0;C&lt;B.length;C++){H=B[C];E=D[C];J.push(parseInt(I(this.timeSpent,H,(E-H),this.duration),10))}return&quot;rect(&quot;+J.join(&quot;px,&quot;)+&quot;px)&quot;}else{return I(this.timeSpent,A,(F-A),this.duration)}}};fleegix.fx.Effecter.prototype.transitions={linear:function(B,A,D,C){return D*(B/C)+A},lightEaseIn:function(B,A,D,C){return D*(B/=C)*B+A},lightEaseOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A},lightEaseInOut:function(B,A,D,C){if((B/=C/2)&lt;1){return D/2*B*B+A}return -D/2*((--B)*(B-2)-1)+A},heavyEaseIn:function(B,A,D,C){return D*(B/=C)*B*B+A},heavyEaseOut:function(B,A,D,C){return D*((B=B/C-1)*B*B+1)+A},heavyEaseInOut:function(B,A,D,C){if((B/=C/2)&lt;1){return D/2*B*B*B+A}return D/2*((B-=2)*B*B+2)+A}};fleegix.dom=new function(){var A=function(B){if(document.all){if(document.documentElement&amp;&amp;document.documentElement[&quot;client&quot;+B]){return document.documentElement[&quot;client&quot;+B]}else{return document.body[&quot;client&quot;+B]}}else{return window[&quot;inner&quot;+B]}};this.getViewportWidth=function(){return A(&quot;Width&quot;)};this.getViewportHeight=function(){return A(&quot;Height&quot;)};this.getViewportScrollTop=function(){return window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop||0};this.getViewportScrollLeft=function(){window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft||0};this.center=function(G){var B=G.offsetWidth;var E=G.offsetHeight;var F=fleegix.dom.getViewportWidth();var H=fleegix.dom.getViewportHeight();var D=parseInt((F/2)-(B/2),10);var C=parseInt((H/2)-(E/2),10);C+=document.documentElement.scrollTop;G.style.left=D+&quot;px&quot;;G.style.top=C+&quot;px&quot;;return true};this.getOffset=function(D){var C=function(F){var G=0;var E=0;if(F.offsetParent){do{G+=F.offsetLeft;E+=F.offsetTop}while(F=F.offsetParent)}return{left:G,top:E}};var B=null;if(fleegix.isIE||fleegix.isMoz){B=D.getBoundingClientRect()}else{B=C(D)}return B}};fleegix.url=new function(){var E=this;var D=&quot;\\?|;&quot;;var C=new RegExp(D);var B=new RegExp(&quot;(&quot;+D+&quot;)&quot;);var A=function(L,M,F,I){var K=B.exec(M);var H;var G;var N;var J;var O=&quot;&quot;;if(K&amp;&amp;K.length&gt;0){H=K[0]}if(H){G=E.getBase(M);N=E.getQS(M)}else{N=M}J=E.qsToObject(N,{arrayizeMulti:true});if(L==&quot;set&quot;){J[F]=I}else{delete J[F]}if(G){O=G+H}O+=E.objectToQS(J);return O};this.qsToObject=function(N,H){var F=H||{};var M={};var O=F.arrayizeMulti||false;if(N){var L=N.split(&quot;&amp;&quot;);for(var K=0;K&lt;L.length;K++){var J=L[K].split(&quot;=&quot;);var G=J[0];var I=decodeURIComponent(J[1]);if(typeof M[G]!=&quot;undefined&quot;&amp;&amp;O){if(typeof M[G]==&quot;string&quot;){M[G]=[M[G]]}M[G].push(I)}else{M[G]=I}}}return M};this.objectToQS=function(K,G){var F=G||{};var N=&quot;&quot;;var M=F.stripTags?/&lt;[^&gt;]*&gt;/g:null;for(var H in K){var R=&quot;&quot;;var P=K[H];if(P!=undefined){if(P.length&amp;&amp;typeof P!=&quot;string&quot;){var Q=&quot;&quot;;if(F.collapseMulti){Q=&quot;,&quot;;N+=H+&quot;=&quot;}else{Q=&quot;&amp;&quot;}for(var I=0;I&lt;P.length;I++){R=F.stripTags?P[I].replace(M,&quot;&quot;):P[I];R=(!F.collapseMulti)?H+&quot;=&quot;+encodeURIComponent(R):encodeURIComponent(R);N+=R+Q}N=N.substr(0,N.length-1)}else{R=F.stripTags?P.replace(M,&quot;&quot;):P;N+=H+&quot;=&quot;+encodeURIComponent(R)}N+=&quot;&amp;&quot;}else{if(F.includeEmpty){N+=H+&quot;=&amp;&quot;}}}if(F.deCamelizeParams){if(!fleegix.string){throw new Error(&quot;deCamelize option depends on fleegix.string module.&quot;)}var L=N.split(&quot;&amp;&quot;);var O;N=&quot;&quot;;for(var J=0;J&lt;L.length;J++){O=L[J].split(&quot;=&quot;);if(O[0]){N+=fleegix.string.deCamelize(O[0])+&quot;=&quot;+O[1]+&quot;&amp;&quot;}}}N=N.substr(0,N.length-1);return N};this.objectToQs=this.objectToQS;this.getQSParam=function(L,F,K){var J=null;var I=C.test(L)?E.getQS(L):L;var H=K||{};if(I){var G=E.qsToObject(I,H);J=G[F]}return J};this.getQsParam=this.getQSParam;this.setQSParam=function(H,F,G){return A(&quot;set&quot;,H,F,G)};this.setQsParam=this.setQSParam;this.removeQSParam=function(G,F){return A(&quot;remove&quot;,G,F,null)};this.removeQsParam=this.removeQSParam;this.getQS=function(F){return F.split(C)[1]};this.getQs=this.getQS;this.getBase=function(F){return F.split(C)[0]}};fleegix.uri=new function(){this.getParamHash=fleegix.url.qsToObject;this.getParam=function(A,C){var B=C||fleegix.url.getQS(document.location.href);return fleegix.url.getQSParam(B,A)};this.setParam=function(A,D,C){var B=C||fleegix.url.getQS(document.location.href);return fleegix.url.setQSParam(B,A,D)};this.getQuery=fleegix.url.getQS;this.getBase=fleegix.url.getBase};fleegix.css=new function(){this.addClass=function(B,A){fleegix.css.removeClass(B,A);var C=B.className;C+=&quot; &quot;+A;C=fleegix.string.trim(C);B.className=C};this.removeClass=function(C,B){var D=C.className;var A=&quot;\\b&quot;+B+&quot;\\b&quot;;A=new RegExp(A,&quot;g&quot;);D=D.replace(A,&quot;&quot;);D=D.replace(&quot;  &quot;,&quot; &quot;);D=fleegix.string.trim(D);C.className=D};this.replaceClass=function(B,A,C){this.removeClass(B,A);this.addClass(B,C)}};fleegix.event=new function(){var B=[];var A={};this.compatibilityMode=false;this.listen=function(){var G=arguments[0];var D=arguments[1];var F=this.compatibilityMode;var E={};var H={};if(typeof arguments[2]==&quot;function&quot;){E.method=arguments[2];H=arguments[3]||{}}else{E.context=arguments[2];E.method=arguments[3];H=arguments[4]||{}}if(!G){throw new Error(&quot;fleegix.listen called on an object (&quot;+G+&quot;) that does not exist.&quot;)}if(D==&quot;onmousewheel&quot;){if(window.addEventListener&amp;&amp;typeof G.onmousewheel==&quot;undefined&quot;){G.onmousewheel=null}}var C;if(this.compatibilityMode){if(G[D]&amp;&amp;G._fleegixEventListenReg){C=G._fleegixEventListenReg[D]}else{C=null}}else{C=G[D]?G[D].listenReg:null}if(!C){C={};C.orig={};C.orig.obj=G;C.orig.methName=D;if(G[D]){C.orig.methCode=G[D]}C.after=[];G[D]=function(){var L=F?G._fleegixEventListenReg[D]:G[D].listenReg;if(!L){if(G[&quot;_&quot;+D+&quot;_suppressErrors&quot;]){return false}else{throw new Error(&quot;Cannot execute handlers for &quot;+G+&quot;  \&quot;&quot;+D+&quot;\&quot;. Something (likely another JavaScript library) has removed the fleegix.event.listen handler registry.&quot;)}}var I=[];for(var K=0;K&lt;arguments.length;K++){I.push(arguments[K])}if(L.orig.methCode){L.orig.methCode.apply(L.orig.obj,I)}var M=null;if(G.attachEvent||G.nodeType||G.addEventListener){if(!I.length){try{switch(true){case !!G.ownerDocument:M=G.ownerDocument.parentWindow.event;break;case !!G.documentElement:M=G.documentElement.ownerDocument.parentWindow.event;break;case !!G.event:M=G.event;break;default:M=window.event;break}}catch(O){M=window.event}}else{M=I[0]}if(M){if(typeof M.target==&quot;undefined&quot;){M.target=M.srcElement}if(typeof M.srcElement==&quot;undefined&quot;){M.srcElement=M.target}if(M.type==&quot;DOMMouseScroll&quot;||M.type==&quot;mousewheel&quot;){if(M.wheelDelta){M.delta=M.wheelDelta/120}else{if(M.detail){M.delta=-M.detail/3}}}I[0]=M}}for(var K=0;K&lt;L.after.length;K++){var J=L.after[K];var N=null;var P=null;if(!J.context){N=J.method;P=window}else{N=J.context[J.method];P=J.context}if(typeof N!=&quot;function&quot;){throw (N+&quot; is not an executable function.&quot;)}else{N.apply(P,I)}M=I[0];if(J.stopPropagation){this.stopPropagation(M)}if(J.preventDefault){this.preventDefault(M)}}};if(this.compatibilityMode){if(!G._fleegixEventListenReg){G._fleegixEventListenReg={}}G._fleegixEventListenReg[D]=C}else{G[D].listenReg=C}B.push(C);if(D==&quot;onmousewheel&quot;){if(window.addEventListener){G.addEventListener(&quot;DOMMouseScroll&quot;,G.onmousewheel,false)}}}C.after.push(E);if(this.compatibilityMode){if(!G._fleegixEventListenReg){G._fleegixEventListenReg={}}G._fleegixEventListenReg[D]=C}else{G[D].listenReg=C}};this.unlisten=function(){var H=arguments[0];var E=arguments[1];var D;if(this.compatibilityMode){if(H[E]&amp;&amp;H._fleegixEventListenReg){D=H._fleegixEventListenReg[E]}else{D=null}}else{D=H[E]?H[E].listenReg:null}var C=null;if(!D){return false}for(var F=0;F&lt;D.after.length;F++){var G=D.after[F];if(typeof arguments[2]==&quot;function&quot;){if(G.method==arguments[2]){D.after.splice(F,1);break}}else{if(G.context==arguments[2]&amp;&amp;G.method==arguments[3]){D.after.splice(F,1);break}}}if(this.compatibilityMode){H._fleegixEventListenReg[E]=D}else{H[E].listenReg=D}};this.flush=function(){for(var C=0;C&lt;B.length;C++){var D=B[C];removeObj=D.orig.obj;removeMethod=D.orig.methName;removeObj[removeMethod]=null}};this.subscribe=function(C,D,E){if(!D){return }if(!A[C]){A[C]={};A[C].audience=[]}else{this.unsubscribe(C,D)}A[C].audience.push([D,E])};this.unsubscribe=function(E,D){if(!D){A[E]=null}else{if(A[E]){var F=A[E].audience;for(var C=0;C&lt;F.length;C++){if(F[C][0]==D){F.splice(C,1)}}}}};this.publish=function(F,G){if(A[F]){var H=A[F].audience;for(var D=0;D&lt;H.length;D++){var C=H[D][0];var E=H[D][1];C[E](G)}}};this.getSrcElementByAttribute=function(D,E){var C;if(D.srcElement){C=D.srcElement}else{if(D.target){C=D.target}}if(!C||typeof C[E]==&quot;undefined&quot;){return null}else{while(!C[E]||C.nodeType==3){if(C.parentNode){C=C.parentNode}else{return null}}}return C};this.getSrcElementId=function(D){var C=this.getSrcElementByAttribute(D,&quot;id&quot;)||null;return C.id||null};this.annihilate=function(C){this.stopPropagation(C);this.preventDefault(C)};this.stopPropagation=function(C){if(C.stopPropagation){C.stopPropagation()}else{C.cancelBubble=true}return C};this.preventDefault=function(C){if(C.preventDefault){C.preventDefault()}else{C.returnValue=false}return C};this.suppressHandlerErrors=function(D,C){D[&quot;_&quot;+C+&quot;_suppressErrors&quot;]=true}};fleegix.xhr=new function(){this.maxXhrs=5;this.lastReqId=0;this.debug=false;this.defaultTimeoutSeconds=300;this.useDefaultErrHandlerForSync=true;this.responseFormats={TXT:&quot;text&quot;,XML:&quot;xml&quot;,OBJ:&quot;object&quot;};this.get=function(){var X={};var S=null;var U=Array.prototype.slice.apply(arguments);if(typeof U[0]==&quot;function&quot;){X.async=true;S=U.shift()}else{X.async=false}var T=U.shift();if(typeof U[0]==&quot;object&quot;){var V=U.shift();for(var W in V){X[W]=V[W]}}else{X.responseFormat=U.shift()||&quot;text&quot;}X.handleSuccess=S;X.url=T;return this.doReq(X)};this.doGet=function(){return this.get.apply(this,arguments)};this.post=function(){var Y={};var S=null;var U=Array.prototype.slice.apply(arguments);if(typeof U[0]==&quot;function&quot;){Y.async=true;S=U.shift()}else{Y.async=false}var T=U.shift();var W=U.shift();if(typeof U[0]==&quot;object&quot;){var V=U.shift();for(var X in V){Y[X]=V[X]}}else{Y.responseFormat=U.shift()||&quot;text&quot;}Y.handleSuccess=S;Y.url=T;Y.data=W;Y.method=&quot;POST&quot;;return this.doReq(Y)};this.doPost=function(){return this.post.apply(this,arguments)};this.doReq=function(S){return this.send(S)};this.send=function(W){var T=W||{};var S=new fleegix.xhr.Request();var V=null;for(var U in T){if(T.hasOwnProperty(U)){S[U]=T[U]}}S.method=S.method.toUpperCase();S.id=this.lastReqId;this.lastReqId++;if(S.async){if(K.length){V=K.shift()}else{if(H.length&lt;this.maxXhrs){V=D()}}if(V!==null){G(S,V)}else{if(S.uber){J.unshift(S)}else{J.push(S)}}return S.id}else{return G(S)}};this.abort=function(U){var T=F[U];var S=H[T.xhrId];if(S){S.onreadystatechange=function(){};S.abort();T.aborted=true;O(T);return true}else{return false}};this.isReqSuccessful=function(T){var S=T.status;if(!S){return false}if(document.all&amp;&amp;S==1223){S=204}if((S&gt;199&amp;&amp;S&lt;300)||S==304){return true}else{return false}};var L=this;var Q=null;var M;var H=[];var J=[];var K=[];var F={};var N=[];var C=null;var I=null;var A=null;var D=function(V){var U=0;var T=[&quot;Msxml2.XMLHTTP.6.0&quot;,&quot;MSXML2.XMLHTTP.3.0&quot;,&quot;Microsoft.XMLHTTP&quot;];var S=null;if(window.XMLHttpRequest){S=new XMLHttpRequest()}else{if(window.ActiveXObject){if(Q){S=new ActiveXObject(Q)}else{for(var U=0;U&lt;T.length;U++){try{S=new ActiveXObject(T[U]);Q=T[U];break}catch(X){}}}}}if(S){if(V){return S}else{H.push(S);var W=H.length-1;return W}}else{throw new Error(&quot;Could not create XMLHttpRequest object.&quot;)}};var G=function(b,c){var Y=null;var Z=null;var T=&quot;&quot;;var W=null;if(b.async){Y=c;Z=H[Y];F[b.id]=b;N.unshift(b);b.xhrId=Y}else{if(!C){C=D(true)}Z=C;I=b}if(b.preventCache){var U=new Date().getTime();T=b.url.indexOf(&quot;?&quot;)&gt;-1?b.url+&quot;&amp;preventCache=&quot;+U:b.url+&quot;?preventCache=&quot;+U}else{T=b.url}if(document.all){Z.abort()}if(b.username&amp;&amp;b.password){Z.open(b.method,T,b.async,b.username,b.password)}else{Z.open(b.method,T,b.async)}if(b.mimeType&amp;&amp;navigator.userAgent.indexOf(&quot;MSIE&quot;)==-1){Z.overrideMimeType(b.mimeType)}var V=b.headers;for(var X in V){if(V.hasOwnProperty(X)){Z.setRequestHeader(X,V[X])}}if(b.method==&quot;POST&quot;||b.method==&quot;PUT&quot;){b.data=b.data||b.dataPayload;if(!b.data){b.data=&quot;&quot;}if(!fleegix.isSafari){var S=typeof b.data==&quot;string&quot;?b.data.length:0;Z.setRequestHeader(&quot;Content-Length&quot;,S)}if(typeof b.headers[&quot;Content-Type&quot;]==&quot;undefined&quot;){Z.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded&quot;)}}Z.send(b.data);if(A===null){A=setTimeout(B,10)}if(!b.async){var a=R(Z,b);I=null;if(N.length){A=setTimeout(B,10)}else{A=null}return a}};var B=function(){var S=N;var X=new Date().getTime();if(I!==null){return }else{for(var U=0;U&lt;S.length;U++){var V=S[U];var T=H[V.xhrId];var W=((X-V.startTime)&gt;(V.timeoutSeconds*1000));switch(true){case (V.aborted||!T.readyState):N.splice(U,1);break;case W:N.splice(U,1);P(V);break;case (T.readyState==4):N.splice(U,1);R.call(L,T,V);break}}}clearTimeout(A);if(N.length){A=setTimeout(B,10)}else{A=null}};var R=function(S,T){var V;switch(T.responseFormat){case&quot;xml&quot;:if(T.xmlDocFromResponseText&amp;&amp;typeof fleegix.xml!=&quot;undefined&quot;){V=fleegix.xml.createDoc(S.responseText)}else{V=S.responseXML}break;case&quot;object&quot;:V=S;break;case&quot;text&quot;:default:V=S.responseText;break}if(T.handleAll){T.handleAll(V,T.id)}else{try{switch(true){case L.isReqSuccessful(S):if(T.async){if(!T.handleSuccess){throw new Error(&quot;No response handler defined for this request&quot;)}else{T.handleSuccess(V,T.id)}}else{return V}break;case (S.status==0):if(L.debug){throw new Error(&quot;XMLHttpRequest HTTP status is zero.&quot;)}break;case (S.status==M):if(L.debug){throw new Error(&quot;XMLHttpRequest HTTP status not set.&quot;)}break;default:if(!T.async&amp;&amp;!L.useDefaultErrHandlerForSync){return V}else{if(T.handleErr){T.handleErr(V,T.id)}else{E(S)}}break}}catch(U){throw U}}if(T.async){O(T)}return true};var P=function(S){if(L.abort.apply(L,[S.id])){if(typeof S.handleTimeout==&quot;function&quot;){S.handleTimeout()}else{alert(&quot;XMLHttpRequest to &quot;+S.url+&quot; timed out.&quot;)}}};var O=function(T){delete F[T.id];if(J.length){var S=J.shift();S.startTime=new Date().getTime();G(S,T.xhrId)}else{K.push(T.xhrId)}};var E=function(T){var S;try{S=window.open(&quot;&quot;,&quot;errorWin&quot;);S.document.body.innerHTML=T.responseText}catch(U){alert(&quot;An error occurred, but the error message cannot be displayed because of your browser's pop-up blocker.\nPlease allow pop-ups from this Web site.&quot;)}}};fleegix.xhr.Request=function(){this.id=0;this.xhrId=null;this.url=null;this.status=null;this.statusText=&quot;&quot;;this.method=&quot;GET&quot;;this.async=true;this.data=null;this.readyState=null;this.responseText=null;this.responseXML=null;this.handleSuccess=null;this.handleErr=null;this.handleAll=null;this.handleTimeout=null;this.responseFormat=fleegix.xhr.responseFormats.TXT;this.xmlDocFromResponseText=false;this.mimeType=null;this.username=&quot;&quot;;this.password=&quot;&quot;;this.headers=[];this.preventCache=false;this.startTime=new Date().getTime();this.timeoutSeconds=fleegix.xhr.defaultTimeoutSeconds;this.uber=false;this.aborted=false};fleegix.xhr.Request.prototype.setRequestHeader=function(B,A){this.headers.push(B+&quot;: &quot;+A)};fleegix.json=new function(){var _cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;this.serialize=function(obj){var str=&quot;&quot;;switch(typeof obj){case&quot;object&quot;:switch(true){case obj===null:return&quot;null&quot;;break;case obj instanceof Array:for(var i=0;i&lt;obj.length;i++){if(str){str+=&quot;,&quot;}str+=fleegix.json.serialize(obj[i])}return&quot;[&quot;+str+&quot;]&quot;;break;case (fleegix.isFF&amp;&amp;obj instanceof DOMException):str+=&quot;\&quot;&quot;+obj.toString()+&quot;\&quot;&quot;;break;case typeof obj.toString!=&quot;undefined&quot;:for(var i in obj){if(str){str+=&quot;,&quot;}str+=&quot;\&quot;&quot;+i+&quot;\&quot;:&quot;;if(typeof obj[i]==&quot;undefined&quot;){str+=&quot;\&quot;undefined\&quot;&quot;}else{str+=fleegix.json.serialize(obj[i])}}return&quot;{&quot;+str+&quot;}&quot;;break}return str;case&quot;unknown&quot;:case&quot;undefined&quot;:case&quot;function&quot;:return&quot;\&quot;undefined\&quot;&quot;;case&quot;string&quot;:str+=&quot;\&quot;&quot;+obj.replace(/([&quot;\\])/g,&quot;\\$1&quot;).replace(/\r/g,&quot;&quot;).replace(/\n/g,&quot;\\n&quot;)+&quot;\&quot;&quot;;return str;default:return String(obj)}};this.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&amp;&amp;typeof value===&quot;object&quot;){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}_cx.lastIndex=0;if(_cx.test(text)){text=text.replace(_cx,function(a){return&quot;\\u&quot;+(&quot;0000&quot;+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:[&quot;\\\/bfnrt]|u[0-9a-fA-F]{4})/g,&quot;@&quot;).replace(/&quot;[^&quot;\\\n\r]*&quot;|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,&quot;]&quot;).replace(/(?:^|:|,)(?:\s*\[)+/g,&quot;&quot;))){j=eval(&quot;(&quot;+text+&quot;)&quot;);return typeof reviver===&quot;function&quot;?walk({&quot;&quot;:j},&quot;&quot;):j}throw new SyntaxError(&quot;JSON not parseable.&quot;)}};fleegix.string=new function(){var D=/^\s+/;var A=/\s+$/;var C=/^\s+|\s+$/g;var B={&quot;&amp;&quot;:&quot;&amp;amp;&quot;,&quot;&lt;&quot;:&quot;&amp;lt;&quot;,&quot;&gt;&quot;:&quot;&amp;gt;&quot;,&quot;\&quot;&quot;:&quot;&amp;quot;&quot;,&quot;'&quot;:&quot;&amp;#39;&quot;};var F=function(G){return function(J){s=J;var H,K;for(var I in B){H=G==&quot;to&quot;?I:B[I];K=G==&quot;to&quot;?B[I]:I;s=s.replace(new RegExp(H,&quot;gm&quot;),K)}return s}};var E=function(G){return function(I){var H=&quot;&quot;;for(var J in B){H+=G==&quot;to&quot;?J:B[J];H+=&quot;|&quot;}H=H.substr(0,H.length-1);H=new RegExp(H,&quot;gm&quot;);return H.test(I)}};this.escapeXML=F(&quot;to&quot;);this.unescapeXML=F(&quot;from&quot;);this.needsEscape=E(&quot;to&quot;);this.needsUnescape=E(&quot;from&quot;);this.toArray=function(I){var G=[];for(var H=0;H&lt;I.length;H++){G[H]=I.substr(H,1)}return G};this.reverse=function(G){return this.toArray(G).reverse().join(&quot;&quot;)};this.ltrim=function(I,H){var G=H?new RegExp(&quot;^&quot;+H+&quot;+&quot;):D;return I.replace(G,&quot;&quot;)};this.rtrim=function(I,H){var G=H?new RegExp(H+&quot;+$&quot;):A;return I.replace(G,&quot;&quot;)};this.trim=function(I,H){var G=H?new RegExp(&quot;^&quot;+H+&quot;+|&quot;+H+&quot;+$&quot;,&quot;g&quot;):C;return I.replace(G,&quot;&quot;)};this.lpad=function(J,I,H){var G=J;while(G.length&lt;H){G=I+G}return G};this.rpad=function(J,I,H){var G=J;while(G.length&lt;H){G=G+I}return G};this.toLowerCaseWithUnderscores=function(G){return G.replace(/([A-Z]+)/g,&quot;_$1&quot;).toLowerCase().replace(/^_/,&quot;&quot;)};this.deCamelize=function(G){return this.toLowerCaseWithUnderscores(G)};this.toCamelCase=function(G){return G.replace(/_[a-z]{1}/g,function(H){return H.replace(&quot;_&quot;,&quot;&quot;).toUpperCase()})};this.camelize=function(G){return this.toCamelCase(G)};this.capitalize=function(G){return G.substr(0,1).toUpperCase()+G.substr(1)}};fleegix.cookie=new function(){this.set=function(B,H,E){var A=E||{};var K=&quot;/&quot;;var I=0;var G=0;var F=0;var D=&quot;&quot;;var J=0;if(typeof E==&quot;object&quot;){K=A.path||&quot;/&quot;;I=A.days||0;G=A.hours||0;F=A.minutes||0}else{K=E||&quot;/&quot;}J+=I?I*24*60*60*1000:0;J+=G?G*60*60*1000:0;J+=F?F*60*1000:0;if(J){var C=new Date();C.setTime(C.getTime()+J);D=&quot;; expires=&quot;+C.toGMTString()}else{D=&quot;&quot;}document.cookie=B+&quot;=&quot;+H+D+&quot;; path=&quot;+K};this.get=function(B){var D=B+&quot;=&quot;;var A=document.cookie.split(&quot;;&quot;);for(var C=0;C&lt;A.length;C++){var E=A[C];while(E.charAt(0)==&quot; &quot;){E=E.substring(1,E.length)}if(E.indexOf(D)===0){return E.substring(D.length,E.length)}}return null};this.create=this.set;this.destroy=function(A,C){var B={};B.minutes=-1;if(C){B.path=C}this.set(A,&quot;&quot;,B)}};fleegix.form={};fleegix.form.serialize=function(C,B){var A=fleegix.form.toObject(C,B);if(typeof fleegix.url==&quot;undefined&quot;){throw new Error(&quot;fleegix.form.serialize depends on the fleegix.url module.&quot;)}var D=fleegix.url.objectToQS(A,B);return D};fleegix.form.toObject=function(K,D){var A=D||{};var J={};function H(R,Q){if(R){var P=null;if(typeof R==&quot;string&quot;){P=[];P.push(R)}else{P=R}P.push(Q);return P}else{return Q}}for(var I=0;I&lt;K.elements.length;I++){var F=K.elements[I];if(F.name){var O=F.name.indexOf(&quot;[&quot;);var C=F.name.indexOf(&quot;]&quot;);var N=&quot;&quot;;var B=&quot;&quot;;var M;var E;if(A.hierarchical&amp;&amp;(O&gt;0)&amp;&amp;(C&gt;2)){N=F.name.substring(0,O);B=F.name.substring(O+1,C);if(typeof J[N]==&quot;undefined&quot;){J[N]={}}M=J[N];E=B}else{M=J;E=F.name}switch(F.type){case&quot;text&quot;:case&quot;hidden&quot;:case&quot;password&quot;:case&quot;textarea&quot;:case&quot;select-one&quot;:M[E]=F.value;break;case&quot;select-multiple&quot;:for(var G=0;G&lt;F.options.length;G++){var L=F.options[G];if(L.selected){M[E]=H(M[E],L.value)}}break;case&quot;radio&quot;:if(F.checked){M[E]=F.value}break;case&quot;checkbox&quot;:if(F.checked){M[E]=H(M[E],F.value)}break;case&quot;submit&quot;:case&quot;reset&quot;:case&quot;file&quot;:case&quot;image&quot;:case&quot;button&quot;:if(A.pedantic){M[E]=F.value}break}}}return J};fleegix.form.toHash=fleegix.form.toObject
\ No newline at end of file
+if(typeof fleegix==&quot;undefined&quot;){var fleegix={}}if(typeof $==&quot;undefined&quot;){var $=function(A){return document.getElementById(A)}}var $elem=function(A,E){var C=E||{};var B=document.createElement(A);for(var D in C){B[D]=C[D]}return B};var $text=function(A){return document.createTextNode(A)};fleegix.bind=function(B,A){return function(){B.apply(A,arguments)}};fleegix.extend=function(A,B){return function(){A.apply(this,arguments);A.prototype.constructor.apply(this,arguments);B.apply(this,arguments);this.superClass=A;this.subClass=B}};fleegix.mixin=function(E,C){var B;if(typeof C==&quot;function&quot;){B=new C()}else{B=C}var A={};for(var D in B){if(typeof A[D]==&quot;undefined&quot;||baseObjj[D]!=B[D]){E[D]=B[D]}}return E};fleegix.clone=function(C){if(typeof C==&quot;object&quot;){var A;if(typeof C.constructor==&quot;function&quot;){A=new C.constructor()}else{A={}}for(var B in C){if(typeof C[B]==&quot;object&quot;&amp;&amp;C[B]!==null){A[B]=fleegix.clone(C[B])}else{A[B]=C[B]}}}else{A=C}return A};fleegix.ua=new function(){var C=navigator.userAgent;var A=function(F,G){var E=G.exec(F);if(E&amp;&amp;E.length&gt;1){E=E[1].substr(0,1);if(!isNaN(E)){return parseInt(E)}else{return null}}return null};this.isWebKit=C.indexOf(&quot;AppleWebKit&quot;)&gt;-1;this.isKHTML=C.indexOf(&quot;KHTML&quot;)&gt;-1;this.isGecko=C.indexOf(&quot;Gecko&quot;)&gt;-1&amp;&amp;!this.isWebKit&amp;&amp;!this.isKHTML;this.isOpera=C.indexOf(&quot;Opera&quot;)&gt;-1;this.isChrome=C.indexOf(&quot;Chrome&quot;)&gt;-1;this.isSafari=C.indexOf(&quot;Safari&quot;)&gt;-1&amp;&amp;!this.isChrome;this.isFF=C.indexOf(&quot;Firefox&quot;)&gt;-1||C.indexOf(&quot;Iceweasel&quot;)&gt;-1||C.indexOf(&quot;IceCat&quot;)&gt;-1;this.isFirefox=this.isFF;this.isIE=C.indexOf(&quot;MSIE &quot;)&gt;-1&amp;&amp;!this.isOpera;this.isIPhone=C.indexOf(&quot;iPhone&quot;)&gt;-1;this.isMobile=this.isIPhone||C.indexOf(&quot;Opera Mini&quot;)&gt;-1;this.isMac=C.indexOf(&quot;Mac&quot;)&gt;-1;this.isUnix=C.indexOf(&quot;Linux&quot;)&gt;-1||C.indexOf(&quot;BSD&quot;)&gt;-1||C.indexOf(&quot;SunOS&quot;)&gt;-1;this.isLinux=C.indexOf(&quot;Linux&quot;)&gt;-1;this.isWindows=C.indexOf(&quot;Windows&quot;)&gt;-1||C.indexOf(&quot;Win&quot;);this.majorVersion=null;var B={FF:/Firefox\/([0-9\.]*)/,Safari:/Version\/([0-9\.]*) /,IE:/MSIE ([0-9\.]*);/,Opera:/Opera\/([0-9\.]*) /,Chrome:/Chrome\/([0-9\.]*)/};for(var D in B){if(this[&quot;is&quot;+D]){this.majorVersion=A(C,B[D])}}for(var D in this){fleegix[D]=this[D]}};fleegix.fx=new function(){function B(G,D,H){var F={};var M=0;var I=0;if(D.blindType==&quot;clip&quot;){M=H==&quot;down&quot;?0:G.offsetHeight;I=H==&quot;down&quot;?G.offsetHeight:0;M=[0,G.offsetWidth,M,0];I=[0,G.offsetWidth,I,0];F.props={clip:[M,I]}}else{if(H==&quot;down&quot;){if(D.endHeight){I=D.endHeight}else{G.style.height=&quot;&quot;;var J=document.createElement(&quot;div&quot;);J.position=&quot;absolute&quot;;J.style.top=&quot;-9999999999px&quot;;J.style.left=&quot;-9999999999px&quot;;var K=G.parentNode;var C=K.removeChild(G);J.appendChild(C);document.body.appendChild(J);I=C.offsetHeight;G=J.removeChild(C);var L=document.body.removeChild(J);G.style.height=&quot;0px&quot;;K.appendChild(G)}M=0}else{M=G.offsetHeight;I=0}F.props={height:[M,I]}}for(var E in D){F[E]=D[E]}F.trans=&quot;lightEaseIn&quot;;return new fleegix.fx.Effecter(G,F)}function A(F,E,C){var D=C==&quot;in&quot;?0:100;var H=C==&quot;in&quot;?100:0;var I={props:{opacity:[D,H]},trans:&quot;lightEaseIn&quot;};for(var G in E){I[G]=E[G]}return new fleegix.fx.Effecter(F,I)}this.fadeOut=function(E,D){return A(E,D,&quot;out&quot;);E.style.visibility=&quot;hidden&quot;;var C=this.setCssProp(E,&quot;opacity&quot;,100)};this.fadeIn=function(E,D){var C=this.setCssProp(E,&quot;opacity&quot;,0);E.style.visibility=&quot;visible&quot;;return A(E,D,&quot;in&quot;)};this.blindUp=function(D,C){var E=C||{};E.blindType=E.blindType||&quot;height&quot;;return B(D,E,&quot;up&quot;)};this.blindDown=function(D,C){var E=C||{};E.blindType=E.blindType||&quot;height&quot;;return B(D,E,&quot;down&quot;)};this.setCSSProp=function(D,E,C){if(E==&quot;opacity&quot;){if(document.all){D.style.filter=&quot;alpha(opacity=&quot;+C+&quot;)&quot;}else{var F=C/100;D.style.opacity=F}}else{if(E==&quot;clip&quot;||E.toLowerCase().indexOf(&quot;color&quot;)&gt;-1){D.style[E]=C}else{D.style[E]=document.all?parseInt(C,10)+&quot;px&quot;:C+&quot;px&quot;}}return true};this.setCssProp=this.setCSSProp;this.hexPat=/^[#]{0,1}([\w]{1,2})([\w]{1,2})([\w]{1,2})$/;this.hex2rgb=function(G){var C=[];var F=G.match(this.hexPat);if(F){for(var D=1;D&lt;F.length;D++){var E=F[D];E=E.length==1?E+E:E;C.push(parseInt(E,16))}return C}else{throw (&quot;\&quot;&quot;+G+&quot;\&quot; not a valid hex value.&quot;)}}};fleegix.fx.Effecter=function(B,A){var C=this;this.props=A.props;this.trans=A.trans||&quot;lightEaseIn&quot;;this.duration=A.duration||500;this.fps=30;this.startTime=new Date().getTime();this.timeSpent=0;this.doBeforeStart=A.doBeforeStart||null;this.doAfterFinish=A.doAfterFinish||null;this.autoStart=A.autoStart===false?false:true;if(typeof this.transitions[this.trans]!=&quot;function&quot;){throw (&quot;\&quot;&quot;+this.trans+&quot;\&quot; is not a valid transition.&quot;)}this.start=function(){C.id=setInterval(function(){C.doStep.apply(C,[B])},Math.round(1000/C.fps));if(typeof A.doBeforeStart==&quot;function&quot;){C.doBeforeStart()}};if(this.autoStart){this.start()}return this};fleegix.fx.Effecter.prototype.doStep=function(C){var B=new Date().getTime();var D=this.props;if(B&lt;(this.startTime+this.duration)){this.timeSpent=B-this.startTime;for(var A in D){fleegix.fx.setCSSProp(C,A,this.calcCurrVal(A))}}else{for(var A in D){if(A==&quot;clip&quot;){fleegix.fx.setCSSProp(C,A,&quot;rect(&quot;+D[A][1].join(&quot;px,&quot;)+&quot;px)&quot;)}else{fleegix.fx.setCSSProp(C,A,D[A][1])}}clearInterval(this.id);if(typeof this.doAfterFinish==&quot;function&quot;){this.doAfterFinish()}}};fleegix.fx.Effecter.prototype.calcCurrVal=function(G){var A=this.props[G][0];var F=this.props[G][1];var I=this.transitions[this.trans];var B;var D;var J;var H;var E;if(G.toLowerCase().indexOf(&quot;color&quot;)&gt;-1){B=fleegix.fx.hex2rgb(A);D=fleegix.fx.hex2rgb(F);J=[];for(var C=0;C&lt;B.length;C++){H=B[C];E=D[C];J.push(parseInt(I(this.timeSpent,H,(E-H),this.duration),10))}return&quot;rgb(&quot;+J.join()+&quot;)&quot;}else{if(G==&quot;clip&quot;){B=A;D=F;J=[];for(var C=0;C&lt;B.length;C++){H=B[C];E=D[C];J.push(parseInt(I(this.timeSpent,H,(E-H),this.duration),10))}return&quot;rect(&quot;+J.join(&quot;px,&quot;)+&quot;px)&quot;}else{return I(this.timeSpent,A,(F-A),this.duration)}}};fleegix.fx.Effecter.prototype.transitions={linear:function(B,A,D,C){return D*(B/C)+A},lightEaseIn:function(B,A,D,C){return D*(B/=C)*B+A},lightEaseOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A},lightEaseInOut:function(B,A,D,C){if((B/=C/2)&lt;1){return D/2*B*B+A}return -D/2*((--B)*(B-2)-1)+A},heavyEaseIn:function(B,A,D,C){return D*(B/=C)*B*B+A},heavyEaseOut:function(B,A,D,C){return D*((B=B/C-1)*B*B+1)+A},heavyEaseInOut:function(B,A,D,C){if((B/=C/2)&lt;1){return D/2*B*B*B+A}return D/2*((B-=2)*B*B+2)+A}};fleegix.dom=new function(){var A=function(B){if(document.all){if(document.documentElement&amp;&amp;document.documentElement[&quot;client&quot;+B]){return document.documentElement[&quot;client&quot;+B]}else{return document.body[&quot;client&quot;+B]}}else{return window[&quot;inner&quot;+B]}};this.getViewportWidth=function(){return A(&quot;Width&quot;)};this.getViewportHeight=function(){return A(&quot;Height&quot;)};this.getViewportScrollTop=function(){return window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop||0};this.getViewportScrollLeft=function(){window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft||0};this.center=function(G){var B=G.offsetWidth;var E=G.offsetHeight;var F=fleegix.dom.getViewportWidth();var H=fleegix.dom.getViewportHeight();var D=parseInt((F/2)-(B/2),10);var C=parseInt((H/2)-(E/2),10);C+=document.documentElement.scrollTop;G.style.left=D+&quot;px&quot;;G.style.top=C+&quot;px&quot;;return true};this.getOffset=function(D){var C=function(F){var G=0;var E=0;if(F.offsetParent){do{G+=F.offsetLeft;E+=F.offsetTop}while(F=F.offsetParent)}return{left:G,top:E}};var B=null;if(fleegix.isIE||fleegix.isMoz){B=D.getBoundingClientRect()}else{B=C(D)}return B}};fleegix.url=new function(){var E=this;var D=&quot;\\?|;&quot;;var C=new RegExp(D);var B=new RegExp(&quot;(&quot;+D+&quot;)&quot;);var A=function(L,M,F,I){var K=B.exec(M);var H;var G;var N;var J;var O=&quot;&quot;;if(K&amp;&amp;K.length&gt;0){H=K[0]}if(H){G=E.getBase(M);N=E.getQS(M)}else{N=M}J=E.qsToObject(N,{arrayizeMulti:true});if(L==&quot;set&quot;){J[F]=I}else{delete J[F]}if(G){O=G+H}O+=E.objectToQS(J);return O};this.qsToObject=function(N,H){var F=H||{};var M={};var O=F.arrayizeMulti||false;if(N){var L=N.split(&quot;&amp;&quot;);for(var K=0;K&lt;L.length;K++){var J=L[K].split(&quot;=&quot;);var G=J[0];var I=decodeURIComponent(J[1]);if(typeof M[G]!=&quot;undefined&quot;&amp;&amp;O){if(typeof M[G]==&quot;string&quot;){M[G]=[M[G]]}M[G].push(I)}else{M[G]=I}}}return M};this.objectToQS=function(K,G){var F=G||{};var N=&quot;&quot;;var M=F.stripTags?/&lt;[^&gt;]*&gt;/g:null;for(var H in K){var R=&quot;&quot;;var P=K[H];if(P!=undefined){if(P.length&amp;&amp;typeof P!=&quot;string&quot;){var Q=&quot;&quot;;if(F.collapseMulti){Q=&quot;,&quot;;N+=H+&quot;=&quot;}else{Q=&quot;&amp;&quot;}for(var I=0;I&lt;P.length;I++){R=F.stripTags?P[I].replace(M,&quot;&quot;):P[I];R=(!F.collapseMulti)?H+&quot;=&quot;+encodeURIComponent(R):encodeURIComponent(R);N+=R+Q}N=N.substr(0,N.length-1)}else{R=F.stripTags?P.replace(M,&quot;&quot;):P;N+=H+&quot;=&quot;+encodeURIComponent(R)}N+=&quot;&amp;&quot;}else{if(F.includeEmpty){N+=H+&quot;=&amp;&quot;}}}if(F.deCamelizeParams){if(!fleegix.string){throw new Error(&quot;deCamelize option depends on fleegix.string module.&quot;)}var L=N.split(&quot;&amp;&quot;);var O;N=&quot;&quot;;for(var J=0;J&lt;L.length;J++){O=L[J].split(&quot;=&quot;);if(O[0]){N+=fleegix.string.deCamelize(O[0])+&quot;=&quot;+O[1]+&quot;&amp;&quot;}}}N=N.substr(0,N.length-1);return N};this.objectToQs=this.objectToQS;this.getQSParam=function(L,F,K){var J=null;var I=C.test(L)?E.getQS(L):L;var H=K||{};if(I){var G=E.qsToObject(I,H);J=G[F]}return J};this.getQsParam=this.getQSParam;this.setQSParam=function(H,F,G){return A(&quot;set&quot;,H,F,G)};this.setQsParam=this.setQSParam;this.removeQSParam=function(G,F){return A(&quot;remove&quot;,G,F,null)};this.removeQsParam=this.removeQSParam;this.getQS=function(F){return F.split(C)[1]};this.getQs=this.getQS;this.getBase=function(F){return F.split(C)[0]}};fleegix.uri=new function(){this.getParamHash=fleegix.url.qsToObject;this.getParam=function(A,C){var B=C||fleegix.url.getQS(document.location.href);return fleegix.url.getQSParam(B,A)};this.setParam=function(A,D,C){var B=C||fleegix.url.getQS(document.location.href);return fleegix.url.setQSParam(B,A,D)};this.getQuery=fleegix.url.getQS;this.getBase=fleegix.url.getBase};fleegix.css=new function(){this.addClass=function(B,A){fleegix.css.removeClass(B,A);var C=B.className;C+=&quot; &quot;+A;C=fleegix.string.trim(C);B.className=C};this.removeClass=function(C,B){var D=C.className;var A=&quot;\\b&quot;+B+&quot;\\b&quot;;A=new RegExp(A,&quot;g&quot;);D=D.replace(A,&quot;&quot;);D=D.replace(&quot;  &quot;,&quot; &quot;);D=fleegix.string.trim(D);C.className=D};this.replaceClass=function(B,A,C){this.removeClass(B,A);this.addClass(B,C)}};fleegix.event=new function(){var B=[];var A={};this.compatibilityMode=false;this.listen=function(){var G=arguments[0];var D=arguments[1];var F=this.compatibilityMode;var E={};var H={};if(typeof arguments[2]==&quot;function&quot;){E.method=arguments[2];H=arguments[3]||{}}else{E.context=arguments[2];E.method=arguments[3];H=arguments[4]||{}}if(!G){throw new Error(&quot;fleegix.listen called on an object (&quot;+G+&quot;) that does not exist.&quot;)}if(D==&quot;onmousewheel&quot;){if(window.addEventListener&amp;&amp;typeof G.onmousewheel==&quot;undefined&quot;){G.onmousewheel=null}}var C;if(this.compatibilityMode){if(G[D]&amp;&amp;G._fleegixEventListenReg){C=G._fleegixEventListenReg[D]}else{C=null}}else{C=G[D]?G[D].listenReg:null}if(!C){C={};C.orig={};C.orig.obj=G;C.orig.methName=D;if(G[D]){C.orig.methCode=G[D]}C.after=[];G[D]=function(){var L=F?G._fleegixEventListenReg[D]:G[D].listenReg;if(!L){if(G[&quot;_&quot;+D+&quot;_suppressErrors&quot;]){return false}else{throw new Error(&quot;Cannot execute handlers for &quot;+G+&quot;  \&quot;&quot;+D+&quot;\&quot;. Something (likely another JavaScript library) has removed the fleegix.event.listen handler registry.&quot;)}}var I=[];for(var K=0;K&lt;arguments.length;K++){I.push(arguments[K])}if(L.orig.methCode){L.orig.methCode.apply(L.orig.obj,I)}var M=null;if(G.attachEvent||G.nodeType||G.addEventListener){if(!I.length){try{switch(true){case !!G.ownerDocument:M=G.ownerDocument.parentWindow.event;break;case !!G.documentElement:M=G.documentElement.ownerDocument.parentWindow.event;break;case !!G.event:M=G.event;break;default:M=window.event;break}}catch(O){M=window.event}}else{M=I[0]}if(M){if(typeof M.target==&quot;undefined&quot;){M.target=M.srcElement}if(typeof M.srcElement==&quot;undefined&quot;){M.srcElement=M.target}if(M.type==&quot;DOMMouseScroll&quot;||M.type==&quot;mousewheel&quot;){if(M.wheelDelta){M.delta=M.wheelDelta/120}else{if(M.detail){M.delta=-M.detail/3}}}I[0]=M}}for(var K=0;K&lt;L.after.length;K++){var J=L.after[K];var N=null;var P=null;if(!J.context){N=J.method;P=window}else{N=J.context[J.method];P=J.context}if(typeof N!=&quot;function&quot;){throw (N+&quot; is not an executable function.&quot;)}else{N.apply(P,I)}M=I[0];if(J.stopPropagation){this.stopPropagation(M)}if(J.preventDefault){this.preventDefault(M)}}};if(this.compatibilityMode){if(!G._fleegixEventListenReg){G._fleegixEventListenReg={}}G._fleegixEventListenReg[D]=C}else{G[D].listenReg=C}B.push(C);if(D==&quot;onmousewheel&quot;){if(window.addEventListener){G.addEventListener(&quot;DOMMouseScroll&quot;,G.onmousewheel,false)}}}C.after.push(E);if(this.compatibilityMode){if(!G._fleegixEventListenReg){G._fleegixEventListenReg={}}G._fleegixEventListenReg[D]=C}else{G[D].listenReg=C}};this.unlisten=function(){var H=arguments[0];var E=arguments[1];var D;if(this.compatibilityMode){if(H[E]&amp;&amp;H._fleegixEventListenReg){D=H._fleegixEventListenReg[E]}else{D=null}}else{D=H[E]?H[E].listenReg:null}var C=null;if(!D){return false}for(var F=0;F&lt;D.after.length;F++){var G=D.after[F];if(typeof arguments[2]==&quot;function&quot;){if(G.method==arguments[2]){D.after.splice(F,1);break}}else{if(G.context==arguments[2]&amp;&amp;G.method==arguments[3]){D.after.splice(F,1);break}}}if(this.compatibilityMode){H._fleegixEventListenReg[E]=D}else{H[E].listenReg=D}};this.flush=function(){for(var C=0;C&lt;B.length;C++){var D=B[C];removeObj=D.orig.obj;removeMethod=D.orig.methName;removeObj[removeMethod]=null}};this.subscribe=function(C,D,E){if(!D){return }if(!A[C]){A[C]={};A[C].audience=[]}else{this.unsubscribe(C,D)}A[C].audience.push([D,E])};this.unsubscribe=function(E,D){if(!D){A[E]=null}else{if(A[E]){var F=A[E].audience;for(var C=0;C&lt;F.length;C++){if(F[C][0]==D){F.splice(C,1)}}}}};this.publish=function(F,G){if(A[F]){var H=A[F].audience;for(var D=0;D&lt;H.length;D++){var C=H[D][0];var E=H[D][1];C[E](G)}}};this.getSrcElementByAttribute=function(D,E){var C;if(D.srcElement){C=D.srcElement}else{if(D.target){C=D.target}}if(!C||typeof C[E]==&quot;undefined&quot;){return null}else{while(!C[E]||C.nodeType==3){if(C.parentNode){C=C.parentNode}else{return null}}}return C};this.getSrcElementId=function(D){var C=this.getSrcElementByAttribute(D,&quot;id&quot;)||null;return C.id||null};this.annihilate=function(C){this.stopPropagation(C);this.preventDefault(C)};this.stopPropagation=function(C){if(C.stopPropagation){C.stopPropagation()}else{C.cancelBubble=true}return C};this.preventDefault=function(C){if(C.preventDefault){C.preventDefault()}else{C.returnValue=false}return C};this.suppressHandlerErrors=function(D,C){D[&quot;_&quot;+C+&quot;_suppressErrors&quot;]=true}};fleegix.xhr=new function(){this.maxXhrs=5;this.lastReqId=0;this.debug=false;this.defaultTimeoutSeconds=300;this.useDefaultErrHandlerForSync=true;this.responseFormats={TXT:&quot;text&quot;,XML:&quot;xml&quot;,OBJ:&quot;object&quot;};this.get=function(){var X={};var S=null;var U=Array.prototype.slice.apply(arguments);if(typeof U[0]==&quot;function&quot;){X.async=true;S=U.shift()}else{X.async=false}var T=U.shift();if(typeof U[0]==&quot;object&quot;){var V=U.shift();for(var W in V){X[W]=V[W]}}else{X.responseFormat=U.shift()||&quot;text&quot;}X.handleSuccess=S;X.url=T;return this.doReq(X)};this.doGet=function(){return this.get.apply(this,arguments)};this.post=function(){var Y={};var S=null;var U=Array.prototype.slice.apply(arguments);if(typeof U[0]==&quot;function&quot;){Y.async=true;S=U.shift()}else{Y.async=false}var T=U.shift();var W=U.shift();if(typeof U[0]==&quot;object&quot;){var V=U.shift();for(var X in V){Y[X]=V[X]}}else{Y.responseFormat=U.shift()||&quot;text&quot;}Y.handleSuccess=S;Y.url=T;Y.data=W;Y.method=&quot;POST&quot;;return this.doReq(Y)};this.doPost=function(){return this.post.apply(this,arguments)};this.doReq=function(S){return this.send(S)};this.send=function(W){var T=W||{};var S=new fleegix.xhr.Request();var V=null;for(var U in T){if(T.hasOwnProperty(U)){S[U]=T[U]}}S.method=S.method.toUpperCase();S.id=this.lastReqId;this.lastReqId++;if(S.async){if(K.length){V=K.shift()}else{if(H.length&lt;this.maxXhrs){V=D()}}if(V!==null){G(S,V)}else{if(S.uber){J.unshift(S)}else{J.push(S)}}return S.id}else{return G(S)}};this.abort=function(U){var T=F[U];var S=H[T.xhrId];if(S){S.onreadystatechange=function(){};S.abort();T.aborted=true;O(T);return true}else{return false}};this.isReqSuccessful=function(T){var S=T.status;if(!S){return false}if(document.all&amp;&amp;S==1223){S=204}if((S&gt;199&amp;&amp;S&lt;300)||S==304){return true}else{return false}};var L=this;var Q=null;var M;var H=[];var J=[];var K=[];var F={};var N=[];var C=null;var I=null;var A=null;var D=function(V){var U=0;var T=[&quot;Msxml2.XMLHTTP.6.0&quot;,&quot;MSXML2.XMLHTTP.3.0&quot;,&quot;Microsoft.XMLHTTP&quot;];var S=null;if(window.XMLHttpRequest){S=new XMLHttpRequest()}else{if(window.ActiveXObject){if(Q){S=new ActiveXObject(Q)}else{for(var U=0;U&lt;T.length;U++){try{S=new ActiveXObject(T[U]);Q=T[U];break}catch(X){}}}}}if(S){if(V){return S}else{H.push(S);var W=H.length-1;return W}}else{throw new Error(&quot;Could not create XMLHttpRequest object.&quot;)}};var G=function(b,c){var Y=null;var Z=null;var T=&quot;&quot;;var W=null;if(b.async){Y=c;Z=H[Y];F[b.id]=b;N.unshift(b);b.xhrId=Y}else{if(!C){C=D(true)}Z=C;I=b}if(b.preventCache){var U=new Date().getTime();T=b.url.indexOf(&quot;?&quot;)&gt;-1?b.url+&quot;&amp;preventCache=&quot;+U:b.url+&quot;?preventCache=&quot;+U}else{T=b.url}if(document.all){Z.abort()}if(b.username&amp;&amp;b.password){Z.open(b.method,T,b.async,b.username,b.password)}else{Z.open(b.method,T,b.async)}if(b.mimeType&amp;&amp;navigator.userAgent.indexOf(&quot;MSIE&quot;)==-1){Z.overrideMimeType(b.mimeType)}var V=b.headers;for(var X in V){if(V.hasOwnProperty(X)){Z.setRequestHeader(X,V[X])}}if(b.method==&quot;POST&quot;||b.method==&quot;PUT&quot;){b.data=b.data||b.dataPayload;if(!b.data){b.data=&quot;&quot;}if(!fleegix.isSafari){var S=typeof b.data==&quot;string&quot;?b.data.length:0;Z.setRequestHeader(&quot;Content-Length&quot;,S)}if(typeof b.headers[&quot;Content-Type&quot;]==&quot;undefined&quot;){Z.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded&quot;)}}Z.send(b.data);if(A===null){A=setTimeout(B,10)}if(!b.async){var a=R(Z,b);I=null;if(N.length){A=setTimeout(B,10)}else{A=null}return a}};var B=function(){var S=N;var X=new Date().getTime();if(I!==null){return }else{for(var U=0;U&lt;S.length;U++){var V=S[U];var T=H[V.xhrId];var W=((X-V.startTime)&gt;(V.timeoutSeconds*1000));switch(true){case (V.aborted||!T.readyState):N.splice(U,1);break;case W:N.splice(U,1);P(V);break;case (T.readyState==4):N.splice(U,1);R.call(L,T,V);break}}}clearTimeout(A);if(N.length){A=setTimeout(B,10)}else{A=null}};var R=function(S,T){var V;switch(T.responseFormat){case&quot;xml&quot;:if(T.xmlDocFromResponseText&amp;&amp;typeof fleegix.xml!=&quot;undefined&quot;){V=fleegix.xml.createDoc(S.responseText)}else{V=S.responseXML}break;case&quot;object&quot;:V=S;break;case&quot;text&quot;:default:V=S.responseText;break}if(T.handleAll){T.handleAll(V,T.id)}else{try{switch(true){case L.isReqSuccessful(S):if(T.async){if(!T.handleSuccess){throw new Error(&quot;No response handler defined for this request&quot;)}else{T.handleSuccess(V,T.id)}}else{return V}break;case (S.status==0):if(L.debug){throw new Error(&quot;XMLHttpRequest HTTP status is zero.&quot;)}break;case (S.status==M):if(L.debug){throw new Error(&quot;XMLHttpRequest HTTP status not set.&quot;)}break;default:if(!T.async&amp;&amp;!L.useDefaultErrHandlerForSync){return V}else{if(T.handleErr){T.handleErr(V,T.id)}else{E(S)}}break}}catch(U){throw U}}if(T.async){O(T)}return true};var P=function(S){if(L.abort.apply(L,[S.id])){if(typeof S.handleTimeout==&quot;function&quot;){S.handleTimeout()}else{alert(&quot;XMLHttpRequest to &quot;+S.url+&quot; timed out.&quot;)}}};var O=function(T){delete F[T.id];if(J.length){var S=J.shift();S.startTime=new Date().getTime();G(S,T.xhrId)}else{K.push(T.xhrId)}};var E=function(T){var S;try{S=window.open(&quot;&quot;,&quot;errorWin&quot;);S.document.body.innerHTML=T.responseText}catch(U){alert(&quot;An error occurred, but the error message cannot be displayed because of your browser's pop-up blocker.\nPlease allow pop-ups from this Web site.&quot;)}}};fleegix.xhr.Request=function(){this.id=0;this.xhrId=null;this.url=null;this.status=null;this.statusText=&quot;&quot;;this.method=&quot;GET&quot;;this.async=true;this.data=null;this.readyState=null;this.responseText=null;this.responseXML=null;this.handleSuccess=null;this.handleErr=null;this.handleAll=null;this.handleTimeout=null;this.responseFormat=fleegix.xhr.responseFormats.TXT;this.xmlDocFromResponseText=false;this.mimeType=null;this.username=&quot;&quot;;this.password=&quot;&quot;;this.headers=[];this.preventCache=false;this.startTime=new Date().getTime();this.timeoutSeconds=fleegix.xhr.defaultTimeoutSeconds;this.uber=false;this.aborted=false};fleegix.xhr.Request.prototype.setRequestHeader=function(B,A){this.headers.push(B+&quot;: &quot;+A)};fleegix.json=new function(){var _cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;var _escapable=/[\\\&quot;\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;var _meta={&quot;\b&quot;:&quot;\\b&quot;,&quot;\t&quot;:&quot;\\t&quot;,&quot;\n&quot;:&quot;\\n&quot;,&quot;\f&quot;:&quot;\\f&quot;,&quot;\r&quot;:&quot;\\r&quot;,&quot;\&quot;&quot;:&quot;\\\&quot;&quot;,&quot;\\&quot;:&quot;\\\\&quot;};var _quote=function(str){_escapable.lastIndex=0;return _escapable.test(str)?&quot;\&quot;&quot;+str.replace(_escapable,function(a){var c=_meta[a];return typeof c===&quot;string&quot;?c:&quot;\\u&quot;+(&quot;0000&quot;+a.charCodeAt(0).toString(16)).slice(-4)})+&quot;\&quot;&quot;:&quot;\&quot;&quot;+str+&quot;\&quot;&quot;};this.serialize=function(obj){var str=&quot;&quot;;switch(typeof obj){case&quot;object&quot;:switch(true){case obj===null:return&quot;null&quot;;break;case obj instanceof Array:for(var i=0;i&lt;obj.length;i++){if(str){str+=&quot;,&quot;}str+=fleegix.json.serialize(obj[i])}return&quot;[&quot;+str+&quot;]&quot;;break;case (fleegix.isFF&amp;&amp;obj instanceof DOMException):str+=&quot;\&quot;&quot;+obj.toString()+&quot;\&quot;&quot;;break;case typeof obj.toString!=&quot;undefined&quot;:for(var i in obj){if(str){str+=&quot;,&quot;}str+=&quot;\&quot;&quot;+i+&quot;\&quot;:&quot;;if(typeof obj[i]==&quot;undefined&quot;){str+=&quot;\&quot;undefined\&quot;&quot;}else{str+=fleegix.json.serialize(obj[i])}}return&quot;{&quot;+str+&quot;}&quot;;break}return str;case&quot;unknown&quot;:case&quot;undefined&quot;:case&quot;function&quot;:return&quot;\&quot;undefined\&quot;&quot;;case&quot;string&quot;:str+=_quote(obj);return str;default:return String(obj)}};this.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&amp;&amp;typeof value===&quot;object&quot;){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}_cx.lastIndex=0;if(_cx.test(text)){text=text.replace(_cx,function(a){return&quot;\\u&quot;+(&quot;0000&quot;+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:[&quot;\\\/bfnrt]|u[0-9a-fA-F]{4})/g,&quot;@&quot;).replace(/&quot;[^&quot;\\\n\r]*&quot;|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,&quot;]&quot;).replace(/(?:^|:|,)(?:\s*\[)+/g,&quot;&quot;))){j=eval(&quot;(&quot;+text+&quot;)&quot;);return typeof reviver===&quot;function&quot;?walk({&quot;&quot;:j},&quot;&quot;):j}throw new SyntaxError(&quot;JSON not parseable.&quot;)}};fleegix.string=new function(){var D=/^\s+/;var A=/\s+$/;var C=/^\s+|\s+$/g;var B={&quot;&amp;&quot;:&quot;&amp;amp;&quot;,&quot;&lt;&quot;:&quot;&amp;lt;&quot;,&quot;&gt;&quot;:&quot;&amp;gt;&quot;,&quot;\&quot;&quot;:&quot;&amp;quot;&quot;,&quot;'&quot;:&quot;&amp;#39;&quot;};var F=function(G){return function(J){s=J;var H,K;for(var I in B){H=G==&quot;to&quot;?I:B[I];K=G==&quot;to&quot;?B[I]:I;s=s.replace(new RegExp(H,&quot;gm&quot;),K)}return s}};var E=function(G){return function(I){var H=&quot;&quot;;for(var J in B){H+=G==&quot;to&quot;?J:B[J];H+=&quot;|&quot;}H=H.substr(0,H.length-1);H=new RegExp(H,&quot;gm&quot;);return H.test(I)}};this.escapeXML=F(&quot;to&quot;);this.unescapeXML=F(&quot;from&quot;);this.needsEscape=E(&quot;to&quot;);this.needsUnescape=E(&quot;from&quot;);this.toArray=function(I){var G=[];for(var H=0;H&lt;I.length;H++){G[H]=I.substr(H,1)}return G};this.reverse=function(G){return this.toArray(G).reverse().join(&quot;&quot;)};this.ltrim=function(I,H){var G=H?new RegExp(&quot;^&quot;+H+&quot;+&quot;):D;return I.replace(G,&quot;&quot;)};this.rtrim=function(I,H){var G=H?new RegExp(H+&quot;+$&quot;):A;return I.replace(G,&quot;&quot;)};this.trim=function(I,H){var G=H?new RegExp(&quot;^&quot;+H+&quot;+|&quot;+H+&quot;+$&quot;,&quot;g&quot;):C;return I.replace(G,&quot;&quot;)};this.lpad=function(J,I,H){var G=J;while(G.length&lt;H){G=I+G}return G};this.rpad=function(J,I,H){var G=J;while(G.length&lt;H){G=G+I}return G};this.toLowerCaseWithUnderscores=function(G){return G.replace(/([A-Z]+)/g,&quot;_$1&quot;).toLowerCase().replace(/^_/,&quot;&quot;)};this.deCamelize=function(G){return this.toLowerCaseWithUnderscores(G)};this.toCamelCase=function(G){return G.replace(/_[a-z]{1}/g,function(H){return H.replace(&quot;_&quot;,&quot;&quot;).toUpperCase()})};this.camelize=function(G){return this.toCamelCase(G)};this.capitalize=function(G){return G.substr(0,1).toUpperCase()+G.substr(1)}};fleegix.cookie=new function(){this.set=function(B,H,E){var A=E||{};var K=&quot;/&quot;;var I=0;var G=0;var F=0;var D=&quot;&quot;;var J=0;if(typeof E==&quot;object&quot;){K=A.path||&quot;/&quot;;I=A.days||0;G=A.hours||0;F=A.minutes||0}else{K=E||&quot;/&quot;}J+=I?I*24*60*60*1000:0;J+=G?G*60*60*1000:0;J+=F?F*60*1000:0;if(J){var C=new Date();C.setTime(C.getTime()+J);D=&quot;; expires=&quot;+C.toGMTString()}else{D=&quot;&quot;}document.cookie=B+&quot;=&quot;+H+D+&quot;; path=&quot;+K};this.get=function(B){var D=B+&quot;=&quot;;var A=document.cookie.split(&quot;;&quot;);for(var C=0;C&lt;A.length;C++){var E=A[C];while(E.charAt(0)==&quot; &quot;){E=E.substring(1,E.length)}if(E.indexOf(D)===0){return E.substring(D.length,E.length)}}return null};this.create=this.set;this.destroy=function(A,C){var B={};B.minutes=-1;if(C){B.path=C}this.set(A,&quot;&quot;,B)}};fleegix.form={};fleegix.form.serialize=function(C,B){var A=fleegix.form.toObject(C,B);if(typeof fleegix.url==&quot;undefined&quot;){throw new Error(&quot;fleegix.form.serialize depends on the fleegix.url module.&quot;)}var D=fleegix.url.objectToQS(A,B);return D};fleegix.form.toObject=function(K,D){var A=D||{};var J={};function H(R,Q){if(R){var P=null;if(typeof R==&quot;string&quot;){P=[];P.push(R)}else{P=R}P.push(Q);return P}else{return Q}}for(var I=0;I&lt;K.elements.length;I++){var F=K.elements[I];if(F.name){var O=F.name.indexOf(&quot;[&quot;);var C=F.name.indexOf(&quot;]&quot;);var N=&quot;&quot;;var B=&quot;&quot;;var M;var E;if(A.hierarchical&amp;&amp;(O&gt;0)&amp;&amp;(C&gt;2)){N=F.name.substring(0,O);B=F.name.substring(O+1,C);if(typeof J[N]==&quot;undefined&quot;){J[N]={}}M=J[N];E=B}else{M=J;E=F.name}switch(F.type){case&quot;text&quot;:case&quot;hidden&quot;:case&quot;password&quot;:case&quot;textarea&quot;:case&quot;select-one&quot;:M[E]=F.value;break;case&quot;select-multiple&quot;:for(var G=0;G&lt;F.options.length;G++){var L=F.options[G];if(L.selected){M[E]=H(M[E],L.value)}}break;case&quot;radio&quot;:if(F.checked){M[E]=F.value}break;case&quot;checkbox&quot;:if(F.checked){M[E]=H(M[E],F.value)}break;case&quot;submit&quot;:case&quot;reset&quot;:case&quot;file&quot;:case&quot;image&quot;:case&quot;button&quot;:if(A.pedantic){M[E]=F.value}break}}}return J};fleegix.form.toHash=fleegix.form.toObject
\ No newline at end of file</diff>
      <filename>fleegix.js</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>fleegix.js.gz</filename>
    </modified>
    <modified>
      <diff>@@ -1720,7 +1720,30 @@ fleegix.xhr.Request.prototype.setRequestHeader = function (headerName, headerVal
 
 
 fleegix.json = new function() {
+  // Escaping control chars, etc.
+  // Source:  Crockford's excellent JSON2
+  // http://json.org/json2.js -- License: public domain
   var _cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+  var _escapable = /[\\\&quot;\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+  var _meta = {    // table of character substitutions
+      '\b': '\\b',
+      '\t': '\\t',
+      '\n': '\\n',
+      '\f': '\\f',
+      '\r': '\\r',
+      '&quot;' : '\\&quot;',
+      '\\': '\\\\'
+  };
+  var _quote = function (str) {
+      _escapable.lastIndex = 0;
+      return _escapable.test(str) ?
+        '&quot;' + str.replace(_escapable, function (a) {
+          var c = _meta[a];
+          return typeof c === 'string' ? c :
+              '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '&quot;' :
+        '&quot;' + str + '&quot;';
+  };
   this.serialize = function(obj) {
     var str = '';
     switch (typeof obj) {
@@ -1763,8 +1786,7 @@ fleegix.json = new function() {
       case 'function':
         return '&quot;undefined&quot;';
       case 'string':
-        str += '&quot;' + obj.replace(/([&quot;\\])/g, '\\$1').replace(
-          /\r/g, '').replace(/\n/g, '\\n') + '&quot;';
+        str += _quote(obj);
         return str;
       default:
         return String(obj);</diff>
      <filename>fleegix.js.uncompressed.js</filename>
    </modified>
    <modified>
      <diff>@@ -16,7 +16,30 @@
 */
 if (typeof fleegix == 'undefined') { var fleegix = {}; }
 fleegix.json = new function() {
+  // Escaping control chars, etc.
+  // Source:  Crockford's excellent JSON2
+  // http://json.org/json2.js -- License: public domain
   var _cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+  var _escapable = /[\\\&quot;\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+  var _meta = {    // table of character substitutions
+      '\b': '\\b',
+      '\t': '\\t',
+      '\n': '\\n',
+      '\f': '\\f',
+      '\r': '\\r',
+      '&quot;' : '\\&quot;',
+      '\\': '\\\\'
+  };
+  var _quote = function (str) {
+      _escapable.lastIndex = 0;
+      return _escapable.test(str) ?
+        '&quot;' + str.replace(_escapable, function (a) {
+          var c = _meta[a];
+          return typeof c === 'string' ? c :
+              '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+        }) + '&quot;' :
+        '&quot;' + str + '&quot;';
+  };
   this.serialize = function(obj) {
     var str = '';
     switch (typeof obj) {
@@ -59,8 +82,7 @@ fleegix.json = new function() {
       case 'function':
         return '&quot;undefined&quot;';
       case 'string':
-        str += '&quot;' + obj.replace(/([&quot;\\])/g, '\\$1').replace(
-          /\r/g, '').replace(/\n/g, '\\n') + '&quot;';
+        str += _quote(obj);
         return str;
       default:
         return String(obj);</diff>
      <filename>src/json.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5466a8986aa9fd1d6b19ebd867cf91b7f9f73078</id>
    </parent>
  </parents>
  <author>
    <name>mde</name>
    <email>mde@fleegix.org</email>
  </author>
  <url>http://github.com/mde/fleegix-js-javascript-toolkit/commit/59c117f2e30d6bb050f666e81b5dbaa3452d538b</url>
  <id>59c117f2e30d6bb050f666e81b5dbaa3452d538b</id>
  <committed-date>2009-04-06T18:33:01-07:00</committed-date>
  <authored-date>2009-04-06T18:33:01-07:00</authored-date>
  <message>Fixed escaping of control chars, etc., with proper escape sequences -- code from Crockford's excellent JSON2.</message>
  <tree>e15c7b79540153224bef0150dd420227d00b2dd3</tree>
  <committer>
    <name>mde</name>
    <email>mde@fleegix.org</email>
  </committer>
</commit>
