/*
 * 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")}})})();
function correctPNG() {// correctly handle PNG transparency in Win IE 5.5 & 6.
   var arVersion = navigator.appVersion.split("MSIE"); var version = parseFloat(arVersion[1]);
   if ((version >= 5.5) && (document.body.filters)) {
      for(var i=0; i<document.images.length; i++) {
         var img = document.images[i]; var imgName = img.src.toUpperCase();
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
            var imgID = (img.id) ? "id='" + img.id + "' " : ""; var imgClass = (img.className) ? "class='" + img.className + "' " : "";
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "; var imgStyle = "display:inline-block;" + img.style.cssText 
            if (img.align == "left") imgStyle = "float:left;" + imgStyle
            if (img.align == "right") imgStyle = "float:right;" + imgStyle
            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
            var strNewHTML = "<span " + imgID + imgClass + imgTitle
            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>";
            img.outerHTML = strNewHTML
            i = i-1;
         }
      }
   }    
}
if (window.addEventListener)
	window.addEventListener("onload", correctPNG, false);
else
	window.attachEvent("onload", correctPNG);
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 1Z(a,b,c,d){4(8(d)==\'9\')d=\'\';3 e=1k+"/"+b+"/12-1l-21.1m?1n="+a+"&22="+c+"&"+d;$.H(e)}5 23(b){3 c=I J();c[\'24\']=\'25\';c[\'26\']=\'13\';c[\'27\']=\'28\';c[\'29\']=\'13\';c[\'2a\']=\'13\';3 d=$("[x=\'2b[]\']:l");4(!d.m){2c("2d 1o 2e S.");n 6}3 e=d.y();3 f=2f($(\'#1p\').F());4(f.m>1q){f=f.T(0,1q)+\'...\'}3 g=2g.2h();3 h=1k+"/"+c[b]+"/14.1m?2i="+e+"&1p="+f+"&2j="+b+"&1n="+g;$.H(h,5(){3 a=$(\'#2k\');1r="<z U=\'1s\'></z><z U=\\"14\\">2l 2m V 2n 14.</z><z U=\'1s\'></z>";a.F(1r)})}5 2o(a){3 b=$("#W-1t");3 c=$("#W-1u");3 d=1v(b.y());3 e=1v(c.y());4((e<d)&&e!=\'-1\'){4(a==A)c.y(\'-1\');D b.y(\'-1\')}}5 K(a){n L.2p(a)}5 2q(a){a.r=A}5 2r(a){a.r=6}5 16(b,c,d,f,g){c=(8(c)=="9")?6:c;f=(8(f)=="9")?A:f;3 h=(d==6)?$(b).E(":M"):X($(d).N("O"),b);4(8(g)!="9"){h=h.B(5(e){3 t=h.2s(e+1);4(7.p==g){g=(t.P().1w("2t"))?"":t.y();n 6}D n A})}4(h.m>0){h.u(5(){3 a=f;3 s=7.1x.17;4(s.2u(/\\2v\\b/))a=6;18(7,c,a)});4(d!=6){Q(d)}}}5 2w(c,d,e){3 o=$(c).E(\':M\');3 t=o.B(\':l\');4(e){o.2x("2y",5(){G(7,d)});1y($(d),o,c);t.1z(\'1A\');t.u(5(){4(7.r)n 0;G(7);3 a=$(7);3 b=a.P().P();4(a.C("x")=="19[]"&&!b.2z(\':2A\')){1B(b.Y(\':M\').y(),A)}});3 f=$(c);3 g=f.1w("1C")?f.H(0):f.E(\'z.1C\').H(0);4(t.m>=1&&8(g)!=\'9\'){3 h=t.1D();g.2B=h.1E}}D{t.u(5(){4(!7.r)G(7)})}4(8(d)!=\'9\'){Q(d)}}5 1y(a,b,c){3 d=a.N("O");d=(8(d)=="9")?I J():d;d[c]=b;a.N("O",d)}5 X(a,b){3 c=$([]);b=(8(b)=="9")?"1F":b;4(8(a)!="9")4(b=="1F")V(x 2C a)c=c.2D(a[x]);D c=a[b];n c}5 18(a,b,c){c=(8(c)=="9")?6:c;3 t=$(a);3 d=t.P();a.l=b;a.r=c;d.1a("1b",b).1a("2E",!b)}5 Q(a){3 t=$(a);3 b=1G.2F||"2G 2H";3 s="<1H U=\'2I\'>"+b+": </1H>";3 c=X(t.N("O"));3 d=I J();t.2J("");c=c.B(":l");4(c.m<=0)n 0;c.u(5(){4(!7.r&&d[7.p]!="1")s=s+7.2K+", ";d[7.p]=1});d=1c;t.2L(s.T(0,s.m-2))}5 2M(a,b){16(a,6,b,6);4(b!=6){Q(b)}}5 G(a,b){3 c=$(a);3 d=c.Y(\'2N,2O\');3 f=(a.l)?A:6;4(d.m>=1){4(f){3 g=d.E(\':M\').B(\':l\');g.u(5(){7.l=6;G(7,b)})}d=d.H();16(d,f,6,f)}4(8(b)!="9"){3 h=X($(b).N("O"));h=$(h);3 j=h.B(\'[p="\'+a.p+\'"]\');4(j.m>1){j.u(5(i,e){4(e.r==6){e.l=f;G(e)}})}Q(b)}18(a,f)}5 1B(a,b){1I=\'#2P\'+a;3 t=$(1I);3 c=$(\'#2Q\'+a);4(c.m){3 d=(c.F()=="1J 1d")?"2R 1d":"1J 1d";c.F(d)}D 4(b==A){t.Y(\'.Z-1K\').1z(\'Z-1L\')}D{t.Y(\'.Z-1K\').1a(\'Z-1L\')}t.2S(\'2T\')}5 2U(a){1M(\'1N\');3 b="";b=b+v(\'1N\');b=b+q(\'2V\');b=b+v(\'S\');b=b+q(\'1e\',1);b=b+q(\'2W\',1);b=b+q(\'1O\',1);b=b+q(\'19\',1);b=b+q(\'1D\',1);b=b+q(\'12-1f\',1);b=b+q(\'2X\',1);b=b+q(\'2Y-2Z-31\',1);b=b+v(\'32\');b=b+v(\'W-1t\');b=b+v(\'W-1u\');b=b+v(\'10\');b=b+v(\'1P\');b=b+q(\'10-S\');b=b+v(\'10-33\');b=b+q(\'12-34\',1);b=b+R(\'35\');b=b+R(\'36\');b=b+R(\'37\');b=b+R(\'38\');4(b!=""){b=b.T(1,b.m);a=a+\'?\'+b}L.1e.39=a}5 1M(a){4(K(a).p==K(a).3a)K(a).p=\'\'}5 v(a){k=K(a);4(k!=1c){1g=$.3b(k.p);4(1g!="")n\'&\'+a+\'=\'+1h(1g)}n\'\'}5 q(a,b){11=a;4(8(b)!=\'9\'&&b==1)11=11+\'[]\';k=L.1Q(11);3 c=\'\';3 d=I J();V(i=0,j=k.m;i<j;i++){4(8 L.3c.3d.3e=="9"){4(a==\'1O\'||a==\'19\'||a==\'1e\'){3 e=k[i].17;3 f=k[i].1x.17;4(f.1l(\'1b\')>-1){k[i].l=A}D{k[i].l=6}}}4(k[i].l&&k[i].r==6&&d[k[i].p]!=\'1\'){c=c+k[i].p+\',\';d[k[i].p]=1}}d=1c;4(c!=\'\'){c=c.T(0,c.m-1);c=\'&\'+a+\'=\'+1h(c)}n c}5 R(a){k=L.1Q(a);3 b=\'\';V(i=0;i<k.m;i++){b=b+k[i].p}4(b!=\'\'){b=\'&\'+a+\'=\'+b}n b}5 1h(a){3 b=a;b=b.3f();b=3g(b);b=b.3h(/%20/g,\'+\');n b}5 3i(a){3 f=(8(a)=="9")?"3j":a;3 c=I J("10-S","1P");3 d=$(f).E("3k");3 e=$(f).E("1o");3 g=$(f).E("3l");d.B(\'[1f="F"]\').y(\'\').3m(\'3n\');d.B(\'[1f="M"]\').u(5(){3 t=$(7);4($.3o(t.C(\'x\'),c)==-1){t.C(\'l\',6);t.P().1R(\'1b\');t.1R(\'1A\')}t.C(\'r\',6)});3 b="";d.B(\':3p\').u(5(){3 t=$(7);4(b!=t.C(\'x\')){b=t.C(\'x\');$(\'[x=\'+b+\']:l\').C(\'l\',\'\');t.C(\'l\',\'l\')}});$(\'z.3q\').F(\'\');e.u(5(){7.3r=0})}5 3s(a,b,c,d){1i=1S.1T||1U;1j=1S.1V||3t;4(8(b)==\'9\')b=1j-1j*0.15;4(8(c)==\'9\')c=3u;4(8(d)==\'9\')d="3v";4(1i>1U){c=3w}1W=1i/2-c/2;1X=30;w=1G.3x(a,d,"3y="+1W+",1E="+1X+",3z=3A,1V="+b+",1T="+c+",3B=1Y,3C=1Y");w.3D()}',62,226,'|||var|if|function|false|this|typeof|undefined|||||||||||oCtrl|checked|length|return||value|asGetCBList|disabled|||each|asGetText||name|val|div|true|filter|attr|else|find|text|updateThis|get|new|Array|getEl|document|checkbox|data|chain|parent|updateText|asGetHidden|option|substring|class|for|experience|getChain|siblings|ctoggle|salary|sCtrl|job|malaysia|feedback||checkAllBy|className|checkBoxes|role|toggleClass|labelSelected|null|Options|location|type|sVal|asUrlEncode|sWidth|sHeight|dPath|search|php|rnd|select|fbmsg|1000|sHtml|enter|min|max|Number|hasClass|parentNode|addChain|addClass|confirmed|toggleSpeRole|listwrap|position|top|all|window|span|sKey|More|inactive|active|fixInputCaption|key|specialization|classified|getElementsByName|removeClass|screen|width|1024|height|displayRight|displayTop|yes|doSearchLog||log|cnt|sendFeedBack|id|indonesia|my|th|thailand|ph|sg|fb|alert|Please|one|escape|Math|random|fbid|country|fbCon|Thank|you|your|ctrlYoe|getElementById|disableThis|enableThis|eq|l2|match|bl2|scanCheckBox|bind|click|is|visible|scrollTop|in|add|labelNormal|js_yourselection|Your|Selection|ulgroup|html|alt|append|uncheckAllBy|ul|ol|optSpeRole|lblTogSpeRole|Hide|slideToggle|fast|doAdvanceSearch|area|industry|qualification|field|of||study|nationality|currency|posted|campus|src|sort|order|href|title|trim|body|style|maxHeight|toString|encodeURIComponent|replace|clearAdvanceSearch|form|input|textarea|trigger|blur|inArray|radio|optConSel|selectedIndex|popWin|600|767|JobSearch20110727|967|open|left|menubar|no|scrollbars|resizable|focus'.split('|'),0,{}));
/**
 * login.js
 * @version 		1.0
 * @dependencies 	jQuery 1.3+, jQuery cookie plug-in (included)
 * @author 			SheaKai
 *
 * @description Check myjs cookie, if non exists, display login / signup instead.
 */
