/*
 * 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")}})})();


var separator = '-'; // string que separa las cosas que se usan como id y valor
var counter = 1;
var z_actual = 100;
var lastRadio = "";

// plugin
jQuery.fn.jLook = function(options){
  var self = this;
  $(this).addClass('jLookForm');
  this.each(function(){
    var actualForm = this;



   // checkbox/s
    $('input:checkbox', this).each(function(){
      id = $(this).attr("name");
      if(id)
        id = id.replace('[]','');

      var checked = "";
      var value ="";
      var disabled = "";

      if($(this).attr("disabled"))
        disabled = "jLookCheckbox_disabled";

      if($(this).attr("checked")){
        checked = "jLookCheckbox_checked";
        if($(this).attr('value'))
          value = $(this).attr('value');
      }
      $(this).before('<a href="javascript:void(0)" id="'+id+ separator + $(this).attr("value")+'" class="jLookCheckbox ' + checked + ' ' + disabled + '"></a>').css('display','none');
      // necesary hidden fields
    });
    // click event
    $('.jLookCheckbox').not(jQuery('.jLookCheckbox_disabled')).bind('click', checkboxClick);






  });
}

checkboxClick = function(target){
  var id = $(this).attr("id");
  if (id.match(separator+separator))
    var separatorPos = id.lastIndexOf(separator-1);
  else
    var separatorPos = id.lastIndexOf(separator);
  var name = id.substring(0,separatorPos);
  var checkbox = $(this).next("input[name*='" + name + "']");
  if(checkbox.attr('checked')){
          $(this).removeClass('jLookCheckbox_checked');
          checkbox.removeAttr('checked');
  }else{
          $(this).addClass("jLookCheckbox_checked");
          checkbox.attr('checked','true');
  }
  return false;
}


selectClick = function(){
  z_actual = z_actual + 10;
  wrapperId = $(this).parents('.jLookSelectWrapper').attr('id');
  if($('#' + wrapperId).is('.jLookSelectOpened'))
  {
    $('#' + wrapperId).removeClass('jLookSelectOpened');
    $('ul', $('#' + wrapperId)).hide('fast', function()
    {
      $('.jLookSelectWrapper').each(function(){
        if($(this).attr('id') != wrapperId){
          $(this).css('position', 'relative');
        }
      });
    });
  }
  else
  {
    $('.jLookSelectWrapper').each(function(){
      if($(this).attr('id') != wrapperId){
        $(this).removeClass('jLookSelectOpened').find('ul').hide();
      }
    });
    $('#' + wrapperId).addClass('jLookSelectOpened');
    $('ul', $('#' + wrapperId)).show();
  }

  return false;
};

optionClick = function(){
  var id = $(this).attr("id");
  var separatorPos = id.lastIndexOf(separator);
  if(separator == id.charAt(separatorPos-1))
  {
    var value = id.substring(separatorPos,id.length);
    var name = id.substring(0,separatorPos-1);
  }
  else
  {
    var value = id.substring(separatorPos+1,id.length);
    var name = id.substring(0,separatorPos);
  }
  var wrapperId = name + '_wrapper';
  $('#' + name).attr('value', value);
  $('div', $('#' + name + '_wrapper .jLookSelectHeader')).html($(this).html());
  $('#' + wrapperId).removeClass('jLookSelectOpened');
  $('ul', $('#' + wrapperId)).hide('fast', function(){
    $('.jLookSelectWrapper').each(function(){
      if($(this).attr('id') != wrapperId){
        $(this).css('position', 'relative');
      }
    });
  });
  return false;
};

radioClick = function(){
  var id = $(this).attr("id");
  var separatorPos = id.lastIndexOf(separator);
  if(separator == id.charAt(separatorPos-1))
  {
    var value = id.substring(separatorPos,id.length);
    var name = id.substring(0,separatorPos-1);
  }
  else
  {
    var value = id.substring(separatorPos+1,id.length);
    var name = id.substring(0,separatorPos);
  }
  actualValue = $('#' + name).attr("value");
  if (!actualValue)
    actualValue = "";
  if( actualValue != value){
    // quito la clase del que estaba antes seleccionado
    $("a[id*='" + name + separator + actualValue + "']").removeClass('jLookRadio_checked');
    // actualizo valor
    $('#' + name).attr("value", value);
    $(this).addClass('jLookRadio_checked');
  }
  return false;
}

function inputFileMouseMove (e)
{
  if (typeof(e) == 'undefined') e = window.event;
  if (typeof e.pageY == 'undefined' &&  typeof e.clientX == 'number' && document.documentElement)
  {
    e.pageX = e.clientX + document.documentElement.scrollLeft;
    e.pageY = e.clientY + document.documentElement.scrollTop;
  };

  var ox = oy = 0;
  var elem = this;
  iFile = elem.iFile;

  if (elem.offsetParent)
  {
    ox = elem.offsetLeft;
    oy = elem.offsetTop;
    while (elem = elem.offsetParent)
    {
      ox += elem.offsetLeft;
      oy += elem.offsetTop;
    };
  };

  var x = e.pageX - ox;
  var y = e.pageY - oy;
  var w = iFile.offsetWidth;
  var h = iFile.offsetHeight;

  iFile.style.top        = y - (h / 2)  + 'px';
  iFile.style.left    = x - (w - 30) + 'px';
};

function inputFileChanges()
{
  file = this.value;
  reWin = /.*\\(.*)/;
  var fileTitle = file.replace(reWin, "$1");
  reUnix = /.*\/(.*)/;
  fileTitle = fileTitle.replace(reUnix, "$1");

  var RegExExt =/.*\.(.*)/;
  var ext = fileTitle.replace(RegExExt, "$1");

  var pos;
  var input = jQuery(this.parentNode).find(".jLookInputWrapper input");
  input.attr('value',fileTitle);

};

jQuery('body').click(function(event){
  if(!event) event = window.event;
  var target =  event.target;
  if (jQuery(target).parents('.jLookSelectWrapper')[0] || jQuery(target).hasClass("jLookSelectWrapper"))
    return;
  jQuery('.jLookSelectWrapper').removeClass('jLookSelectOpened').find('ul').hide();
});


/**
 * jQuery lightBox plugin
 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
 * and adapted to me for use like a plugin from jQuery.
 * @name jquery-lightbox-0.5.js
 * @author Leandro Vieira Pinho - http://leandrovieira.com
 * @version 0.5
 * @date April 11, 2008
 * @category jQuery plugin
 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
 * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US
 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
 */

// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias
(function($) {
    /**
     * $ is an alias to jQuery object
     *
     */
    $.fn.lightBox = function(settings) {
        // Settings to configure the jQuery lightBox plugin how you like
        settings = jQuery.extend({
            // Configuration related to overlay
            overlayBgColor:         '#000',        // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color.
            overlayOpacity:            0.8,        // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9
            // Configuration related to navigation
            fixedNavigation:        false,        // (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface.
            // Configuration related to images
            imageLoading:            'images/lightbox-ico-loading.gif',        // (string) Path and the name of the loading icon
            imageBtnPrev:            'images/lightbox-btn-prev.gif',            // (string) Path and the name of the prev button image
            imageBtnNext:            'images/lightbox-btn-next.gif',            // (string) Path and the name of the next button image
            imageBtnClose:            'images/lightbox-btn-close.gif',        // (string) Path and the name of the close btn
            imageBlank:                'images/lightbox-blank.gif',            // (string) Path and the name of a blank image (one pixel)
            // Configuration related to container image box
            containerBorderSize:    10,            // (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value
            containerResizeSpeed:    400,        // (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default.
            // Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts.
            txtImage:                'Image',    // (string) Specify text "Image"
            txtOf:                    'of',        // (string) Specify text "of"
            // Configuration related to keyboard navigation
            keyToClose:                'c',        // (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to.
            keyToPrev:                'p',        // (string) (p = previous) Letter to show the previous image
            keyToNext:                'n',        // (string) (n = next) Letter to show the next image.
            // Donґt alter these variables in any way
            imageArray:                [],
            activeImage:            0
        },settings);
        // Caching the jQuery object with all elements matched
        var jQueryMatchedObj = this; // This, in this context, refer to jQuery object
        /**
         * Initializing the plugin calling the start function
         *
         * @return boolean false
         */
        function _initialize() {
            _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked
            return false; // Avoid the browser following the link
        }
        /**
         * Start the jQuery lightBox plugin
         *
         * @param object objClicked The object (link) whick the user have clicked
         * @param object jQueryMatchedObj The jQuery object with all elements matched
         */
        function _start(objClicked,jQueryMatchedObj) {
            // Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay.
            $('embed, object, select').css({ 'visibility' : 'hidden' });
            // Call the function to create the markup structure; style some elements; assign events in some elements.
            _set_interface();
            // Unset total images in imageArray
            settings.imageArray.length = 0;
            // Unset image active information
            settings.activeImage = 0;
            // We have an image set? Or just an image? Letґs see it.
            if ( jQueryMatchedObj.length == 1 ) {
                settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('gallery_title')));
            } else {
                // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references        
                for ( var i = 0; i < jQueryMatchedObj.length; i++ ) {
                    settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('gallery_title')));
                }
            }
            while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) {
                settings.activeImage++;
            }
            // Call the function that prepares image exibition
            _set_image_to_view();
        }
        /**
         * Create the jQuery lightBox plugin interface
         *
         * The HTML markup will be like that:
            <div id="jquery-overlay"></div>
            <div id="jquery-lightbox">
                <div id="lightbox-container-image-box">
                    <div id="lightbox-container-image">
                        <img src="../fotos/XX.jpg" id="lightbox-image">
                        <div id="lightbox-nav">
                            <a href="#" id="lightbox-nav-btnPrev"></a>
                            <a href="#" id="lightbox-nav-btnNext"></a>
                        </div>
                        <div id="lightbox-loading">
                            <a href="#" id="lightbox-loading-link">
                                <img src="../images/lightbox-ico-loading.gif">
                            </a>
                        </div>
                    </div>
                </div>
                <div id="lightbox-container-image-data-box">
                    <div id="lightbox-container-image-data">
                        <div id="lightbox-image-details">
                            <span id="lightbox-image-details-caption"></span>
                            <span id="lightbox-image-details-currentNumber"></span>
                        </div>
                        <div id="lightbox-secNav">
                            <a href="#" id="lightbox-secNav-btnClose">
                                <img src="../images/lightbox-btn-close.gif">
                            </a>
                        </div>
                    </div>
                </div>
            </div>
         *
         */
        function _set_interface() {
            // Apply the HTML markup into body tag
            $('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="' + settings.imageLoading + '"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="' + settings.imageBtnClose + '"></a></div></div></div></div>');    
            // Get page sizes
            var arrPageSizes = ___getPageSize();
            // Style overlay and show it
            $('#jquery-overlay').css({
                backgroundColor:    settings.overlayBgColor,
                opacity:            settings.overlayOpacity,
                width:                arrPageSizes[0],
                height:                arrPageSizes[1]
            }).fadeIn();
            // Get page scroll
            var arrPageScroll = ___getPageScroll();
            // Calculate top and left offset for the jquery-lightbox div object and show it
            $('#jquery-lightbox').css({
                top:    arrPageScroll[1] + (arrPageSizes[3] / 10),
                left:    arrPageScroll[0]
            }).show();
            // Assigning click events in elements to close overlay
            $('#jquery-overlay,#jquery-lightbox').click(function() {
                _finish();                                    
            });
            // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects
            $('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() {
                _finish();
                return false;
            });
            // If window was resized, calculate the new overlay dimensions
            $(window).resize(function() {
                // Get page sizes
                var arrPageSizes = ___getPageSize();
                // Style overlay and show it
                $('#jquery-overlay').css({
                    width:        arrPageSizes[0],
                    height:        arrPageSizes[1]
                });
                // Get page scroll
                var arrPageScroll = ___getPageScroll();
                // Calculate top and left offset for the jquery-lightbox div object and show it
                $('#jquery-lightbox').css({
                    top:    arrPageScroll[1] + (arrPageSizes[3] / 10),
                    left:    arrPageScroll[0]
                });
            });
        }
        /**
         * Prepares image exibition; doing a imageґs preloader to calculate itґs size
         *
         */
        function _set_image_to_view() { // show the loading
            // Show the loading
            $('#lightbox-loading').show();
            if ( settings.fixedNavigation ) {
                $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();
            } else {
                // Hide some elements
                $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();
            }
            // Image preload process
            var objImagePreloader = new Image();
            objImagePreloader.onload = function() {
                $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);
                // Perfomance an effect in the image container resizing it
                _resize_container_image_box(objImagePreloader.width,objImagePreloader.height);
                //    clear onLoad, IE behaves irratically with animated gifs otherwise
                objImagePreloader.onload=function(){};
            };
            objImagePreloader.src = settings.imageArray[settings.activeImage][0];
        };
        /**
         * Perfomance an effect in the image container resizing it
         *
         * @param integer intImageWidth The imageґs width that will be showed
         * @param integer intImageHeight The imageґs height that will be showed
         */
        function _resize_container_image_box(intImageWidth,intImageHeight) {
            // Get current width and height
            var intCurrentWidth = $('#lightbox-container-image-box').width();
            var intCurrentHeight = $('#lightbox-container-image-box').height();
            // Get the width and height of the selected image plus the padding
            var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the imageґs width and the left and right padding value
            var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the imageґs height and the left and right padding value
            // Diferences
            var intDiffW = intCurrentWidth - intWidth;
            var intDiffH = intCurrentHeight - intHeight;
            // Perfomance the effect
            $('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); });
            if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) {
                if ( $.browser.msie ) {
                    ___pause(250);
                } else {
                    ___pause(100);    
                }
            } 
            $('#lightbox-container-image-data-box').css({ width: intImageWidth });
            $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) });
        };
        /**
         * Show the prepared image
         *
         */
        function _show_image() {
            $('#lightbox-loading').hide();
            $('#lightbox-image').fadeIn(function() {
                _show_image_data();
                _set_navigation();
            });
            _preload_neighbor_images();
        };
        /**
         * Show the image information
         *
         */
        function _show_image_data() {
            $('#lightbox-container-image-data-box').slideDown('fast');
            $('#lightbox-image-details-caption').hide();
            if ( settings.imageArray[settings.activeImage][1] ) {
                $('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();
            }
            // If we have a image set, display 'Image X of X'
            if ( settings.imageArray.length > 1 ) {
                $('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show();
            }        
        }
        /**
         * Display the button navigations
         *
         */
        function _set_navigation() {
            $('#lightbox-nav').show();

            // Instead to define this configuration in CSS file, we define here. And itґs need to IE. Just.
            $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });
            
            // Show the prev button, if not the first image in set
            if ( settings.activeImage != 0 ) {
                if ( settings.fixedNavigation ) {
                    $('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' })
                        .unbind()
                        .bind('click',function() {
                            settings.activeImage = settings.activeImage - 1;
                            _set_image_to_view();
                            return false;
                        });
                } else {
                    // Show the images button for Next buttons
                    $('#lightbox-nav-btnPrev').unbind().hover(function() {
                        $(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' });
                    },function() {
                        $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });
                    }).show().bind('click',function() {
                        settings.activeImage = settings.activeImage - 1;
                        _set_image_to_view();
                        return false;
                    });
                }
            }
            
            // Show the next button, if not the last image in set
            if ( settings.activeImage != ( settings.imageArray.length -1 ) ) {
                if ( settings.fixedNavigation ) {
                    $('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' })
                        .unbind()
                        .bind('click',function() {
                            settings.activeImage = settings.activeImage + 1;
                            _set_image_to_view();
                            return false;
                        });
                } else {
                    // Show the images button for Next buttons
                    $('#lightbox-nav-btnNext').unbind().hover(function() {
                        $(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' });
                    },function() {
                        $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });
                    }).show().bind('click',function() {
                        settings.activeImage = settings.activeImage + 1;
                        _set_image_to_view();
                        return false;
                    });
                }
            }
            // Enable keyboard navigation
            _enable_keyboard_navigation();
        }
        /**
         * Enable a support to keyboard navigation
         *
         */
        function _enable_keyboard_navigation() {
            $(document).keydown(function(objEvent) {
                _keyboard_action(objEvent);
            });
        }
        /**
         * Disable the support to keyboard navigation
         *
         */
        function _disable_keyboard_navigation() {
            $(document).unbind();
        }
        /**
         * Perform the keyboard actions
         *
         */
        function _keyboard_action(objEvent) {
            // To ie
            if ( objEvent == null ) {
                keycode = event.keyCode;
                escapeKey = 27;
            // To Mozilla
            } else {
                keycode = objEvent.keyCode;
                escapeKey = objEvent.DOM_VK_ESCAPE;
            }
            // Get the key in lower case form
            key = String.fromCharCode(keycode).toLowerCase();
            // Verify the keys to close the ligthBox
            if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) {
                _finish();
            }
            // Verify the key to show the previous image
            if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) {
                // If weґre not showing the first image, call the previous
                if ( settings.activeImage != 0 ) {
                    settings.activeImage = settings.activeImage - 1;
                    _set_image_to_view();
                    _disable_keyboard_navigation();
                }
            }
            // Verify the key to show the next image
            if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) {
                // If weґre not showing the last image, call the next
                if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) {
                    settings.activeImage = settings.activeImage + 1;
                    _set_image_to_view();
                    _disable_keyboard_navigation();
                }
            }
        }
        /**
         * Preload prev and next images being showed
         *
         */
        function _preload_neighbor_images() {
            if ( (settings.imageArray.length -1) > settings.activeImage ) {
                objNext = new Image();
                objNext.src = settings.imageArray[settings.activeImage + 1][0];
            }
            if ( settings.activeImage > 0 ) {
                objPrev = new Image();
                objPrev.src = settings.imageArray[settings.activeImage -1][0];
            }
        }
        /**
         * Remove jQuery lightBox plugin HTML markup
         *
         */
        function _finish() {
            $('#jquery-lightbox').remove();
            $('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); });
            // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay.
            $('embed, object, select').css({ 'visibility' : 'visible' });
        }
        /**
         / THIRD FUNCTION
         * getPageSize() by quirksmode.com
         *
         * @return Array Return an array with page width, height and window width, height
         */
        function ___getPageSize() {
            var xScroll, yScroll;
            if (window.innerHeight && window.scrollMaxY) {    
                xScroll = window.innerWidth + window.scrollMaxX;
                yScroll = window.innerHeight + window.scrollMaxY;
            } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
                xScroll = document.body.scrollWidth;
                yScroll = document.body.scrollHeight;
            } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
                xScroll = document.body.offsetWidth;
                yScroll = document.body.offsetHeight;
            }
            var windowWidth, windowHeight;
            if (self.innerHeight) {    // all except Explorer
                if(document.documentElement.clientWidth){
                    windowWidth = document.documentElement.clientWidth; 
                } else {
                    windowWidth = self.innerWidth;
                }
                windowHeight = self.innerHeight;
            } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
            } else if (document.body) { // other Explorers
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
            }    
            // for small pages with total height less then height of the viewport
            if(yScroll < windowHeight){
                pageHeight = windowHeight;
            } else { 
                pageHeight = yScroll;
            }
            // for small pages with total width less then width of the viewport
            if(xScroll < windowWidth){    
                pageWidth = xScroll;        
            } else {
                pageWidth = windowWidth;
            }
            arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
            return arrayPageSize;
        };
        /**
         / THIRD FUNCTION
         * getPageScroll() by quirksmode.com
         *
         * @return Array Return an array with x,y page scroll values.
         */
        function ___getPageScroll() {
            var xScroll, yScroll;
            if (self.pageYOffset) {
                yScroll = self.pageYOffset;
                xScroll = self.pageXOffset;
            } else if (document.documentElement && document.documentElement.scrollTop) {     // Explorer 6 Strict
                yScroll = document.documentElement.scrollTop;
                xScroll = document.documentElement.scrollLeft;
            } else if (document.body) {// all other Explorers
                yScroll = document.body.scrollTop;
                xScroll = document.body.scrollLeft;    
            }
            arrayPageScroll = new Array(xScroll,yScroll);
            return arrayPageScroll;
        };
         /**
          * Stop the code execution from a escified time in milisecond
          *
          */
         function ___pause(ms) {
            var date = new Date(); 
            curDate = null;
            do { var curDate = new Date(); }
            while ( curDate - date < ms);
         };
        // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once
        return this.unbind('click').click(_initialize);
    };
})(jQuery); // Call and execute the function immediately passing the jQuery object



function is_array(input){
    return typeof(input)=='object'&&(input instanceof Array);
}

function getOffset(elem) {
    if (elem.getBoundingClientRect) {
        // "правильный" вариант
        return getOffsetRect(elem)
    } else {
        // пусть работает хоть как-то
        return getOffsetSum(elem)
    }
}

function getOffsetSum(elem) {
    var top=0, left=0
    while(elem) {
        top = top + parseInt(elem.offsetTop)
        left = left + parseInt(elem.offsetLeft)
        elem = elem.offsetParent
    }

    return {top: top, left: left}
}

function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()

    // (2)
    var body = document.body
    var docElem = document.documentElement

    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft

    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0

    // (5)
    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft

    return { top: Math.round(top), left: Math.round(left) }
}

