/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();


/* jquery.mrcookie Start */

/**
 * Mail.Ru cookie parser plugin
 * Copyright (c) 2009 Mail.Ru
 */
(function($) {
	var cookie = function(name, value, options) {
		if (typeof value != 'undefined') {
	        options = options || {};
	        if (value === null) {
	            value = '';
	            options.expires = -1;
	        }
	        var expires = '';
	        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
	            var date;
	            if (typeof options.expires == 'number') {
	                date = new Date();
	                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
	            } else {
	                date = options.expires;
	            }
	            expires = '; expires=' + date.toUTCString();
	        }
	        var path = options.path ? '; path=' + (options.path) : '';
	        var domain = options.domain ? '; domain=' + (options.domain) : '';
	        var secure = options.secure ? '; secure' : '';
	        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	    } else {
	        var cookieValue = null;
	        if (document.cookie && document.cookie != '') {
	            var cookies = document.cookie.split(';');
	            for (var i = 0; i < cookies.length; i++) {
	                var cookie = jQuery.trim(cookies[i]);
	                if (cookie.substring(0, name.length + 1) == (name + '=')) {
	                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
	                    break;
	                }
	            }
	        }
	        return cookieValue;
	    }
	}

	var PRIMARY_LIST = ['s'];

	$.mrcookie = function(name, field, value) {
		var o = {},
			s = '',
			d = window.location.hostname,
			i
		;
		if ( name && field ) {
			s = cookie(name) || '';
			// Read
			s.replace( /(\w+)\=(.*?)(\||$)/g, function($0, $1, $2) {
				o[$1] = $2;
			});
			// Write
			if ( value != undefined ) {
				if ( d && (d = d.match(/(?:[^\.]+\.)?([^\.]+\.\w+)$/)) ) {
					d = d[ $.inArray(name, PRIMARY_LIST) ? 0 : 1 ];
					o[field] = value;
					s = [];
					for (i in o)
						if ( o.hasOwnProperty(i) )
							s.push(i + '=' + o[i]);
					cookie(
						name,
						s.join('|'),
						{ domain : d, expires : 365 }
					);
				}
			}
			// Return
			return o[field];
		}
		return undefined;
	}
})(jQuery);

/* jquery.mrcookie End */

/* jquery.splash-bm Start */

(function($) {
	$.bookmark = function(opt) {
		// Settings
		this.index = 0;
		this.indexes = {};
		this.slot = 0;
		this.slots = [];
		this.counters = [];
		this.hasScroll = false;
		this.dir = 'none';
		this.delay = 300;
		// Prefixes && ids & classes
		this.slotPrefix = '#slot_';
		this.bmPrefix = '#bm_';
		this.wrapperId = '#wrapperId';
		this.scrollIds = ['#bmUp', '#bmDown'];
		this.scrollClasses = {
			up :   ['up', 'upOff'],
			down : ['down', 'downOff']
		};
		// Callbacks
		this.beforeChange = function() {};
		this.afterChange = function() {};
		// Init
		for (var i in opt)
			if ( opt.hasOwnProperty(i) )
				this[i] = opt[i];
		this.init();
	}
	$.bookmark.prototype = {
		delta : 16,
		init : function(opt) {
			var _t = this;
			this.slot = this.slots[0];
			if ( this.hasScroll ) {
				$(this.scrollIds[0]).click(function(e) {
					_t.up();
					e.preventDefault();
				});
				$(this.scrollIds[1]).click(function(e) {
					_t.down();
					e.preventDefault();
				});
				this.scroll();
			}
			var ua = navigator.userAgent.toLowerCase();
			this.delta = ( ua.indexOf("opera") == -1 && ua.match(/msie (\d\.\d)/g) && parseFloat(RegExp.$1) < 8 ) ? this.delta - 1 : this.delta;
			var id, i;
			for (i = 0; i < this.slots.length; i++) {
				id = this.slots[i];
				this.indexes[id] = i;
				(function(id) {
					$(_t.bmPrefix + id).click(function(e) {
						if ( id == _t.slot || !$(_t.slotPrefix + id).length ) return true; // Second click
						_t.change(id);
						e.preventDefault();
					});
				})(id);
			}
		},
		bookmarks : function() {
			var id = this.slot;
			var index = this.indexes[this.slot];
			if ( !$(this.bmPrefix + id).length ) {
				while( index > 0 ) {
					index--;
					id = this.slots[index];
					if ( $(this.bmPrefix + id).length ) break;
				}
			}
			id = this.bmPrefix + id;
			$(id)
				.parents('tr:first')
				.find('td')
				.each(function() {
					if ( $(this).hasClass('act') || $(this).hasClass('aftact') || $(this).hasClass('pas') ) {
						$(this).attr(
							'class',
							$(this).find(id).length ? 'act' : ($(this).prev('td').attr('class') == 'act' ? 'aftact' : 'pas')
						);
					}
				})
			;
		},
		scroll : function() {
			if ( !this.hasScroll ) return;
			$(this.scrollIds[0]).attr(
				'class',
				this.scrollClasses.up[this.slot == this.slots[0] ? 1 : 0]
			);
			$(this.scrollIds[1]).attr(
				'class',
				this.scrollClasses.down[this.slot == this.slots[this.slots.length - 1] ? 1 : 0]
			);
		},
		change : function(id) {
			this.beforeChange();
			//
			index = this.indexes[id];
			if ( index != undefined ) {
				this.slot = id;
				this.index = index;
				this.scroll();
				this.bookmarks();
				for (i = 0; i < this.slots.length; i++)
					$(this.slotPrefix + this.slots[i]).css('display', 'none');
				$(this.slotPrefix + id).css('display', '');
				if ( this.counters[index] )
					document.createElement("IMG").src = this.counters[index] + "?rnd=" + Math.random()*1E9;
			}
			//
			this.afterChange();
	    },
		up : function() {
			if ( this.slot == this.slots[0] ) return false;
			this.dir = 'up';
			$(this.wrapperId)
				.css({
					'overflow' : 'hidden',
					'height' : ($(this.slotPrefix + this.slot).height() + this.delta) + 'px'
				});
			var _t = this;
			var id = this.slots[this.index - 1];
			var prev = this.slotPrefix + id;
			var cur  = this.slotPrefix + this.slot;
			$(prev).css({
				'display' : '',
				'marginTop' : (-1 * $(prev).height()) + 'px'
			});
			$(prev)
				.animate(
					{ 'marginTop' : 0 },
					this.delay,
					"swing",
					function() {
						_t.change(id);
						$(cur).css({
							'display' : 'none'
						});
						$(_t.wrapperId)
							.css({
								'overflow' : 'visible',
								'height' : 'auto'
							});
					}
				);
		},
		down : function() {
			if( this.slot == this.slots[this.slots.length - 1] ) return false;
			$(this.wrapperId)
				.css({
					'overflow' : 'hidden',
					'height' : ($(this.slotPrefix + this.slot).height() + this.delta) + 'px'
				});
			var _t = this;
			var id = this.slots[this.index + 1];
			var next = this.slotPrefix + id;
			var cur  = this.slotPrefix + this.slot;
			$(next).css('display', '');
			$(cur)
				.animate(
					{'marginTop' : (-1 * ($(cur).height() + _t.delta)) + 'px'},
					this.delay,
					"swing",
					function() {
						_t.change(id);
						$(cur).css({
							'marginTop' : 0,
							'display' : 'none'
						});
						$(_t.wrapperId)
							.css({
								'overflow' : 'visible',
								'height' : 'auto'
							});
					}
				);
		}
	}
})(jQuery);

/* jquery.splash-bm End */

/* mail_splash Start */

/* ______________ дата в блоке погоды на главной морде  ______________*/
function detectDate() {// 14 декабря, пятница
	var cur = new Date();
	var monthes = ["января","февраля","марта","апреля","мая","июня","июля","августа","сентября","октября","ноября","декабря"];
	var weekdays = ["", "понедельник","вторник","среда","четверг","пятница","суббота","воскресенье"];
	var out = cur.getDate() + " ";
	out += monthes[cur.getMonth()];
	// + ", ";
	//out += weekdays[cur.getDay()];
	return out;
}

/* __ old code __ */
var torg_pos=1;
function torg_cell(inc) {
	torg_pos+=inc;
	if(torg_pos<1) torg_pos++;
	if(!document.getElementById('trgcl_t'+(torg_pos+2))) torg_pos--;
	var tlc_on=document.getElementById('trg_left_ctrl_on');
	var tlc_off=document.getElementById('trg_left_ctrl_off');
	var trc_on=document.getElementById('trg_right_ctrl_on');
	var trc_off=document.getElementById('trg_right_ctrl_off');

	if(!document.getElementById('trgcl_t'+(torg_pos-1))) {tlc_on.className="off"; tlc_off.className="";}
	else {tlc_on.className=""; tlc_off.className="off";}
	if(!document.getElementById('trgcl_t'+(torg_pos+3))) {trc_on.className="off"; trc_off.className="";}
	else {trc_on.className=""; trc_off.className="off";}
	for(var i=1;;i++)
	{
		var o_t=document.getElementById('trgcl_t'+i);
		var o_m=document.getElementById('trgcl_m'+i);
		var o_b=document.getElementById('trgcl_b'+i);
		if(!o_t) break;
		if(i>=torg_pos && i<=torg_pos+2) {o_t.className="c"; o_m.className="c"; o_b.className="c";}
		else {o_t.className="c off"; o_m.className="c off"; o_b.className="c off";}
	}
	return false;
}



var geneva_pos=1;
function geneva_cell(inc) {
	geneva_pos+=inc;
	if(geneva_pos<1) geneva_pos++;
	var tlc_on=document.getElementById('geneva_left_ctrl_on');
	var tlc_off=document.getElementById('geneva_left_ctrl_off');
	var trc_on=document.getElementById('geneva_right_ctrl_on');
	var trc_off=document.getElementById('geneva_right_ctrl_off');

	if(!document.getElementById('geneva_cl_m'+(geneva_pos-1))) {tlc_on.className="off"; tlc_off.className="";}
	else {tlc_on.className=""; tlc_off.className="off";}

	if(!document.getElementById('geneva_cl_m'+(geneva_pos+3))) {trc_on.className="off"; trc_off.className="";}
	else {trc_on.className=""; trc_off.className="off";}

	for(var i=1;;i++) {
		var o_m=document.getElementById('geneva_cl_m'+i);
		var o_b=document.getElementById('geneva_cl_b'+i);
		if(!o_m) break;
		if(i>=geneva_pos && i<=geneva_pos+2) {
			o_m.className="c";
			o_b.className="c";
		} else {
			o_m.className="c off";
			o_b.className="c off";
		}
	}
	return false;
}

var geneva_pos = 1;
function geneva_cell_2(inc) {
	geneva_pos += inc;
	if (geneva_pos < 1) geneva_pos++;
	var tlc_on = document.getElementById('geneva_left_ctrl_on');
	var tlc_off = document.getElementById('geneva_left_ctrl_off');
	var trc_on = document.getElementById('geneva_right_ctrl_on');
	var trc_off = document.getElementById('geneva_right_ctrl_off');

	if (!document.getElementById('geneva_cl_m'+(geneva_pos-1))) {
		tlc_on.className = "off";
		tlc_off.className = "";
	} else {
		tlc_on.className = "";
		tlc_off.className = "off";
	}

	if (!document.getElementById('geneva_cl_m'+(geneva_pos+1))) {
		trc_on.className = "off";
		trc_off.className = "";
	} else {
		trc_on.className = "";
		trc_off.className = "off";
	}

	for (var i=1; ; i++) {
		var o_m = document.getElementById('geneva_cl_m'+i);
		if (!o_m) break;
		if (i == geneva_pos)
			o_m.className = "";
		else
			o_m.className = "off";
	}
	return false;
}
/* __ old code __ */

/* ______________ код для линейки превью на главной морде v2 ______________*/
// Сокращаем запись document.getElementById
function gebi(obj) { return document.getElementById(obj); }

var PMoveObjects_photo_new = {};
function getPMove_photo_new(id) {
	if (typeof(PMoveObjects_photo_new[id]) == "undefined") {
		PMoveObjects_photo_new[id] = new PMove_photo_new(id);
	}
	return PMoveObjects_photo_new[id];
}

function PMove_photo_new(id) {
	this.id = id;
	this.previewWidth = false;
	this.previewHeight = false;
	this.containerWidth = 0;
	this.containerWidthMin = 300;
	this.previewCount  = 0;

	this.marginLeft = false;
	this.scriptURL = "";
	this.xmlEnable = false;
	this.initFlag = 0;
	this.nameItemEnable = false;

	this._container = "cont_";
	this._leftAngle = "left_";
	this._rightAngle = "right_";

	this.defaultArray = [];
	this.casheImages = [];
	this.curPos = 0;
	this.isRight = 0;
	this.isLeft = 0;

	this.container = null;
	this.leftAngle = null;
	this.rightAngle = null;

	// Scroll
	this.initTimeout = 200;
	this.stepTimeout = 200;
	this.stepDirection = "";

	this.init = function(w, h, m, e, u, d) {
		if (
			typeof w == "undefined" ||
			typeof h == "undefined" ||
			typeof m == "undefined" ||
			typeof u == "undefined" ||
			typeof d == "undefined"
		) return;
		this.previewWidth = w;
		this.previewHeight = h;
		this.marginLeft = m;
		this.scriptURL = u;
		this.defaultArray = d;
		this.container = this.gebi(this._container + this.id);
		if (this.container == null) {
			// Error. Do nothing
			return;
		}
		this.leftAngle = this.gebi(this._leftAngle + this.id);
		if (this.leftAngle == null) {
			// Error. Do nothing
			return;
		}
		this.rightAngle = this.gebi(this._rightAngle + this.id);
		if (this.rightAngle == null) {
			// Error. Do nothing
			return;
		}
		if (this.defaultArray.length >= 1) {
			// Mix preview
			this.mixPreview();
			// Draw preview & angles
			this.drawPreview();
			this.drawAngles();
			// Add rezize-event handler
			var id = this.id;
			this.addHandler(
				window,
				"resize",
				function() {
					try {getPMove_photo_new(id).drawPreview();} catch(e) {}
				}
			);
			this.addHandler(
				document,
				"mouseup",
				function() {getPMove_photo_new(id).mouseUpHandler()}
			);
			this.addHandler(this.leftAngle, "mousedown", function(evt) {
				evt = evt || window.event;
				if (evt.preventDefault) evt.preventDefault();
			});
			this.addHandler(this.rightAngle, "mousedown", function(evt) {
				evt = evt || window.event;
				if (evt.preventDefault) evt.preventDefault();
			});
			this.addHandler(this.leftAngle, "dragstart", function() {return false;});
			this.addHandler(this.rightAngle, "dragstart", function() {return false;});
			this.initFlag = 1;
		} else {
			// Error. Do nothing
			return;
		}
	}
}