(function($){
	var settings = {
			"site" : "my",
			"extra_param" : "",
			"myjs_url" : "http://myjobstreet.jobstreet.com",
			"goto_home" : false,
			"home_url" : "http://www.jobstreet.com",
			"cookie" : "MOTSUC",
			"formatDisplayName" : function( s ){
				var first_name = $.cookie(s.cookie);
				first_name = first_name.replace(/\+/g, ' ');
				var output =  '<b>Hi, ' + first_name + '</b>&nbsp;&nbsp;(<a href="'+s.myjs_url+'/home/logout.php">Logout</a>&nbsp;|&nbsp;<a href="'+s.myjs_url+'/home/help.php?site='+s.site+'">Help</a>)';
				if (s.goto_home == true)
				{
					if (s.extra_param != "")
					{
						s.extra_param = '?' + s.extra_param;
					}
					output = '<a href="' + s.home_url + s.extra_param + '" title="JobStreet Home">Go to JobStreet Home</a>&nbsp;|&nbsp;' + output;
				}
				return output;
			},
			"formatDisplayNull" : function ( s ){ // show sign in function
				var output = '<a href="'+s.myjs_url+'/home/login.php?site='+s.site+s.extra_param+'">Login</a>&nbsp;|&nbsp;New User? <a href="'+s.myjs_url+'/registration/quick-register.php?site='+s.site+'">Sign Up</a>';
				if (s.goto_home == true)
				{
					if (s.extra_param != "")
					{
						s.extra_param = '?' + s.extra_param;
					}
					output = '<a href="' + s.home_url + s.extra_param + '" title="JobStreet Home">Go to JobStreet Home</a>&nbsp;|&nbsp;' + output;
				}
				return output;
			}
	};
	
	var methods = {
			"init" : function( options ){
				var sel = this.selector;
				
				if ( options ) {
					$.extend( true, settings, options );
				};
				
				var $this = $(this);
				var s = methods.settings = settings;
				
				return this.each(function(){
					methods.checkCookie.apply( $this, [s.cookie, true]);
					$(this).hide().fadeIn(1000);
				});
			},
			"checkCookie" : function (c, recurse) {
				var s = methods.settings;
				c = $.cookie(c) || $.cookie(s.cookie);
				var sel = this.selector;
				var result = "";
				
				if (typeof(c)!="undefined" && c != null)
				{
					result = s.formatDisplayName.apply( this, [s] );
				} else {
					result = s.formatDisplayNull.apply( this, [s] );
				}
				
				if (recurse == true)
				{
					//Set timeout, recall checking function again. Poll every 10 seconds					
					this.html(result);
					setTimeout('$("'+sel+'").jbstLogin("checkCookie",false,true);',10000);	
				}
				
				return result;
			},
			"destroy" : function(){
				//unset/clean data here
			}
	};
	
	//Plugin-constructor
	$.fn.jbstLogin = function( method ) {
		
		if ( methods[method] ) {
			return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
		} else if ( typeof method === 'object' || ! method ) {
			return methods.init.apply( this, arguments );
		} else {
			$.error( 'Method ' + method + ' does not exist on jQuery.jbstLogin' );
		}

	};
	
})(jQuery);

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};
 /**
 * Validator Javascript set use fo:	
 *	1.	Form Javascript validation set
 * File: validator.js
 *
 * @Created clloke <chenlin@jobstreet.com>
 */

/**
 * Casting Data Type
 * @param string sText. value to be cast.
 * @param string sType. data type
 * @return mix cast data type.
 */
function typeCasting(sText, sType)
{
	sType = sType.toLowerCase();
	switch(sType)
	{
		case 'int': 
		case 'integer': 
			sText = parseInt(sText);	
			break;		
		case 'float':
		case 'double':			
			sText = parseFloat(sText);	
			break;		
		case 'boolean': sText = Boolean(sText);	break;
		case 'date': break;
		case 'string': 
		default : 
			sText = sText.toString();	
			break;
	}
	return sText;
}

function changeDate(oCtrl, sName, bHandle)
{
	var oDate = document.getElementsByName(sName);	
	if(typeof(oDate) == 'undefined') return false;

	var bComplete = true;

	var oDay = document.getElementsByName(sName + '_day');	
	sDay = oDay[0].selectedIndex;
	if(typeof(sDay) == 'undefined' || sDay == 0) bComplete = false;
	
	var oMonth = document.getElementsByName(sName + '_month');	
	sMonth = oMonth[0].selectedIndex;
	if(typeof(sMonth) == 'undefined' || sMonth == 0) bComplete = false;

	var oYear = document.getElementsByName(sName + '_year');	
	sYear = oYear[0].selectedIndex;
	if(typeof(sYear) == 'undefined' || sYear == 0) bComplete = false;
		
	if(bComplete == false)	
	{
		oDate[0].value = '' ;
		return;
	}
	var sDate = oDay[0].value + '-' + oMonth[0].value + '-' + oYear[0].value ;
	oDate[0].value = sDate;	
	
	if(typeof(bHandle) != 'undefined' && bHandle == true) core_validator.onCheckComponent(oDate[0]);
}
	/*---------------------------------------------------------------------------------------------
		Validation Component Part
	---------------------------------------------------------------------------------------------*/

/**
 * Check Empty/Required
 * @param string sText. value to be check.
 * @return boolean. true = pass | false = fail
 */
function isRequired(sText)
{
	if(trim(sText) == '') return false;
	return true;
}

/**
 * Check on regex
 * @param string regex. regex.
 * @param string sText. value to be check.
 * @return boolean. true = pass | false = fail
 */
function checkRegEx(regex, sText)
{
	//no checking for empty value
	if(trim(sText) == '') return true; 

	sText = sText.toString();
	var strRegex = new RegExp(regex);

	if (strRegex.test(sText)) return true; 
	return false;
}

/**
 * Check on valid value like email, date
 * @param string sText. value to be check.
 * @param string sType. data type
 * @return boolean. true = pass | false = fail
 */
function checkValid(sText, sType)
{
	switch (sType)
	{
		case 'date':
			return checkDate(sText);
			break;
	}
	return true;
}

function checkDate(sText)
{
	var sDate = getStrDate(sText, '-');
	var aDate = sDate.split('-');
	var sDay = aDate[2];
	var sMonth = aDate[1];
	var sYear = aDate[0]; 

	if (sDay.charAt(0) == 0) sDay = sDay.substr(1,sDay.length);
	if (sMonth.charAt(0) == 0) sMonth = sMonth.substr(1,sMonth.length);

	var oDate = new Date(sYear, sMonth-1, sDay);
	if ((oDate.getMonth()+1 != sMonth) || (oDate.getDate() != sDay) || (oDate.getFullYear() != sYear))
	{
		return false;
	}
	return true;
}

/**
 * Check on min range
 * @param string minValue. minimum value
 * @param string sText. value to be check.
 * @param string sType. data type
 * @return boolean. true = pass | false = fail
 */
function checkRangeMin(minValue, sText, sType)
{
	//no checking for empty value
	if(trim(sText) == '') return true; 

	sText = typeCasting(sText, sType);
	minValue = typeCasting(minValue, sType);
	if(sType == 'date') 
	{
		sText = getStrDate(sText);
		minValue = getStrDate(minValue);
	}
	if (sText >= minValue) return true; 
	return false;
}

/**
 * Check on max range
 * @param string maxValue. maximum value
 * @param string sText. value to be check.
 * @param string sType. data type
 * @return boolean. true = pass | false = fail
 */
function checkRangeMax(maxValue, sText, sType)
{
	//no checking for empty value
	if(trim(sText) == '') return true; 

	sText = typeCasting(sText, sType);
	maxValue = typeCasting(maxValue, sType);
	if(sType == 'date') 
	{
		sText = getStrDate(sText);
		maxValue = getStrDate(maxValue);
	}
	if (sText <= maxValue) return true; 
	return false;
}