jQuery(document).ready(function(){
    //SetDefaultValueByArray();
    //$('.jlook_form').jLook();
    
    $('#assembly_checkbox_first').live("click", function (){
         var b = $(this).is(":checked");
         check_box_checked(b, this);
    });
    $('#assembly_checkbox_second').live("click", function (){
         var b = $(this).is(":checked");
         check_box_checked(b, this);
    });
    
    $('#assembly_checkbox_first-on').click(function(){
        var b = ($(this).attr('class').search('jLookCheckbox_checked') > 0);
        if (b) {
            $(this).next().attr("checked", "checked");
        } else {
            $(this).next().removeAttr("checked");
        }
        check_box_checked(b, this);
    });
    $('#assembly_checkbox_second-on').click(function(){
        var b = ($(this).attr('class').search('jLookCheckbox_checked') > 0);
        if (b) {
            $(this).next().attr("checked", "checked");
        } else {
            $(this).next().removeAttr("checked");
        }
        check_box_checked(b, this);
    });
    
    
    
    $('#assembly_checkbox_first-on').live('click', function(){
        var b = ($(this).attr('class').search('jLookCheckbox_checked') > 0);
        if (b) {
            $(this).next().attr("checked", "checked");
        } else {
            $(this).next().removeAttr("checked");
        }
        check_box_checked(b, this);
    });
    $('#assembly_checkbox_second-on').live('click', function(){
        var b = ($(this).attr('class').search('jLookCheckbox_checked') > 0);
        if (b) {
            $(this).next().attr("checked", "checked");
        } else {
            $(this).next().removeAttr("checked");
        }
        check_box_checked(b, this);
    });
    
    var objSearch2 = document.getElementById('');
    $('#title-search-input').focus(function(){
        if($(this).val() == 'Что ищем?') $(this).val('');
    });
    $('#title-search-input').blur(function(){
        if($(this).val() == '') $(this).val('Что ищем?');
    });


    if (($("body").width()>1100) && ($("body").width()<1400)){

        $("#wrapper").addClass("small_wrap")
    }





    if ($('body').width()>1003){
        $(".basket").css("margin-left",-$("#header").width()/2)

        $(".right_basket").css("margin-right",-$("#header").width()/2);
        if (($('body').width()>1280) || ($("#wrapper").hasClass("small_wrap"))) {$(".basket").css("margin-left",-$("#header").width()/2 - 98); $(".right_basket").css("margin-right",-($("#header").width()/2)-98)} else{}
    } else {$("#wrapper").addClass("small_body");$(".right_basket").css("margin","0");$(".basket").css("margin","0")}


    $(window).resize(function(){if ($('body').width()>1003){$(".basket").css("margin-left",-$("#header").width()/2);$("#wrapper").removeClass("small_body");

            $(".right_basket").css("margin-right",-$("#header").width()/2);

            if (($('body').width()>1280) || ($("#wrapper").hasClass("small_wrap"))) {$(".basket").css("margin-left",-$("#header").width()/2 - 98); $(".right_basket").css("margin-right",-($("#header").width()/2)-98)} else{}

        } else {$("#wrapper").addClass("small_body");$(".right_basket").css("margin","0");$(".basket").css("margin","0")}})



    function slideGallery(gallery_id, size_gallery, width) {
        if ($("#" + gallery_id).length==1) {
            var different = 0;
            var slide_minus = 0;
            var position = 0;
            var count = $("#" + gallery_id).find("li").length;
            if (count > size_gallery) {
                different = count - size_gallery;
            }
            $("#" + gallery_id + " " + ".left_slide").css('visibility', 'hidden');
            $("#" + gallery_id + " " + ".left_slide").click(function() {
                $("#" + gallery_id + " " + ".right_slide").css('visibility', 'visible');
                if (slide_minus < 0) {
                    $("#" + gallery_id).find("ul").animate({left:position+width*size_gallery}, "fast");
                    position=position+width*size_gallery;
                    slide_minus=slide_minus+size_gallery;
                    different=different+size_gallery;
                } else { }
                if (slide_minus >= 0) {
                    $("#" + gallery_id + " " + ".left_slide").css('visibility', 'hidden');
                }
                return false;
            })
            if (different <= 0) {
                $("#" + gallery_id + " " + ".right_slide").css('visibility', 'hidden');
            }
            $("#" + gallery_id + " " + ".right_slide").click(function()
            {
                $("#" + gallery_id + " " + ".left_slide").css('visibility', 'visible');
                if (different > 0) {
                    $("#" + gallery_id).find("ul").animate({left:position-width*size_gallery}, "fast");
                    position = position - width*size_gallery;
                    different = different - size_gallery;
                    slide_minus = slide_minus - size_gallery;
                } else {}
                if (different <= 0) {
                    $("#" + gallery_id + " " + ".right_slide").css('visibility', 'hidden');
                }
                return false;
            })


        }
        else
            {}
    }

    slideGallery("second_gallery", 3,285)

    slideGallery("first_gallery", 3,191)

    slideGallery("third_gallery", 4,172)

    slideGallery("four_gallery",2,343);
    
    slideGallery("six_gallery",1,462);

    slideGallery("additional_photo",1,100);

    
    $(function() {
        if ( $('#four_gallery').length>0){
            $('#four_gallery .wrap_list a').lightBox(
                {
                    imageLoading:  '/bitrix/templates/aniart/images/lightbox-ico-loading.gif',
                    imageBtnClose: '/bitrix/templates/aniart/images/lightbox-btn-close.gif',
                    imageBtnPrev:  '/bitrix/templates/aniart/images/lightbox-btn-prev.gif',
                    imageBtnNext:  '/bitrix/templates/aniart/images/lightbox-btn-next.gif',                    
                }
            )};
    });

    $(".icq_block").hover(function(){
        $(this).find("p").css("display","block")
    },function(){
        $(this).find("p").css("display","none")
    })


    /*$(".wrap_login div").hover(function(){
        $(".login_form").css("display","block")
        $(".action_block p").css("width","100px")
    },function(){
        $(".login_form").css("display","none")
        $(".action_block p").css("width","auto")
    }) */
    /*$(".wrap_login div").click(function(){
        $(".login_form").slideDown(1);
        return false;
    })*/



    $(".character").hover(function(){
        $(this).parent().addClass("active_li")
        $(this).addClass("character_active")
    },function(){
        $(this).removeClass("character_active")
        $(this).parent().removeClass("active_li")
    })


    $(".inside_menu").each(function(){
        $(this).css("width",$(this).find(".column").length*125)
        $(this).find(".sep_div").css("height",$(this).height())
    })

    $(".catalog_list td").hover(function(){
        $(this).find(".inside_menu").css("display","block");
        $("#header").addClass("active_w");

    },function(){
        $(this).find(".inside_menu").css("display","none")
        $("#header").removeClass("active_w");
    })

    $(".as_ch a").click(function(){
        if ($(this).hasClass("active")){
            $(".as_ch a.active").removeClass("active");
            $(".assembly").css("display","none");
            $(".front_catalog li").removeClass("active_li1");
        }
        else {
            $(this).addClass("active");
            $(this).parent().parent().parent().find("." + $(this).attr("href")).slideDown(300)
            $(this).parent().parent().parent().addClass("active_li1")}
        return false;
    })

    $(".close").click(function(){
        $(".as_ch a.active").removeClass("active");
        $(".assembly").css("display","none");
        $(".front_catalog li").removeClass("active_li1");
        return false;
    })




    $(".tabs a").click(function(){
        if ($(this).attr("href") == "all_view") {
            $(".tabs .active").removeClass("active")
            $(".tabs_block").css("display","block")
            $(this).parent().addClass("active")
            return false
        }

        if ($(this).parent().hasClass("active")) {
            return false
        } else {
            $(".tabs .active").removeClass("active")
            $(".tabs_block").css("display","none")
            $(this).parent().addClass("active")
            $("#"+ $(this).attr("href")).css("display","block")
            return false;
        }
    })


    $(".type_pay p input").focus(function(){
        if ($(this).attr("value")==$(this).attr("title"))
            $(this).attr("value","")
    })


    $(".type_pay p input").blur(function(){
        if ($(this).attr("value")=="")
            $(this).attr("value",$(this).attr("title"))})





    $(".ajax_content_block dt").mouseover(function(){
        $(this).parent().find("dd div").css("display","block");$(this).parent().addClass("active");
    }).mousemove(function(kmouse){
        $(this).parent().find("dd div").css({left:kmouse.pageX+20-getOffsetSum(this).left, top:kmouse.pageY+25-getOffsetSum(this).top});
    }).mouseout(function(){
        $(this).parent().find("dd div").css("display","none");$(this).parent().removeClass("active");
    })


    $(".reg_link").click(function(){$(".account_form").css("display","block");$(this).addClass("active")})
    $(".account_form .close_enter").click(function(){$(".account_form").css("display","none");$(".reg_link").removeClass("active");return false})

    $(".auth_link").click(function(){
        $(".login_form").css("display","block");
        $(this).addClass("active")
    });
    $(".login_form .close_enter").click(function(){
        $(".login_form").css("display","none");
        $(".auth_link").removeClass("active");
        return false
    });
    
    
    $(".phone_block").click(function(){
        $(this).toggleClass("active_phone")
        $(".call_form").slideToggle(1);
        return false;
    })

    $(".call_form .close_enter").click(function(){$(".call_form").css("display","none");$(".active_phone").removeClass("active_phone");return false})

    $(".do_order").click(function(){$(".pred_order_form").slideToggle(1);return false})

    $(".pred_order_form .close_enter").click(function(){$(".pred_order_form").css("display","none");return false})

     $(".pred_order_form .input").focus(function(){
        if ($(this).attr("value")==$(this).attr("title"))
        $(this).attr("value","")
    })


    $(".pred_order_form .input").blur(function(){
        if ($(this).attr("value")=="")
            $(this).attr("value",$(this).attr("title"));
    })

})

function ReloadBasketButtons() {
    $('#basket_block').css('display', 'block');
    $.ajax({
        type: "POST",
        url: "/ajax/reload_basket_buttons.php",
        data: {
            'ok': "ok"
        },
        error: function (){
            alert('Ошибка соединения');
        },
        success: function(data) {
            $('.basket').remove();
            $('.shadow').after(data);
            //ShowShadow();
            //ShowBasket();      
            if ($('body').width()>1003){
                $(".basket").css("margin-left",-$("#header").width()/2)

                $(".right_basket").css("margin-right",-$("#header").width()/2);
                if (($('body').width()>1280) || ($("#wrapper").hasClass("small_wrap"))) {$(".basket").css("margin-left",-$("#header").width()/2 - 98); $(".right_basket").css("margin-right",-($("#header").width()/2)-98)} else{}
            } else {$("#wrapper").addClass("small_body");$(".right_basket").css("margin","0");$(".basket").css("margin","0")}            
        }
    });
}

function place2cart(PROD_ID, PROD_NAME, PRICE_ID, PRICE, CURRENCY){
    if (!is_array(PROD_ID)) PROD_ID = [PROD_ID]; 
    if (!is_array(PROD_NAME)) PROD_NAME = [PROD_NAME]; 
    if (!is_array(PRICE_ID)) PRICE_ID = [PRICE_ID]; 
    if (!is_array(PRICE)) PRICE = [PRICE]; 
    if (!is_array(CURRENCY)) CURRENCY = [CURRENCY]; 

    $.ajax({
        type: "POST",
        url: "/ajax/add_to_basket.php",
        data: {
            'PROD_ID[]': PROD_ID,
            'PROD_NAME[]': PROD_NAME,
            'PRICE_ID[]':PRICE_ID,
            'PRICE[]':PRICE,
            'CURRENCY[]':CURRENCY,
        },
        error: function (){
            alert('Ошибка соединения');
        },
        success: function(data) {
            ReloadBasketButtons();
            ShowShadow(ShowBasket);
        }
    });
    return false;
}

function add_assembly2basket(elem) {
    return ajax_update(
        //"#ajax_assembly_goods", 
        "#assebbly_goods_result",
        '/ajax/add_assembly2basket.php?' + $(elem).parents('form').serialize(),
        '',
        function() {
            $('.linc_show_assembly').removeClass('active'); 
            $('.assembly').css('display', 'none'); 
            ReloadBasketButtons();
            ShowShadow(ShowBasket);
        }
    );
}

function place2preorder(id){
    var form_block = '#preorder_form_' + id;
    var result_block = '#preorder_result_' + id;
    var form = $(form_block);
    return ajax_update(
        result_block, 
        '/ajax/add_to_preorder.php?' + form.serialize(),
        '',
        function(){
            $(form_block).css('display', 'none'); 
            return false;
        }
    );
    
}

var IsShowBasket = false;
$(document).ready(function(){
    $('.close').live('click', function() {
        HideShadow();
        HideBasket();
        return false;
    });
    $('.con_b').live('click', function() {
        HideShadow();
        HideBasket();
        return false;
    });
    $('.basket').live('click', function() {
        if (IsShowBasket) {
            HideShadow();
            HideBasket();
        } else {
            ShowShadow(ShowBasket);
            //;
        }
    });    
    $('.shadow').live('click', function() {
        HideShadow();
        HideBasket();
    });
});

function ShowShadow(func) { 
    $('.shadow').css('opacity', '0');
    $('.shadow').css('display', 'block');
    $('.shadow').animate({
        opacity: 0.85,
    }, 300, function() {
        func.call();
    });
}