var stepTimer = {};
PMove_photo_new.prototype = {
	// ----------- Default -----------
	gebi : function(id) {
		return document.getElementById(id);
	},
	newImg : function(path) {
		var image = new Image();
		image.src = path;
		return image;
	},
	addHandler : function(object, event, handler, useCapture) {
		if (object.addEventListener) {
			object.addEventListener(event, handler, useCapture ? useCapture : false);
		} else if (object.attachEvent) {
			object.attachEvent('on' + event, handler);
		}
	},
	screenSize : function() {
		var w, h;
		w = (window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.offsetWidth));
		h = (window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight));
		return {w:w, h:h};
	},
	// ----------- Funcs -----------
	scrollInit : function(order) {
		//if (this.xmlEnable) this.ajaxLoad(); //ajax_json.js was exclude from splash
		this.stepDirection = order;
		var id = this.id;
		if (stepTimer[id] == null || typeof stepTimer[id] == "undefined")
		stepTimer[id] = setInterval("getPMove_photo_new('" + id + "').scrollRepeat()", 100);
	},
	scrollRepeat : function() {
		this.showNext(this.stepDirection);
		var id = this.id;
		if (typeof stepTimer[id] == "undefined" || stepTimer[id] != null) {
			clearInterval(stepTimer[id]);
			stepTimer[id] = null;
			stepTimer[id] = setInterval("getPMove_photo_new('" + id + "').scrollRepeat()", this.stepTimeout);
		}
	},
	mouseUpHandler : function() {
		var id = this.id;
		if (typeof stepTimer[id] == "undefined" || stepTimer[id] == null) return;
		clearInterval(stepTimer[id]);
		stepTimer[id] = null;
		this.showNext(this.stepDirection);
	},
	mixPreview : function() {
		if (this.defaultArray.length > 1) {
			var randKey = 0;
			var bufer = [];
			for (i = 0; i <= 3; i++) {
				randKey = parseInt(Math.random() * this.defaultArray.length);
				if (typeof this.defaultArray[i] == "undefined") continue;
				bufer = this.defaultArray[i];
				this.defaultArray[i] = this.defaultArray[randKey];
				this.defaultArray[randKey] = bufer;
			}
		}
	},
	drawNameItem : function(valueNameItem, urlNameItem) {
		if (this.nameItemEnable) {
			var nameItem = '' +
				'<div class="nameItem">' +
					'<div><span></span></div>' +
					'<div class="bodyNameItem"><a href="' + urlNameItem + '" title="' + valueNameItem + '">' + valueNameItem + '</a></div>' +
					'<div><span></span></div>' +
				'</div>';
		} else {
			var nameItem = '';
		}
		return nameItem;
	},
	drawPreview : function() {
		this.containerWidthDetect();
		var html = [];
		try {
			html[html.length] = '<table><tr>';
			var j;
			for (i = 0; i < this.previewCount; i++) {
				j = (this.curPos + i) % this.defaultArray.length;
				this.casheImages[j] = this.newImg(this.defaultArray[j][1]);

				if (!(document.all && !window.opera && parseInt(/msie\s([^;]+)/i.exec(navigator.appVersion)[1]) <= 6)) {
					var watermark_src = 'http://img.mail.ru/r/watermark_80.png';
				} else {
					var watermark_src = 'http://img.mail.ru/0.gif';
				}

				var nameItem = (this.nameItemEnable && (this.defaultArray[j][2] != undefined)) ? this.defaultArray[j][2] : '';
				if (this.id == 'video') {
					var preview_unit = '<td><div class="first"><img id="preview_' + this.id + i + '_Id" class="preview_video" src="' + this.defaultArray[j][1] + '"' + (this.previewWidth ? ' width="' + this.previewWidth + '"' : '') + (this.previewHeight ? ' height="' + this.previewHeight + '"' : '') + ' alt="" /><div class="second"><a href="' + this.defaultArray[j][0] + '" title="' + nameItem + '"><img src="' + watermark_src + '" width="80" height="60" alt="' + nameItem + '" class="watermark" /></a></div></div></td>';
				}
				else if(this.id=='blogs') {
					var preview_unit = '<td><a href="' + this.defaultArray[j][0] + '"';
					if(typeof this.defaultArray[j][2] == "object") {
						for(var k in this.defaultArray[j][2]) {
							if(this.defaultArray[j][2].hasOwnProperty(k)) preview_unit += ' '+k+'="'+this.defaultArray[j][2][k]+'"';
						}
					}
					preview_unit += '><img id="preview_' + this.id + i + '_Id" src="' + this.defaultArray[j][1] + '"' + (this.previewWidth ? ' width="' + this.previewWidth + '"' : '') + (this.previewHeight ? ' height="' + this.previewHeight + '"' : '') + ' alt="" /></a></td>';

				}
				else {
					var preview_unit = '<td><a href="' + this.defaultArray[j][0] + '" title="' + nameItem + '"><img id="preview_' + this.id + i + '_Id" src="' + this.defaultArray[j][1] + '"' + (this.previewWidth ? ' width="' + this.previewWidth + '"' : '') + (this.previewHeight ? ' height="' + this.previewHeight + '"' : '') + ' alt="' + nameItem + '" /></a></td>';
				}
				html[html.length] = preview_unit;
			}
			html[html.length] = '</tr></table>';
			html = html.join('');
		} catch (e) {
			// Error. Do nothing
			alert("Error");
			return;
		}
		this.container.innerHTML = html;
	},
	showPreview : function() {
		var j;
		for (i = 0; i < this.previewCount; i++)
		{
			var itemMain = this.gebi('preview_' + this.id + i + '_Id');

			j = (this.curPos + i) % this.defaultArray.length;
			itemMain.src = this.defaultArray[j][1];

			if (this.id == 'video') {
				itemMain.nextSibling.firstChild.href = this.defaultArray[j][0];
				if (this.nameItemEnable) {
					var nameItem = (this.nameItemEnable && (this.defaultArray[j][2] != undefined)) ? this.defaultArray[j][2] : '';
					itemMain.nextSibling.firstChild.title = nameItem;
					itemMain.nextSibling.firstChild.firstChild.alt = nameItem;
				}
			}
			else if(this.id=='blogs') {
				itemMain.parentNode.href = this.defaultArray[j][0];
				if(typeof this.defaultArray[j][2] == "object") {
					for(var k in this.defaultArray[j][2]) {
						if(this.defaultArray[j][2].hasOwnProperty(k) && this.defaultArray[j][2][k]!='' && this.defaultArray[j][2][k].match(/^return/))
								eval("itemMain.parentNode."+k+"= function (event) { "+this.defaultArray[j][2][k]+" }");
						}
				}

			}
			else {itemMain.parentNode.href = this.defaultArray[j][0];}
		}
	},
	containerWidthDetect : function() {
		this.containerWidth = this.screenSize().w * 0.9 * 0.26;
		this.containerWidth = this.containerWidth < this.containerWidthMin ? this.containerWidthMin : this.containerWidth;
		this.previewCount = parseInt(this.containerWidth / (this.previewWidth + this.marginLeft));
	},
	showNext : function(side) {
		if (side == "right") this.curPos++;
		else this.curPos--;
		if (this.curPos < 0) this.curPos = this.defaultArray.length - 1;
		if (this.curPos > this.defaultArray.length - 1) this.curPos = 0;
		this.showPreview();
		this.drawAngles();
		if (side == "left" && !this.isLeft) {
			clearInterval(stepTimer[this.id]);
			stepTimer[this.id] = null;
		}
		return false;
	},
	drawAngles : function() {
		this.define();
		var i = a = img = 0, node, nodes = {};
		for (i = 0; i < this.leftAngle.childNodes.length; i++) {
			node = this.leftAngle.childNodes[i];
			if (node.nodeType != 1) continue;
			nodes[node.nodeName.toLowerCase()] = node;
		}
		if (typeof nodes["a"] != "undefined" && typeof nodes["img"] != "undefined") {
			nodes["a"].style.display = this.isLeft ? "" : "none";
			nodes["img"].style.display = this.isLeft ? "none" : "";
			if (!this.initFlag) nodes["img"].style.backgroundColor = "#D9D9D9";
		}
		for (i = 0; i < this.rightAngle.childNodes.length; i++) {
			node = this.rightAngle.childNodes[i];
			if (node.nodeType != 1) continue;
			nodes[node.nodeName.toLowerCase()] = node;
		}
		if (typeof nodes["a"] != "undefined" && typeof nodes["img"] != "undefined") {
			nodes["a"].style.display = this.isRight ? "" : "none";
			nodes["img"].style.display = this.isRight ? "none" : "";
			if (!this.initFlag) nodes["img"].style.backgroundColor = "#D9D9D9";
		}
		//this.loadPreview();
	},
	define : function() {
		/*
		//this.isLeft = this.curPos ? true : false;
		this.isLeft = true;
		this.isRight = true;
		*/
		this.isLeft = this.curPos ? true : false;
		this.isRight = true;
	},
	loadPreview : function() {
		if (this.casheImages.length != this.defaultArray.length) {
			for (i = 0; i < this.previewCount * 2; i++) {
				j = (this.curPos + i) % this.defaultArray.length;
				if (typeof this.casheImages[j] == "undefined") this.casheImages[j] = this.newImg(this.defaultArray[j][1]);
			}
		}
	},
	ajaxLoad : function() {
		var _this = this;
		this.scriptURL = (this.scriptURL.indexOf('http://') == -1) ? ('http://' + window.location.hostname + this.scriptURL) : this.scriptURL;
		//this.scriptURL = 'http://' + 'mail.ru' + this.scriptURL;//window.location.hostname
		//alert(this.nameItemEnable);
		ajax_call_static(
			this.scriptURL,
			function(arr) {
				var item = new Array();
				var str = '';
				if (arr.length) {
					for (var i = 0; i < arr.length; i++) {
						if (arr[i]["PhotoName"] != 'undefined') {
							try
							{// if contain &#8470;, for conversion to №
								var result = arr[i]["PhotoName"].match(/&#\d+;/g);
								if (result != null) {
									for (var j = 0; j < result.length; j++) {
										result[j] = result[j].replace(/[&#;]/g, '');
										arr[i]["PhotoName"] = arr[i]["PhotoName"].replace(/&#\d+;/g, String.fromCharCode(result[j]));
									}
								}
							} catch(e) {}

							item = [arr[i]["url"], arr[i]["prevurl"], arr[i]["PhotoName"]];//
						}
						else item = [arr[i]["url"], arr[i]["prevurl"]];

						_this.defaultArray[_this.defaultArray.length] = item;
					}
				}
			}
		);
		this.xmlEnable = false;
	}
}
/* ______________ код для линейки превью на главной морде v2 ______________*/

/* ______________ код анимированного слайдера на главной морде  ______________*/
var aslider = { // Namespace
	archive : {},
	get : function(id) {
		if (typeof this.archive[id] == 'undefined')
			this.archive[id] = new this.create(id);
		return this.archive[id];
	},
	create : function(id) { // Constructor
		this.id = id;
		this.data = [];
		this.cur = 0;
		this.length = 0;
		this.preloaded = {};
		this.timer = null;
		this.moveState = false;
		this.longer = false;
		this.mixData = false;
		this.items = 2;
		this.itemWidth = 128;
		this.showest = [];
		this.html = [];
		// DOM elements
		this.table = null;
		this.left  = null;
		this.right = null;
		this.headerPhoto = '#';
		this.headerVideo = '#';
	}
}
aslider.create.prototype = {// Prototype
	$ : function(id) {return document.getElementById(id);},
	addHandler : function(o, e, h) {
		if (o.addEventListener) o.addEventListener(e, h, false);
		else if (o.attachEvent) o.attachEvent('on' + e, h);
	},
	init : function() {
		this.left  = this.$('aleft_'  + this.id);
		this.right = this.$('aright_' + this.id);
		this.table = this.$('acont_'  + this.id);
		this.ie6 = (navigator.userAgent.toLowerCase().indexOf('msie 6') != -1) ? true : false;
		this.ie8 = (navigator.userAgent.toLowerCase().indexOf('msie 8') != -1) ? true : false;
		this.row = this.table.rows[0];
		if (!(this.left && this.right && this.table))
			return false;
		if (!(typeof this.data != 'undefined' && this.data.length))
			return false;

		if (this.id == 'video') {
			this.dataL = this.data.length;
			for (var i = 0; i < this.dataL; i++) {
				this.data[i][2].title = (this.data[i][2].title.length > 36) ? (this.data[i][2].title.substr(0,36) + '&hellip;') : this.data[i][2].title;
			}
		}

		this.left.style.display = this.right.style.display = '';
		this.length = this.data.length;
		this.mix();
		var _this = this;
		// Add handlers
		this.left.onmousedown = function(evt) {
			evt = evt || window.event;
			if (evt.preventDefault) evt.preventDefault();
			_this.longer = true;
			_this.goLeft();
			return false;
		}
		this.left.ondragstart = function() {return false;};
		this.left.onclick = function(evt) {return false;}
		this.right.onmousedown = function(evt) {
			evt = evt || window.event;
			if (evt.preventDefault) evt.preventDefault();
			_this.longer = true;
			_this.goRight();
			return false;
		}
		this.right.ondragstart = function() {return false;};
		this.right.onclick = function(evt) {return false;}
		this.addHandler(document, 'mouseup', function() {_this.longer = false;});
		this.addHandler(window, 'mouseout', function() {_this.longer = false;});
		this.addHandler(window, 'load', function() {
			_this.resize();
			_this.preload();
		});
		this.addHandler(window, 'resize', function() {
			_this.resize();
		});
		this.resize();
	},
	mix : function() {
		if (this.mixData) {
			this.data.sort(function() {
				return Math.random() > 0.5 ? 1 : -1;
			});
		}
	},
	resize : function() {
		if (this.moveState) {
			setTimeout('aslider.get("'+this.id+'").resize()', 100);
			return;
		}
		if (this.table.offsetWidth) {
			var _t = this;
			setTimeout(function() {
				if (typeof _t != 'undefined') {
					_t.items = Math.floor(_t.table.parentNode.offsetWidth / _t.itemWidth);
					_t.setShowest();
					_t.draw();
					if (_t.id != 'video') _t.freeze();
				}
			}, 1);
		}
	},
	setShowest : function() {
		this.showest = [];
		for (var i = 0; i < this.items; i++)
			this.showest[i] = this.cur + i >=  this.length ? this.cur + i - this.length : this.cur + i;
		this.getHTML();
	},
	draw : function() {
		if (this.moveState || this.longer) return;
		for (i = this.row.cells.length - 1; i >= 0; i--) {
			this.row.deleteCell(i);
		}
		for (i = 0; i < this.html.length; i++) {
			this.row.insertCell(-1).innerHTML = this.html[i];
		}
	},
	getHTML : function() {
		this.html = [];
		var index, i;
		if (this.id == 'video') {
			for (var i = 0; i < this.showest.length; i++) {
				index = this.showest[i];
				var but_play = !this.ie6 ? 'http://img.mail.ru/r/watermark_90x50.png' : 'http://img.imgsmail.ru/0.gif';

				this.html[i] = '<div class="video"><table class="video"><tr>' +
					'<td style="width: 90px;"><a href="' + this.data[index][0] + '"><img src="' + but_play + '" style="background: url(' + this.data[index][1] + ') center center no-repeat; margin: 0;" width="90" height="50" alt="" /></a></td>' +
					'<td style="width: 5px;">&nbsp;</td>' +
					'<td class="text"><div class="text_box">' +
						'<div class="text_box_main">Видео: <a href="' + this.data[index][2].album_url + '">' + this.data[index][2].album_name + '</a><br />' +
						'<strong title="' + this.data[index][2].title + '">' + this.data[index][2].title + '</strong></div>' +
						'<div class="text_box_serv"><a href="' + this.data[index][2].album_url + '">Смотреть&nbsp;ещё</a></div>' +
					'</div></td>' +
					'<td style="width: 5px;">&nbsp;</td>' +
				'</tr></table></div>';
			}
		} else {
			for (var i = 0; i < this.showest.length; i++) {
				index = this.showest[i];
				this.html[i] = '<div class="item"><a href="' + this.data[index][0] + '"><img src="' + this.data[index][1] + '" width="128" height="128" alt="" /></a></div>';
			}
		}
	},
	goLeft : function() {
		if (this.moveState) return;
		this.cur -= this.items;
		this.cur = this.cur < 0 ? this.cur + this.length : this.cur;
		this.setShowest();
		this.update(0)
	},
	goRight : function() {
		if (this.moveState) return;
		this.cur += this.items;
		this.cur = this.cur >= this.length ? this.cur - this.length : this.cur;
		this.setShowest();
		this.update(1);
	},
	update : function(r,i,w) {
		this.moveState = true;
		this.preload();
		var _this = this;
		w = this.table.offsetWidth;
		if (r)
			for (var i = 0; i < this.html.length; i++)
				this.row.insertCell(-1).innerHTML = this.html[i];
		else
			for (var i = this.html.length - 1; i >= 0; i--)
				this.row.insertCell(0).innerHTML = this.html[i];
		this.freeze(w);
		if (!r) this.table.style.marginLeft = (-1)*w + 'px';
		this.move((r?0:(-1)*w), (r?0:(-1)*w), (r?(-1)*w:0), r);
	},
	preload : function() {
		var div, s, i, radius = 6, html = '';
		if (!(div = this.$('preloader_'+this.id))) {
			div = document.createElement("div");
			div.id = 'preloader_'+this.id;
			s = div.style;
			s.position = "absolute"; s.top = s.left = 0; s.visibility = "hidden";
			document.body.appendChild(div);
		}
		div = this.$('preloader_'+this.id);
		for (i = this.cur - radius; i <= this.cur + radius; i++) {
			if (this.data[i] && typeof this.preloaded[i] == 'undefined') {
				html += '<img src="'+this.data[i][1]+'" />\n';
				this.preloaded[i] = true;
			}
		}
		if (html) div.innerHTML += html;
	},
	move : function(x, start, end, r) {
		var percent = x / (end - start) * (r ? 1 : -1);
		x = x + (r ? -1 : 1) * (5 + 20 * percent);
		clearTimeout(this.timer);
		this.timer = null;
		if ((r && x < end) || (!r && x > end)) {
			if (r) {
				for (var i = this.items - 1; i >= 0; i--) {
					this.row.deleteCell(i);
				}
			} else {
				for (var i = 2 * this.items - 1; i >= this.items; i--) {
					this.row.deleteCell(i);
				}
			}
			this.table.style.marginLeft = 0;
			this.freeze();
			this.moveState = false;
			if (this.longer) {
				if (r) this.goRight();
				else this.goLeft();
			}
		} else {
			this.table.style.marginLeft = x + 'px';
			this.timer = setTimeout('aslider.get("'+this.id+'").move('+x+', '+start+', '+end+', '+r+')', 5);
		}
	},
	freeze : function(w) {
		if (w) w = w / this.items;
		else w = this.table.parentNode.parentNode.parentNode.offsetWidth / this.items;
		for (var i = 0; i < this.row.cells.length; i++) {
			if (w) this.row.cells[i].firstChild.style.width = w + 'px';
			else this.row.cells[i].firstChild.style.width = 'auto';
		}
	}
}
/* ______________ код анимированного слайдера на главной морде  ______________*/


/* Учёт кликов по стрелочкам полосок */
function AccountingClicks(id) {
	var img = new Image();
	img.src = 'http://r.mail.ru/d' + id + '_1.gif?' + parseInt(Math.random()*100000);
}
/* Учёт кликов по стрелочкам полосок */


/* Cookie */

function setCookie(name, value) {
    var valueEscaped = escape(value);
    var expiresDate = new Date(); // get current time
    expiresDate.setTime(expiresDate.getTime() + 365 * 24 * 60 * 60 * 1000); // add 1 year lifetime
    var expires = expiresDate.toGMTString(); // get formatted date string
    var newCookie = name + "=" + valueEscaped + "; path=/; expires=" + expires;
    if (valueEscaped.length <= 4000) document.cookie = newCookie + ";";
}

function getCookie(name) {
    var prefix = name + "=";
    var cookieStartIndex = document.cookie.indexOf(prefix);
    if (cookieStartIndex == -1) return null;
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
    return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}

/* /Cookie */

/* mail_splash End */

/* search_top Start */

/* Misc functions */
function str_split_digit(str,d) {
	var p=[], s=str.length;
	for (var x=0;(s-x)>=1;x+=d)
		p.push(str.substring(x,(x+d)));
	return p;
}
function RGB2HEX(r,g,b) {
	var cv = function(d) {
		var c = "0123456789ABCDEF";
		return String(c.charAt(Math.floor(d/16)))+String(c.charAt(d-(Math.floor(d/16)*16)));
	};
	return cv(r)+cv(g)+cv(b);
}
function set_query(oElem) {oElem.href += document.MSearch.q.value; return 0;}
function CheckQ(oForm) {if (oForm.q.value.length != 0) { return true; } else { document.location.href="http://go.mail.ru"; return false;}};
function changeMenu(id) {
	var divmenu=new Array('fff','sss');
	for (i=0;i<divmenu.length;i++) {
		myid=divmenu[i]+'c';
		if (document.getElementById(divmenu[i])){
        	if (divmenu[i] == id){
				document.getElementById(divmenu[i]).className='on';
				document.getElementById(myid).style.display='';
			} else {
				document.getElementById(divmenu[i]).className='noon';
				document.getElementById(myid).style.display='none';
			}
		}
	}
}
function softColor(startColor, stopColor, callback, speed, currentColor, end, it) {
	if (!it&&!end) {
		end = 100*speed;
		it = 0;
	}
	var x,y,z;
	var rgb = [];
	var startColorRGB = str_split_digit(startColor, 2);
	var stopColorRGB = str_split_digit(stopColor, 2);
	var newColor;
	if (currentColor) {
		var currentColorRGB = str_split_digit(currentColor, 2);
	}
	for (var i=0;i<startColorRGB.length&&i<stopColorRGB.length;i++) {
		x = parseInt(startColorRGB[i],16);
		y = parseInt(stopColorRGB[i],16);
		z = Math.round((currentColor?(parseInt(currentColorRGB[i],16)):x)-((x-y)*speed));
		(z>255)?z=255:(z<0)?z=0:null;
		rgb.push(z);
	}
	newColor = RGB2HEX.apply(null,rgb);
	var a = parseInt(startColor,16);
	var b = parseInt(stopColor,16);
	var c = parseInt(newColor,16);
	var _stop = false;
	if (((a>b&&c<=b)||(a<=b&&c>=b))||it>=end) {
		_stop = true;
		newColor=stopColor;
	}
	callback.apply(null,[newColor,_stop]);
	if (_stop) return;
	var t = arguments.callee;
	setTimeout(function(){
		t.apply(null,[startColor,stopColor,callback,speed,newColor,end,(++it)]);
	},70);
	return;
}
function fieldPasteFocusLight(field,str) {
	if (typeof field == "string")
		field = document.getElementById(field);
	if (!field)
		return false;
	field.focus();
	field.value = str;
	if (field.getAttribute("operation") == "true") return false;
	softColor("ffff66","FFFFFF",function(c, _stop){
		if (_stop) {
			field.setAttribute("operation","false");
		}
		field.style.background="#"+c;
	},0.1);
	field.setAttribute("operation","true");
	var form = document.forms.MSearch;
	form.setAttribute("action","http://r.mail.ru/cln4533/go.mail.ru/search");
	return true;
}
var browser = (function(){
	var ua = navigator.userAgent.toLowerCase();
	return {
		ie5: ua.indexOf('msie 5') != -1,
		ie6: ua.indexOf('msie 6') != -1
	};
})();
function redirect(u, ret) {
	var root;
	(root = self.parent).document.location.href ? root.document.location.href = u : root.location = u;
	return ret || false;
}
function createElement(name,attr,root) {
	root = root || self.parent.document;
	var e = root.createElement(name), x;
	if (attr) {
		for (x in attr) {
			if (x.toLowerCase() !== "tojsonstring") {
				e.setAttribute(x, attr[x]);
			}
		}
	}
	return e;
}
function absPosition(elem) {
	var left = 0,
		top = 0;
	if (typeof elem.getBoundingClientRect !== 'undefined') {
		var box = elem.getBoundingClientRect(),
			body = document.body,
			docElem = document.documentElement;
		left = box.left + (window.pageXOffset || docElem.scrollLeft || body.scrollLeft) - (docElem.clientLeft || body.clientLeft || 0);
		top  = box.top  + (window.pageYOffset || docElem.scrollTop  || body.scrollTop)  - (docElem.clientTop  || body.clientTop  || 0);
	} else {
		while (elem) {
			left += elem.offsetLeft;
			top += elem.offsetTop;
			if (elem.offsetParent === null) {
				elem = (elem.nodeName === 'BODY') ? null : elem.parentNode;
			}
			if (elem !== null) {
				elem = elem.offsetParent;
			}
		}
	}
	return {
 		x: Math.round(left),
 		y: Math.round(top)
 	};
}
function addHandler(elem, event, fn) {
	if (typeof elem.addEventListener !== 'undefined') {
		elem.addEventListener(event, fn, false);
	} else if (typeof elem.attachEvent !== 'undefined') {
		elem.attachEvent('on'+event, fn);
	}
	return elem;
}
function preventDefault(e) {
	if (typeof e.preventDefault !== 'undefined') {
		e.preventDefault();
	} else {
		e.returnValue = false;
	}
	return e;
}
function AJAX(url, args, keyHash, method, timeout, bCached, callbackFunc, callbackPhase, callbackArgs) {
	this.url = url;
	this.args = args;
	this.keyHash = keyHash;
	this.method = method.toLowerCase();
	this.timeout = timeout;
	this.timeoutID = null;
	this.bCached = bCached;
	this.callback = callbackFunc;
	this.callbackPhase = callbackPhase.toLowerCase();
	this.callbackArgs = (callbackArgs)?callbackArgs:[];
	this.request = new this.XHR();
}
AJAX.prototype = {
	XHR : function() {
		var req = false;
		if (window.XMLHttpRequest) {
			try {req = new XMLHttpRequest();}
			catch (e){}
		} else if (window.ActiveXObject) {
			try {req = new ActiveXObject('Msxml2.XMLHTTP');}
			catch (e) {
				try {req = new ActiveXObject('Microsoft.XMLHTTP');}
				catch (e){}
			}
		}
		return req;
	},
	send : function() {
		if (!this.request) return false;
		var correctURL=this.url, correctArgs = "";
		if (this.args && this.args.length > 0) {
			correctArgs += ((this.method=="get")?"?":"")+this.args;
		}
		if (this.keyHash) {
			correctArgs += ((correctArgs.length>0)?"&":"?")+"key="+this.keyHash;
		}
		if (this.method == "get") {
			correctURL += correctArgs;
			correctArgs = null;
		}
		var t = this;
		if (t.timeout) {
			t.timeoutID = setTimeout(function(){
				t.callback.apply({response:null,request:null,err:{reason:"timeout"}},t.callbackArgs);
				t.request.abort();
			},t.timeout);
		}
		this.request.onreadystatechange = function(){(function(){
			var complete = false;
			try {
				if (this.request.readyState == 4) {
					complete = true;
				}
				switch (this.callbackPhase) {
				case "complete":
					if (this.request.readyState == 4) {
						if (this.request.status == 200) {
							this.callback.apply({response:this.request.responseText,request:null,err:null},this.callbackArgs);
						} else {
							this.callback.apply({response:null,request:null,err:{reason:"!200",status:this.request.status}},this.callbackArgs);
						}
					}
				break;
				case "process":
					this.callback.apply({response:null,request:this.request,err:null},this.callbackArgs);
				break;
				}
			}
			catch (e) {complete = true;}
			if (complete) {
				this.timeout?clearTimeout(this.timeoutID):null;
			}
		}).call(t);};
		this.request.open(this.method, correctURL, true);
		(this.method == "post")?this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"):null;
		(!this.bCached)?this.request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 1970 00:00:00 GMT"):null;
		this.request.send(correctArgs);
		return true;
	}
};
var Suggest = function (c) {
	this.addObjectToThis = function(obj) {
		for (var x in obj) {
			if (typeof this[x] != "undefined") {
				//alert("Reserver var \"" + x + "\".\nOld value to be rewrite.");
			}
			this[x] = obj[x];
		}
	};
	/* Flags */
	this._operOff = false;
	this._operIgnored = false;
	this._operTimeout = false;
	this._operRequest = false;
	/* Timeout */
	this.sReqDelay = 200;
	this.sReqTimeout = false;
	/* Cache */
	this.cache = {};
	this.cacheCounter = 0;
	this.cacheLimit = 100;
	this.cacheResponses = {};

	this.submitType = false;

	this.redirectLink = false;

	this.suggestAreaXCor = 0;
	this.suggestAreaYCor = 0;
	this.suggestAreaWidth = 350;
	this.suggestAreaHeight = 0;

	this.addObjectToThis(c);

	/* URL */
	this.sReqUrl = null;
	this.sReqHS = this.sReqUrlHost + this.sReqUrlScript;
	if (!this.sReqMethod) this.sReqMethod = "GET";
	this.fieldCurrentValue = null;
	this.fieldCurrentValueEncode = null;
	this.fieldCurrentValueLength = null;
	this.fieldPrevValue = null;
	this.fieldPrevValueEncode = null;
	this.fieldPrevValueLength = null;
	/* AJAX Response */
	this.response = null;
	this.responseObj = null;
	/* Suggest */
	this.suggestMouseOver = false;
	this.suggestArea = null;
	this.suggestAreaHTML = null;
	this.suggestBlock = null;
	this.suggestOpen = false;
	this.suggestItems = null;
	this.suggestItemSelect = null;
	this.selectArrowPause = false;
	this.selectArrowPauseLength = 80;

	this.field.setAttribute("autocomplete","off");
	this.field.blur();
	this.setFieldEvents();
	this.setFormSubmitHandler();
}
Suggest.prototype = {
	fieldFocus: function(f) {
		setTimeout(function(){f.focus();},50);
	},
	cacheCheck : function() {
		if ((this.cache[this.fieldCurrentValueEncode] || this.cache[this.fieldCurrentValueEncode] === null) && this.cacheResponses[this.fieldCurrentValueEncode]) {
			return true;
		}
		return false;
	},
	cacheClean : function() {
		this.cache = {};
		this.cacheCounter = 0;
		this.cacheResponses = {};
	},
	cacheWrite : function() {
		this.cache[this.fieldCurrentValueEncode] = (this.response=="OK")?this.responseObj:null;
		this.cacheResponses[this.fieldCurrentValueEncode] = this.response;
		this.cacheCounter++;
	},
	compareValues : function() {
		/* encodeURIComponent(this.field.value.toLowerCase()) */
		if (this.fieldPrevValueEncode !== encodeURIComponent(this.field.value.toLowerCase())) {
			return false;
		}
		return true;
	},
	defineReqUrlParam : function() {
		var i = 0;
		var coolParam = "";
		if (this.sReqUrlParam) {
			for (var x in this.sReqUrlParam) {
				coolParam += ((i++!=0)?"&":"") + x + "=";
				if ((typeof this.sReqUrlParam[x]).toLowerCase() == "array" || (typeof this.sReqUrlParam[x]).toLowerCase() == "object") {
					if ((this[this.sReqUrlParam[x]] === false || typeof this[this.sReqUrlParam[x]] == "undefined") && this[this.sReqUrlParam[x]] !== null) {
						//alert("Incorrect var name \"" + this.sReqUrlParam[x] + "\" in class!");
						continue;
					}
					coolParam += this[this.sReqUrlParam[x]];
				} else {
					coolParam += this.sReqUrlParam[x];
				}
			}
		}
		return coolParam;
	},
	destroyThis : function() {
		this._operOff = true;
	},
	fieldFocusMoveToEnd : function() {
		if (this.field.createTextRange) {
			var c=0,b=0;
			var d=this.field.createTextRange(),e=document.selection.createRange();
			if(d.inRange(e)){
				d.setEndPoint("EndToStart",e);
				b=d.text.length;
				d.setEndPoint("EndToEnd",e);
				c=d.text.length;
			}
		} else if (this.field.selectionStart) {
			var end = this.field.value.length;
			this.field.setSelectionRange(end,end);
		}
		this.field.focus();
	},
	fieldValueCheck : function() {
		var r = /^[ \s]*$/i;
		r = r.test(this.field.value);
		return r?false:true;
	},
	formSubmit: function() {
		this.suggestAreaDestroy();
		if (this.redirectLink) {
			redirect(this.redirectLink);
			this.redirectLink = false;
			return false;
		}
		if (this.formSubmitFunc) {
			this.formSubmitFunc.apply(this.form,this.formSubmitFuncAttr);
		} else {
			this.form.submit();
		}
	},
	getFieldValue : function() {
		this.fieldCurrentValue = this.field.value;
		this.fieldCurrentValueLength = this.fieldCurrentValue.length;
		this.fieldCurrentValueEncode = encodeURIComponent(this.fieldCurrentValue.toLowerCase());
	},
	getResultInCache : function() {
		if (this.cacheResponses[this.fieldCurrentValueEncode] == "OK") {
			this.suggestAreaCreate(this.cache[this.fieldCurrentValueEncode],true);
		} else {
			if (this.suggestOpen) {
				this.suggestAreaDestroy();
			}
		}
		if (this.cacheCounter > this.cacheLimit) {
			this.cacheClean();
		}
	},
	keyEvents : function(keyCode) {
		switch (keyCode) {
		case 13:
			if (this.suggestOpen && this.suggestItemSelect !== null) {
				this.submitType = "keydown";
				if (!this.redirectLink) {
					this.field.value = this.suggestItems[this.suggestItemSelect].firstChild.firstChild.innerHTML;
				}
			} else {
				this.submitType = "default";
			}
		break;
		case 27:
			if (this.suggestOpen) {
				if (this.suggestItemSelect !== null) {
					this.field.value = this.fieldPrevValue;
				}
				this.suggestAreaDestroy();
			}
		break;
		case 38:
			if (this.suggestOpen) {
				this.suggestItemArrowSelect("up");
			}
		break;
		case 40:
			if (this.suggestOpen) {
				this.suggestItemArrowSelect("down");
			} else {
				this.getResultInCache();
			}
		break;
		}
		return false;
	},
	keyFilter : function(keyCode) {
		switch (keyCode) {
			case null:
			case 9:
			case 13:
			case 16:
			case 17:
			case 18:
			case 27:
			case 38:
			case 40:
				return false;
			break;
			default:
				return true;
			break;
		}
	},
	responseHandler : function(res,err) {
		if (err) {
			this._operRequest = false;
			if (this.suggestOpen) {
				this.suggestAreaDestroy();
			}
			return false;
		}
		res = (new Function('return (' + res + ')'))();

		if (res.AJAXResponse == "OK" && res.response.length == 1 && res.response[0].query == this.fieldCurrentValue.toLowerCase()) {
			res.AJAXResponse = "ERR-NO_RESPONSE";
		}

		this.response = res.AJAXResponse;
		if (res.AJAXResponse == "OK") {
			this.responseObj = res.response;
			if (this.compareValues() && !this.suggestOpen) {
				this.suggestAreaCreate(this.responseObj);
			} else if (this.suggestOpen) {
				this.suggestAreaCreate(this.responseObj);
			}
		} else {
			if (this.suggestOpen) {
				this.suggestAreaDestroy();
			}
		}
		this.cacheWrite();
		if (!this.compareValues()) {
			this.getFieldValue();
			if (this.fieldCurrentValueLength != 0) {
				if (this.cacheCheck()) {
					this.getResultInCache();
					this.setPrevFieldValue();
				} else {
					this.setOperTimeout();
					return false;
				}
			}
		}

		this.setPrevFieldValue();

		this._operRequest = false;
		return true;
	},
	sendRequest : function() {
		var t = this;
		var req = new AJAX(this.sReqHS,this.defineReqUrlParam(),false,this.sReqMethod,3000,false,function(){
			var response = this.response;
			var error = this.err;
			t.responseHandler.apply(t,[response,error]);
		},"complete");
		if (req.send()) {
			this._operRequest = true;
			clearTimeout(this._operTimeout);
			this._operTimeout = false;
		}
	},
	setFieldEvents : function() {
		var t = this;
		var f = function (e) {
			e = e || window.event;
			t.switcher.call(t,e);
		};
		//addHandler(this.field,"keypress",f);
		addHandler(this.field,"keydown",f);
		addHandler(this.field,"keyup",f);
		addHandler(this.field,"blur",function(){
			if (t.suggestOpen && !t.suggestMouseOver) {
				if (t.suggestItemSelect !== null) {
					t.field.value = t.fieldPrevValue;
				}
				t.suggestAreaDestroy.call(t);
			}
		});
		addHandler(document.body,"click",function(){(t.suggestOpen && !t.suggestMouseOver)?t.suggestAreaDestroy.call(t):null;});
	},
	setFormSubmitHandler : function() {
		if (this.formSubmitFunc) {
			var t = this;
			addHandler(this.form,"submit",function(e){
				e = e || window.event;
				preventDefault(e);
				t.formSubmit.call(t);
			});
			return true;
		}
		return false;
	},
	setIgnored : function(value) {
		var old_value = this._operIgnored;
		this._operIgnored = value;
		return old_value;
	},
	setOperTimeout : function() {
		var t = this;
		this._operTimeout = setTimeout(function(){
			t.sendRequest.call(t);
			t.setPrevFieldValue.call(t);
		},this.sReqDelay);
	},
	setPrevFieldValue : function() {
		this.fieldPrevValue = this.fieldCurrentValue;
		this.fieldPrevValueEncode = this.fieldCurrentValueEncode;
		this.fieldPrevValueLength = this.fieldCurrentValueLength;
	},
	suggestBlockPosCorrect : function(obj) {
		var w = this.field.offsetWidth;
		var h = this.field.offsetHeight;
		var pos = absPosition(this.field);
		var x = pos.x;
		var y = pos.y;
		obj.style.left = (x+this.suggestAreaXCor) + "px";
		obj.style.top = ((y+h)+this.suggestAreaYCor) + "px";
		obj.style.width = this.suggestAreaWidth + "px";
		if (this.suggestAreaHeight) {
			obj.style.height = this.suggestAreaHeight + "px";
		}
		return obj;
	},
	suggestAreaCreate : function(res, cache) {
		if (!this.suggestBlockID) return;
		this.suggestCleanItemCounters();
		var sb, i;
		var ie5 = browser.ie5;
		var ie6 = browser.ie6;
		if (!document.getElementById(this.suggestBlockID) && this.suggestBlock === null) {
			var t = this;
			var f = function(e, click) {
				e = e || window.event;
				var obj = e.target || e.srcElement;
				while (obj) {
					if (obj.id == t.suggestBlockID) {
						return;
					}
					if (click && obj.nodeName == "A" && obj.className == "sClose") {
						t.suggestAreaDestroy();
						t.destroyThis();
						return;
					} else if (obj.nodeName == "TR") {
						break;
					} else {
						obj = obj.parentNode;
					}
				}
				var arg = (click)?[obj,true]:[obj];
				t.suggestItemMouseSelect.apply(t,arg);
			};

			var root = self.parent.document;

			var wrp = createElement("div");
			var inr = createElement("div");
			var sar = createElement("div");
			var clsB = createElement("div");
			var clsL = createElement("a");
			var crnTR = createElement("b");
			var crnBL = createElement("b");
			var crnBR = createElement("b");
			var brdR = createElement("b");
			var brdB = createElement("b");
			crnTR.className = "sCrnTR";
			crnBL.className = "sCrnBL";
			crnBR.className = "sCrnBR";
			brdR.className = "sBrdR";
			brdB.className = "sBrdB";
			this.suggestBlock = createElement("div");
			this.suggestBlock.id = this.suggestBlockID;
			this.suggestBlock.style.position = "absolute";
			this.suggestBlockPosCorrect(this.suggestBlock);
			wrp.className = "sWrap";
			inr.className = "sInnr";
			sar.id = "g"+"ogo"+"S"+"ug"+"ges"+"tA"+"r"+"ea"+"_"+Math.round(Math.random()*1000000);
			sar.setAttribute("copyright","GoGo.Ru");
			clsL.className = "sClose";
			clsL.innerHTML = "закрыть";
			clsB.className = "sClose";
			clsB.appendChild(clsL);
			wrp.appendChild(inr);
			inr.appendChild(sar);
			inr.appendChild(clsB);
			wrp.appendChild(brdR);
			wrp.appendChild(brdB);
			wrp.appendChild(crnTR);
			wrp.appendChild(crnBL);
			wrp.appendChild(crnBR);
			this.suggestArea = sar;
			this.suggestBlock.appendChild(wrp);
			this.suggestBlock.appendChild(brdR);
			this.suggestBlock.appendChild(brdB);
			this.suggestBlock.appendChild(crnTR);
			this.suggestBlock.appendChild(crnBL);
			this.suggestBlock.appendChild(crnBR);
			sb = this.suggestBlock;
			addHandler(self.parent,"resize",function(){t.suggestBlockPosCorrect.call(t,sb)});
			addHandler(this.suggestBlock,"mouseover",function(e){f(e);t.suggestMouseOver=true;});
			addHandler(this.suggestBlock,"mouseout",function(){t.suggestMouseOver=false;});
			addHandler(this.suggestBlock,"click",function(e){f(e,true);});
			addHandler(this.suggestBlock,"contextmenu",function(e){preventDefault(e);f(e,true);});
			try {
				root.body.appendChild(this.suggestBlock);
			} catch(e) {alert(e);}
		}
		if (this.suggestArea.firstChild) {
			this.suggestArea.innerHTML = "";
		}
		this.suggestArea.appendChild(this.suggestAreaItemCreate(res));
		this.suggestBlock.style.visibility = "hidden";
		this.suggestBlock.style.visibility = "";
		this.suggestItems = this.suggestArea.getElementsByTagName("tbody")[0].childNodes;
		this.suggestOpen = true;
		if (!this.fieldValueCheck()) {
			this.suggestAreaDestroy();
		}
	},
	suggestAreaDestroy : function() {
		if (this.suggestArea === null) return;
		this.suggestCleanItemCounters();
		this.suggestBlock.style.visibility = "hidden";
		this.suggestOpen = false;
	},
	suggestCleanItemCounters : function() {
		this.suggestItems = this.suggestItemSelect = null;
	},
	suggestAreaItemCreate : function(res) {
		var table, tbody, tr, td1, td1d, i = 0, j = true, item, link = false;
		table = createElement("table");
		tbody = createElement("tbody");
		while (item = res[i++]) {
			(function(str){
				if (j && !str && item.site) {
					item.site = item.site.replace(/^http:\/\//,'').replace(/\/$/,'');
					str = '<a onclick="return false;" href="http://go.mail.ru/search?q='+item.site+'&ce=1" title="Перейти на '+item.site+'">'+item.site+'</a>';
					j = !j;
					arguments.callee(item.query);
					link = true;
				} else if (!str) {
					link = false;
					str = item.query;
				}
				tr = createElement("tr");
				tr.className = 'rn' + (str && link ? ' link' : '');
				td1 = createElement("td");
				td1d = createElement("div");
				td1d.innerHTML = str;
				td1.appendChild(td1d);
				tr.appendChild(td1);
				tbody.appendChild(tr);
				td1.className = "squery";
			})();
		}
		table.appendChild(tbody);
		table.className = "sList";
		return table;
	},
	suggestItemArrowSelect: function(arr) {
		if (!this.suggestItems) return;
		if (this.selectArrowPause) return;
		var n = this.suggestItems;
		var nl = n.length - 1;
		var v,t=this;
		if (this.suggestItemSelect === null) {
			if (arr == "down") {
				this.suggestItemSelect = 0;
			} else {
				this.suggestItemSelect = nl;
			}
		} else {
			n[this.suggestItemSelect].className = n[this.suggestItemSelect].className.replace('ra','rn');
			if (arr == "down") {
				this.suggestItemSelect++;
			} else {
				this.suggestItemSelect--;
			}
		}
		if (this.suggestItemSelect < 0 || this.suggestItemSelect > nl) {
			this.suggestItemSelect = null;
			v = this.fieldPrevValue;
		} else {
			n[this.suggestItemSelect].className = n[this.suggestItemSelect].className.replace('rn','ra');
			var obj = n[this.suggestItemSelect].firstChild.firstChild;
			if (obj.firstChild && obj.firstChild.nodeName == 'A') {
				v = this.fieldPrevValue;
				this.redirectLink = obj.firstChild.href;
			} else {
				v = obj.innerHTML;
				this.redirectLink = false;
			}
		}
		this.field.value = v;
		this.selectArrowPause = true;
		setTimeout(function(){
			t.selectArrowPause = false;
		},this.selectArrowPauseLength);
		setTimeout(function(){
			t.fieldFocusMoveToEnd.call(t);
		},10);
		return arr;
	},
	suggestItemMouseSelect : function(obj,click) {
		if (click) {
			this.submitType = "click";
			obj = obj.firstChild.firstChild;
			if (obj.firstChild && obj.firstChild.nodeName == 'A') {
				this.redirectLink = obj.firstChild.href;
				redirect(this.redirectLink);
				return;
			}
			var value = obj.innerHTML;
			this.field.value = value;
			this.formSubmit();
			return;
		}
		if (!this.suggestItems) return;
		var n = this.suggestItems,
			check = new RegExp('(^| +)ra($| +)'),
			i,
			nl = (i = n.length) - 1;
		if (this.suggestItemSelect !== null) {
			n[this.suggestItemSelect].className = n[this.suggestItemSelect].className.replace('ra','rn');
		}
		obj.className = obj.className.replace('rn','ra');
		while (i--) {
			if (check.test(n[i].className)) {
				this.suggestItemSelect = i;
				break;
			}
		}
	},
	switcher : function(e) {
		if (this._operOff) return false;
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : null;
		if (!this.fieldValueCheck() && this.suggestOpen) {
			this.suggestAreaDestroy();
		}
		if (this._operIgnored) return false;
		if (this._operTimeout) return false;
		if (this._operRequest) return false;
		if (!this.keyFilter(keyCode)) {
			if (e.type == "keydown") {
				this.keyEvents(keyCode);
			}
			return false;
		}
		this.getFieldValue();
		if (!this.fieldValueCheck()) {
			if (this.suggestOpen) {
				this.suggestAreaDestroy();
			}
		} else {
			if (this.cacheCheck()) {
				this.getResultInCache();
				this.setPrevFieldValue();
			} else {
				this.setOperTimeout();
			}
		}
	}
};
/* END SUGGEST */


function base64Encode( data ) {
	var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
    do {
        o1 = data.charCodeAt(i++);
        o2 = data.charCodeAt(i++);
        o3 = data.charCodeAt(i++);
        bits = o1<<16 | o2<<8 | o3;
        h1 = bits>>18 & 0x3f;
        h2 = bits>>12 & 0x3f;
        h3 = bits>>6 & 0x3f;
        h4 = bits & 0x3f;
        enc += b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
    } while (i < data.length);
    switch( data.length % 3 ){
        case 1: enc = enc.slice(0, -2) + '=='; break;
        case 2: enc = enc.slice(0, -1) + '='; break;
    }
	enc = enc.replace(new RegExp("=", "g"), "%3D");
	enc = enc.replace(new RegExp("\/", "g"), "%2F");
    return enc;
}
function chr(code) { return String.fromCharCode(code); }
function code2utf(code)
{
  if (code < 128) return chr(code);
  if (code < 2048) return chr(192+(code>>6)) + chr(128+(code&63));
  if (code < 65536) return chr(224+(code>>12)) + chr(128+((code>>6)&63)) + chr(128+(code&63));
  if (code < 2097152) return chr(240+(code>>18)) + chr(128+((code>>12)&63)) + chr(128+((code>>6)&63)) + chr(128+(code&63));
}
function _utf8Encode(str)
{
  var utf8str = new Array();
  for (var i = 0; i < str.length; i++)
    utf8str[i] = code2utf(str.charCodeAt(i));
  return utf8str.join('');
}
function utf8Encode(str)
{
  var utf8str = new Array();
  var pos,j = 0; var tmpStr = '';
  while ((pos = str.search(/[^\x00-\x7F]/)) != -1) {
    tmpStr = str.match(/([^\x00-\x7F]+[\x00-\x7F]{0,10})+/)[0];
    utf8str[j++] = str.substr(0, pos);
    utf8str[j++] = _utf8Encode(tmpStr);
    str = str.substr(pos + tmpStr.length);
  }
  utf8str[j++] = str;
  return utf8str.join('');
}
function strip(s){ return s.replace(/^\s*/, "").replace(/\s*$/, ""); }
function mapSearch(hElem, value) { hElem.href += base64Encode(utf8Encode(strip(value))); return 0; }

/* search_top End */

/* go_harmony Start */

(function(){
var GO = {
	ge: function (id) {
		return GO.doc.getElementById(id);
	},
	chr: function () {
		if (arguments.length > 1) {
			return String.fromCharCode.apply(null, arguments);
		}
		return String.fromCharCode.call(null, arguments[0]);
	},
	setQuery: function (oElem) {
		oElem.href += document.MSearch.q.value;
		return true;
	},
	mapSearch: function (hElem, value) {
		hElem.href += GO.base64.encodeURI(value);
		return true;
	},
	checkForm: function (oForm) {
		if (oForm.elements.q.value !== "") {
			return true;
		}
		window.location.href = "http://go.mail.ru";
		return false;
	}
};
GO.win = this;
GO.doc = document;
GO.head = GO.doc.getElementsByTagName("head")[0] || GO.doc.documentElement;

/* BEGIN GO.utf8 part */
var
	utf8re1 = /[^\x00-\x7F]/,
	utf8re2 = /([^\x00-\x7F]+[\x00-\x7F]{0,10})+/,
	utf8encodeFn1 = function (a) {
		if (a < 128) {
			return GO.chr(a);
		}
		if (a < 2048) {
			return GO.chr(192 + (a >> 6)) + GO.chr(128 + (a & 63));
		}
		if (a < 65536) {
			return GO.chr(224 + (a >> 12)) + GO.chr(128 + ((a >> 6) & 63)) + GO.chr(128 + (a & 63));
		}
		//if (a < 2097152) {
		//	return GO.chr(240 + (a >> 18)) + GO.chr(128 + ((a >> 12) & 63)) + GO.chr(128 + ((a >> 6) & 63)) + GO.chr(128 + (a & 63));
		//}
		return GO.chr(240 + (a >> 18)) + GO.chr(128 + ((a >> 12) & 63)) + GO.chr(128 + ((a >> 6) & 63)) + GO.chr(128 + (a & 63));
	},
	utf8encodeFn2 = function (b) {
		var
			c = [],
			i = 0,
			l = b.length;
		while (i < l) {
			c[i] = utf8encodeFn1(b.charCodeAt(i++));
		}
		return c.join('');
	},
	utf8decodeFn = function (d) {
		var
			a = [],
			c1,
			c2,
			c3,
			c4,
			l = d.length,
			j = 0,
			i = 0;
		while (i < l) {
			c1 = d.charCodeAt(i++);
			if (c1 > 127) {
				c2 = d.charCodeAt(i++);
			}
			if (c1 > 223) {
				c3 = d.charCodeAt(i++);
			}
			if (c1 > 239) {
				c4 = d.charCodeAt(i++);
			}
			a[j++] = (function(){
				if (c1 < 128) {
					return GO.chr(c1);
				}
				if (c1 < 224) {
					return GO.chr(((c1 - 192) << 6) + (c2 - 128));
				}
				if (c1 < 240) {
					return GO.chr(((c1 - 224) << 12) + ((c2 - 128) << 6) + (c3 - 128));
				}
				return GO.chr(((c1 - 240) << 18) + ((c2 - 128) << 12) + ((c3 - 128) << 6) + (c4 - 128));
			})();
		}
		return a.join('');
	};
GO.utf8 = {
	encode: function (d) {
		d = d.replace(/^\s*/,"").replace(/\s*$/,"");
		var
			e = [],
			j = 0,
			g = '',
			f;
		while ((f = d.search(utf8re1)) != -1) {
			g = d.match(utf8re2)[0];
			e[j++] = d.substr(0,f);
			e[j++] = utf8encodeFn2(g);
			d = d.substr(f + g.length);
		}
		e[j++] = d;
		return e.join('');
	},
	decode: function (d) {
		var
			a = [],
			b = 0,
			c = '',
			j = 0;
		while ((b = d.search(utf8re1)) != -1) {
			c = d.match(utf8re2)[0];
			a[j++] = d.substr(0, b);
			a[j++] = utf8decodeFn(c);
			d = d.substr(b + c.length);
		}
		a[j++] = d;
		return a.join('');
	}
};
/* END GO.utf8 part */

/* BEGIN base64 part */
var base64coll = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
GO.base64 = {
	encode: function (a) {
		var l = a.length, c, o2, o3, h1, h2, h3, h4, bits, i = 0, enc = "";
		do {
			c = a.charCodeAt(i++);
			o2 = a.charCodeAt(i++);
			o3 = a.charCodeAt(i++);
			bits = c << 16 | o2 << 8 | o3;
			h1 = bits >> 18 & 0x3f;
			h2 = bits >> 12 & 0x3f;
			h3 = bits >> 6 & 0x3f;
			h4 = bits & 0x3f;
			enc += base64coll.charAt(h1) + base64coll.charAt(h2) + base64coll.charAt(h3) + base64coll.charAt(h4);
		} while (i < l);
		switch (a.length % 3) {
			case 1:
				enc = enc.slice(0,-2) + '==';
			break;
			case 2:
				enc = enc.slice(0,-1) + '=';
			break;
		}
		return enc;
	},
	encodeURI: function (a) {
		return this.encode(GO.utf8.encode(a)).replace(/=/g,'%3D').replace(/\//g,'%2F');
	},
	decode: function (a) {
		var l = a.length, o1, o2, o3, h1, h2, h3, h4, bits, i=0, enc='';
		do {
			h1 = base64coll.indexOf(a.charAt(i++));
			h2 = base64coll.indexOf(a.charAt(i++));
			h3 = base64coll.indexOf(a.charAt(i++));
			h4 = base64coll.indexOf(a.charAt(i++));
			bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;
			o1 = bits >> 16 & 0xff;
			o2 = bits >> 8 & 0xff;
			o3 = bits & 0xff;
			if (h3 == 64) {
				enc += GO.chr(o1);
			} else if (h4 == 64) {
				enc += GO.chr(o1, o2);
			} else {
				enc += GO.chr(o1, o2, o3);
			}
		} while (i < l);
		return enc;
	},
	decodeURI: function (a) {
		return GO.utf8.decode(this.decode(a.replace(/\%3D/gi, '=').replace(/\%2F/gi, '/')));
	}
};
/* END base64 part */

/* BEGIN onAir part */
GO.onAir = (function(){
	var w = window,
	d = document,
	bind = function (elem, eType, fn) {
		if (elem.addEventListener) {
			elem.addEventListener(eType, fn, false);
		} else if (elem.attachEvent) {
			elem.attachEvent("on" + eType, fn);
		}
		return elem;
	},
	OBJ2URI = function (obj) {
			var str = '',
				idx,
				i = true,
				item;
			for (idx in obj) {
				if (!obj.hasOwnProperty(idx)) {
					continue;
				}
				item = obj[idx];
				str += (i ? '' : '&') + idx + '=' + (item.call ? item.call(this) : item);
				(i)?i=!i:null;
			}
			return str;
	},
	run = function (str) {
		return (new Function("return (" + str + ")"))();
	},
	trim = function (str) {
		return str.replace(/^\s+/, '').replace(/\s+$/, '');
	},
	cutString = function (str, len, pst) {
		pst = pst || '';
		if (len != 0 && str.length > len) {
			str = trim(str).substring(0, len) + pst;
		}
		return str;
	},
	ID = 0,
	onAir = function (arg) {
		if (this.onAir) {
			return new onAir(arg);
		}
		if (!arg.parent || (!arg.requestURI && arg.requestURI != '' && !arg['static'])) {
			this.idx = null;
			return false;
		}
		onAir.instances[this.idx = ID++] = this;
		this.block = {
			id: 'onAirBlock_' + this.idx,
			node: null,
			width: arg.blockWidth || '',
			height: arg.blockHeight || '',
			className: arg.blockClass || false
		};
		this.parent = arg.parent.nodeName ? arg.parent : d.getElementById(arg.parent);
		this.staticList = arg['static'] || false;
		this.list = {
			id: 'onAirList_' + this.idx,
			node: null,
			className: arg.listClass || false,
			items: [],
			itemClass: arg.listItemClass || false,
			itemHeight: false,
			itemHeightSet: arg.listItemHeight || false,
			itemMaxLength: arg.listItemMaxLength || 0,
			visibleItems: 0,
			mouseFocus: false
		};
		this.scroll = {
			speed: arg.scrollSpeed || 1,
			amount: arg.scrollAmount || 2,
			currentItem: 0,
			currentScroll: 0,
			delay: arg.scrollDelay || 2000,
			delayTID: null,
			timeout: arg.scrollTimeout || 25,
			isAction: false,
			loop: 0
		};
		this.request = {
			type: arg.requestType || 'AJAX',
			uri: arg.requestURI,
			attr: arg.requestAttr || {},
			period: arg.requestPeriod || 0,
			isAction: false,
			loadBlock: null,
			responseCharset: arg.requestResponseCharset || 'windows-1251'
		};
		this.data = null;
	};
	onAir.prototype = {
		get: function (data) {
			if (data) {
				if (typeof (data) === 'string') {
					try {
						data = run(data);
					} catch (e) {data = null}
				}
				return this.data = data;
			} else {
				switch (this.request.type) {
					case 'AJAX':
						this.sendRequestAjax();
					break;
					case 'SCRIPT':
						this.sendRequestScript();
					break;
				}
			}
		},
		responseHandler: function (instance) {
			if (this.err) {
				(function(){
					this.request.isAction = false;
					this.hideLoadBlock();
					this.startScrollTimer();
				}).call(instance);
				return;
			}
			if (this.response && this.response != '') {
				var response = this.response;
				(function(){
					this.request.isAction = false;
					this.hideLoadBlock();
					this.data = this.get(response);
					this.insertListItems();
					this.setOperations();
				}).call(instance);
			}
		},
		sendRequestAjax: function () {
			var request = new AJAX(
				this.request.uri,
				OBJ2URI.call(this, this.request.attr),
				false,
				'GET',
				5000,
				false,
				this.responseHandler,
				'complete',
				[this]
			);
			if (request.send()) {
				this.request.isAction = true;
				this.showLoadBlock();
			}
		},
		sendRequestScript: function () {
			var t = this,
				id = 'r_oascr',
				oldScript,
				script = d.createElement('script');
			if (oldScript = d.getElementById(id)) {
				oldScript.parentNode.removeChild(oldScript);
			}
			script.type = 'text/javascript';
			script.src = this.request.uri + '?' + OBJ2URI.call(this, this.request.attr);
			script.id = id;
			script.setAttribute('charset',this.request.responseCharset);

			this.request.isAction = true;
			this.showLoadBlock();

			return d.getElementsByTagName('head')[0].appendChild(script);
		},
		createLoadBlock: function () {
			var block = this.request.loadBlock = d.createElement('div');
			block.id = 'onAirLoadBlock_' + this.idx;
			block.className = 'onAirLoadBlock';
			return this.block.node.appendChild(block);
		},
		showLoadBlock: function () {
			var block;
			if (!(block = this.request.loadBlock)) {
				block = this.createLoadBlock();
			}
			block.style.display = 'block';
			return block;
		},
		hideLoadBlock: function () {
			var block;
			if (!(block = this.request.loadBlock)) {
				block = this.createLoadBlock();
			}
			block.style.display = 'none';
			return block;
		},
		setOperations: function () {
			if ((this.list.itemHeight * this.list.items.length) <= this.block.node.offsetHeight) {
				this.startScrollTimer = function(){};
				return;
			}
			this.startScrollTimer();
		},
		sendRequest: function () {
			var t = this;
			(function(){
				if (t.scroll.isAction || t.list.mouseFocus) {
					setTimeout(arguments.callee, 10);
				} else {
					t.stopScrollTimer.call(t);
					t.get.call(t);
				}
			})();
		},
		startScrollTimer: function () {
			var t = this;
			return (this.scroll.delayTID !== null) ? null : this.scroll.delayTID = setTimeout(function(){
				t.scrolling.call(t);
			}, this.scroll.delay);
		},
		stopScrollTimer: function (tid) {
			tid = tid || this.scroll.delayTID;
			if (tid !== null) {
				clearTimeout(tid);
				this.scroll.delayTID = null;
			}
		},
		scrolling: function (item) {
			var t = this,
				amount = this.scroll.amount,
				nextItem = this.scroll.currentItem + amount,
				scrollLength,
				step,
				scroll = 0,
				list = this.list.node,
				height = this.list.itemHeight * amount,
				handler;

			this.scroll.isAction = true;

			if (!this.list.items[this.scroll.currentItem + this.list.visibleItems]) {
				this.scroll.loop++;
				if (!this.staticList && this.request.period && this.scroll.loop == this.request.period) {
					handler = function () {
						t.scroll.currentScroll = 0;
						t.scroll.currentItem = 0;
						t.scroll.loop = 0;
						t.scroll.isAction = false;
						t.sendRequest.call(t);
					};
				} else {
					step = (scrollLength = t.scroll.currentScroll) * (this.scroll.speed / 10);
					handler = function () {
						scroll = ((scroll += step) > scrollLength) ? scrollLength : parseInt(scroll);
						list.style.top = (scroll == scrollLength?'':'-') + (t.scroll.currentScroll - scroll) + 'px';
						if (scroll == scrollLength) {
							t.scroll.currentScroll = 0;
							t.scroll.currentItem = 0;
							t.scroll.isAction = false;
							t.startScrollTimer.call(t);
						} else {
							setTimeout(arguments.callee, t.scroll.timeout);
						}
					};
				}
			} else {
				step = (scrollLength = height) * (this.scroll.speed / 10);
				handler = function () {
					var px;
					scroll = ((scroll += step) > scrollLength) ? scrollLength : parseInt(scroll);
					list.style.top = '-' + (px = (t.scroll.currentScroll + scroll))+'px';
					if (scroll == scrollLength) {
						t.scroll.currentScroll = px;
						t.scroll.isAction = false;
						t.startScrollTimer.call(t);
					} else {
						setTimeout(arguments.callee, t.scroll.timeout);
					}
				};
			}
			this.scroll.delayTID = null;
			this.scroll.currentItem = nextItem;
			handler();
		},
		setItemsAttr: function () {
			var items = this.list.items,
				l = items.length,
				item;
			while (l--) {
				item = items[l];
				if (this.list.itemHeightSet) {
					item.style.height = this.list.itemHeightSet + 'px';
				}
			}
			if (!this.list.itemHeight) {
				if (this.list.itemHeightSet) {
					this.list.itemHeight = this.list.itemHeightSet
				} else {
					this.list.itemHeight = item.offsetHeight;
				}
			}

			this.list.visibleItems = Math.floor(this.block.height / this.list.itemHeight);

			return items;
		},
		createBlock: function (id) {
			var block = this.block.node = d.createElement('div');
			block.id = id || this.block.id;
			block.style.width = this.block.width + (typeof this.block.width === 'string' ? '' : 'px');
			block.style.height = this.block.height + (typeof this.block.height === 'string' ? '' : 'px');
			block.style.overflow = 'hidden';
			block.style.position = 'relative';
			this.block.className ? block.className = this.block.className : null;
			return block;
		},
		createList: function () {
			var list = this.list.node = d.createElement('ul');
			list.id = this.list.id;
			list.style.position = 'relative';
			this.list.className ? list.className = this.list.className : null;
			return list;
		},
		clearList: function () {
			var list = this.list.node,
				items = this.list.items,
				item;
			while (item = list.firstChild) {
				list.removeChild(item);
			}
			items.length = 0;
			list.style.top = '';
			this.scroll.currentScroll = 0;
			this.scroll.currentItem = 0;
		},
		createListItems: function (data, list) {
			list = list || this.list.node;
			var i = data.length,
				items = [];
			if (this.list.items.length != 0) {
				this.clearList();
			}
			if (data && i != 0) {
				while (i--) {
					items[i] = list.insertBefore(this.createListItem(data[i], i), list.firstChild);
				}
			}
			return this.list.items = items;
		},
		createListItem: function (data, idx, item) {
			item = item || d.createElement('li');
			var className = this.list.itemClass;

			item.className = (className ? className + ' ' : '') + ((idx % 2) == 0 ? 'odd' : 'even');

			item.innerHTML = '<a href="'+data[1]+'" title="' + trim(data[0]) + '" target="_blank">' + cutString(data[0], this.list.itemMaxLength, '&hellip;') + '</a>';
			return item;
		},
		insertListItems: function (list) {
			list = list || this.list.node;
			list.style.visibility = 'hidden';

			if (this.createListItems(this.data).length != 0) {
				this.setItemsAttr();
			}

			list.style.visibility = '';
			return list;
		},
		create: function () {
			if (this.idx === null) {
				return false;
			}
			var t = this,
			block = this.createBlock(this.block.id),
			scrollStart = function(){
				t.list.mouseFocus = false;
				if (!t.scroll.isAction) {
					t.startScrollTimer.call(t);
				}
			};
			block.appendChild(this.createList());
			this.parent.appendChild(block);

			bind(bind(this.list.node, 'mouseover', function(){
				t.list.mouseFocus = true;
				if (!t.scroll.isAction) {
					t.stopScrollTimer.call(t);
				} else {
					setTimeout(arguments.callee, 10);
				}
			}), 'mouseout', scrollStart);

			if (this.staticList) {
				this.data = this.get(this.staticList);
				this.insertListItems();
				this.setOperations();
			} else {
				this.get();
			}
		}
	};
	onAir.instances = [];
	onAir.responseScript = function (instanceID, response) {
		var instance = this.instances[instanceID];
		instance.responseHandler.call(response, instance);
	};
	return onAir;
})();
/* END onAir part */

/* BEGIN MRP part */
GO.MRP = (function(){

var
G = 0,
W = this,
D = document,
H = D.getElementsByTagName("head")[0] || D.documentElement,
expando = "MRP_" + now();

function now () {
	return +new Date;
}

/*
 * var suggest = new MRP({
 * 	field: {String|DOMNode} id or DOMNode input
 * 	form: [Optional] {String|DOMNode} id or DOMNode field form
 * 	onsubmit: [Optional] {Function} onsubmit form handler
 * 	wrapper: [Optional]	{String|DOMNode} id or DOMNode wrapper area suggest
 * 	wrapperId: [Optional] {String} id wrapper node, default "mrp-wrap-[GUID]"
 * 	wrapperCln: [Optional] {String} class wrapper node, default "mrp-wrap"
 * 	inner: [Optional] {String|DOMNode} id or DOMNode inner area suggest
 * 	innerId: [Optional] {String} id inner node, default "mrp-innr-[GUID]"
 * 	innerCln: [Optional] {String} class inner node, default "mrp-innr"
 * 	itemsId: [Optinal] {String} id each suggest item, default "mrp-item-[GUID]-[ITEM-ID]"
 * 	itemsCln: [Optinal] {String} class each suggest item, default "mrp-item"
 * 	itemsSelectCln: [Optinal] {String} class selected suggest item, default "mrp-item-select"
 * 	itemsLimit: [Optional] {Number} max number suggest item list, default 10
 * 	checkFreq: [Optional] {Number} default 150
 * 	keyLockFreq: [Optional] {Number} default 100
 * 	cacheLimit: [Optional] {Number} default 100
 * 	requestProtocol: [Optinal]
 * 	requestHost: [Optinal]
 * 	requestPort: [Optinal]
 * 	requestPath: [Optinal]
 *  requestQuery: [Optinal], default {
		callback: "JSONP.cb",
		cp: function () {return this.valueCurr.length;},
		q: function () {return this.valueCurr;}
	}
 * 	requestCharset: [Optinal], default "windows-1251"
 * 	correctPosX: [Optinal], default 0
 * 	correctPosY: [Optinal], default 0
 * });
 */
/**
 * Конструктор саджестов
 * @param {Node|String} field Поле, к которому надо прицепить подсказаньки
 * @param {Object} sets Объект с полями настройки саджестовы
 * @return {Undefined} Void
 */
var MRP = function (sets) {
/* Если нету настроек вообще, то создаем пустой объект */
	sets = sets || {};
/* Если нету данных о поле, то возвращаем false */
	if (!sets.field) {
		return false;
	}

	this.guid = G++;

/* DOMNode поля, к которому все это дело колдуется. */
	this.field = MRP.gee(sets.field);
/* DOMNode формы, которой принадлежит поле. */
	this.form = MRP.gee(sets.form);

	this.onsubmit = sets.onsubmit || null;
	this.ondraw = sets.ondraw || null;

	this.wrapper = MRP.gee(sets.wrapper);
	this.wrapperId = this.wrapper && !sets.wrapperId && this.wrapper.id || sets.wrapperId || "mrp-wrap-" + this.guid;
	this.wrapperCln = this.wrapper && !sets.wrapperCln && this.wrapper.className || sets.wrapperCln || "mrp-wrap";

	this.inner = this.wrapper && MRP.gee(sets.inner);
	this.innerId = this.inner && !sets.innerId && this.inner.id || sets.innerId || "mrp-innr-" + this.guid;
	this.innerCln = this.inner && !sets.innerCln && this.inner.className || sets.innerCln || "mrp-innr";

	this.items = [];
	this.itemsFilled = [];
	this.itemsId = sets.itemsId || "mrp-item-" + this.guid + "-";
	this.itemsCln = sets.itemsCln || "mrp-item";
	this.itemsSelectCln = sets.itemsSelectCln || "mrp-item-select";
	this.itemsLimit = sets.itemsLimit || 10;
	this.itemsCurr = null;

/* периодичность проверки поля на изменение содержимого текста */
	this.checkFreq = sets.checkFreq || 150;

	this.keyLockFreq = sets.keyLockFreq || 100;

/* Счетчик для кэша */
	this._i = 0;
/* Кэш - массив. Здесь будет хранится все по индексам. */
	this._c = [];
/* Кэш - хэш-таблица. Здесь будут хранится ключи к основному кэшу. */
	this._h = {};
/* Ограничение размера кэша */
	this.cacheLimit = sets.cacheLimit || 100;

/* Для отслеживания запросов */
	this.valueCurr = "";
	this.valuePrev = "";
	this.valueExc = null;

/* Как форматируем значение поля */
	this.getValueCase = sets.getValueCase || "lower";

	var location = W.location;
/* Настройки для запроса подсказок */
	this.request = {
		protocol: sets.requestProtocol || location.protocol,
		host: sets.requestHost || location.host,
		port: sets.requestPort || location.port,
		path: sets.requestPath || location.pathname,
		query: sets.requestQuery || {
			cp: function () {
				return this.valueCurr.length;
			},
			q: function () {
				return this.valueCurr;
			}
		},
		charset: sets.requestCharset || "windows-1251",
		timeout: sets.requestTimeout || 3000
	};

/* Корректировка координат */
	this.correctPosX = sets.correctPosX || 0;
	this.correctPosY = sets.correctPosY || 0;

/* Всячискии флаги выполнения или наоборот */
/* Есть ли фокус и поля */
	this._focus = false;
/* Номер проверки. По сути id таймаута */
	this._checking = false;
/* Отметка паузы в проверке, она то по сути идет, но ничего не проверяет */
	this._paused = false;
	this._off = false;
	this._hidden = true;
	this._firstCorrection = false;
	this._data = {};

/* Записываем созданный this в кэш экземпляров */
	MRP.coll[this.guid] = this;
};
MRP.fn = MRP.prototype = {
	show: function () {
		MRP.show(this.wrapper);
		this._hidden = false;
	},
	hide: function () {
		MRP.hide(this.wrapper);
		this._hidden = true;
	},
	off: function (enabled) {
		this._off = !enabled;
	},

/**
 * Получает значение поля в данный момент, форматируя его в зависимости с настройками
 * @return {String} Значение поля
 */
	getValue: function () {
		var value = this.field.value;
		switch (this.getValueCase) {
			case "upper":
				value = value.toUpperCase();
			break;
			case "lower":
				value = value.toLowerCase();
			break;
		}
		return value;
	},

	correctPosition: function () {
		var coords = MRP.coords(this.field);
		this.wrapper.style.left = coords.x + this.correctPosX + "px";
		this.wrapper.style.top = coords.y + this.field.offsetHeight + this.correctPosY + "px";
	},

/**
 * Отчищает кэш объекты и сбрасывает счетчик
 */
	cacheClear: function () {
		this._i = 0;
		this._c = [];
		this._h = [];
	},

/**
 * Добавляет запись в кэш
 * @param {Object} cacheItem Элемент, который следует добавить в кэш. он может быть почти любого вида, но обязательно сожержать поле hid. Также добавиться еще одно - cid, автоматом
 * @return {Number} id добавленного элемента в кэше
 */
	cacheWrite: function (cacheItem) {
		if (this._i == this.cacheLimit) {
			this.cacheClear();
		}
		this._c[this._h[cacheItem.hid || ""] = cacheItem.cid = this._i] = cacheItem;
		return this._i++;
	},

/**
 * Получает содержимое кэша по заданному индексу
 * @param {String|Number} cid Индентификатор поиска в массиве (Number) или в хэше (String)
 * @return {Object} Содержимое кэша по заданному cid или null, если такого не было найдено
 */
	cacheRead: function (cid) {
		return (cid = this.cacheCheck(cid)) !== false && this._c[cid] || null;
	},

/**
 * Проверяет, есть ли позиция в кэше.
 * @param {String|Number} cid Индентификатор поиска в массиве (Number) или в хэше (String)
 * @return {Number|Boolean} id в массиве, если найдено, в ином случае false
 */
	cacheCheck: function (cid) {
		var answer = false;
		if (typeof cid === "number" && this._c[cid]) {
			answer = cid;
		} else if (typeof cid === "string") {
			if (Object.prototype.hasOwnProperty(cid) && Object.prototype.hasOwnProperty.call(this._h, cid)) {
				answer = this._h[cid];
			} else {
				answer = (answer = this._h[cid]) !== undefined && answer;
			}
		}
		return answer;
	},

/**
 * Выбирает саджест по порядковому номеру в массиве
 * @param {Number} id Идентификатор элемента в массиве с актуальными подсказками
 * @return {Object} MRP
 */
	itemSelect: function (id) {
		var item;

		if (this.itemsCurr !== null) {
			item = this.items[this.itemsFilled[this.itemsCurr]];
			if (item) {
				item.className = item.className.replace(" " + this.itemsSelectCln, "");
			}
		}

		if (id !== null) {
			item = this.items[this.itemsFilled[id]];
			if (item) {
				item.className += " " + this.itemsSelectCln;
			}
		}

		this.itemsCurr = id;
		return item || null;
	},

/**
 * Выбирает саджест с заданым шагом от исходного
 * @param {Number} step Шаг, через который следует выбрать элемент с подсказкой.
 * 		Может быть как положительным, так и отрицательным, но никак не 0.
 * @return {Object} MRP
 */
	itemSelectStep: function (step) {
		var
		length = this.itemsFilled.length,
		itemsCurr = this.itemsCurr,
		itemsNext;

		if (itemsCurr === null) {
			if (step > 0) {
				itemsNext = 0;
			} else {
				itemsNext = length - 1;
			}
		} else {
			itemsNext = itemsCurr + step;
			if (step > 0) {
				if (itemsNext > length) {
					itemsNext = itemsNext - length - 1;
				}
			} else {
				if (itemsNext < 0) {
					itemsNext = length + 1 + itemsNext;
				}
			}
		}

		return this.itemSelect(itemsNext);
	},

	itemsReset: function () {
		this.itemSelect(null);
		this.itemsFilled = [];
	},

/**
 * Инициализирует подсказки. Прикрепляет все обработчики, создает поля и все самое начальное
 * @return {Object|Boolean} Вернет экземпляр объекта или же false, если что-то пошло не так
 */
	init: function () {
/* Прячем this в замыкании для event-хендлеров */
		var _this = this;
/* Проверяем, нашлося ли поле при выхове конструктора */
		if (!this.field) {
			return false;
		}
/* Если форма не была получена по ид или ее даже в настройках не было, то ищем ее самостоятельно */
		if (!this.form) {
			var form = this.field;
			do {
				form = form.parentNode;
			} while (form && form.nodeName !== "FORM");
			this.form = form;
		}
/* Если вдруг так получилось формы все равно не получено, то возвращаем функу */
		if (!this.form) {
			return false;
		}

/* Выключаем автозаполнение у поля */
		MRP.attr(this.field, "autocomplete", "off");

/* Получаем настоящее значение поля в момент инициализации */
		this.valueCurr = this.valuePrev = this.getValue();

/* ### BIND ### */
/* Добавляем обработчик для фокуса на поле */
		MRP.bind(this.field, "focus", function(){
/* Делаем отметку, что поле получило фокус */
			_this._focus = true;
/* Определяем функу цикличной проверки поля на изменение сожержимого */
			function LoopChecking () {
				if (!_this._off) {
					if (!_this._paused) {
						_this.valueCurr = _this.getValue();
						if (_this.valuePrev !== _this.valueCurr) {
							if (_this.valueExc !== _this.valueCurr) {
/* Проверяем строку на пустоту, если она пуста, то скрываем блок подсказок */
								if (!MRP.isEmptyStr(_this.valueCurr)) {
									_this.getData(_this.valueCurr);
								} else {
									_this.hide();
								}
								_this.valuePrev = _this.valueCurr;
								_this.valueExc = null;
							}
						}
					}
				}
				_this._checking = setTimeout(LoopChecking, _this.checkFreq);
			}
/* Запускаем ее, а дальше она сама все сделает */
			LoopChecking();
		});

		var stayVisible = false;
		MRP.bind(this.field, "blur", function(){
/* Снимаем отметку о полученом полем фокусе */
			_this._focus = false;
/* Стопим таймаут проверки */
			clearTimeout(_this._checking);
			setTimeout(function(){
				if (!stayVisible) {
					_this.valuePrev = _this.valueCurr;
					_this.valueExc = "";
					_this.hide();
				}
			}, 200);
		});

		var keyLock = false;
		MRP.bind(this.field, MRP.ua.opera ? "keypress" : "keydown", function(event){
			if (keyLock) {
				return;
			}
			keyLock = true;
			setTimeout(function(){
				keyLock = false;
			}, _this.keyLockFreq);

			var
			keyCode = event.keyCode || event.which,
			keyHandler = _this.keys[keyCode];

			if (keyHandler) {
				keyHandler.call(_this);
			}
		});

		var
		submitHandlerPr = this.onsubmit,
		submitHandler = this.form.onsubmit,
		formSubmit = submitHandlerPr;
		if (submitHandler) {
			formSubmit = submitHandlerPr || submitHandler;
			this.form.onsubmit = null;
		}
		this.onsubmit = function (event) {
			var
			eventType = event ? "keydown" : "click",
			enter = true,
			item = _this.itemsFilled[_this.itemsCurr];

			if (item !== undefined) {
				if ((item = _this._data.items[item]) !== undefined && !_this._hidden) {
					enter = MRP.getItemPrefs(item.type).enter.call(_this, item, eventType);
				}
			}
			if (enter === false || formSubmit && formSubmit.call(this, eventType) === false) {
				return false;
			} else {
				if (!event) {
					_this.form.submit();
				}
				return true;
			}
		};
		MRP.bind(this.form, "submit", this.onsubmit);

/* Строим, дополняем, украшаем лю... главные врапперы для результатов */
		var
		wrapper = this.wrapper,
		inner = this.inner;

		if (!wrapper) {
			wrapper = MRP.ce("div");
			this.wrapper = wrapper;
			this.hide();
			D.body.appendChild(wrapper);
		}
		if (!inner) {
			inner = MRP.ce("div");
			this.inner = wrapper.appendChild(inner);
		}
		MRP.attr(wrapper, {
			id: this.wrapperId,
			"class": this.wrapperCln
		});
		MRP.attr(inner, {
			id: this.innerId,
			"class": this.innerCln
		});

		MRP.bind(W, "resize", function () {
			_this.correctPosition();
		});

/* А тут делаем уже непосредственно сами блоки результов и создаем коллекцию из них */
		var
		counter = 0,
		item;

		while (counter < this.itemsLimit) {
			item = this.items[counter] = this.inner.appendChild(MRP.ce("div", {
				id: this.itemsId + counter,
				"class": this.itemsCln
			}));

			MRP.bind(item, "mousemove", function () {
				_this.itemSelect(this._mrp);
			});
			MRP.bind(item, "click", function (event, target) {
				var
				submit = true,
				item = _this._data.items[this._mrp];

				while (target && target.id !== _this.wrapperId) {
					if (target.rel === "mrp-nosubmit") {
						submit = false;
						break;
					}
					target = target.parentNode;
				}

				if (submit) {
					_this.field.value = item.text;
					_this.onsubmit.call(_this.form);
				} else {
					stayVisible = true;
				}
			});
			counter++;
		}

/* Если все хорошо и функа дошла до сюда, то возвращаем экземпляр */
		return this;
	}
};


/* Вспомогательный функционал */
/**
 * Функция обхода объекта(массива в частном случае)
 * @param {Array|Object} obj Массив или объект, который следует обойти
 * @param {Function} iterFn Callback-функция вызываемая при каждой итерации. Контекстом вызова является значение ячейки в таблице или свойства/метода в объекте. 2 передаваемых параметра: индекс и значение
 * @return {Number|String} последний индекс в итерации
 */
MRP.each = function (obj, iterFn /* TODO: , iterFnArgs */) {
	var
	idx = 0,
	length,
	item;

	if ((length = obj.length) !== undefined) {
		while (idx < length) {
			item = obj[idx];
			if (iterFn.call(item, idx++, item) === false) {
				break;
			}
		}
	} else {
		for (idx in obj) {
			item = obj[idx];
			if (iterFn.call(item, idx, item) === false) {
				break;
			}
		}
	}
	return idx;
};

/**
 * Дополняет исходный объект thisObj, дополнительными полями из объекта extObj, если thisObj не указано, то дополняется контекст выхова метода this
 * @param {Object} extObj Дополняющий объект
 * @param {Object} thisObj Исходный объект, который следует дополнить [Опционально]
 * @return {Object} Дополненный объект
 */
MRP.extend = MRP.fn.extend = function (extObj, thisObj) {
	thisObj = thisObj || this;
	MRP.each(extObj, function(prop, value){
		thisObj[prop] = value;
	});
	return thisObj;
};

/**
 * Синоним document.getElementById
 * @param {String} id идентификатор элемента в документе
 * @return {Node|Null} DOMNode или Null, если не найдено
 */
MRP.ge = function (id) {
	return D.getElementById(id);
};

MRP.gee = function (idOrNode) {
	if (idOrNode) {
		if (typeof idOrNode === "string") {
			return MRP.ge(idOrNode);
		} else if (idOrNode.nodeName && idOrNode.nodeType) {
			return idOrNode;
		}
	}
	return null;
};

/**
 * Создает Node с именем name и атрибутами attrs
 * @param {String} name nodeName (тег)
 * @param {Object} attributes Атрибуты создаваемого элемента, например {id: 'foo', title: 'bar'}
 * @return {Node} Созданный элемент с атрибутами attrs, если таковые были
 */
MRP.ce = function (name, attributes) {
	var node = D.createElement(name);
	if (attributes) {
		MRP.attr(node, attributes);
	}
	return node;
};

/**
 * Добавляем обработчик (handler) по событию (event) к элементу (elem)
 * @param {Node} elem Элемент
 * @param {String} event Собитие, без приставки "on", т.е. "click", "blur", "load", ...
 * @param {Function} handler Обработчик по событию. Если функция вернет false, то у элемента будет отменено действие по умолчанию
 * @return {Node} Элемент, к которому добавлялся обработчик
 */
MRP.bind = function (elem, event, handler) {
	function fn (evt) {
		evt = evt || W.event;
		if (handler.call(elem, evt, evt.target || evt.srcElement) === false) {
			if (typeof evt.preventDefault !== "undefined") {
				evt.preventDefault();
			} else {
				evt.returnValue = false;
			}
		}
	}
	if (typeof elem.addEventListener !== "undefined") {
		elem.addEventListener(event, fn, false);
	} else if (typeof elem.attachEvent !== "undefined") {
		elem.attachEvent("on" + event, fn);
	}
	return elem;
};

var
quot1 = /"/g,
quot2 = /'/g,
emptyStr = /^\s*$/;

MRP.escape = {
/**
 * Преобразовывает строку в URI-последовательность (utf8)
 * @param {String} str Исходная строка
 * @return {String} Преобразованная строка
 */
	uri: function (str) {
		if (W.encodeURIComponent) {
			str = W.encodeURIComponent(str);
		} else {
			str = W.escape(str);
		}
		return str;
	},

/**
 * Эскейпит html спец. символы в строку
 * @param {String} str Исходная строка
 * @return {String} Преобразованная строка
 */
	html: function (str) {
		return MRP
			.ce("p")
			.appendChild(D.createTextNode(str))
			.parentNode
			.innerHTML
			.replace(quot1, "&quot;")
			.replace(quot2, "&#39;");
	}
};

/**
 * Проверяет строку на пустоту
 * @return {Boolean} Возвращает true, если строка пустая или состояит из одних пробелов, иначе false
 */
MRP.isEmptyStr = function (str) {
	return emptyStr.test(str || "");
}

/**
 * Определяет координаты (px) элемента относительно левого правого угла документа
 * @param {Node} elem Элемент, координаты которого нужно узнать
 * @return {Object} объект с координатами {x: _left_, y: _top_}
 */
MRP.coords = function (elem) {
	var
	left = 0,
	top = 0;

	if (typeof elem.getBoundingClientRect !== "undefined") {
		var
		box = elem.getBoundingClientRect(),
		body = D.body,
		docElem = D.documentElement;

		left = box.left + (W.pageXOffset || docElem.scrollLeft || body.scrollLeft) - (docElem.clientLeft || body.clientLeft || 0);
		top  = box.top  + (W.pageYOffset || docElem.scrollTop  || body.scrollTop)  - (docElem.clientTop  || body.clientTop  || 0);
	} else {
		while (elem) {
			left += elem.offsetLeft;
			top += elem.offsetTop;
			if (elem.offsetParent === null) {
				if (elem.nodeName === 'BODY') {
					elem = null;
				} else {
					elem = elem.parentNode;
				}
			}
			if (elem !== null) {
				elem = elem.offsetParent;
			}
		}
	}
	return {
		x: left,
		y: top
	};
};

/**
 * User-Agent
 * @type {Object}
 */
var UserAgent = new String(navigator.userAgent.toLowerCase());
/* Дополняем строковой объект User-Agent */
MRP.ua = MRP.extend({
	ie: UserAgent.indexOf("msie") != -1,
	ie6: UserAgent.indexOf("msie 6") != -1,
	ie7: UserAgent.indexOf("msie 7") != -1,
	ie8: UserAgent.indexOf("msie 8") != -1,
	ff: UserAgent.indexOf("firefox") != -1,
	opera: UserAgent.indexOf("opera") != -1,
	chrome: UserAgent.indexOf("applewebkit") != -1 && UserAgent.indexOf("chrome") != -1
}, UserAgent);

/* Дополнительные переменные для проверок (Спижено из jQuery) */
var
attrStyleFloat = UserAgent.ie ? "styleFloat" : "cssFloat",
attrProps = {
	"for": "htmlFor",
	"class": "className",
	"float": attrStyleFloat,
	cssFloat: attrStyleFloat,
	styleFloat: attrStyleFloat,
	readonly: "readOnly",
	maxlength: "maxLength",
	cellspacing: "cellSpacing",
	rowspan: "rowSpan",
	tabindex: "tabIndex"
};

/**
 * Получает значение аттрибута у элемента, если value не передано, если же передано, то меняет у аттрибута значение
 * @param {Node} elem Элемент
 * @param {String|Object} attribute Имя аттрибута
 * @param {String} value Значение аттрибута [Опционально]
 * @return {String|Void} Возвращает значение аттрибута, если функция вызввалась без указания значения, в ином случае ничего не возвращает
 */
MRP.attr = function (elem, attribute, value) {
	if (typeof attribute === "object") {
		MRP.each(attribute, function (attribute, value) {
			MRP.attr(elem, attribute, value);
		});
	} else {
		if (value) {
			MRP.attr.st.call(elem, attribute, value);
		} else {
			return MRP.attr.gt.call(elem, attribute);
		}
	}
};
MRP.attr.gt = function (attribute) {
	var value;
	if (attribute === "style") {
		if (MRP.ua.ie) {
			value = this.style.getAttribute("cssText");
		} else {
			value = this.getAttribute(attribute);
		}
	} else {
		if (value = attrProps[attribute]) {
			value = this[value];
		} else {
			value = this.getAttribute(attribute);
		}
	}
	return value;
};
MRP.attr.st = function (attribute, value) {
	if (attribute === "style") {
		if (MRP.ua.ie) {
			this.style.setAttribute("cssText", value);
		} else {
			this.setAttribute(attribute, value);
		}
	} else {
		if (attrProps[attribute]) {
			this[attrProps[attribute]] = value;
		} else {
			this.setAttribute(attribute, value);
		}
	}
};
MRP.shows = function (elem) {
	return elem.style.display !== "none";
};
MRP.hidden = function (elem) {
	return elem.style.display === "none";
};
MRP.show = function (elem) {
	if (!MRP.shows(elem)) {
		elem.style.display = "";
	}
};
MRP.hide = function (elem) {
	if (!MRP.hidden(elem)) {
		elem.style.display = "none";
	}
};

/**
 * Создает URI строку из объекта. н. {foo: 'bar', test: '1'} будет преобразовано в foo=bar&test=1
 * @param {Object} obj Объект с парами key: value, где он преобразуется так key=value
 * @param {Object} context [Optional] Контекст вызова функции в value
 * @return {String} созданная URI строка
 */
MRP.createQuery = function (obj, context) {
	var
	idx = 0,
	query = [];

	context = context || this;

	MRP.each(obj, function(qArgName, qArgValue){
		if (!obj.hasOwnProperty(qArgName)) {
			return;
		}
		if (idx != 0) {
			query[idx++] = "&";
		}
		query[idx++] = qArgName + "=";
		if (qArgValue.call) {
			query[idx++] = MRP.escape.uri(qArgValue.call(context));
		} else {
			query[idx++] = MRP.escape.uri(qArgValue);
		}
	});
	return query.join("");
};

/**
 * Строит url-строку пригодную для AJAX запросов или для SCRIPT транспорта
 */
MRP.createUrl = function (lego) {
	var
	i = 0,
	url = [];

	if (lego.host) {
		url[i++] = lego.protocol + "//";
		url[i++] = lego.host;
		if (lego.port && lego.port != 80) {
			url[i++] = ":" + lego.port;
		}
		if (!lego.path) {
			url[i++] = "/";
		}
	}
	if (lego.path) {
		url[i++] = "/" + lego.path;
	}
	if (lego.query) {
		url[i++] = "?" + MRP.createQuery(lego.query, this);
	}
	return url.join("");
};

/**
 * Instances cache
 * @type {Array}
 */
MRP.coll = [];

function BasicCallback (data) {
	if (MRP.isEmptyStr(this.valueCurr)) {
		this.hide();
		return;
	}

	var _this = this, filledCounter = 0;
	this.itemsReset();
	MRP.each(this.items, function (idx) {
		var
		sItem,
		sType,
		sInner;

		if ((sItem = data.items[idx])
			&& (sType = MRP.getItemPrefs(sItem.type))
			&& (sInner = sType.draw.call(_this, sItem)) !== false)
		{
			this.innerHTML = sInner;
			_this.itemsFilled[this._mrp = filledCounter++] = idx;
			MRP.show(this);
		} else {
			MRP.hide(this);
		}
	});

	if (filledCounter) {
		if (this.ondraw) {
			this.ondraw();
		}
		if (!this._firstCorrection) {
			this.correctPosition();
			this._firstCorrection = true;
		}
		this.show();
	} else {
		this.hide();
	}
}
MRP.fn.extend({
/**
 * Получаем данные по данному запросу
 * @param {String} query Строка запроса (значение поля) [Опционально]
 */
	getData: function (query, callback) {
		var
		instance = this,
		data;

		query = query || this.valueCurr;
		callback = callback || BasicCallback;

/* Проверяем, есть ли в кэше этот запрос */
		if (data = this.cacheRead(query)) {
			callback.call(this, this._data = data.response, true);
		} else {
			MRP.JSONP(MRP.createUrl.call(this, this.request), {
				callback: function () {
					instance.cacheWrite({
						hid: query,
						response: this
					});
					if (this.terms.query === instance.valueCurr) {
						callback.call(instance, instance._data = this, false);
					}
				},
				charset: this.request.charset,
				timeout: this.request.timeout
			});
		}
	},
	keys: {
		13: function () {  // ENTER
			var _this = this;
			setTimeout(function(){
				_this.hide();
			}, 200);
		},
		27: function () { // ESC
			var _this = this;
			this.hide();
			if (MRP.ua.opera) {
				setTimeout(function(){
					_this.field.value = _this.valuePrev;
				}, 10);
			} else {
				this.field.value = this.valuePrev;
			}
		},
		37: function () { // LEFT ARROW

		},
		38: function () { // UP ARROW
			if (!this._hidden) {
				if (this.itemSelectStep(-1)) {
					var
					item,
					id = this.itemsFilled[this.itemsCurr];

					if (id !== undefined) {
						item = this._data.items[id];
						MRP.getItemPrefs(item.type).select.call(this, item);
					}
				} else {
					this.field.value = this.valuePrev;
				}
			}
		},
		39: function () { // RIGHT ARROW
			if (!this._hidden) {
				this.valueExc = null;
			}
		},
		40: function () { // DOWN ARROW
			if (!this._hidden) {
				if (this.itemSelectStep(1)) {
					var
					item,
					id = this.itemsFilled[this.itemsCurr];

					if (id !== undefined) {
						item = this._data.items[id];
						MRP.getItemPrefs(item.type).select.call(this, item);
					}
				} else {
					this.field.value = this.valuePrev;
				}
			} else {
				this.getData(this.valuePrev);
			}
		}
	}
});

/* ### JSONP ### */
var JSONP_ID = 1;
MRP.JSONP = function (url, sets) {
	sets = sets || {};
	var
	timeout = sets.timeout,
	timeoutId = null,
	callback = sets.callback || null,
	callbackName = sets.callbackName || (expando + JSONP_ID++),
	callbackArgs = sets.args || [];
	if (callback) {
		W[callbackName] = function (response) {
			if (callbackArgs.length > 2) {
				callback.apply(response, callbackArgs);
			} else {
				callback.call(response, callbackArgs[0], callbackArgs[1]);
			}
			if (timeout) {
				clearTimeout(timeoutId);
			}
			if (MRP.ua.ie) {
				W[callbackName] = undefined;
			} else {
				delete W[callbackName];
			}
		};
	}
	url += [
		/(\?).*$/.test(url) ? "&" : "?",
		"callback=",
		callbackName
	].join("");
	var script = MRP.ce("script", {
		type: "text/javascript",
		charset: sets.charset,
		src: url
	});
	script.onreadystatechange = function() {
		if (this.readyState === "complete") {
			try {
				H.removeChild(script);
			} catch (e) {}
		}
	};
	script.onload = function (event) {
		if (MRP.ua.opera) {
			try {
				(new Function("return (" + (event.srcElement || event.target).innerHTML + ")"))();
			} catch (e) {}
		}
		H.removeChild(script);
	};
	setTimeout(function () {
		H.insertBefore(script, null)
	}, 0);
	if (timeout) {
		timeoutId = setTimeout(function () {
			if (script && script.parentNode) {
				H.removeChild(script);
			}
			if (callback && W[callbackName]) {
				if (MRP.ua.ie) {
					W[callbackName] = undefined;
				} else {
					delete W[callbackName];
				}
			}
		}, timeout);
	}
};

/* Добавляем функционал шаблонов */
var itemsPrefs = {};
MRP.getItemPrefs = function (name) {
	return itemsPrefs[name] || null;
};
MRP.setItemPrefs = function (name, prefs) {
	itemsPrefs[name] = MRP.extend(prefs, {
		draw: function (item) {
			return item.text;
		},
		enter: function () {

		},
		select: function (item) {
			this.valueExc = this.field.value = item.text;
		}
	});
	return this;
};

/* Удаленный конструктор настроек */
MRP.remote = function (url, initCallback) {
	this.build = function (sets) {
		MRP.call(this, sets);
		if (initCallback) {
			initCallback.call(this);
		} else {
			this.init();
		}
	};
	MRP.JSONP(url);
};
MRP.remote.prototype = MRP.fn;

return MRP;
})();
/* END MRP part */

GO.win.GO = GO;
GO.win.onAirWow = GO.onAir;
GO.win.MRP = GO.MRP;
})();

/* go_harmony End */