/**
 * Compare value
 * @param string strTag. compare tag
 * @param string strCompare. compare value
 * @param string sText. value to be check.
 * @param string sType. data type
 * @return boolean. true = pass | false = fail
 */
function checkCompare(strTag, strCompare, sText, sType)
{
	//no checking for empty value
	if(trim(sText) == '') return true; 
	if(sType == 'date') 
	{
		var sText = getStrDate(sText);
		var strCompare = getStrDate(strCompare);
		sType = 'integer';
	}
	
	sText = typeCasting(sText, sType);
	strCompare = typeCasting(strCompare, sType);	
	strTag = strTag.toString();	

	switch(strTag)
	{
		case ">"	: if (sText > strCompare) return true; break;
		case ">="	: if (sText >= strCompare) return true; break;
		case "<"	: if (sText < strCompare) return true; break;
		case "<="	: if (sText <= strCompare) return true; break;
		case "="	: if (sText == strCompare) return true; break;
		case "!="	: if (sText != strCompare) return true; break;
	}
	return false;
}

/**
 * recompile date in yyyy-mm-dd format
 * @param string sText. value to be recompiled.
 * @param string strDelimeter. delimeter
 * @return string.
 */
function getStrDate(sText, strDelimeter)
{
	//Support 4 delimeter /- . (slash,dash,dot,space) and year should be 4 char
	//Return server format in yyyy<strDelimeter>mm<strDelimeter>dd

	var arrDate = new Array();
	arrDate = sText.split("/");	
	if(arrDate.length != 3) arrDate = sText.split("-");
	if(arrDate.length != 3) arrDate = sText.split(".");	
	if(arrDate.length != 3) arrDate = sText.split(" ");	
	if(arrDate.length != 3) return false;	
	
	var year;
	var month;
	var day;
	if(arrDate[0].length == 4) 
	{
		year = arrDate[0];
		month = arrDate[1];
		day = arrDate[2];
	}
	else if(arrDate[2].length == 4)
	{
		year = arrDate[2];
		month = arrDate[1];
		day = arrDate[0];
	}
	else return false;	

	if(month.length == 1) month = '0' + month;
	if(day.length == 1) day = '0' + day;
	
	if(typeof(strDelimeter) == 'undefined' || strDelimeter == null) strDelimeter = '';

	var strDate = year + strDelimeter +  month + strDelimeter + day;
	return strDate;
}

/**
 * Check on min length
 * @param string intMin. minimum value
 * @param string sText. value to be check.
 * @return boolean. true = pass | false = fail
 */
function checkLengthMin(intMin, sText)
{
	sText = sText.toString();
	if (sText.length < parseInt(intMin)) return false;	
	return true;
}

/**
 * Check on max length
 * @param string intMax. maximum value
 * @param string sText. value to be check.
 * @return boolean. true = pass | false = fail
 */
function checkLengthMax(intMax, sText)
{
	sText = sText.toString();
	if (sText.length > parseInt(intMax)) return false;	
	return true;
}	

/**
 * Check on Required within a group
 * @param string sText. value to be check.
 * @param array group. other dom object to check
 * @return boolean. true = pass | false = fail
 */
function checkRequired(sText, aGroup)
{
	var bResult = isRequired(sText);
	if(bResult) return true;
	if(aGroup.length > 0)
	{
		for (var i =0; i<aGroup.length; i++)
		{
			var aObjCtrl = document.getElementsByName(aGroup[i]);
			for (var j=0; j<aObjCtrl.length ; j++ )
			{
				if(typeof(aObjCtrl[j].value) == 'undefined') continue;
				if(trim(aObjCtrl[j].value) == "") continue;
				bResult = true;
			}
		}
		return bResult;
	}	
}

/**
 * Check on Required within a group
 * @param string sText. value to be check.
 * @param array param. reserve param
 * @return boolean. true = pass | false = fail
 */
function checkRequiredList(oCtrl, sParam, bCoreValidation)
{
	var aParam = sParam.split(",");
	var intMin = aParam[0];
	var intMax = aParam[1];
	if(oCtrl.multiple == false)
	{
		if(oCtrl.length > 1 && intMin > 0) if(oCtrl.value == "" || oCtrl.value == "00") 
		{
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_SELECT ;
			else return false;
		}
	}
	else
	{
		var iCntSel = 0;
		for(var i=0; i < oCtrl.length ; i++) if(oCtrl.options[i].selected) iCntSel++;
		if(iCntSel < intMin ) 
		{
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_SELECT_MIN;
			else return false;
		}
		if(iCntSel > intMax)
		{
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_SELECT_MAX;
			else return false;
		}
	}
	return true;
}

/**
 * Check on Required within a group
 * @param string sText. value to be check.
 * @param array param. reserve param
 * @return boolean. true = pass | false = fail
 */
function checkRequiredCb(oCtrl, sParam, bCoreValidation)
{
	var aParam = sParam.split(",");
	var intMin = aParam[0];
	var intMax = aParam[1];

	var aCtrl = document.getElementsByName(oCtrl.name);
	if(aCtrl.length == 1)
	{
		if(oCtrl.checked == false)
		{	
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_CHECK;
			return false;
		}
	}
	else
	{
		var iCntSel = 0;
		for(var i=0; i < aCtrl.length ; i++) if(aCtrl[i].checked == true) iCntSel++;

		if(iCntSel < intMin ) 
		{
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_CHECK_MIN;
			else return false;
		}
		if(iCntSel > intMax)
		{
			if(bCoreValidation) return vConfig.error.ERR_REQUIRED_CHECK_MAX;
			else return false;
		}
	}
	return true;
}

/**
 * Check on Required within a group
 * @param string sText. value to be check.
 * @param array param. reserve param
 * @return boolean. true = pass | false = fail
 */
function checkRequiredRadio(oCtrl, aParam)
{ 
	var sName = oCtrl.name;
	var aElement = document.getElementsByName(sName);
	var bResult = false;
	for (var i =0; i<aElement.length; i++)
	{
		var aObjCtrl = aElement[i];
		if(aObjCtrl.checked == true)bResult = true;		
	}
	return bResult;
}

/**
 * Check on Required within a group
 * @param string sText. value to be check.
 * @param array group. other dom object to check
 * @return boolean. true = pass | false = fail
 */
function checkMatch(sText, aMatch)
{
	if(aMatch.length > 0)
	{
		var bResult = true;
		for (var i =0; i<aMatch.length; i++)
		{
			var aObjCtrl = document.getElementsByName(aMatch[i]);
			for (var j=0; j<aObjCtrl.length ; j++ )
			{
				if(typeof(aObjCtrl[j].value) == 'undefined') continue;
				if(trim(aObjCtrl[j].value) == "") continue;
				if(sText != aObjCtrl[j].value) bResult = false;
			}
		}
		return bResult;
	}
}

//sText=file name
//aConf=<max size>,<format seperate by |>
function checkFile(oCtrl, aConf)
{
	if(oCtrl.form.enctype == '')
	{
		// Developer Msg
		var sMsg = "Missing enctype in form tag";
		alert(sMsg);		
	}

	if(typeof(aConf[0]) != 'undefined')
	{
		//browser not allow to check file size
		var iMaxSize = aConf[0];
	}

	if(typeof(aConf[1]) != 'undefined')
	{
		var sFormat = aConf[1];
	}
	//current not yet solution for checking file at client side without activeX
	return true;
}