function HideShadow() {
    $('.shadow').animate({
        opacity: 0,
    }, 300, function() {
        $('.shadow').css('display', 'none');
    });
}

function ShowBasket() {
    IsShowBasket = true;
    ajax_update('#ajax_basket_block', '/ajax/reload_basket.php', '');
}

function HideBasket() {
    IsShowBasket = false;
    $('#basket_form').css('display', 'none');
    $('#ajax_basket_block').css('top', -300);
}

function openInNewWindow(href, mode) {        
    var url;
    switch (mode){
        case 'twitter':
            url = 'http://twitter.com/share?';
        break;
        case 'facebook':
            url = 'http://www.facebook.com/share.php?u=';
        break;
        case 'livejournal':
            url = 'http://www.livejournal.com/update.bml?subject='
        break;
        case 'googlebuzz':
            url = 'http://www.google.com/reader/link?url=';
        break;
        case 'vkontakte':
            url = 'http://vkontakte.ru/share.php?url=';
        break;
        case 'linkedin':
            url = 'http://www.linkedin.com/shareArticle?mini=true&url=';
        break;
    }    

    var newWindow = window.open(url+href, '_blank');
    newWindow.focus();
    return false;
}



function check_box_checked(b, elem) {
    if (b) {
        $(elem).parent().parent().find('dt').find('img').removeClass('no_active_img');
    } else {
        $(elem).parent().parent().find('dt').find('img').addClass('no_active_img');
    }
    var cnt = $('.assembly_checkbox:checked').length;
    var is_main_active = true;
    if (cnt == 0) {
        is_main_active = false;
        $('#main_goods img').addClass('no_active_img');
        $('.assembly2basket').css('display', 'none');
    } else {
        $('#main_goods img').removeClass('no_active_img');
        $('.assembly2basket').css('display', 'block');
    }
    
    
    var main_price = $('.MAIN_PRODUCT_PRICE_0').val()*1;
    var first_price = $('.FIRST_PRODUCT_PRICE_0').val()*1;
    var second_price = $('.SECOND_PRODUCT_PRICE_0').val()*1;
    var main_price_with_val = $('.MAIN_PRODUCT_PRICE_'+cnt).val()*1;
    var first_price_with_val = $('.FIRST_PRODUCT_PRICE_'+cnt).val()*1;
    var second_price_with_val = $('.SECOND_PRODUCT_PRICE_'+cnt).val()*1;

    var bHeveUsd = ($('.MAIN_PRODUCT_PRICE_'+cnt+'_USD').length > 0);
    var usd_main_price_with_val = 0;
    var usd_first_price_with_val = 0;
    var usd_second_price_with_val = 0;
    var usd_main_price = 0;
    var usd_first_price = 0;
    var usd_second_price = 0;
    if (bHeveUsd) {
        usd_main_price = $('.MAIN_PRODUCT_PRICE_0_USD').val()*1;
        usd_first_price = $('.FIRST_PRODUCT_PRICE_0_USD').val()*1;
        usd_second_price = $('.SECOND_PRODUCT_PRICE_0_USD').val()*1;

        usd_main_price_with_val = $('.MAIN_PRODUCT_PRICE_'+cnt+'_USD').val()*1;
        usd_first_price_with_val = $('.FIRST_PRODUCT_PRICE_'+cnt+'_USD').val()*1;
        usd_second_price_with_val = $('.SECOND_PRODUCT_PRICE_'+cnt+'_USD').val()*1;
    }

    var is_first_active = $('#assembly_checkbox_first').is(':checked');
    var is_second_active = $('#assembly_checkbox_second').is(':checked');
//    var is_first_active = ($('#assembly_checkbox_first-on').attr('class').search('jLookCheckbox_checked') > 0);
//    var is_second_active = ($('#assembly_checkbox_second-on').attr('class').search('jLookCheckbox_checked') > 0);
    $('#main_product .price_with_discont').html(main_price_with_val + ' грн');
    $('#first_product .price_with_discont').html(first_price_with_val + ' грн');
    $('#second_product .price_with_discont').html(second_price_with_val + ' грн');
    if (bHeveUsd) {
        $('#main_product .price_with_discont_usd').html(usd_main_price_with_val + ' usd');
        $('#first_product .price_with_discont_usd').html(usd_first_price_with_val + ' usd');
        $('#second_product .price_with_discont_usd').html(usd_second_price_with_val + ' usd');
    }
    var all_sum = 0;
    if (is_main_active) all_sum += main_price_with_val;
    if (is_first_active) all_sum += first_price_with_val;
    if (is_second_active) all_sum += second_price_with_val;
    $('#all_sum').html( all_sum );
    var all_sum_full = 0;
    if (is_main_active) all_sum_full += main_price;
    if (is_first_active) all_sum_full += first_price;
    if (is_second_active) all_sum_full += second_price;
    $('#all_discont').html( all_sum_full - all_sum );        
    if (bHeveUsd) {
        var all_sum = 0;
        if (is_main_active) all_sum += usd_main_price_with_val;
        if (is_first_active) all_sum += usd_first_price_with_val;
        if (is_second_active) all_sum += usd_second_price_with_val;
        $('#all_sum_usd').html( all_sum );
        var all_sum_full = 0;
        if (is_main_active) all_sum_full += usd_main_price;
        if (is_first_active) all_sum_full += usd_first_price;
        if (is_second_active) all_sum_full += usd_second_price;
        $('#all_discont_usd').html( all_sum_full - all_sum );        
    }
}

/*
function SetDefaultValueByArray() {
    var arr = [
        [".user_name", "Ваше имя"],
        [".user_email", "Ваш email"],
        [".user_phone", "Ваш номер телефона"],
        [".user_feedback_phone", "Введите Ваш номер телефона"],
        ["#REGISTER_LOGIN", "Логин"],
        ["#REGISTER_PASSWORD", "Пароль"],
        ["#REGISTER_CONFIRM_PASSWORD", "Подтверждение пароля"],
        ["#REGISTER_EMAIL", "E-mail"]
    ];
    var arr_elem = null;
    var elem = null;
    var z = 0;
    for (var i = 0; i < arr.length; i++) {
        arr_elem = arr[i];
        elem = $(arr_elem[0]);
        if (elem.length > 0) {
            elem.attr('defval', arr_elem[1]);
            if (elem.val().length <= 0) {
                elem.val(arr_elem[1]);
            }
            elem.bind("focus", function(event) {
                var a = $(this).val();
                var aa = $(this).attr('defval');
                if($(this).val() == $(this).attr('defval')) {
                    $(this).val('');
                }
            });
            elem.bind("blur", function(event) {
                if($(this).val() == '') {
                    $(this).val($(this).attr('defval'));
                }
            });
        }
    }
    
}*/

function ShowAssembleGoods(ID, AssemblyNum) {
    $('#assembly_good_'+ID).css('display', 'block');

    var ajax_block = "#ajax_assembly_good_"+ID;
    var ajax_page = "/ajax/assembly_goods_ajax.php";

    return ajax_update(
        ajax_block,
        ajax_page,
            "template:catalog_page,"+
            "ID:"+ID+","+
            "ASS_NUM:"+AssemblyNum+","+
            "FP_NUM:"+0+","+
            "SP_NUM:"+0
    );
    
    return false;
}

$(document).ready(function(){
    $.each($('[default_value]'), function(num, elem) {
        if (!$(elem).val()) {
            $(elem).val($(elem).attr('default_value'));
        }
    });
    
    $('[default_value]').bind("focus", function(event) {
        if($(this).val() == $(this).attr('default_value')) {
            $(this).val('');
        }
    });
    $('[default_value]').bind("blur", function(event) {    
        if($(this).val() == '') {
            $(this).val($(this).attr('default_value'));
        }
    });
})

function ClearDefVal() {
    var arElems = $('[default_value]');
    for (var i = 0; i < arElems.length; i++) {
        if ($(arElems[i]).val() == $(arElems[i]).attr('default_value')) {
            $(arElems[i]).val('');
        }
    }
    return true;
}


function CreateShadow(ajax_block) {
    var block_offset = $(ajax_block).offset();
    var width = $(ajax_block).width();
    var height = $(ajax_block).height();
    
    $('html').append('<div class="ajax_shadow"></div>');
    $('.ajax_shadow').css('display', 'block');
    $('.ajax_shadow').css('position', 'absolute');
    $('.ajax_shadow').css('opacity', '0.6');
    $('.ajax_shadow').css('background-color', 'gray');
    $('.ajax_shadow').css('border', '1px dotted black');
    $('.ajax_shadow').css('z-index', '999999');
    $('.ajax_shadow').css('border-radius', (((height+width)/2)/30)+'px');
    $('.ajax_shadow').css('height', height+20);
    $('.ajax_shadow').css('width', width+20);
    $('.ajax_shadow').css('top', block_offset.top-10);
    $('.ajax_shadow').css('left', block_offset.left-10);
    
    $('.ajax_shadow').append('<div class="ajax_shadow_img"></div>');
    $('.ajax_shadow_img').css('background', "url('/ajax_load.gif') left top no-repeat");
    $('.ajax_shadow_img').css('height', '128px');
    $('.ajax_shadow_img').css('width', '128px');
    $('.ajax_shadow_img').css('top', '50%');
    $('.ajax_shadow_img').css('left', '50%');
    $('.ajax_shadow_img').css('position', 'relative');
    $('.ajax_shadow_img').css('margin-top', '-64px');
    $('.ajax_shadow_img').css('margin-left', '-64px');
}

function DestroyShadow() {
    $('.ajax_shadow').remove();
}

function GetNewBlock(ajax_block, ajax_page, params, call_back) {
    var arParamStr = params.split(',');
    params = new Object();
    var Param = null;
    for (var i = 0; i < arParamStr.length; i++) {
        Param = arParamStr[i].split(':');
        params[Param[0]] = Param[1];
    }
    
    $.ajax({  
        type: "POST",
        url: ajax_page,
        data: params,
        error: function (){
            alert('Ошибка соединения');
        },
        success: function(data) {
            PasteNewBlock(ajax_block, data);    
            if (!!call_back) {
                call_back.call(ajax_block, data);
            }
            var ScrollTop = $(window).scrollTop();
            if (ajax_block == '#ajax_basket_block') {
                $(ajax_block).offset({top: ScrollTop + 50});
                $(ajax_block).css({top: ScrollTop + 50});
                //al/ert(ajax_page);
            }
            ReloadBasketButtons();
            // лажа, но долго переделывать
            //$('#basket_form').jLook();
        }
    });        
}

function PasteNewBlock(ajax_block, data) {
    $(ajax_block).html(data);
    DestroyShadow();
}

function ajax_update(ajax_block, ajax_page, params, call_back) {
    CreateShadow(ajax_block);
    GetNewBlock(ajax_block, ajax_page, params, call_back);
    return false;
}

$(document).ready(function() { 
    $('a.href_ajax').click(function() {
        CreateShadow($(this).attr('block'));
        GetNewBlock($(this).attr('block'), $(this).attr('href'), '');
        return false;
    });
});

