

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var D=function(H){var I=0;return parseFloat(H.replace(/\./g,function(){return(I++==1)?"":".";}));},G=navigator,F={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:G.cajaVersion,secure:false,os:null},C=navigator&&navigator.userAgent,E=window&&window.location,B=E&&E.href,A;F.secure=B&&(B.toLowerCase().indexOf("https")===0);if(C){if((/windows|win32/i).test(C)){F.os="windows";}else{if((/macintosh/i).test(C)){F.os="macintosh";}}if((/KHTML/).test(C)){F.webkit=1;}A=C.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){F.webkit=D(A[1]);if(/ Mobile\//.test(C)){F.mobile="Apple";}else{A=C.match(/NokiaN[^\/]*/);if(A){F.mobile=A[0];}}A=C.match(/AdobeAIR\/([^\s]*)/);if(A){F.air=A[0];}}if(!F.webkit){A=C.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){F.opera=D(A[1]);A=C.match(/Opera Mini[^;]*/);if(A){F.mobile=A[0];}}else{A=C.match(/MSIE\s([^;]*)/);if(A&&A[1]){F.ie=D(A[1]);}else{A=C.match(/Gecko\/([^\s]*)/);if(A){F.gecko=1;A=C.match(/rv:([^\s\)]*)/);if(A&&A[1]){F.gecko=D(A[1]);}}}}}}return F;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C++){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,A=Object.prototype,H="[object Array]",C="[object Function]",G="[object Object]",E=[],F=["toString","valueOf"],D={isArray:function(I){return A.toString.apply(I)===H;},isBoolean:function(I){return typeof I==="boolean";},isFunction:function(I){return(typeof I==="function")||A.toString.apply(I)===C;},isNull:function(I){return I===null;},isNumber:function(I){return typeof I==="number"&&isFinite(I);},isObject:function(I){return(I&&(typeof I==="object"||B.isFunction(I)))||false;},isString:function(I){return typeof I==="string";},isUndefined:function(I){return typeof I==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(K,J){var I,M,L;for(I=0;I<F.length;I=I+1){M=F[I];L=J[M];if(B.isFunction(L)&&L!=A[M]){K[M]=L;}}}:function(){},extend:function(L,M,K){if(!M||!L){throw new Error("extend failed, please check that "+"all dependencies are included.");}var J=function(){},I;J.prototype=M.prototype;L.prototype=new J();L.prototype.constructor=L;L.superclass=M.prototype;if(M.prototype.constructor==A.constructor){M.prototype.constructor=M;}if(K){for(I in K){if(B.hasOwnProperty(K,I)){L.prototype[I]=K[I];}}B._IEEnumFix(L.prototype,K);}},augmentObject:function(M,L){if(!L||!M){throw new Error("Absorb failed, verify dependencies.");}var I=arguments,K,N,J=I[2];if(J&&J!==true){for(K=2;K<I.length;K=K+1){M[I[K]]=L[I[K]];}}else{for(N in L){if(J||!(N in M)){M[N]=L[N];}}B._IEEnumFix(M,L);}},augmentProto:function(L,K){if(!K||!L){throw new Error("Augment failed, verify dependencies.");}var I=[L.prototype,K.prototype],J;for(J=2;J<arguments.length;J=J+1){I.push(arguments[J]);}B.augmentObject.apply(this,I);},dump:function(I,N){var K,M,P=[],Q="{...}",J="f(){...}",O=", ",L=" => ";if(!B.isObject(I)){return I+"";}else{if(I instanceof Date||("nodeType" in I&&"tagName" in I)){return I;}else{if(B.isFunction(I)){return J;}}}N=(B.isNumber(N))?N:3;if(B.isArray(I)){P.push("[");for(K=0,M=I.length;K<M;K=K+1){if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}if(P.length>1){P.pop();}P.push("]");}else{P.push("{");for(K in I){if(B.hasOwnProperty(I,K)){P.push(K+L);if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}}if(P.length>1){P.pop();}P.push("}");}return P.join("");},substitute:function(Y,J,R){var N,M,L,U,V,X,T=[],K,O="dump",S=" ",I="{",W="}",Q,P;for(;;){N=Y.lastIndexOf(I);if(N<0){break;}M=Y.indexOf(W,N);if(N+1>=M){break;}K=Y.substring(N+1,M);U=K;X=null;L=U.indexOf(S);if(L>-1){X=U.substring(L+1);U=U.substring(0,L);}V=J[U];if(R){V=R(U,V,X);}if(B.isObject(V)){if(B.isArray(V)){V=B.dump(V,parseInt(X,10));}else{X=X||"";Q=X.indexOf(O);if(Q>-1){X=X.substring(4);}P=V.toString();if(P===G||Q>-1){V=B.dump(V,parseInt(X,10));}else{V=P;}}}else{if(!B.isString(V)&&!B.isNumber(V)){V="~-"+T.length+"-~";T[T.length]=K;}}Y=Y.substring(0,N)+V+Y.substring(M+1);}for(N=T.length-1;N>=0;N=N-1){Y=Y.replace(new RegExp("~-"+N+"-~"),"{"+T[N]+"}","g");}return Y;},trim:function(I){try{return I.replace(/^\s+|\s+$/g,"");}catch(J){return I;}},merge:function(){var L={},J=arguments,I=J.length,K;for(K=0;K<I;K=K+1){B.augmentObject(L,J[K],true);}return L;},later:function(P,J,Q,L,M){P=P||0;J=J||{};var K=Q,O=L,N,I;if(B.isString(Q)){K=J[Q];}if(!K){throw new TypeError("method undefined");}if(O&&!B.isArray(O)){O=[L];}N=function(){K.apply(J,O||E);};I=(M)?setInterval(N,P):setTimeout(N,P);return{interval:M,cancel:function(){if(this.interval){clearInterval(I);}else{clearTimeout(I);}}};},isValue:function(I){return(B.isObject(I)||B.isString(I)||B.isNumber(I)||B.isBoolean(I));}};B.hasOwnProperty=(A.hasOwnProperty)?function(I,J){return I&&I.hasOwnProperty(J);}:function(I,J){return !B.isUndefined(I[J])&&I.constructor.prototype[J]!==I[J];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.8.0r4",build:"2449"});


/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){YAHOO.env._id_counter=YAHOO.env._id_counter||0;var E=YAHOO.util,L=YAHOO.lang,m=YAHOO.env.ua,A=YAHOO.lang.trim,d={},h={},N=/^t(?:able|d|h)$/i,X=/color$/i,K=window.document,W=K.documentElement,e="ownerDocument",n="defaultView",v="documentElement",t="compatMode",b="offsetLeft",P="offsetTop",u="offsetParent",Z="parentNode",l="nodeType",C="tagName",O="scrollLeft",i="scrollTop",Q="getBoundingClientRect",w="getComputedStyle",a="currentStyle",M="CSS1Compat",c="BackCompat",g="class",F="className",J="",B=" ",s="(?:^|\\s)",k="(?= |$)",U="g",p="position",f="fixed",V="relative",j="left",o="top",r="medium",q="borderLeftWidth",R="borderTopWidth",D=m.opera,I=m.webkit,H=m.gecko,T=m.ie;E.Dom={CUSTOM_ATTRIBUTES:(!W.hasAttribute)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},DOT_ATTRIBUTES:{},get:function(z){var AB,x,AA,y,Y,G;if(z){if(z[l]||z.item){return z;}if(typeof z==="string"){AB=z;z=K.getElementById(z);G=(z)?z.attributes:null;if(z&&G&&G.id&&G.id.value===AB){return z;}else{if(z&&K.all){z=null;x=K.all[AB];for(y=0,Y=x.length;y<Y;++y){if(x[y].id===AB){return x[y];}}}}return z;}if(YAHOO.util.Element&&z instanceof YAHOO.util.Element){z=z.get("element");}if("length" in z){AA=[];for(y=0,Y=z.length;y<Y;++y){AA[AA.length]=E.Dom.get(z[y]);}return AA;}return z;}return null;},getComputedStyle:function(G,Y){if(window[w]){return G[e][n][w](G,null)[Y];}else{if(G[a]){return E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){return function(G,y){y=(y==="float")?y="cssFloat":E.Dom._toCamel(y);var x=G.style[y],Y;if(!x){Y=G[e][n][w](G,null);if(Y){x=Y[y];}}return x;};}else{if(W[a]){return function(G,y){var x;switch(y){case"opacity":x=100;try{x=G.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(z){try{x=G.filters("alpha").opacity;}catch(Y){}}return x/100;case"float":y="styleFloat";default:y=E.Dom._toCamel(y);x=G[a]?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.Dom.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){switch(x){case"opacity":if(L.isString(Y.style.filter)){Y.style.filter="alpha(opacity="+y*100+")";if(!Y[a]||!Y[a].hasLayout){Y.style.zoom=1;}}break;case"float":x="styleFloat";default:Y.style[x]=y;}}else{}};}else{return function(Y,G){var x=E.Dom._toCamel(G.prop),y=G.val;if(Y){if(x=="float"){x="cssFloat";}Y.style[x]=y;}else{}};}}(),getXY:function(G){return E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getStyle(G,"display")!=="none"&&E.Dom._inDoc(G));},_getXY:function(){if(K[v][Q]){return function(y){var z,Y,AA,AF,AE,AD,AC,G,x,AB=Math.floor,AG=false;if(E.Dom._canPosition(y)){AA=y[Q]();AF=y[e];z=E.Dom.getDocumentScrollLeft(AF);Y=E.Dom.getDocumentScrollTop(AF);AG=[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=2;AD=2;AC=AF[t];if(m.ie===6){if(AC!==c){AE=0;AD=0;}}if((AC===c)){G=S(AF[v],q);x=S(AF[v],R);if(G!==r){AE=parseInt(G,10);}if(x!==r){AD=parseInt(x,10);}}AG[0]-=AE;AG[1]-=AD;}if((Y||z)){AG[0]+=z;AG[1]+=Y;}AG[0]=AB(AG[0]);AG[1]=AB(AG[1]);}else{}return AG;};}else{return function(y){var x,Y,AA,AB,AC,z=false,G=y;if(E.Dom._canPosition(y)){z=[y[b],y[P]];x=E.Dom.getDocumentScrollLeft(y[e]);Y=E.Dom.getDocumentScrollTop(y[e]);AC=((H||m.webkit>519)?true:false);while((G=G[u])){z[0]+=G[b];z[1]+=G[P];if(AC){z=E.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!==f){G=y;while((G=G[Z])&&G[C]){AA=G[i];AB=G[O];if(H&&(E.Dom._getStyle(G,"overflow")!=="visible")){z=E.Dom._calcBorders(G,z);}if(AA||AB){z[0]-=AB;z[1]-=AA;}}z[0]+=x;z[1]+=Y;}else{if(D){z[0]-=x;z[1]-=Y;}else{if(I||H){z[0]+=x;z[1]+=Y;}}}z[0]=Math.floor(z[0]);z[1]=Math.floor(z[1]);}else{}return z;};}}(),getX:function(G){var Y=function(x){return E.Dom.getXY(x)[0];};return E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var Y=function(x){return E.Dom.getXY(x)[1];};return E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var AA=E.Dom._getStyle(G,p),y=E.Dom.setStyle,AD=z.pos,Y=z.noRetry,AB=[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle(G,o),10)],AC,x;if(AA=="static"){AA=V;y(G,p,AA);}AC=E.Dom._getXY(G);if(!AD||AC===false){return false;}if(isNaN(AB[0])){AB[0]=(AA==V)?0:G[b];}if(isNaN(AB[1])){AB[1]=(AA==V)?0:G[P];}if(AD[0]!==null){y(G,j,AD[0]-AC[0]+AB[0]+"px");}if(AD[1]!==null){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=E.Dom._getXY(G);if((AD[0]!==null&&x[0]!=AD[0])||(AD[1]!==null&&x[1]!=AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Dom.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getRegion:function(G){var Y=function(x){var y=false;if(E.Dom._canPosition(x)){y=E.Region.getRegion(x);}else{}return y;};return E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return E.Dom.getViewportWidth();},getClientHeight:function(){return E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x,AD){AF=AF||"*";AC=(AC)?E.Dom.get(AC):null||K;if(!AC){return[];}var Y=[],G=AC.getElementsByTagName(AF),z=E.Dom.hasClass;for(var y=0,AA=G.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=G[y];}}if(AE){E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(Y.exec){G=Y.test(y);}else{G=Y&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return G;},addClass:function(Y,G){return E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var G=false,y;if(x&&Y){y=E.Dom._getAttribute(x,F)||J;if(!E.Dom._hasClass(x,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=true;}}else{}return G;},removeClass:function(Y,G){return E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var Y=false,AA,z,G;if(y&&x){AA=E.Dom._getAttribute(y,F)||J;E.Dom.setAttribute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=E.Dom._getAttribute(y,F);if(AA!==z){E.Dom.setAttribute(y,F,A(z));Y=true;if(E.Dom._getAttribute(y,F)===""){G=(y.hasAttribute&&y.hasAttribute(g))?g:F;
y.removeAttribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});},_replaceClass:function(y,x){var Y,AB,AA,G=false,z;if(y&&x){AB=x.from;AA=x.to;if(!AA){G=false;}else{if(!AB){G=E.Dom._addClass(y,x.to);}else{if(AB!==AA){z=E.Dom._getAttribute(y,F)||J;Y=(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.join(J)));G=true;}}}}else{}return G;},generateId:function(G,x){x=x||"yui-gen";var Y=function(y){if(y&&y.id){return y.id;}var z=x+YAHOO.env._id_counter++;if(y){if(y[e]&&y[e].getElementById(z)){return E.Dom.generateId(y,z+x);}y.id=z;}return z;};return E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:function(Y,x){Y=E.Dom.get(Y);x=E.Dom.get(x);var G=false;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!==x){G=Y.contains(x);}else{if(Y.compareDocumentPosition){G=!!(Y.compareDocumentPosition(x)&16);}}}else{}return G;},inDocument:function(G,Y){return E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var G=false;if(Y&&Y[C]){x=x||Y[e];G=E.Dom.isAncestor(x[v],Y);}else{}return G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=AF||"*";AB=(AB)?E.Dom.get(AB):null||K;if(!AB){return[];}var x=[],G=AB.getElementsByTagName(AF);for(var z=0,AA=G.length;z<AA;++z){if(Y(G[z])){if(AE){x=G[z];break;}else{x[x.length]=G[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return x;},getElementBy:function(x,G,Y){return E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z){var y=[],Y=(z)?AA:window;x=(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB){if(x[C]||x.length===undefined){return AB.call(Y,x,AA);}for(var G=0;G<x.length;++G){y[y.length]=AB.call(Y,x[G],AA);}}else{return false;}return y;},getDocumentHeight:function(){var Y=(K[t]!=M||I)?K.body.scrollHeight:W.scrollHeight,G=Math.max(Y,E.Dom.getViewportHeight());return G;},getDocumentWidth:function(){var Y=(K[t]!=M||I)?K.body.scrollWidth:W.scrollWidth,G=Math.max(Y,E.Dom.getViewportWidth());return G;},getViewportHeight:function(){var G=self.innerHeight,Y=K[t];if((Y||T)&&!D){G=(Y==M)?W.clientHeight:K.body.clientHeight;}return G;},getViewportWidth:function(){var G=self.innerWidth,Y=K[t];if(Y||T){G=(Y==M)?W.clientWidth:K.body.clientWidth;}return G;},getAncestorBy:function(G,Y){while((G=G[Z])){if(E.Dom._testElement(G,Y)){return G;}}return null;},getAncestorByClassName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return E.Dom.hasClass(y,G);};return E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=E.Dom.get(Y);if(!Y){return null;}var x=function(y){return y[C]&&y[C].toUpperCase()==G.toUpperCase();};return E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getPreviousSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=G.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return null;},getNextSibling:function(G){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var Y=(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=E.Dom.get(G);if(!G){return null;}return E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return null;}var Y=(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=E.Dom.get(G);return E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var x=E.Dom.getFirstChildBy(Y,y),G=x?[x]:[];E.Dom.getNextSiblingBy(x,function(z){if(!y||y(z)){G[G.length]=z;}return false;});return G;},getChildren:function(G){G=E.Dom.get(G);if(!G){}return E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=G||K;return Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:function(G){G=G||K;return Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=E.Dom.get(Y);G=E.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return G[Z].insertBefore(Y,G.nextSibling);}else{return G[Z].appendChild(Y);}},getClientRegion:function(){var x=E.Dom.getDocumentScrollTop(),Y=E.Dom.getDocumentScrollLeft(),y=E.Dom.getViewportWidth()+Y,G=E.Dom.getViewportHeight()+x;return new E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){E.Dom.batch(Y,E.Dom._setAttribute,{attr:G,val:x});},_setAttribute:function(x,Y){var G=E.Dom._toCamel(Y.attr),y=Y.val;if(x&&x.setAttribute){if(E.Dom.DOT_ATTRIBUTES[G]){x[G]=y;}else{G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;x.setAttribute(G,y);}}else{}},getAttribute:function(Y,G){return E.Dom.batch(Y,E.Dom._getAttribute,G);},_getAttribute:function(Y,G){var x;G=E.Dom.CUSTOM_ATTRIBUTES[G]||G;if(Y&&Y.getAttribute){x=Y.getAttribute(G,2);}else{}return x;},_toCamel:function(Y){var x=d;function G(y,z){return z.toUpperCase();}return x[Y]||(x[Y]=Y.indexOf("-")===-1?Y:Y.replace(/-([a-z])/gi,G));},_getClassRegex:function(Y){var G;if(Y!==undefined){if(Y.exec){G=Y;}else{G=h[Y];if(!G){Y=Y.replace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=h[Y]=new RegExp(s+Y+k,U);}}}return G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\?\|\[\]\{\}\\])/g},_testElement:function(G,Y){return G&&G[l]==1&&(!Y||Y(G));},_calcBorders:function(x,y){var Y=parseInt(E.Dom[w](x,R),10)||0,G=parseInt(E.Dom[w](x,q),10)||0;if(H){if(N.test(x[C])){Y=0;G=0;}}y[0]+=G;y[1]+=Y;return y;}};var S=E.Dom[w];if(m.opera){E.Dom[w]=function(Y,G){var x=S(Y,G);if(X.test(G)){x=E.Dom.Color.toRGB(x);}return x;};}if(m.webkit){E.Dom[w]=function(Y,G){var x=S(Y,G);if(x==="rgba(0, 0, 0, 0)"){x="transparent";}return x;};}if(m.ie&&m.ie>=8&&K.documentElement.hasAttribute){E.Dom.DOT_ATTRIBUTES.type=true;}})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this.y=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this.x=B;this[0]=B;
this.width=this.right-this.left;this.height=this.bottom-this.top;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top),D=Math.min(this.right,E.right),A=Math.min(this.bottom,E.bottom),B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top),D=Math.max(this.right,E.right),A=Math.max(this.bottom,E.bottom),B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", width: "+this.width+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D),C=F[1],E=F[0]+D.offsetWidth,A=F[1]+D.offsetHeight,B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}YAHOO.util.Point.superclass.constructor.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(function(){var B=YAHOO.util,A="clientTop",F="clientLeft",J="parentNode",K="right",W="hasLayout",I="px",U="opacity",L="auto",D="borderLeftWidth",G="borderTopWidth",P="borderRightWidth",V="borderBottomWidth",S="visible",Q="transparent",N="height",E="width",H="style",T="currentStyle",R=/^width|height$/,O=/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M={get:function(X,Z){var Y="",a=X[T][Z];if(Z===U){Y=B.Dom.getStyle(X,U);}else{if(!a||(a.indexOf&&a.indexOf(I)>-1)){Y=a;}else{if(B.Dom.IE_COMPUTED[Z]){Y=B.Dom.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=B.Dom.IE.ComputedStyle.getPixel(X,Z);}else{Y=a;}}}}return Y;},getOffset:function(Z,e){var b=Z[T][e],X=e.charAt(0).toUpperCase()+e.substr(1),c="offset"+X,Y="pixel"+X,a="",d;if(b==L){d=Z[c];if(d===undefined){a=0;}a=d;if(R.test(e)){Z[H][e]=d;if(Z[c]>d){a=d-(Z[c]-d);}Z[H][e]=L;}}else{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=b;}a=Z[H][Y];}return a+I;},getBorderWidth:function(X,Z){var Y=null;if(!X[T][W]){X[H].zoom=1;}switch(Z){case G:Y=X[A];break;case V:Y=X.offsetHeight-X.clientHeight-X[A];break;case D:Y=X[F];break;case P:Y=X.offsetWidth-X.clientWidth-X[F];break;}return Y+I;},getPixel:function(Y,X){var a=null,b=Y[T][K],Z=Y[T][X];Y[H][K]=Z;a=Y[H].pixelRight;Y[H][K]=b;return a+I;},getMargin:function(Y,X){var Z;if(Y[T][X]==L){Z=0+I;}else{Z=B.Dom.IE.ComputedStyle.getPixel(Y,X);}return Z;},getVisibility:function(Y,X){var Z;while((Z=Y[T])&&Z[X]=="inherit"){Y=Y[J];}return(Z)?Z[X]:S;},getColor:function(Y,X){return B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var Z=Y[T],a=Z[X]||Z.color;return B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C={};C.top=C.right=C.bottom=C.left=C[E]=C[N]=M.getOffset;C.color=M.getColor;C[G]=C[P]=C[V]=C[D]=M.getBorderWidth;C.marginTop=C.marginRight=C.marginBottom=C.marginLeft=M.getMargin;C.visibility=M.getVisibility;C.borderColor=C.borderTopColor=C.borderRightColor=C.borderBottomColor=C.borderLeftColor=M.getBorderColor;B.Dom.IE_COMPUTED=C;B.Dom.IE_ComputedStyle=M;})();(function(){var C="toString",A=parseInt,B=RegExp,D=YAHOO.util;D.Dom.Color={KEYWORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"800000",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",olive:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:function(E){if(!D.Dom.Color.re_RGB.test(E)){E=D.Dom.Color.toHex(E);}if(D.Dom.Color.re_hex.exec(E)){E="rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].join(", ")+")";}return E;},toHex:function(H){H=D.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RGB.exec(H)){var G=(B.$1.length===1)?"0"+B.$1:Number(B.$1),F=(B.$2.length===1)?"0"+B.$2:Number(B.$2),E=(B.$3.length===1)?"0"+B.$3:Number(B.$3);H=[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=H.replace(D.Dom.Color.re_hex3,"$1$1");}if(H!=="transparent"&&H.indexOf("#")<0){H="#"+H;}return H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.util.CustomEvent=function(D,C,B,A,E){this.type=D;this.scope=C||window;this.silent=B;this.fireOnce=E;this.fired=false;this.firedWith=null;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var F="_YUICEOnSubscribe";if(D!==F){this.subscribeEvent=new YAHOO.util.CustomEvent(F,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,D){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,D);}var A=new YAHOO.util.Subscriber(B,C,D);if(this.fireOnce&&this.fired){this.notify(A,this.firedWith);}else{this.subscribers.push(A);}},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var H=[],A=this.subscribers.length;var D=[].slice.call(arguments,0),C=true,F,B=false;if(this.fireOnce){if(this.fired){return true;}else{this.firedWith=D;}}this.fired=true;if(!A&&this.silent){return true;}if(!this.silent){}var E=this.subscribers.slice();for(F=0;F<A;++F){var G=E[F];if(!G){B=true;}else{C=this.notify(G,D);if(false===C){if(!this.silent){}break;}}}return(C!==false);},notify:function(F,C){var B,H=null,E=F.getScope(this.scope),A=YAHOO.util.Event.throwErrors;if(!this.silent){}if(this.signature==YAHOO.util.CustomEvent.FLAT){if(C.length>0){H=C[0];}try{B=F.fn.call(E,H,F.obj);}catch(G){this.lastError=G;if(A){throw G;}}}else{try{B=F.fn.call(E,this.type,C,F.obj);}catch(D){this.lastError=D;if(A){throw D;}}}return B;},unsubscribeAll:function(){var A=this.subscribers.length,B;for(B=A-1;B>-1;B--){this._delete(B);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"context: "+this.scope;}};YAHOO.util.Subscriber=function(A,B,C){this.fn=A;this.obj=YAHOO.lang.isUndefined(B)?null:B;this.overrideContext=C;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.overrideContext){if(this.overrideContext===true){return this.obj;}else{return this.overrideContext;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", overrideContext: "+(this.overrideContext||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var G=false,H=[],J=[],A=0,E=[],B=0,C={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9},D=YAHOO.env.ua.ie,F="focusin",I="focusout";return{POLL_RETRYS:500,POLL_INTERVAL:40,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:D,_interval:null,_dri:null,_specialTypes:{focusin:(D?"focusin":"focus"),focusout:(D?"focusout":"blur")},DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){this._interval=YAHOO.lang.later(this.POLL_INTERVAL,this,this._tryPreloadAttach,null,true);}},onAvailable:function(Q,M,O,P,N){var K=(YAHOO.lang.isString(Q))?[Q]:Q;for(var L=0;L<K.length;L=L+1){E.push({id:K[L],fn:M,obj:O,overrideContext:P,checkReady:N});}A=this.POLL_RETRYS;this.startInterval();},onContentReady:function(N,K,L,M){this.onAvailable(N,K,L,M,true);},onDOMReady:function(){this.DOMReadyEvent.subscribe.apply(this.DOMReadyEvent,arguments);},_addListener:function(M,K,V,P,T,Y){if(!V||!V.call){return false;}if(this._isValidCollection(M)){var W=true;for(var Q=0,S=M.length;Q<S;++Q){W=this.on(M[Q],K,V,P,T)&&W;}return W;}else{if(YAHOO.lang.isString(M)){var O=this.getEl(M);if(O){M=O;}else{this.onAvailable(M,function(){YAHOO.util.Event._addListener(M,K,V,P,T,Y);});return true;}}}if(!M){return false;}if("unload"==K&&P!==this){J[J.length]=[M,K,V,P,T];return true;}var L=M;if(T){if(T===true){L=P;}else{L=T;}}var N=function(Z){return V.call(L,YAHOO.util.Event.getEvent(Z,M),P);};var X=[M,K,V,N,L,P,T,Y];var R=H.length;H[R]=X;try{this._simpleAdd(M,K,N,Y);}catch(U){this.lastError=U;this.removeListener(M,K,V);return false;}return true;},_getType:function(K){return this._specialTypes[K]||K;},addListener:function(M,P,L,N,O){var K=((P==F||P==I)&&!YAHOO.env.ua.ie)?true:false;return this._addListener(M,this._getType(P),L,N,O,K);},addFocusListener:function(L,K,M,N){return this.on(L,F,K,M,N);},removeFocusListener:function(L,K){return this.removeListener(L,F,K);},addBlurListener:function(L,K,M,N){return this.on(L,I,K,M,N);},removeBlurListener:function(L,K){return this.removeListener(L,I,K);},removeListener:function(L,K,R){var M,P,U;K=this._getType(K);if(typeof L=="string"){L=this.getEl(L);}else{if(this._isValidCollection(L)){var S=true;for(M=L.length-1;M>-1;M--){S=(this.removeListener(L[M],K,R)&&S);}return S;}}if(!R||!R.call){return this.purgeElement(L,false,K);}if("unload"==K){for(M=J.length-1;M>-1;M--){U=J[M];if(U&&U[0]==L&&U[1]==K&&U[2]==R){J.splice(M,1);return true;}}return false;}var N=null;var O=arguments[3];if("undefined"===typeof O){O=this._getCacheIndex(H,L,K,R);}if(O>=0){N=H[O];}if(!L||!N){return false;}var T=N[this.CAPTURE]===true?true:false;try{this._simpleRemove(L,K,N[this.WFN],T);}catch(Q){this.lastError=Q;return false;}delete H[O][this.WFN];delete H[O][this.FN];H.splice(O,1);return true;},getTarget:function(M,L){var K=M.target||M.srcElement;return this.resolveTextNode(K);},resolveTextNode:function(L){try{if(L&&3==L.nodeType){return L.parentNode;}}catch(K){}return L;},getPageX:function(L){var K=L.pageX;if(!K&&0!==K){K=L.clientX||0;if(this.isIE){K+=this._getScrollLeft();}}return K;},getPageY:function(K){var L=K.pageY;if(!L&&0!==L){L=K.clientY||0;if(this.isIE){L+=this._getScrollTop();}}return L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;
}else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in C)){K=C[K];}return K;},_getCacheIndex:function(M,P,Q,O){for(var N=0,L=M.length;N<L;N=N+1){var K=M[N];if(K&&K[this.FN]==O&&K[this.EL]==P&&K[this.TYPE]==Q){return N;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+B;++B;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",YAHOO,0,0,1),_load:function(L){if(!G){G=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(E.length===0){A=0;if(this._interval){this._interval.cancel();this._interval=null;}return;}if(this.locked){return;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.locked=true;var Q=!G;if(!Q){Q=(A>0&&E.length>0);}var P=[];var R=function(T,U){var S=T;if(U.overrideContext){if(U.overrideContext===true){S=U.obj;}else{S=U.overrideContext;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=E.length;L<K;L=L+1){O=E[L];if(O){N=this.getEl(O.id);if(N){if(O.checkReady){if(G||N.nextSibling||!Q){M.push(O);E[L]=null;}}else{R(N,O);E[L]=null;}}else{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1){O=M[L];R(this.getEl(O.id),O);}A--;if(Q){for(L=E.length-1;L>-1;L--){O=E[L];if(!O||!O.id){E.splice(L,1);}}this.startInterval();}else{if(this._interval){this._interval.cancel();this._interval=null;}}this.locked=false;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=Q.length-1;N>-1;N--){var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[H,J];}else{if(K==="unload"){L=[J];}else{K=this._getType(K);L=[H];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(R){var L=YAHOO.util.Event,O,N,M,Q,P,S=J.slice(),K;for(O=0,Q=J.length;O<Q;++O){M=S[O];if(M){K=window;if(M[L.ADJ_SCOPE]){if(M[L.ADJ_SCOPE]===true){K=M[L.UNLOAD_OBJ];}else{K=M[L.ADJ_SCOPE];}}M[L.FN].call(K,L.getEvent(R,M[L.EL]),M[L.UNLOAD_OBJ]);S[O]=null;}}M=null;K=null;J=null;if(H){for(N=H.length-1;N>-1;N--){M=H[N];if(M){L.removeListener(M[L.EL],M[L.TYPE],M[L.FN],N);}}M=null;}L._simpleRemove(window,"unload",L._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
if(EU.isIE){if(self!==self.top){document.onreadystatechange=function(){if(document.readyState=="complete"){document.onreadystatechange=null;EU._ready();}};}else{YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,overrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);
},createEvent:function(B,G){this.__yui_events=this.__yui_events||{};var E=G||{},D=this.__yui_events,F;if(D[B]){}else{F=new YAHOO.util.CustomEvent(B,E.scope||this,E.silent,YAHOO.util.CustomEvent.FLAT,E.fireOnce);D[B]=F;if(E.onSubscribeCallback){F.subscribeEvent.subscribe(E.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var A=this.__yui_subscribers[B];if(A){for(var C=0;C<A.length;++C){F.subscribe(A[C].fn,A[C].obj,A[C].overrideContext);}}}return D[B];},fireEvent:function(B){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[B];if(!D){return null;}var A=[];for(var C=1;C<arguments.length;++C){A.push(arguments[C]);}return D.fire.apply(D,A);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};(function(){var A=YAHOO.util.Event,C=YAHOO.lang;YAHOO.util.KeyListener=function(D,I,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=YAHOO.util.KeyListener.KEYDOWN;}var G=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=document.getElementById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.scope,E.correctScope);}function H(O,N){if(!I.shift){I.shift=false;}if(!I.alt){I.alt=false;}if(!I.ctrl){I.ctrl=false;}if(O.shiftKey==I.shift&&O.altKey==I.alt&&O.ctrlKey==I.ctrl){var J,M=I.keys,L;if(YAHOO.lang.isArray(M)){for(var K=0;K<M.length;K++){J=M[K];L=A.getCharCode(O);if(J==L){G.fire(L,O);break;}}}else{L=A.getCharCode(O);if(M==L){G.fire(L,O);}}}}this.enable=function(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(I);}this.enabled=true;};this.disable=function(){if(this.enabled){A.removeListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=false;};this.toString=function(){return"KeyListener ["+I.keys+"] "+D.tagName+(D.id?"["+D.id+"]":"");};};var B=YAHOO.util.KeyListener;B.KEYDOWN="keydown";B.KEYUP="keyup";B.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var l=YAHOO.lang,isFunction=l.isFunction,isObject=l.isObject,isArray=l.isArray,_toStr=Object.prototype.toString,Native=(YAHOO.env.ua.caja?window:this).JSON,_UNICODE_EXCEPTIONS=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,_ESCAPES=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,_VALUES=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,_BRACKETS=/(?:^|:|,)(?:\s*\[)+/g,_UNSAFE=/^[\],:{}\s]*$/,_SPECIAL_CHARS=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,_CHARS={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},UNDEFINED="undefined",OBJECT="object",NULL="null",STRING="string",NUMBER="number",BOOLEAN="boolean",DATE="date",_allowable={"undefined":UNDEFINED,"string":STRING,"[object String]":STRING,"number":NUMBER,"[object Number]":NUMBER,"boolean":BOOLEAN,"[object Boolean]":BOOLEAN,"[object Date]":DATE,"[object RegExp]":OBJECT},EMPTY="",OPEN_O="{",CLOSE_O="}",OPEN_A="[",CLOSE_A="]",COMMA=",",COMMA_CR=",\n",CR="\n",COLON=":",COLON_SP=": ",QUOTE='"';Native=_toStr.call(Native)==="[object JSON]"&&Native;function _char(c){if(!_CHARS[c]){_CHARS[c]="\\u"+("0000"+(+(c.charCodeAt(0))).toString(16)).slice(-4);}return _CHARS[c];}function _revive(data,reviver){var walk=function(o,key){var k,v,value=o[key];if(value&&typeof value==="object"){for(k in value){if(l.hasOwnProperty(value,k)){v=walk(value,k);if(v===undefined){delete value[k];}else{value[k]=v;}}}}return reviver.call(o,key,value);};return typeof reviver==="function"?walk({"":data},""):data;}function _prepare(s){return s.replace(_UNICODE_EXCEPTIONS,_char);}function _isSafe(str){return l.isString(str)&&_UNSAFE.test(str.replace(_ESCAPES,"@").replace(_VALUES,"]").replace(_BRACKETS,""));}function _parse(s,reviver){s=_prepare(s);if(_isSafe(s)){return _revive(eval("("+s+")"),reviver);}throw new SyntaxError("JSON.parse");}function _type(o){var t=typeof o;return _allowable[t]||_allowable[_toStr.call(o)]||(t===OBJECT?(o?OBJECT:NULL):UNDEFINED);}function _string(s){return QUOTE+s.replace(_SPECIAL_CHARS,_char)+QUOTE;}function _indent(s,space){return s.replace(/^/gm,space);}function _stringify(o,w,space){if(o===undefined){return undefined;}var replacer=isFunction(w)?w:null,format=_toStr.call(space).match(/String|Number/)||[],_date=YAHOO.lang.JSON.dateToString,stack=[],tmp,i,len;if(replacer||!isArray(w)){w=undefined;}if(w){tmp={};for(i=0,len=w.length;i<len;++i){tmp[w[i]]=true;}w=tmp;}space=format[0]==="Number"?new Array(Math.min(Math.max(0,space),10)+1).join(" "):(space||EMPTY).slice(0,10);function _serialize(h,key){var value=h[key],t=_type(value),a=[],colon=space?COLON_SP:COLON,arr,i,keys,k,v;if(isObject(value)&&isFunction(value.toJSON)){value=value.toJSON(key);}else{if(t===DATE){value=_date(value);}}if(isFunction(replacer)){value=replacer.call(h,key,value);}if(value!==h[key]){t=_type(value);}switch(t){case DATE:case OBJECT:break;case STRING:return _string(value);case NUMBER:return isFinite(value)?value+EMPTY:NULL;case BOOLEAN:return value+EMPTY;case NULL:return NULL;default:return undefined;}for(i=stack.length-1;i>=0;--i){if(stack[i]===value){throw new Error("JSON.stringify. Cyclical reference");}}arr=isArray(value);stack.push(value);if(arr){for(i=value.length-1;i>=0;--i){a[i]=_serialize(value,i)||NULL;}}else{keys=w||value;i=0;for(k in keys){if(keys.hasOwnProperty(k)){v=_serialize(value,k);if(v){a[i++]=_string(k)+colon+v;}}}}stack.pop();if(space&&a.length){return arr?OPEN_A+CR+_indent(a.join(COMMA_CR),space)+CR+CLOSE_A:OPEN_O+CR+_indent(a.join(COMMA_CR),space)+CR+CLOSE_O;}else{return arr?OPEN_A+a.join(COMMA)+CLOSE_A:OPEN_O+a.join(COMMA)+CLOSE_O;}}return _serialize({"":o},"");}YAHOO.lang.JSON={useNativeParse:!!Native,useNativeStringify:!!Native,isSafe:function(s){return _isSafe(_prepare(s));},parse:function(s,reviver){return Native&&YAHOO.lang.JSON.useNativeParse?Native.parse(s,reviver):_parse(s,reviver);},stringify:function(o,w,space){return Native&&YAHOO.lang.JSON.useNativeStringify?Native.stringify(o,w,space):_stringify(o,w,space);},dateToString:function(d){function _zeroPad(v){return v<10?"0"+v:v;}return d.getUTCFullYear()+"-"+_zeroPad(d.getUTCMonth()+1)+"-"+_zeroPad(d.getUTCDate())+"T"+_zeroPad(d.getUTCHours())+COLON+_zeroPad(d.getUTCMinutes())+COLON+_zeroPad(d.getUTCSeconds())+"Z";},stringToDate:function(str){var m=str.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{3}))?Z$/);if(m){var d=new Date();d.setUTCFullYear(m[1],m[2]-1,m[3]);d.setUTCHours(m[4],m[5],m[6],(m[7]||0));return d;}return str;}};YAHOO.lang.JSON.isValid=YAHOO.lang.JSON.isSafe;})();YAHOO.register("json",YAHOO.lang.JSON,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.util.Connect={_msxml_progid:["Microsoft.XMLHTTP","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP"],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:"application/x-www-form-urlencoded; charset=UTF-8",_default_form_header:"application/x-www-form-urlencoded",_use_default_xhr_header:true,_default_xhr_header:"XMLHttpRequest",_has_default_headers:true,_default_headers:{},_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,startEvent:new YAHOO.util.CustomEvent("start"),completeEvent:new YAHOO.util.CustomEvent("complete"),successEvent:new YAHOO.util.CustomEvent("success"),failureEvent:new YAHOO.util.CustomEvent("failure"),abortEvent:new YAHOO.util.CustomEvent("abort"),_customEvents:{onStart:["startEvent","start"],onComplete:["completeEvent","complete"],onSuccess:["successEvent","success"],onFailure:["failureEvent","failure"],onUpload:["uploadEvent","upload"],onAbort:["abortEvent","abort"]},setProgId:function(A){this._msxml_progid.unshift(A);},setDefaultPostHeader:function(A){if(typeof A=="string"){this._default_post_header=A;}else{if(typeof A=="boolean"){this._use_default_post_header=A;}}},setDefaultXhrHeader:function(A){if(typeof A=="string"){this._default_xhr_header=A;}else{this._use_default_xhr_header=A;}},setPollingInterval:function(A){if(typeof A=="number"&&isFinite(A)){this._polling_interval=A;}},createXhrObject:function(F){var D,A,B;try{A=new XMLHttpRequest();D={conn:A,tId:F,xhr:true};}catch(C){for(B=0;B<this._msxml_progid.length;++B){try{A=new ActiveXObject(this._msxml_progid[B]);D={conn:A,tId:F,xhr:true};break;}catch(E){}}}finally{return D;}},getConnectionObject:function(A){var C,D=this._transaction_id;try{if(!A){C=this.createXhrObject(D);}else{C={tId:D};if(A==="xdr"){C.conn=this._transport;C.xdr=true;}else{if(A==="upload"){C.upload=true;}}}if(C){this._transaction_id++;}}catch(B){}return C;},asyncRequest:function(G,D,F,A){var E,C,B=(F&&F.argument)?F.argument:null;if(this._isFileUpload){C="upload";}else{if(F.xdr){C="xdr";}}E=this.getConnectionObject(C);if(!E){return null;}else{if(F&&F.customevents){this.initCustomEvents(E,F);}if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(E,F,D,A);return E;}if(G.toUpperCase()=="GET"){if(this._sFormData.length!==0){D+=((D.indexOf("?")==-1)?"?":"&")+this._sFormData;}}else{if(G.toUpperCase()=="POST"){A=A?this._sFormData+"&"+A:this._sFormData;}}}if(G.toUpperCase()=="GET"&&(F&&F.cache===false)){D+=((D.indexOf("?")==-1)?"?":"&")+"rnd="+new Date().valueOf().toString();}if(this._use_default_xhr_header){if(!this._default_headers["X-Requested-With"]){this.initHeader("X-Requested-With",this._default_xhr_header,true);}}if((G.toUpperCase()==="POST"&&this._use_default_post_header)&&this._isFormSubmit===false){this.initHeader("Content-Type",this._default_post_header);}if(E.xdr){this.xdr(E,G,D,F,A);return E;}E.conn.open(G,D,true);if(this._has_default_headers||this._has_http_headers){this.setHeader(E);}this.handleReadyState(E,F);E.conn.send(A||"");if(this._isFormSubmit===true){this.resetFormState();}this.startEvent.fire(E,B);if(E.startEvent){E.startEvent.fire(E,B);}return E;}},initCustomEvents:function(A,C){var B;for(B in C.customevents){if(this._customEvents[B][0]){A[this._customEvents[B][0]]=new YAHOO.util.CustomEvent(this._customEvents[B][1],(C.scope)?C.scope:null);A[this._customEvents[B][0]].subscribe(C.customevents[B]);}}},handleReadyState:function(C,D){var B=this,A=(D&&D.argument)?D.argument:null;if(D&&D.timeout){this._timeOut[C.tId]=window.setTimeout(function(){B.abort(C,D,true);},D.timeout);}this._poll[C.tId]=window.setInterval(function(){if(C.conn&&C.conn.readyState===4){window.clearInterval(B._poll[C.tId]);delete B._poll[C.tId];if(D&&D.timeout){window.clearTimeout(B._timeOut[C.tId]);delete B._timeOut[C.tId];}B.completeEvent.fire(C,A);if(C.completeEvent){C.completeEvent.fire(C,A);}B.handleTransactionResponse(C,D);}},this._polling_interval);},handleTransactionResponse:function(B,I,D){var E,A,G=(I&&I.argument)?I.argument:null,C=(B.r&&B.r.statusText==="xdr:success")?true:false,H=(B.r&&B.r.statusText==="xdr:failure")?true:false,J=D;try{if((B.conn.status!==undefined&&B.conn.status!==0)||C){E=B.conn.status;}else{if(H&&!J){E=0;}else{E=13030;}}}catch(F){E=13030;}if((E>=200&&E<300)||E===1223||C){A=B.xdr?B.r:this.createResponseObject(B,G);if(I&&I.success){if(!I.scope){I.success(A);}else{I.success.apply(I.scope,[A]);}}this.successEvent.fire(A);if(B.successEvent){B.successEvent.fire(A);}}else{switch(E){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:A=this.createExceptionObject(B.tId,G,(D?D:false));if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}break;default:A=(B.xdr)?B.response:this.createResponseObject(B,G);if(I&&I.failure){if(!I.scope){I.failure(A);}else{I.failure.apply(I.scope,[A]);}}}this.failureEvent.fire(A);if(B.failureEvent){B.failureEvent.fire(A);}}this.releaseObject(B);A=null;},createResponseObject:function(A,G){var D={},I={},E,C,F,B;try{C=A.conn.getAllResponseHeaders();F=C.split("\n");for(E=0;E<F.length;E++){B=F[E].indexOf(":");if(B!=-1){I[F[E].substring(0,B)]=YAHOO.lang.trim(F[E].substring(B+2));}}}catch(H){}D.tId=A.tId;D.status=(A.conn.status==1223)?204:A.conn.status;D.statusText=(A.conn.status==1223)?"No Content":A.conn.statusText;D.getResponseHeader=I;D.getAllResponseHeaders=C;D.responseText=A.conn.responseText;D.responseXML=A.conn.responseXML;if(G){D.argument=G;}return D;},createExceptionObject:function(H,D,A){var F=0,G="communication failure",C=-1,B="transaction aborted",E={};E.tId=H;if(A){E.status=C;E.statusText=B;}else{E.status=F;E.statusText=G;}if(D){E.argument=D;}return E;},initHeader:function(A,D,C){var B=(C)?this._default_headers:this._http_headers;B[A]=D;if(C){this._has_default_headers=true;}else{this._has_http_headers=true;}},setHeader:function(A){var B;if(this._has_default_headers){for(B in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,B)){A.conn.setRequestHeader(B,this._default_headers[B]);}}}if(this._has_http_headers){for(B in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,B)){A.conn.setRequestHeader(B,this._http_headers[B]);
}}this._http_headers={};this._has_http_headers=false;}},resetDefaultHeaders:function(){this._default_headers={};this._has_default_headers=false;},abort:function(E,G,A){var D,B=(G&&G.argument)?G.argument:null;E=E||{};if(E.conn){if(E.xhr){if(this.isCallInProgress(E)){E.conn.abort();window.clearInterval(this._poll[E.tId]);delete this._poll[E.tId];if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{if(E.xdr){E.conn.abort(E.tId);D=true;}}}else{if(E.upload){var C="yuiIO"+E.tId;var F=document.getElementById(C);if(F){YAHOO.util.Event.removeListener(F,"load");document.body.removeChild(F);if(A){window.clearTimeout(this._timeOut[E.tId]);delete this._timeOut[E.tId];}D=true;}}else{D=false;}}if(D===true){this.abortEvent.fire(E,B);if(E.abortEvent){E.abortEvent.fire(E,B);}this.handleTransactionResponse(E,G,true);}return D;},isCallInProgress:function(A){A=A||{};if(A.xhr&&A.conn){return A.conn.readyState!==4&&A.conn.readyState!==0;}else{if(A.xdr&&A.conn){return A.conn.isCallInProgress(A.tId);}else{if(A.upload===true){return document.getElementById("yuiIO"+A.tId)?true:false;}else{return false;}}}},releaseObject:function(A){if(A&&A.conn){A.conn=null;A=null;}}};(function(){var G=YAHOO.util.Connect,H={};function D(I){var J='<object id="YUIConnectionSwf" type="application/x-shockwave-flash" data="'+I+'" width="0" height="0">'+'<param name="movie" value="'+I+'">'+'<param name="allowScriptAccess" value="always">'+"</object>",K=document.createElement("div");document.body.appendChild(K);K.innerHTML=J;}function B(L,I,J,M,K){H[parseInt(L.tId)]={"o":L,"c":M};if(K){M.method=I;M.data=K;}L.conn.send(J,M,L.tId);}function E(I){D(I);G._transport=document.getElementById("YUIConnectionSwf");}function C(){G.xdrReadyEvent.fire();}function A(J,I){if(J){G.startEvent.fire(J,I.argument);if(J.startEvent){J.startEvent.fire(J,I.argument);}}}function F(J){var K=H[J.tId].o,I=H[J.tId].c;if(J.statusText==="xdr:start"){A(K,I);return;}J.responseText=decodeURI(J.responseText);K.r=J;if(I.argument){K.r.argument=I.argument;}this.handleTransactionResponse(K,I,J.statusText==="xdr:abort"?true:false);delete H[J.tId];}G.xdr=B;G.swf=D;G.transport=E;G.xdrReadyEvent=new YAHOO.util.CustomEvent("xdrReady");G.xdrReady=C;G.handleXdrResponse=F;})();(function(){var D=YAHOO.util.Connect,F=YAHOO.util.Event;D._isFormSubmit=false;D._isFileUpload=false;D._formNode=null;D._sFormData=null;D._submitElementValue=null;D.uploadEvent=new YAHOO.util.CustomEvent("upload"),D._hasSubmitListener=function(){if(F){F.addListener(document,"click",function(J){var I=F.getTarget(J),H=I.nodeName.toLowerCase();if((H==="input"||H==="button")&&(I.type&&I.type.toLowerCase()=="submit")){D._submitElementValue=encodeURIComponent(I.name)+"="+encodeURIComponent(I.value);}});return true;}return false;}();function G(T,O,J){var S,I,R,P,W,Q=false,M=[],V=0,L,N,K,U,H;this.resetFormState();if(typeof T=="string"){S=(document.getElementById(T)||document.forms[T]);}else{if(typeof T=="object"){S=T;}else{return;}}if(O){this.createFrame(J?J:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=S;return;}for(L=0,N=S.elements.length;L<N;++L){I=S.elements[L];W=I.disabled;R=I.name;if(!W&&R){R=encodeURIComponent(R)+"=";P=encodeURIComponent(I.value);switch(I.type){case"select-one":if(I.selectedIndex>-1){H=I.options[I.selectedIndex];M[V++]=R+encodeURIComponent((H.attributes.value&&H.attributes.value.specified)?H.value:H.text);}break;case"select-multiple":if(I.selectedIndex>-1){for(K=I.selectedIndex,U=I.options.length;K<U;++K){H=I.options[K];if(H.selected){M[V++]=R+encodeURIComponent((H.attributes.value&&H.attributes.value.specified)?H.value:H.text);}}}break;case"radio":case"checkbox":if(I.checked){M[V++]=R+P;}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(Q===false){if(this._hasSubmitListener&&this._submitElementValue){M[V++]=this._submitElementValue;}Q=true;}break;default:M[V++]=R+P;}}}this._isFormSubmit=true;this._sFormData=M.join("&");this.initHeader("Content-Type",this._default_form_header);return this._sFormData;}function C(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";}function B(H){var I="yuiIO"+this._transaction_id,J;if(YAHOO.env.ua.ie){J=document.createElement('<iframe id="'+I+'" name="'+I+'" />');if(typeof H=="boolean"){J.src="javascript:false";}}else{J=document.createElement("iframe");J.id=I;J.name=I;}J.style.position="absolute";J.style.top="-1000px";J.style.left="-1000px";document.body.appendChild(J);}function E(H){var K=[],I=H.split("&"),J,L;for(J=0;J<I.length;J++){L=I[J].indexOf("=");if(L!=-1){K[J]=document.createElement("input");K[J].type="hidden";K[J].name=decodeURIComponent(I[J].substring(0,L));K[J].value=decodeURIComponent(I[J].substring(L+1));this._formNode.appendChild(K[J]);}}return K;}function A(K,V,L,J){var Q="yuiIO"+K.tId,R="multipart/form-data",T=document.getElementById(Q),M=(document.documentMode&&document.documentMode===8)?true:false,W=this,S=(V&&V.argument)?V.argument:null,U,P,I,O,H,N;H={action:this._formNode.getAttribute("action"),method:this._formNode.getAttribute("method"),target:this._formNode.getAttribute("target")};this._formNode.setAttribute("action",L);this._formNode.setAttribute("method","POST");this._formNode.setAttribute("target",Q);if(YAHOO.env.ua.ie&&!M){this._formNode.setAttribute("encoding",R);}else{this._formNode.setAttribute("enctype",R);}if(J){U=this.appendPostData(J);}this._formNode.submit();this.startEvent.fire(K,S);if(K.startEvent){K.startEvent.fire(K,S);}if(V&&V.timeout){this._timeOut[K.tId]=window.setTimeout(function(){W.abort(K,V,true);},V.timeout);}if(U&&U.length>0){for(P=0;P<U.length;P++){this._formNode.removeChild(U[P]);}}for(I in H){if(YAHOO.lang.hasOwnProperty(H,I)){if(H[I]){this._formNode.setAttribute(I,H[I]);}else{this._formNode.removeAttribute(I);}}}this.resetFormState();N=function(){if(V&&V.timeout){window.clearTimeout(W._timeOut[K.tId]);delete W._timeOut[K.tId];}W.completeEvent.fire(K,S);if(K.completeEvent){K.completeEvent.fire(K,S);
}O={tId:K.tId,argument:V.argument};try{O.responseText=T.contentWindow.document.body?T.contentWindow.document.body.innerHTML:T.contentWindow.document.documentElement.textContent;O.responseXML=T.contentWindow.document.XMLDocument?T.contentWindow.document.XMLDocument:T.contentWindow.document;}catch(X){}if(V&&V.upload){if(!V.scope){V.upload(O);}else{V.upload.apply(V.scope,[O]);}}W.uploadEvent.fire(O);if(K.uploadEvent){K.uploadEvent.fire(O);}F.removeListener(T,"load",N);setTimeout(function(){document.body.removeChild(T);W.releaseObject(K);},100);};F.addListener(T,"load",N);}D.setForm=G;D.resetFormState=C;D.createFrame=B;D.appendPostData=E;D.uploadFile=A;})();YAHOO.register("connection",YAHOO.util.Connect,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var A=YAHOO.util;A.Selector={_foundCache:[],_regexCache:{},_re:{nth:/^(?:([-]?\d*)(n){1}|(odd|even)$)*([-+]?\d*)$/,attr:/(\[.*\])/g,urls:/^(?:href|src)/},document:window.document,attrAliases:{},shorthand:{"\\#(-?[_a-z]+[-\\w]*)":"[id=$1]","\\.(-?[_a-z]+[-\\w]*)":"[class~=$1]"},operators:{"=":function(B,C){return B===C;},"!=":function(B,C){return B!==C;},"~=":function(B,D){var C=" ";return(C+B+C).indexOf((C+D+C))>-1;},"|=":function(B,C){return B===C||B.slice(0,C.length+1)===C+"-";},"^=":function(B,C){return B.indexOf(C)===0;},"$=":function(B,C){return B.slice(-C.length)===C;},"*=":function(B,C){return B.indexOf(C)>-1;},"":function(B,C){return B;}},pseudos:{"root":function(B){return B===B.ownerDocument.documentElement;},"nth-child":function(B,C){return A.Selector._getNth(B,C);},"nth-last-child":function(B,C){return A.Selector._getNth(B,C,null,true);},"nth-of-type":function(B,C){return A.Selector._getNth(B,C,B.tagName);},"nth-last-of-type":function(B,C){return A.Selector._getNth(B,C,B.tagName,true);},"first-child":function(B){return A.Selector._getChildren(B.parentNode)[0]===B;},"last-child":function(C){var B=A.Selector._getChildren(C.parentNode);return B[B.length-1]===C;},"first-of-type":function(B,C){return A.Selector._getChildren(B.parentNode,B.tagName)[0];},"last-of-type":function(C,D){var B=A.Selector._getChildren(C.parentNode,C.tagName);return B[B.length-1];},"only-child":function(C){var B=A.Selector._getChildren(C.parentNode);return B.length===1&&B[0]===C;},"only-of-type":function(B){return A.Selector._getChildren(B.parentNode,B.tagName).length===1;},"empty":function(B){return B.childNodes.length===0;},"not":function(B,C){return !A.Selector.test(B,C);},"contains":function(B,D){var C=B.innerText||B.textContent||"";return C.indexOf(D)>-1;},"checked":function(B){return B.checked===true;}},test:function(F,D){F=A.Selector.document.getElementById(F)||F;if(!F){return false;}var C=D?D.split(","):[];if(C.length){for(var E=0,B=C.length;E<B;++E){if(A.Selector._test(F,C[E])){return true;}}return false;}return A.Selector._test(F,D);},_test:function(D,G,F,E){F=F||A.Selector._tokenize(G).pop()||{};if(!D.tagName||(F.tag!=="*"&&D.tagName!==F.tag)||(E&&D._found)){return false;}if(F.attributes.length){var B,H,C=A.Selector._re.urls;if(!D.attributes||!D.attributes.length){return false;}for(var I=0,K;K=F.attributes[I++];){H=(C.test(K[0]))?2:0;B=D.getAttribute(K[0],H);if(B===null||B===undefined){return false;}if(A.Selector.operators[K[1]]&&!A.Selector.operators[K[1]](B,K[2])){return false;}}}if(F.pseudos.length){for(var I=0,J=F.pseudos.length;I<J;++I){if(A.Selector.pseudos[F.pseudos[I][0]]&&!A.Selector.pseudos[F.pseudos[I][0]](D,F.pseudos[I][1])){return false;}}}return(F.previous&&F.previous.combinator!==",")?A.Selector._combinators[F.previous.combinator](D,F):true;},filter:function(E,D){E=E||[];var G,C=[],H=A.Selector._tokenize(D);if(!E.item){for(var F=0,B=E.length;F<B;++F){if(!E[F].tagName){G=A.Selector.document.getElementById(E[F]);if(G){E[F]=G;}else{}}}}C=A.Selector._filter(E,A.Selector._tokenize(D)[0]);return C;},_filter:function(E,G,H,D){var C=H?null:[],I=A.Selector._foundCache;for(var F=0,B=E.length;F<B;F++){if(!A.Selector._test(E[F],"",G,D)){continue;}if(H){return E[F];}if(D){if(E[F]._found){continue;}E[F]._found=true;I[I.length]=E[F];}C[C.length]=E[F];}return C;},query:function(C,D,E){var B=A.Selector._query(C,D,E);return B;},_query:function(H,M,N,F){var P=(N)?null:[],E;if(!H){return P;}var D=H.split(",");if(D.length>1){var O;for(var I=0,J=D.length;I<J;++I){O=A.Selector._query(D[I],M,N,true);P=N?O:P.concat(O);}A.Selector._clearFoundCache();return P;}if(M&&!M.nodeName){M=A.Selector.document.getElementById(M);if(!M){return P;}}M=M||A.Selector.document;if(M.nodeName!=="#document"){A.Dom.generateId(M);H=M.tagName+"#"+M.id+" "+H;E=M;M=M.ownerDocument;}var L=A.Selector._tokenize(H);var K=L[A.Selector._getIdTokenIndex(L)],B=[],C,G=L.pop()||{};if(K){C=A.Selector._getId(K.attributes);}if(C){E=E||A.Selector.document.getElementById(C);if(E&&(M.nodeName==="#document"||A.Dom.isAncestor(M,E))){if(A.Selector._test(E,null,K)){if(K===G){B=[E];}else{if(K.combinator===" "||K.combinator===">"){M=E;}}}}else{return P;}}if(M&&!B.length){B=M.getElementsByTagName(G.tag);}if(B.length){P=A.Selector._filter(B,G,N,F);}return P;},_clearFoundCache:function(){var E=A.Selector._foundCache;for(var C=0,B=E.length;C<B;++C){try{delete E[C]._found;}catch(D){E[C].removeAttribute("_found");}}E=[];},_getRegExp:function(D,B){var C=A.Selector._regexCache;B=B||"";if(!C[D+B]){C[D+B]=new RegExp(D,B);}return C[D+B];},_getChildren:function(){if(document.documentElement.children&&document.documentElement.children.tags){return function(C,B){return(B)?C.children.tags(B):C.children||[];};}else{return function(F,C){var E=[],G=F.childNodes;for(var D=0,B=G.length;D<B;++D){if(G[D].tagName){if(!C||G[D].tagName===C){E.push(G[D]);}}}return E;};}}(),_combinators:{" ":function(C,B){while((C=C.parentNode)){if(A.Selector._test(C,"",B.previous)){return true;}}return false;},">":function(C,B){return A.Selector._test(C.parentNode,null,B.previous);},"+":function(D,C){var B=D.previousSibling;while(B&&B.nodeType!==1){B=B.previousSibling;}if(B&&A.Selector._test(B,null,C.previous)){return true;}return false;},"~":function(D,C){var B=D.previousSibling;while(B){if(B.nodeType===1&&A.Selector._test(B,null,C.previous)){return true;}B=B.previousSibling;}return false;}},_getNth:function(C,L,N,G){A.Selector._re.nth.test(L);var K=parseInt(RegExp.$1,10),B=RegExp.$2,H=RegExp.$3,I=parseInt(RegExp.$4,10)||0,M=[],E;var J=A.Selector._getChildren(C.parentNode,N);if(H){K=2;E="+";B="n";I=(H==="odd")?1:0;}else{if(isNaN(K)){K=(B)?1:0;}}if(K===0){if(G){I=J.length-I+1;}if(J[I-1]===C){return true;}else{return false;}}else{if(K<0){G=!!G;K=Math.abs(K);}}if(!G){for(var D=I-1,F=J.length;D<F;D+=K){if(D>=0&&J[D]===C){return true;}}}else{for(var D=J.length-I,F=J.length;D>=0;D-=K){if(D<F&&J[D]===C){return true;}}}return false;},_getId:function(C){for(var D=0,B=C.length;D<B;++D){if(C[D][0]=="id"&&C[D][1]==="="){return C[D][2];
}}},_getIdTokenIndex:function(D){for(var C=0,B=D.length;C<B;++C){if(A.Selector._getId(D[C].attributes)){return C;}}return -1;},_patterns:{tag:/^((?:-?[_a-z]+[\w-]*)|\*)/i,attributes:/^\[([a-z]+\w*)+([~\|\^\$\*!=]=?)?['"]?([^\]]*?)['"]?\]/i,pseudos:/^:([-\w]+)(?:\(['"]?(.+)['"]?\))*/i,combinator:/^\s*([>+~]|\s)\s*/},_tokenize:function(B){var D={},H=[],I,G=false,F=A.Selector._patterns,C;B=A.Selector._replaceShorthand(B);do{G=false;for(var E in F){if(YAHOO.lang.hasOwnProperty(F,E)){if(E!="tag"&&E!="combinator"){D[E]=D[E]||[];}if((C=F[E].exec(B))){G=true;if(E!="tag"&&E!="combinator"){if(E==="attributes"&&C[1]==="id"){D.id=C[3];}D[E].push(C.slice(1));}else{D[E]=C[1];}B=B.replace(C[0],"");if(E==="combinator"||!B.length){D.attributes=A.Selector._fixAttributes(D.attributes);D.pseudos=D.pseudos||[];D.tag=D.tag?D.tag.toUpperCase():"*";H.push(D);D={previous:D};}}}}}while(G);return H;},_fixAttributes:function(C){var D=A.Selector.attrAliases;C=C||[];for(var E=0,B=C.length;E<B;++E){if(D[C[E][0]]){C[E][0]=D[C[E][0]];}if(!C[E][1]){C[E][1]="";}}return C;},_replaceShorthand:function(C){var D=A.Selector.shorthand;var E=C.match(A.Selector._re.attr);if(E){C=C.replace(A.Selector._re.attr,"REPLACED_ATTRIBUTE");}for(var G in D){if(YAHOO.lang.hasOwnProperty(D,G)){C=C.replace(A.Selector._getRegExp(G,"gi"),D[G]);}}if(E){for(var F=0,B=E.length;F<B;++F){C=C.replace("REPLACED_ATTRIBUTE",E[F]);}}return C;}};if(YAHOO.env.ua.ie&&YAHOO.env.ua.ie<8){A.Selector.attrAliases["class"]="className";A.Selector.attrAliases["for"]="htmlFor";}})();YAHOO.register("selector",YAHOO.util.Selector,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.util.Attribute=function(B,A){if(A){this.owner=A;this.configure(B,true);}};YAHOO.util.Attribute.prototype={name:undefined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:null,_written:false,method:null,setter:null,getter:null,validator:null,getValue:function(){var A=this.value;if(this.getter){A=this.getter.call(this.owner,this.name,A);}return A;},setValue:function(F,B){var E,A=this.owner,C=this.name;var D={type:C,prevValue:this.getValue(),newValue:F};if(this.readOnly||(this.writeOnce&&this._written)){return false;}if(this.validator&&!this.validator.call(A,F)){return false;}if(!B){E=A.fireBeforeChangeEvent(D);if(E===false){return false;}}if(this.setter){F=this.setter.call(A,F,this.name);if(F===undefined){}}if(this.method){this.method.call(A,F,this.name);}this.value=F;this._written=true;D.type=C;if(!B){this.owner.fireChangeEvent(D);}return true;},configure:function(B,C){B=B||{};if(C){this._written=false;}this._initialConfig=this._initialConfig||{};for(var A in B){if(B.hasOwnProperty(A)){this[A]=B[A];if(C){this._initialConfig[A]=B[A];}}}},resetValue:function(){return this.setValue(this._initialConfig.value);},resetConfig:function(){this.configure(this._initialConfig,true);},refresh:function(A){this.setValue(this.value,A);}};(function(){var A=YAHOO.util.Lang;YAHOO.util.AttributeProvider=function(){};YAHOO.util.AttributeProvider.prototype={_configs:null,get:function(C){this._configs=this._configs||{};var B=this._configs[C];if(!B||!this._configs.hasOwnProperty(C)){return null;}return B.getValue();},set:function(D,E,B){this._configs=this._configs||{};var C=this._configs[D];if(!C){return false;}return C.setValue(E,B);},getAttributeKeys:function(){this._configs=this._configs;var C=[],B;for(B in this._configs){if(A.hasOwnProperty(this._configs,B)&&!A.isUndefined(this._configs[B])){C[C.length]=B;}}return C;},setAttributes:function(D,B){for(var C in D){if(A.hasOwnProperty(D,C)){this.set(C,D[C],B);}}},resetValue:function(C,B){this._configs=this._configs||{};if(this._configs[C]){this.set(C,this._configs[C]._initialConfig.value,B);return true;}return false;},refresh:function(E,C){this._configs=this._configs||{};var F=this._configs;E=((A.isString(E))?[E]:E)||this.getAttributeKeys();for(var D=0,B=E.length;D<B;++D){if(F.hasOwnProperty(E[D])){this._configs[E[D]].refresh(C);}}},register:function(B,C){this.setAttributeConfig(B,C);},getAttributeConfig:function(C){this._configs=this._configs||{};var B=this._configs[C]||{};var D={};for(C in B){if(A.hasOwnProperty(B,C)){D[C]=B[C];}}return D;},setAttributeConfig:function(B,C,D){this._configs=this._configs||{};C=C||{};if(!this._configs[B]){C.name=B;this._configs[B]=this.createAttribute(C);}else{this._configs[B].configure(C,D);}},configureAttribute:function(B,C,D){this.setAttributeConfig(B,C,D);},resetAttributeConfig:function(B){this._configs=this._configs||{};this._configs[B].resetConfig();},subscribe:function(B,C){this._events=this._events||{};if(!(B in this._events)){this._events[B]=this.createEvent(B);}YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){this.subscribe.apply(this,arguments);},addListener:function(){this.subscribe.apply(this,arguments);},fireBeforeChangeEvent:function(C){var B="before";B+=C.type.charAt(0).toUpperCase()+C.type.substr(1)+"Change";C.type=B;return this.fireEvent(C.type,C);},fireChangeEvent:function(B){B.type+="Change";return this.fireEvent(B.type,B);},createAttribute:function(B){return new YAHOO.util.Attribute(B,this);}};YAHOO.augment(YAHOO.util.AttributeProvider,YAHOO.util.EventProvider);})();(function(){var B=YAHOO.util.Dom,D=YAHOO.util.AttributeProvider,C={mouseenter:true,mouseleave:true};var A=function(E,F){this.init.apply(this,arguments);};A.DOM_EVENTS={"click":true,"dblclick":true,"keydown":true,"keypress":true,"keyup":true,"mousedown":true,"mousemove":true,"mouseout":true,"mouseover":true,"mouseup":true,"mouseenter":true,"mouseleave":true,"focus":true,"blur":true,"submit":true,"change":true};A.prototype={DOM_EVENTS:null,DEFAULT_HTML_SETTER:function(G,E){var F=this.get("element");if(F){F[E]=G;}return G;},DEFAULT_HTML_GETTER:function(E){var F=this.get("element"),G;if(F){G=F[E];}return G;},appendChild:function(E){E=E.get?E.get("element"):E;return this.get("element").appendChild(E);},getElementsByTagName:function(E){return this.get("element").getElementsByTagName(E);},hasChildNodes:function(){return this.get("element").hasChildNodes();},insertBefore:function(E,F){E=E.get?E.get("element"):E;F=(F&&F.get)?F.get("element"):F;return this.get("element").insertBefore(E,F);},removeChild:function(E){E=E.get?E.get("element"):E;return this.get("element").removeChild(E);},replaceChild:function(E,F){E=E.get?E.get("element"):E;F=F.get?F.get("element"):F;return this.get("element").replaceChild(E,F);},initAttributes:function(E){},addListener:function(J,I,K,H){H=H||this;var E=YAHOO.util.Event,G=this.get("element")||this.get("id"),F=this;if(C[J]&&!E._createMouseDelegate){return false;}if(!this._events[J]){if(G&&this.DOM_EVENTS[J]){E.on(G,J,function(M,L){if(M.srcElement&&!M.target){M.target=M.srcElement;}if((M.toElement&&!M.relatedTarget)||(M.fromElement&&!M.relatedTarget)){M.relatedTarget=E.getRelatedTarget(M);}if(!M.currentTarget){M.currentTarget=G;}F.fireEvent(J,M,L);},K,H);}this.createEvent(J,{scope:this});}return YAHOO.util.EventProvider.prototype.subscribe.apply(this,arguments);},on:function(){return this.addListener.apply(this,arguments);},subscribe:function(){return this.addListener.apply(this,arguments);},removeListener:function(F,E){return this.unsubscribe.apply(this,arguments);},addClass:function(E){B.addClass(this.get("element"),E);},getElementsByClassName:function(F,E){return B.getElementsByClassName(F,E,this.get("element"));},hasClass:function(E){return B.hasClass(this.get("element"),E);},removeClass:function(E){return B.removeClass(this.get("element"),E);},replaceClass:function(F,E){return B.replaceClass(this.get("element"),F,E);},setStyle:function(F,E){return B.setStyle(this.get("element"),F,E);
},getStyle:function(E){return B.getStyle(this.get("element"),E);},fireQueue:function(){var F=this._queue;for(var G=0,E=F.length;G<E;++G){this[F[G][0]].apply(this,F[G][1]);}},appendTo:function(F,G){F=(F.get)?F.get("element"):B.get(F);this.fireEvent("beforeAppendTo",{type:"beforeAppendTo",target:F});G=(G&&G.get)?G.get("element"):B.get(G);var E=this.get("element");if(!E){return false;}if(!F){return false;}if(E.parent!=F){if(G){F.insertBefore(E,G);}else{F.appendChild(E);}}this.fireEvent("appendTo",{type:"appendTo",target:F});return E;},get:function(E){var G=this._configs||{},F=G.element;if(F&&!G[E]&&!YAHOO.lang.isUndefined(F.value[E])){this._setHTMLAttrConfig(E);}return D.prototype.get.call(this,E);},setAttributes:function(K,H){var F={},I=this._configOrder;for(var J=0,E=I.length;J<E;++J){if(K[I[J]]!==undefined){F[I[J]]=true;this.set(I[J],K[I[J]],H);}}for(var G in K){if(K.hasOwnProperty(G)&&!F[G]){this.set(G,K[G],H);}}},set:function(F,H,E){var G=this.get("element");if(!G){this._queue[this._queue.length]=["set",arguments];if(this._configs[F]){this._configs[F].value=H;}return;}if(!this._configs[F]&&!YAHOO.lang.isUndefined(G[F])){this._setHTMLAttrConfig(F);}return D.prototype.set.apply(this,arguments);},setAttributeConfig:function(E,F,G){this._configOrder.push(E);D.prototype.setAttributeConfig.apply(this,arguments);},createEvent:function(F,E){this._events[F]=true;return D.prototype.createEvent.apply(this,arguments);},init:function(F,E){this._initElement(F,E);},destroy:function(){var E=this.get("element");YAHOO.util.Event.purgeElement(E,true);this.unsubscribeAll();if(E&&E.parentNode){E.parentNode.removeChild(E);}this._queue=[];this._events={};this._configs={};this._configOrder=[];},_initElement:function(G,F){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._configOrder=[];F=F||{};F.element=F.element||G||null;var I=false;var E=A.DOM_EVENTS;this.DOM_EVENTS=this.DOM_EVENTS||{};for(var H in E){if(E.hasOwnProperty(H)){this.DOM_EVENTS[H]=E[H];}}if(typeof F.element==="string"){this._setHTMLAttrConfig("id",{value:F.element});}if(B.get(F.element)){I=true;this._initHTMLElement(F);this._initContent(F);}YAHOO.util.Event.onAvailable(F.element,function(){if(!I){this._initHTMLElement(F);}this.fireEvent("available",{type:"available",target:B.get(F.element)});},this,true);YAHOO.util.Event.onContentReady(F.element,function(){if(!I){this._initContent(F);}this.fireEvent("contentReady",{type:"contentReady",target:B.get(F.element)});},this,true);},_initHTMLElement:function(E){this.setAttributeConfig("element",{value:B.get(E.element),readOnly:true});},_initContent:function(E){this.initAttributes(E);this.setAttributes(E,true);this.fireQueue();},_setHTMLAttrConfig:function(E,G){var F=this.get("element");G=G||{};G.name=E;G.setter=G.setter||this.DEFAULT_HTML_SETTER;G.getter=G.getter||this.DEFAULT_HTML_GETTER;G.value=G.value||F[E];this._configs[E]=new YAHOO.util.Attribute(G,this);}};YAHOO.augment(A,D);YAHOO.util.Element=A;})();YAHOO.register("element",YAHOO.util.Element,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.namespace("util");YAHOO.util.Cookie={_createCookieString:function(B,D,C,A){var F=YAHOO.lang,E=encodeURIComponent(B)+"="+(C?encodeURIComponent(D):D);if(F.isObject(A)){if(A.expires instanceof Date){E+="; expires="+A.expires.toUTCString();}if(F.isString(A.path)&&A.path!==""){E+="; path="+A.path;}if(F.isString(A.domain)&&A.domain!==""){E+="; domain="+A.domain;}if(A.secure===true){E+="; secure";}}return E;},_createCookieHashString:function(B){var D=YAHOO.lang;if(!D.isObject(B)){throw new TypeError("Cookie._createCookieHashString(): Argument must be an object.");}var C=[];for(var A in B){if(D.hasOwnProperty(B,A)&&!D.isFunction(B[A])&&!D.isUndefined(B[A])){C.push(encodeURIComponent(A)+"="+encodeURIComponent(String(B[A])));}}return C.join("&");},_parseCookieHash:function(E){var D=E.split("&"),F=null,C={};if(E.length>0){for(var B=0,A=D.length;B<A;B++){F=D[B].split("=");C[decodeURIComponent(F[0])]=decodeURIComponent(F[1]);}}return C;},_parseCookieString:function(J,A){var K={};if(YAHOO.lang.isString(J)&&J.length>0){var B=(A===false?function(L){return L;}:decodeURIComponent);var H=J.split(/;\s/g),I=null,C=null,E=null;for(var D=0,F=H.length;D<F;D++){E=H[D].match(/([^=]+)=/i);if(E instanceof Array){try{I=decodeURIComponent(E[1]);C=B(H[D].substring(E[1].length+1));}catch(G){}}else{I=decodeURIComponent(H[D]);C="";}K[I]=C;}}return K;},exists:function(A){if(!YAHOO.lang.isString(A)||A===""){throw new TypeError("Cookie.exists(): Cookie name must be a non-empty string.");}var B=this._parseCookieString(document.cookie,true);return B.hasOwnProperty(A);},get:function(B,A){var E=YAHOO.lang,C;if(E.isFunction(A)){C=A;A={};}else{if(E.isObject(A)){C=A.converter;}else{A={};}}var D=this._parseCookieString(document.cookie,!A.raw);if(!E.isString(B)||B===""){throw new TypeError("Cookie.get(): Cookie name must be a non-empty string.");}if(E.isUndefined(D[B])){return null;}if(!E.isFunction(C)){return D[B];}else{return C(D[B]);}},getSub:function(A,C,B){var E=YAHOO.lang,D=this.getSubs(A);if(D!==null){if(!E.isString(C)||C===""){throw new TypeError("Cookie.getSub(): Subcookie name must be a non-empty string.");}if(E.isUndefined(D[C])){return null;}if(!E.isFunction(B)){return D[C];}else{return B(D[C]);}}else{return null;}},getSubs:function(B){var A=YAHOO.lang.isString;if(!A(B)||B===""){throw new TypeError("Cookie.getSubs(): Cookie name must be a non-empty string.");}var C=this._parseCookieString(document.cookie,false);if(A(C[B])){return this._parseCookieHash(C[B]);}return null;},remove:function(B,A){if(!YAHOO.lang.isString(B)||B===""){throw new TypeError("Cookie.remove(): Cookie name must be a non-empty string.");}A=YAHOO.lang.merge(A||{},{expires:new Date(0)});return this.set(B,"",A);},removeSub:function(B,E,A){var F=YAHOO.lang;A=A||{};if(!F.isString(B)||B===""){throw new TypeError("Cookie.removeSub(): Cookie name must be a non-empty string.");}if(!F.isString(E)||E===""){throw new TypeError("Cookie.removeSub(): Subcookie name must be a non-empty string.");}var D=this.getSubs(B);if(F.isObject(D)&&F.hasOwnProperty(D,E)){delete D[E];if(!A.removeIfEmpty){return this.setSubs(B,D,A);}else{for(var C in D){if(F.hasOwnProperty(D,C)&&!F.isFunction(D[C])&&!F.isUndefined(D[C])){return this.setSubs(B,D,A);}}return this.remove(B,A);}}else{return"";}},set:function(B,C,A){var E=YAHOO.lang;A=A||{};if(!E.isString(B)){throw new TypeError("Cookie.set(): Cookie name must be a string.");}if(E.isUndefined(C)){throw new TypeError("Cookie.set(): Value cannot be undefined.");}var D=this._createCookieString(B,C,!A.raw,A);document.cookie=D;return D;},setSub:function(B,D,C,A){var F=YAHOO.lang;if(!F.isString(B)||B===""){throw new TypeError("Cookie.setSub(): Cookie name must be a non-empty string.");}if(!F.isString(D)||D===""){throw new TypeError("Cookie.setSub(): Subcookie name must be a non-empty string.");}if(F.isUndefined(C)){throw new TypeError("Cookie.setSub(): Subcookie value cannot be undefined.");}var E=this.getSubs(B);if(!F.isObject(E)){E={};}E[D]=C;return this.setSubs(B,E,A);},setSubs:function(B,C,A){var E=YAHOO.lang;if(!E.isString(B)){throw new TypeError("Cookie.setSubs(): Cookie name must be a string.");}if(!E.isObject(C)){throw new TypeError("Cookie.setSubs(): Cookie value must be an object.");}var D=this._createCookieString(B,this._createCookieHashString(C),false,A);document.cookie=D;return D;}};YAHOO.register("cookie",YAHOO.util.Cookie,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.namespace("widget");(function(){var M=0;var L=YAHOO.env.ua;var P="ShockwaveFlash";if(L.gecko||L.webkit||L.opera){if((mF=navigator.mimeTypes["application/x-shockwave-flash"])){if((eP=mF.enabledPlugin)){var F=[];F=eP.description.replace(/\s[rd]/g,".").replace(/[A-Za-z\s]+/g,"").split(".");M=F[0]+".";switch((F[2].toString()).length){case 1:M+="00";break;case 2:M+="0";break;}M+=F[2];M=parseFloat(M);}}}else{if(L.ie){try{var Q=new ActiveXObject(P+"."+P+".6");Q.AllowScriptAccess="always";}catch(K){if(Q!=null){M=6;}}if(M==0){try{var B=new ActiveXObject(P+"."+P);var F=[];F=B.GetVariable("$version").replace(/[A-Za-z\s]+/g,"").split(",");M=F[0]+".";switch((F[2].toString()).length){case 1:M+="00";break;case 2:M+="0";break;}M+=F[2];M=parseFloat(M);}catch(K){}}}}L.flash=M;YAHOO.util.SWFDetect={getFlashVersion:function(){return M;},isFlashVersionAtLeast:function(R){return M>=R;}};var H=YAHOO.util.Dom,O=YAHOO.util.Event,I=YAHOO.util.SWFDetect,J=YAHOO.lang,G="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000",E="application/x-shockwave-flash",D="10.22",A="http://fpdownload.macromedia.com/pub/flashplayer/update/current/swf/autoUpdater.swf?"+Math.random(),C="YAHOO.widget.SWF.eventHandler",N={align:"",allowNetworking:"",allowScriptAccess:"",base:"",bgcolor:"",menu:"",name:"",quality:"",salign:"",scale:"",tabindex:"",wmode:""};YAHOO.widget.SWF=function(R,i,c){this._queue=this._queue||[];this._events=this._events||{};this._configs=this._configs||{};this._id=H.generateId(null,"yuiswf");if(c.host){this._host=c.host;}var e=this._id;var U=H.get(R);var S=(c["version"]||D);var b=I.isFlashVersionAtLeast(S);var a=(L.flash>=8);var V=a&&!b&&c["useExpressInstall"];var Z=(V)?A:i;var Y="<object ";var f,X;var g="YUISwfId="+e+"&YUIBridgeCallback="+C;YAHOO.widget.SWF._instances[e]=this;if(U&&(b||V)&&Z){Y+='id="'+e+'" ';if(L.ie){Y+='classid="'+G+'" ';}else{Y+='type="'+E+'" data="'+Z+'" ';}f="100%";X="100%";Y+='width="'+f+'" height="'+X+'">';if(L.ie){Y+='<param name="movie" value="'+Z+'"/>';}for(var T in c.fixedAttributes){if(N.hasOwnProperty(T)){Y+='<param name="'+T+'" value="'+c.fixedAttributes[T]+'"/>';}}for(var d in c.flashVars){var W=c.flashVars[d];if(J.isString(W)){g+="&"+d+"="+encodeURIComponent(W);}}if(g){Y+='<param name="flashVars" value="'+g+'"/>';}Y+="</object>";U.innerHTML=Y;}YAHOO.widget.SWF.superclass.constructor.call(this,H.get(e));this._swf=H.get(e);};YAHOO.widget.SWF._instances=YAHOO.widget.SWF._instances||{};YAHOO.widget.SWF.eventHandler=function(R,S){YAHOO.widget.SWF._instances[R]._eventHandler(S);};YAHOO.extend(YAHOO.widget.SWF,YAHOO.util.Element,{_eventHandler:function(R){if(R.type=="swfReady"){this.createEvent("swfReady",{fireOnce:true});this.fireEvent("swfReady",R);}else{if(R.type=="log"){}else{if(this._host&&this._host.fireEvent){this._host.fireEvent(R.type,R);}else{this.fireEvent(R.type,R);}}}},callSWF:function(S,R){if(!R){R=[];}if(this._swf[S]){return(this._swf[S].apply(this._swf,R));}else{return null;}},toString:function(){return"SWF "+this._id;}});})();YAHOO.register("swf",YAHOO.widget.SWF,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
YAHOO.util.SWFStore=function(A,C,D){var B;var E;C=C.toString();D=D.toString();if(YAHOO.env.ua.ie){B="ie";}else{if(YAHOO.env.ua.gecko){B="gecko";}else{if(YAHOO.env.ua.webkit){B="webkit";}else{if(YAHOO.env.ua.caja){B="caja";}else{if(YAHOO.env.ua.opera){B="opera";}else{B="other";}}}}}if(YAHOO.util.Cookie.get("swfstore")==null||YAHOO.util.Cookie.get("swfstore")=="null"||YAHOO.util.Cookie.get("swfstore")==""){E=Math.round(Math.random()*Math.PI*100000);YAHOO.util.Cookie.set("swfstore",E);}else{E=YAHOO.util.Cookie.get("swfstore");}var F={version:9.115,useExpressInstall:false,fixedAttributes:{allowScriptAccess:"always",allowNetworking:"all",scale:"noScale"},flashVars:{shareData:C,browser:E,useCompression:D}};this.embeddedSWF=new YAHOO.widget.SWF(A,YAHOO.util.SWFStore.SWFURL,F);this.createEvent("error");this.createEvent("quotaExceededError");this.createEvent("securityError");this.createEvent("save");this.createEvent("clear");this.createEvent("pending");this.createEvent("openingDialog");this.createEvent("inadequateDimensions");};YAHOO.extend(YAHOO.util.SWFStore,YAHOO.util.AttributeProvider,{on:function(A,B){this.embeddedSWF.addListener(A,B);},addListener:function(A,B){this.embeddedSWF.addListener(A,B);},toString:function(){return"SWFStore "+this._id;},getShareData:function(){return this.embeddedSWF.callSWF("getShareData");},setShareData:function(A){this.embeddedSWF.callSWF("setShareData",[A]);},hasAdequateDimensions:function(){return this.embeddedSWF.callSWF("hasAdequateDimensions");},getUseCompression:function(){return this.embeddedSWF.callSWF("getUseCompression");},setUseCompression:function(A){this.embeddedSWF.callSWF("setUseCompression",[A]);},setItem:function(A,B){return this.embeddedSWF.callSWF("setItem",[A,B]);},getValueAt:function(A){return this.embeddedSWF.callSWF("getValueAt",[A]);},getNameAt:function(A){return this.embeddedSWF.callSWF("getNameAt",[A]);},getValueOf:function(A){return this.embeddedSWF.callSWF("getValueOf",[A]);},getTypeOf:function(A){return this.embeddedSWF.callSWF("getTypeOf",[A]);},getTypeAt:function(A){return this.embeddedSWF.callSWF("getTypeAt",[A]);},getItems:function(){return this.embeddedSWF.callSWF("getItems",[]);},removeItem:function(A){return this.embeddedSWF.callSWF("removeItem",[A]);},removeItemAt:function(A){return this.embeddedSWF.callSWF("removeItemAt",[A]);},getLength:function(){return this.embeddedSWF.callSWF("getLength",[]);},clear:function(){return this.embeddedSWF.callSWF("clear",[]);},calculateCurrentSize:function(){return this.embeddedSWF.callSWF("calculateCurrentSize",[]);},getModificationDate:function(){return this.embeddedSWF.callSWF("getModificationDate",[]);},setSize:function(B){var A=this.embeddedSWF.callSWF("setSize",[B]);return A;},displaySettings:function(){this.embeddedSWF.callSWF("displaySettings",[]);}});YAHOO.util.SWFStore.SWFURL="swfstore.swf";YAHOO.register("swfstore",YAHOO.util.SWFStore,{version:"2.8.0r4",build:"2449"});YAHOO.register("swfstore",YAHOO.util.SWFStore,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var D=YAHOO,B=D.util,A=D.lang,C;if(!B.Storage){C=function(E){D.log("Exception in YAHOO.util.Storage.?? - must be extended by a storage engine".replace("??",E).replace("??",this.getName?this.getName():"Unknown"),"error");};B.Storage=function(E,G,F){var H=this;D.env._id_counter+=1;H._cfg=A.isObject(F)?F:{};H._location=E;H._name=G;H.isReady=false;H.createEvent(H.CE_READY,{scope:H});H.createEvent(H.CE_CHANGE,{scope:H});H.subscribe(H.CE_READY,function(){H.isReady=true;});};B.Storage.prototype={CE_READY:"YUIStorageReady",CE_CHANGE:"YUIStorageChange",DELIMITER:"__",_cfg:"",_name:"",_location:"",length:0,isReady:false,clear:function(){this._clear();this.length=0;},getItem:function(E){D.log("Fetching item at  "+E);var F=this._getItem(E);return A.isValue(F)?this._getValue(F):null;},getName:function(){return this._name;},hasKey:function(E){return A.isString(E)&&this._hasKey(E);},key:function(E){D.log("Fetching key at "+E);if(A.isNumber(E)&&-1<E&&this.length>E){var F=this._key(E);if(F){return F;}}throw ("INDEX_SIZE_ERR - Storage.setItem - The provided index ("+E+") is not available");},removeItem:function(F){D.log("removing "+F);if(this.hasKey(F)){var E=this._getItem(F);if(!E){E=null;}this._removeItem(F);this.fireEvent(this.CE_CHANGE,new B.StorageEvent(this,F,E,null,B.StorageEvent.TYPE_REMOVE_ITEM));}else{}},setItem:function(G,H){D.log("SETTING "+H+" to "+G);if(A.isString(G)){var F=this.hasKey(G)?B.StorageEvent.TYPE_UPDATE_ITEM:B.StorageEvent.TYPE_ADD_ITEM,E=this._getItem(G);if(!E){E=null;}if(this._setItem(G,this._createValue(H))){this.fireEvent(this.CE_CHANGE,new B.StorageEvent(this,G,E,H,F));}else{throw ("QUOTA_EXCEEDED_ERROR - Storage.setItem - The choosen storage method ("+this.getName()+") has exceeded capacity");}}else{}},_clear:function(){C("_clear");return"";},_createValue:function(F){var E=(A.isNull(F)||A.isUndefined(F))?(""+F):typeof F;return"string"===E?F:E+this.DELIMITER+F;},_getItem:function(E){C("_getItem");return"";},_getValue:function(F){var E=F?F.split(this.DELIMITER):[];if(1==E.length){return F;}switch(E[0]){case"boolean":return"true"===E[1];case"number":return parseFloat(E[1]);case"null":return null;default:return E[1];}},_key:function(E){C("_key");return"";},_hasKey:function(E){return null!==this._getItem(E);},_removeItem:function(E){C("_removeItem");return"";},_setItem:function(E,F){C("_setItem");return"";}};A.augmentProto(B.Storage,B.EventProvider);}}());(function(){var H=YAHOO.util,B=YAHOO.lang,E={},G=[],F={},C=function(I){return(I&&I.isAvailable())?I:null;},A=function(J,I,K){var L=E[J+I.ENGINE_NAME];if(!L){L=new I(J,K);E[J+I.ENGINE_NAME]=L;}return L;},D=function(I){switch(I){case H.StorageManager.LOCATION_LOCAL:case H.StorageManager.LOCATION_SESSION:return I;default:return H.StorageManager.LOCATION_SESSION;}};H.StorageManager={LOCATION_SESSION:"sessionStorage",LOCATION_LOCAL:"localStorage",get:function(O,J,M){var K=B.isObject(M)?M:{},I=C(F[O]);if(!I&&!K.force){var N,L;if(K.order){L=K.order.length;for(N=0;N<L&&!I;N+=1){I=C(K.order[N]);}}if(!I){L=G.length;for(N=0;N<L&&!I;N+=1){I=C(G[N]);}}}if(I){return A(D(J),I,K.engine);}throw ("YAHOO.util.StorageManager.get - No engine available, please include an engine before calling this function.");},getByteSize:function(I){return encodeURIComponent(""+I).length;},register:function(I){if(B.isFunction(I)&&B.isFunction(I.isAvailable)&&B.isString(I.ENGINE_NAME)){F[I.ENGINE_NAME]=I;G.push(I);return true;}return false;}};YAHOO.register("StorageManager",H.SWFStore,{version:"2.8.0r4",build:"2449"});}());(function(){YAHOO.util.StorageEvent=function(D,B,A,E,C){this.key=B;this.oldValue=A;this.newValue=E;this.url=window.location.href;this.window=window;this.storageArea=D;this.type=C;};YAHOO.lang.augmentObject(YAHOO.util.StorageEvent,{TYPE_ADD_ITEM:"addItem",TYPE_REMOVE_ITEM:"removeItem",TYPE_UPDATE_ITEM:"updateItem"});YAHOO.util.StorageEvent.prototype={key:null,newValue:null,oldValue:null,source:null,storageArea:null,type:null,url:null};}());(function(){var B=YAHOO.util,A=YAHOO.lang;B.StorageEngineKeyed=function(){B.StorageEngineKeyed.superclass.constructor.apply(this,arguments);this._keys=[];this._keyMap={};};A.extend(B.StorageEngineKeyed,B.Storage,{_keys:null,_keyMap:null,_addKey:function(C){this._keyMap[C]=this.length;this._keys.push(C);this.length=this._keys.length;},_indexOfKey:function(D){var C=this._keyMap[D];return undefined===C?-1:C;},_removeKey:function(E){var D=this._indexOfKey(E),F=this._keys.slice(D+1);delete this._keyMap[E];for(var C in this._keyMap){if(D<this._keyMap[C]){this._keyMap[C]-=1;}}this._keys.length=D;this._keys=this._keys.concat(F);this.length=this._keys.length;}});}());(function(){var D=YAHOO.util,B=YAHOO.lang,A=function(E){if(E.begin){E.begin();}},C=function(E){if(E.commit){E.commit();}};D.StorageEngineHTML5=function(E,F){var G=this;D.StorageEngineHTML5.superclass.constructor.call(G,E,D.StorageEngineHTML5.ENGINE_NAME,F);G._engine=window[E];G.length=G._engine.length;B.later(250,G,function(){G.fireEvent(G.CE_READY);});};YAHOO.lang.extend(D.StorageEngineHTML5,D.Storage,{_engine:null,_clear:function(){var G=this;if(G._engine.clear){G._engine.clear();}else{for(var F=G.length,E;0<=F;F-=1){E=G._key(F);G._removeItem(E);}}},_getItem:function(E){var F=this._engine.getItem(E);return B.isObject(F)?F.value:F;},_key:function(E){return this._engine.key(E);},_removeItem:function(E){var F=this;A(F._engine);F._engine.removeItem(E);C(F._engine);F.length=F._engine.length;},_setItem:function(E,F){var H=this;try{A(H._engine);H._engine.setItem(E,F);C(H._engine);H.length=H._engine.length;return true;}catch(G){return false;}}},true);D.StorageEngineHTML5.ENGINE_NAME="html5";D.StorageEngineHTML5.isAvailable=function(){return window.localStorage;};D.StorageManager.register(D.StorageEngineHTML5);}());(function(){var G=YAHOO.util,B=YAHOO.lang,D=9948,C="YUIStorageEngine",F=null,E=encodeURIComponent,A=decodeURIComponent;G.StorageEngineGears=function(I,L){var O=this;G.StorageEngineGears.superclass.constructor.call(O,I,G.StorageEngineGears.ENGINE_NAME,L);
if(!F){F=google.gears.factory.create(G.StorageEngineGears.GEARS);F.open(window.location.host+"-"+G.StorageEngineGears.DATABASE);F.execute("CREATE TABLE IF NOT EXISTS "+C+" (key TEXT, location TEXT, value TEXT)");}var K=G.StorageManager.LOCATION_SESSION===O._location,H=G.Cookie.get("sessionKey"+G.StorageEngineGears.ENGINE_NAME);if(!H){F.execute("BEGIN");F.execute("DELETE FROM "+C+' WHERE location="'+E(G.StorageManager.LOCATION_SESSION)+'"');F.execute("COMMIT");}var J=F.execute("SELECT key FROM "+C+' WHERE location="'+E(O._location)+'"'),N={};try{while(J.isValidRow()){var M=A(J.field(0));if(!N[M]){N[M]=true;O._addKey(M);}J.next();}}finally{J.close();}if(K){G.Cookie.set("sessionKey"+G.StorageEngineGears.ENGINE_NAME,true);}O.length=O._keys.length;B.later(250,O,function(){O.fireEvent(O.CE_READY);});};B.extend(G.StorageEngineGears,G.StorageEngineKeyed,{_clear:function(){F.execute("BEGIN");F.execute("DELETE FROM "+C+' WHERE location="'+E(this._location)+'"');F.execute("COMMIT");this._keys=[];this.length=0;},_getItem:function(J){var I=F.execute("SELECT value FROM "+C+' WHERE key="'+E(J)+'" AND location="'+E(this._location)+'"'),K="";try{while(I.isValidRow()){var H=I.field(0);K+=I.field(0);I.next();}}finally{I.close();}return K?A(K):null;},_key:function(H){return this._keys[H];},_removeItem:function(H){F.execute("BEGIN");F.execute("DELETE FROM "+C+' WHERE key="'+E(H)+'" AND location="'+E(this._location)+'"');F.execute("COMMIT");this._removeKey(H);},_setItem:function(P,M){if(!this.hasKey(P)){this._addKey(P);}var H=E(P),Q=E(this._location),R=E(M),K=[],O=D-(H+Q).length;if(O<R.length){for(var N=0,L=R.length;N<L;N+=O){K.push(R.substr(N,O));}}else{K.push(R);}F.execute("BEGIN");F.execute("DELETE FROM "+C+' WHERE key="'+E(P)+'" AND location="'+E(this._location)+'"');for(var J=0,I=K.length;J<I;J+=1){F.execute("INSERT INTO "+C+' VALUES ("'+H+'", "'+Q+'", "'+K[J]+'")');}F.execute("COMMIT");return true;}});G.Event.on("unload",function(){if(F){F.close();}});G.StorageEngineGears.ENGINE_NAME="gears";G.StorageEngineGears.GEARS="beta.database";G.StorageEngineGears.DATABASE="yui.database";G.StorageEngineGears.isAvailable=function(){if(window.google&&window.google.gears){try{google.gears.factory.create(G.StorageEngineGears.GEARS);return true;}catch(H){}}return false;};G.StorageManager.register(G.StorageEngineGears);}());(function(){var G=YAHOO.util,B=YAHOO.lang,H=G.Dom,C=215,E=138,F=null,D=function(J,I){return J._location+J.DELIMITER+I;},A=function(J){if(!F){if(!B.isString(J.swfURL)){J.swfURL=G.StorageEngineSWF.SWFURL;}if(!J.containerID){var K=document.getElementsByTagName("body")[0],I=K.appendChild(document.createElement("div"));J.containerID=H.generateId(I);}if(!J.attributes){J.attributes={};}if(!J.attributes.flashVars){J.attributes.flashVars={};}J.attributes.flashVars.useCompression="true";J.attributes.version=9.115;F=new YAHOO.widget.SWF(J.containerID,J.swfURL,J.attributes);}};G.StorageEngineSWF=function(I,J){var K=this;G.StorageEngineSWF.superclass.constructor.call(K,I,G.StorageEngineSWF.ENGINE_NAME,J);A(K._cfg);F.unsubscribe("contentReady");F.addListener("contentReady",function(){K._swf=F._swf;F.initialized=true;var N=G.StorageManager.LOCATION_SESSION===K._location,M=G.Cookie.get("sessionKey"+G.StorageEngineSWF.ENGINE_NAME);for(var P=F.callSWF("getLength",[])-1;0<=P;P-=1){var O=F.callSWF("getNameAt",[P]),L=-1<O.indexOf(G.StorageManager.LOCATION_SESSION+K.DELIMITER);if(N&&!M){F.callSWF("removeItem",[O]);}else{if(N===L){K._addKey(O);}}}if(N){G.Cookie.set("sessionKey"+G.StorageEngineSWF.ENGINE_NAME,true);}K.length=K._keys.length;K.fireEvent(K.CE_READY);});if(F.initialized){F.fireEvent("contentReady");}};B.extend(G.StorageEngineSWF,G.StorageEngineKeyed,{_swf:null,_clear:function(){for(var J=this._keys.length-1;0<=J;J-=1){var I=this._keys[J];F.callSWF("removeItem",[I]);}this._keys=[];this.length=0;},_getItem:function(I){var J=D(this,I);return F.callSWF("getValueOf",[J]);},_key:function(I){return(this._keys[I]||"").replace(/^.*?__/,"");},_removeItem:function(I){var J=D(this,I);F.callSWF("removeItem",[J]);this._removeKey(J);},_setItem:function(I,K){var J=D(this,I),L;if(F.callSWF("getValueOf",[J])){this._removeItem(I);}this._addKey(J);if(F.callSWF("setItem",[J,K])){return true;}else{L=H.get(F._id);if(C>H.getStyle(L,"width").replace(/\D+/g,"")){H.setStyle(L,"width",C+"px");}if(E>H.getStyle(L,"height").replace(/\D+/g,"")){H.setStyle(L,"height",E+"px");}return F.callSWF("displaySettings",[]);}}});G.StorageEngineSWF.SWFURL="swfstore.swf";G.StorageEngineSWF.ENGINE_NAME="swf";G.StorageEngineSWF.isAvailable=function(){return(6<=YAHOO.env.ua.flash&&YAHOO.widget.SWF);};G.StorageManager.register(G.StorageEngineSWF);}());YAHOO.register("storage",YAHOO.util.Storage,{version:"2.8.0r4",build:"2449"});

if (typeof(k) == 'undefined' || !k) {
    var k = {};
}

(function() {
    k.a = {
        query : function(selector, rootNode) {
            return YAHOO.util.Selector.query(selector, rootNode);
        },

        each : function(inArray, callback) {
            if (typeof(callback) != 'function') {
                return;
            }

            if (typeof(inArray.length) == 'number') {
                for (var i = 0; i < inArray.length; i++) {
                    if (false === callback(i, inArray[i])) {
                        break;
                    }
                }
            } else {
                for (var i in inArray) {
                    if (YAHOO.lang.hasOwnProperty(inArray, i)) {
                        if (false === callback(i, inArray[i])) {
                            break;
                        }
                    }
                }
            }
        },

        isArray : function(inArray) {
            return YAHOO.lang.isArray(inArray);
        },

        inArray : function(val, arr) {
            var out = -1;

            k.a.each(arr, function(i, arrVal) {
                if (val == arr[i]) {
                    out = i;
                    return false;
                }
            });

            return out;
        },

        extend : function() {
            var out = {};

            for (var i = 0; i < arguments.length; i++) {
                if (YAHOO.lang.isObject(arguments[i])) {
                    k.a.each(arguments[i], function(j, objVal) {
                        out[j] = objVal;
                    });
                }
            }

            return out;
        },

        addClass : function(el, className) {
            YAHOO.util.Dom.addClass(el, className);
        },

        rmClass : function(el, className) {
            YAHOO.util.Dom.removeClass(el, className);
        },

        hasClass : function(el, className) {
            return YAHOO.util.Dom.hasClass(el, className);
        },

        hasAttr : function(el, attrName) {
            if (typeof(el.hasAttribute) == 'function') {
                return el.hasAttribute(attrName);
            } else {
                //для говно браузеров свой подход
                var attr = el.getAttribute(attrName);

                return Boolean(attr);
            }
        },

        get : function(url, data, callback, type) {
            k.a.ajax.query('GET', url, data, callback, type);
        },

        getJSON : function(url, data, callback) {
            k.a.ajax.query('GET', url, data, callback, 'json');
        },

        post : function(url, data, callback, type) {
            k.a.ajax.query('POST', url, data, callback, type);
        },

        ajaxError : function(callback) {
            k.a.ajax.setAjaxError(callback);
        },

        isBrowserIe : function() {
            return Boolean(YAHOO.env.ua.ie);
        },

        isBrowserOpera : function() {
            return Boolean(YAHOO.env.ua.opera);
        },

        isBrowserSafari : function() {
            return Boolean(YAHOO.env.ua.webkit);
        },

        isBrowserGecko : function() {
            return Boolean(YAHOO.env.ua.gecko);
        },

        getBrowserVer : function() {
            if (YAHOO.env.ua.ie) {
                return YAHOO.env.ua.ie;
            } else if (YAHOO.env.ua.gecko) {
                return YAHOO.env.ua.gecko;
            } else if (YAHOO.env.ua.opera) {
                return YAHOO.env.ua.opera;
            } else if (YAHOO.env.ua.webkit) {
                return YAHOO.env.ua.webkit;
            }
        },

        bind : function(el, event, callback) {
            YAHOO.util.Event.addListener(el, event, callback);
        },

        unbind : function(el, event, callback) {
            YAHOO.util.Event.removeListener(el, event, callback);
        },

        onDomReady : function(callback) {
            YAHOO.util.Event.onDOMReady(callback);
        },

        preventDefault : function(e) {
            YAHOO.util.Event.preventDefault(e);
        },

        stopPropagation : function(e) {
            YAHOO.util.Event.stopPropagation(e);
        },

        offset : function(el) {
            var pos = YAHOO.util.Dom.getXY(el);

            return {left : pos[0], top : pos[1]};
        },

        width : function() {
            var el = arguments[0];
            var setWidth = (typeof(arguments[1]) == 'undefined') ? null : arguments[1];

            if (null === setWidth) {
                //return current width
                return el.offsetWidth;
            } else {
                //set current width

            }
        },

        height : function() {
            var el = arguments[0];
            var setHeight = (typeof(arguments[1]) == 'undefined') ? null : arguments[1];

            if (null === setHeight) {
                //return current width
                return el.offsetHeight;
            } else {
                //set current width

            }
        }
    };
}) ();

if (typeof(k) == 'undefined' || !k) {
    var k = {};
}

if (typeof(k.a) == 'undefined' || !k.a) {
    k.a = {};
}

(function() {
    var REQUEST_TYPE_GET = 'GET';
    var REQUEST_TYPE_POST = 'POST';
    var RESPONSE_TYPE_JSON = 'json';

    var YUIOptions = {cache : false},
        //callback для ajax error
        ajaxError;

    k.a.ajax = {
        query : function(requestType, url, data, callback, responseType, iOptions) {
            if (k.a.inArray(requestType, [REQUEST_TYPE_GET, REQUEST_TYPE_POST]) === -1) {
                requestType = REQUEST_TYPE_GET;
            }

            if (requestType == REQUEST_TYPE_GET) {
                var getVars = '';

                if (YAHOO.lang.isObject(data)) {
                    getVars = k.ajax.serialize(data);
                } else if (YAHOO.lang.isString(data)) {
                    getVars = data;
                }

                if (getVars.length > 0) {
                    if (url.indexOf('?') == -1) {
                        url += '?';
                    } else {
                        url += '&';
                    }

                    url += getVars;
                }
            }

            var postData = null;
            if (requestType == REQUEST_TYPE_POST) {
                if (YAHOO.lang.isObject(data)) {
                    postData = k.ajax.serialize(data);
                } else if (YAHOO.lang.isString(data)) {
                    postData = data;
                }
            }

            var reqOptions = YUIOptions;

            if (k.a.inArray(responseType, [RESPONSE_TYPE_JSON]) === -1) {
                responseType = RESPONSE_TYPE_JSON;
            }

            reqOptions.argument = [responseType];

            if (typeof(callback) == 'function') {
                reqOptions.argument.push(callback);
            } else {
                reqOptions.argument.push(null);
            }

            reqOptions = k.a.extend(reqOptions, iOptions);

            var transaction = YAHOO.util.Connect.asyncRequest(requestType, url, reqOptions, postData);

            return transaction;
        },

        onRequestFail : function(oError) {
            if (typeof(ajaxError) == 'function') {
                ajaxError(null, oError);
            }
        },

        onRequestSuccess : function(oResponse) {
            var responseType = (typeof(oResponse.argument[0]) != 'undefined') ? oResponse.argument[0] : null;
            var callback = (YAHOO.lang.isFunction(oResponse.argument[1])) ? oResponse.argument[1] : null;

            var out = null;

            switch (responseType) {
                case RESPONSE_TYPE_JSON:
                try {
                    out = YAHOO.lang.JSON.parse(oResponse.responseText);
                } catch (e) {
                    callback = null;
                }

                break;
            }

            if (null !== callback) {
                callback(out, oResponse);
            }
        },

        setAjaxError : function(callback) {
            if (typeof(callback) == 'function') {
                ajaxError = callback;
            }
        }
    };

     //setup default error event
    YUIOptions.failure = k.a.ajax.onRequestFail;
    //setup default success event
    YUIOptions.success = k.a.ajax.onRequestSuccess;
}) ();

if (typeof k == "undefined" || !k) {
    var k = {};
}

(function() {
    var imgPreloaderEl = null;

    k.util = {
        isOnHashChange : function() {
            if ("onhashchange" in window) {
                return true;
            } else {
                return false;
            }
        },

        getHash : function() {
            if (k.a.isBrowserIe() &&  (k.a.getBrowserVer() * 1) == 6) {
                var hash = __getHashFromHref();

                if (false === hash) {
                    hash = window.location.hash;
                }

                return hash;
            } else if (k.a.isBrowserOpera()) {
                var hash = __getHashFromHref();

                if (false === hash) {
                    hash = window.location.hash;
                }

                return hash;
            } else {
                return window.location.hash;
            }
        },

        setHash : function(hash) {
            window.location.hash = hash;
        },

        setupPageProp : function(pageInfo) {
            document.title = pageInfo.ria_page_name;
        },

        string2Json : function(jsonString) {
            var first = jsonString.charAt(0);

            if (k.util.isStringJson(jsonString)) {
                var out = false;

                jsonString = 'out = ' + jsonString;
                eval(jsonString);

                return out;
            } else {
                throw new Error(-10, "Incorrect json format!");
            }
        },

        count : function(obj) {
            //моджно оптимизировать используя __count__
            var i = 0;

            k.a.each(obj, function(key, val) {
                i++;
            });

            return i;
        },

        //если будет использоваться на продакшене - переписать на флешь!
        playSound : function(path) {
            var player = document.getElementById('player');

            if (null === player) {
                var playerEl = document.createElement('embed');
                playerEl.hidden = true;
                playerEl.autostart = true;
                playerEl.loop = false;
                playerEl.id = 'player';

                var div = document.createElement('div');
                div.style.visibility = 'hidden';
                div.appendChild(playerEl);

                document.body.appendChild(div);
                player = document.getElementById('player');
            }

            player.src = path;
        },

        parseName2Arr : function(name) {
            name = name.replace(/]/g, '');

            var nameArr = name.split('[')

            return nameArr;
        },

        putValueToOut : function(out, nameArr, value) {
            var cur = out;
            var i = 1;

            k.a.each(nameArr, function(key, name) {
                if ('' == name) {
                    var total = k.util.count(cur);
                    name = total;
                }

                if (typeof(cur[name]) == 'undefined') {
                    cur[name] = {};
                }

                if (i == nameArr.length) {
                    cur[name] = value;
                }

                cur = cur[name];

                i++;
            });

            return out;
        },

        inObject : function(value, obj) {
            if (typeof(obj) != 'object') {
                return false;
            }

            var out = false;

            k.a.each(obj, function(objKey, objVal) {
                if (objVal == value) {
                    out = objKey;
                    return false;
                }
            });

            return out;
        },

        /*
         * проверяет - совпадают ли объекты.
         * работает рекурсивно.
         * Если объекты разные - true
         * Если объекты одинаковые - false
         *
         **/
        isDiff : function(obj1, obj2) {
            var out = false;

            k.a.each(obj1, function(key, value) {
                if (typeof(obj2[key]) == 'undefined') {
                    out = true;
                    return false;
                } else if (typeof(value) != typeof(obj2[key])) {
                    out = true;
                    return false;
                } else {
                    if (null === value || typeof(value) != 'object') {
                        if (value != obj2[key]) {
                            out = true;
                            return false;
                        }
                    } else {
                        out = k.util.isDiff(value, obj2[key]);
                    }
                }
            });

            return out;
        },

        objKeys : function(obj) {
            var out = [];

            k.a.each(obj, function(key, val) {
                out.push(key);
            });

            return out;
        },

        objKeysIdx : function(obj) {
            var out = {};

            k.a.each(obj, function(key, val) {
                out[key] = '';
            });

            return out;
        },

        /*
         * возвращает высоту рабочей области - без прокрутки
         *
         **/
        windowHeight : function() {
            var de = document.documentElement;

            if (self.innerHeight) {
                return self.innerHeight;
            } else if (de && de.clientHeight) {
                return de.clientHeight;
            } else {
                return document.body.clientHeight;
            }
        },

        /*
         * возвращает ширину рабочей области - без прокрутки
         *
         **/
        windowWidth : function() {
            var de = document.documentElement;

            if (self.innerWidth) {
                return self.innerWidth;
            } else if (de && de.clientWidth) {
                return de.clientWidth;
            } else {
                return document.body.clientWidth;
            }
        },

        /*
         * вовращает высоту body вместе со скролингом
         *
         **/
        documentHeight : function() {
            return (document.body.scrollHeight > document.body.offsetHeight) ? document.body.scrollHeight : document.body.offsetHeight;
        },

        /*
         * возвращает ширину body вместе со скроленгом
         *
         **/
        documentWidth : function() {
            return (document.body.scrollWidth > document.body.offsetWidth) ? document.body.scrollWidth : document.body.offsetWidth;
        },

        scrollX : function () {
            return window.pageXOffset ? window.pageXOffset : document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft;
        },

        scrollY : function() {
            return window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
        },

        getWinCenterX : function(blockWidth) {
            var left = 0,
                winWidth  = k.util.windowWidth();

            if (winWidth > blockWidth) {
                left = Math.round((winWidth - blockWidth) / 2);
            }

            left += k.util.scrollX();

            return left;
        },

        getWinCenterY : function(blockHeight) {
            var top = 0,
                winHeight = k.util.windowHeight();

            if (winHeight > blockHeight) {
                top = Math.round((winHeight - blockHeight) / 2);
            }

            top += k.util.scrollY();

            return top;
        },
        /*
         * останавливает всплытие для события
         *
         **/
        stopBubble : function(e) {
            if (e && e.stopPropagation) {
                e.stopPropagation();
            } else {
                window.event.cancelBubble = true;
            }
        },

        isStringJson : function(jsonString) {
            var first = jsonString.charAt(0);
            var last = jsonString.charAt(jsonString.length - 1);
            var numReg = /^\d+$/;

            if (jsonString == 'null' || jsonString == 'true' || jsonString == 'false') {
                return true;
            } else if ((first == '[' && last == ']') || (first == '{' && last == '}')) {
                return true;
            } else if (numReg.test(jsonString)) {
                return true;
            } else {
                return false;
            }
        },

        stripTags : function(str) {
            str = str.replace(/<\/?[^>]+>/gi, "");

            return str;
        },

        trim : function(str) {
            return str.replace(/(^\s+)|(\s+$)/g, "");
        },

        preloadImages : function (images) {
            if (null === imgPreloaderEl) {
                imgPreloaderEl = document.createElement('div');
                imgPreloaderEl.style.position = 'absolute';
                imgPreloaderEl.style.top = '0px';
                imgPreloaderEl.style.left = '0px';
                imgPreloaderEl.style.height = '1px';
                imgPreloaderEl.style.overflow = 'hidden';
                imgPreloaderEl.style.visibility = 'hidden';
                document.body.appendChild(imgPreloaderEl);
            }

            k.a.each(images, function(i, value) {
                imgPreloaderEl.innerHTML += '<img src="' + value + '" />';
            });
        }
    };

    /*
     * Для говно-браузеров - хешь режем из window.location.href
     *
     **/
    function __getHashFromHref()
    {
        var pos = window.location.href.indexOf('#');

        if (pos == -1) {
            return false;
        } else {
            return window.location.href.substr(pos);
        }
    }
}) ();

if (typeof k == "undefined" || !k) {
    var k = {};
}

(function() {
    var loadingNow = false,
        processList = {},
        pidCounter = 0,
        renderProcessList = {},
        renderingNow = false, //список процессов рендеринга модулей. Нужен при первичной загрузке страницы
        onRenderFinish,
        loadingBarVisible = false;

    var config = {loadingBarId : 'loading'};

    k.loading = {
        start : function(name) {
            loadingNow = true;

            processList[pidCounter] = (typeof(name) == 'undefined') ? 1 : name;

            showLoading();

            return pidCounter++;
        },

        end : function(key) {
            if (typeof(processList[key]) != 'undefined') {
                delete processList[key];
            }

            checkIsLoading();

            hideLoading();
        },

        isLoading : function() {
            return loadingNow;
        },

        startRender : function(moduleName) {
            renderingNow = true;

            renderProcessList[moduleName] = 1;

            showLoading();
        },

        endRender : function(moduleName) {
            if (typeof(renderProcessList[moduleName]) != 'undefined') {
                delete renderProcessList[moduleName];
            }

            checkIsRendering();

            hideLoading();

            if (false === renderingNow && typeof(onRenderFinish) == 'function') {
                onRenderFinish();
            }
        },

        setOnRenderFinish : function(callback) {
            if (typeof(callback) == 'function') {
                onRenderFinish = callback;
            }
        },

        setConfig : function(iConfig) {
            if (typeof(iConfig) == 'object') {
                config = k.a.extend(config, iConfig);
            }
        }
    };

    function showLoading()
    {
        if (!loadingBarVisible) {
            loadingBarVisible = true;
            document.getElementById(config.loadingBarId).style.display = 'block';
        }
    }

    function hideLoading()
    {
        if (!renderingNow && !loadingNow) {
            loadingBarVisible = false;
            document.getElementById(config.loadingBarId).style.display = 'none';
        }
    }

    function checkIsRendering()
    {
        var cnt = null;

        k.a.each(renderProcessList, function(key, value) {
            if (null === cnt) {
                cnt = true;
                return false;
            }
        });

        if (null === cnt) {
            renderingNow = false;
        }
    }

    function checkIsLoading()
    {
        var cnt = null;

        k.a.each(processList, function(key, value) {
            if (null === cnt) {
                cnt = true;
                return false;
            }
        });

        if (null === cnt) {
            loadingNow = false;
        }
    }
}) ();

if (typeof k == "undefined" || !k) {
    var k = {};
}

(function() {
    var config = {rmNotifications : false};

    k.ajax = {
        get  : function(url, data, callback, type, options) {
            var loadingPid = __startLoading(options);
            __removeNotifications(options);

            k.a.get(url, data, function(respData) {
                __endLoading(loadingPid);
                __processResponse(respData, type, callback);
            }, type);
        },

        getJSON : function(url, data, callback, options) {
            var loadingPid = __startLoading(options);
            __removeNotifications(options);

            k.a.getJSON(url, data, function(respData) {
                __endLoading(loadingPid);
                __processResponse(respData, 'json', callback);
            });
        },

        post : function(url, data, callback, type, options) {
            var loadingPid = __startLoading(options);
            __removeNotifications(options);

            k.a.post(url, data, function(respData) {
                __endLoading(loadingPid);
                __processResponse(respData, type, callback);
            }, type);
        },

        init : function() {
            __setupEvents();
        },

        checkResponse : function(response, dataType) {
            return true;
        },

        serialize : function(obj, encode) {
            if (typeof(encode) == 'undefined') {
                encode = true;
            }

            return __serialize(obj, '', encode);
        },

        /*
         * сериализует форму и возвращает объект
         *
         **/
        serializeForm : function(formEl) {
            return __serializeForm(formEl);
        }
    };

    function __processResponse(responseData, dataType, callback)
    {
        if (!k.ajax.checkResponse(responseData, dataType)) {
            console.log('TODO: вывести сообщение пользователю.');
            return;
        }

        if (typeof(callback) == 'function') {
            callback(responseData);
        }
    }

    function __setupEvents()
    {
        k.a.ajaxError(function(event, request, settings, thrownError) {
            var responseJson = k.util.string2Json(request.responseText);

            if (typeof(responseJson.system) != 'undefined') {
                if (responseJson.system.type == 'exception') {
                    if (typeof(responseJson.exception) != 'undefined') {
                        console.log('Message:' + responseJson.exception.message);
                        console.log('File:' + responseJson.exception.file);
                        console.log('Code:' + responseJson.exception.code);
                        console.log('Trace:' + responseJson.exception.trace);
                    }
                }
            }
        });
    }

    function __serialize(inData, prefix, encode)
    {
        if(typeof(prefix) == 'undefined') {
            prefix = '';
        }

        var out = '';
        var oType = typeof(inData);

        if (oType == 'object') {
            if (k.a.isArray(inData)) {
                k.a.each(inData, function(i, itemVal) {
                    out = __addAmp2Str(out);
                    var curKey = ('' == prefix) ? '[' + i + ']' : prefix + '[' + i +']';

                    if (typeof(inData[i]) == 'object') {
                        out += __serialize(inData[i], curKey, encode);
                    } else {
                        if (encode) {
                            out += __encodeParamName(curKey) + '=' + __encodeParamValue(inData[i]);
                        } else {
                            out += curKey + '=' + inData[i];
                        }
                    }
                });
            } else if (oType == 'object') {
                k.a.each(inData, function(i, itemVal) {
                    out = __addAmp2Str(out);
                    var curKey = ('' == prefix) ? i : prefix + '[' + i + ']';

                    if (null !== inData[i] && typeof(inData[i]) == 'object') {
                        out += __serialize(inData[i], curKey, encode);
                    } else {
                        var val = (null === inData[i]) ? '' : inData[i];

                        if (encode) {
                            out += __encodeParamName(curKey) + '=' + __encodeParamValue(val);
                        } else {
                            out += curKey + '=' + val;
                        }
                    }
                });
            }
        }

        return out;
    }

    function __encodeParamName(value)
    {
        return encodeURIComponent(value);
    }

    function __encodeParamValue(value)
    {
        return encodeURIComponent(value);
    }

    function __addAmp2Str(out)
    {
        if (out.length > 0) {
            out += '&';
        }

        return out;
    }

    function __removeNotifications(options)
    {
        if (!config.rmNotifications) {
            return;
        }

        var rmNotify = false;

        if (typeof(options) == 'object' && typeof(options.notRmNotify) != 'undefined') {
            if (!options.notRmNotify) {
                rmNotify = true;
            }

            delete options.notRmNotify;
        } else {
            rmNotify = true;
        }

        if (rmNotify) {
            k.notification.removeAll();
        }
    }

    function __startLoading(options)
    {
        var loadingPid = null;
        if (typeof(options) != 'object' || typeof(options.not_loading) == 'undefined' || !options.not_loading) {
            loadingPid = k.loading.start();
        }

        return loadingPid;
    }

    function __endLoading(loadingPid)
    {
        if (null !== loadingPid) {
            k.loading.end(loadingPid);
        }
    }

    function __serializeForm(formEl)
    {
        var elements = k.a.query('input, select, textarea', formEl);
        var out = {};

        k.a.each(elements, function(key, element) {
            var tagName = element.tagName.toLowerCase();
            var name = element.getAttribute('name');

            if (null === name || '' === name) {
                return;
            }

            var nameArr = k.util.parseName2Arr(name);

            switch (tagName) {
                case 'input':
                    var type = element.getAttribute('type');
                    var value = element.value;

                    if (null === value) {
                        value = '';
                    }

                    switch (type) {
                        case 'radio':
                            if (element.checked) {
                                out = k.util.putValueToOut(out, nameArr, value);
                            }
                            break;
                        case 'checkbox':
                            if (element.checked) {
                                out = k.util.putValueToOut(out, nameArr, value);
                            }
                            break;
                        case 'file':
                            break;
                        default:
                            out = k.util.putValueToOut(out, nameArr, value);
                            break;
                    }
                    break;
                case 'textarea':
                    var value = element.value;
                    out = k.util.putValueToOut(out, nameArr, value);
                    break;
                case 'select':
                    if (k.a.hasAttr(element, 'multiple')) {
                        var options = element.getElementsByTagName('option');
                        var value = [];

                        k.a.each(options, function(optKey, optEl) {
                            if (optEl.selected) {
                                value.push(optEl.value);
                            }
                        });
                    } else {
                        var value = element.value;
                    }

                    out = k.util.putValueToOut(out, nameArr, value);
                    break;
            }
        });

        return out;
    }
}) ();

k.ajax.init();
k.get = k.ajax.get;
k.getJSON = k.ajax.getJSON;
k.post = k.ajax.post;

if (typeof k == "undefined" || !k) {
    var k = {};
}

k.lang = {'validate.isEmpty'              : 'Поле не может быть пустым',
          'validate.notDigits'            : 'Поле может содержать только цифры',
          'validate.notBetween'           : 'Значение должно находтся в промежутках \'%min%\' и \'%max%\', включительно',
          'validate.notBetweenStrict'     : 'Значение должно находтся в промежутках \'%min%\' и \'%max%\'',
          'validate.notFloat'             : 'Значение должно быть числом с плавающей точкой.',
          'validate.uriInvalid'           : 'Некорректный формат uri! Допускается использовать буквы латинского алфавита, цифры, знаки: "-" и "_".',
          'validate.dateInvalid'          : 'Неверный формат даты',
          'validate.stringLengthTooShort' : 'Строка слишком короткая. Минимальная длина строки  %min% символов.',
          'validate.stringLengthTooLong'  : 'Строка слишком длинная. Максимальная длина строки  %max% символов.',
          'validate.invalidEmail'         : 'Неверный формат E-mail адреса.',
          'main.remove'                   : 'Удалить',
          'main.close'                    : 'Закрыть',
          'main.autocomplete_not_found'   : 'По Вашему запросу ничего не найдено'};

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=function(){var A=YAHOO.util.Event,B=YAHOO.util.Dom;return{useShim:false,_shimActive:false,_shimState:false,_debugShim:false,_createShim:function(){var C=document.createElement("div");C.id="yui-ddm-shim";if(document.body.firstChild){document.body.insertBefore(C,document.body.firstChild);}else{document.body.appendChild(C);}C.style.display="none";C.style.backgroundColor="red";C.style.position="absolute";C.style.zIndex="99999";B.setStyle(C,"opacity","0");this._shim=C;A.on(C,"mouseup",this.handleMouseUp,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(window,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shimActive){var C=this._shim;C.style.height=B.getDocumentHeight()+"px";C.style.width=B.getDocumentWidth()+"px";C.style.top="0";C.style.left="0";}},_activateShim:function(){if(this.useShim){if(!this._shim){this._createShim();}this._shimActive=true;var C=this._shim,D="0";if(this._debugShim){D=".5";}B.setStyle(C,"opacity",D);this._sizeShim();C.style.display="block";}},_deactivateShim:function(){this._shim.style.display="none";this._shimActive=false;},_shim:null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initialized:false,locked:false,interactionInfo:null,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in this.ids){for(var C in this.ids[F]){var G=this.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true);},_onResize:function(C){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromTimeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();}if(!this.ids[C]){this.ids[C]={};}this.ids[C][D.id]=D;},removeDDFromGroup:function(E,C){if(!this.ids[C]){this.ids[C]={};}var D=this.ids[C];if(D&&D[E.id]){delete D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var C=this.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){this.handleIds[D]={};}this.handleIds[D][C]=C;},isDragDrop:function(C){return(this.getDDById(C))?true:false;},getRelated:function(H,D){var G=[];for(var F in H.groups){for(var E in this.ids[F]){var C=this.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G[G.length]=C;}}}return G;},isLegalTarget:function(G,F){var D=this.getRelated(G,true);for(var E=0,C=D.length;E<C;++E){if(D[E].id==F.id){return true;}}return false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:function(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:function(D){for(var C in this.ids){if(this.ids[C][D]){return this.ids[C][D];}}return null;},handleMouseDown:function(E,D){this.currentTarget=YAHOO.util.Event.getTarget(E);this.dragCurrent=D;var C=D.getEl();this.startX=YAHOO.util.Event.getPageX(E);this.startY=YAHOO.util.Event.getPageY(E);this.deltaX=this.startX-C.offsetLeft;this.deltaY=this.startY-C.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var F=YAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=true;},this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this.dragCurrent.useShim){this._shimState=this.useShim;this.useShim=true;}this._activateShim();clearTimeout(this.clickTimeout);var D=this.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fireEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDrag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=true;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clickTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=false;this.handleMouseMove(C);}this.fromTimeout=false;this.fireEvents(C,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C){if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.preventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D){var C=this.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDrag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDrag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp){C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){this.useShim=this._shimState;this._shimState=false;}}this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(F){var C=this.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stopEvent(F);return this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragThreshMet){var E=Math.abs(this.startX-YAHOO.util.Event.getPageX(F));var D=Math.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPixelThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("dragEvent",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fireEvents:function(V,L){var a=this.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var N=YAHOO.util.Event.getPageX(V),M=YAHOO.util.Event.getPageY(V),P=new YAHOO.util.Point(N,M),K=a.getTargetCoord(P.x,P.y),F=a.getDragEl(),E=["out","over","drop","enter"],U=new YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=[],D={},Q=[],c={outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var S in this.dragOvers){var d=this.dragOvers[S];if(!this.isTypeOfDD(d)){continue;
}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=true;delete this.dragOvers[S];}for(var R in a.groups){if("string"!=typeof R){continue;}for(S in this.ids[R]){var G=this.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.isLocked()&&G!=a){if(this.isOverTarget(P,G,this.mode,U)){D[R]=true;if(L){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overEvts.push(G);}this.dragOvers[G.id]=G;}}}}}this.interactionInfo={out:c.outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,draggedRegion:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDropEvent",{e:V});}}for(S=0;S<E.length;S++){var Y=null;if(c[E[S]+"Evts"]){Y=c[E[S]+"Evts"];}if(Y&&Y.length){var H=E[S].charAt(0).toUpperCase()+E[S].substr(1),X="onDrag"+H,J="b4Drag"+H,O="drag"+H+"Event",W="drag"+H;if(this.mode){if(a.events[J]){a[J](V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var Z=0,T=Y.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEvent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},getBestMatch:function(E){var G=null;var D=E.length;if(D==1){G=E[0];}else{for(var F=0;F<D;++F){var C=E[F];if(this.mode==this.INTERSECT&&C.cursorIsOver){G=C;break;}else{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea())){G=C;}}}}return G;},refreshCache:function(D){var F=D||this.ids;for(var C in F){if("string"!=typeof C){continue;}for(var E in this.ids[C]){var G=this.ids[C][E];if(this.isTypeOfDD(G)){var H=this.getLocation(G);if(H){this.locationCache[G.id]=H;}else{delete this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var C=D.offsetParent;if(C){return true;}}}catch(E){}return false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var F=H.getEl(),K,E,D,M,L,N,C,J,G;try{K=YAHOO.util.Dom.getXY(F);}catch(I){}if(!K){return null;}E=K[0];D=E+F.offsetWidth;M=K[1];L=M+F.offsetHeight;N=M-H.padding[0];C=D+H.padding[1];J=L+H.padding[2];G=E-H.padding[3];return new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var G=this.locationCache[C.id];if(!G||!this.useCache){G=this.getLocation(C);this.locationCache[C.id]=G;}if(!G){return false;}C.cursorIsOver=G.contains(K);var J=this.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return C.cursorIsOver;}C.overlap=null;if(!F){var H=J.getTargetCoord(K.x,K.y);var D=J.getDragEl();F=new YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var I=F.intersect(G);if(I){C.overlap=I;return(E)?true:C.cursorIsOver;}else{return false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;}this._execOnAll("unreg",[]);this.ids={};},elementCache:{},getElWrapper:function(D){var C=this.elementCache[D];if(!C||!C.el){C=this.elementCache[D]=new this.ElementWrapper(YAHOO.util.Dom.get(D));}return C;},getElement:function(C){return YAHOO.util.Dom.get(C);},getCss:function(D){var C=YAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:function(C){this.el=C||null;this.id=this.el&&C.id;this.css=this.el&&C.style;},getPosX:function(C){return YAHOO.util.Dom.getX(C);},getPosY:function(C){return YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode(C);}else{var F=C.parentNode;var D=C.nextSibling;if(D==E){F.insertBefore(E,C);}else{if(C==E.nextSibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.insertBefore(E,D);}}}},getScroll:function(){var E,C,F=document.documentElement,D=document.body;if(F&&(F.scrollTop||F.scrollLeft)){E=F.scrollTop;C=F.scrollLeft;}else{if(D){E=D.scrollTop;C=D.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){return YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(C,E){var D=YAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:function(){return YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C);},_timeoutCount:0,_addListeners:function(){var C=YAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C._timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&document.body){C._timeoutCount+=1;}}}},handleWasClicked:function(C,E){if(this.isHandle(E,C.id)){return true;}else{var D=C.parentNode;while(D){if(this.isHandle(E,D.id)){return true;}else{D=D.parentNode;}}}return false;}};}();YAHOO.util.DDM=YAHOO.util.DragDropMgr;YAHOO.util.DDM._addListeners();}(function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;YAHOO.util.DragDrop=function(E,C,D){if(E){this.init(E,C,D);}};YAHOO.util.DragDrop.prototype={events:null,on:function(){this.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,deltaX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},getEl:function(){if(!this._domRef){this._domRef=B.get(this.id);
}return this._domRef;},getDragEl:function(){return B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(this._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var E in this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){this.config=D||{};this.events={};this.DDM=YAHOO.util.DDM;this.groups={};if(typeof E!=="string"){this._domRef=E;E=B.generateId(E);}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;A.onAvailable(E,this.handleOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();},applyConfig:function(){this.events={mouseDown:true,b4MouseDown:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endDrag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:true,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:true};if(this.config.events){for(var C in this.config.events){if(this.config.events[C]===false){this.events[C]=false;}}}this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);this.dragOnly=((this.config.dragOnly===true)?true:false);this.useShim=((this.config.useShim===true)?true:false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E];}else{if(!F&&0!==F){this.padding=[E,C,E,C];}else{this.padding=[E,C,F,D];}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.display=="none")){}else{}return;}var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H);},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1];},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function(C){this.dragElId=C;},setHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.handleElId=C;this.DDM.regHandle(this.id,C);},setOuterHandleElId:function(C){if(typeof C!=="string"){C=B.generateId(C);}A.on(C,"mousedown",this.handleMouseDown,this,true);this.setHandleElId(C);this.hasOuterHandles=true;},unreg:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var D=J.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isLocked()){return;}var C=this.b4MouseDown(J),F=true;if(this.events.b4MouseDown){F=this.fireEvent("b4MouseDownEvent",J);}var E=this.onMouseDown(J),H=true;if(this.events.mouseDown){H=this.fireEvent("mouseDownEvent",J);}if((C===false)||(E===false)||(F===false)||(H===false)){return;}this.DDM.refreshCache(this.groups);var G=new YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setStartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}else{}}},clickValidator:function(D){var C=YAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTargetCoord:function(E,D){var C=E-this.deltaX;var F=D-this.deltaY;if(this.constrainX){if(C<this.minX){C=this.minX;}if(C>this.maxX){C=this.maxX;}}if(this.constrainY){if(F<this.minY){F=this.minY;}if(F>this.maxY){F=this.maxY;}}C=this.getTick(C,this.xTicks);F=this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D;},addInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}this.invalidHandleIds[C]=C;},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=B.generateId(C);}delete this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase();}catch(G){H=F.nodeName;}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D]);}return E;},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true;}}this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true;}}this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftConstraint=parseInt(E,10);this.rightConstraint=parseInt(D,10);this.minX=this.initPageX-this.leftConstraint;this.maxX=this.initPageX+this.rightConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(C,E,D){this.topConstraint=parseInt(C,10);this.bottomConstraint=parseInt(E,10);this.minY=this.initPageY-this.topConstraint;this.maxY=this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,D);
}this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(I,F){if(!F){return I;}else{if(F[0]>=I){return F[0];}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E];}}return F[F.length-1];}}},toString:function(){return("DragDrop "+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider);})();YAHOO.util.DD=function(C,A,B){if(C){this.init(C,A,B);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.deltaX=B;this.deltaY=A;},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);if(!this.deltaSetXY){var H=[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var D=parseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var B=parseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=[D-E.x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}this.cachePosition(E.x,E.y);var A=this;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A;}else{var C=YAHOO.util.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var L=this.DDM.getClientHeight();var B=this.DDM.getClientWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(A){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4Drag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},toString:function(){return("DD "+this.id);}});YAHOO.util.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame();}};YAHOO.util.DDProxy.dragElId="ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this,A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame();},50);return;}var F=this.getDragEl(),E=YAHOO.util.Dom;if(!F){F=document.createElement("div");F.id=this.dragElId;var D=F.style;D.position="absolute";D.visibility="hidden";D.cursor="move";D.border="2px solid #aaa";D.zIndex=999;D.height="25px";D.width="25px";var C=document.createElement("div");E.setStyle(C,"height","100%");E.setStyle(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.setDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_resizeProxy:function(){if(this.resizeFrame){var H=YAHOO.util.Dom;var B=this.getEl();var C=this.getDragEl();var G=parseInt(H.getStyle(C,"borderTopWidth"),10);var I=parseInt(H.getStyle(C,"borderRightWidth"),10);var F=parseInt(H.getStyle(C,"borderBottomWidth"),10);var D=parseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=0;}if(isNaN(I)){I=0;}if(isNaN(F)){F=0;}if(isNaN(D)){D=0;}var E=Math.max(0,B.offsetWidth-I-D);var A=Math.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyle(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();var A=YAHOO.util.Event.getPageX(B);var C=YAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:function(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var C=YAHOO.util.Dom;var B=this.getEl();var A=this.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibility","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hidden");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy "+this.id);}});YAHOO.util.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toString:function(){return("DDTarget "+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var B=YAHOO.util.Dom.getXY,A=YAHOO.util.Event,D=Array.prototype.slice;function C(G,E,F,H){C.ANIM_AVAIL=(!YAHOO.lang.isUndefined(YAHOO.util.Anim));if(G){this.init(G,E,true);this.initSlider(H);this.initThumb(F);}}YAHOO.lang.augmentObject(C,{getHorizSlider:function(F,G,I,H,E){return new C(F,F,new YAHOO.widget.SliderThumb(G,F,I,H,0,0,E),"horiz");},getVertSlider:function(G,H,E,I,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,0,0,E,I,F),"vert");},getSliderRegion:function(G,H,J,I,E,K,F){return new C(G,G,new YAHOO.widget.SliderThumb(H,G,J,I,E,K,F),"region");},SOURCE_UI_EVENT:1,SOURCE_SET_VALUE:2,SOURCE_KEY_EVENT:3,ANIM_AVAIL:false},true);YAHOO.extend(C,YAHOO.util.DragDrop,{_mouseDown:false,dragOnly:true,initSlider:function(E){this.type=E;this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);this.isTarget=false;this.animate=C.ANIM_AVAIL;this.backgroundEnabled=true;this.tickPause=40;this.enableKeys=true;this.keyIncrement=20;this.moveComplete=true;this.animationDuration=0.2;this.SOURCE_UI_EVENT=1;this.SOURCE_SET_VALUE=2;this.valueChangeSource=0;this._silent=false;this.lastOffset=[0,0];},initThumb:function(F){var E=this;this.thumb=F;F.cacheBetweenDrags=true;if(F._isHoriz&&F.xTicks&&F.xTicks.length){this.tickPause=Math.round(360/F.xTicks.length);}else{if(F.yTicks&&F.yTicks.length){this.tickPause=Math.round(360/F.yTicks.length);}}F.onAvailable=function(){return E.setStartSliderState();};F.onMouseDown=function(){E._mouseDown=true;return E.focus();};F.startDrag=function(){E._slideStart();};F.onDrag=function(){E.fireEvents(true);};F.onMouseUp=function(){E.thumbMouseUp();};},onAvailable:function(){this._bindKeyEvents();},_bindKeyEvents:function(){A.on(this.id,"keydown",this.handleKeyDown,this,true);A.on(this.id,"keypress",this.handleKeyPress,this,true);},handleKeyPress:function(F){if(this.enableKeys){var E=A.getCharCode(F);switch(E){case 37:case 38:case 39:case 40:case 36:case 35:A.preventDefault(F);break;default:}}},handleKeyDown:function(J){if(this.enableKeys){var G=A.getCharCode(J),F=this.thumb,H=this.getXValue(),E=this.getYValue(),I=true;switch(G){case 37:H-=this.keyIncrement;break;case 38:E-=this.keyIncrement;break;case 39:H+=this.keyIncrement;break;case 40:E+=this.keyIncrement;break;case 36:H=F.leftConstraint;E=F.topConstraint;break;case 35:H=F.rightConstraint;E=F.bottomConstraint;break;default:I=false;}if(I){if(F._isRegion){this._setRegionValue(C.SOURCE_KEY_EVENT,H,E,true);}else{this._setValue(C.SOURCE_KEY_EVENT,(F._isHoriz?H:E),true);}A.stopEvent(J);}}},setStartSliderState:function(){this.setThumbCenterPoint();this.baselinePos=B(this.getEl());this.thumb.startOffset=this.thumb.getOffsetFromParent(this.baselinePos);if(this.thumb._isRegion){if(this.deferredSetRegionValue){this._setRegionValue.apply(this,this.deferredSetRegionValue);this.deferredSetRegionValue=null;}else{this.setRegionValue(0,0,true,true,true);}}else{if(this.deferredSetValue){this._setValue.apply(this,this.deferredSetValue);this.deferredSetValue=null;}else{this.setValue(0,true,true,true);}}},setThumbCenterPoint:function(){var E=this.thumb.getEl();if(E){this.thumbCenterPoint={x:parseInt(E.offsetWidth/2,10),y:parseInt(E.offsetHeight/2,10)};}},lock:function(){this.thumb.lock();this.locked=true;},unlock:function(){this.thumb.unlock();this.locked=false;},thumbMouseUp:function(){this._mouseDown=false;if(!this.isLocked()){this.endMove();}},onMouseUp:function(){this._mouseDown=false;if(this.backgroundEnabled&&!this.isLocked()){this.endMove();}},getThumb:function(){return this.thumb;},focus:function(){this.valueChangeSource=C.SOURCE_UI_EVENT;var E=this.getEl();if(E.focus){try{E.focus();}catch(F){}}this.verifyOffset();return !this.isLocked();},onChange:function(E,F){},onSlideStart:function(){},onSlideEnd:function(){},getValue:function(){return this.thumb.getValue();},getXValue:function(){return this.thumb.getXValue();},getYValue:function(){return this.thumb.getYValue();},setValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setValue.apply(this,E);},_setValue:function(I,L,G,H,E){var F=this.thumb,K,J;if(!F.available){this.deferredSetValue=arguments;return false;}if(this.isLocked()&&!H){return false;}if(isNaN(L)){return false;}if(F._isRegion){return false;}this._silent=E;this.valueChangeSource=I||C.SOURCE_SET_VALUE;F.lastOffset=[L,L];this.verifyOffset();this._slideStart();if(F._isHoriz){K=F.initPageX+L+this.thumbCenterPoint.x;this.moveThumb(K,F.initPageY,G);}else{J=F.initPageY+L+this.thumbCenterPoint.y;this.moveThumb(F.initPageX,J,G);}return true;},setRegionValue:function(){var E=D.call(arguments);E.unshift(C.SOURCE_SET_VALUE);return this._setRegionValue.apply(this,E);},_setRegionValue:function(F,J,H,I,G,K){var L=this.thumb,E,M;if(!L.available){this.deferredSetRegionValue=arguments;return false;}if(this.isLocked()&&!G){return false;}if(isNaN(J)){return false;}if(!L._isRegion){return false;}this._silent=K;this.valueChangeSource=F||C.SOURCE_SET_VALUE;L.lastOffset=[J,H];this.verifyOffset();this._slideStart();E=L.initPageX+J+this.thumbCenterPoint.x;M=L.initPageY+H+this.thumbCenterPoint.y;this.moveThumb(E,M,I);return true;},verifyOffset:function(){var F=B(this.getEl()),E=this.thumb;if(!this.thumbCenterPoint||!this.thumbCenterPoint.x){this.setThumbCenterPoint();}if(F){if(F[0]!=this.baselinePos[0]||F[1]!=this.baselinePos[1]){this.setInitPosition();this.baselinePos=F;E.initPageX=this.initPageX+E.startOffset[0];E.initPageY=this.initPageY+E.startOffset[1];E.deltaSetXY=null;this.resetThumbConstraints();return false;}}return true;},moveThumb:function(K,J,I,G){var L=this.thumb,M=this,F,E,H;if(!L.available){return;}L.setDelta(this.thumbCenterPoint.x,this.thumbCenterPoint.y);E=L.getTargetCoord(K,J);F=[Math.round(E.x),Math.round(E.y)];if(this.animate&&L._graduated&&!I){this.lock();this.curCoord=B(this.thumb.getEl());this.curCoord=[Math.round(this.curCoord[0]),Math.round(this.curCoord[1])];setTimeout(function(){M.moveOneTick(F);},this.tickPause);}else{if(this.animate&&C.ANIM_AVAIL&&!I){this.lock();
H=new YAHOO.util.Motion(L.id,{points:{to:F}},this.animationDuration,YAHOO.util.Easing.easeOut);H.onComplete.subscribe(function(){M.unlock();if(!M._mouseDown){M.endMove();}});H.animate();}else{L.setDragElPos(K,J);if(!G&&!this._mouseDown){this.endMove();}}}},_slideStart:function(){if(!this._sliding){if(!this._silent){this.onSlideStart();this.fireEvent("slideStart");}this._sliding=true;this.moveComplete=false;}},_slideEnd:function(){if(this._sliding){var E=this._silent;this._sliding=false;this.moveComplete=true;this._silent=false;if(!E){this.onSlideEnd();this.fireEvent("slideEnd");}}},moveOneTick:function(F){var H=this.thumb,G=this,I=null,E,J;if(H._isRegion){I=this._getNextX(this.curCoord,F);E=(I!==null)?I[0]:this.curCoord[0];I=this._getNextY(this.curCoord,F);J=(I!==null)?I[1]:this.curCoord[1];I=E!==this.curCoord[0]||J!==this.curCoord[1]?[E,J]:null;}else{if(H._isHoriz){I=this._getNextX(this.curCoord,F);}else{I=this._getNextY(this.curCoord,F);}}if(I){this.curCoord=I;this.thumb.alignElWithMouse(H.getEl(),I[0]+this.thumbCenterPoint.x,I[1]+this.thumbCenterPoint.y);if(!(I[0]==F[0]&&I[1]==F[1])){setTimeout(function(){G.moveOneTick(F);},this.tickPause);}else{this.unlock();if(!this._mouseDown){this.endMove();}}}else{this.unlock();if(!this._mouseDown){this.endMove();}}},_getNextX:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[0]>F[0]){J=H.tickSize-this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]-J,E[1]);I=[G.x,G.y];}else{if(E[0]<F[0]){J=H.tickSize+this.thumbCenterPoint.x;G=H.getTargetCoord(E[0]+J,E[1]);I=[G.x,G.y];}else{}}return I;},_getNextY:function(E,F){var H=this.thumb,J,G=[],I=null;if(E[1]>F[1]){J=H.tickSize-this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]-J);I=[G.x,G.y];}else{if(E[1]<F[1]){J=H.tickSize+this.thumbCenterPoint.y;G=H.getTargetCoord(E[0],E[1]+J);I=[G.x,G.y];}else{}}return I;},b4MouseDown:function(E){if(!this.backgroundEnabled){return false;}this.thumb.autoOffset();this.baselinePos=[];},onMouseDown:function(F){if(!this.backgroundEnabled||this.isLocked()){return false;}this._mouseDown=true;var E=A.getPageX(F),G=A.getPageY(F);this.focus();this._slideStart();this.moveThumb(E,G);},onDrag:function(F){if(this.backgroundEnabled&&!this.isLocked()){var E=A.getPageX(F),G=A.getPageY(F);this.moveThumb(E,G,true,true);this.fireEvents();}},endMove:function(){this.unlock();this.fireEvents();this._slideEnd();},resetThumbConstraints:function(){var E=this.thumb;E.setXConstraint(E.leftConstraint,E.rightConstraint,E.xTickSize);E.setYConstraint(E.topConstraint,E.bottomConstraint,E.xTickSize);},fireEvents:function(G){var F=this.thumb,I,H,E;if(!G){F.cachePosition();}if(!this.isLocked()){if(F._isRegion){I=F.getXValue();H=F.getYValue();if(I!=this.previousX||H!=this.previousY){if(!this._silent){this.onChange(I,H);this.fireEvent("change",{x:I,y:H});}}this.previousX=I;this.previousY=H;}else{E=F.getValue();if(E!=this.previousVal){if(!this._silent){this.onChange(E);this.fireEvent("change",E);}}this.previousVal=E;}}},toString:function(){return("Slider ("+this.type+") "+this.id);}});YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);YAHOO.widget.Slider=C;})();YAHOO.widget.SliderThumb=function(G,B,E,D,A,F,C){if(G){YAHOO.widget.SliderThumb.superclass.constructor.call(this,G,B);this.parentElId=B;}this.isTarget=false;this.tickSize=C;this.maintainOffset=true;this.initSlider(E,D,A,F,C);this.scroll=false;};YAHOO.extend(YAHOO.widget.SliderThumb,YAHOO.util.DD,{startOffset:null,dragOnly:true,_isHoriz:false,_prevVal:0,_graduated:false,getOffsetFromParent0:function(C){var A=YAHOO.util.Dom.getXY(this.getEl()),B=C||YAHOO.util.Dom.getXY(this.parentElId);return[(A[0]-B[0]),(A[1]-B[1])];},getOffsetFromParent:function(H){var A=this.getEl(),E,I,F,B,K,D,C,J,G;if(!this.deltaOffset){I=YAHOO.util.Dom.getXY(A);F=H||YAHOO.util.Dom.getXY(this.parentElId);E=[(I[0]-F[0]),(I[1]-F[1])];B=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);K=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);D=B-E[0];C=K-E[1];if(isNaN(D)||isNaN(C)){}else{this.deltaOffset=[D,C];}}else{J=parseInt(YAHOO.util.Dom.getStyle(A,"left"),10);G=parseInt(YAHOO.util.Dom.getStyle(A,"top"),10);E=[J+this.deltaOffset[0],G+this.deltaOffset[1]];}return E;},initSlider:function(D,C,A,E,B){this.initLeft=D;this.initRight=C;this.initUp=A;this.initDown=E;this.setXConstraint(D,C,B);this.setYConstraint(A,E,B);if(B&&B>1){this._graduated=true;}this._isHoriz=(D||C);this._isVert=(A||E);this._isRegion=(this._isHoriz&&this._isVert);},clearTicks:function(){YAHOO.widget.SliderThumb.superclass.clearTicks.call(this);this.tickSize=0;this._graduated=false;},getValue:function(){return(this._isHoriz)?this.getXValue():this.getYValue();},getXValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[0])){this.lastOffset=A;return(A[0]-this.startOffset[0]);}else{return(this.lastOffset[0]-this.startOffset[0]);}},getYValue:function(){if(!this.available){return 0;}var A=this.getOffsetFromParent();if(YAHOO.lang.isNumber(A[1])){this.lastOffset=A;return(A[1]-this.startOffset[1]);}else{return(this.lastOffset[1]-this.startOffset[1]);}},toString:function(){return"SliderThumb "+this.id;},onChange:function(A,B){}});(function(){var A=YAHOO.util.Event,B=YAHOO.widget;function C(I,F,H,D){var G=this,J={min:false,max:false},E,K;this.minSlider=I;this.maxSlider=F;this.activeSlider=I;this.isHoriz=I.thumb._isHoriz;E=this.minSlider.thumb.onMouseDown;K=this.maxSlider.thumb.onMouseDown;this.minSlider.thumb.onMouseDown=function(){G.activeSlider=G.minSlider;E.apply(this,arguments);};this.maxSlider.thumb.onMouseDown=function(){G.activeSlider=G.maxSlider;K.apply(this,arguments);};this.minSlider.thumb.onAvailable=function(){I.setStartSliderState();J.min=true;if(J.max){G.fireEvent("ready",G);}};this.maxSlider.thumb.onAvailable=function(){F.setStartSliderState();J.max=true;if(J.min){G.fireEvent("ready",G);}};I.onMouseDown=F.onMouseDown=function(L){return this.backgroundEnabled&&G._handleMouseDown(L);};I.onDrag=F.onDrag=function(L){G._handleDrag(L);};I.onMouseUp=F.onMouseUp=function(L){G._handleMouseUp(L);
};I._bindKeyEvents=function(){G._bindKeyEvents(this);};F._bindKeyEvents=function(){};I.subscribe("change",this._handleMinChange,I,this);I.subscribe("slideStart",this._handleSlideStart,I,this);I.subscribe("slideEnd",this._handleSlideEnd,I,this);F.subscribe("change",this._handleMaxChange,F,this);F.subscribe("slideStart",this._handleSlideStart,F,this);F.subscribe("slideEnd",this._handleSlideEnd,F,this);this.createEvent("ready",this);this.createEvent("change",this);this.createEvent("slideStart",this);this.createEvent("slideEnd",this);D=YAHOO.lang.isArray(D)?D:[0,H];D[0]=Math.min(Math.max(parseInt(D[0],10)|0,0),H);D[1]=Math.max(Math.min(parseInt(D[1],10)|0,H),0);if(D[0]>D[1]){D.splice(0,2,D[1],D[0]);}this.minVal=D[0];this.maxVal=D[1];this.minSlider.setValue(this.minVal,true,true,true);this.maxSlider.setValue(this.maxVal,true,true,true);}C.prototype={minVal:-1,maxVal:-1,minRange:0,_handleSlideStart:function(E,D){this.fireEvent("slideStart",D);},_handleSlideEnd:function(E,D){this.fireEvent("slideEnd",D);},_handleDrag:function(D){B.Slider.prototype.onDrag.call(this.activeSlider,D);},_handleMinChange:function(){this.activeSlider=this.minSlider;this.updateValue();},_handleMaxChange:function(){this.activeSlider=this.maxSlider;this.updateValue();},_bindKeyEvents:function(D){A.on(D.id,"keydown",this._handleKeyDown,this,true);A.on(D.id,"keypress",this._handleKeyPress,this,true);},_handleKeyDown:function(D){this.activeSlider.handleKeyDown.apply(this.activeSlider,arguments);},_handleKeyPress:function(D){this.activeSlider.handleKeyPress.apply(this.activeSlider,arguments);},setValues:function(H,K,I,E,J){var F=this.minSlider,M=this.maxSlider,D=F.thumb,L=M.thumb,N=this,G={min:false,max:false};if(D._isHoriz){D.setXConstraint(D.leftConstraint,L.rightConstraint,D.tickSize);L.setXConstraint(D.leftConstraint,L.rightConstraint,L.tickSize);}else{D.setYConstraint(D.topConstraint,L.bottomConstraint,D.tickSize);L.setYConstraint(D.topConstraint,L.bottomConstraint,L.tickSize);}this._oneTimeCallback(F,"slideEnd",function(){G.min=true;if(G.max){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});this._oneTimeCallback(M,"slideEnd",function(){G.max=true;if(G.min){N.updateValue(J);setTimeout(function(){N._cleanEvent(F,"slideEnd");N._cleanEvent(M,"slideEnd");},0);}});F.setValue(H,I,E,false);M.setValue(K,I,E,false);},setMinValue:function(F,H,I,E){var G=this.minSlider,D=this;this.activeSlider=G;D=this;this._oneTimeCallback(G,"slideEnd",function(){D.updateValue(E);setTimeout(function(){D._cleanEvent(G,"slideEnd");},0);});G.setValue(F,H,I);},setMaxValue:function(D,H,I,F){var G=this.maxSlider,E=this;this.activeSlider=G;this._oneTimeCallback(G,"slideEnd",function(){E.updateValue(F);setTimeout(function(){E._cleanEvent(G,"slideEnd");},0);});G.setValue(D,H,I);},updateValue:function(J){var E=this.minSlider.getValue(),K=this.maxSlider.getValue(),F=false,D,M,H,I,L,G;if(E!=this.minVal||K!=this.maxVal){F=true;D=this.minSlider.thumb;M=this.maxSlider.thumb;H=this.isHoriz?"x":"y";G=this.minSlider.thumbCenterPoint[H]+this.maxSlider.thumbCenterPoint[H];I=Math.max(K-G-this.minRange,0);L=Math.min(-E-G-this.minRange,0);if(this.isHoriz){I=Math.min(I,M.rightConstraint);D.setXConstraint(D.leftConstraint,I,D.tickSize);M.setXConstraint(L,M.rightConstraint,M.tickSize);}else{I=Math.min(I,M.bottomConstraint);D.setYConstraint(D.leftConstraint,I,D.tickSize);M.setYConstraint(L,M.bottomConstraint,M.tickSize);}}this.minVal=E;this.maxVal=K;if(F&&!J){this.fireEvent("change",this);}},selectActiveSlider:function(H){var E=this.minSlider,D=this.maxSlider,J=E.isLocked()||!E.backgroundEnabled,G=D.isLocked()||!E.backgroundEnabled,F=YAHOO.util.Event,I;if(J||G){this.activeSlider=J?D:E;}else{if(this.isHoriz){I=F.getPageX(H)-E.thumb.initPageX-E.thumbCenterPoint.x;}else{I=F.getPageY(H)-E.thumb.initPageY-E.thumbCenterPoint.y;}this.activeSlider=I*2>D.getValue()+E.getValue()?D:E;}},_handleMouseDown:function(D){if(!D._handled&&!this.minSlider._sliding&&!this.maxSlider._sliding){D._handled=true;this.selectActiveSlider(D);return B.Slider.prototype.onMouseDown.call(this.activeSlider,D);}else{return false;}},_handleMouseUp:function(D){B.Slider.prototype.onMouseUp.apply(this.activeSlider,arguments);},_oneTimeCallback:function(G,D,F){var E=function(){G.unsubscribe(D,E);F.apply({},arguments);};G.subscribe(D,E);},_cleanEvent:function(K,E){var J,I,D,G,H,F;if(K.__yui_events&&K.events[E]){for(I=K.__yui_events.length;I>=0;--I){if(K.__yui_events[I].type===E){J=K.__yui_events[I];break;}}if(J){H=J.subscribers;F=[];G=0;for(I=0,D=H.length;I<D;++I){if(H[I]){F[G++]=H[I];}}J.subscribers=F;}}}};YAHOO.lang.augmentProto(C,YAHOO.util.EventProvider);B.Slider.getHorizDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,G,0,0,F),E=new B.SliderThumb(K,H,0,G,0,0,F);return new C(new B.Slider(H,H,I,"horiz"),new B.Slider(H,H,E,"horiz"),G,D);};B.Slider.getVertDualSlider=function(H,J,K,G,F,D){var I=new B.SliderThumb(J,H,0,0,0,G,F),E=new B.SliderThumb(K,H,0,0,0,G,F);return new B.DualSlider(new B.Slider(H,H,I,"vert"),new B.Slider(H,H,E,"vert"),G,D);};YAHOO.widget.DualSlider=C;})();YAHOO.register("slider",YAHOO.widget.Slider,{version:"2.8.0r4",build:"2449"});

/*
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.8.0r4
*/
(function(){var B=YAHOO.util;var A=function(D,C,E,F){if(!D){}this.init(D,C,E,F);};A.NAME="Anim";A.prototype={toString:function(){var C=this.getEl()||{};var D=C.id||C.tagName;return(this.constructor.NAME+": "+D);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(C,E,D){return this.method(this.currentFrame,E,D-E,this.totalFrames);},setAttribute:function(C,F,E){var D=this.getEl();if(this.patterns.noNegatives.test(C)){F=(F>0)?F:0;}if(C in D&&!("style" in D&&C in D.style)){D[C]=F;}else{B.Dom.setStyle(D,C,F+E);}},getAttribute:function(C){var E=this.getEl();var G=B.Dom.getStyle(E,C);if(G!=="auto"&&!this.patterns.offsetUnit.test(G)){return parseFloat(G);}var D=this.patterns.offsetAttribute.exec(C)||[];var H=!!(D[3]);var F=!!(D[2]);if("style" in E){if(F||(B.Dom.getStyle(E,"position")=="absolute"&&H)){G=E["offset"+D[0].charAt(0).toUpperCase()+D[0].substr(1)];}else{G=0;}}else{if(C in E){G=E[C];}}return G;},getDefaultUnit:function(C){if(this.patterns.defaultUnit.test(C)){return"px";}return"";},setRuntimeAttribute:function(D){var I;var E;var F=this.attributes;this.runtimeAttributes[D]={};var H=function(J){return(typeof J!=="undefined");};if(!H(F[D]["to"])&&!H(F[D]["by"])){return false;}I=(H(F[D]["from"]))?F[D]["from"]:this.getAttribute(D);if(H(F[D]["to"])){E=F[D]["to"];}else{if(H(F[D]["by"])){if(I.constructor==Array){E=[];for(var G=0,C=I.length;G<C;++G){E[G]=I[G]+F[D]["by"][G]*1;}}else{E=I+F[D]["by"]*1;}}}this.runtimeAttributes[D].start=I;this.runtimeAttributes[D].end=E;this.runtimeAttributes[D].unit=(H(F[D].unit))?F[D]["unit"]:this.getDefaultUnit(D);return true;},init:function(E,J,I,C){var D=false;var F=null;var H=0;E=B.Dom.get(E);this.attributes=J||{};this.duration=!YAHOO.lang.isUndefined(I)?I:1;this.method=C||B.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=B.AnimMgr.fps;this.setEl=function(M){E=B.Dom.get(M);};this.getEl=function(){return E;};this.isAnimated=function(){return D;};this.getStartTime=function(){return F;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(B.AnimMgr.fps*this.duration):this.duration;if(this.duration===0&&this.useSeconds){this.totalFrames=1;}B.AnimMgr.registerElement(this);return true;};this.stop=function(M){if(!this.isAnimated()){return false;}if(M){this.currentFrame=this.totalFrames;this._onTween.fire();}B.AnimMgr.stop(this);};var L=function(){this.onStart.fire();this.runtimeAttributes={};for(var M in this.attributes){this.setRuntimeAttribute(M);}D=true;H=0;F=new Date();};var K=function(){var O={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};O.toString=function(){return("duration: "+O.duration+", currentFrame: "+O.currentFrame);};this.onTween.fire(O);var N=this.runtimeAttributes;for(var M in N){this.setAttribute(M,this.doMethod(M,N[M].start,N[M].end),N[M].unit);}H+=1;};var G=function(){var M=(new Date()-F)/1000;var N={duration:M,frames:H,fps:H/M};N.toString=function(){return("duration: "+N.duration+", frames: "+N.frames+", fps: "+N.fps);};D=false;H=0;this.onComplete.fire(N);};this._onStart=new B.CustomEvent("_start",this,true);this.onStart=new B.CustomEvent("start",this);this.onTween=new B.CustomEvent("tween",this);this._onTween=new B.CustomEvent("_tween",this,true);this.onComplete=new B.CustomEvent("complete",this);this._onComplete=new B.CustomEvent("_complete",this,true);this._onStart.subscribe(L);this._onTween.subscribe(K);this._onComplete.subscribe(G);}};B.Anim=A;})();YAHOO.util.AnimMgr=new function(){var C=null;var B=[];var A=0;this.fps=1000;this.delay=1;this.registerElement=function(F){B[B.length]=F;A+=1;F._onStart.fire();this.start();};this.unRegister=function(G,F){F=F||E(G);if(!G.isAnimated()||F===-1){return false;}G._onComplete.fire();B.splice(F,1);A-=1;if(A<=0){this.stop();}return true;};this.start=function(){if(C===null){C=setInterval(this.run,this.delay);}};this.stop=function(H){if(!H){clearInterval(C);for(var G=0,F=B.length;G<F;++G){this.unRegister(B[0],0);}B=[];C=null;A=0;}else{this.unRegister(H);}};this.run=function(){for(var H=0,F=B.length;H<F;++H){var G=B[H];if(!G||!G.isAnimated()){continue;}if(G.currentFrame<G.totalFrames||G.totalFrames===null){G.currentFrame+=1;if(G.useSeconds){D(G);}G._onTween.fire();}else{YAHOO.util.AnimMgr.stop(G,H);}}};var E=function(H){for(var G=0,F=B.length;G<F;++G){if(B[G]===H){return G;}}return -1;};var D=function(G){var J=G.totalFrames;var I=G.currentFrame;var H=(G.currentFrame*G.duration*1000/G.totalFrames);var F=(new Date()-G.getStartTime());var K=0;if(F<G.duration*1000){K=Math.round((F/H-1)*G.currentFrame);}else{K=J-(I+1);}if(K>0&&isFinite(K)){if(G.currentFrame+K>=J){K=J-(I+1);}G.currentFrame+=K;}};this._queue=B;this._getIndex=E;};YAHOO.util.Bezier=new function(){this.getPosition=function(E,D){var F=E.length;var C=[];for(var B=0;B<F;++B){C[B]=[E[B][0],E[B][1]];}for(var A=1;A<F;++A){for(B=0;B<F-A;++B){C[B][0]=(1-D)*C[B][0]+D*C[parseInt(B+1,10)][0];C[B][1]=(1-D)*C[B][1]+D*C[parseInt(B+1,10)][1];}}return[C[0][0],C[0][1]];};};(function(){var A=function(F,E,G,H){A.superclass.constructor.call(this,F,E,G,H);};A.NAME="ColorAnim";A.DEFAULT_BGCOLOR="#fff";var C=YAHOO.util;YAHOO.extend(A,C.Anim);var D=A.superclass;var B=A.prototype;B.patterns.color=/color$/i;B.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;B.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;B.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;B.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;B.parseColor=function(E){if(E.length==3){return E;}var F=this.patterns.hex.exec(E);if(F&&F.length==4){return[parseInt(F[1],16),parseInt(F[2],16),parseInt(F[3],16)];}F=this.patterns.rgb.exec(E);if(F&&F.length==4){return[parseInt(F[1],10),parseInt(F[2],10),parseInt(F[3],10)];}F=this.patterns.hex3.exec(E);if(F&&F.length==4){return[parseInt(F[1]+F[1],16),parseInt(F[2]+F[2],16),parseInt(F[3]+F[3],16)];
}return null;};B.getAttribute=function(E){var G=this.getEl();if(this.patterns.color.test(E)){var I=YAHOO.util.Dom.getStyle(G,E);var H=this;if(this.patterns.transparent.test(I)){var F=YAHOO.util.Dom.getAncestorBy(G,function(J){return !H.patterns.transparent.test(I);});if(F){I=C.Dom.getStyle(F,E);}else{I=A.DEFAULT_BGCOLOR;}}}else{I=D.getAttribute.call(this,E);}return I;};B.doMethod=function(F,J,G){var I;if(this.patterns.color.test(F)){I=[];for(var H=0,E=J.length;H<E;++H){I[H]=D.doMethod.call(this,F,J[H],G[H]);}I="rgb("+Math.floor(I[0])+","+Math.floor(I[1])+","+Math.floor(I[2])+")";}else{I=D.doMethod.call(this,F,J,G);}return I;};B.setRuntimeAttribute=function(F){D.setRuntimeAttribute.call(this,F);if(this.patterns.color.test(F)){var H=this.attributes;var J=this.parseColor(this.runtimeAttributes[F].start);var G=this.parseColor(this.runtimeAttributes[F].end);if(typeof H[F]["to"]==="undefined"&&typeof H[F]["by"]!=="undefined"){G=this.parseColor(H[F].by);for(var I=0,E=J.length;I<E;++I){G[I]=J[I]+G[I];}}this.runtimeAttributes[F].start=J;this.runtimeAttributes[F].end=G;}};C.ColorAnim=A;})();
/*
TERMS OF USE - EASING EQUATIONS
Open source under the BSD License.
Copyright 2001 Robert Penner All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
 * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
YAHOO.util.Easing={easeNone:function(B,A,D,C){return D*B/C+A;},easeIn:function(B,A,D,C){return D*(B/=C)*B+A;},easeOut:function(B,A,D,C){return -D*(B/=C)*(B-2)+A;},easeBoth:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B+A;}return -D/2*((--B)*(B-2)-1)+A;},easeInStrong:function(B,A,D,C){return D*(B/=C)*B*B*B+A;},easeOutStrong:function(B,A,D,C){return -D*((B=B/C-1)*B*B*B-1)+A;},easeBothStrong:function(B,A,D,C){if((B/=C/2)<1){return D/2*B*B*B*B+A;}return -D/2*((B-=2)*B*B*B-2)+A;},elasticIn:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return -(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;},elasticOut:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F)==1){return A+G;}if(!E){E=F*0.3;}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}return B*Math.pow(2,-10*C)*Math.sin((C*F-D)*(2*Math.PI)/E)+G+A;},elasticBoth:function(C,A,G,F,B,E){if(C==0){return A;}if((C/=F/2)==2){return A+G;}if(!E){E=F*(0.3*1.5);}if(!B||B<Math.abs(G)){B=G;var D=E/4;}else{var D=E/(2*Math.PI)*Math.asin(G/B);}if(C<1){return -0.5*(B*Math.pow(2,10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E))+A;}return B*Math.pow(2,-10*(C-=1))*Math.sin((C*F-D)*(2*Math.PI)/E)*0.5+G+A;},backIn:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*(B/=D)*B*((C+1)*B-C)+A;},backOut:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}return E*((B=B/D-1)*B*((C+1)*B+C)+1)+A;},backBoth:function(B,A,E,D,C){if(typeof C=="undefined"){C=1.70158;}if((B/=D/2)<1){return E/2*(B*B*(((C*=(1.525))+1)*B-C))+A;}return E/2*((B-=2)*B*(((C*=(1.525))+1)*B+C)+2)+A;},bounceIn:function(B,A,D,C){return D-YAHOO.util.Easing.bounceOut(C-B,0,D,C)+A;},bounceOut:function(B,A,D,C){if((B/=C)<(1/2.75)){return D*(7.5625*B*B)+A;}else{if(B<(2/2.75)){return D*(7.5625*(B-=(1.5/2.75))*B+0.75)+A;}else{if(B<(2.5/2.75)){return D*(7.5625*(B-=(2.25/2.75))*B+0.9375)+A;}}}return D*(7.5625*(B-=(2.625/2.75))*B+0.984375)+A;},bounceBoth:function(B,A,D,C){if(B<C/2){return YAHOO.util.Easing.bounceIn(B*2,0,D,C)*0.5+A;}return YAHOO.util.Easing.bounceOut(B*2-C,0,D,C)*0.5+D*0.5+A;}};(function(){var A=function(H,G,I,J){if(H){A.superclass.constructor.call(this,H,G,I,J);}};A.NAME="Motion";var E=YAHOO.util;YAHOO.extend(A,E.ColorAnim);var F=A.superclass;var C=A.prototype;C.patterns.points=/^points$/i;C.setAttribute=function(G,I,H){if(this.patterns.points.test(G)){H=H||"px";F.setAttribute.call(this,"left",I[0],H);F.setAttribute.call(this,"top",I[1],H);}else{F.setAttribute.call(this,G,I,H);}};C.getAttribute=function(G){if(this.patterns.points.test(G)){var H=[F.getAttribute.call(this,"left"),F.getAttribute.call(this,"top")];}else{H=F.getAttribute.call(this,G);}return H;};C.doMethod=function(G,K,H){var J=null;if(this.patterns.points.test(G)){var I=this.method(this.currentFrame,0,100,this.totalFrames)/100;J=E.Bezier.getPosition(this.runtimeAttributes[G],I);}else{J=F.doMethod.call(this,G,K,H);}return J;};C.setRuntimeAttribute=function(P){if(this.patterns.points.test(P)){var H=this.getEl();var J=this.attributes;var G;var L=J["points"]["control"]||[];var I;var M,O;if(L.length>0&&!(L[0] instanceof Array)){L=[L];}else{var K=[];for(M=0,O=L.length;M<O;++M){K[M]=L[M];}L=K;}if(E.Dom.getStyle(H,"position")=="static"){E.Dom.setStyle(H,"position","relative");}if(D(J["points"]["from"])){E.Dom.setXY(H,J["points"]["from"]);
}else{E.Dom.setXY(H,E.Dom.getXY(H));}G=this.getAttribute("points");if(D(J["points"]["to"])){I=B.call(this,J["points"]["to"],G);var N=E.Dom.getXY(this.getEl());for(M=0,O=L.length;M<O;++M){L[M]=B.call(this,L[M],G);}}else{if(D(J["points"]["by"])){I=[G[0]+J["points"]["by"][0],G[1]+J["points"]["by"][1]];for(M=0,O=L.length;M<O;++M){L[M]=[G[0]+L[M][0],G[1]+L[M][1]];}}}this.runtimeAttributes[P]=[G];if(L.length>0){this.runtimeAttributes[P]=this.runtimeAttributes[P].concat(L);}this.runtimeAttributes[P][this.runtimeAttributes[P].length]=I;}else{F.setRuntimeAttribute.call(this,P);}};var B=function(G,I){var H=E.Dom.getXY(this.getEl());G=[G[0]-H[0]+I[0],G[1]-H[1]+I[1]];return G;};var D=function(G){return(typeof G!=="undefined");};E.Motion=A;})();(function(){var D=function(F,E,G,H){if(F){D.superclass.constructor.call(this,F,E,G,H);}};D.NAME="Scroll";var B=YAHOO.util;YAHOO.extend(D,B.ColorAnim);var C=D.superclass;var A=D.prototype;A.doMethod=function(E,H,F){var G=null;if(E=="scroll"){G=[this.method(this.currentFrame,H[0],F[0]-H[0],this.totalFrames),this.method(this.currentFrame,H[1],F[1]-H[1],this.totalFrames)];}else{G=C.doMethod.call(this,E,H,F);}return G;};A.getAttribute=function(E){var G=null;var F=this.getEl();if(E=="scroll"){G=[F.scrollLeft,F.scrollTop];}else{G=C.getAttribute.call(this,E);}return G;};A.setAttribute=function(E,H,G){var F=this.getEl();if(E=="scroll"){F.scrollLeft=H[0];F.scrollTop=H[1];}else{C.setAttribute.call(this,E,H,G);}};B.Scroll=D;})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.8.0r4",build:"2449"});

/*--------------------------------------------------------------------------
 *  EJS - Embedded JavaScript, version 0.1.0
 *  Copyright (c) 2007 Edward Benson
 *  http://www.edwardbenson.com/projects/ejs
 *  ------------------------------------------------------------------------
 *
 *  EJS is freely distributable under the terms of an MIT-style license.
 *
 *  EJS is a client-side preprocessing engine written in and for JavaScript.
 *  If you have used PHP, ASP, JSP, or ERB then you get the idea: code embedded
 *  in <% // Code here %> tags will be executed, and code embedded in <%= .. %>
 *  tags will be evaluated and appended to the output.
 *
 *  This is essentially a direct JavaScript port of Masatoshi Seki's erb.rb
 *  from the Ruby Core, though it contains a subset of ERB's functionality.
 *
 *  Requirements:
 *      prototype.js
 *
 *  Usage:
 *      // source should be either a string or a DOM node whose innerHTML
 *      // contains EJB source.
 *  	var source = "<% var ejb="EJB"; %><h1>Hello, <%= ejb %>!</h1>";
 *      var compiler = new EjsCompiler(source);
 *	    compiler.compile();
 *	    var output = eval(compiler.out);
 *      alert(output); // -> "<h1>Hello, EJB!</h1>"
 *
 *  For a demo:      see demo.html
 *  For the license: see license.txt
 *
 *--------------------------------------------------------------------------*/

/* Make a split function like Ruby's: "abc".split(/b/) -> ['a', 'b', 'c'] */
String.prototype.rsplit = function(regex) {
	var item = this;
	var result = regex.exec(item);
	var retArr = new Array();
	while (result != null)
	{
		var first_idx = result.index;
		var last_idx = regex.lastIndex;
		if ((first_idx) != 0)
		{
			var first_bit = item.substring(0,first_idx);
			retArr.push(item.substring(0,first_idx));
			item = item.slice(first_idx);
		}
		retArr.push(result[0]);
		item = item.slice(result[0].length);
		result = regex.exec(item);
	}
	if (! item == '')
	{
		retArr.push(item);
	}
	return retArr;
};

/* Chop is nice to have too */
String.prototype.chop = function() {
	return this.substr(0, this.length - 1);
}

/* Adaptation from the Scanner of erb.rb  */
var EjsScanner = function(source, left, right) {
	this.left_delimiter = 	left +'%'	//<%
	this.right_delimiter = 	'%'+right	//>
	this.double_left = 		left+'%%'
	this.double_right = 	'%%'+right
	this.left_equal = 		left+'%='
	this.left_comment = 	left+'%#'
	if(left=='[')
		this.SplitRegexp = /(\[%%)|(%%\])|(\[%=)|(\[%#)|(\[%)|(%\]\n)|(%\])|(\n)/;
	else
		this.SplitRegexp = new RegExp('('+this.double_left+')|(%%'+this.double_right+')|('+this.left_equal+')|('+this.left_comment+')|('+this.left_delimiter+')|('+this.right_delimiter+'\n)|('+this.right_delimiter+')|(\n)')

	this.source = source;
	this.stag = null;
	this.lines = 0;
};
EjsView = function(data){
	this.data = data
}
EjsView.prototype.partial = function(options, data){
	if(!data) data = this.data;
	return new EJS(options).render(data);
}

EjsScanner.to_text = function(input){
	if(input == null || input === undefined)
        return '';
    if(input instanceof Date)
		return input.toDateString();
	if(input.toString)
        return input.toString()
	return '';
}

EjsScanner.prototype = {

  /* For each line, scan! */
  scan: function(block) {
     scanline = this.scanline;
	 regex = this.SplitRegexp;
	 if (! this.source == '')
	 {
	 	 var source_split = this.source.rsplit(/\n/);
	 	 for(var i=0; i<source_split.length; i++) {
		 	 var item = source_split[i];
			 this.scanline(item, regex, block);
		 }
	 }
  },

  /* For each token, block! */
  scanline: function(line, regex, block) {
	 this.lines++
	 var line_split = line.rsplit(regex);
 	 for(var i=0; i<line_split.length; i++) {
	   var token = line_split[i];
       if (token != null) {
		   	try{
	         	block(token, this);
		 	}catch(e){
				throw {type: 'EjsScanner', line: this.lines}
			}
       }
	 }
  }
};

/* Adaptation from the Buffer of erb.rb  */
var EjsBuffer = function(pre_cmd, post_cmd) {
	this.line = new Array();
	this.script = "";
	this.pre_cmd = pre_cmd;
	this.post_cmd = post_cmd;

	for (var i=0; i<this.pre_cmd.length; i++)
	{
		this.push(pre_cmd[i]);
	}
}
EjsBuffer.prototype = {

  push: function(cmd) {
	this.line.push(cmd);
  },

  cr: function() {
	this.script = this.script + this.line.join('; ');
	this.line = new Array();
	this.script = this.script + "\n";
  },

  close: function() {
	if (this.line.length > 0)
	{
		for (var i=0; i<this.post_cmd.length; i++)
		{
			this.push(pre_cmd[i]);
		}
		this.script = this.script + this.line.join('; ');
		line = null;
	}
  }

};

/* Adaptation from the Compiler of erb.rb  */
EjsCompiler = function(source, left) {
	this.pre_cmd = ['___ejsO = "";'];
	this.post_cmd = new Array();
	this.source = ' ';
	if (source != null)
	{
		if (typeof source == 'string')
		{
		    source = source.replace(/\r\n/g, "\n");
            source = source.replace(/\r/g,   "\n");
			this.source = source;
		}
		else if (source.innerHTML)
		{
			this.source = source.innerHTML;
		}
		if (typeof this.source != 'string')
		{
			this.source = "";
		}
	}
	left = left || '<'
	var right = '>'
	switch(left) {
		case '[':
			right = ']'
			break;
		case '<':
			break;
		default:
			throw left+' is not a supported deliminator'
			break;
	}
	this.scanner = new EjsScanner(this.source, left, right);
	this.out = '';
}
EjsCompiler.prototype = {
  compile: function(options) {
  	options = options || {};
	this.out = '';
	var put_cmd = "___ejsO += ";
	var insert_cmd = put_cmd;
	var buff = new EjsBuffer(this.pre_cmd, this.post_cmd);
	var content = '';
	var clean = function(content)
	{
	    content = content.replace(/\\/g, '\\\\');
        content = content.replace(/\n/g, '\\n');
        content = content.replace(/"/g,  '\\"');
        return content;
	}
	this.scanner.scan(function(token, scanner) {
		if (scanner.stag == null)
		{
			//alert(token+'|'+(token == "\n"))
			switch(token) {
				case '\n':
					content = content + "\n";
					buff.push(put_cmd + '"' + clean(content) + '";');
					buff.cr()
					content = '';
					break;
				case scanner.left_delimiter:
				case scanner.left_equal:
				case scanner.left_comment:
					scanner.stag = token;
					if (content.length > 0)
					{
						// Chould be content.dump in Ruby

						buff.push(put_cmd + '"' + clean(content) + '"');
					}
					content = '';
					break;
				case scanner.double_left:
					content = content + scanner.left_delimiter;
					break;
				default:
					content = content + token;
					break;
			}
		}
		else {
			switch(token) {
				case scanner.right_delimiter:
					switch(scanner.stag) {
						case scanner.left_delimiter:
							if (content[content.length - 1] == '\n')
							{
								content = content.chop();
								buff.push(content);
								buff.cr();
							}
							else {
								buff.push(content);
							}
							break;
						case scanner.left_equal:
							buff.push(insert_cmd + "(EjsScanner.to_text(" + content + "))");
							break;
					}
					scanner.stag = null;
					content = '';
					break;
				case scanner.double_right:
					content = content + scanner.right_delimiter;
					break;
				default:
					content = content + token;
					break;
			}
		}
	});
	if (content.length > 0)
	{
		// Chould be content.dump in Ruby
		buff.push(put_cmd + '"' + clean(content) + '"');
	}
	buff.close();
	this.out = buff.script + ";";
	var to_be_evaled = 'this.process = function(_CONTEXT,_VIEW) { try { with(_VIEW) { with (_CONTEXT) {'+this.out+" return ___ejsO;}}}catch(e){e.lineNumber=null;throw e;}};";

	try{
		eval(to_be_evaled);
	}catch(e){
		if(typeof JSLINT != 'undefined'){
			JSLINT(this.out)
			for(var i = 0; i < JSLINT.errors.length; i++){
				var error = JSLINT.errors[i];
				if(error.reason != "Unnecessary semicolon."){
					error.line++;
					var e = new Error();
					e.lineNumber = error.line;
					e.message = error.reason;
					if(options.url)
						e.fileName = options.url;
					throw e;
				}
			}
		}else{
			throw e;
		}
	}
  }
}


//type, cache, folder
EJS = function( options ){
	this.set_options(options)

	if(options.url){
		var template = EJS.get(options.url, this.cache)
		if (template) return template;
	    if (template == EJS.INVALID_PATH) return null;

	    //вставляем здесь кеш
	    //мне реально впадлу деать хорошо и красиво
	    var cacheKey = 'tpl_' + options.url;
        var useCache = (typeof(options.useStorageCache) != 'undefined' && options.useStorageCache) ? true : false;

	    if (useCache && k.storage.hasKey(cacheKey)) {
            this.text = k.storage.get(cacheKey);
	    } else {
    		this.text = EJS.request(options.url);

    		if (useCache) {
        		k.storage.set(cacheKey, this.text);
    		}
	    }

		if(this.text == null){
			//EJS.update(options.url, this.INVALID_PATH);
			throw 'There is no template at '+options.url
		}
		this.name = options.url
	} else if (options.element) {
		if(typeof options.element == 'string'){
			var name = options.element
			options.element = document.getElementById(  options.element )
			if(options.element == null) throw name+'does not exist!'
		}
		if(options.element.value){
			this.text = options.element.value
		}else{
			this.text = options.element.innerHTML
		}
		this.name = options.element.id
		this.type = '['
	}
	var template = new EjsCompiler(this.text, this.type);

	template.compile(options);


	EJS.update(this.name, this);
	this.template = template
}
EJS.config = function(options){
	EJS.cache = options.cache != null ? options.cache : EJS.cache
	EJS.type = options.type != null ? options.type : EJS.type
	var templates_directory = {} //nice and private container

	EJS.get = function(path, cache){
		if(cache == false) return null;
		if(templates_directory[path]) return templates_directory[path];
  		return null;
	}

	EJS.update = function(path, template) {
		if(path == null) return;
		templates_directory[path] = template
	}

	EJS.INVALID_PATH =  -1;


}
EJS.config( {cache: true, type: '<' } )

EJS.prototype = {
	render : function(object){
		var v = new EjsView(object);
		return this.template.process.call(v, object,v);
	},
	out : function(){
		return this.template.out
	},
	set_options : function(options){
		this.type = options.type != null ? options.type : EJS.type
		this.cache = options.cache != null ? options.cache : EJS.cache
		this.text = options.text != null ? options.text : null
		this.name = options.name != null ? options.name : null
	},
	// called without options, returns a function that takes the object
	// called with options being a string, uses that as a url
	// called with options as an object
	update : function(element, options){
		if(typeof element == 'string'){
			element = document.getElementById(element)
		}
		if(options == null){
			_template = this;
			return function(object){
				EJS.prototype.update.call(_template, element, object)
			}
		}
		if(typeof options == 'string'){
			params = {}
			params.url = options
			_template = this;
			params.onComplete = function(request){
				var object = eval( request.responseText )
				EJS.prototype.update.call(_template, element, object)
			}
			EJS.ajax_request(params)
		}else
		{
			element.innerHTML = this.render(options)
		}
	}
}

	EJS.newRequest = function(){
	   var factories = [function() { return new ActiveXObject("Msxml2.XMLHTTP"); },function() { return new XMLHttpRequest(); },function() { return new ActiveXObject("Microsoft.XMLHTTP"); }];
	   for(var i = 0; i < factories.length; i++) {
	        try {
	            var request = factories[i]();
	            if (request != null)  return request;
	        }
	        catch(e) { continue;}
	   }
	}

	EJS.request = function(path){
	   var request = new EJS.newRequest()
	   request.open("GET", path, false);

	   try{request.send(null);}
	   catch(e){return null;}

	   if ( request.status == 404 || request.status == 2 ||(request.status == 0 && request.responseText == '') ) return null;

	   return request.responseText
	}
	EJS.ajax_request = function(params){
		params.method = ( params.method ? params.method : 'GET')

		var request = new EJS.newRequest();
		request.onreadystatechange = function(){
			if(request.readyState == 4){
				if(request.status == 200){
					params.onComplete(request)
				}else
				{
					params.onComplete(request)
				}
			}
		}
		request.open(params.method, params.url)
		request.send(null)
	}
//}




if (typeof k == "undefined" || !k) {
    var k = {};
}

(function() {
    var config = {path             : '/js/templates/',
                  useStorageCache  : false,
                  preloadTemplates : true,
                  tplForPreload    : [
                      'blocks/autocomplete/autocomplete.ejs',
                      'blocks/autocomplete/not-found.ejs',
                      'blocks/button/button.ejs',
                      'blocks/button/dropdown.ejs',
                      'blocks/dialog/window.ejs',
                      'blocks/notification/notification.ejs',
                      'blocks/panel/panel.ejs'
                  ]};

    k.template = {
        init   : function() {
            if (config.preloadTemplates) {
                k.a.each(config.tplForPreload, function(key, tpl) {
                    var loadingPid = k.loading.start();
                    var ejsConf = __getBaseConf();
                    var templatePath = config.path + tpl;

                    ejsConf.url = templatePath;

                    new EJS(ejsConf);
                    k.loading.end(loadingPid);
                });
            }
        },

        render : function(template, data) {
            if (typeof(data) != 'object') {
                data = {};
            }

            var templatePath = config.path + template;

            var loadingPid = k.loading.start();
            var ejsConf = __getBaseConf();
            ejsConf.url = templatePath;

            var res = new EJS(ejsConf).render(data);
            k.loading.end(loadingPid);

            return res;
        },

        renderLocal : function(tpl, data) {
            if (typeof(data) != 'object') {
                data = {};
            }

            var ejsConf = __getBaseConf();
            ejsConf.text = tpl;

            var res = new EJS(ejsConf).render(data);

            return res;
        },

        setConfig : function(iConfig) {
            if (typeof(iConfig) == 'object') {
                config = k.a.extend(config, iConfig);
            }
        }
    };

    function __getBaseConf()
    {
        return {useStorageCache : config.useStorageCache}
    }
}) ();

if (typeof k == "undefined" || !k) {
    var k = {};
}

/*
 * он бажный что писец
 *
 **/

(function() {
    k.autocomplete = function(inputEl, iConfig) {
        //key code constants
        var KEY_CODE_ESC = 27,
            KEY_CODE_ARRUP = 38,
            KEY_CODE_ARRDOWN = 40,
            KEY_CODE_RETURN = 13;

        var that = this,
            timeout,
            curValue = null,
            cache = {},
            curData = null,
            orderedData = [], //массив key => id - так проще и быстрее работать с up/down
            curEl = null,
            parentEl = null,
            curSelected = null, //текущий подсвеченный элемент в выподающем списке (pos в orderedData)
            status = 'hide', //show|hide
            cancelRequest = false, //если нужно отменить запрос
            lastSelected = null;

        var config = {parentEl         : 'body', //селектор эл-та для аппенда (body, #tmpDiv)
                      requestUrl       : '',
                      requestParam     : 'query',
                      requestMethod    : 'get',
                      dataSource       : 'remote-json', //тип получения данных: remote-json - удаленный json
                      sourceId         : 'id',
                      sourceName       : 'name',
                      useCache         : true,
                      minChars         : 1,
                      delay            : 400,
                      width            : null,
                      height           : null,
                      autoscroll       : true,
                      showNotFound     : true,
                      closeLink        : true,
                      autoselect       : false, //проверять вручную набранное значение
                      addLoadingClass  : true,

                      //callbacks
                      getRequestUrl     : null,
                      getRequestParams  : null,
                      onDataRequest     : null,
                      prepareData       : null,
                      onSelect          : null,
                      onChange          : null,
                      onBlur            : null,
                      onAutoselNotFound : null,
                      getPosition       : null,

                      tplMain          : '\
                            <ul class="<%= classes.root %>">\
                                <% k.a.each(data, function(id, item) { %>\
                                    <li class="<%= classes.item %> <%= classes.idPrefix + item.id %>"><%= item.name %></li>\
                                <% }); %>\
                                <% if (close) { %>\
                                    <li class="<%= classes.closeBlock %>"><a href=""><%= k.lang["main.close"] %></a></li>\
                                <% } %>\
                            </ul>',
                      tplNotFound      : '\
                            <ul class="<%= classes.root %>">\
                                <li class="<%= classes.not_found %>"><%= k.lang["main.autocomplete_not_found"] %></li>\
                                <% if (close) { %>\
                                    <li class="<%= classes.closeBlock %>"><a href=""><%= k.lang["main.close"] %></a></li>\
                                <% } %>\
                            </ul>',
                      tplType          : 'local', //local|remote

                      classes          : {root       : 'autocomplete',
                                          item       : 'item',
                                          idPrefix   : 'item-',
                                          selected   : 'selected',
                                          closeBlock : 'close',
                                          loading    : 'loading'}};

        __setup();

        this.hide = function()
        {
            __hide();
        }

        this.resetCur = function()
        {
            curValue = null;
            curData = null;
        }

        this.getValue = function()
        {
            return __getValue();
        }

        function __onKeyDown(e)
        {
            switch (e.keyCode) {
                case KEY_CODE_ARRDOWN:
                    if (k.a.isBrowserSafari() || k.a.isBrowserIe()) {
                        __onDownPress();
                        k.a.preventDefault(e);
                    }
                    break;
                case KEY_CODE_ARRUP:
                    if (k.a.isBrowserSafari() || k.a.isBrowserIe()) {
                        __onUpPress();
                        k.a.preventDefault(e);
                    }
                    break;
                case KEY_CODE_ESC:
                    if (status == 'show') {
                        k.a.stopPropagation(e);
                        k.a.preventDefault(e);

                        __hide();
                    }
                    break;
                case KEY_CODE_RETURN:
                    if (status == 'show') {
                        __onReturnPress();
                        k.a.preventDefault(e);
                    }
                    break;
                case KEY_CODE_ESC:
                    break;
            }
        }

        function __onReturnPress()
        {
            if (null !== curSelected) {
                __setSelectedValue(orderedData[curSelected]);
                __onSelectValue(orderedData[curSelected]);
            }

            __hide();
        }

        function __onSelectValue(key)
        {
            lastSelected = key;

            if (typeof(config.onSelect) == 'function') {
                config.onSelect.call(that, key, curData[key].name, curData[key].row);
            }
        }

        function __onKeyPress(e)
        {
            switch (e.keyCode) {
                case KEY_CODE_ARRDOWN:
                    //down
                    __onDownPress();
                    k.a.preventDefault(e);
                    break;
                case KEY_CODE_ARRUP:
                    //up
                    __onUpPress();
                    k.a.preventDefault(e);
                    break;
                case KEY_CODE_ESC:
                    k.a.stopPropagation(e);
                    k.a.preventDefault(e);
                    break;
            }
        }

        function __onKeyUp(e)
        {
            switch (e.keyCode) {
                case KEY_CODE_ARRDOWN:
                    break;
                case KEY_CODE_ARRUP:
                    break
                case KEY_CODE_ESC:
                    break;
                case KEY_CODE_RETURN:
                    break;
                default:
                    __onInputChange();

                    __resetTimeout();
                    timeout = setTimeout(function(){__onDataChange();}, config.delay);
                    break;
            }
        }

        function __resetTimeout()
        {
            if (timeout) {
                clearTimeout(timeout);
            }
        }

        function __onInputChange()
        {
            cancelRequest = false;

            if (curValue != __getValue()) {
                lastSelected = null;

                __callOnChange();
            }
        }

        function __callOnChange()
        {
            if (typeof(config.onChange) == 'function') {
                config.onChange.call(that, __getValue());
            }
        }

        function __onDataChange()
        {
            var newVal = __getValue();

            //если значение не изменилось - выходим
            if (newVal == curValue) {
                return;
            }

            curValue = newVal;

            if (curValue.length >= config.minChars) {
                __makeRequest(__response);
            } else {
                __hide();
            }
        }

        function __onBlur(e)
        {
            __resetTimeout();
            __cancelRequest();
            __hide();

            if (null === lastSelected && config.autoselect) {
                __makeAutoselect();
            }

            if (typeof(config.onBlur) == 'function') {
                config.onBlur.call(that);
            }
        }

        function __makeAutoselect()
        {
            var newVal = __getValue();

            curValue = newVal;

            if (curValue.length >= config.minChars) {
                __makeRequest(function(data, requestedValue) {
                    __parseResponse(requestedValue, data);
//                    __renderResult();

                    var i = 0;

                    k.a.each(curData, function(key, val) {
                        if (i > 0) {
                            return false;
                        }

                        if (curValue.toLowerCase() == val.name.toLowerCase()) {
                            __setValue(curData[key].name);
                            __onSelectValue(key);
                        }

                        i++;
                    });

                    if (i == 0) {
                        //не найдено!
                        if (typeof(config.onAutoselNotFound) == 'function') {
                            config.onAutoselNotFound.call(that);
                        }
                    }

                    that.resetCur();
                });
            }
        }

        function __cancelRequest()
        {
            cancelRequest = true;
        }

        function __makeRequest(callback)
        {
            if (typeof(config.onDataRequest) == 'function') {

            } else if (config.useCache && __cacheTest(curValue)) {
                callback.call(that, __cacheGet(curValue), curValue);
            } else {
                switch (config.dataSource) {
                    case 'remote-json':
                        var url = __getRequestUrl();
                        var params = __getRequestParams();
                        var requestedValue = curValue;
                        if (config.requestMethod == 'get') {
                            __addLoadingClass();
                            k.get(url, params, function(data) {
                                __rmLoadingClass();
                                callback.call(that, data, requestedValue);
                            }, 'json');
                        } else if (config.requestMethod == 'post') {
                            __addLoadingClass();
                            k.post(url, params, function(data) {
                                __rmLoadingClass();
                                callback.call(that, data, requestedValue);
                            }, 'json');
                        }

                        break;
                }
            }
        }

        function __addLoadingClass()
        {
            if (config.addLoadingClass) {
                k.a.addClass(inputEl, config.classes.loading);
            }
        }

        function __rmLoadingClass()
        {
            if (config.addLoadingClass) {
                k.a.rmClass(inputEl, config.classes.loading);
            }
        }

        function __response(data, requestedValue)
        {
            __parseResponse(requestedValue, data);
            __requestResult(requestedValue);
        }

        /*
         * проверяет - есть ли в кеше запись с этим ключом
         *
         **/
        function __cacheTest(key)
        {
            if (typeof(cache[key]) != 'undefined') {
                return true;
            } else {
                return false;
            }
        }

        function __cacheSave(key, value)
        {
            cache[key] = value;
        }

        function __cacheGet(key)
        {
            if (__cacheTest(key)) {
                return cache[key];
            } else {
                return null;
            }
        }

        function __onUpPress()
        {
            cancelRequest = false;

            if (null === curData) {
                __onDataChange();
                return;
            }

            if (status == 'hide') {
                __show();
                return;
            }

            if (k.util.count(curData) == 0) {
                return;
            }

            if (null === curSelected) {
                curSelected = orderedData.length - 1;
            } else {
                __rmMarkSelected(orderedData[curSelected]);

                if (curSelected == 0) {
                    curSelected = orderedData.length - 1;
                } else {
                    curSelected--;
                }
            }

            __setSelectedValue(orderedData[curSelected]);
            __markSelected(orderedData[curSelected]);
            __actualScroll(orderedData[curSelected]);
        }

        function __onDownPress()
        {
            cancelRequest = false;

            if (null === curData) {
                __onDataChange();
                return;
            }

            if (status == 'hide') {
                __show();
                return;
            }

            if (k.util.count(curData) == 0) {
                return;
            }

            if (null === curSelected) {
                curSelected = 0;
            } else {
                __rmMarkSelected(orderedData[curSelected]);

                if ((curSelected + 1) < orderedData.length) {
                    curSelected++;
                } else {
                    curSelected = 0;
                }
            }

            __setSelectedValue(orderedData[curSelected]);
            __markSelected(orderedData[curSelected]);
            __actualScroll(orderedData[curSelected]);
        }

        function __actualScroll(key)
        {
            if (!config.autoscroll) {
                return;
            }

            var viewportHeight = curEl.clientHeight,
                wholeHeight = curEl.scrollHeight,
                scrolled = curEl.scrollTop,
                elTop = curData[key].el.offsetTop,
                elBottom = elTop + curData[key].el.offsetHeight;

            if (elBottom > scrolled + viewportHeight) {
                curEl.scrollTop = elBottom - viewportHeight;
            } else if (elTop < scrolled) {
                curEl.scrollTop = elTop;
            }
        }

        function __setSelectedValue(key)
        {
            __setValue(curData[key].name);
        }

        function __markSelected(key)
        {
            k.a.addClass(curData[key].el, config.classes.selected);
        }

        function __rmMarkSelected(key)
        {
            k.a.rmClass(curData[key].el, config.classes.selected);
        }

        function __parseResponse(requestedValue, data, returnData)
        {
            var parsedData = __prepareData(data);

            if (true !== returnData) {
                curData = parsedData;
            }

            if (config.useCache) {
                __cacheSave(requestedValue, data);
            }

            if (true === returnData) {
                return parsedData;
            }
        }

        function __requestResult(requestedValue)
        {
            if (cancelRequest) {
                cancelRequest = false;
                return;
            }

            if (requestedValue == curValue) {
                __renderResult();

                __prepareSize();
                __show();
            }
        }

        function __prepareData(data)
        {
            var out = {};
            orderedData = [];

            k.a.each(data, function(key, val) {
                if (typeof(config.prepareData) == 'function') {
                    var row = config.prepareData.call(that, val);
                    if (typeof(row.id) == 'undefined' || typeof(row.name) == 'undefined') {
                        throw(new Error(-10, "row.id or row.name is undefined!"));
                    }

                    row.row = val;
                } else {
                    if (typeof(val[config.sourceId]) == 'undefined' || typeof(val[config.sourceName]) == 'undefined') {
                        throw(new Error(-10, "row[config.sourceId] or row[config.sourceName] is undefined!"));
                    }

                    var row = {id   : val[config.sourceId],
                               name : val[config.sourceName],
                               row  : val};
                }

                out[row.id] = row;
                orderedData.push(row.id);
            });

            return out;
        }

        function __renderResult()
        {
            curSelected = null;
            __removeCurEl();

            var rows = k.util.count(curData);

            if (rows == 0) {
                if (config.showNotFound) {
                    var html = __renderTpl(config.tplNotFound, {classes : config.classes,
                                                                close   : config.closeLink});
                } else {
                    return;
                }
            } else {
                var html = __renderTpl(config.tplMain, {data    : curData,
                                                        classes : config.classes,
                                                        close   : config.closeLink});
            }

            var tmp = document.createElement('div');
            tmp.innerHTML = html;

            curEl = k.a.query('.' + config.classes.root, tmp)[0];

            k.a.each(curData, function(key, val) {
                curData[key].el = k.a.query('.' + config.classes.idPrefix + key, curEl)[0];

                __setupItemEvents(key);
            });

            if (config.closeLink) {
                var closeLink = k.a.query('.' + config.classes.closeBlock + ' a', curEl)[0];
                k.a.bind(closeLink, 'click', __onCloseLinkClose);
            }

            if (null === parentEl) {
                parentEl = k.a.query(config.parentEl)[0];
            }

            parentEl.appendChild(curEl);
            delete tmp;
        }

        function __renderTpl(tpl, data)
        {
            if (config.tplType == 'local') {
                return k.template.renderLocal(tpl, data);
            } else {
                return k.template.render(tpl, data);
            }
        }

        function __onCloseLinkClose(e)
        {
            k.a.preventDefault(e);
            __hide();
        }

        function __setupItemEvents(key)
        {
            k.a.bind(curData[key].el, 'mouseover', function() {
                __onItemMouseover(key);
            });

            k.a.bind(curData[key].el, 'mousedown', function(e) {
                __onItemMousedown(key);
            });
        }

        function __onItemMousedown(key)
        {
            __setSelectedValue(key);
            __onSelectValue(key);
            __hide();
        }

        function __onItemMouseover(key)
        {
            if (null !== curSelected) {
                __rmMarkSelected(orderedData[curSelected]);
            }

            curSelected = k.a.inArray(key, orderedData);

//            __setSelectedValue(orderedData[curSelected]);
            __markSelected(orderedData[curSelected]);
        }

        function __prepareSize()
        {
            var width = (null !== config.width) ? config.width : k.a.width(inputEl);
            var height = (null !== config.height) ? config.height : k.a.height(inputEl);

            curEl.style.width = width + 'px';

            var pos = k.a.offset(inputEl);

            if (typeof(config.getPosition) == 'function') {
                var res = config.getPosition.call(that, pos.left, pos.top);
                pos.left = res.left;
                pos.top = res.top;
            }

            curEl.style.left = pos.left + 'px';
            curEl.style.top = pos.top + height + 'px';
        }

        function __show()
        {
            if (null !== curEl) {
                status = 'show';
                curEl.style.visibility = 'visible';
            }
        }

        function __hide()
        {
            status = 'hide';

            if (null !== curEl) {
                curEl.style.visibility = 'hidden';
            }
        }

        function __removeCurEl()
        {
            if (null !== parentEl && null !== curEl) {
                parentEl.removeChild(curEl);
            }
        }

        function __getRequestParams()
        {
            if (typeof(config.getRequestParams) == 'function') {
                return config.getRequestParams.call(that, curValue);
            } else {
                var out = {};
                out[config.requestParam] = curValue;
                return out;
            }
        }

        function __getRequestUrl()
        {
            if (typeof(config.getRequestUrl) == 'function') {
                return config.getRequestUrl.call(curValue);
            } else {
                return config.requestUrl;
            }
        }

        function __getValue()
        {
            return inputEl.value;
        }

        function __setValue(val)
        {
            inputEl.value = val;
        }

        function __setup()
        {
            if (typeof(iConfig) != 'undefined') {
                config = k.a.extend(config, iConfig);
            }

            if (typeof(inputEl) != 'object') {
                throw(new Error(-10, "inputEl is not html element!"));
            }

            //вырубаем нах браузрный автокомплит
            inputEl.setAttribute('autocomplete', 'off');

            __setupEvents();
        }

        function __setupEvents()
        {
            k.a.bind(inputEl, 'keydown', __onKeyDown);
            k.a.bind(inputEl, 'keypress', __onKeyPress);
            k.a.bind(inputEl, 'keyup', __onKeyUp);
            k.a.bind(inputEl, 'blur', __onBlur);
        }
    }
}) ();

if (typeof(k) == 'undefined' || !k) {
    var k = {};
}

(function() {
    /*
     * formEl - объек элемента формы
     * rules - ассоциативный массив с набором правил валидации
     * (из-за блядского jQuery length пришлось назвать stringLength)
     *
     **/
    k.form = function(formEl, rules, iConfig) {
        var that = this;

        var config = {errClassSuffix         : '-err',
                      errorClass             : 'error-field',
                      errorBlockClass        : 'field-errors',
                      hiddenSubmitClass      : 'hidden-submit',
                      commonMsgsClass        : 'common-messages',
                      commonMsgsMsgClass     : 'message',
                      commonMsgsErrClass     : 'error',
                      onSubmitPreventDefault : true,
                      onSubmit               : null,
                      onResetErrors          : null},

            //элементы формы, содержащиеся в rules (с которыми работает объект)
            elements = null,
            //контейнеры для ошибок
            errElements = null,
            //ошибки последней валидации
            errors = {},
            //контейнер общий сообщений/ошибок
            commonMessages = null;

        this.setConfig = function()
        {
            if (typeof(arguments[0]) == 'object') {
                config = k.a.extend(config, arguments[0]);
            }
        }

        this.getErrors = function()
        {
            return errors;
        }

        this.setCommonMessages = function(msgs, type)
        {
            if (null === commonMessages) {
                __setupCommonMessages();
            }

            var className = (type == 'message') ? config.commonMsgsMsgClass : config.commonMsgsErrClass;

            k.a.each(msgs, function(key, val) {
                var li = document.createElement('li');
                li.appendChild(document.createTextNode(val));
                li.className = className;

                commonMessages.appendChild(li);
            });
        }

        this.resetCommonMessages = function()
        {
            if (null !== commonMessages) {
                commonMessages.innerHTML = '';
            }
        }

        this.setErrors = function(errors)
        {
            if (null === errElements) {
                __setupErrElements();
            }

            k.a.each(errors, function(key, val) {
                __setElErrors(key, val);
            });
        }

        this.resetErrors = function()
        {
            if (null === errElements) {
                __setupErrElements();
            }

            k.a.each(errElements, function(key, el) {
                var errBlock = k.a.query('.' + config.errorBlockClass, el)[0];

                if (typeof(errBlock) != 'undefined') {
                    el.removeChild(errBlock);
                }
            });

            k.a.each(elements, function(key, val) {
                if (typeof(val.tagName) == 'undefined') {
                    k.a.each(val, function(i, el) {
                        that.resetElError(el);
                    });
                } else {
                    that.resetElError(val);
                }
            });

            if (typeof(config.onResetErrors) == 'function') {
                config.onResetErrors.call(this);
            }
        }

        this.validate = function()
        {
            if (null === elements) {
                __setupElements();
            }

            var out = true;
            errors = {};

            k.a.each(elements, function(key, val) {
                var res = __validateElement(key);

                if (res !== true) {
                    errors[key] = res;
                    out = false;
                }
            });

            return out;
        }

        this.setupLabels = function()
        {
            if (null === elements) {
                __setupElements();
            }

            var labels = formEl.getElementsByTagName('label');

            k.a.each(labels, function(key, val) {
                //блядский ie6
                if (typeof(val.attributes['for']) == 'undefined') {
                    return;
                }

                var forName = val.attributes['for'].nodeValue;

                if (typeof(elements[forName]) != 'undefined' && typeof(elements[forName].focus) == 'function') {
                    k.a.bind(val, 'click', function() {
                        elements[forName].focus();

                        return false
                    });
                }
            });
        }

        /*
         * добавляет к форме <input type="submit" />
         * чтобы работал субмит по ентеру
         *
         **/
        this.addHiddenSubmit = function()
        {
            var input = document.createElement('input');
            input.className = config.hiddenSubmitClass;
            input.type = 'submit';

            formEl.appendChild(input);
        }

        this.serialize = function()
        {
            return k.ajax.serializeForm(formEl);
        }

        this.serialize2Str = function()
        {
            return k.ajax.serialize(that.serialize());
        }

        this.reset = function()
        {
            formEl.reset();
        }

        this.setValues = function(values)
        {
            if (null === elements) {
                __setupElements();
            }

            k.a.each(elements, function(key, el) {
                if (typeof(values[key]) == 'undefined') {
                    return;
                }

                if (typeof(el.tagName) == 'undefined') {
                    k.a.each(el, function(subKey, subEl) {
                        var tagName = subEl.tagName.toLowerCase();

                        switch (tagName) {
                            case 'input':
                                var type = subEl.getAttribute('type');

                                switch (type) {
                                    case 'radio':
                                        if (subEl.value == values[key]) {
                                            subEl.checked = true;
                                        }
                                        break;
                                }

                                break;
                        }
                    });
                } else {
                    el.value = values[key];
                }
            });
        }

        this.reInitElements = function()
        {
            elements = null;

            __setupElements();
        }

        this.getFormEl = function()
        {
            return formEl;
        }

        this.markElAsError = function(el)
        {
            if (!k.a.hasClass(el, config.errorClass)) {
                k.a.addClass(el, config.errorClass);
            }
        }

        this.resetElError = function(el)
        {
            if (k.a.hasClass(el, config.errorClass)) {
                k.a.rmClass(el, config.errorClass);
            }
        }

        __setup();

        function __onFormSubmit(e)
        {
            if (config.onSubmitPreventDefault) {
                k.a.preventDefault(e);
            }

            if (typeof(config.onSubmit) == 'function') {
                config.onSubmit.call(that, e);
            }
        }

        function __setElErrors(field, errors)
        {
            if (typeof(elements[field]) == 'undefined') {
                return;
            }

            if (__isMarkElAsError(field)) {
                //массив элементов
                if (typeof(elements[field].tagName) == 'undefined') {
                    k.a.each(elements[field], function(key, el) {
                        that.markElAsError(el);
                    });
                } else {
                    that.markElAsError(elements[field]);
                }
            }

            if (typeof(errElements[field]) == 'undefined') {
                return;
            }

            var ul = document.createElement('ul');
            ul.className = config.errorBlockClass;

            k.a.each(errors, function(key, val) {
                var li = document.createElement('li');
                li.appendChild(document.createTextNode(val));

                ul.appendChild(li);
            });

            errElements[field].appendChild(ul);
        }

        /*
         * функция определяет помечать или нет элемент как ошибочный (путем добавления к нему класса)
         * по умолчанию - да
         * если в массиве правил есть props[notMarkElAsError] = true - тогда он поменчаться не будет
         *
         **/
        function __isMarkElAsError(field)
        {
            if (typeof(rules[field].props) == 'object'
                && typeof(rules[field].props.notMarkElAsError) == 'boolean'
                && rules[field].props.notMarkElAsError === true) {
                return false;
            } else {
                return true;
            }
        }

        /*
         * функция проверяет элемент field
         * возвращает либо true - в случае успешной валидации
         * {} с ошибками в случае ошибочной валидации
         *
         **/
        function __validateElement(field)
        {
            var out = true;
            var elErrs = {};

            if (typeof(rules[field]) == 'object' && typeof(elements[field]) == 'object') {
                var elValue = __getElValue(field);

                k.a.each(rules[field], function(ruleName, ruleProp) {
                    var res = null;

                    switch (ruleName) {
                        case 'isRequired':
                            res = __validateIsRequired(elValue, ruleProp);
                            break;
                        case 'stringLength':
                            res = __validateStringLength(elValue, ruleProp);
                            break;
                        case 'domain':
                            res = __validateDomain(elValue, ruleProp);
                            break;
                        case 'digits':
                            res = __validateDigits(elValue, ruleProp);
                            break;
                        case 'email':
                            res = __validateEmail(elValue, ruleProp);
                            break;
                        case 'float':
                            res = __validateFloat(elValue, ruleProp);
                            break;
                        case 'between':
                            res = __validateBetween(elValue, ruleProp);
                            break;
                        case 'callback':
                            if (typeof(ruleProp) == 'function') {
                                res = ruleProp.call(that, elValue);
                            }
                            break;
                        case 'uri':
                            res = __validateUri(elValue, ruleProp);
                            break;
                        case 'date':
                            res = __validateDate(elValue, ruleProp);
                            break;
                        case 'props':
                            //если это св-ва поля
                            break;
                    }

                    //FIXME:
                    //немного неверное - вообще всю валидацию надо переписать!
                    if (null !== res && true !== res) {
                        out = false;
                        elErrs = k.a.extend(elErrs, res);
                    }

                    if (typeof(ruleProp) == 'object' && true !== res && ruleProp.breakOnFalse === true) {
                        return false;
                    }
                });
            }

            if (true === out) {
                return true;
            } else {
                return elErrs;
            }
        }

        function __getElValue(field)
        {
            if (typeof(rules[field].props) == 'object' && typeof(rules[field].props.getValue) == 'function') {
                return rules[field].props.getValue.call(this);
            } else {
                if (typeof(elements[field].tagName) == 'undefined') {
                    //массив элементов
                    var out;
                    k.a.each(elements[field], function(key, el) {
                        var tagName = el.tagName.toLowerCase();

                        switch (tagName) {
                            case 'input':
                                var type = el.getAttribute('type');
                                var value = el.value;

                                if (null === value) {
                                    value = '';
                                }

                                switch (type) {
                                    case 'radio':
                                        if (el.checked) {
                                            out = value;
                                            return false;
                                        }
                                        break;
                                }

                                break;
                            case 'select':
                                if (!k.a.isArray(out)) {
                                    out = new Array();
                                }

                                out.push(el.value);
                                break;
                        }
                    });

                    return out;
                } else {
                    return elements[field].value;
                }
            }
        }

        function __validateBetween(val, prop)
        {
            val = val * 1;
            var strict = (typeof(prop.strict) == 'boolean') ? prop.strict : false;

            if (typeof(prop.min) == 'undefined' || typeof(prop.max) == 'undefined') {
                throw 'No min or max!';
            }

            var out = true;
            if (strict) {
                if (val <= prop.min || val >= prop.max) {
                    out = false;
                }
            } else {
                if (val < prop.min || val > prop.max) {
                    out = false;
                }
            }

            if (out) {
                return true;
            } else {
                if (strict) {
                    var str = k.lang['validate.notBetweenStrict'].replace(/%min%/, prop.min);
                    str = str.replace(/%max%/, prop.max);

                    return {notBetweenStrict : str};
                } else {
                    var str = k.lang['validate.notBetween'].replace(/%min%/, prop.min);
                    str = str.replace(/%max%/, prop.max);

                    return {notBetween : str};
                }
            }
        }

        function __validateFloat(val, prop)
        {
            var conf = {decimalPoint : '.'};

            if (typeof(prop) == 'object') {
                conf = k.a.extend(conf, prop);
            }

            var floatPattern = new RegExp("^[0-9]*(" + conf.decimalPoint + "[0-9]+)?$");

            if (floatPattern.test(val)) {
                return true;
            } else {
                return {notFloat : k.lang['validate.notFloat']};
            }
        }

        function __validateDate(val, prop)
        {
            val = String(val);

            var datePattern = new RegExp("^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$");

            if (datePattern.test(val)) {
                return true;
            } else {
                return {dateInvalid : k.lang['validate.dateInvalid']};
            }
        }

        function __validateEmail(val, prop)
        {
            val = String(val);

            var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

            if (pattern.test(val)) {
                return true;
            } else {
                return {invalidEmail : k.lang['validate.invalidEmail']};
            }
        }

        function __validateUri(val, prop)
        {
            val = String(val);

            var urlPattern = /^[a-z0-9\-\_]+$/;

            if (urlPattern.test(val)) {
                return true;
            } else {
                return {notDigits : k.lang['validate.uriInvalid']};
            }
        }

        function __validateDigits(val, prop)
        {
            val = String(val);

            var digitsPattern = /^[0-9]*$/;

            if (digitsPattern.test(val)) {
                return true;
            } else {
                return {notDigits : k.lang['validate.notDigits']};
            }
        }

        function __validateDomain(val, prop)
        {
            val = String(val);

            var domainPattern = /^([0-9a-z\-]+\.)+[a-z]{2,4}$/i;

            if (domainPattern.test(val)) {
                return true;
            } else {
                return {domainInvalid : k.lang['validate.domainInvalid']};
            }
        }

        function __validateStringLength(val, prop)
        {
            val = String(val);

            if (typeof(prop) == 'object') {
                if (typeof(prop.min) != 'undefined' && prop.min > val.length) {
                    return {stringLengthTooShort : k.lang['validate.stringLengthTooShort'].replace(/%min%/, prop.min)};
                }

                if (typeof(prop.max) != 'undefined' && prop.max < val.length) {
                    return {stringLengthTooLong : k.lang['validate.stringLengthTooLong'].replace(/%max%/, prop.max)};
                }
            }

            return true;
        }

        function __validateIsRequired(val, ruleProp)
        {
            if (k.a.isArray(val)) {
                //arrayMode - может быть либо all либо one
                //при all проверяется что все поля заполнены
                //при one - если хотя бы одно заполнено то true
                var arrayMode = (typeof(ruleProp) == 'object' && typeof(ruleProp.arrayMode) != 'undefined') ? ruleProp.arrayMode : 'all';

                var bad = false;
                var good = false;

                k.a.each(val, function(key, value) {
                    value = String(value);

                    if (value.length > 0) {
                        good = true;
                    } else {
                        bad = true;
                    }
                });

                if (arrayMode == 'all') {
                    if (bad || !good) {
                        return {isRequired : k.lang['validate.isEmpty']}
                    }
                } else if (arrayMode == 'one') {
                    if (!good) {
                        return {isRequired : k.lang['validate.isEmpty']}
                    }
                }

                return true;
            } else {
                sVal = String(val);

                if (typeof(val) == 'undefined' || sVal.length == 0) {
                    return {isRequired : k.lang['validate.isEmpty']};
                } else {
                    return true;
                }
            }
        }

        function __setupErrElements()
        {
            errElements = {};

            k.a.each(rules, function(key, val) {
                if (typeof(val.props) == 'object' && typeof(val.props.errElSelector) == 'string') {
                    var selector = val.props.errElSelector;
                } else {
                    var selector = '.' + key + config.errClassSuffix;
                }

                var el = k.a.query(selector, formEl)[0];

                if (typeof(el) != 'undefined') {
                    errElements[key] = el;
                }
            });
        }

        function __setupElements()
        {
            elements = {};

            k.a.each(rules, function(key, val) {
                if (typeof(formEl.elements[key]) != 'undefined') {
                    elements[key] = formEl.elements[key];
                }
            });
        }

        function __setupCommonMessages()
        {
            commonMessages = k.a.query('ul.' + config.commonMsgsClass, formEl)[0];

            if (!commonMessages) {
                throw new 'Common message element not found!';
            }
        }

        function __setupEvents()
        {
            k.a.bind(formEl, 'submit', __onFormSubmit);
        }

        function __setup()
        {
            if (typeof(formEl) != 'object' || typeof(formEl.tagName) != 'string' || formEl.tagName.toLowerCase() != 'form') {
                throw new Error(-10, "FormEl is not form tag!");
            }

            that.setConfig(iConfig);

            __setupEvents();
        }
    }
}) ();

if (typeof k == "undefined" || !k) {
    var k = {};
}

(function() {
    /*
     * ulNode - родительская UL нода
     * workNode - нода которая будет добавляться - должна быть li
     *
     **/
    k.cloneLi = function(ulNode, workNode, iConfig)
    {
        var that = this,
            rmLinkAll = false,
            config = {afterAdd     : null,
                      afterRm      : null,
                      createRmLink : null,
                      rmLinkClass  : 'rm-link'};

        this.setConfig = function()
        {
            if (typeof(arguments[0]) == 'object') {
                config = k.a.extend(config, arguments[0]);
            }
        }

        this.add = function()
        {
            var liNode = workNode.cloneNode(true);

            if (rmLinkAll) {
                __appendRmLink(liNode);
            }

            ulNode.appendChild(liNode);

            if (!rmLinkAll) {
                __initRmLink();
            }

            if (typeof(config.afterAdd) == 'function') {
                config.afterAdd.call(this, liNode);
            }
        }

        __setup()

        function __setup()
        {
            if (typeof(ulNode.tagName) == 'undefined' || ulNode.tagName.toLowerCase() != 'ul') {
                throw new 'Incorrent ulNode';
            }

            if (typeof(workNode.tagName) == 'undefined' || workNode.tagName.toLowerCase() != 'li') {
                throw new 'Incorrent liNode';
            }

            that.setConfig(iConfig);

            __initRmLink();
        }

        /*
         * добавляем кнопку удалить возле каждого li
         *
         **/
        function __initRmLink()
        {
            if (!rmLinkAll && ulNode.childNodes.length > 1) {
                rmLinkAll = true;
                k.a.each(ulNode.childNodes, function(i, node) {
                    __appendRmLink(node);
                });
            }
        }

        /*
         * при удалении проверяем - нужно ли еще выводить ссылки или нет
         *
         **/
        function __checkRmLink()
        {
            if (rmLinkAll && ulNode.childNodes.length == 1) {
                var a = k.a.query('a.' + config.rmLinkClass, ulNode);

                k.a.each(a, function(key,node) {
                    var li = node.parentNode;
                    li.removeChild(node);
                });

                rmLinkAll = false;
            }
        }

        function __appendRmLink(liNode)
        {
            liNode.appendChild(__createRmLink());
        }

        function __createRmLink()
        {
            if (typeof(config.createRmLink) == 'function') {
                var a = config.createRmLink.call(that, config.rmLinkClass);
            } else {
                var a = document.createElement('a');
                a.appendChild(document.createTextNode(k.lang['main.remove']));
                a.className = config.rmLinkClass;
                a.href = '';
            }

            k.a.bind(a, 'click', function(e) {
                k.a.preventDefault(e);
                var li = a.parentNode;
                ulNode.removeChild(li);

                __checkRmLink();

                if (typeof(config.afterRm) == 'function') {
                    config.afterRm.call(that);
                }
            });

            return a;
        }
    }
}) ();

/**
 *                                                        ____   _____
 *  Dynarch Calendar -- JSCal2, version 1.7               \  /_  /   /
 *  Built at 2009/07/16 08:37 GMT                          \  / /   /
 *                                                          \/ /_  /
 *  (c) Dynarch.com 2009                                     \  / /
 *  All rights reserved.                                       / /
 *  Visit www.dynarch.com/projects/calendar for details        \/
 *
 */
Calendar=(function(){function y(at){at=at||{};this.args=at=al(at,{animation:!c,cont:null,bottomBar:true,date:true,fdow:aq("fdow"),min:null,max:null,reverseWheel:false,selection:[],selectionType:y.SEL_SINGLE,weekNumbers:false,align:"Bl/ / /T/r",inputField:null,trigger:null,dateFormat:"%Y-%m-%d",opacity:j?1:3,titleFormat:"%b %Y",showTime:false,timePos:"right",time:true,minuteStep:5,disabled:ad,dateInfo:ad,onChange:ad,onSelect:ad,onTimeChange:ad,onFocus:ad,onBlur:ad});this.handlers={};var P=this,D=new Date();at.min=Y(at.min);at.max=Y(at.max);if(at.date===true){at.date=D}if(at.time===true){at.time=D.getHours()*100+Math.floor(D.getMinutes()/at.minuteStep)*at.minuteStep}this.date=Y(at.date);this.time=at.time;this.fdow=at.fdow;m("onChange onSelect onTimeChange onFocus onBlur".split(/\s+/),function(av){var au=at[av];if(!(au instanceof Array)){au=[au]}P.handlers[av]=au});this.selection=new y.Selection(at.selection,at.selectionType,R,this);var ar=K.call(this);if(at.cont){W(at.cont).appendChild(ar)}if(at.trigger){this.manageFields(at.trigger,at.inputField,at.dateFormat)}}var S=navigator.userAgent,s=/opera/i.test(S),ai=/Konqueror|Safari|KHTML/i.test(S),j=/msie/i.test(S)&&!s&&!(/mac_powerpc/i.test(S)),c=j&&/msie 6/i.test(S),x=/gecko/i.test(S)&&!ai&&!s&&!j,l=y.prototype,q=y.I18N={};y.SEL_NONE=0;y.SEL_SINGLE=1;y.SEL_MULTIPLE=2;y.SEL_WEEK=3;y.dateToInt=V;y.intToDate=B;y.printDate=ab;y.formatString=k;y.i18n=aq;y.LANG=function(P,D,ar){q.__=q[P]={name:D,data:ar}};y.setup=function(D){return new y(D)};l.moveTo=function(aG,aD){aG=Y(aG);var aC=af(aG,this.date,true),au,az=this.args,aH=az.min&&af(aG,az.min),aI=az.max&&af(aG,az.max);if(!az.animation){aD=false}ae(aH!=null&&aH<=1,[this.els.navPrevMonth,this.els.navPrevYear],"DynarchCalendar-navDisabled");ae(aI!=null&&aI>=-1,[this.els.navNextMonth,this.els.navNextYear],"DynarchCalendar-navDisabled");if(aH<-1){aG=az.min;au=1;aC=0}if(aI>1){aG=az.max;au=2;aC=0}this.date=aG;this.refresh(!!aD);this.callHooks("onChange",this,aG,aD);if(aD&&!(aC==0&&aD==2)){if(this._bodyAnim){this._bodyAnim.stop()}var aw=this.els.body,ax=G("div","DynarchCalendar-animBody-"+U[aC],aw),aF=aw.firstChild,av=am(aF)||0.7,ay=au?Z.brakes:aC==0?Z.shake:Z.accel_ab2,aE=aC*aC>4,ar=aE?aF.offsetTop:aF.offsetLeft,aB=ax.style,aA=aE?aw.offsetHeight:aw.offsetWidth;if(aC<0){aA+=ar}else{if(aC>0){aA=ar-aA}else{aA=Math.round(aA/7);if(au==2){aA=-aA}}}if(!au&&aC!=0){var P=ax.cloneNode(true),D=P.style,at=2*aA;P.appendChild(aF.cloneNode(true));D[aE?"marginTop":"marginLeft"]=aA+"px";aw.appendChild(P)}aF.style.visibility="hidden";ax.innerHTML=ac(this);this._bodyAnim=ap({onUpdate:v(function(aK,aM){var aL=ay(aK);if(P){var aJ=aM(aL,aA,at)+"px"}if(au){aB[aE?"marginTop":"marginLeft"]=aM(aL,aA,0)+"px"}else{if(aE||aC==0){aB.marginTop=aM(aC==0?ay(aK*aK):aL,0,aA)+"px";if(aC!=0){D.marginTop=aJ}}if(!aE||aC==0){aB.marginLeft=aM(aL,0,aA)+"px";if(aC!=0){D.marginLeft=aJ}}}if(this.args.opacity>2&&P){am(P,1-aL);am(ax,aL)}},this),onStop:v(function(aJ){aw.innerHTML=ac(this,aG);this._bodyAnim=null},this)})}this._lastHoverDate=null;return aH>=-1&&aI<=1};l.isDisabled=function(D){var P=this.args;return(P.min&&af(D,P.min)<0)||(P.max&&af(D,P.max)>0)||P.disabled(D)};l.toggleMenu=function(){u(this,!this._menuVisible)};l.refresh=function(D){var P=this.els;if(!D){P.body.innerHTML=ac(this)}P.title.innerHTML=F(this);P.yearInput.value=this.date.getFullYear()};l.redraw=function(){var D=this.els;this.refresh();D.dayNames.innerHTML=h(this);D.menu.innerHTML=ak(this);if(D.bottomBar){D.bottomBar.innerHTML=H(this)}t(D.topCont,v(function(ar){var P=r[ar.className];if(P){D[P]=ar}if(ar.className=="DynarchCalendar-menu-year"){p(ar,this._focusEvents);D.yearInput=ar}else{if(j){ar.setAttribute("unselectable","on")}}},this));this.setTime(null,true)};l.setLanguage=function(D){var P=y.setLanguage(D);if(P){this.fdow=P.data.fdow;this.redraw()}};y.setLanguage=function(D){var P=q[D];if(P){q.__=P}return P};l.focus=function(){try{this.els[this._menuVisible?"yearInput":"focusLink"].focus()}catch(D){}i.call(this)};l.blur=function(){this.els.focusLink.blur();this.els.yearInput.blur();z.call(this)};l.showAt=function(P,ax,av){if(this._showAnim){this._showAnim.stop()}av=av&&this.args.animation;var aw=this.els.topCont,ar=this,D=this.els.body.firstChild,au=D.offsetHeight,at=aw.style;at.position="absolute";at.left=P+"px";at.top=ax+"px";at.zIndex=10000;at.display="";if(av){D.style.marginTop=-au+"px";this.args.opacity>1&&am(aw,0);this._showAnim=ap({onUpdate:function(ay,az){D.style.marginTop=-az(Z.accel_b(ay),au,0)+"px";ar.args.opacity>1&&am(aw,ay)},onStop:function(){ar.args.opacity>1&&am(aw,"");ar._showAnim=null}})}};l.hide=function(){var at=this.els.topCont,P=this,D=this.els.body.firstChild,ar=D.offsetHeight,au=J(at).y;if(this.args.animation){if(this._showAnim){this._showAnim.stop()}this._showAnim=ap({onUpdate:function(av,aw){P.args.opacity>1&&am(at,1-av);D.style.marginTop=-aw(Z.accel_b(av),0,ar)+"px";at.style.top=aw(Z.accel_ab(av),au,au-10)+"px"},onStop:function(){at.style.display="none";D.style.marginTop="";P.args.opacity>1&&am(at,"");P._showAnim=null}})}else{at.style.display="none"}this.inputField=null};l.popup=function(D,at){D=W(D);if(!at){at=this.args.align}at=at.split(/\x2f/);var ar=J(D),aw=this.els.topCont,ay=aw.style,au,ax=X();ay.visibility="hidden";ay.display="";this.showAt(0,0);document.body.appendChild(aw);au={x:aw.offsetWidth,y:aw.offsetHeight};function P(az){var aA={x:av.x,y:av.y};if(!az){return aA}if(/B/.test(az)){aA.y+=D.offsetHeight}if(/b/.test(az)){aA.y+=D.offsetHeight-au.y}if(/T/.test(az)){aA.y-=au.y}if(/l/.test(az)){aA.x-=au.x-D.offsetWidth}if(/L/.test(az)){aA.x-=au.x}if(/R/.test(az)){aA.x+=D.offsetWidth}if(/c/i.test(az)){aA.x+=(D.offsetWidth-au.x)/2}if(/m/i.test(az)){aA.y+=(D.offsetHeight-au.y)/2}return aA}var av=ar;av=P(at[0]);if(av.y<ax.y){av.y=ar.y;av=P(at[1])}if(av.x+au.x>ax.x+ax.w){av.x=ar.x;av=P(at[2])}if(av.y+au.y>ax.y+ax.h){av.y=ar.y;av=P(at[3])}if(av.x<ax.x){av.x=ar.x;av=P(at[4])}this.showAt(av.x,av.y,true);ay.visibility="";this.focus()};l.manageFields=function(ar,P,D){P=W(P);p(W(ar),"click",v(function(){this.inputField=P;this.dateFormat=D;if(this.selection.type==y.SEL_SINGLE){var aw,av,au,at;aw=/input|textarea/i.test(P.tagName)?P.value:(P.innerText||P.textContent);if(aw){av=/(^|[^%])%[bBmo]/.exec(D);au=/(^|[^%])%[de]/.exec(D);if(av&&au){at=av.index<au.index}aw=Calendar.parseDate(aw,at);if(aw){this.moveTo(aw);this.selection.set(aw,false,true)}}}this.popup(ar)},this))};l.callHooks=function(ar){var at=b(arguments,1),D=this.handlers[ar],P=0;for(;P<D.length;++P){D[P].apply(this,at)}};l.addEventListener=function(P,D){this.handlers[P].push(D)};l.removeEventListener=function(at,ar){var D=this.handlers[at],P=D.length;while(--P>=0){if(D[P]===ar){D.splice(P,1)}}};l.getTime=function(){return this.time};l.setTime=function(au,P){if(this.args.showTime){au=this.time=au!=null?au:this.time;var ar=this.getHours(),D=this.getMinutes(),at=ar<12;if(this.args.showTime==12){if(ar==0){ar=12}if(ar>12){ar-=12}this.els.timeAM.innerHTML=aq(at?"AM":"PM")}if(ar<10){ar="0"+ar}if(D<10){D="0"+D}this.els.timeHour.innerHTML=ar;this.els.timeMinute.innerHTML=D;if(!P){this.callHooks("onTimeChange",this,au)}}};l.getHours=function(){return Math.floor(this.time/100)};l.getMinutes=function(){return this.time%100};l.setHours=function(D){if(D<0){D+=24}this.setTime(100*(D%24)+this.time%100)};l.setMinutes=function(D){if(D<0){D+=60}this.setTime(100*this.getHours()+(D%60))};l._getInputYear=function(){var D=parseInt(this.els.yearInput.value,10);if(isNaN(D)){D=this.date.getFullYear()}return D};l._showTooltip=function(D){var P="",at,ar=this.els.tooltip;if(D){D=B(D);at=this.args.dateInfo(D);if(at&&at.tooltip){P="<div class='DynarchCalendar-tooltipCont'>"+ab(D,at.tooltip)+"</div>"}}ar.innerHTML=P};var ah=" align='center' cellspacing='0' cellpadding='0'";function h(D){var ar=["<table",ah,"><tr>"],P=0;if(D.args.weekNumbers){ar.push("<td><div class='DynarchCalendar-weekNumber'>",aq("wk"),"</div></td>")}while(P<7){var at=(P+++D.fdow)%7;ar.push("<td><div",aq("weekend").indexOf(at)>=0?" class='DynarchCalendar-weekend'>":">",aq("sdn")[at],"</div></td>")}ar.push("</tr></table>");return ar.join("")}function ac(aw,aG,aD){aG=aG||aw.date;aD=aD||aw.fdow;aG=new Date(aG);var aI=aG.getMonth(),av=[],aA=0,D=aw.args.weekNumbers;aG.setDate(1);var az=(aG.getDay()-aD)%7;if(az<0){az+=7}aG.setDate(-az);aG.setDate(aG.getDate()+1);var aE=new Date(),at=aE.getDate(),P=aE.getMonth(),aJ=aE.getFullYear();av[aA++]="<table class='DynarchCalendar-bodyTable'"+ah+">";for(var aC=0;aC<6;++aC){av[aA++]="<tr class='DynarchCalendar-week";if(aC==0){av[aA++]=" DynarchCalendar-first-row"}if(aC==5){av[aA++]=" DynarchCalendar-last-row"}av[aA++]="'>";if(D){av[aA++]="<td class='DynarchCalendar-first-col'><div class='DynarchCalendar-weekNumber'>"+a(aG)+"</div></td>"}for(var aB=0;aB<7;++aB){var aF=aG.getDate(),ay=aG.getMonth(),au=aG.getFullYear(),ar=10000*au+100*(ay+1)+aF,aH=aw.selection.isSelected(ar),ax=aw.isDisabled(aG);av[aA++]="<td class='";if(aB==0&&!D){av[aA++]=" DynarchCalendar-first-col"}if(aB==0&&aC==0){aw._firstDateVisible=ar}if(aB==6){av[aA++]=" DynarchCalendar-last-col";if(aC==5){aw._lastDateVisible=ar}}if(aH){av[aA++]=" DynarchCalendar-td-selected"}av[aA++]="'><div dyc-type='date' unselectable='on' dyc-date='"+ar+"' ";if(ax){av[aA++]="disabled='1' "}av[aA++]="class='DynarchCalendar-day";if(aq("weekend").indexOf(aG.getDay())>=0){av[aA++]=" DynarchCalendar-weekend"}if(ay!=aI){av[aA++]=" DynarchCalendar-day-othermonth"}if(aF==at&&ay==P&&au==aJ){av[aA++]=" DynarchCalendar-day-today"}if(ax){av[aA++]=" DynarchCalendar-day-disabled"}if(aH){av[aA++]=" DynarchCalendar-day-selected"}ax=aw.args.dateInfo(aG);if(ax&&ax.klass){av[aA++]=" "+ax.klass}av[aA++]="'>"+aF+"</div></td>";aG.setDate(aF+1)}av[aA++]="</tr>"}av[aA++]="</table>";return av.join("")}function n(D){var P=["<table class='DynarchCalendar-topCont'",ah,"><tr><td><div class='DynarchCalendar'>",!j?"<button class='DynarchCalendar-focusLink'></button>":"<a class='DynarchCalendar-focusLink' href='#'></a>","<div class='DynarchCalendar-topBar'><div dyc-type='nav' dyc-btn='-Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevYear'><div></div></div><div dyc-type='nav' dyc-btn='+Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextYear'><div></div></div><div dyc-type='nav' dyc-btn='-M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevMonth'><div></div></div><div dyc-type='nav' dyc-btn='+M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextMonth'><div></div></div><table class='DynarchCalendar-titleCont'",ah,"><tr><td><div dyc-type='title' dyc-btn='menu' dyc-cls='hover-title,pressed-title' class='DynarchCalendar-title'>",F(D),"</div></td></tr></table><div class='DynarchCalendar-dayNames'>",h(D),"</div></div><div class='DynarchCalendar-body'></div>"];if(D.args.bottomBar||D.args.showTime){P.push("<div class='DynarchCalendar-bottomBar'>",H(D),"</div>")}P.push("<div class='DynarchCalendar-menu' style='display: none'>",ak(D),"</div><div class='DynarchCalendar-tooltip'></div></div></td></tr></table>");return P.join("")}function F(D){return"<div unselectable='on'>"+ab(D.date,D.args.titleFormat)+"</div>"}function ak(P){var au=["<table height='100%'",ah,"><tr><td><table style='margin-top: 1.5em'",ah,"><tr><td colspan='3'><input dyc-btn='year' class='DynarchCalendar-menu-year' size='6' value='",P.date.getFullYear(),"' /></td></tr><tr><td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='today'>",aq("goToday"),"</div></td></tr></table><p class='DynarchCalendar-menu-sep'>&nbsp;</p><table class='DynarchCalendar-menu-mtable'",ah,">"],av=aq("smn"),at=0,D=au.length,ar;while(at<12){au[D++]="<tr>";for(ar=4;--ar>0;){au[D++]="<td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='m"+at+"' class='DynarchCalendar-menu-month'>"+av[at++]+"</div></td>"}au[D++]="</tr>"}au[D++]="</table></td></tr></table>";return au.join("")}function w(D,P){P.push("<table class='DynarchCalendar-time'"+ah+"><tr><td rowspan='2'><div dyc-type='time-hour' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-hour'></div></td><td dyc-type='time-hour+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td><td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div dyc-type='time-min' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-minute'></div></td><td dyc-type='time-min+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td>");if(D.args.showTime==12){P.push("<td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div class='DynarchCalendar-time-am' dyc-type='time-am' dyc-cls='hover-time,pressed-time'></div></td>")}P.push("</tr><tr><td dyc-type='time-hour-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td><td dyc-type='time-min-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td></tr></table>")}function H(D){var ar=[],P=D.args;ar.push("<table",ah," style='width:100%'><tr>");function at(){if(P.showTime){ar.push("<td>");w(D,ar);ar.push("</td>")}}if(P.timePos=="left"){at()}if(P.bottomBar){ar.push("<td>");ar.push("<table",ah,"><tr><td><div dyc-btn='today' dyc-cls='hover-bottomBar-today,pressed-bottomBar-today' dyc-type='bottomBar-today' class='DynarchCalendar-bottomBar-today'>",aq("today"),"</div></td></tr></table>");ar.push("</td>")}if(P.timePos=="right"){at()}ar.push("</tr></table>");return ar.join("")}var r={"DynarchCalendar-topCont":"topCont","DynarchCalendar-focusLink":"focusLink",DynarchCalendar:"main","DynarchCalendar-topBar":"topBar","DynarchCalendar-title":"title","DynarchCalendar-dayNames":"dayNames","DynarchCalendar-body":"body","DynarchCalendar-menu":"menu","DynarchCalendar-menu-year":"yearInput","DynarchCalendar-bottomBar":"bottomBar","DynarchCalendar-tooltip":"tooltip","DynarchCalendar-time-hour":"timeHour","DynarchCalendar-time-minute":"timeMinute","DynarchCalendar-time-am":"timeAM","DynarchCalendar-navBtn DynarchCalendar-prevYear":"navPrevYear","DynarchCalendar-navBtn DynarchCalendar-nextYear":"navNextYear","DynarchCalendar-navBtn DynarchCalendar-prevMonth":"navPrevMonth","DynarchCalendar-navBtn DynarchCalendar-nextMonth":"navNextMonth"};function K(){var ar=G("div"),P=this.els={},D={mousedown:v(I,this,true),mouseup:v(I,this,false),mouseover:v(T,this,true),mouseout:v(T,this,false),keypress:v(L,this)};D[x?"DOMMouseScroll":"mousewheel"]=v(E,this);if(j){D.dblclick=D.mousedown;D.keydown=D.keypress}ar.innerHTML=n(this);t(ar.firstChild,function(au){var at=r[au.className];if(at){P[at]=au}if(j){au.setAttribute("unselectable","on")}});p(P.main,D);p([P.focusLink,P.yearInput],this._focusEvents={focus:v(i,this),blur:v(e,this)});this.moveTo(this.date,false);this.setTime(null,true);return P.topCont}function i(){if(this._bluringTimeout){clearTimeout(this._bluringTimeout)}this.focused=true;M(this.els.main,"DynarchCalendar-focused");this.callHooks("onFocus",this)}function z(){this.focused=false;aj(this.els.main,"DynarchCalendar-focused");if(this._menuVisible){u(this,false)}if(!this.args.cont){this.hide()}this.callHooks("onBlur",this)}function e(){this._bluringTimeout=setTimeout(v(z,this),50)}function N(D){switch(D){case"time-hour+":this.setHours(this.getHours()+1);break;case"time-hour-":this.setHours(this.getHours()-1);break;case"time-min+":this.setMinutes(this.getMinutes()+this.args.minuteStep);break;case"time-min-":this.setMinutes(this.getMinutes()-this.args.minuteStep);break;default:return}}var U={"-3":"backYear","-2":"back","0":"now","2":"fwd","3":"fwdYear"};function aa(P,at,D){if(this._bodyAnim){this._bodyAnim.stop()}var ar;if(at!=0){ar=new Date(P.date);ar.setDate(1);switch(at){case"-Y":case -2:ar.setFullYear(ar.getFullYear()-1);break;case"+Y":case 2:ar.setFullYear(ar.getFullYear()+1);break;case"-M":case -1:ar.setMonth(ar.getMonth()-1);break;case"+M":case 1:ar.setMonth(ar.getMonth()+1);break}}else{ar=new Date()}return P.moveTo(ar,!D)}function u(ar,P){ar._menuVisible=P;ae(P,ar.els.title,"DynarchCalendar-pressed-title");var at=ar.els.menu;if(c){at.style.height=ar.els.main.offsetHeight+"px"}if(!ar.args.animation){O(at,P);if(ar.focused){ar.focus()}}else{if(ar._menuAnim){ar._menuAnim.stop()}var D=ar.els.main.offsetHeight;if(c){at.style.width=ar.els.topBar.offsetWidth+"px"}if(P){at.firstChild.style.marginTop=-D+"px";ar.args.opacity>0&&am(at,0);O(at,true)}ar._menuAnim=ap({onUpdate:function(au,av){at.firstChild.style.marginTop=av(Z.accel_b(au),-D,0,!P)+"px";ar.args.opacity>0&&am(at,av(Z.accel_b(au),0,0.85,!P))},onStop:function(){ar.args.opacity>0&&am(at,0.85);at.firstChild.style.marginTop="";ar._menuAnim=null;if(!P){O(at,false);if(ar.focused){ar.focus()}}}})}}function I(az,ay){ay=ay||window.event;var au=o(ay);if(au&&!au.getAttribute("disabled")){var D=au.getAttribute("dyc-btn"),ax=au.getAttribute("dyc-type"),av=au.getAttribute("dyc-date"),at=this.selection,ar,P={mouseover:an,mousemove:an,mouseup:function(aC){var aB=au.getAttribute("dyc-cls");if(aB){aj(au,ao(aB,1))}clearTimeout(ar);d(document,P,true);P=null}};if(az){setTimeout(v(this.focus,this),1);var aA=au.getAttribute("dyc-cls");if(aA){M(au,ao(aA,1))}if("menu"==D){this.toggleMenu()}else{if(au&&/^[+-][MY]$/.test(D)){if(aa(this,D)){var aw=v(function(){if(aa(this,D,true)){ar=setTimeout(aw,40)}else{P.mouseup();aa(this,D)}},this);ar=setTimeout(aw,350);p(document,P,true)}else{P.mouseup()}}else{if("year"==D){this.els.yearInput.focus();this.els.yearInput.select()}else{if(ax=="time-am"){p(document,P,true)}else{if(/^time/.test(ax)){var aw=v(function(aB){N.call(this,aB);ar=setTimeout(aw,100)},this,ax);N.call(this,ax);ar=setTimeout(aw,350);p(document,P,true)}else{if(av&&at.type){if(at.type==y.SEL_MULTIPLE){if(ay.shiftKey&&this._selRangeStart){at.selectRange(this._selRangeStart,av)}else{if(!ay.ctrlKey&&!at.isSelected(av)){at.clear(true)}at.set(av,true);this._selRangeStart=av}}else{at.set(av);this.moveTo(B(av),2)}au=this._getDateDiv(av);T.call(this,true,{target:au})}p(document,P,true)}}}}}if(j&&P&&/dbl/i.test(ay.type)){P.mouseup()}if(/^(DynarchCalendar-(topBar|bottomBar|weekend|weekNumber|menu(-sep)?))?$/.test(au.className)&&!this.args.cont){P.mousemove=v(g,this);this._mouseDiff=f(ay,J(this.els.topCont));p(document,P,true)}}else{if("today"==D){if(!this._menuVisible&&at.type==y.SEL_SINGLE){at.set(new Date())}this.moveTo(new Date(),true);u(this,false)}else{if(/^m([0-9]+)/.test(D)){var av=new Date(this.date);av.setDate(1);av.setMonth(RegExp.$1);av.setFullYear(this._getInputYear());this.moveTo(av,true);u(this,false)}else{if(ax=="time-am"){this.setHours(this.getHours()+12)}}}}if(!j){an(ay)}}}function g(P){P=P||window.event;var D=this.els.topCont.style,ar=f(P,this._mouseDiff);D.left=ar.x+"px";D.top=ar.y+"px"}function o(P){var D=P.target||P.srcElement,ar=D;while(D&&D.getAttribute&&!D.getAttribute("dyc-type")){D=D.parentNode}return D.getAttribute&&D||ar}function ao(D,P){return"DynarchCalendar-"+D.split(/,/)[P]}function T(au,at){at=at||window.event;var ar=o(at);if(ar){var P=ar.getAttribute("dyc-type");if(P&&!ar.getAttribute("disabled")){if(!au||!this._bodyAnim||P!="date"){var D=ar.getAttribute("dyc-cls");D=D?ao(D,0):"DynarchCalendar-hover-"+P;if(P!="date"||this.selection.type){ae(au,ar,D)}if(P=="date"){ae(au,ar.parentNode.parentNode,"DynarchCalendar-hover-week");this._showTooltip(ar.getAttribute("dyc-date"))}if(/^time-hour/.test(P)){ae(au,this.els.timeHour,"DynarchCalendar-hover-time")}if(/^time-min/.test(P)){ae(au,this.els.timeMinute,"DynarchCalendar-hover-time")}aj(this._getDateDiv(this._lastHoverDate),"DynarchCalendar-hover-date");this._lastHoverDate=null}}}if(!au){this._showTooltip()}}function E(ar){ar=ar||window.event;var P=o(ar);if(P){var at=P.getAttribute("dyc-btn"),D=P.getAttribute("dyc-type"),au=ar.wheelDelta?ar.wheelDelta/120:-ar.detail/3;au=au<0?-1:au>0?1:0;if(this.args.reverseWheel){au=-au}if(/^(time-(hour|min))/.test(D)){switch(RegExp.$1){case"time-hour":this.setHours(this.getHours()+au);break;case"time-min":this.setMinutes(this.getMinutes()+this.args.minuteStep*au);break}an(ar)}else{if(/Y/i.test(at)){au*=2}aa(this,-au);an(ar)}}}function R(){this.refresh();var D=this.inputField,P=this.selection;if(D){var ar=P.print(this.dateFormat);(/input|textarea/i.test(D.tagName))?D.value=ar:D.innerHTML=ar}this.callHooks("onSelect",this,P)}var ag={37:-1,38:-2,39:1,40:2},Q={33:-1,34:1};function L(aB){if(this._menuAnim){return}aB=aB||window.event;var ar=aB.target||aB.srcElement,aC=ar.getAttribute("dyc-btn"),aD=aB.keyCode,ay=aB.charCode||aD,D=ag[aD];if("year"==aC&&aD==13){var au=new Date(this.date);au.setDate(1);au.setFullYear(this._getInputYear());this.moveTo(au,true);u(this,false);return an(aB)}if(this._menuVisible){if(aD==27){u(this,false);return an(aB)}}else{if(!aB.ctrlKey){D=null}if(D==null&&!aB.ctrlKey){D=Q[aD]}if(aD==36){D=0}if(D!=null){aa(this,D);return an(aB)}ay=String.fromCharCode(ay).toLowerCase();var ax=this.els.yearInput,P=this.selection;if(ay==" "){u(this,true);this.focus();ax.focus();ax.select();return an(aB)}if(ay>="0"&&ay<="9"){u(this,true);this.focus();ax.value=ay;ax.focus();return an(aB)}var av=aq("mn"),az=aB.shiftKey?-1:this.date.getMonth(),aw=0,at;while(++aw<12){at=av[(az+aw)%12].toLowerCase();if(at.indexOf(ay)==0){var au=new Date(this.date);au.setDate(1);au.setMonth((az+aw)%12);this.moveTo(au,true);return an(aB)}}if(aD>=37&&aD<=40){var au=this._lastHoverDate;if(!au&&!P.isEmpty()){au=aD<39?P.getFirstDate():P.getLastDate();if(au<this._firstDateVisible||au>this._lastDateVisible){au=null}}if(!au){au=aD<39?this._lastDateVisible:this._firstDateVisible}else{var aA=au;au=B(au);var az=100;while(az-->0){switch(aD){case 37:au.setDate(au.getDate()-1);break;case 38:au.setDate(au.getDate()-7);break;case 39:au.setDate(au.getDate()+1);break;case 40:au.setDate(au.getDate()+7);break}if(!this.isDisabled(au)){break}}au=V(au);if(au<this._firstDateVisible||au>this._lastDateVisible){this.moveTo(au)}}aj(this._getDateDiv(aA),M(this._getDateDiv(au),"DynarchCalendar-hover-date"));this._lastHoverDate=au;return an(aB)}if(aD==13){if(this._lastHoverDate){if(P.type==y.SEL_MULTIPLE&&(aB.shiftKey||aB.ctrlKey)){if(aB.shiftKey&&this._selRangeStart){P.clear(true);P.selectRange(this._selRangeStart,this._lastHoverDate)}if(aB.ctrlKey){P.set(this._selRangeStart=this._lastHoverDate,true)}}else{P.reset(this._selRangeStart=this._lastHoverDate)}return an(aB)}}if(aD==27&&!this.args.cont){this.hide()}}}l._getDateDiv=function(D){var ar=null;if(D){try{t(this.els.body,function(at){if(at.getAttribute("dyc-date")==D){throw ar=at}})}catch(P){}}return ar};function k(D,P){return D.replace(/\$\{([^:\}]+)(:[^\}]+)?\}/g,function(av,au,at){var aw=P[au],ar;if(at){ar=at.substr(1).split(/\s*\|\s*/);aw=(aw>=ar.length?ar[ar.length-1]:ar[aw]).replace(/##?/g,function(ax){return ax.length==2?"#":aw})}return aw})}function aq(ar,P){var D=q.__.data[ar];if(P&&typeof D=="string"){D=k(D,P)}return D}(y.Selection=function(ar,P,D,at){this.type=P;this.sel=ar instanceof Array?ar:[ar];this.onChange=v(D,at);this.cal=at}).prototype={get:function(){return this.type==y.SEL_SINGLE?this.sel[0]:this.sel},isEmpty:function(){return this.sel.length==0},set:function(P,D,ar){var at=this.type==y.SEL_SINGLE;if(P instanceof Array){this.sel=P;this.normalize();if(!ar){this.onChange(this)}}else{P=V(P);if(at||!this.isSelected(P)){at?this.sel=[P]:this.sel.splice(this.findInsertPos(P),0,P);this.normalize();if(!ar){this.onChange(this)}}else{if(D){this.unselect(P,ar)}}}},reset:function(){this.sel=[];this.set.apply(this,arguments)},countDays:function(){var av=0,D=this.sel,P=D.length,at,au,ar;while(--P>=0){at=D[P];if(at instanceof Array){au=B(at[0]);ar=B(at[1]);av+=Math.round(Math.abs(ar.getTime()-au.getTime())/86400000)}++av}return av},unselect:function(P,ar){P=V(P);var at=false;for(var ay=this.sel,au=ay.length,D;--au>=0;){D=ay[au];if(D instanceof Array){if(P>=D[0]&&P<=D[1]){var av=B(P),ax=av.getDate();if(P==D[0]){av.setDate(ax+1);D[0]=V(av);at=true}else{if(P==D[1]){av.setDate(ax-1);D[1]=V(av);at=true}else{var aw=new Date(av);aw.setDate(ax+1);av.setDate(ax-1);ay.splice(au+1,0,[V(aw),D[1]]);D[1]=V(av);at=true}}}}else{if(P==D){ay.splice(au,1);at=true}}}if(at){this.normalize();if(!ar){this.onChange(this)}}},normalize:function(){this.sel=this.sel.sort(function(ay,ax){if(ay instanceof Array){ay=ay[0]}if(ax instanceof Array){ax=ax[0]}return ay-ax});for(var P=this.sel,ar=P.length,av,au;--ar>=0;){av=P[ar];if(av instanceof Array){if(av[0]>av[1]){P.splice(ar,1);continue}if(av[0]==av[1]){av=P[ar]=av[0]}}if(au){var at=au,aw=av instanceof Array?av[1]:av;aw=B(aw);aw.setDate(aw.getDate()+1);aw=V(aw);if(aw>=at){var D=P[ar+1];if(av instanceof Array&&D instanceof Array){av[1]=D[1];P.splice(ar+1,1)}else{if(av instanceof Array){av[1]=au;P.splice(ar+1,1)}else{if(D instanceof Array){D[0]=av;P.splice(ar,1)}else{P[ar]=[av,D];P.splice(ar+1,1)}}}}}au=av instanceof Array?av[0]:av}},findInsertPos:function(P){for(var D=this.sel,ar=D.length,at;--ar>=0;){at=D[ar];if(at instanceof Array){at=at[0]}if(at<=P){break}}return ar+1},clear:function(D){this.sel=[];if(!D){this.onChange(this)}},selectRange:function(ar,P){ar=V(ar);P=V(P);if(ar>P){var D=ar;ar=P;P=D}this.sel.push([ar,P]);this.normalize();this.onChange(this)},isSelected:function(D){for(var P=this.sel.length,ar;--P>=0;){ar=this.sel[P];if(ar instanceof Array&&D>=ar[0]&&D<=ar[1]||D==ar){return true}}return false},getFirstDate:function(){var D=this.sel[0];if(D&&D instanceof Array){D=D[0]}return D},getLastDate:function(){if(this.sel.length>0){var D=this.sel[this.sel.length-1];if(D&&D instanceof Array){D=D[1]}return D}},print:function(ar,at){var P=[],au=0,aw,av=this.cal.getHours(),D=this.cal.getMinutes();if(!at){at=" -> "}while(au<this.sel.length){aw=this.sel[au++];if(aw instanceof Array){P.push(ab(B(aw[0],av,D),ar)+at+ab(B(aw[1],av,D),ar))}else{P.push(ab(B(aw,av,D),ar))}}return P},getDates:function(P){var D=[],ar=0,au,at;while(ar<this.sel.length){at=this.sel[ar++];if(at instanceof Array){au=B(at[0]);at=at[1];while(V(au)<at){D.push(P?ab(au,P):new Date(au));au.setDate(au.getDate()+1)}}else{au=B(at)}D.push(P?ab(au,P):au)}return D}};function a(P){P=new Date(P.getFullYear(),P.getMonth(),P.getDate(),12,0,0);var ar=P.getDay();P.setDate(P.getDate()-(ar+6)%7+3);var D=P.valueOf();P.setMonth(0);P.setDate(4);return Math.round((D-P.valueOf())/(7*86400000))+1}function C(D){D=new Date(D.getFullYear(),D.getMonth(),D.getDate(),0,0,0);var ar=new Date(D.getFullYear(),0,1,12,0,0);var P=D-ar;return Math.floor(P/86400000)}function V(D){if(D instanceof Date){return 10000*D.getFullYear()+100*(D.getMonth()+1)+D.getDate()}if(typeof D=="string"){return parseInt(D,10)}return D}function B(ar,au,av,at,P){if(!(ar instanceof Date)){ar=parseInt(ar,10);var aw=Math.floor(ar/10000);ar=ar%10000;var D=Math.floor(ar/100);ar=ar%100;ar=new Date(aw,D-1,ar,au||12,av||0,at||0,P||0)}return ar}function af(aw,au,ar){var av=aw.getFullYear(),ay=aw.getMonth(),P=aw.getDate(),at=au.getFullYear(),ax=au.getMonth(),D=au.getDate();return av<at?-3:av>at?3:ay<ax?-2:ay>ax?2:ar?0:P<D?-1:P>D?1:0}function ab(D,ax){var P=D.getMonth(),aw=D.getDate(),ay=D.getFullYear(),az=a(D),aA=D.getDay(),aB=D.getHours(),ar=(aB>=12),au=(ar)?(aB-12):aB,aD=C(D),at=D.getMinutes(),av=D.getSeconds(),aC=/%./g,aE;if(au===0){au=12}aE={"%a":aq("sdn")[aA],"%A":aq("dn")[aA],"%b":aq("smn")[P],"%B":aq("mn")[P],"%C":1+Math.floor(ay/100),"%d":aw<10?"0"+aw:aw,"%e":aw,"%H":aB<10?"0"+aB:aB,"%I":au<10?"0"+au:au,"%j":aD<10?"00"+aD:aD<100?"0"+aD:aD,"%k":aB,"%l":au,"%m":P<9?"0"+(1+P):1+P,"%o":1+P,"%M":at<10?"0"+at:at,"%n":"\n","%p":ar?"PM":"AM","%P":ar?"pm":"am","%s":Math.floor(D.getTime()/1000),"%S":av<10?"0"+av:av,"%t":"\t","%U":az<10?"0"+az:az,"%W":az<10?"0"+az:az,"%V":az<10?"0"+az:az,"%u":aA+1,"%w":aA,"%y":(""+ay).substr(2,2),"%Y":ay,"%%":"%"};return ax.replace(aC,function(aF){return aE.hasOwnProperty(aF)?aE[aF]:aF})}function Y(P){if(P){if(typeof P=="number"){return B(P)}if(!(P instanceof Date)){var D=P.split(/-/);return new Date(parseInt(D[0],10),parseInt(D[1],10)-1,parseInt(D[2],10),12,0,0,0)}}return P}function A(ar){ar=ar.toLowerCase();function P(at){for(var au=at.length;--au>=0;){if(at[au].toLowerCase().indexOf(ar)==0){return au}}}var D=P(aq("smn"))||P(aq("mn"));if(D!=null){D++}return D}y.parseDate=function(au,D,aw){if(!/\S/.test(au)){return""}au=au.replace(/^\s+/,"").replace(/\s+$/,"");aw=aw||new Date();var aB=null,P=null,aD=null,av=null,ar=null,aC=null;var ay=au.match(/([0-9]{1,2}):([0-9]{1,2})(:[0-9]{1,2})?\s*(am|pm)?/i);if(ay){av=parseInt(ay[1],10);ar=parseInt(ay[2],10);aC=ay[3]?parseInt(ay[3].substr(1),10):0;au=au.substring(0,ay.index)+au.substr(ay.index+ay[0].length);if(ay[4]){if(ay[4].toLowerCase()=="pm"&&av<12){av+=12}else{if(ay[4].toLowerCase()=="am"&&av>=12){av-=12}}}}var az=au.split(/\W+/);var ax=[];for(var at=0;at<az.length;++at){var aA=az[at];if(/^[0-9]{4}$/.test(aA)){aB=parseInt(aA,10);if(!P&&!aD&&D==null){D=true}}else{if(/^[0-9]{1,2}$/.test(aA)){aA=parseInt(aA,10);if(aA>=60){aB=aA}else{if(aA>=0&&aA<=12){ax.push(aA)}else{if(aA>=1&&aA<=31){aD=aA}}}}else{P=A(aA)}}}if(ax.length>=2){if(D){if(!P){P=ax.shift()}if(!aD){aD=ax.shift()}}else{if(!aD){aD=ax.shift()}if(!P){P=ax.shift()}}}else{if(ax.length==1){if(!aD){aD=ax.shift()}else{if(!P){P=ax.shift()}}}}if(!aB){aB=ax.length>0?ax.shift():aw.getFullYear()}if(aB<30){aB+=2000}else{if(aB<99){aB+=1900}}if(!P){P=aw.getMonth()+1}return aB&&P&&aD?new Date(aB,P-1,aD,av,ar,aC):null};function al(D,at,P,ar){ar={};for(P in at){if(at.hasOwnProperty(P)){ar[P]=at[P]}}for(P in D){if(D.hasOwnProperty(P)){ar[P]=D[P]}}return ar}function p(ar,au,at,D){if(ar instanceof Array){for(var P=ar.length;--P>=0;){p(ar[P],au,at,D)}}else{if(typeof au=="object"){for(var P in au){if(au.hasOwnProperty(P)){p(ar,P,au[P],at)}}}else{if(ar.addEventListener){ar.addEventListener(au,at,j?true:!!D)}else{if(ar.attachEvent){ar.attachEvent("on"+au,at)}else{ar["on"+au]=at}}}}}function d(ar,au,at,D){if(ar instanceof Array){for(var P=ar.length;--P>=0;){d(ar[P],au,at)}}else{if(typeof au=="object"){for(var P in au){if(au.hasOwnProperty(P)){d(ar,P,au[P],at)}}}else{if(ar.removeEventListener){ar.removeEventListener(au,at,j?true:!!D)}else{if(ar.detachEvent){ar.detachEvent("on"+au,at)}else{ar["on"+au]=null}}}}}function an(D){D=D||window.event;if(j){D.cancelBubble=true;D.returnValue=false}else{D.preventDefault();D.stopPropagation()}return false}function aj(au,at,av){if(au){var D=au.className.replace(/^\s+|\s+$/,"").split(/\x20/),P=[],ar;for(ar=D.length;ar>0;){if(D[--ar]!=at){P.push(D[ar])}}if(av){P.push(av)}au.className=P.join(" ")}return av}function M(P,D){return aj(P,D,D)}function ae(at,ar,P){if(ar instanceof Array){for(var D=ar.length;--D>=0;){ae(at,ar[D],P)}}else{aj(ar,P,at?P:null)}return at}function G(at,D,ar){var P=null;if(document.createElementNS){P=document.createElementNS("http://www.w3.org/1999/xhtml",at)}else{P=document.createElement(at)}if(D){P.className=D}if(ar){ar.appendChild(P)}return P}function b(au,av){if(av==null){av=0}var D,at,P;try{D=Array.prototype.slice.call(au,av)}catch(ar){D=new Array(au.length-av);for(at=av,P=0;at<au.length;++at,++P){D[P]=au[at]}}return D}function v(P,ar){var D=b(arguments,2);return(ar==undefined?function(){return P.apply(this,D.concat(b(arguments)))}:function(){return P.apply(ar,D.concat(b(arguments)))})}function t(P,ar){if(!ar(P)){for(var D=P.firstChild;D;D=D.nextSibling){if(D.nodeType==1){t(D,ar)}}}}function ap(D,aw,ar){D=al(D,{fps:50,len:15,onUpdate:ad,onStop:ad});if(j){D.len=Math.round(D.len/2)}function at(aA,az,ax,ay){return ay?ax+aA*(az-ax):az+aA*(ax-az)}function av(){if(aw){P()}ar=0;aw=setInterval(au,1000/D.fps)}function P(){if(aw){clearInterval(aw);aw=null}D.onStop(ar/D.len,at)}function au(){var ax=D.len;D.onUpdate(ar/ax,at);if(ar==ax){P()}++ar}av();return{start:av,stop:P,update:au,args:D,map:at}}var Z={elastic_b:function(D){return 1-Math.cos(-D*5.5*Math.PI)/Math.pow(2,7*D)},magnetic:function(D){return 1-Math.cos(D*D*D*10.5*Math.PI)/Math.exp(4*D)},accel_b:function(D){D=1-D;return 1-D*D*D*D},accel_a:function(D){return D*D*D},accel_ab:function(D){D=1-D;return 1-Math.sin(D*D*Math.PI/2)},accel_ab2:function(D){return(D/=0.5)<1?1/2*D*D:-1/2*((--D)*(D-2)-1)},brakes:function(D){D=1-D;return 1-Math.sin(D*D*Math.PI)},shake:function(D){return D<0.5?-Math.cos(D*11*Math.PI)*D*D:(D=1-D,Math.cos(D*11*Math.PI)*D*D)}};function am(D,P){if(P===""){j?D.style.filter="":D.style.opacity=""}else{if(P!=null){j?D.style.filter="alpha(opacity="+P*100+")":D.style.opacity=P}else{if(!j){P=parseFloat(D.style.opacity)}else{if(/alpha\(opacity=([0-9.])+\)/.test(D.style.opacity)){P=parseFloat(RegExp.$1)/100}}}}return P}function O(ar,D){var P=ar.style;if(D!=null){P.display=D?"":"none"}return P.display!="none"}function f(P,ar){var D=j?P.clientX+document.body.scrollLeft:P.pageX;var at=j?P.clientY+document.body.scrollTop:P.pageY;if(ar){D-=ar.x;at-=ar.y}return{x:D,y:at}}function J(au){var D=0,at=0,ar=/^div$/i.test(au.tagName),av,P;if(ar&&au.scrollLeft){D=au.scrollLeft}if(ar&&au.scrollTop){at=au.scrollTop}av={x:au.offsetLeft-D,y:au.offsetTop-at};if(au.offsetParent){P=J(au.offsetParent);av.x+=P.x;av.y+=P.y}return av}function X(){var P=document.documentElement,D=document.body;return{x:P.scrollLeft||D.scrollLeft,y:P.scrollTop||D.scrollTop,w:P.clientWidth||window.innerWidth||D.clientWidth,h:P.clientHeight||window.innerHeight||D.clientHeight}}function m(D,ar,P){for(P=0;P<D.length;++P){ar(D[P])}}var ad=new Function();function W(D){if(typeof D=="string"){D=document.getElementById(D)}return D}return y})();

Calendar.LANG("ru", "русский", {

        fdow: 1,                // first day of week for this locale; 0 = Sunday, 1 = Monday, etc.

        goToday: "Сегодня",

        today: "Сегодня",         // appears in bottom bar

        wk: "нед",

        weekend: "0,6",         // 0 = Sunday, 1 = Monday, etc.

        AM: "am",

        PM: "pm",

        mn : [ "январь",
               "февраль",
               "март",
               "апрель",
               "май",
               "июнь",
               "июль",
               "август",
               "сентябрь",
               "октябрь",
               "ноябрь",
               "декабрь" ],

        smn : [ "янв",
                "фев",
                "мар",
                "апр",
                "май",
                "июн",
                "июл",
                "авг",
                "сен",
                "окт",
                "ноя",
                "дек" ],

        dn : [ "воскресенье",
               "понедельник",
               "вторник",
               "среда",
               "четверг",
               "пятница",
               "суббота",
               "воскресенье" ],

        sdn : [ "вск",
                "пон",
                "втр",
                "срд",
                "чет",
                "пят",
                "суб",
                "вск" ]

});


if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var htmlEl = null,
        status = 'hide',
        settuped = false;

    m.citySwitcher = {
        setup : function() {
            var link = document.getElementById('city-switcher-link');

            k.a.bind(link, 'click', __onControlLinkClick);
        },

        show : function() {
            __setup();

            if (status == 'hide') {
                status = 'show';
                htmlEl.style.display = 'block';
            }
        },

        hide : function() {
            __setup();

            if (status == 'show') {
                status = 'hide';
                htmlEl.style.display = 'none';
            }
        }
    };

    function __onControlLinkClick(e)
    {
        k.a.stopPropagation(e);
        k.a.preventDefault(e);

        if (status == 'hide') {
            m.citySwitcher.show();
        } else {
            m.citySwitcher.hide();
        }
    }

    function __setup()
    {
        if (settuped) {
            return;
        }

        htmlEl = document.getElementById('city-list');

        k.a.bind(document, 'click', __onDocClick);

        k.a.bind(htmlEl, 'click', function(e) {
            k.a.stopPropagation(e);
        });

        var links = k.a.query('a', htmlEl);
        k.a.bind(links, 'click', function(e) {
            m.citySwitcher.hide();
        });
    }

    function __onDocClick(e)
    {
        if (status == 'show') {
            m.citySwitcher.hide();
        }
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var favoriteBody = null,
        searchBody = null,
        favoriteLink = null,
        searchLink = null,
        emptyBlock = null,
        favoriteList = null,
        elsSetuped = false,
        hotels = {},
        blinkCount = {},
        config = {blinkDelay : 250,
                  blinkLimit : 4,
                  addUrl     : '/favorite/add/',
                  rmUrl      : '/favorite/rm/'};

    m.favoriteControl = {
        setupHotels : function(savedHotels) {
            __setupEls();

            k.a.each(savedHotels, function(i, hotel) {
                var li = document.createElement('li');
                li.innerHTML = __getItemHtml(hotel.hotel_name, hotel.thumb.src, hotel.link, hotel.minPrice, hotel.hotel_category);
                li.className = 'item';
                favoriteList.appendChild(li);

                var rmA = k.a.query('li.close a', li)[0];
                k.a.bind(rmA, 'click', function(e) {
                    k.a.preventDefault(e);
                    m.favoriteControl.rm(hotel.hotel_id);
                });

                var img = k.a.query('li.img img', li)[0];
                __setupHotelGallery(img, hotel.hotel_id);

                hotels[hotel.hotel_id] = li;
            });

            __checkEmpty();
            __setLast();
        },

        add : function(hotelId, hotelName, photoSrc, link, minPrice, hotelCategory) {
            this.switchToFavorite();

            if (typeof(hotels[hotelId]) == 'undefined') {
                __resetLast();

                var li = document.createElement('li');
                li.innerHTML = __getItemHtml(hotelName, photoSrc, link, minPrice, hotelCategory);
                li.className = 'item last';
                favoriteList.appendChild(li);

                var ul = k.a.query('ul.hotel', li)[0];
                __blinkUl(ul, hotelId);

                var rmA = k.a.query('li.close a', li)[0];
                k.a.bind(rmA, 'click', function(e) {
                    k.a.preventDefault(e);
                    m.favoriteControl.rm(hotelId);
                });

                var img = k.a.query('li.img img', li);
                __setupHotelGallery(img, hotelId);

                hotels[hotelId] = li;

                __checkEmpty();

                k.getJSON(config.addUrl, {hotelId  : hotelId,
                                          link     : link,
                                          minPrice : minPrice});
            } else {
                var ul = k.a.query('ul.hotel', hotels[hotelId])[0];
                __blinkUl(ul, hotelId);
            }
        },

        rm : function(hotelId) {
            k.getJSON(config.rmUrl, {hotelId  : hotelId});
            favoriteList.removeChild(hotels[hotelId]);
            delete hotels[hotelId];

            __resetLast();
            __checkEmpty();
            __setLast();
        },

        switchToSearch : function() {
            if (!elsSetuped) {
                __setupEls();
            }

            favoriteBody.style.display = 'none';
            searchBody.style.display = 'block';

            __resetActiveLink();
            k.a.addClass(searchLink, 'search-active');
        },

        switchToFavorite : function() {
            if (!elsSetuped) {
                __setupEls();
            }

            favoriteBody.style.display = 'block';
            searchBody.style.display = 'none';

            __resetActiveLink();
            k.a.addClass(favoriteLink, 'favorite-active');
        }
    };

    function __setupHotelGallery(img, hotelId)
    {
        var photoPopup = new m.photoPopup('hotel', hotelId);
        photoPopup.setConfig({offsetSide : 'left'});
        photoPopup.setupHoverEvents(img);
    }

    function __setLast()
    {
        if (favoriteList.childNodes.length > 0) {
            var lastLi = favoriteList.childNodes[(favoriteList.childNodes.length - 1)];
            k.a.addClass(lastLi, 'last');
        }
    }

    function __resetLast()
    {
        var res = k.a.query('li.last', favoriteList);

        k.a.each(res, function(i, val) {
            k.a.rmClass(val, 'last');
        });
    }

    function __checkEmpty()
    {
        if (k.util.count(hotels) > 0) {
            emptyBlock.style.display = 'none';
        } else {
            emptyBlock.style.display = 'block';
        }
    }

    function __blinkUl(ul, hotelId)
    {
        if (k.a.hasClass(ul, 'blink')) {
            k.a.rmClass(ul, 'blink');
        } else {
            k.a.addClass(ul, 'blink');
        }

        if (typeof(blinkCount[hotelId]) == 'undefined') {
            blinkCount[hotelId] = 1;
        } else {
            blinkCount[hotelId]++;
        }

        if (blinkCount[hotelId] < config.blinkLimit) {
            setTimeout(function() {
                __blinkUl(ul, hotelId);
            }, config.blinkDelay);
        } else {
            delete blinkCount[hotelId];
        }
    }

    function __getItemHtml(name, photoSrc, link, minPrice, category)
    {
        var categorySrc = '';

        switch (category) {
            case 'hostel':
                categorySrc = '/templates/hotellink/imgs/star_1.gif';
                break;
            case 'econom':
                categorySrc = '/templates/hotellink/imgs/star_2.gif';
                break;
            default:
                categorySrc = '/templates/hotellink/imgs/star_' + category + '.gif';
                break;
        }

        var html = '\
                <ul class="hotel"> \
                    <li class="img"> \
                        <a href="' + link + '"> \
                            <img src="' + photoSrc + '" width="35" height="35" /> \
                        </a> \
                    </li> \
                    <li class="desc"> \
                        <a href="' + link + '">' + name + '</a> \
                        <p> \
                            <img src="' + categorySrc + '" width="50" height="10" /> \
                            <b> от ' + minPrice + ' руб</b> \
                        </p> \
                    </li> \
                    <li class="close"> \
                        <a href="#"><img src="/templates/hotellink/imgs/fav_rm.gif" width="14" height="13" /></a> \
                    </li> \
                </ul> \
                <div class="clr-left-0"></div>';

        return html
    }

    function __resetActiveLink()
    {
        k.a.rmClass(searchLink, 'search-active');
        k.a.rmClass(favoriteLink, 'favorite-active');
    }

    function __setupEls()
    {
        favoriteBody = document.getElementById('favorite-body');
        searchBody = document.getElementById('search-body');
        favoriteLink = document.getElementById('favorite-link');
        searchLink = document.getElementById('search-link');
        emptyBlock = k.a.query('p.empty', favoriteBody)[0];
        favoriteList = document.getElementById('favorite-list');
        elsSetuped = true;
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var externalLinkEl = null,
        externalBlockEl = null,
        config = {externalLinkId  : 'external-search-link',
                  externalBlockId : 'external-search-block',
                  openClass       : 'switcher-open',
                  queryText       : 'Поиск по названию, описанию, адресу',
                  priceSliderStep : 9,
                  ratingSliderStep : 36,
                  sliderSize      : 180,
                  sliderTotalStep : 19},//общее кол-во шагов - нужно исключительно для подсчета
        priceSlider = null,
        priceSliderStep = null,
        priceInterval = {min : null,
                         max : null},
        priceFromBEl = null,
        priceToBEl = null,
        priceFromValEl = null,
        priceToValEl = null,
        ratingSlider = null,
        searchCityEl = null,
        cityIdEl = null,
        cityAutocomplete = null,
        arrivalEl = null,
        departureEl = null,
        defaultCity = {id   : null,
                       name : null};

    m.searchForm = {
        setup : function() {
            externalLinkEl = document.getElementById(config.externalLinkId);
            externalBlockEl = document.getElementById(config.externalBlockId);
            k.a.bind(externalLinkEl, 'click', __onExternalLinkClick);

            var links = k.a.query('a.switcher', externalBlockEl);
            k.a.bind(links, 'click', __onSwitcherLinkClick);

            var searchQuery = document.getElementById('search-query');
            k.a.bind(searchQuery, 'focus', __onQueryFocus);
            k.a.bind(searchQuery, 'blur', __onQueryBlur);

            priceFromBEl = document.getElementById('price-from-b');
            priceToBEl = document.getElementById('price-to-b');
            priceFromValEl = document.getElementById('price-from-value');
            priceToValEl = document.getElementById('price-to-value');

            ratingBEl = document.getElementById('rating-value-b');
            ratingValEl = document.getElementById('rating-value');

            searchCityEl = document.getElementById('search-city');
            cityIdEl = document.getElementById('search-city-id');

            defaultCity = {id   : cityIdEl.value,
                           name : searchCityEl.value};

            arrivalEl = document.getElementById('search-arrival');
            departureEl = document.getElementById('search-departure');

            __setupAutocomplete();
            __setupCalendar();

            var priceLink = k.a.query('li.price a.switcher', externalBlockEl)[0];
            if (k.a.hasClass(priceLink, config.openClass)) {
                __setupPriceSlider();
                __setPriceSliderValues(priceFromValEl.value, priceToValEl.value);
            }

            var ratingLink = k.a.query('li.rating a.switcher', externalBlockEl)[0];
            if (k.a.hasClass(ratingLink, config.openClass)) {
                __setupRatingSlider();
                __setRatingSliderValue(ratingValEl.value);
            }
        },

        setMinMaxPrice : function(min, max) {
            priceInterval.min = min;
            priceInterval.max = max;

            priceSliderStep = Math.round((max-min) / config.sliderTotalStep);
        }
    }

    function __setupCalendar()
    {
        var arrivalEl = document.getElementById('search-arrival');

        var arrivalCalendar = Calendar.setup({inputField  : arrivalEl,
                                              dateFormat  : "%d/%m/%Y",
                                              trigger     : arrivalEl,
                                              animation   : false,
                                              selection   : Calendar.dateToInt(__parseDate(arrivalEl.value)),
                                              onSelect    : function() {this.hide()}});

        var departureEl = document.getElementById('search-departure');
        var departureCalendar = Calendar.setup({inputField  : departureEl,
                                                dateFormat  : "%d/%m/%Y",
                                                trigger     : departureEl,
                                                animation   : false,
                                                selection   : Calendar.dateToInt(__parseDate(departureEl.value)),
                                                onSelect    : function() {this.hide();}});
    }

    function __parseDate(val)
    {
        var arr = val.split('/');

        return arr[2] + arr[1] + arr[0];
    }

    function __setupAutocomplete()
    {
        cityAutocomplete = new k.autocomplete(searchCityEl, {requestUrl        : '/city/autocomplete/',
                                                             autoselect        : true,
                                                             onSelect          : __onCitySelect,
                                                             onAutoselNotFound : __onCityNotFound,
                                                             onBlur            : __onCityBlur,
                                                             getPosition       : __getCityPosition,
                                                             width             : 171});
    }

    function __getCityPosition(left, top)
    {
        if (k.a.isBrowserGecko()) {
            left += 1;
        }

        return {left:left, top:top};
    }

    function __onCityNotFound()
    {
        __setDefaultCity();
    }

    function __onCityBlur()
    {
        if (searchCityEl.value == '') {
            __setDefaultCity();
        }
    }

    function __setDefaultCity()
    {
        searchCityEl.value = defaultCity.name;
        cityIdEl.value = defaultCity.id;
    }

    function __onCitySelect(id, name)
    {
        if (cityIdEl.value != id) {
            cityIdEl.value = id;
            __reloadCityDepending();
        }

        searchCityEl.value = name;
    }

    function __reloadCityDepending()
    {
        var vars = {id        : cityIdEl.value,
                    arrival   : arrivalEl.value,
                    departure : departureEl.value};
        k.getJSON('/city/loaddepending/', vars, function(data) {
            __setDistrict(data.district);
            __setMetro(data.metro);
            __updatePriceMinMax(data.price);
        });
    }

    function __updatePriceMinMax(price)
    {
        m.searchForm.setMinMaxPrice(price.min, price.max);

        priceFromValEl.value = price.min;
        priceToValEl.value = price.max;

        __setPriceInB(price.min, price.max);

        if (null !== priceSlider) {
            priceSlider.setValues(0, config.sliderSize);
        }
    }

    function __setMetro(metro)
    {
        var tpl = '\
            <% k.a.each(metro, function(i, val) {%> \
                <li>\
                    <label>\
                        <input type="checkbox" name="metro[]" value="<%= val.metro_id %>" /><%= val.metro_name %> \
                    </label> \
                </li> \
            <% }); %>';

        var html = k.template.renderLocal(tpl, {metro:metro});

        document.getElementById('search-metro-ul').innerHTML = html;
    }

    function __setDistrict(district)
    {
        var tpl = '\
            <% k.a.each(district, function(i, val) {%> \
                <li>\
                    <label>\
                        <input type="checkbox" name="district[]" value="<%= val.district_id %>" /><%= val.district_name %> \
                    </label> \
                </li> \
            <% }); %>';

        var html = k.template.renderLocal(tpl, {district:district});

        document.getElementById('search-district-ul').innerHTML = html;
    }

    function __setupRatingSlider()
    {
        ratingSlider = YAHOO.widget.Slider.getHorizSlider("rating-slider", "rating-sliderthumb", 0, config.sliderSize, config.ratingSliderStep);
        ratingSlider.subscribe("change", function() {
            var val = __calcValueByRatingSliderVal(this.getValue());

            __setRatingInB(val);
            ratingValEl.value = val;
        });
    }

    function __setupPriceSlider()
    {
        priceSlider = YAHOO.widget.Slider.getHorizDualSlider("price-slider", "price-sliderthumb-min", "price-sliderthumb-max", config.sliderSize, config.priceSliderStep);
        priceSlider.subscribe("change", function() {
            var min = __calcValueByPriceSliderVal(this.minVal);
            var max = __calcValueByPriceSliderVal(this.maxVal);

            __setPriceInB(min, max);
            priceFromValEl.value = min;
            priceToValEl.value = max;
        });
    }

    function __setRatingSliderValue(val)
    {
        valPx = __calcRatingSliderValByVal(val);

        ratingSlider.setValue(valPx);
        __setRatingInB(val);
    }

    function __setPriceSliderValues(min, max)
    {
        minPx = __calcPriceSliderValByVal(min);
        maxPx = __calcPriceSliderValByVal(max);

        priceSlider.setValues(minPx, maxPx);
        __setPriceInB(min, max);
    }

    function __setRatingInB(val)
    {
        ratingBEl.innerHTML = val;
    }

    function __setPriceInB(min, max)
    {
        priceFromBEl.innerHTML = __formatPrice(min);
        priceToBEl.innerHTML = __formatPrice(max);
    }

    function __calcRatingSliderValByVal(value)
    {
        return value * config.ratingSliderStep;
    }

    /*
     * конвертирует рупии в px для слайдера
     *
     **/
    function __calcPriceSliderValByVal(value)
    {
        var step = Math.round((value - priceInterval.min)/priceSliderStep);

        if (step == config.sliderTotalStep) {
            return config.sliderSize;
        } else {
            return step*config.priceSliderStep;
        }
    }

    function __formatPrice(val)
    {
        val = String(val);

        if (val.length > 3) {
            val = val.substr(0, val.length - 3) + '.' + val.substr(val.length - 3);
        }

        return val;
    }

    function __calcValueByRatingSliderVal(val)
    {
        var step = Math.round(val / config.ratingSliderStep) * 2;

        return step;
    }

    /*
     * конвертирует px значения из слайдера в рупии
     *
     **/
    function __calcValueByPriceSliderVal(val)
    {
        var step = Math.round(val / config.priceSliderStep);

        if (step == 0) {
            return priceInterval.min;
        } else if (val == config.sliderSize) {
            return priceInterval.max;
        } else {
            return (Math.round(step * priceSliderStep) + priceInterval.min);
        }
    }

    function __onQueryFocus(e)
    {
        if (this.value == config.queryText) {
            this.value = '';
        }
    }

    function __onQueryBlur(e)
    {
        if (this.value == '') {
            this.value = config.queryText;
        }
    }

    function __onSwitcherLinkClick(e)
    {
        k.a.preventDefault(e);

        var li = this.parentNode;
        var div = k.a.query('div.content', li)[0];
        var span = null;
        if (this.nextSibling.tagName.toLowerCase() == 'span' && k.a.hasClass(this.nextSibling, 'sub-content')) {
            span = this.nextSibling;
        }

        if (k.a.hasClass(this, config.openClass)) {
            k.a.rmClass(this, config.openClass);
            div.style.display = 'none';
            if (null !== span) {
                span.style.visibility = 'hidden';
            }
        } else {
            k.a.addClass(this, config.openClass);
            div.style.display = 'block';
            if (null !== span) {
                span.style.visibility = 'visible';
            }

            if (k.a.hasClass(li, 'price') && null === priceSlider) {
                __setupPriceSlider();
                __setPriceSliderValues(priceFromValEl.value, priceToValEl.value);
            } else if (k.a.hasClass(li, 'rating') && null === ratingSlider) {
                __setupRatingSlider();
                __setRatingSliderValue(ratingValEl.value);
            }
        }
    }

    function __onExternalLinkClick(e)
    {
        k.a.preventDefault(e);

        if (k.a.hasClass(this, config.openClass)) {
            externalBlockEl.style.display = 'none';
            k.a.rmClass(this, config.openClass);
        } else {
            externalBlockEl.style.display = 'block';
            k.a.addClass(this, config.openClass);
        }
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var popupEl = null,
        popupBodyEl = null,
        showTimer = null,
        hideTimer = null,
        cache = {},
        rotateInterval = null,
        status = {essence   : null,
                  essenceId : null};

    m.photoPopup = function(essence, essenceId) {
        var that = this,
            photo = [],
            curPhoto = null,
            els = {left    : null,
                   play    : null,
                   right   : null,
                   close   : null,
                   photo   : null,
                   status  : null,
                   buttons : null},

            config = {popupElId   : 'photoPopup',
                      offsetSide  : 'right',
                      showDelay   : 400,
                      hideDelay   : 700,
                      dataUrl     : '/gallery/',
                      rotateDelay : 3000,
                      width       : 350,
                      height      : 290,

                      posCallback : null};

        this.setConfig = function(iConf)
        {
            if (typeof(iConf) == 'object') {
                config = k.a.extend(config, iConf);
            }
        }

        this.setupHoverEvents = function(imgEl)
        {
            k.a.bind(imgEl, 'mouseover', __onMouseOver);
            k.a.bind(imgEl, 'mouseout', __onMouseOut);
        }

        function __onMouseOver()
        {
            var imgContext = this;

            __stopShowTimer();
            __stopHideTimer();

            if (!__isVisible()) {
                showTimer = setTimeout(function() {
                    __show.call(imgContext);
                }, config.showDelay);
            }

        }

        function __show()
        {
            __setupPhotoPopup();

            __reset();

            var xy = k.a.offset(this);

            var centerX = (typeof(this.width) == 'undefined') ? 0 : Math.round(this.width / 2);
            var centerY = (typeof(this.width) == 'undefined') ? 0 : Math.round(this.height / 2);

            if (config.offsetSide == 'right') {
                var x = xy.top + centerX;
                var y = xy.left + centerY;
            } else if (config.offsetSide == 'left') {
                var x = xy.top + centerX;
                var y = xy.left - config.width;
            }

            if (typeof(config.posCallback) == 'function') {
                var newXY = config.posCallback.call(that, x, y);
                x = newXY.x;
                y = newXY.y;
            }

//            __stopHideTimer();

            if (!__isVisible()) {
                __cleaRotateInterval();
                __showPopupAt(x, y);
            }
        }

        /*
         * возвращает true если текущая галлерея показывается
         *
         **/
        function __isVisible()
        {
            if (status.essence == essence && status.essenceId == essenceId) {
                return true;
            } else {
                return false;
            }
        }

        function __onMouseOut()
        {
            __stopShowTimer();

            if (__isVisible()) {
                __startHideTimer();
            }
        }

        function __startHideTimer()
        {
            hideTimer = setTimeout(function() {__hide();}, config.hideDelay);
        }

        function __stopHideTimer()
        {
            if (hideTimer) {
                clearTimeout(hideTimer);
            }
        }

        function __stopShowTimer()
        {
            if (showTimer) {
                clearTimeout(showTimer);
            }
        }

        function __hide()
        {
            popupEl.style.display = 'none';

            __reset();
            __cleaRotateInterval();
        }

        function __reset()
        {
            status.essence = null;
            status.essenceId = null;

            __hideLoading();

            els = {left   : null,
                   play   : null,
                   right  : null,
                   close  : null,
                   photo  : null,
                   status : null};

            popupBodyEl.innerHTML = '';
            popupBodyEl.style.height = config.height + 'px';

            photo = [];
            curPhoto = null;
        }

        function __showPopupAt(x, y)
        {
            popupEl.style.top = x + 'px';
            popupEl.style.left = y + 'px';
            popupEl.style.display = 'block';

            status.essence = essence;
            status.essenceId = essenceId;

            __createGallery();
        }

        function __createGallery()
        {
            __getGalleryData(function(data) {
                if (data.photo.length == 0 && data.info.description == '') {
                    __hide();
                    return;
                }

                popupBodyEl.innerHTML = __getGalleryHtml(data);

                if (typeof(data.info.description) != 'undefined') {
                    popupBodyEl.style.height = 'auto';
                }

                __setupEls();
                __setupElsEvent();
                photo = data.photo;

                if (photo.length > 0) {
                    __preloadPhotos();
                    curPhoto = 0;
                    els.status.innerHTML = __getStatusText(curPhoto);
                    els.photo.innerHTML = __getPhotoImgTag(curPhoto);

                    __showImgAnimate(k.a.query('img', els.photo));

                    if (photo.length > 1) {
                        __startRotateInterval();
                    }
                } else {
                    els.photo.style.display = 'none';
                    els.buttons.style.display = 'none';
                }
            });
        }

        function __preloadPhotos()
        {
            k.a.each(photo, function(i, val) {
                k.util.preloadImages([val.thumb.src]);
            });
        }

        function __photoRight()
        {
            if (photo.length == 0) {
                return false;
            }

            curPhoto++;

            if (curPhoto == photo.length) {
                curPhoto = 0;
            }

            els.status.innerHTML = __getStatusText(curPhoto);
            els.photo.innerHTML = __getPhotoImgTag(curPhoto);

            __showImgAnimate(k.a.query('img', els.photo));
        }

        function __photoLeft()
        {
            if (photo.length == 0) {
                return false;
            }

            curPhoto--;

            if (curPhoto < 0) {
                curPhoto = photo.length - 1;
            }

            els.status.innerHTML = __getStatusText(curPhoto);
            els.photo.innerHTML = __getPhotoImgTag(curPhoto);

            __showImgAnimate(k.a.query('img', els.photo));
        }

        function __showImgAnimate(imgEl)
        {
            var animation = new YAHOO.util.Anim(imgEl, {opacity: {to:1}});

            animation.onTween.subscribe(function() {
                var a = Math.round(this.currentFrame / 10)
                imgEl.style.filter = 'alpha(opacity=' + a + ')';
            });

            animation.animate();
        }

        function __startRotate()
        {
            __startRotateInterval();
            els.play.childNodes[0].src = '/templates/hotellink/imgs/gallery_pause.gif';
        }

        function __startRotateInterval()
        {
            __cleaRotateInterval();
            rotateInterval = setInterval(function() {__nextRotate()}, config.rotateDelay);
        }

        function __stopRotate()
        {
            __cleaRotateInterval();
            els.play.childNodes[0].src = '/templates/hotellink/imgs/gallery_play.gif';
        }

        function __cleaRotateInterval()
        {
            if (null !== rotateInterval) {
                clearInterval(rotateInterval);
            }

            rotateInterval = null;
        }

        function __nextRotate()
        {
            __photoRight();
        }

        function __getStatusText(current)
        {
            current += 1;

            return current + ' из ' + photo.length;
        }

        function __getPhotoImgTag(index)
        {
            var alt = (null === photo[index].photo_alt) ? '' : photo[index].photo_alt;
            return '<img src="' + photo[index].thumb.src + '" width="' + photo[index].thumb.width + '" height="' + photo[index].thumb.height + '" alt="' + alt + '" />';
        }

        function __setupElsEvent()
        {
            k.a.bind(els.close, 'click', function(e) {
                k.a.preventDefault(e);
                __hide();
            });

            k.a.bind(els.right, 'click', function(e) {
                k.a.preventDefault(e);
                __stopRotate();
                __photoRight();
            });

            k.a.bind(els.left, 'click', function(e) {
                k.a.preventDefault(e);
                __stopRotate();
                __photoLeft();
            });

            k.a.bind(els.play, 'click', function(e) {
                k.a.preventDefault(e);

                if (null === rotateInterval) {
                    __startRotate();
                } else {
                    __stopRotate();
                }
            });
        }

        function __setupEls()
        {
            els = {left    : k.a.query('a.left', popupEl)[0],
                   play    : k.a.query('a.play', popupEl)[0],
                   right   : k.a.query('a.right', popupEl)[0],
                   close   : k.a.query('a.close', popupEl)[0],
                   photo   : k.a.query('div.photo', popupEl)[0],
                   status  : k.a.query('div.buttons span', popupEl)[0],
                   buttons : k.a.query('div.buttons', popupEl)[0]};
        }

        function __getGalleryHtml(data)
        {
            var out = '\
                <div class="head">\
                    <a href="#" class="close"><img src="/templates/hotellink/imgs/gallery_close.gif" width="16" height="16" /></a>\
                    ' + data.info.name + ' ';

            if (typeof(data.info.category) != 'undefined') {
                switch (data.info.category) {
                    case 'hostel':
                        var src = '/templates/hotellink/imgs/star_1.gif';
                        break;
                    case 'econom':
                        var src = '/templates/hotellink/imgs/star_2.gif';
                        break;
                    default:
                        var src = '/templates/hotellink/imgs/star_' + data.info.category + '.gif';
                        break;
                }

                out += '<img src="' + src + '" width="50" height="10" class="star" />';
            }

            out += '</div>';

            if (typeof(data.info.description) != 'undefined') {
                out += '<div class="typearea">' + data.info.description + '</div>';
            }

            out += '<div class="photo"></div>';

            out += '\
                <div class="buttons">\
                    <a href="#" class="left"><img src="/templates/hotellink/imgs/gallery_left.gif" width="16" height="16" /></a>\
                    <a href="#" class="play"><img src="/templates/hotellink/imgs/gallery_pause.gif" width="16" height="16" /></a>\
                    <a href="#" class="right"><img src="/templates/hotellink/imgs/gallery_right.gif" width="16" height="16" /></a>\
                    <span></span>\
                </div>';

            return out;
        }

        function __getGalleryData(callback)
        {
            if (__cacheTest()) {
                if (typeof(callback) == 'function') {
                    callback.call(that, cache[essence][essenceId]);
                }
            } else {
                __showLoading();
                k.getJSON(config.dataUrl, {essence : essence, essenceid : essenceId}, function(data) {
                    __cacheSave(data);

                    if (!__isVisible()) {
                        return;
                    }

                    __hideLoading();

                    if (typeof(callback) == 'function') {
                        callback.call(that, cache[essence][essenceId]);
                    }
                });
            }
        }

        function __cacheTest()
        {
            if (typeof(cache[essence]) == 'object' && typeof(cache[essence][essenceId]) != 'undefined') {
                return true;
            } else {
                return false;
            }
        }

        function __cacheSave(data)
        {
            if (typeof(cache[essence]) != 'object') {
                cache[essence] = {};
            }

            cache[essence][essenceId] = data;
        }

        function __showLoading()
        {
            if (!k.a.hasClass(popupBodyEl, 'loading')) {
                k.a.addClass(popupBodyEl, 'loading');
            }
        }

        function __hideLoading()
        {
            if (k.a.hasClass(popupBodyEl, 'loading')) {
                k.a.rmClass(popupBodyEl, 'loading');
            }
        }

        function __onPopupMouseOver()
        {
            __stopHideTimer();
        }

        function __onPopupMouseOut()
        {
            __startHideTimer();
        }

        function __setupPhotoPopup()
        {
            if (null === popupEl) {
                popupEl = document.getElementById('photoPopup');
                popupBodyEl = k.a.query('div.body', popupEl)[0];
                k.a.bind(popupEl, 'mouseover', __onPopupMouseOver);
                k.a.bind(popupEl, 'mouseout', __onPopupMouseOut);
            }
        }
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var markEl = null,
        hideTimer = null,
        showTimer = null,
        hideDelay = 400,
        showDelay = 400,
        valEls = {location : {img  : null,
                              mark : null},
                  comfort  : {img  : null,
                              mark : null},
                  purity   : {img  : null,
                              mark : null},
                  service  : {img  : null,
                              mark : null},
                  food     : {img  : null,
                              mark : null},
                  price    : {img  : null,
                              mark : null}};

    m.markControl = {
        show : function(el, location, comfort, purity, service, food, price, offset) {
            __setupMarkEl();
            __stopShowTimer();
            __stopHideTimer();

            showTimer = setTimeout(function() {
                __setMarks(location, comfort, purity, service, food, price);

                var xy = k.a.offset(el);
                xy.top += 20;

                if (typeof(offset) == 'object') {
                    if (typeof(offset.x) != 'undefined') {
                        xy.top += offset.x;
                    }

                    if (typeof(offset.y) != 'undefined') {
                        xy.left += offset.y;
                    }
                }

                markEl.style.top = xy.top + 'px';
                markEl.style.left = xy.left + 'px';
                markEl.style.display = 'block';
            }, showDelay);
        },

        hide : function() {
            __stopShowTimer();
            __setupMarkEl();
            __startHideTimer();
        }
    }

    function __startHideTimer()
    {
        hideTimer = setTimeout(function() {__hide()}, hideDelay);
    }

    function __stopHideTimer()
    {
        if (null !== hideTimer) {
            clearTimeout(hideTimer);
            hideTimer = null;
        }
    }

    function __stopShowTimer()
    {
        if (null !== showTimer) {
            clearTimeout(showTimer);
            showTimer = null;
        }
    }

    function __hide()
    {
        __stopHideTimer();

        markEl.style.display = 'none';
    }

    function __setMarks(location, comfort, purity, service, food, price)
    {
        var markValues = arguments;
        var names = ['location', 'comfort', 'purity', 'service', 'food', 'price'];

        k.a.each(names, function(i, val) {
            var markValue = markValues[i];

            valEls[val].img.innerHTML = '<img src="/templates/hotellink/imgs/rating_percent.gif" width="' + (markValue * 10) + '%" height="10" />';
            valEls[val].mark.innerHTML = markValue;
        });
    }

    function __setupMarkEl()
    {
        if (null === markEl) {
            markEl = document.getElementById('mark');
            __setupEls();
            __setupEvents();
        }
    }

    function __setupEvents()
    {
        k.a.bind(markEl, 'mouseover', function() {
            __stopHideTimer();
        });

        k.a.bind(markEl, 'mouseout', function() {
            __startHideTimer();
        });
    }

    function __setupEls()
    {
        var cls = ['location', 'comfort', 'purity', 'service', 'food', 'price'];

        k.a.each(cls, function(i, name) {
            var tr = k.a.query('tr.' + name, markEl)[0];
            valEls[name].img = k.a.query('td.percent div', tr)[0];
            valEls[name].mark = k.a.query('td.mark', tr)[0];
        });
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    m.tagControl = {
        toggle : function(link, category) {
            var dl = document.getElementById('tag-category-' + category);

            if (k.a.hasClass(link, 'open')) {
                k.a.rmClass(link, 'open');
                dl.style.display = 'none';
            } else {
                k.a.addClass(link, 'open');
                dl.style.display = 'block';
            }
        }
    }
}) ();

if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    m.siteSearch = {
        setup : function() {
            var inp = document.getElementById('site-search-inp');

            k.a.bind(inp, 'focus', function(e) {
                if (this.value == 'Поиск') {
                    this.value = '';
                }
            });

            k.a.bind(inp, 'blur', function(e) {
                if (this.value == '') {
                    this.value = 'Поиск';
                }
            });
        }
    }
}) ();


if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var hotelPopup = null,
        hotelForm = null,
        hotelId = null,
        cloneHotelRoom = null,
        hotelEls = {formEl         : null,
                    pEl            : null,
                    whiteEl        : null,
                    roomsUl        : null,
                    captchaBlockEl : null,
                    captchaImgEl   : null,
                    submitEl       : null,
                    closeEl        : null},
        active = null,
        config = {popupWidth   : 398,
                  hotelInfoUrl : '/hotel/bookinginfo/'},
        defaults = {name       : 'Как к Вам обратиться?*',
                    phone      : 'Телефон с кодом города*',
                    email      : 'E-mail*',
                    call_email : 'E-mail',
                    boss_email : 'Ваш email*',
                    text       : 'Комментарий',
                    message    : 'Сообщение*'},
        callPopup = null,
        callForm,
        callEls = {formEl         : null,
                   captchaBlockEl : null,
                   captchaImgEl   : null,
                   submitEl       : null,
                   closeEl        : null},
        simplePopup = null,
        simpleForm,
        simpleEls = {formEl         : null,
                     captchaBlockEl : null,
                     captchaImgEl   : null,
                     submitEl       : null,
                     closeEl        : null},
        bossPopup = null,
        bossForm,
        bossEls = {formEl         : null,
                   captchaBlockEl : null,
                   captchaImgEl   : null,
                   submitEl       : null,
                   closeEl        : null},
        docEventsSettuped = false;

    m.requests = {
        simpleRequest : function(arrival, departure) {
            __setupDocEvents();

            if (null !== active) {
                __hideActivePopup();
            }

            active = 'simple';

            __setupSimple();
            __refreshSimpleCaptcha();

            simpleForm.resetErrors();
            simpleForm.resetCommonMessages();

            var height = k.a.height(simplePopup);

            var x = k.util.getWinCenterX(config.popupWidth);
            var y = k.util.getWinCenterY(height);

            simplePopup.style.left = x + 'px';
            simplePopup.style.top = y + 'px';
            simplePopup.style.visibility = 'visible';

            var defVals = k.a.extend(defaults, {arrival   : arrival,
                                                departure : departure,
                                                captcha   : '',
                                                email     : defaults.call_email});
            simpleForm.setValues(defVals);
        },

        callRequest : function(now) {
            __setupDocEvents();

            if (null !== active) {
                __hideActivePopup();
            }

            active = 'call';

            __setupCall();
            __refreshCallCaptcha();

            callForm.resetErrors();
            callForm.resetCommonMessages();

            var height = k.a.height(callPopup);

            var x = k.util.getWinCenterX(config.popupWidth);
            var y = k.util.getWinCenterY(height);

            callPopup.style.left = x + 'px';
            callPopup.style.top = y + 'px';
            callPopup.style.visibility = 'visible';

            var defVals = k.a.extend(defaults, {date:now, captcha:'', email:defaults.call_email});
            callForm.setValues(defVals);
        },

        hotelBooking : function(iHotelId, arrival, departure) {
            __setupDocEvents();

            if (null !== active) {
                __hideActivePopup();
            }

            active = 'hotel';

            hotelId = iHotelId;

            __setupHotel();
            __refreshHotelCaptcha();

            hotelForm.resetErrors();
            hotelForm.resetCommonMessages();

            var height = k.a.height(hotelPopup);

            var x = k.util.getWinCenterX(config.popupWidth);
            var y = k.util.getWinCenterY(height);

            hotelPopup.style.left = x + 'px';
            hotelPopup.style.top = y + 'px';
            hotelPopup.style.visibility = 'visible';

            hotelEls.formEl.style.visibility = 'hidden';
            k.a.addClass(hotelEls.whiteEl, 'loading');

            var defVals = k.a.extend(defaults, {arrival:arrival, departure:departure, captcha:''});
            hotelForm.setValues(defVals);

            k.a.getJSON(config.hotelInfoUrl, {id:hotelId}, function(data) {
                var b = k.a.query('b', hotelEls.pEl)[0];
                b.innerHTML = data.hotel.hotel_name;

                __setRooms(data.rooms);

                hotelForm.reInitElements();


                k.a.rmClass(hotelEls.whiteEl, 'loading');
                hotelEls.formEl.style.visibility = 'visible';
            });
        },

        bossMail : function() {
            __setupDocEvents();

            if (null !== active) {
                __hideActivePopup();
            }

            active = 'boss';

            __setupBossMail();
            __refreshBossCaptcha();

            bossForm.resetErrors();
            bossForm.resetCommonMessages();

            var height = k.a.height(bossPopup);

            var x = k.util.getWinCenterX(config.popupWidth);
            var y = k.util.getWinCenterY(height);

            bossPopup.style.left = x + 'px';
            bossPopup.style.top = y + 'px';
            bossPopup.style.visibility = 'visible';

            var defVals = k.a.extend(defaults, {email:defaults.boss_email});
            bossForm.setValues(defVals);
        }
    }

    function __setupDocEvents()
    {
        if (docEventsSettuped) {
            return;
        }

        docEventsSettuped = true;
        k.a.bind(document, 'dblclick', __onDocDblClick);
    }

    function __onDocDblClick()
    {
        if (null !== active) {
            __hideActivePopup();
        }
    }

    function __closeSimplePopup()
    {
        simplePopup.style.visibility = 'hidden';
        active = null;
    }

    function __closeCallPopup()
    {
        callPopup.style.visibility = 'hidden';
        active = null;
    }

    function __closeBossPopup()
    {
        bossPopup.style.visibility = 'hidden';
        active = null;
    }

    function __closeHotelPopup()
    {
        hotelPopup.style.visibility = 'hidden';
        hotelEls.formEl.style.visibility = 'hidden';
        active = null;
    }

    function __hideActivePopup()
    {
        switch (active) {
            case 'hotel':
                __closeHotelPopup();
                break;
            case 'call':
                __closeCallPopup();
                break;
            case 'simple':
                __closeSimplePopup();
                break;
        }
    }

    function __setRooms(rooms)
    {
        hotelEls.roomsUl.innerHTML = '<li><select name="room[]" class="room"></select><label>кол-во</label><select name="quant[]" class="quant"></select>';

        var roomSelect = k.a.query('select.room', hotelEls.roomsUl)[0];

        k.a.each(rooms, function(i, room) {
            var opt = document.createElement('option');
            opt.value = room.room_id;
            opt.appendChild(document.createTextNode(room.room_category));
            roomSelect.appendChild(opt);
        });

        var quantSelect = k.a.query('select.quant', hotelEls.roomsUl)[0];
        var j = 12;
        for (var i = 1; i <= j; i++) {
            var opt = document.createElement('option');
            opt.value = i;
            opt.appendChild(document.createTextNode(i));
            quantSelect.appendChild(opt);
        }

        var workNode = k.a.query('li', hotelEls.roomsUl)[0];
        workNode = workNode.cloneNode(true);

        cloneHotelRoom = new k.cloneLi(hotelEls.roomsUl, workNode, {afterRm      : function() {
                                                                        hotelForm.reInitElements();
                                                                    },
                                                                    createRmLink : function(cls) {
                                                                        var a = document.createElement('a');
                                                                        a.className = cls;
                                                                        a.href = '';
                                                                        a.innerHTML = '<img src="/templates/hotellink/imgs/rm_room.gif" width="14" height="13" />';

                                                                        return a;
                                                                    }});
    }

    function __refreshSimpleCaptcha()
    {
        simpleEls.captchaImgEl.src = '/kcaptcha.php?rnd=' + Math.random(0, 1000);
    }

    function __refreshHotelCaptcha()
    {
        hotelEls.captchaImgEl.src = '/kcaptcha.php?rnd=' + Math.random(0, 1000);
    }

    function __refreshCallCaptcha()
    {
        callEls.captchaImgEl.src = '/kcaptcha.php?rnd=' + Math.random(0, 1000);
    }

    function __refreshBossCaptcha()
    {
        bossEls.captchaImgEl.src = '/kcaptcha.php?rnd=' + Math.random(0, 1000);
    }

    function __setupSimple()
    {
        if (null !== simplePopup) {
            return;
        }

        simplePopup = document.getElementById('send-request');
        simpleEls.formEl = simplePopup.getElementsByTagName('form')[0];
        simpleEls.captchaBlockEl = k.a.query('div.captcha', simplePopup)[0];
        simpleEls.captchaImgEl = k.a.query('img', simpleEls.captchaBlockEl)[0];
        simpleEls.submitEl = k.a.query('input.submit', simpleEls.captchaBlockEl)[0];
        simpleEls.closeEl = k.a.query('a.close', simplePopup)[0];

        k.a.bind(simpleEls.closeEl, 'click', function(e) {
            k.a.preventDefault(e);
            __closeSimplePopup();
        })

        var rules = {name           : {isRequired : {},
                                       callback   : __getNotDefaultCheck('name')},
                     arrival        : {isRequired : {}},
                     departure      : {isRequired : {}},
                     rooms          : {isRequired : {}},
                     phone          : {isRequired : {},
                                       callback   : __getNotDefaultCheck('phone')},
                     email          : {},
                     text           : {},
                     captcha        : {isRequired : {}}};

        simpleForm = new k.form(simpleEls.formEl, rules, {onSubmit : __onSimpleFormSubmit});
        simpleForm.setupLabels();

        __defaultFocusBlur(k.a.query('input.name', simplePopup)[0], defaults.name);
        __defaultFocusBlur(k.a.query('input.phone-inp', simplePopup)[0], defaults.phone);
        __defaultFocusBlur(k.a.query('input.email-inp', simplePopup)[0], defaults.call_email);
        __defaultFocusBlur(k.a.query('textarea', simplePopup)[0], defaults.text);

        __setupCalendar(k.a.query('input.arrival-inp', simplePopup)[0]);
        __setupCalendar(k.a.query('input.departure-inp', simplePopup)[0]);

        k.a.bind(simplePopup, 'dblclick', function(e) {
        	k.a.stopPropagation(e);
        })
    }

    function __setupBossMail()
    {
        if (null !== bossPopup) {
            return;
        }

        bossPopup = document.getElementById('boss-mail');
        bossEls.formEl = bossPopup.getElementsByTagName('form')[0];
        bossEls.captchaBlockEl = k.a.query('div.captcha', bossPopup)[0];
        bossEls.captchaImgEl = k.a.query('img', bossEls.captchaBlockEl)[0];
        bossEls.submitEl = k.a.query('input.submit', bossEls.captchaBlockEl)[0];
        bossEls.closeEl = k.a.query('a.close', bossPopup)[0];

        k.a.bind(bossEls.closeEl, 'click', function(e) {
            k.a.preventDefault(e);
            __closeBossPopup();
        });

        var rules = {name           : {isRequired : {},
                                       callback   : __getNotDefaultCheck('name')},
                     email          : {isRequired : {},
                                       callback   : __getValidateEmail('boss_email')},
                     message        : {isRequired : {},
                                       callback   : __getNotDefaultCheck('message')},
                     captcha        : {isRequired : {}}};

        bossForm = new k.form(bossEls.formEl, rules, {onSubmit : __onBossFormSubmit});
        bossForm.setupLabels();

        __defaultFocusBlur(k.a.query('input[name=name]', bossPopup)[0], defaults.name);
        __defaultFocusBlur(k.a.query('input[name=email]', bossPopup)[0], defaults.boss_email);
        __defaultFocusBlur(k.a.query('textarea', bossPopup)[0], defaults.message);

        k.a.bind(bossPopup, 'dblclick', function(e) {
        	k.a.stopPropagation(e);
        });
    }

    function __setupCall()
    {
        if (null !== callPopup) {
            return;
        }

        callPopup = document.getElementById('call-request');
        callEls.formEl = callPopup.getElementsByTagName('form')[0];
        callEls.captchaBlockEl = k.a.query('div.captcha', callPopup)[0];
        callEls.captchaImgEl = k.a.query('img', callEls.captchaBlockEl)[0];
        callEls.submitEl = k.a.query('input.submit', callEls.captchaBlockEl)[0];
        callEls.closeEl = k.a.query('a.close', callPopup)[0];

        k.a.bind(callEls.closeEl, 'click', function(e) {
            k.a.preventDefault(e);
            __closeCallPopup();
        });

        var rules = {name           : {isRequired : {},
                                       callback   : __getNotDefaultCheck('name')},
                     date           : {isRequired : {}},
                     time           : {isRequired : {}},
                     phone          : {isRequired : {},
                                       callback   : __getNotDefaultCheck('phone')},
                     email          : {},
                     text           : {},
                     captcha        : {isRequired : {}}};

        callForm = new k.form(callEls.formEl, rules, {onSubmit : __onCallFormSubmit});
        callForm.setupLabels();

        __defaultFocusBlur(k.a.query('input.name', callPopup)[0], defaults.name);
        __defaultFocusBlur(k.a.query('input.phone-inp', callPopup)[0], defaults.phone);
        __defaultFocusBlur(k.a.query('input.email-inp', callPopup)[0], defaults.call_email);
        __defaultFocusBlur(k.a.query('textarea', callPopup)[0], defaults.text);

        __setupCalendar(k.a.query('input.date', callPopup)[0]);

        k.a.bind(callPopup, 'dblclick', function(e) {
        	k.a.stopPropagation(e);
        })
    }

    function __setupHotel()
    {
        if (null !== hotelPopup) {
            return;
        }

        hotelPopup = document.getElementById('hotel-booking');
        hotelEls.formEl = hotelPopup.getElementsByTagName('form')[0];
        hotelEls.pEl = hotelPopup.getElementsByTagName('p')[0];
        hotelEls.whiteEl = k.a.query('div.white', hotelPopup)[0];
        hotelEls.roomsUl = k.a.query('ul.rooms', hotelPopup)[0];
        hotelEls.captchaBlockEl = k.a.query('div.captcha', hotelPopup)[0];
        hotelEls.captchaImgEl = k.a.query('img', hotelEls.captchaBlockEl)[0];
        hotelEls.submitEl = k.a.query('input.submit', hotelEls.captchaBlockEl)[0];
        hotelEls.closeEl = k.a.query('a.close', hotelPopup)[0];

        k.a.bind(hotelEls.closeEl, 'click', function(e) {
            k.a.preventDefault(e);
            __closeHotelPopup();
        });

        k.a.bind(document.getElementById('add-room-type'), 'click', function(e) {
            k.a.preventDefault(e);
            cloneHotelRoom.add();
            hotelForm.reInitElements();
        });

        var rules = {name           : {isRequired : {},
                                       callback   : __getNotDefaultCheck('name')},
                     arrival        : {isRequired : {}},
                     departure      : {isRequired : {}},
                     room           : {isRequired : {}},
                     quant          : {isRequired : {}},
                     phone          : {isRequired : {},
                                       callback   : __getNotDefaultCheck('phone')},
                     email          : {isRequired : {},
                                       callback   : __getValidateEmail('email')},
                     text           : {},
                     early_check    : {},
                     late_departure : {},
                     captcha        : {isRequired : {}}};

        hotelForm = new k.form(hotelEls.formEl, rules, {onSubmit : __onHotelFormSubmit});
        hotelForm.setupLabels();

        __defaultFocusBlur(k.a.query('input.name', hotelPopup)[0], defaults.name);
        __defaultFocusBlur(k.a.query('input.phone-inp', hotelPopup)[0], defaults.phone);
        __defaultFocusBlur(k.a.query('input.email-inp', hotelPopup)[0], defaults.email);
        __defaultFocusBlur(k.a.query('textarea', hotelPopup)[0], defaults.text);

        __setupCalendar(k.a.query('input.arrival-inp', hotelPopup)[0]);
        __setupCalendar(k.a.query('input.departure-inp', hotelPopup)[0]);

        k.a.bind(hotelPopup, 'dblclick', function(e) {
        	k.a.stopPropagation(e);
        })
    }

    function __setupCalendar(el)
    {
        var calendar = Calendar.setup({inputField  : el,
                                       dateFormat  : "%d/%m/%Y",
                                       trigger     : el,
                                       animation   : false,
                                       selection   : Calendar.dateToInt(__parseDate(el.value)),
                                       onSelect    : function() {this.hide()}});
    }

    function __parseDate(val)
    {
        var arr = val.split('/');

        return arr[2] + arr[1] + arr[0];
    }

    function __defaultFocusBlur(el, defaultVal)
    {
        k.a.bind(el, 'focus', function() {
            if (this.value == defaultVal) {
                this.value = '';
            }
        });

        k.a.bind(el, 'blur', function() {
            if (this.value == '') {
                this.value = defaultVal;
            }
        });
    }

    function __getValidateEmail(name)
    {
        return function(val) {
            if (val == defaults[name]) {
                return {isRequired : 'Заполните поле'};
            } else {
                var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

                if (pattern.test(val)) {
                    return true;
                } else {
                    return {invalidEmail : k.lang['validate.invalidEmail']};
                }
            }
        }
    }

    function __getNotDefaultCheck(name)
    {
        return function(val) {
            if (val == defaults[name]) {
                return {isRequired : 'Заполните поле'};
            } else {
                return true;
            }
        }
    }

    function __onBossFormSubmit()
    {
        bossForm.resetErrors();
        bossForm.resetCommonMessages();

        if (bossForm.validate()) {
            var data = bossForm.serialize();

            k.a.addClass(bossEls.captchaBlockEl, 'loading');
            bossEls.submitEl.style.display = 'none';

            k.post('/request/boss/', data, __bossResult, 'json');
        } else {
            bossForm.setErrors(bossForm.getErrors());
        }
    }

    function __onCallFormSubmit()
    {
        callForm.resetErrors();
        callForm.resetCommonMessages();

        if (callForm.validate()) {
            var data = callForm.serialize();

            k.a.addClass(callEls.captchaBlockEl, 'loading');
            callEls.submitEl.style.display = 'none';

            k.post('/request/call/', data, __callResult, 'json');
        } else {
            callForm.setErrors(callForm.getErrors());
        }
    }

    function __onHotelFormSubmit()
    {
        hotelForm.resetErrors();
        hotelForm.resetCommonMessages();

        if (hotelForm.validate()) {
            var data = hotelForm.serialize();
            data.hotel_id = hotelId;

            k.a.addClass(hotelEls.captchaBlockEl, 'loading');
            hotelEls.submitEl.style.display = 'none';

            k.post('/request/bookinghotel/', data, __hotelBookingResult, 'json');
        } else {
            hotelForm.setErrors(hotelForm.getErrors());
        }
    }

    function __onSimpleFormSubmit()
    {
        simpleForm.resetErrors();
        simpleForm.resetCommonMessages();

        if (simpleForm.validate()) {
            var data = simpleForm.serialize();

            k.a.addClass(simpleEls.captchaBlockEl, 'loading');
            simpleEls.submitEl.style.display = 'none';

            k.post('/request/simple/', data, __simpleResult, 'json');
        } else {
            simpleForm.setErrors(simpleForm.getErrors());
        }
    }

    function __simpleResult(data)
    {
        __refreshSimpleCaptcha();

        k.a.rmClass(simpleEls.captchaBlockEl, 'loading');
        simpleEls.submitEl.style.display = 'block';

        if (data.result) {
            simpleForm.setCommonMessages(['Ваша заявка успешно отправлена.'], 'message');
        } else {
            if (typeof(data.formErrors) == 'object') {
                simpleForm.setErrors(data.formErrors);
            }

            if (typeof(data.commonErrors) == 'object') {
                simpleForm.setCommonMessages(data.commonErrors);
            }
        }
    }

    function __bossResult(data)
    {
        __refreshBossCaptcha();

        k.a.rmClass(bossEls.captchaBlockEl, 'loading');
        bossEls.submitEl.style.display = 'block';

        if (data.result) {
            bossForm.setCommonMessages(['Письмо директору успешно отправлено.'], 'message');
        } else {
            if (typeof(data.formErrors) == 'object') {
                bossForm.setErrors(data.formErrors);
            }

            if (typeof(data.commonErrors) == 'object') {
                bossForm.setCommonMessages(data.commonErrors);
            }
        }
    }

    function __callResult(data)
    {
        __refreshCallCaptcha();

        k.a.rmClass(callEls.captchaBlockEl, 'loading');
        callEls.submitEl.style.display = 'block';

        if (data.result) {
            callForm.setCommonMessages(['Ваша заявка успешно отправлена.'], 'message');
        } else {
            if (typeof(data.formErrors) == 'object') {
                callForm.setErrors(data.formErrors);
            }

            if (typeof(data.commonErrors) == 'object') {
                callForm.setCommonMessages(data.commonErrors);
            }
        }
    }

    function __hotelBookingResult(data)
    {
        __refreshHotelCaptcha();

        k.a.rmClass(hotelEls.captchaBlockEl, 'loading');
        hotelEls.submitEl.style.display = 'block';

        if (data.result) {
            hotelForm.setCommonMessages(['Ваша заявка успешно отправлена.'], 'message');
        } else {
            if (typeof(data.formErrors) == 'object') {
                hotelForm.setErrors(data.formErrors);
            }

            if (typeof(data.commonErrors) == 'object') {
                hotelForm.setCommonMessages(data.commonErrors);
            }
        }
    }
}) ();


if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    m.managers = {
        toggleRight : function(link) {
            var ul = document.getElementById('right-managers');
            var openClass = 'switch-open';

            if (k.a.hasClass(link, openClass)) {
                k.a.rmClass(link, openClass);
                ul.style.display = 'none';
            } else {
                k.a.addClass(link, openClass);
                ul.style.display = 'block';
            }
        }
    }
}) ();


if (typeof(m) == "undefined" || !m) {
    var m = {};
}

(function() {
    var headerMenu = null,
        current = '';

    m.topMenu = {
        onHover : function(cls) {
            __setup();

            headerMenu.className = cls;
        },

        onHoverOut : function() {
            __setup();

            headerMenu.className = current;
        },

        setCurrent : function(cur) {
            __setup();

            current = cur;
            headerMenu.className = current;
        }
    }

    function __setup()
    {
        if (null === headerMenu) {
            headerMenu = document.getElementById('header-menu');
        }
    }
}) ();


k.a.onDomReady(function() {
    m.citySwitcher.setup();
    m.searchForm.setup();
    m.siteSearch.setup();

    k.util.preloadImages(['/templates/hotellink/imgs/search_block_open.gif',
                          '/templates/hotellink/imgs/price_slider_bg_4.gif',
                          '/templates/hotellink/imgs/rating_slider_bg.gif',
                          '/templates/hotellink/imgs/mini_hotels_class_bg.gif',
                          '/templates/hotellink/imgs/hotels_class_bg.gif',
                          '/templates/hotellink/imgs/favorites_bg_active.gif',
                          '/templates/hotellink/imgs/search_hotel_bg.gif',
                          '/templates/hotellink/imgs/star_category_open.gif',
                          '/templates/hotellink/imgs/small_loading.gif']);
});