var vConfig = {
	//Validation Type
	type: {	
		TYP_REQUIRED: "REQUIRED",				//Required validation 
		TYP_REQUIRED_LIST: "REQUIRED_LIST",		//Required validation 
		TYP_REQUIRED_RADIO: "REQUIRED_RADIO",	//Required validation 
		TYP_REQUIRED_CB: "REQUIRED_CB",			//Required validation 
		TYP_FORMAT: "FORMAT",				//Format validation
		TYP_LENGTH_MIN: "LENGTH_MIN",		//Length min value
		TYP_LENGTH_MAX: "LENGTH_MAX",		//Length max value
		TYP_RANGE_MIN: "RANGE_MIN",		//Range min value
		TYP_RANGE_MAX: "RANGE_MAX",			//Range max value
		TYP_COMPARE_TAG: "COMPARE_TAG",		//Comparison tag
		TYP_COMPARE_VALUE: "COMPARE_VALUE",	//Comparison Target value
		TYP_CUSTOM_FUNC: "FUNCTION",			//Customize function 
		TYP_CUSTOM_PARAM: "PARAM",			//Customize function parameter
		TYP_MATCH: "MATCH",					//Matching
		TYP_FILE: "FILE",					//File
		TYP_TYPE: "TYPE",						//data type
		TYP_DIV: "EDIV",						//error msg div		
		TYP_LABEL: "LABEL",						//error msg label
		TYP_DELIMITER: "DELIMITER"						//error msg label
	},
	
	//Validation Expression
	exp: {
		EXP_INT_POSITIVE	: /^\d+$/ ,			//+ integer 
		EXP_INT_NEGATIVE	: /^-\d+$/ ,		//- integer 
		EXP_INT				: /^-{0,1}\d+$/ ,	//+/- integer 
		EXP_NUMBER_POSITIVE	: /^\d*\.{0,1}\d+$/ ,			//+ number
		EXP_NUMBER_NEGATIVE	: /^-\d*\.{0,1}\d+$/ ,		//- number
		EXP_NUMBER			: /^-{0,1}\d*\.{0,1}\d+$/ ,	//+/- number
		EXP_CURRENCY	: /^\d+(\.\d{0,2})?$/ ,		//+ currency with 2 decimal
		EXP_RATE		: /^\d+(\.\d{0,4})?$/ ,		//+ rate with 4 decimal
		EXP_STRING_ALPHA	: /^([a-zA-Z]+)$/ ,		//Alphabet only
		EXP_STRING_ALPHANUM	: /^([0-9A-Za-z]+)$/ ,		//Alphabet & Numeric only
		EXP_STRING			: /^([0-9A-Za-z_]+)$/ ,	//Alphabet & Numeric & _
		EXP_STRING_NAME		: /^([0-9A-Za-z_\.]+)$/ ,	//Alphabet & Numeric & _
		EXP_YEAR		: /^(19|20)[\d]{2,2}$/ ,	//Year From 1900 - 2099
		/* dd/mm/yyyy | dd-mm-yyyy */
		EXP_DATE_DMY	: /^([1-9]|0[1-9]|[12][0-9]|3[01])[\/|-]([1-9]|0[1-9]|1[012])[\/|-](19|20)\d\d$/ ,
		/* yyyy-mm-dd | yyyy/mm/dd */
		EXP_DATE_YMD	: /^(19|20)\d\d[\/|-]([1-9]|0[1-9]|1[012])[\/|-]([1-9]|0[1-9]|[12][0-9]|3[01])$/ , 
		EXP_DOMAIN : /^([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$/ ,				//Domain Name
		EXP_URL	   : /^https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w\/_\.]*(\?\S+)?)?)?$/ ,	//Url
		/* Ip address */
		EXP_IPV4   : /^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/ ,	
		/* Email */
		EXP_EMAIL  : /^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/ 	
	},
	
	//Validation Error Code
	error: {
		ERR_REQUIRED	: "ERR_REQUIRED",	//required field missing
		ERR_REQUIRED_SELECT : "ERR_REQUIRED_SELECT",	//required field missing - select
		ERR_REQUIRED_SELECT_MAX : "ERR_REQUIRED_SELECT_MAX",	//required field at min - select
		ERR_REQUIRED_SELECT_MIN : "ERR_REQUIRED_SELECT_MIN",	//required field at max - select
		ERR_REQUIRED_CHECK :  "ERR_REQUIRED_CHECK",	//required field missing - check
		ERR_REQUIRED_CHECK_MAX : "ERR_REQUIRED_CHECK_MAX",	//required field at min - select
		ERR_REQUIRED_CHECK_MIN : "ERR_REQUIRED_CHECK_MIN",	//required field at max - select
		ERR_FORMAT		: "ERR_FORMAT",		//format error
		ERR_RANGE_MIN	: "ERR_RANGE_MIN",	//min value is required
		ERR_RANGE_MAX	: "ERR_RANGE_MAX",	//max value exceed
		ERR_COMPARE		: "ERR_COMPARE",	//compare error
		ERR_LENGTH_MIN	: "ERR_LENGTH_MIN",	//min length is required
		ERR_LENGTH_MAX	: "ERR_LENGTH_MAX",	//max length exceed
		ERR_CUSTOM		: "ERR_CUSTOM",		//custom function error
		ERR_INVALID		: "ERR_INVALID",		//invalid input
		ERR_MATCH		: "ERR_MATCH",		//match input
		ERR_FILE_MAXSIZE : "ERR_FILE_MAXSIZE",
		ERR_FILE_EXT : "ERR_FILE_EXT",		
		ERR_FILE_INI_SIZE : "ERR_FILE_INI_SIZE",		//STANDARD PHP FILE UPLOAD ERROR
		ERR_FILE_FORM_SIZE : "ERR_FILE_FORM_SIZE",		//STANDARD PHP FILE UPLOAD ERROR
		ERR_FILE_PARTIAL : "ERR_FILE_PARTIAL",			//STANDARD PHP FILE UPLOAD ERROR
		ERR_FILE_NO_TMP_DIR : "ERR_FILE_NO_TMP_DIR",	//STANDARD PHP FILE UPLOAD ERROR
		ERR_FILE_CANT_WRITE : "ERR_FILE_CANT_WRITE",	//STANDARD PHP FILE UPLOAD ERROR
		ERR_FILE_EXTENSION : "ERR_FILE_EXTENSION"		//STANDARD PHP FILE UPLOAD ERROR
	},

	form : "",
	
	key : "",

	getType:function(sType)
	{
		if(this.isKeyExist() == false) return "";
		var sJs = "var sVal = this.oKey." + sType ;
		eval(sJs);
		if(typeof(sVal) == 'undefined') return "";
		return sVal;
	},	
	
	getError:function(sKey)
	{	
		if(this.isFormExist() == false) return "";
		if(typeof(this.oFrom.error) == 'undefined') return "";
		sKey = sKey.replace("[]", "");
		if(typeof(this.oFrom.error[sKey]) == 'undefined') return "";
		return this.oFrom.error[sKey];	
	},

	getErrorInput:function(sKey)
	{	
		if(this.isFormExist() == false) return "";
		if(typeof(this.oFrom.errorInput) == 'undefined') return "";
		sKey = sKey.replace("[]", "");
		if(typeof(this.oFrom.errorInput[sKey]) == 'undefined') return "";
		return this.oFrom.errorInput[sKey];	
	},
	
	addError:function(sKey, sCode, sInput)
	{	
		if(this.isFormExist() == false) return "";
		if(typeof(this.oFrom.error) != 'object') this.oFrom.error = new Array();
		sKey = sKey.replace("[]", "");
		this.oFrom.error[sKey] = sCode;
		if(typeof(sInput) != 'undefined') 
		{
			if(typeof(this.oFrom.errorInput) != 'object') this.oFrom.errorInput = new Array();
			this.oFrom.errorInput[sKey] = sInput;
		}
	},
	
	killError:function(sKey)
	{
		if(typeof(this.oFrom.error) == 'undefined') return "";
		sKey = sKey.replace("[]", "");
		this.oFrom.error[sKey] = 'undefined';
	},

	getRegex:function(regex)
	{	
		var sJs = "var regex = vConfig.exp." + regex + ";";
		eval(sJs);
		return regex;
	},
	
	isKeyExist:function()
	{
		if(this.isFormExist() == false) return false;
		sKey = this.key.replace("[]", "");
		var sJs = "var oKey = vConfig." + this.form + "." + sKey + ";";
		eval(sJs);
		if(typeof(oKey) != 'object') return false;
		this.oKey = oKey;
		return true;
	},

	isFormExist:function()
	{
		var sJs = "var oForm = vConfig." + this.form + ";";
		eval(sJs);		
		if(typeof(oForm) != 'object') return false;
		this.oFrom = oForm;
		return true;
	}
	
	
};//end config object

	/*---------------------------------------------------------------------------------------------
		Core Validation Part
	---------------------------------------------------------------------------------------------*/