(function($){$.jGrowl=function(m,o){if($('#jGrowl').size()==0)
$('<div id="jGrowl"></div>').addClass((o&&o.position)?o.position:$.jGrowl.defaults.position).appendTo('body');$('#jGrowl').jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var args=arguments;return this.each(function(){var self=this;if($(this).data('jGrowl.instance')==undefined){$(this).data('jGrowl.instance',$.extend(new $.fn.jGrowl(),{notifications:[],element:null,interval:null}));$(this).data('jGrowl.instance').startup(this);}
if($.isFunction($(this).data('jGrowl.instance')[m])){$(this).data('jGrowl.instance')[m].apply($(this).data('jGrowl.instance'),$.makeArray(args).slice(1));}else{$(this).data('jGrowl.instance').create(m,o);}});};};$.extend($.fn.jGrowl.prototype,{defaults:{pool:0,header:'',group:'',sticky:false,position:'top-right',glue:'after',theme:'default',themeState:'highlight',corners:'10px',check:250,life:3000,closeDuration:'normal',openDuration:'normal',easing:'swing',closer:true,closeTemplate:'&times;',closerTemplate:'<div>[ close all ]</div>',log:function(e,m,o){},beforeOpen:function(e,m,o){},afterOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:'show'},animateClose:{opacity:'hide'}},notifications:[],element:null,interval:null,create:function(message,o){var o=$.extend({},this.defaults,o);if(typeof o.speed!=='undefined'){o.openDuration=o.speed;o.closeDuration=o.speed;}
this.notifications.push({message:message,options:o});o.log.apply(this.element,[this.element,message,o]);},render:function(notification){var self=this;var message=notification.message;var o=notification.options;var notification=$('<div class="jGrowl-notification '+o.themeState+' ui-corner-all'+
((o.group!=undefined&&o.group!='')?' '+o.group:'')+'">'+'<div class="jGrowl-close">'+o.closeTemplate+'</div>'+'<div class="jGrowl-header">'+o.header+'</div>'+'<div class="jGrowl-message">'+message+'</div></div>').data("jGrowl",o).addClass(o.theme).children('div.jGrowl-close').bind("click.jGrowl",function(){$(this).parent().trigger('jGrowl.close');}).parent();$(notification).bind("mouseover.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",true);}).bind("mouseout.jGrowl",function(){$('div.jGrowl-notification',self.element).data("jGrowl.pause",false);}).bind('jGrowl.beforeOpen',function(){if(o.beforeOpen.apply(notification,[notification,message,o,self.element])!=false){$(this).trigger('jGrowl.open');}}).bind('jGrowl.open',function(){if(o.open.apply(notification,[notification,message,o,self.element])!=false){if(o.glue=='after'){$('div.jGrowl-notification:last',self.element).after(notification);}else{$('div.jGrowl-notification:first',self.element).before(notification);}
$(this).animate(o.animateOpen,o.openDuration,o.easing,function(){if($.browser.msie&&(parseInt($(this).css('opacity'),10)===1||parseInt($(this).css('opacity'),10)===0))
this.style.removeAttribute('filter');if($(this).data("jGrowl")!=null)
$(this).data("jGrowl").created=new Date();$(this).trigger('jGrowl.afterOpen');});}}).bind('jGrowl.afterOpen',function(){o.afterOpen.apply(notification,[notification,message,o,self.element]);}).bind('jGrowl.beforeClose',function(){if(o.beforeClose.apply(notification,[notification,message,o,self.element])!=false)
$(this).trigger('jGrowl.close');}).bind('jGrowl.close',function(){$(this).data('jGrowl.pause',true);$(this).animate(o.animateClose,o.closeDuration,o.easing,function(){if($.isFunction(o.close)){if(o.close.apply(notification,[notification,message,o,self.element])!==false)
$(this).remove();}else{$(this).remove();}});}).trigger('jGrowl.beforeOpen');if(o.corners!=''&&$.fn.corner!=undefined)$(notification).corner(o.corners);if($('div.jGrowl-notification:parent',self.element).size()>1&&$('div.jGrowl-closer',self.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass('jGrowl-closer ui-state-highlight ui-corner-all').addClass(this.defaults.theme).appendTo(self.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().trigger("jGrowl.beforeClose");if($.isFunction(self.defaults.closer)){self.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});};},update:function(){$(this.element).find('div.jGrowl-notification:parent').each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+parseInt($(this).data("jGrowl").life))<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl.pause")==undefined||$(this).data("jGrowl.pause")!=true)){$(this).trigger('jGrowl.beforeClose');}});if(this.notifications.length>0&&(this.defaults.pool==0||$(this.element).find('div.jGrowl-notification:parent').size()<this.defaults.pool))
this.render(this.notifications.shift());if($(this.element).find('div.jGrowl-notification:parent').size()<2){$(this.element).find('div.jGrowl-closer').animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass('jGrowl').append('<div class="jGrowl-notification"></div>');this.interval=setInterval(function(){$(e).data('jGrowl.instance').update();},parseInt(this.defaults.check));if($.browser.msie&&parseInt($.browser.version)<7&&!window["XMLHttpRequest"]){$(this.element).addClass('ie6');}},shutdown:function(){$(this.element).removeClass('jGrowl').find('div.jGrowl-notification').remove();clearInterval(this.interval);},close:function(){$(this.element).find('div.jGrowl-notification').each(function(){$(this).trigger('jGrowl.beforeClose');});}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);


/***********************************************************
Bitrix AJAX library ver 6.5 alpha 
***********************************************************/

/*
private CAjaxThread class - description of current AJAX request thread.
*/
function CAjaxThread(TID)
{
    this.TID = TID;
    this.httpRequest = this._CreateHttpObject();
    this.arAction = [];
}

CAjaxThread.prototype._CreateHttpObject = function()
{
    var obj = null;
    if (window.XMLHttpRequest)
    {
        try {obj = new XMLHttpRequest();} catch(e){}
    }
    else if (window.ActiveXObject)
    {
        try {obj = new ActiveXObject("Microsoft.XMLHTTP");} catch(e){}
        if (!obj)
            try {obj = new ActiveXObject("Msxml2.XMLHTTP");} catch (e){}
    }
    return obj;
}

CAjaxThread.prototype.addAction = function(obHandler)
{
    this.arAction.push(obHandler);
}

CAjaxThread.prototype.clearActions = function()
{
    this.arAction = [];
}

CAjaxThread.prototype.nextAction = function()
{
    return this.arAction.shift();
}

CAjaxThread.prototype.Clear = function()
{
    this.arAction = null;
    this.httpRequest = null;
}

/*
public CAjax main class
*/
function CAjax()
{
    this.arThreads = {};
    this.obTemporary = null;
}

CAjax.prototype._PrepareData = function(arData, prefix)
{
    var data = '';
    if (null != arData)
    {
        for(var i in arData)
        {
            if (data.length > 0) data += '&';
            var name = jsAjaxUtil.urlencode(i);
            if(prefix)
                name = prefix + '[' + name + ']';
            if(typeof arData[i] == 'object')
                data += this._PrepareData(arData[i], name)
            else
                data += name + '=' + jsAjaxUtil.urlencode(arData[i])
        }
    }
    return data;
}

CAjax.prototype.GetThread = function(TID)
{
    return this.arThreads[TID];
}

CAjax.prototype.InitThread = function()
{
    while (true)
    {
        var TID = 'TID' + Math.floor(Math.random() * 1000000);
        if (!this.arThreads[TID]) break;
    }

    this.arThreads[TID] = new CAjaxThread(TID);
    
    return TID;
}

CAjax.prototype.AddAction = function(TID, obHandler)
{
    if (this.arThreads[TID])
    {
        this.arThreads[TID].addAction(obHandler);
    }
}

CAjax.prototype._OnDataReady = function(TID, result)
{
    if (!this.arThreads[TID]) return;

    while (obHandler = this.arThreads[TID].nextAction())
    {
        obHandler(result);
    }
}
    
CAjax.prototype._Close = function(TID)
{
    if (!this.arThreads[TID]) return;

    this.arThreads[TID].Clear();
    this.arThreads[TID] = null;
}
    
CAjax.prototype._SetHandler = function(TID)
{
    var oAjax = this;
    
    function __cancelQuery(e)
    {
        if (!e) e = window.event
        if (!e) return;
        if (e.keyCode == 27)
        {
            oAjax._Close(TID);
            jsEvent.removeEvent(document, 'keypress', this);
        }
    }
    
    function __handlerReadyStateChange()
    {
        if (oAjax.bCancelled) return;
        if (!oAjax.arThreads[TID]) return;
        if (!oAjax.arThreads[TID].httpRequest) return;
        if (oAjax.arThreads[TID].httpRequest.readyState == 4)
        {
            var status = oAjax.arThreads[TID].httpRequest.getResponseHeader('X-Bitrix-Ajax-Status');
            var bRedirect = (status == 'Redirect');
            
            var s = oAjax.arThreads[TID].httpRequest.responseText;
            
            jsAjaxParser.mode = 'implode';
            s = jsAjaxParser.process(s);
            
            if (!bRedirect)
                oAjax._OnDataReady(TID, s);

            oAjax.__prepareOnload();

            if (jsAjaxParser.code.length > 0)
                jsAjaxUtil.EvalPack(jsAjaxParser.code);
            
            oAjax.__runOnload();
            //setTimeout(function() {alert(1); oAjax.__runOnload(); alert(2)}, 30);
            oAjax._Close(TID);
        }
    }

    this.arThreads[TID].httpRequest.onreadystatechange = __handlerReadyStateChange;
    jsEvent.addEvent(document, "keypress", __cancelQuery);
}

CAjax.prototype.__prepareOnload = function()
{
    this.obTemporary = window.onload;
    window.onload = null;
}

CAjax.prototype.__runOnload = function()
{
    if (window.onload) window.onload();
    window.onload = this.obTemporary;
    this.obTemporary = null;
}

CAjax.prototype.Send = function(TID, url, arData)
{
    if (!this.arThreads[TID]) return;

    if (null != arData)
        var data = this._PrepareData(arData);
    else
        var data = '';

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

    if(this.arThreads[TID].httpRequest)
    {
        this.arThreads[TID].httpRequest.open("GET", url, true);
        this._SetHandler(TID);
        return this.arThreads[TID].httpRequest.send("");
    }
}

CAjax.prototype.Post = function(TID, url, arData)
{
    var data = '';

    if (null != arData)
        data = this._PrepareData(arData);
    if(this.arThreads[TID].httpRequest)
    {
        this.arThreads[TID].httpRequest.open("POST", url, true);
        this._SetHandler(TID);
        this.arThreads[TID].httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        return this.arThreads[TID].httpRequest.send(data);
    }
}

/*
public CAjaxForm - class to send forms via iframe
*/
function CAjaxForm(obForm, obHandler, bFirst)
{
    this.obForm = obForm;
    this.obHandler = obHandler;
    this.obFrame = null;

    this.isFormProcessed = false;
    
    if (null == bFirst)
        this.bFirst = false;
    else
        this.bFirst = bFirst;
    
    this.__tmpFormTarget = '';
    this.obAJAXIndicator = null;
    
    this.currentBrowserDetected = "";
    if (window.opera)
        this.currentBrowserDetected = "Opera";
    else if (navigator.userAgent)
    {
        if (navigator.userAgent.indexOf("MSIE") != -1)
            this.currentBrowserDetected = "IE";
        else if (navigator.userAgent.indexOf("Firefox") != -1)
            this.currentBrowserDetected = "Firefox";
    }

    this.IsIE9 = !!document.documentMode && document.documentMode >= 9;
}

CAjaxForm.prototype.setProcessedFlag = function(value)
{
    if (null == value) value = true;
    else value = value ? true : false;
    
    this.obForm.bxAjaxProcessed = value;
    this.isFormProcessed = value;
}

CAjaxForm.isFormProcessed = function(obForm)
{
    if (obForm.bxAjaxProcessed)
        return obForm.bxAjaxProcessed;
    else
        return false;
}

CAjaxForm.prototype.process = function()
{
    var _this = this;

    function __formResultHandler()
    {
        if (!_this.obFrame.contentWindow.document || _this.obFrame.contentWindow.document.body.innerHTML.length == 0) return;

        if (null != _this.obHandler)
        {
            _this.obHandler(_this.obFrame.contentWindow.document.body.innerHTML);
        }

        if (_this.obFrame.contentWindow.AJAX_runExternal)
            _this.obFrame.contentWindow.AJAX_runExternal();

        if (_this.obFrame.contentWindow.AJAX_runGlobal)
            _this.obFrame.contentWindow.AJAX_runGlobal();

        if (_this.bFirst)
        {
            try
            {
                _this.obForm.target = _this.__tmpFormTarget;
                _this.obAJAXIndicator.parentNode.removeChild(_this.obAJAXIndicator);
                _this.obForm.bxAjaxProcessed = false;
            }
            catch (e) 
            {
                _this.obForm = null;
            }
            
            _this.obAJAXIndicator = null;

            if (this.currentBrowserDetected != 'IE') 
                jsEvent.removeAllEvents(_this.obFrame);

            // fixing another strange bug. Now for FF
            var TimerID = setTimeout("document.body.removeChild(document.getElementById('" + _this.obFrame.id + "'));", 100);
            _this.obFrame = null;
            
            if (window.onFormLoaded)
            {
                window.onFormLoaded();
                window.onFormLoaded = null;
            }
        }
    }

    if (this.obForm.target && this.obForm.target.substring(0, 5) == 'AJAX_')
        return;

    if (this.currentBrowserDetected == 'IE')
    {
        if (this.IsIE9)
        {
            this.obAJAXIndicator = document.createElement('input');
            this.obAJAXIndicator.setAttribute('name', 'AJAX_CALL');
            this.obAJAXIndicator.setAttribute('type', 'hidden');
        } 
        else
        {
            this.obAJAXIndicator = document.createElement('<input name="AJAX_CALL" type="hidden" />');
        }
    }
    else
    {
        this.obAJAXIndicator = document.createElement('INPUT');
        this.obAJAXIndicator.type = 'hidden';
        this.obAJAXIndicator.name = 'AJAX_CALL';
    }
    
    this.obAJAXIndicator.value = 'Y';
    
    this.obForm.appendChild(this.obAJAXIndicator);

    var frameName = 'AJAX_' + Math.round(Math.random() * 100000);
    
    if (this.currentBrowserDetected == 'IE')
        if (this.IsIE9)
        {
            this.obFrame = document.createElement('iframe');
            this.obFrame.setAttribute('name', frameName);
        }
        else
        {
            this.obFrame = document.createElement('<iframe name="' + frameName + '"></iframe>');
        }
    else
        this.obFrame = document.createElement('IFRAME');
    
    this.obFrame.style.display = 'none';
    this.obFrame.src = 'javascript:\'\'';
    this.obFrame.id = frameName;
    this.obFrame.name = frameName;
    
    document.body.appendChild(this.obFrame);

    this.__tmpFormTarget = this.obForm.target;
    this.obForm.target = frameName;

    // one more strange bug in IE..
    if (this.currentBrowserDetected == 'IE') 
        this.obFrame.attachEvent("onload", __formResultHandler);
    else
        jsEvent.addEvent(this.obFrame, 'load', __formResultHandler);
    this.setProcessedFlag();
}

var jsAjaxParser = {
    code: [],
    mode: 'implode',
    
    regexp: null,
    regexp_src: null,
    
    process: function(s)
    {
        this.code = [];
        
        if (null == this.regexp)
            this.regexp = /(<script([^>]*)>)([\S\s]*?)(<\/script>)/i;

        do
        {
            var arMatch = s.match(this.regexp);
            
            if (null == arMatch) 
                break;

            var pos = arMatch.index;
            var len = arMatch[0].length;
            
            if (pos > 0)
                this.code.push({TYPE: 'STRING', DATA: s.substring(0, pos)});
            
            if (typeof arMatch[1] == 'undefined' || arMatch[1].indexOf('src=') == -1)
            {
                var script = arMatch[3];
                script = script.replace('<!--', '');

                this.code.push({TYPE: 'SCRIPT', DATA: script});
            }
            else
            {
                if (null == this.regexp_src) 
                    this.regexp_src = /src="([^"]*)?"/i;
                var arResult = this.regexp_src.exec(arMatch[1]);
            
                if (null != arResult && arResult[1])
                {
                    this.code.push({TYPE: 'SCRIPT_EXT', DATA: arResult[1]});
                }
            }
            
            s = s.substring(pos + len);
        } while (true);

        if (s.length > 0)
        {
            this.code.push({TYPE: 'STRING', DATA: s});
        }
        
        if (this.mode == 'implode')
        {
            s = '';
            for (var i = 0, cnt = this.code.length; i < cnt; i++)
            {
                if (this.code[i].TYPE == 'STRING') 
                    s += this.code[i].DATA;
            }
            
            return s;
        }
        else
            return this.code;
    }
}