var core_validator = {
	onCheckComponent:function(oCtrl) {
		/**
		 * Check Component upon event
		 * @param object oCtrl. component
		 * @return boolean. true = pass | false = fail
		 */
		if(oCtrl == null) return true;
		var sText = trim(oCtrl.value);
		var sForm = oCtrl.form.name;
		var sKey = oCtrl.name; 

		//get js config form object
		vConfig.form = sForm;
		vConfig.key = sKey;
		var sType = vConfig.getType(vConfig.type.TYP_TYPE);
		var bResult = true;

		//check required
		var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED);
		var aRequired = sRequired.split(","); 
		if(aRequired[0] == 1 || aRequired[0] == 'true')
		{				
			aRequired.shift();
			if (!checkRequired( sText, aRequired ))
			{
				vConfig.addError(sKey, vConfig.error.ERR_REQUIRED);
				bResult = false;
			}
		}

		//check list
		var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_LIST);			 
		if(sRequired != "")
		{		
			var sRequired = checkRequiredList(oCtrl, sRequired, true );
			if (!(sRequired == true))
			{
				vConfig.addError(sKey, sRequired);
				bResult = false;
			}
		}

		//check checkbox
		var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_CB);
		if(sRequired != "")
		{		
			var sRequired = checkRequiredCb( oCtrl, sRequired , true);
			if (!(sRequired == true))
			{
				vConfig.addError(sKey, sRequired);
				bResult = false;
				//do uncheck here
				if(sRequired == vConfig.error.ERR_REQUIRED_CHECK_MAX) oCtrl.checked = false;
			}
		}

		//check radio
		var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_RADIO);
		var aRequired = sRequired.split(","); 
		if(aRequired[0] == 1 || aRequired[0] == 'true')
		{		
			aRequired.shift();
			if (!checkRequiredRadio(oCtrl, aRequired ))
			{
				vConfig.addError(sKey, vConfig.error.ERR_REQUIRED_SELECT);
				bResult = false;
			}
		}

		//skip check on empty value
		if(bResult && sText == '') 
		{
			this.isValidInput(sForm,sKey);
			return true;
		}

		var aValue = new Array(sText);
		//Check for delimiter
		var sDelimiter = vConfig.getType(vConfig.type.TYP_DELIMITER);
		if(sDelimiter != "") var aValue = sText.split(sDelimiter);
	
		for (var i=0; i< aValue.length ; i++ )
		{
			var sSubText = trim(aValue[i]);
			//check format
			var strRegex = vConfig.getType(vConfig.type.TYP_FORMAT);
			if(bResult && strRegex != '')
			{
				strRegex = vConfig.getRegex(strRegex);
				if (!checkRegEx(strRegex,sSubText))
				{		
					vConfig.addError(sKey, vConfig.error.ERR_FORMAT, sSubText);
					bResult = false;
				}
			}

			//check min length
			var intLengthMin = vConfig.getType(vConfig.type.TYP_LENGTH_MIN);
			if(bResult && intLengthMin != '')
			{
				if (!checkLengthMin(intLengthMin, sSubText))
				{
					vConfig.addError(sKey, vConfig.error.ERR_LENGTH_MIN, sSubText);
					bResult = false;
				}
			}

			//check max length
			var intLengthMax = vConfig.getType(vConfig.type.TYP_LENGTH_MAX);
			if(bResult && intLengthMax != '')
			{
				if (!checkLengthMax(intLengthMax, sSubText))
				{
					vConfig.addError(sKey, vConfig.error.ERR_LENGTH_MAX, sSubText);
					bResult = false;
				}
			}

			//check valid
			if(bResult)
			{
				if (!checkValid(sSubText, sType))
				{
					vConfig.addError(sKey, vConfig.error.ERR_INVALID, sSubText);
					bResult = false;
				}
			}

			//check min range
			var mixRangeMin = vConfig.getType(vConfig.type.TYP_RANGE_MIN); 
			if(bResult && mixRangeMin != '')
			{
				if (!checkRangeMin(mixRangeMin, sSubText, sType))
				{
					vConfig.addError(sKey, vConfig.error.ERR_RANGE_MIN, sSubText);
					bResult = false;
				}
			}

			//check max range
			var mixRangeMax = vConfig.getType(vConfig.type.TYP_RANGE_MAX); 
			if(bResult && mixRangeMax != '')
			{
				if (!checkRangeMax(mixRangeMax, sSubText, sType))
				{
					vConfig.addError(sKey, vConfig.error.ERR_RANGE_MAX, sSubText);
					bResult = false;
				}
			}
			
			//check compare
			var strCompareTag = vConfig.getType(vConfig.type.TYP_COMPARE_TAG); 
			var strCompareValue = vConfig.getType(vConfig.type.TYP_COMPARE_VALUE);  
			if(bResult && strCompareTag != '' && strCompareValue != '')
			{ 
				if (!checkCompare(strCompareTag, strCompareValue, sSubText, sType))
				{
					vConfig.addError(sKey, vConfig.error.ERR_COMPARE, sSubText);
					bResult = false;
				}
			}
			if (!bResult) break;
		}//end for each delimiter

		//check match
		var sMatch =  vConfig.getType(vConfig.type.TYP_MATCH); 
		if(bResult && sMatch != '')
		{ 
			if (!checkMatch( sText, sMatch.split(",") ))
			{
				vConfig.addError(sKey, vConfig.error.ERR_MATCH);
				bResult = false;
			}
		}

		//check File
		var sFile =  vConfig.getType(vConfig.type.TYP_FILE); 
		if(bResult && sFile != '')
		{ 
			var sRequired = checkFile( oCtrl, sFile.split(",") );
			if (!(sRequired == true))
			{
				vConfig.addError(sKey, sRequired);
				bResult = false;
			}
		}
		
		//check custom
		var strCustomFunc = vConfig.getType(vConfig.type.TYP_CUSTOM_FUNC); 
		var aParam = vConfig.getType(vConfig.type.TYP_CUSTOM_PARAM);
		aParam = aParam.split(',');
		if(bResult && strCustomFunc != '')
		{	
			if (!eval(strCustomFunc + "(oCtrl, aParam)"))
            {
				vConfig.addError(sKey, vConfig.error.ERR_CUSTOM);            
                bResult = false;
            }
		}

		if(bResult) this.isValidInput(sForm, sKey);
		else this.onHandleErrorByKey(sForm, sKey);
	},//end onCheckComponent
	
	onCheckSubmit:function(oCtrl)
	{
		/**
		 * Check Component upon submit
		 * @param object oCtrl. component
		 * @return boolean. true = pass | false = fail
		 */
		if(oCtrl == null) return true;
		var sForm = oCtrl.form.name;
		vConfig.form = sForm;
		var sKey ;
	
		var sErrMsg ;
		var bError = false;

		var aField = oCtrl.form.getElementsByTagName('*');
		for (var i=0; i<aField.length; i++)
		{
			// Allow for multiple values being assigned to the class attribute
			sKey = aField[i].getAttribute('name');
			if(sKey == null) continue;
			if(sKey == '') continue;

			vConfig.key = sKey;
			
			var sText = trim(aField[i].value);
			
			var sType = vConfig.getType(vConfig.type.TYP_TYPE) ;
		
			//check required
			var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED);
			var aRequired = sRequired.split(","); 
			if(aRequired[0] == 1 || aRequired[0] == 'true')
			{		
				aRequired.shift();
				if (!checkRequired( sText, aRequired ))
				{
					vConfig.addError(sKey, vConfig.error.ERR_REQUIRED);
					bError = true;
					continue;
				}
			}

			//check list
			var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_LIST);			 
			if(sRequired != "")
			{		
				var sRequired = checkRequiredList( aField[i], sRequired, true );
				if (!(sRequired == true))
				{
					vConfig.addError(sKey, sRequired);
					bError = true;
					continue;
				}
			}

			//check checkbox
			var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_CB);
			if(sRequired != "")
			{		
				var sRequired = checkRequiredCb( aField[i], sRequired , true);
				if (!(sRequired == true))
				{
					vConfig.addError(sKey, sRequired);
					bError = true;
					continue;
				}
			}

			//check radio
			var sRequired = vConfig.getType(vConfig.type.TYP_REQUIRED_RADIO);
			var aRequired = sRequired.split(","); 
			if(aRequired[0] == 1 || aRequired[0] == 'true')
			{		
				aRequired.shift();
				if (!checkRequiredRadio( aField[i], aRequired ))
				{
					vConfig.addError(sKey, vConfig.error.ERR_REQUIRED_SELECT);
					bError = true;
					continue;
				}
			}

			//skip check on empty value
			if(sText == '') 
			{
				this.isValidInput(sForm,sKey);
				continue;
			}

			var aValue = new Array(sText);
			//Check for delimiter
			var sDelimiter = vConfig.getType(vConfig.type.TYP_DELIMITER);
			if(sDelimiter != "") var aValue = sText.split(sDelimiter);
		
			for (var j=0; j< aValue.length ; j++ )
			{
				var sSubText = trim(aValue[j]);
				var bSubError = false;

				//check format
				var strRegex = vConfig.getType(vConfig.type.TYP_FORMAT);
				if(strRegex != '')
				{
					strRegex = vConfig.getRegex(strRegex);
					if (!checkRegEx(strRegex,sSubText))
					{		
						vConfig.addError(sKey, vConfig.error.ERR_FORMAT, sSubText);
						bSubError = true;
						break;
					}
				}

				//check min length
				var intLengthMin = vConfig.getType(vConfig.type.TYP_LENGTH_MIN); 
				if(intLengthMin != '')
				{
					if (!checkLengthMin(intLengthMin, sSubText))
					{
						vConfig.addError(sKey, vConfig.error.ERR_LENGTH_MIN, sSubText);
						bSubError = true;
						break;
					}
				}

				//check max length
				var intLengthMax = vConfig.getType(vConfig.type.TYP_LENGTH_MAX);
				if(intLengthMax != '')
				{
					if (!checkLengthMax(intLengthMax, sSubText))
					{
						vConfig.addError(sKey, vConfig.error.ERR_LENGTH_MAX, sSubText);
						bSubError = true;
						break;
					}
				}

				//check valid			
				if (!checkValid(sSubText, sType))
				{
					vConfig.addError(sKey, vConfig.error.ERR_INVALID, sSubText);
					bSubError = true;
					break;
				}		

				//check min range
				var mixRangeMin = vConfig.getType(vConfig.type.TYP_RANGE_MIN); 
				if(mixRangeMin != '')
				{
					if (!checkRangeMin(mixRangeMin, sSubText, sType))
					{
						vConfig.addError(sKey, vConfig.error.ERR_RANGE_MIN, sSubText);
						bSubError = true;
						break;
					}
				}

				//check max range
				var mixRangeMax = vConfig.getType(vConfig.type.TYP_RANGE_MAX);
				if(mixRangeMax != '')
				{
					if (!checkRangeMax(mixRangeMax, sSubText, sType))
					{
						vConfig.addError(sKey, vConfig.error.ERR_RANGE_MAX, sSubText);
						bSubError = true;
						break;
					}
				}
				
				//check Compare
				var strCompareTag = vConfig.getType(vConfig.type.TYP_COMPARE_TAG); 
				var strCompareValue = vConfig.getType(vConfig.type.TYP_COMPARE_VALUE);  
				if(strCompareTag != '' && strCompareValue != '')
				{ 
					if (!checkCompare(strCompareTag, strCompareValue, sSubText, sType))
					{
						vConfig.addError(sKey, vConfig.error.ERR_COMPARE, sSubText);
						bSubError = true;
						break;
					}
				}
			}//end foreach delimiter value

			if(bSubError)
			{
				bError = true;
				continue;
			}

			//check match
			var sMatch =  vConfig.getType(vConfig.type.TYP_MATCH); 
			if(sMatch != '')
			{ 
				if (!checkMatch( sText, sMatch.split(",") ))
				{
					vConfig.addError(sKey, vConfig.error.ERR_MATCH);
					bError = true;
					continue;
				}
			}

			//check File
			var sFile =  vConfig.getType(vConfig.type.TYP_FILE); 
			if(sFile != '')
			{ 
				var sRequired = checkFile( aField[i], sFile.split(",") );
				if (!(sRequired == true))
				{
					vConfig.addError(sKey, sRequired);
					bError = true;
					continue;
				}
			}
			
			//check custom
			var strCustomFunc = vConfig.getType(vConfig.type.TYP_CUSTOM_FUNC); 
			var aParam = vConfig.getType(vConfig.type.TYP_CUSTOM_PARAM);
			aParam = aParam.split(',');
			if(strCustomFunc != '')
			{	
				if (!eval(strCustomFunc + "(aField[i], aParam)"))
				{		
					bError = true;
					continue;
				}
			}

			this.isValidInput(sForm, sKey);
		}

		if(bError)
		{
			this.onHandleError(oCtrl.form);
			return false;
		}
		return true;
	}, //end function onCheckSubmit

	isValidInput:function(sForm, sKey)
	{
		/* Public: Clear Error Msg */
		vConfig.form = sForm;
		vConfig.key = sKey;
		sDiv = vConfig.getType(vConfig.type.TYP_DIV);
		setDivMsg(sDiv, '');
		setObjVisibility(sDiv,'false'); 
		vConfig.killError(sKey);
	},
	
	onHandleError:function(oCtrl)
	{
		/* Public: Handle Error By Config */
		var sForm = oCtrl.name; 
		vConfig.form = sForm;

		var sKey;
		var sError;
		var aField = oCtrl.getElementsByTagName('*');
		for (var i=0; i<aField.length; i++)
		{
			// Allow for multiple values being assigned to the class attribute
			sKey = aField[i].getAttribute('name');
			if(sKey == null) continue; 
			sError = vConfig.getError(sKey);
			if(sError == "") continue;		
			this.onHandleErrorByKey(sForm, sKey);
		}		
	},

	onHandleErrorByKey:function(sForm, sKey)
	{
		/* Public: Handle Error By Config */
		vConfig.form = sForm;
		vConfig.key = sKey;

		var sDiv = vConfig.getType(vConfig.type.TYP_DIV);
		var sError = vConfig.getError(sKey);	
		var sMsg = this.getErrorMsg(sError);
		this.showError(sMsg, sDiv);		
	},
	
	getErrorMsg:function(sCode){
		/* Private: Pass Error Code, Handle Msg Variable, Return Error Msg */
		var sMsg = vConfig.getType(sCode) ; 
		if(sMsg == '') 
		{
			var sJs = "var sMsg = validator_error." + sCode + ";";
			eval(sJs);
		}
		if(typeof( sMsg ) == 'undefined') return "";

		var sLbl = vConfig.getType(vConfig.type.TYP_LABEL) ;
		var sVal = "";
		switch (sCode)
		{
			case vConfig.error.ERR_RANGE_MIN:
				sVal = vConfig.getType(vConfig.type.TYP_RANGE_MIN); 
				break;				
			case vConfig.error.ERR_RANGE_MAX:
				sVal = vConfig.getType(vConfig.type.TYP_RANGE_MAX); 
				break;	
			case vConfig.error.ERR_COMPARE:
				var sTag = vConfig.getType(vConfig.type.TYP_COMPARE_TAG); 
				var sValue = vConfig.getType(vConfig.type.TYP_COMPARE_VALUE);  
				sVal = sTag + ' ' + sValue;
				break;	
			case vConfig.error.ERR_LENGTH_MIN:
				sVal = vConfig.getType(vConfig.type.TYP_LENGTH_MIN); 
				break;	
			case vConfig.error.ERR_LENGTH_MAX:	
				sVal = vConfig.getType(vConfig.type.TYP_LENGTH_MAX);
				break;
			case vConfig.error.ERR_MATCH:	
				sVal = vConfig.getType(vConfig.type.TYP_MATCH); 
				sVal = this.getMatchValue(sVal);
				break;	
			case vConfig.error.ERR_REQUIRED_SELECT_MIN:	
				sVal = vConfig.getType(vConfig.type.TYP_REQUIRED_LIST); 
				sVal = sVal.split(",");
				sVal = sVal[0];
				break;
			case vConfig.error.ERR_REQUIRED_SELECT_MAX:	
				sVal = vConfig.getType(vConfig.type.TYP_REQUIRED_LIST); 
				sVal = sVal.split(",");
				sVal = sVal[1];
				break;
			case vConfig.error.ERR_REQUIRED_CHECK_MIN:	
				sVal = vConfig.getType(vConfig.type.TYP_REQUIRED_CB); 
				sVal = sVal.split(",");
				sVal = sVal[0];
				break;
			case vConfig.error.ERR_REQUIRED_CHECK_MAX:	
				sVal = vConfig.getType(vConfig.type.TYP_REQUIRED_CB); 
				sVal = sVal.split(",");
				sVal = sVal[1];
				break;
			case vConfig.error.ERR_FILE_EXT:
				sVal = vConfig.getType(vConfig.type.TYP_FILE); 
				sVal = sVal.split(";");
				sVal = sVal[1];			
				break;
		}
		
		var sKey = vConfig.key;
		var sIpt = vConfig.getErrorInput(sKey);		
		sMsg = sMsg.replace("lbl_label",sLbl);
		sMsg = sMsg.replace("lbl_value",sVal);
		sMsg = sMsg.replace("lbl_input",sIpt);
		return sMsg;
	},

	showError:function (sMsg, sDiv)
	{
		/*Private: Display Error*/ 
		if(sMsg == "") return;
		var oDiv = document.getElementById(sDiv);
		if(oDiv != null) 
		{
			setObjVisibility(sDiv, 'true'); 
			setDivMsg(sDiv, sMsg);			
		}
	},
	
	getMatchValue:function(sVal)
	{
		/*Private: Get Match Value*/ 
		var aVal = sVal.split(",");
		var sValue = "";
		if(aVal.length > 1)
		{
			for(var i=0; i<aVal.length; i++)
			{
				vConfig.key = aVal[i].toString();
				sValue += vConfig.getType(vConfig.type.TYP_LABEL) ;
				if(i < aVal.length -1)  sValue += " , ";
			}
		}
		else
		{
			vConfig.key = aVal.toString();
			sValue += vConfig.getType(vConfig.type.TYP_LABEL) ;
		}		
		return sValue;
	},
	
	unfoundConfig:function()
	{
		var sMsg = validator_error.ERR_TIMEOUT;
		alert(sMsg);
	}
};//end validate object


var validator_error = {
	ERR_TIMEOUT : "Session Timeout. Please re-submit this form",
	ERR_REQUIRED    : "Please fill in lbl_label !" ,
	ERR_REQUIRED_SELECT   : "Please select lbl_label !" ,
	ERR_REQUIRED_SELECT_MAX   : "Please select maximum lbl_value for lbl_label !" ,
	ERR_REQUIRED_SELECT_MIN   : "Please select minimum lbl_value for lbl_label !" ,
	ERR_REQUIRED_CHECK    : "Please check lbl_label !" ,
	ERR_REQUIRED_CHECK_MAX   : "Please check maximum lbl_value for lbl_label !" ,
	ERR_REQUIRED_CHECK_MIN   : "Please check minimum lbl_value for lbl_label !" ,
	ERR_FORMAT      : "Please enter your lbl_label in a valid format!" ,
	ERR_RANGE_MIN   : "Minimum value of lbl_value for lbl_label !" ,
	ERR_RANGE_MAX	: "Exceed maximum range of lbl_value for lbl_label !" ,
	ERR_COMPARE		: "lbl_label must lbl_value !" ,
	ERR_LENGTH_MIN  : "Length should not less then lbl_value for lbl_label !" ,
	ERR_LENGTH_MAX  : "Exceed maximum length of lbl_value for lbl_label !" ,
	ERR_INVALID		: "Invalid value for lbl_label ! ",
	ERR_MATCH		: "lbl_label should match with lbl_value",
	ERR_FILE_MAXSIZE	: "lbl_label exceeds maximum file size lbl_value",
	ERR_FILE_EXT		: "lbl_label do not match format lbl_value",
	ERR_FILE_INI_SIZE : "lbl_label exceeds the upload_max_filesize directive in php.ini.",
	ERR_FILE_FORM_SIZE : "lbl_label exceeds the MAX_FILE_SIZE directive that specified in HTML form.",
	ERR_FILE_PARTIAL : "lbl_label was only partially uploaded.",
	ERR_FILE_NO_TMP_DIR : "lbl_label was missing a temporary folder.",
	ERR_FILE_CANT_WRITE : "lbl_label was failed to write file to disk.",
	ERR_FILE_EXTENSION : "lbl_label was stopped by extension."		
	
};
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(0($){$.E.s=0(){4 e=\'h\';F 9.t(0(){4 a=$(9);4 b=a.1(\'5\');4 c=$(9.G);4 d=$(H);0 f(){6(a.7()===b&&a.g(e)){a.7(\'\').u(e)}}0 v(){6(b){a.h(0(){6(a.7()===\'\'||a.g(e)){a.7(b).I(e)}}).J(f).h()}}v();c.K(f);d.L(f)})}})(M);0 w(i){4 b=\'#N\';4 c=$(b);4 d=O;i.t(0(){4 a=$(9);P(a.7()){x\'2\':c.1(\'5\',\'j y 5\');c.1(\'8\',\'k\');l{m()}n(o){}p;x\'3\':c.1(\'5\',\'j z q\');c.1(\'8\',\'k\');l{m()}n(o){}p;Q:c.1(\'5\',\'j y 5, z q, R, S\');c.1(\'8\',\'A\');l{B()}n(o){}p}});6(c.1(\'5\'))c.s();0 B(){6(!c.g(\'r\')){c.1(\'8\',\'A\');T()}}0 m(){6(c.g(\'r\')){c.U();c.C(\'V.D\');c.C(\'W.D\');c.1(\'8\',\'k\');c.u(\'r\')}}}$(0(){w($("X[q=\'Y\']:Z"))});',62,62,'function|attr|||var|title|if|val|autosuggest|this||||||disable|hasClass|blur||Enter|off|try|turnSuggestOff|catch|err|break|name|ac_input|hint|each|removeClass|enable|updateCaption|case|job|company|on|turnSuggestOn|unbind|autocomplete|fn|return|form|window|addClass|focus|submit|unload|jQuery|key|false|switch|default|skill|etc|enableAutoComplete|unautocomplete|keypress|keydown|input|area|checked'.split('|'),0,{}));
/**
 * Ajax Queue Plugin
 * 
 * Homepage: http://jquery.com/plugins/project/ajaxqueue
 * Documentation: http://docs.jquery.com/AjaxQueue
 */

/**

<script>
$(function(){
	jQuery.ajaxQueue({
		url: "test.php",
		success: function(html){ jQuery("ul").append(html); }
	});
	jQuery.ajaxQueue({
		url: "test.php",
		success: function(html){ jQuery("ul").append(html); }
	});
	jQuery.ajaxSync({
		url: "test.php",
		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
	});
	jQuery.ajaxSync({
		url: "test.php",
		success: function(html){ jQuery("ul").append("<b>"+html+"</b>"); }
	});
});
</script>
<ul style="position: absolute; top: 5px; right: 5px;"></ul>

 */
/*
 * Queued Ajax requests.
 * A new Ajax request won't be started until the previous queued 
 * request has finished.
 */

/*
 * Synced Ajax requests.
 * The Ajax request will happen as soon as you call this method, but
 * the callbacks (success/error/complete) won't fire until all previous
 * synced requests have been completed.
 */


(function($) {
	
	var ajax = $.ajax;
	
	var pendingRequests = {};
	
	var synced = [];
	var syncedData = [];
	
	$.ajax = function(settings) {
		// create settings for compatibility with ajaxSetup
		settings = jQuery.extend(settings, jQuery.extend({}, jQuery.ajaxSettings, settings));
		
		var port = settings.port;
		
		switch(settings.mode) {
		case "abort": 
			if ( pendingRequests[port] ) {
				pendingRequests[port].abort();
			}
			return pendingRequests[port] = ajax.apply(this, arguments);
		case "queue": 
			var _old = settings.complete;
			settings.complete = function(){
				if ( _old )
					_old.apply( this, arguments );
				jQuery([ajax]).dequeue("ajax" + port );;
			};
		
			jQuery([ ajax ]).queue("ajax" + port, function(){
				ajax( settings );
			});
			return;
		case "sync":
			var pos = synced.length;
	
			synced[ pos ] = {
				error: settings.error,
				success: settings.success,
				complete: settings.complete,
				done: false
			};
		
			syncedData[ pos ] = {
				error: [],
				success: [],
				complete: []
			};
		
			settings.error = function(){ syncedData[ pos ].error = arguments; };
			settings.success = function(){ syncedData[ pos ].success = arguments; };
			settings.complete = function(){
				syncedData[ pos ].complete = arguments;
				synced[ pos ].done = true;
		
				if ( pos == 0 || !synced[ pos-1 ] )
					for ( var i = pos; i < synced.length && synced[i].done; i++ ) {
						if ( synced[i].error ) synced[i].error.apply( jQuery, syncedData[i].error );
						if ( synced[i].success ) synced[i].success.apply( jQuery, syncedData[i].success );
						if ( synced[i].complete ) synced[i].complete.apply( jQuery, syncedData[i].complete );
		
						synced[i] = null;
						syncedData[i] = null;
					}
			};
		}
		return ajax.apply(this, arguments);
	};
	
})(jQuery);
/*
 * jQuery Autocomplete plugin 1.1
 *
 * Copyright (c) 2009 J?rn Zaefferer
 * Modified Shea Kai
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
 */
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(3($){$.1i.1j({19:3(b,c){5 d=Y b=="1C";c=$.1j({},$.N.1Y,{R:d?b:S,B:d?S:b,1D:d?$.N.1Y.1D:10,1a:c&&!c.1E?10:3F},c);c.1F=c.1F||3(a){7 a};c.1G=c.1G||c.1Z;7 y.I(3(){21 $.N(y,c)})},O:3(a){7 y.T("O",a)},1k:3(a){7 y.Z("1k",[a])},22:3(){7 y.Z("22")},23:3(a){7 y.Z("23",[a])},24:3(){7 y.Z("24")}});$.N=3(h,j){5 k={2w:38,2x:40,2y:46,2z:9,2A:13,2B:27,2C:3G,2D:33,2E:34,2F:8};5 l=$(h).3H("19","3I").U(j.2G);5 m;5 n="";5 o=$.N.2H(j);5 p=0;5 r;5 s={1H:C};5 t=$.N.2I(j,h,26,s);5 u;$.1l.2J&&$(h.2K).T("3J.19",3(){4(u){u=C;7 C}});l.T(($.1l.2J?"3K":"3L")+".19",3(a){p=1;r=a.2L;3M(a.2L){V k.2w:a.1m();4(t.P()){t.2M()}A{11(0,H)}W;V k.2x:a.1m();4(t.P()){t.2N()}A{11(0,H)}W;V k.2D:a.1m();4(t.P()){t.2O()}A{11(0,H)}W;V k.2E:a.1m();4(t.P()){t.2P()}A{11(0,H)}W;V j.1b&&$.1n(j.X)==","&&k.2C:V k.2A:4(26()){a.1m();u=H;7 C}W;V k.2z:V k.2B:t.12();W;3N:28(m);m=29(11,j.1D);W}}).2Q(3(){p++}).3O(3(){p=0;4(!s.1H){2R()}}).2S(3(){4(p++>1&&!t.P()){11(0,H)}}).T("1k",3(){5 c=(1I.w>1)?1I[1]:S;3 2a(q,a){5 b;4(a&&a.w){1c(5 i=0;i<a.w;i++){4(a[i].O.L()==q.L()){b=a[i];W}}}4(Y c=="3")c(b);A l.Z("O",b&&[b.B,b.J])}$.I(14(l.M()),3(i,a){2b(a,2a,2a)})}).T("22",3(){o.1o()}).T("23",3(){$.1j(j,1I[1]);4("B"2T 1I[1])o.1p()}).T("24",3(){t.1d();l.1d();$(h.2K).1d(".19")});3 26(){5 b=t.2U();4(!b)7 C;5 v=b.O;n=v;4(j.1b){5 c=14(l.M());4(c.w>1){5 d=j.X.w;5 e=$(h).1e().1J;5 f,1K=0;$.I(c,3(i,a){1K+=a.w;4(e<=1K){f=i;7 C}1K+=d});c[f]=v;v=c.2V(j.X)}v+=j.X}l.M(v);1q();l.Z("O",[b.B,b.J]);7 H}3 11(a,b){4(r==k.2y){t.12();7}5 c=l.M();4(!b&&c==n)7;n=c;c=1f(c);4(c.w>=j.2c){l.U(j.2d);4(!j.1L)c=c.L();2b(c,2W,1q)}A{1M();t.12()}};3 14(b){4(!b)7[""];4(!j.1b)7[$.1n(b)];7 $.3P(b.2e(j.X),3(a){7 $.1n(b).w?$.1n(a):S})}3 1f(a){4(!j.1b)7 a;5 b=14(a);4(b.w==1)7 b[0];5 c=$(h).1e().1J;4(c==a.w){b=14(a)}A{b=14(a.2f(a.2X(c),""))}7 b[b.w-1]}3 1N(q,a){4(j.1N&&(1f(l.M()).L()==q.L())&&r!=k.2F){l.M(l.M()+a.2X(1f(n).w));$(h).1e(n.w,n.w+a.w)}};3 2R(){28(m);m=29(1q,3Q)};3 1q(){5 c=t.P();t.12();28(m);1M();4(j.2Y){l.1k(3(a){4(!a){4(j.1b){5 b=14(l.M()).1r(0,-1);l.M(b.2V(j.X)+(b.w?j.X:""))}A{l.M("");l.Z("O",S)}}})}};3 2W(q,a){4(a&&a.w&&p){1M();t.2g(a,q);1N(q,a[0].J);t.2h()}A{1q()}};3 2b(c,d,e){4(!j.1L)c=c.L();5 f=o.2Z(c);4(f&&f.w){d(c,f)}A 4((Y j.R=="1C")&&(j.R.w>0)){5 g={3R:+21 3S()};$.I(j.30,3(a,b){4(a==\'R\'&&b.w>0){g[a]=b+\'?31=\'+1f(c);3T(g[a])}A{g[a]=Y b=="3"?b():b}});$.3U({3V:"3W",3X:"19"+h.3Y,32:j.32,R:j.R,B:$.1j({31:1f(c)},g),3Z:3(a){5 b=j.1O&&j.1O(a)||1O(a);o.1s(c,b);d(c,b)}})}A{t.35();e(c)}};3 1O(a){5 b=[];5 c=a.2e("\\n");1c(5 i=0;i<c.w;i++){5 d=$.1n(c[i]);4(d){d=d.2e("\\t");b[b.w]={B:d,J:d[0],O:j.1P&&j.1P(d,d[0])||d[0]}}}7 b};3 1M(){l.1t(j.2d)}};$.N.1Y={2G:"41",36:"42",2d:"43",2c:2,1D:44,1L:C,1u:H,1Q:C,1v:20,1a:45,2Y:C,30:{},2i:C,1Z:3(a){7 a[0]},1G:S,1N:C,G:0,1b:C,X:", ",1F:3(a,b){7 a.2f(21 47("(?![^&;]+;)(?!<[^<>]*)("+b.2f(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/37,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","37"),"<39>$1</39>")},1E:H,1R:48};$.N.2H=3(g){5 h={};5 j=0;3 1u(s,a){4(!g.1L)s=s.L();5 i=s.3a(a);4(g.1Q=="49"){i=s.L().1k("\\\\b"+a.L())}4(i==-1)7 C;7 i==0||g.1Q};3 1s(q,a){4(j>g.1v){1o()}4(!h[q]){j++}h[q]=a}3 1p(){4(!g.B)7 C;5 b={},3b=0;4(!g.R)g.1v=1;b[""]=[];1c(5 i=0,3c=g.B.w;i<3c;i++){5 c=g.B[i];c=(Y c=="1C")?[c]:c;5 d=g.1G(c,i+1,g.B.w);4(d===C)2j;5 e=d.4a(0).L();4(!b[e])b[e]=[];5 f={J:d,B:c,O:g.1P&&g.1P(c)||d};b[e].2k(f);4(3b++<g.1a){b[""].2k(f)}};$.I(b,3(i,a){g.1v++;1s(i,a)})}29(1p,25);3 1o(){h={};j=0}7{1o:1o,1s:1s,1p:1p,2Z:3(q){4(!g.1v||!j)7 S;4(!g.R&&g.1Q){5 a=[];1c(5 k 2T h){4(k.w>0){5 c=h[k];$.I(c,3(i,x){4(1u(x.J,q)){a.2k(x)}})}}7 a}A 4(h[q]){7 h[q]}A 4(g.1u){1c(5 i=q.w-1;i>=g.2c;i--){5 c=h[q.4b(0,i)];4(c){5 a=[];$.I(c,3(i,x){4(1u(x.J,q)){a[a.w]=x}});7 a}}}7 S}}};$.N.2I=3(e,f,g,h){5 j={K:"4c"};5 k,D=-1,B,1S="",2l=H,F,E;3 3d(){4(!2l)7;F=$("<4d/>").12().U(e.36).15("3e","3f").2m(1T.3g);E=$("<4e/>").2m(F).2S(3(a){$(16(a)).U(j.K);g();f.2Q();7 C}).4f(3(){h.1H=H}).4g(3(){h.1H=C});4(e.G>0)F.15("G",e.G);2l=C}3 2n(a){4(16(a).3h&&16(a).3h.4h()==\'3i\'){D=$("2o",E).1t(j.K).3j(16(a));$(16(a)).U(j.K)}}3 16(a){5 b=a.16;4i(b&&b.4j!="3i")b=b.1w;4(!b)7[];7 b}3 17(a){k.1r(D,D+1).1t(j.K);3k(a);5 b=k.1r(D,D+1).U(j.K);4(e.1E){5 c=0;k.1r(0,D).I(3(){c+=y.1g});4((c+b[0].1g-E.1x())>E[0].4k){E.1x(c+b[0].1g-E.4l())}A 4(c<E.1x()){E.1x(c)}}};3 3k(a){D+=a;4(D<0){D=k.1y()-1}A 4(D>=k.1y()){D=0}}3 3l(a){7 e.1a&&e.1a<a?e.1a:a}3 3m(){E.3n();5 a=3l(B.w);1c(5 i=0;i<a;i++){4(!B[i])2j;5 b=e.1Z(B[i].B,i+1,a,B[i].J,1S);4(b===C)2j;5 c=$("<2o/>").2p(e.1F(b,1S)).U(i%2==0?"4m":"4n").2m(E)[0];$.B(c,"3o",B[i])}k=E.4o("2o");4(e.2i){k.1r(0,1).U(j.K);D=0}4($.1i.1z)E.1z()}7{2g:3(d,q){3d();B=d;1S=q;3m()},2N:3(){17(1)},2M:3(){17(-1)},2O:3(){4(D!=0&&D-8<0){17(-D)}A{17(-8)}},2P:3(){4(D!=k.1y()-1&&D+8>k.1y()){17(k.1y()-1-D)}A{17(8)}},12:3(){F&&F.12();k&&k.1t(j.K);D=-1;F&&F.1d(\'3p\')},P:3(){7 F&&F.4p(":P")},4q:3(){7 y.P()&&(k.2q("."+j.K)[0]||e.2i&&k[0])},2h:3(){5 b=$(f).4r();F.15({G:Y e.G=="1C"||e.G>0?e.G:$(f).G(),1h:b.1h+f.1g,18:b.18}).2h();F.3q(3(a){F.1d(\'3q\');F.T(\'3p\',2n);2n(a)});4(e.1E){E.1x(0);E.15({3r:e.1R,4s:\'Q\'});4($.1l.3s&&Y 1T.3g.3t.3r==="1U"){5 c=0;k.I(3(){c+=y.1g});5 d=c>e.1R;E.15(\'1A\',d?e.1R:c);4(!d){k.G(E.G()-1V(k.15("3u-18"))-1V(k.15("3u-4t")))}}}},2U:3(){5 a=k&&k.2q("."+j.K).1t(j.K);7 a&&a.w&&$.B(a[0],"3o")},35:3(){E&&E.3n()},1d:3(){F&&F.4u()}}};$.1i.1e=3(b,c){4(b!==1U){7 y.I(3(){4(y.2r){5 a=y.2r();4(c===1U||b==c){a.4v("2s",b);a.3v()}A{a.4w(H);a.4x("2s",b);a.4y("2s",c);a.3v()}}A 4(y.3w){y.3w(b,c)}A 4(y.1W){y.1W=b;y.3x=c}})}5 d=y[0];4(d.2r){5 e=1T.1e.4z(),3y=d.J,2t="<->",2u=e.3z.w;e.3z=2t;5 f=d.J.3a(2t);d.J=3y;y.1e(f,f+2u);7{1J:f,3A:f+2u}}A 4(d.1W!==1U){7{1J:d.1W,3A:d.3x}}}})(3B);(3($){$.1i.4A=$.1i.1z=3(s){4($.1l.3s&&$.1l.4B==\'6.0\'){s=$.1j({1h:\'Q\',18:\'Q\',G:\'Q\',1A:\'Q\',3C:H,2v:\'4C:C;\'},s||{});5 a=3(n){7 n&&n.4D==4E?n+\'1B\':n},2p=\'<3D 4F="1z"4G="0"4H="-1"2v="\'+s.2v+\'"\'+\'3t="2g:4I;3e:3f;z-3j:-1;\'+(s.3C!==C?\'2q:4J(4K=\\\'0\\\');\':\'\')+\'1h:\'+(s.1h==\'Q\'?\'1X(((1V(y.1w.3E.4L)||0)*-1)+\\\'1B\\\')\':a(s.1h))+\';\'+\'18:\'+(s.18==\'Q\'?\'1X(((1V(y.1w.3E.4M)||0)*-1)+\\\'1B\\\')\':a(s.18))+\';\'+\'G:\'+(s.G==\'Q\'?\'1X(y.1w.4N+\\\'1B\\\')\':a(s.G))+\';\'+\'1A:\'+(s.1A==\'Q\'?\'1X(y.1w.1g+\\\'1B\\\')\':a(s.1A))+\';\'+\'"/>\';7 y.I(3(){4($(\'> 3D.1z\',y).w==0)y.4O(1T.4P(2p),y.4Q)})}7 y}})(3B);',62,301,'|||function|if|var||return|||||||||||||||||||||||||length||this||else|data|false|active|list|element|width|true|each|value|ACTIVE|toLowerCase|val|Autocompleter|result|visible|auto|url|null|bind|addClass|case|break|multipleSeparator|typeof|trigger||onChange|hide||trimWords|css|target|moveSelect|left|autocomplete|max|multiple|for|unbind|selection|lastWord|offsetHeight|top|fn|extend|search|browser|preventDefault|trim|flush|populate|hideResultsNow|slice|add|removeClass|matchSubset|cacheLength|parentNode|scrollTop|size|bgiframe|height|px|string|delay|scroll|highlight|formatMatch|mouseDownOnSelect|arguments|start|progress|matchCase|stopLoading|autoFill|parse|formatResult|matchContains|scrollHeight|term|document|undefined|parseInt|selectionStart|expression|defaults|formatItem||new|flushCache|setOptions|unautocomplete||selectCurrent||clearTimeout|setTimeout|findValueCallback|request|minChars|loadingClass|split|replace|display|show|selectFirst|continue|push|needsInit|appendTo|fnMouseover|li|html|filter|createTextRange|character|teststring|textLength|src|UP|DOWN|DEL|TAB|RETURN|ESC|COMMA|PAGEUP|PAGEDOWN|BACKSPACE|inputClass|Cache|Select|opera|form|keyCode|prev|next|pageUp|pageDown|focus|hideResults|click|in|selected|join|receiveData|substring|mustMatch|load|extraParams|query|dataType|||emptyList|resultsClass|gi||strong|indexOf|nullData|ol|init|position|absolute|body|nodeName|LI|index|movePosition|limitNumberOfItems|fillList|empty|ac_data|mouseover|mousemove|maxHeight|msie|style|padding|select|setSelectionRange|selectionEnd|orig|text|end|jQuery|opacity|iframe|currentStyle|150|188|attr|off|submit|keypress|keydown|switch|default|blur|map|200|timestamp|Date|encodeURI|ajax|mode|abort|port|name|success||ac_input|ac_results|ac_loading|400|100||RegExp|180|word|charAt|substr|ac_over|div|ul|mousedown|mouseup|toUpperCase|while|tagName|clientHeight|innerHeight|ac_even|ac_odd|find|is|current|offset|overflow|right|remove|move|collapse|moveStart|moveEnd|createRange|bgIframe|version|javascript|constructor|Number|class|frameborder|tabindex|block|Alpha|Opacity|borderTopWidth|borderLeftWidth|offsetWidth|insertBefore|createElement|firstChild'.split('|'),0,{}));