/*
public jsAjaxUtil - utility object
*/
var jsAjaxUtil = {
    // remove all DOM node children (with events)
    RemoveAllChild: function(pNode)
    {
        try
        {
            while(pNode.childNodes.length>0)
            {
                jsEvent.clearObject(pNode.childNodes[0]);
                pNode.removeChild(pNode.childNodes[0]);
            }
        }
        catch(e)
        {}
    },

    // evaluate js string in window scope
    EvalGlobal: function(script)
    {
        if (window.execScript)
            window.execScript(script, 'javascript');
        else if (jsAjaxUtil.IsSafari())
            window.setTimeout(script, 0);
        else
            window.eval(script);
    },
    
    arLoadedScripts: [],
    
    __isScriptLoaded: function (script_src)
    {
        for (var i=0; i<jsAjaxUtil.arLoadedScripts.length; i++)
            if (jsAjaxUtil.arLoadedScripts[i] == script_src) return true;
        return false;
    },
    
    // evaluate external script
    EvalExternal: function(script_src)
    {
        if (
            /\/bitrix\/js\/main\/ajax.js$/i.test(script_src)
            ||
            /\/bitrix\/js\/main\/core\/core.js$/i.test(script_src)
        ) return;
    
        if (jsAjaxUtil.__isScriptLoaded(script_src)) return;
        jsAjaxUtil.arLoadedScripts.push(script_src);

        var obAjaxThread = new CAjaxThread();

        obAjaxThread.httpRequest.open("GET", script_src, false); // make *synchronous* request for script source
        obAjaxThread.httpRequest.send("");
        
        var s = obAjaxThread.httpRequest.responseText;
        obAjaxThread.Clear();
        obAjaxThread = null;
        
        jsAjaxUtil.EvalGlobal(s); // evaluate script source
    },
    
    EvalPack: function(code)
    {
        for (var i = 0, cnt = code.length; i < cnt; i++)
        {
            if (code[i].TYPE == 'SCRIPT_EXT' || code[i].TYPE == 'SCRIPT_SRC')
                jsAjaxUtil.EvalExternal(code[i].DATA);
            else if (code[i].TYPE == 'SCRIPT')
                jsAjaxUtil.EvalGlobal(code[i].DATA);
        }
    },
    
    // urlencode js version
    urlencode: function(s)
    {
        return escape(s).replace(new RegExp('\\+','g'), '%2B');
    },
    
    // trim js version
    trim: function(s)
    {
        var r, re;
        re = /^[ \r\n]+/g;
        r = s.replace(re, "");
        re = /[ \r\n]+$/g;
        r = r.replace(re, "");
        return r;
    },
    
    GetWindowSize: function()
    {
        var innerWidth, innerHeight;

        if (self.innerHeight) // all except Explorer
        {
            innerWidth = self.innerWidth;
            innerHeight = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
        {
            innerWidth = document.documentElement.clientWidth;
            innerHeight = document.documentElement.clientHeight;
        }
        else if (document.body) // other Explorers
        {
            innerWidth = document.body.clientWidth;
            innerHeight = document.body.clientHeight;
        }

        var scrollLeft, scrollTop;
        if (self.pageYOffset) // all except Explorer
        {
            scrollLeft = self.pageXOffset;
            scrollTop = self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict
        {
            scrollLeft = document.documentElement.scrollLeft;
            scrollTop = document.documentElement.scrollTop;
        }
        else if (document.body) // all other Explorers
        {
            scrollLeft = document.body.scrollLeft;
            scrollTop = document.body.scrollTop;
        }

        var scrollWidth, scrollHeight;

        if ( (document.compatMode && document.compatMode == "CSS1Compat"))
        {
            scrollWidth = document.documentElement.scrollWidth;
            scrollHeight = document.documentElement.scrollHeight;
        }
        else
        {
            if (document.body.scrollHeight > document.body.offsetHeight)
                scrollHeight = document.body.scrollHeight;
            else
                scrollHeight = document.body.offsetHeight;

            if (document.body.scrollWidth > document.body.offsetWidth || 
                (document.compatMode && document.compatMode == "BackCompat") ||
                (document.documentElement && !document.documentElement.clientWidth)
            )
                scrollWidth = document.body.scrollWidth;
            else
                scrollWidth = document.body.offsetWidth;
        }

        return  {"innerWidth" : innerWidth, "innerHeight" : innerHeight, "scrollLeft" : scrollLeft, "scrollTop" : scrollTop, "scrollWidth" : scrollWidth, "scrollHeight" : scrollHeight};
    },

    // get element position relative to the whole window
    GetRealPos: function(el)
    {
        if (el.getBoundingClientRect)
        {
            var obRect = el.getBoundingClientRect();
            var obWndSize = jsAjaxUtil.GetWindowSize();
            var arPos = {
                left: obRect.left + obWndSize.scrollLeft, 
                top: obRect.top + obWndSize.scrollTop, 
                right: obRect.right + obWndSize.scrollLeft, 
                bottom: obRect.bottom + obWndSize.scrollTop
            };
            return arPos;
        }
        
        if(!el || !el.offsetParent)
            return false;

        var res = Array();
        res["left"] = el.offsetLeft;
        res["top"] = el.offsetTop;
        var objParent = el.offsetParent;
        
        while(objParent && objParent.tagName != "BODY")
        {
            res["left"] += objParent.offsetLeft;
            res["top"] += objParent.offsetTop;
            objParent = objParent.offsetParent;
        }
        res["right"] = res["left"] + el.offsetWidth;
        res["bottom"] = res["top"] + el.offsetHeight;
        
        return res;
    },
    
    IsIE: function()
    {
        return (document.attachEvent && !jsAjaxUtil.IsOpera());
    },

    IsOpera: function()
    {
        return (navigator.userAgent.toLowerCase().indexOf('opera') != -1);
    },
    
    IsSafari: function()
    {
        var userAgent = navigator.userAgent.toLowerCase();
        return (/webkit/.test(userAgent));
    },

    // simple ajax data loading method (without any visual effects)
    LoadData: function(url, obHandler)
    {
        if (!obHandler) return;

        var TID = jsAjax.InitThread();
        jsAjax.AddAction(TID, obHandler);
        jsAjax.Send(TID, url);
        
        return TID;
    },
    
    // simple ajax data post method (without any visual effects)
    PostData: function(url, arData, obHandler)
    {
        if (!obHandler) return;

        var TID = jsAjax.InitThread();
        jsAjax.AddAction(TID, obHandler);
        jsAjax.Post(TID, url, arData);
        
        return TID;
    },
    
    __LoadDataToDiv: function(url, cont, bReplace, bShadow)
    {
        if (null == bReplace) bReplace = true;
        if (null == bShadow) bShadow = true;
        
        if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
            var obContainerNode = document.getElementById(cont);
        else
            var obContainerNode = cont;
        
        if (!obContainerNode) return;

        var rnd_tid = Math.round(Math.random() * 1000000);
        
        function __putToContainer(data)
        {
            if (!obContainerNode) return;
            
            //setTimeout('jsAjaxUtil.CloseLocalWaitWindow(\'' + rnd_tid + '\', \'' + obContainerNode.id + '\')', 100);
            jsAjaxUtil.CloseLocalWaitWindow(rnd_tid, obContainerNode);

            if (bReplace)
            {
                jsAjaxUtil.RemoveAllChild(obContainerNode);
                obContainerNode.innerHTML = data;
            }
            else
                obContainerNode.innerHTML += data;
        }

        jsAjaxUtil.ShowLocalWaitWindow(rnd_tid, obContainerNode, bShadow);
        var TID = jsAjaxUtil.LoadData(url, __putToContainer);
    },
    
    // insert ajax data to container (with visual effects)
    InsertDataToNode: function(url, cont, bShadow)
    {
        if (null == bShadow) bShadow = true;
        jsAjaxUtil.__LoadDataToDiv(url, cont, true, bShadow);
    },

    // append ajax data to container (with visual effects)
    AppendDataToNode: function(url, cont, bShadow)
    {
        if (null == bShadow) bShadow = true;
        jsAjaxUtil.__LoadDataToDiv(url, cont, false, bShadow);
    },
    
    GetStyleValue: function(el, styleProp)
    {
        if(el.currentStyle)
            var res = el.currentStyle[styleProp];
        else if(window.getComputedStyle)
            var res = document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
        return res;
    },
    
    // show ajax visuality
    ShowLocalWaitWindow: function (TID, cont, bShadow)
    {        
        if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
            var obContainerNode = document.getElementById(cont);
        else
            var obContainerNode = cont;
        
        if (obContainerNode.getBoundingClientRect)
        {
            var obRect = obContainerNode.getBoundingClientRect();
            var obWndSize = jsAjaxUtil.GetWindowSize();

            var arContainerPos = {
                left: obRect.left + obWndSize.scrollLeft, 
                top: obRect.top + obWndSize.scrollTop, 
                right: obRect.right + obWndSize.scrollLeft, 
                bottom: obRect.bottom + obWndSize.scrollTop
            };
        }
        else
            var arContainerPos = jsAjaxUtil.GetRealPos(obContainerNode);
        
        var container_id = obContainerNode.id;
        
        if (!arContainerPos) return;
        
        if (null == bShadow) bShadow = true;
        
// Tupichenkov Alex            
       var obWaitMessage;
        if (bShadow) {
            var obWaitShadow = document.body.appendChild(document.createElement('DIV'));
            obWaitShadow.id = 'waitshadow_' + container_id + '_' + TID;
            obWaitShadow.className = 'waitwindowlocalshadow';
            obWaitShadow.style.top = (arContainerPos.top - 5) + 'px';
            obWaitShadow.style.left = (arContainerPos.left - 5) + 'px';
            obWaitShadow.style.height = (arContainerPos.bottom - arContainerPos.top + 10) + 'px';
            obWaitShadow.style.width = (arContainerPos.right - arContainerPos.left + 10) + 'px';
            obWaitMessage = obWaitShadow.appendChild(document.createElement('DIV'));
        } else {
            obWaitMessage = document.body.appendChild(document.createElement('DIV'));
        }        
// Tupichenkov Alex            
        obWaitMessage.id = 'wait_' + container_id + '_' + TID;
        obWaitMessage.className = 'waitwindowlocal';
        
        var div_top = arContainerPos.top + 5;
        if (div_top < document.body.scrollTop) div_top = document.body.scrollTop + 5;
                     
// Tupichenkov Alex   
        if (!bShadow) {
            obWaitMessage.style.top = div_top + 'px';
            obWaitMessage.style.left = (arContainerPos.left + 5) + 'px';
        }
// Tupichenkov Alex            
        
        if(jsAjaxUtil.IsIE())
        {
            var frame = document.createElement("IFRAME");
            frame.src = "javascript:''";
            frame.id = 'waitframe_' + container_id + '_' + TID;
            frame.className = "waitwindowlocal";
            frame.style.width = obWaitMessage.offsetWidth + "px";
            frame.style.height = obWaitMessage.offsetHeight + "px";
            frame.style.left = obWaitMessage.style.left;
            frame.style.top = obWaitMessage.style.top;
            document.body.appendChild(frame);
        }
        
        function __Close(e)
        {
            if (!e) e = window.event
            if (!e) return;
            if (e.keyCode == 27)
            {
                jsAjaxUtil.CloseLocalWaitWindow(TID, cont);
                jsEvent.removeEvent(document, 'keypress', __Close);
            }
        }
        
        jsEvent.addEvent(document, 'keypress', __Close);
    },

    // hide ajax visuality
    CloseLocalWaitWindow: function(TID, cont)
    {
        if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
            var obContainerNode = document.getElementById(cont);
        else
            var obContainerNode = cont;
    
        var container_id = obContainerNode.id;
        
        var obWaitShadow = document.getElementById('waitshadow_' + container_id + '_' + TID);
        if (obWaitShadow)
            document.body.removeChild(obWaitShadow);
        var obWaitMessageFrame = document.getElementById('waitframe_' + container_id + '_' + TID);
        if (obWaitMessageFrame)
            document.body.removeChild(obWaitMessageFrame);
        var obWaitMessage = document.getElementById('wait_' + container_id + '_' + TID);
        if (obWaitMessage)
            document.body.removeChild(obWaitMessage);
    },

    // simple form sending vithout visual effects. use onsubmit="SendForm(this, MyFunction)"
    SendForm: function(obForm, obHandler)
    {
        if (typeof obForm == 'string' || typeof obForm == 'object' && obForm.constructor == String)
            var obFormHandler = document.getElementById(obForm);
        else
            var obFormHandler = obForm;
            
        if (!obFormHandler.name || obFormHandler.name.length <= 0)
        {
            obFormHandler.name = 'AJAXFORM_' + Math.floor(Math.random() * 1000000);
        }
    
        var obFormMigrate = new CAjaxForm(obFormHandler, obHandler, true);
        obFormMigrate.process();

        return true;
    },
    
    // ajax form submit with visuality and put data to container. use onsubmit="InsertFormDataToNode(this, 'cont_id')"
    InsertFormDataToNode: function(obForm, cont, bShadow)
    {          
        if (null == bShadow) bShadow = true;
        return jsAjaxUtil.__LoadFormToDiv(obForm, cont, true, bShadow);
    },

    // similiar with InsertFormDataToNode but append data to container
    AppendFormDataToNode: function(obForm, cont, bShadow)
    {
        if (null == bShadow) bShadow = true;
        return jsAjaxUtil.__LoadFormToDiv(obForm, cont, false, bShadow);
    },
    
    __LoadFormToDiv: function(obForm, cont, bReplace, bShadow)
    {
        if (null == bReplace) bReplace = true;
        if (null == bShadow) bShadow = true;
        
        if (typeof cont == 'string' || typeof cont == 'object' && cont.constructor == String)
            var obContainerNode = document.getElementById(cont);
        else
            var obContainerNode = cont;
        
        if (!obContainerNode) return;

        function __putToContainer(data)
        {
            if (!obContainerNode) return;
            
            if (bReplace)
            {
                jsAjaxUtil.RemoveAllChild(obContainerNode);
                obContainerNode.innerHTML = data;
            }
            else
                obContainerNode.innerHTML += data;
                
            jsAjaxUtil.CloseLocalWaitWindow(obContainerNode.id, obContainerNode);
        }

        jsAjaxUtil.ShowLocalWaitWindow(obContainerNode.id, obContainerNode, bShadow);
        
        return jsAjaxUtil.SendForm(obForm, __putToContainer);
    },

    // load to page new title, css files or script code strings
    UpdatePageData: function (arData)
    {
        if (arData.TITLE) jsAjaxUtil.UpdatePageTitle(arData.TITLE);
        if (arData.NAV_CHAIN) jsAjaxUtil.UpdatePageNavChain(arData.NAV_CHAIN);
        if (arData.CSS && arData.CSS.length > 0) jsAjaxUtil.UpdatePageCSS(arData.CSS);
        if (arData.SCRIPTS && arData.SCRIPTS.length > 0) jsAjaxUtil.UpdatePageScripts(arData.SCRIPTS);
    },
    
    UpdatePageScripts: function(arScripts)
    {
        for (var i = 0; i < arScripts.length; i++)
        {
            jsAjaxUtil.EvalExternal(arScripts[i]);
        }
    },
    
    UpdatePageCSS: function (arCSS)
    {
        jsStyle.UnloadAll();
        for (var i = 0; i < arCSS.length; i++)
        {
            jsStyle.Load(arCSS[i]);
        }
    },
    
    UpdatePageTitle: function(title)
    {
        var obTitle = document.getElementById('pagetitle');
        if (obTitle) 
        {
            obTitle.removeChild(obTitle.firstChild);
            obTitle.appendChild(document.createTextNode(title));
        }
        
        document.title = title;
    },
    
    UpdatePageNavChain: function(nav_chain)
    {
        var obNavChain = document.getElementById('navigation');
        if (obNavChain)
        {
            obNavChain.innerHTML = nav_chain;
        }
    },
    
    ScrollToNode: function(node)
    {
        if (typeof node == 'string' || typeof node == 'object' && node.constructor == String)
            var obNode = document.getElementById(node);
        else
            var obNode = node;
        
        if (obNode.scrollIntoView)
            obNode.scrollIntoView(true);
        else
        {
            var arNodePos = jsAjaxUtil.GetRealPos(obNode);
            window.scrollTo(arNodePos.left, arNodePos.top);
        }
    }
}

/*
public jsStyle - external CSS manager
*/
var jsStyle = {

    arCSS: {},
    bInited: false,
    
    Init: function()
    {
        var arStyles = document.getElementsByTagName('LINK');
        if (arStyles.length > 0)
        {
            for (var i = 0; i<arStyles.length; i++)
            {
                if (arStyles[i].href)
                {
                    var filename = arStyles[i].href;
                    var pos = filename.indexOf('://');
                    if (pos != -1)
                        filename = filename.substr(filename.indexOf('/', pos + 3));
                    
                    arStyles[i].bxajaxflag = false;
                    this.arCSS[filename] = arStyles[i];
                }
            }
        }
        
        this.bInited = true;
    },
    
    Load: function(filename)
    {
        if (!this.bInited) 
            this.Init();
    
        if (null != this.arCSS[filename])
        {
            this.arCSS[filename].disabled = false;
            return;
        }

        /*
        var cssNode = document.createElement('link');
        cssNode.type = 'text/css';
        cssNode.rel = 'stylesheet';
        cssNode.href = filename;
        document.getElementsByTagName("head")[0].appendChild(cssNode);
        */
        
        var link = document.createElement("STYLE");
        link.type = 'text/css';

        var head = document.getElementsByTagName("HEAD")[0];
        head.insertBefore(link, head.firstChild);
        //head.appendChild(link);
        
        if (jsAjaxUtil.IsIE())
        {
            link.styleSheet.addImport(filename);
        }
        else
        {
            var obAjaxThread = new CAjaxThread();
            obAjaxThread.httpRequest.onreadystatechange = null;

            obAjaxThread.httpRequest.open("GET", filename, false); // make *synchronous* request for css source
            obAjaxThread.httpRequest.send("");
            
            var s = obAjaxThread.httpRequest.responseText;
            
            // convert relative resourse paths in css to absolute. current path to css will be lost.
            var pos = filename.lastIndexOf('/');
            if (pos != -1)
            {
                var dirname = filename.substring(0, pos);
                s = s.replace(/url\(([^\/\\].*?)\)/gi, 'url(' + dirname + '/$1)');
            }
            
            obAjaxThread.Clear();
            obAjaxThread = null;

            link.appendChild(document.createTextNode(s));
        }
            
    },
    
    Unload: function(filename)
    {
        if (!this.bInited) this.Init();
    
        if (null != this.arCSS[filename])
        {
            this.arCSS[filename].disabled = true;
        }
    },
    
    UnloadAll: function()
    {
        if (!this.bInited) this.Init();    
        else
            for (var i in this.arCSS)
            {
                if (this.arCSS[i].bxajaxflag)
                    this.Unload(i);
            }
    }
}

/*
public jsEvent - cross-browser event manager object
*/
var jsEvent = {
    
    objectList: [null],
    objectEventList: [null],

    __eventManager: function(e)
    {
        if (!e) e = window.event
        var result = true;
    
        // browser comptiability
        try
        {
            if (e.srcElement)
                e.currentTarget = e.srcElement;
        }
        catch (e) {}
        
        if (this.bxEventIndex && jsEvent.objectEventList[this.bxEventIndex] && jsEvent.objectEventList[this.bxEventIndex][e.type])
        {
            var len = jsEvent.objectEventList[this.bxEventIndex][e.type].length;
            for (var i=0; i<len; i++)
            {
                if (jsEvent.objectEventList[this.bxEventIndex][e.type] && jsEvent.objectEventList[this.bxEventIndex][e.type][i])
                {
                    var tmp_result = jsEvent.objectEventList[this.bxEventIndex][e.type][i](e);
                    if ('boolean' == typeof tmp_result) result = result && tmp_result;
                    if (!result) return false;
                }
            }
        }

        return true;
    },
    
    addEvent: function(obElement, event, obHandler)
    {
        if (!obElement.bxEventIndex)
        {
            obElement.bxEventIndex = jsEvent.objectList.length;
            jsEvent.objectList[obElement.bxEventIndex] = obElement;
        }
        
        if (!jsEvent.objectEventList[obElement.bxEventIndex])
            jsEvent.objectEventList[obElement.bxEventIndex] = {};

        if (!jsEvent.objectEventList[obElement.bxEventIndex][event])
        {
            jsEvent.objectEventList[obElement.bxEventIndex][event] = [];
            
            if (obElement['on' + event]) 
                jsEvent.objectEventList[obElement.bxEventIndex][event].push(obElement['on' + event]);
            
            obElement['on' + event] = null;
            obElement['on' + event] = jsEvent.__eventManager;
        }
        
        jsEvent.objectEventList[obElement.bxEventIndex][event].push(obHandler);
    },
    
    removeEvent: function(obElement, event, obHandler)
    {
        if (obElement.bxEventIndex)
        {
            if (jsEvent.objectEventList[obElement.bxEventIndex][event])
            {
                for (var i=0; i<jsEvent.objectEventList[obElement.bxEventIndex][event].length; i++)
                {
                    if (obHandler == jsEvent.objectEventList[obElement.bxEventIndex][event][i])
                    {
                        delete jsEvent.objectEventList[obElement.bxEventIndex][event][i];
                        return;
                    }
                }
            }
        }
    },
    
    removeAllHandlers: function(obElement, event)
    {
        if (obElement.bxEventIndex)
        {
            if (jsEvent.objectEventList[obElement.bxEventIndex][event])
            {
                // possible memory leak. must be checked;
                jsEvent.objectEventList[obElement.bxEventIndex][event] = [];
            }
        }
    },

    removeAllEvents: function(obElement)
    {
        if (obElement.bxEventIndex)
        {
            if (jsEvent.objectEventList[obElement.bxEventIndex])
            {
                // possible memory leak. must be checked;
                jsEvent.objectEventList[obElement.bxEventIndex] = [];
            }
        }
    },
    
    clearObject: function(obElement)
    {
        if (obElement.bxEventIndex)
        {
            if (jsEvent.objectEventList[obElement.bxEventIndex])
            {
                // possible memory leak. must be checked;
                delete jsEvent.objectEventList[obElement.bxEventIndex];
            }
            
            if (jsEvent.objectList[obElement.bxEventIndex])
            {
                // possible memory leak. must be checked;
                delete jsEvent.objectList[obElement.bxEventIndex];
            }
            
            delete obElement.bxEventIndex;
        }
    }
}

var jsAjaxHistory = {
    expected_hash: '',
    counter: 0,
    bInited: false,
    
    obFrame: null,
    obImage: null,
    bHashCollision: false,
    
    obTimer: null,
    
    __hide_object: function(ob)
    {
        ob.style.position = 'absolute';
        ob.style.top = '-1000px';
        ob.style.left = '-1000px';
        ob.style.height = '10px';
        ob.style.width = '10px';
    },
    
    init: function(node)
    {
        if (jsAjaxHistory.bInited) return;
        
        jsAjaxHistory.expected_hash = window.location.hash;

        if (!jsAjaxHistory.expected_hash || jsAjaxHistory.expected_hash == '#') jsAjaxHistory.expected_hash = '__bx_no_hash__';
        
        var obCurrentState = {'node': node, 'title':window.document.title, 'data': document.getElementById(node).innerHTML};
        var obNavChain = document.getElementById('navigation');
        if (null != obNavChain)
            obCurrentState.nav_chain = obNavChain.innerHTML;
        
        jsAjaxHistoryContainer.put(jsAjaxHistory.expected_hash, obCurrentState);

        jsAjaxHistory.obTimer = setTimeout(jsAjaxHistory.__hashListener, 500);
        
        if (jsAjaxUtil.IsIE())
        {
            jsAjaxHistory.obFrame = document.createElement('IFRAME');
            jsAjaxHistory.__hide_object(jsAjaxHistory.obFrame);
            
            document.body.appendChild(jsAjaxHistory.obFrame);
            
            jsAjaxHistory.obFrame.contentWindow.document.open();
            jsAjaxHistory.obFrame.contentWindow.document.write(jsAjaxHistory.expected_hash);
            jsAjaxHistory.obFrame.contentWindow.document.close();
            jsAjaxHistory.obFrame.contentWindow.document.title = window.document.title;
        }
        else if (jsAjaxUtil.IsOpera())
        {
            jsAjaxHistory.obImage = document.createElement('IMG');
            jsAjaxHistory.__hide_object(jsAjaxHistory.obImage);
            
            document.body.appendChild(jsAjaxHistory.obImage);
            
            jsAjaxHistory.obImage.setAttribute('src', 'javascript:location.href = \'javascript:jsAjaxHistory.__hashListener();\';');
        }
        
        jsAjaxHistory.bInited = true;
    },

    __hashListener: function()
    {
        if (jsAjaxHistory.obTimer)
        {
            window.clearTimeout(jsAjaxHistory.obTimer);
            jsAjaxHistory.obTimer = null;
        }
    
        if (null != jsAjaxHistory.obFrame)
            var current_hash = jsAjaxHistory.obFrame.contentWindow.document.body.innerText;
        else
            var current_hash = window.location.hash;

        if (!current_hash || current_hash == '#') current_hash = '__bx_no_hash__';
        
        if (current_hash.indexOf('#') == 0) current_hash = current_hash.substring(1);
        
        if (current_hash != jsAjaxHistory.expected_hash)
        {
            var state = jsAjaxHistoryContainer.get(current_hash);
            if (state)
            {
                document.getElementById(state.node).innerHTML = state.data;
                jsAjaxUtil.UpdatePageTitle(state.title);
                if (state.nav_chain) 
                    jsAjaxUtil.UpdatePageNavChain(state.nav_chain);
                
                jsAjaxHistory.expected_hash = current_hash;
                if (null != jsAjaxHistory.obFrame)
                {
                    var __hash = current_hash == '__bx_no_hash__' ? '' : current_hash;
                    if (window.location.hash != __hash && window.location.hash != '#' + __hash)
                        window.location.hash = __hash;
                }
            }
        }
        
        jsAjaxHistory.obTimer = setTimeout(jsAjaxHistory.__hashListener, 500);
    },

    put: function(node, new_hash)
    {
        //alert(new_hash);
        var state = {
            'node': node,
            'title': window.document.title,
            'data': document.getElementById(node).innerHTML
        };
        
        var obNavChain = document.getElementById('navigation');
        if (obNavChain)
            state.nav_chain = obNavChain.innerHTML;
        
        //var new_hash = '#cnt' + (++jsAjaxHistory.counter);
        jsAjaxHistoryContainer.put(new_hash, state);
        jsAjaxHistory.expected_hash = new_hash;

        window.location.hash = jsAjaxUtil.urlencode(new_hash);

        if (null != jsAjaxHistory.obFrame)
        {
            jsAjaxHistory.obFrame.contentWindow.document.open();
            jsAjaxHistory.obFrame.contentWindow.document.write(new_hash);
            jsAjaxHistory.obFrame.contentWindow.document.close();
            jsAjaxHistory.obFrame.contentWindow.document.title = state.title;
        }
    },

    checkRedirectStart: function(param_name, param_value)
    {
        var current_hash = window.location.hash;
        if (current_hash.substring(0, 1) == '#') current_hash = current_hash.substring(1);
        
        if (current_hash.substring(0, 5) == 'view/')
        {
            jsAjaxHistory.bHashCollision = true;
            document.write('<' + 'div id="__ajax_hash_collision_' + param_value + '" style="display: none;">');
        }
    },
    
    checkRedirectFinish: function(param_name, param_value)
    {
        document.write('</div>');
        
        var current_hash = window.location.hash;
        if (current_hash.substring(0, 1) == '#') current_hash = current_hash.substring(1);
        
        jsEvent.addEvent(window, 'load', function () 
        {
            //alert(current_hash);
            if (current_hash.substring(0, 5) == 'view/')
            {
                var obColNode = document.getElementById('__ajax_hash_collision_' + param_value);
                var obNode = obColNode.firstChild;
                jsAjaxUtil.RemoveAllChild(obNode);
                obColNode.style.display = 'block';
                
                // IE, Opera and Chrome automatically modifies hash with urlencode, but FF doesn't ;-(
                if (!jsAjaxUtil.IsIE() && !jsAjaxUtil.IsOpera() && !jsAjaxUtil.IsSafari())
                    current_hash = jsAjaxHistory.urlencode(current_hash);
                
                current_hash += (current_hash.indexOf('%3F') == -1 ? '%3F' : '%26') + param_name + '=' + param_value;
                
                var url = '/bitrix/tools/ajax_redirector.php?hash=' + current_hash; //jsAjaxHistory.urlencode(current_hash);
                jsAjaxUtil.InsertDataToNode(url, obNode, false);
            }
        });
    },
    
    urlencode: function(s)
    {
        if (window.encodeURIComponent)
            return encodeURIComponent(s);
        else if (window.encodeURI)
            return encodeURI(s);
        else
            return jsAjaxUtil.urlencode(s);
    }
}

var jsAjaxHistoryContainer = {
    arHistory: {},
    
    put: function(hash, state)
    {
        this.arHistory[hash] = state;
    },
    
    get: function(hash)
    {
        return this.arHistory[hash];
    }
}

// for compatibility with IE 5.0 browser
if (![].pop)
{
    Array.prototype.pop = function()
    {
        if (this.length <= 0) return false;
        var element = this[this.length-1];
        delete this[this.length-1];
        this.length--;
        return element;
    }
    
    Array.prototype.shift = function()
    {
        if (this.length <= 0) return false;
        var tmp = this.reverse();
        var element = tmp.pop();
        this.prototype = tmp.reverse();
        return element;
    }
    
    Array.prototype.push = function(element)
    {
        this[this.length] = element;
    }
}

var jsAjax = new CAjax();

