(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)})}});
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
;var VARS_IN_QS = "_RETURN|_redir_no_access_|_lc_|_SEARCH_RS_|_rs|__s|pp_do|__cmd|utm_medium|utm_source|utm_campaign|utm_content|utm_term";

function do_link(section, params){
	
	var parts = section.split(".");
	var module = parts[0];
	var page = parts[1];
	
	var send_to_file, base_path;
	
	var array_params = Array();
	var i = 0;
	var j = 0;
	var send_params = "";
	var param = Array();
	array_params = params.split("&");
	
	var params_concat = Array();
	var params_concat_qs = Array();
	var arr_vars_in_qs = VARS_IN_QS.split("|");
				
	// Get module & page
	var res_file = section.split(".");
	
	// Get rewrite mode
	var rewrite_mode = "";
	if ( (URL_REWRITE == "on") || (URL_REWRITE == "on.v2") || (URL_REWRITE == "off") || (URL_REWRITE == "") ) {
		rewrite_mode = URL_REWRITE;
	}
	else {
		eval("var rewrite_mode_obj = " + URL_REWRITE);
	 	rewrite_mode = eval("rewrite_mode_obj." + module);
	}
	
	if (rewrite_mode == "on") {
	
		var force_files = SUBDOMAINS_FORCE_FILES_JS.split(",");
		if (SUBDOMAINS_STATUS == "on" && !js_in_array(section, force_files)) {
			send_to_file = res_file[1];
			if (res_file[0] == "site") {
				res_file[0] = "www";
			}
			base_path = "http://" + res_file[0] + "." + DOMAIN_BASE;
		}
		else {
			send_to_file = section.replace(".", "-");
			base_path = PATH;
		}
	
		while (i < array_params.length){
			if (array_params[i] != "") {
				param = array_params[i].split("=");
				send_params = send_params + param[0] + "-" + param[1];
				if(i < (array_params.length - 1)) {
					send_params = send_params + "~";
				}
			}
			i ++;
		}
				
		if (send_params != "") {
			
			var tmp_pr1 = send_params.split("~");
			var cnter_params = cnter_params_qs = 0;
			while (j < tmp_pr1.length){
				tmp_params_concat_qs = tmp_pr1[j].split("-");
				if (js_in_array(tmp_params_concat_qs[0], arr_vars_in_qs)) {
					params_concat_qs[cnter_params_qs] = tmp_params_concat_qs.join("=");
					cnter_params_qs ++;
				}
				else {
					params_concat[cnter_params] = tmp_pr1[j];
					cnter_params ++;
				}
				j ++;
			}
			if (params_concat_qs.length > 0) {
				send_params = params_concat.join("~") + ".html?" + params_concat_qs.join("&");
				the_link = base_path + "/" + send_to_file + "~" + send_params;
			}
			else {
				the_link = base_path + "/" + send_to_file + "~" + send_params + ".html";
			}						
		}
		else {
			the_link = base_path + "/" + send_to_file + ".html";
		}
		
	}
	else if (rewrite_mode == "on.v2") {
		
		send_to_file = res_file[1];
		
		var force_files = SUBDOMAINS_FORCE_FILES_JS.split(",");
		
		if (SUBDOMAINS_STATUS == "on" && !js_in_array(section, force_files)) {
			
			// Use www instead of site
			if (res_file[0] == "site") {
				res_file[0] = "www";
			}
			base_path = "http://" + res_file[0] + "." + DOMAIN_BASE + "/";
			if (send_to_file == "index") {
				send_to_file = "";
			}
		}
		else {
			if ( (res_file[0] == "site") && (!js_in_array(section, force_files)) ) {
				res_file[0] = "";
			}
			if (send_to_file == "index" && res_file[0] == "") {
				send_to_file = "";
			}
			base_path = PATH;
			if (res_file[0] != "") {
				base_path += "/" + res_file[0] + "-";
			}
			else {
				base_path += "/";
			}
		}
		
		var rewrite_vars = new Array();
		var skip_vars = new Array();
		var do_rewrite_mapping = 0;
		
		// Extract the rewrite mapping
		var rewrite_mapping = URL_REWRITE_MAPPING_JS.split("|");
		
		i = 0;
		while (i < rewrite_mapping.length){
			var tmp_mapping = rewrite_mapping[i].split(",");

			// If the current page has mapping		
			if (send_to_file == tmp_mapping[0]) {
				j = 1;
				
				// Extract variables to mapp
				while (j < tmp_mapping.length){
					rewrite_vars[j] = tmp_mapping[j];
					j ++;
				}
				
				// Do mapping is on
				do_rewrite_mapping = 1;
			}
			
			i ++;
		}
						
		i = 0;
		
		// Check url params
		while (i < array_params.length){
			if (array_params[i] != "") {
				
				// Get param data
				param = array_params[i].split("=");
				
				// If do mapping is on
				if (do_rewrite_mapping == 1) {
					j = 1;
					var do_skip = 0;
					
					// Check if we should rewrite this param
					while (j < rewrite_vars.length) {
						if (rewrite_vars[j] == param[0]) {
							
							// Send param value to another list
							skip_vars[j] = param[1];
							do_skip = 1;
						}
						j ++;
					}
					
					// If no skipping add param to url vars list
					if (!do_skip) {
						send_params = send_params + param[0] + "=" + param[1];
						if(i < (array_params.length - 1)) {
							send_params = send_params + "&";
						}
					}
				}
				else {
					// Add param to url vars list
					send_params = send_params + param[0] + "=" + param[1];
					if(i < (array_params.length - 1)) {
						send_params = send_params + "&";
					}
				}
			}
			i ++;
		}
						
		
		// If do mapping is on
		if (do_rewrite_mapping == 1) {
			i = 0;
			
			// Add skipped params values to the name of the page
			while (i < skip_vars.length) {
				if (skip_vars[i]) {
					send_to_file += "/" + skip_vars[i];
				}
				i ++;
			}
		}
		else {
			if (send_to_file != "") {
				send_to_file += "/";
			}
		}
					
		// Add params to link
		if (send_params != "") {
			the_link = base_path + send_to_file + "?" + send_params;
		}
		else {
			the_link = base_path + send_to_file;
		}
		
	}
	else {
		the_link = PATH_INDEX + "?_init=" + module + "." + page + "&" + params;
	}
	
	return the_link;
}

function form_send_params(section, params, mode){
	
	if (mode == "rs") {
		
		var array_params = Array();
		var i = 0;
		var send_params = "";
		var param = Array();
		array_params = params.split("&");
		
		while (i < array_params.length){
			if (array_params[i] != '') {
				param = array_params[i].split("=");
				send_params = send_params + "<INPUT TYPE=\"HIDDEN\" NAME=\"" + param[0] + "\" VALUE=\"" + param[1] + "\">";
			}
			i ++;
		}
		
		if (send_params) {		
			document.open();
			document.write("<HTML><BODY><FORM METHOD=\"POST\" NAME=\"_form_send_params_\" ACTION=\"" + do_link(section, "") + "\">");
			document.write(send_params);
			// alert(send_params);
			document.write("</FORM>");
			document.write("<SCR");
			document.write("IPT LANGUAGE=\"JavaScript\">document._form_send_params_.submit();</SCR");
			document.write("IPT></BODY></HTML>");			
			document.close();		
		}
	}
	else {
		document.location = do_link(section, params);
	}
	
	return false;
}

function form_do_submit(form_name, button_name){
	
	if (!form_is_submitted) {
		eval("document." + form_name + "." + button_name + ".disabled=true");
		eval("document." + form_name + ".submit()");
		eval("submitted_form = '" + form_name + "'");
		eval("submission_button = '" + button_name + "'");
		form_is_submitted = 1;
	}
	
	return false;
}

function form_do_reset(form_name, button_name){
	
	if (submitted_form != "" && submission_button != "") {
		eval("document." + form_name + "." + button_name + ".disabled=false");
	}
			
}

function form_set_select(sel_name, form_name, sel_index){
	
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + sel_name) == "object")) {
	
		sel_length = eval("document." + form_name + "." + sel_name + ".length");
		
		for (optionCounter = 0; optionCounter < sel_length; optionCounter++) {
			
			if (eval("document." + form_name + "." + sel_name + ".options[optionCounter].value == '" + sel_index + "'")) {
				
				eval("document." + form_name + "." + sel_name + ".selectedIndex = optionCounter");
				
			}
			
		}
	
	}
	
}

function form_set_checked(check_name, form_name, checked_mode){
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + check_name) == "object")) {
	
		if (checked_mode != "" && checked_mode != 0 && checked_mode != "off") {
			eval("document." + form_name + "." + check_name + ".checked = true");
		}
	
	}
	
}

function form_set_radio(radio_name, form_name, selected_value){
    
	 if ((form_name != "") && (typeof eval("document." + form_name + "." + radio_name) == "object")) {
	 	
	 	eval("var rad = document." + form_name + "." + radio_name);

	 	for(i=0; i<rad.length; i++){
		
	 		if(rad[i].value == selected_value){
				rad[i].checked = true;
				return true;
			}
			
		}
		
		return false;
	}

}

function form_set_inp(inp_name, form_name, inp_value){
	
	if ((form_name != "") && (typeof eval("document." + form_name + "." + inp_name) == "object")) {
		eval("document." + form_name + "." + inp_name + ".value = \"" + inp_value + "\"");
	}
	
}

function form_check_all(c) {
	
	var f = c.form;
	var ck = c.checked;
	
	for (i = 0; i < f.elements.length; i++) {
		if ((f.elements[i] != c) && (f.elements[i].type == "checkbox")) {
			f.elements[i].checked = ck;
		}
	}
	
}

function win_open(mypage, myname, w, h, win_position, win_scroll, win_resizable, win_toolbar, win_location, win_status, win_menubar){
	
	var win = null;
	var LeftPosition, TopPosition;
	
		
	if (w) {
	}
	else {
		w = 600;
	}
	
	if (h) {
	}
	else {
		h = 600;
	}
	
	if (win_position == "topright") {
		LeftPosition = (screen.width) ? (screen.width - w - 12) : 0;
		TopPosition = 20;
	}
	else if (win_position == "center") {
		LeftPosition = (screen.width) ? ((screen.width-w) / 2) : 0;
		TopPosition = (screen.height) ? ((screen.height-h) / 2) : 0;
	}
	
	settings = 'height = ' + h + ', width = ' + w + ', top = ' + TopPosition + ', left = ' + LeftPosition;
	settings += (win_scroll == "yes") ? ", scrollbars=yes" : ", scrollbars=no"; 
	settings += (win_resizable == "yes") ? ", resizable=yes" : ", resizable=no";
	settings += (win_toolbar == "yes") ? ", toolbar=yes" : ", toolbar=no";
	settings += (win_location == "yes") ? ", location=yes" : ", location=no";
	settings += (win_status == "yes") ? ", status=yes" : ", status=no";
	settings += (win_menubar == "yes") ? ", menubar=yes" : ", menubar=no"; 
	
	win = window.open(mypage, myname, settings);
	if (win == null) {
		alert("Your popup blocker stopped an window from opening\nPlease disable your popup blocker if you wish to see window content!");
	}
	else {
	    if (window.focus) {win.focus()}
	}
	
}

var EL_VISIB = new Array();
function dom_toggle_element(el, visible){

	visible = (visible != false && visible != true) ? (EL_VISIB[el] ? false : true) : visible;
	var el_handle = dom_get_element(el);
	
	if (el_handle) {
		if (!visible) {
			el_handle.style.display = 'none';
		}
		else if (visible) {
			el_handle.style.display = '';
		}
		
		EL_VISIB[el] = visible;
	}
}

function dom_get_element(id){
        var obj;

        if (document.all) {
                eval('obj = document.all("' + id + '")');
        }
        else if (document.layers) {                
                eval('obj = document.layers["' + id + '"]');
        }
        else if (document.getElementById) {        
                eval('obj = document.getElementById("' + id + '")');
        }
        
        return obj;
}


function getObjByName(name,doc) {
	var o = 0;
  	if(!doc) {
  		doc = document;
  	}
  	if(doc[name]) {
  		o=doc[name];
  	}
  	if(document.all && doc.all[name]) {
  		o=doc.all[name];
  	}
  	if(o) {
    		if(!o.getElementsByTagName) {
    			o.getElementsByTagName = getElementsArray;
    		}
    		return o;
  	}
  	if(document.layers) {
    		for(var i=0; i < doc.layers.length; i++){
      			var lyrdoc = doc.layers[i].document;
      			if(lyrdoc[name]) {
      				return lyrdoc[name];
      			}
      			if(lyrdoc.layers.length > 0) {
        				var o = getObjByName(name,lyrdoc);
        				if(o) {
        					return o;
        				}
      			}
    		}
  	}
  	return 0;
}


function textCounter(field, cntfield, maxlimit) {
	var obj_field = getObjByName(field);
	var obj_cntfield = getObjByName(cntfield);
	if (obj_field.value.length > maxlimit){
        	obj_field.value = obj_field.value.substring(0, maxlimit);
	}
   	else {
       		obj_cntfield.value = maxlimit - obj_field.value.length;
   	}
}


function print_array(arr, lvl) {

	lvl = (lvl > 0) ? lvl : 1;
	var level = lvl;
	
	var tab = "\t";
	if (level > 1) {
		for (k=1; k < level-1; k++) {
			tab += "\t";
		}
		
		var buff = "Array\n" + tab + "(\n";
		tab += "\t";
	}
	else {
		var buff = "Array\n(\n";
	}
	
	var i = 0;
	for (var i in arr) {
		if (typeof(arr[i]) == "object") {
			buff += tab + "[" + i + "]" + " => " + print_array(arr[i], level + 1) + tab + ")\n";
		}
		else {
			buff += tab + "[" + i + "]" + " => " + arr[i] + tab + "\n";
		}
	}
	
	if (level > 1) {
		return buff;
	}
	else {
		alert(buff + ")\n");
	}
}


function js_in_array(the_needle, the_haystack, simpleMatch){

	var the_hay = the_haystack.toString();
	
	if(!the_hay || !the_needle || (the_hay == '')){
		return false;
	}
	for(var i in the_haystack){
		var the_hay = the_haystack[i];
		if(simpleMatch){
			the_hay = the_hay.toString().toLowerCase();
			the_needle = the_needle.toString().toLowerCase();
		}
		if(the_hay == the_needle){
			return true;
		}
	}
	return false;
}


// REMOTE REQUEST FUNCTIONS
var http_request = false;
var http_remote_result = "";

function remote_data_request(url, parameters, callback_function) {
	
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType("text/xml");
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {}
		}
	}
	if (!http_request) {
		// alert("Cannot create XMLHTTP instance");
		return false;
	}
	
	http_request.onreadystatechange = function(){
		if (http_request.readyState == 4) {
			// alert(http_request.status);
			if (http_request.status == 200) {
				http_remote_result = http_request.responseText;
				eval(http_remote_result);							
				eval(callback_function);		
				
			} 
			else {
				//alert("There was a problem with the request.");
			}
		}
	};
	http_request.open("POST", url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	
}
;// Extend jQuery with custom function #######################################################
// Set an option by value
$.fn.option = jQuery.fn.option = function (value) {
	return this.each(function() {
		// Try to catch any errors
		try {
			$(this).find("option").removeAttr("selected").filter("[value='" + value + "']:get(0)").attr("selected", "selected");
		}
		catch(error){}
       });
};

// Get the value of the selected option
$.fn.getOption = jQuery.fn.getOption = function () {
	var selection = null;
	var sel = $(this);
	
	// Solve IE6 select bug
	if ($.browser.msie && ($.browser.version < 7)) {
		var opts = sel.find("option:selected");
		
		if (opts.length > 1) {
			selection = $(opts[opts.length - 1]).attr("value");
		}
	}
	
	// If not IE6 get selection from value
	if (selection == null) {
		selection = sel.val();
	}
	
	return selection;
};

// Global vars #######################################################

var form_is_submitted = 0;
var draw_hash = false;

// Boxy global instance
var myBox;
var myBoxOl;

// Menus global vars
var menu_timer;
var top_menu_timer;
var menu_tab;
var top_menu_tab;
var top_menu_layer = false;

// Populate country select #######################################################
// form_id, select_id_countries, select_id_states, select_id_cities, selected_country
function populate_countries(opt, callback){
	
	// Find selects in my form
	var countries_select = $("#" + opt.select_id_countries , "form#" + opt.form_id);
	var states_select = $("#" + opt.select_id_states, "form#" + opt.form_id);
	var cities_select = $("#" + opt.select_id_cities, "form#" + opt.form_id);
	
	// Empty + disable + add one option with loading text
	countries_select.empty().attr("disabled", "disabled").append("<option value=\"0\">" + _txt_loading + "</option>");
	states_select.empty().attr("disabled", "disabled").append("<option value=\"0\">[ Selecteaza judetul ]</option>");
	cities_select.empty().attr("disabled", "disabled").append("<option value=\"0\">[ Selecteaza orasul ]</option>");
	
	// Change selected country key into a number
	opt.selected_country = parseInt(opt.selected_country);
	
	// Build request link
	var URL = do_link("site.remote", "request=countries");
	// Load data from remote
	countries_select.load(URL, {}, function(){
		// Enable countries select
		countries_select.removeAttr("disabled");
		
		// We have a selected country to set
		if (opt.selected_country > 0) {
			countries_select.option(opt.selected_country);
		}
		
		// We have a callback function to call
		if (typeof(callback) == "function") {
			countries_select.unbind("change").change(function(e){
				callback.call();
			}).change();
		}
	});
}

// Populate states select #######################################################
// form_id, select_id_countries, select_id_states, select_id_cities, selected_state
function populate_states(opt, callback){
	
	// Find selects in my form
	var countries_select = $("#" + opt.select_id_countries , "form#" + opt.form_id);
	var states_select = $("#" + opt.select_id_states, "form#" + opt.form_id);
	var cities_select = $("#" + opt.select_id_cities, "form#" + opt.form_id);
	
	// Empty + disable + add one option with loading text
	states_select.empty().attr("disabled", "disabled").append("<option value=\"0\">[ Selecteaza judetul ]</option>");
	cities_select.empty().attr("disabled", "disabled").append("<option value=\"0\">[ Selecteaza orasul ]</option>");
	
	// Get selected country
	country_selection = parseInt(countries_select.getOption());
	// Change selected state key into a number
	opt.selected_state = parseInt(opt.selected_state);
	
	// We need the country
	if (country_selection > 0) {
		states_select.empty().attr("disabled", "disabled").append("<option value=\"0\">" + _txt_loading + "</option>");
		
		// Build request link
		var URL = do_link("site.remote", "request=states&fk_countries=" + country_selection);
		// Load data from remote
		states_select.load(URL, {}, function(){
			// Enable states select
			states_select.removeAttr("disabled");
			
			// We have a selected state to set
			if (opt.selected_state > 0) {
				states_select.option(opt.selected_state);
			}
			
			// We have a callback function to call
			if (typeof(callback) == "function") {
				states_select.unbind("change").change(function(e){
					callback.call();
				}).change();
			}
		});
	}
}

// Populate cities select #######################################################
// form_id, select_id_states, select_id_cities, selected_city
function populate_cities(opt, callback){
	
	// Find selects in my form
	var states_select = $("#" + opt.select_id_states, "form#" + opt.form_id);
	var cities_select = $("#" + opt.select_id_cities, "form#" + opt.form_id);
	
	// Empty + disable + add one option with loading text
	cities_select.empty().attr("disabled", "disabled").append("<option value=\"0\">[ Selecteaza orasul ]</option>");
	
	// Get selected state
	state_selection = parseInt(states_select.getOption());
	// Change selected city key into a number
	opt.selected_city = parseInt(opt.selected_city);
	
	// We need the state
	if (state_selection > 0) {
		cities_select.empty().attr("disabled", "disabled").append("<option value=\"0\">" + _txt_loading + "</option>");
		
		// Build request link
		var URL = do_link("site.remote", "request=cities&fk_states=" + state_selection);
		// Load data from remote
		cities_select.load(URL, {}, function(){
			// Enable cities select
			cities_select.removeAttr("disabled");
			
			// We have a selected city to set
			if (opt.selected_city > 0) {
				cities_select.option(opt.selected_city);
			}
			
			// We have a callback function to call
			if (typeof(callback) == "function") {
				callback.call();
			}
		});
	}
}

// Populate custom select #######################################################
// select_id, selected_option, url, txt_loading
function populate_custom_select(opt, callback){
	
	// Extend loading text option
	opt = $.extend({}, {txt_loading: _txt_loading}, opt);
	
	// Find custom select
	var custom_select = $("#" + opt.select_id);
	
	// Empty + disable + add one option with loading text
	custom_select.empty().attr("disabled", "disabled").append("<option value=\"0\">" + opt.txt_loading + "</option>");
	
	// Change selected key into a number
	opt.selected_option = parseInt(opt.selected_option);
	
	// Load data from remote
	custom_select.load(opt.url, {}, function(){
		// Enable custom select
		custom_select.removeAttr("disabled");
		
		// We have a selected option to set
		if (opt.selected_option > 0) {
			custom_select.option(opt.selected_option);
		}
		
		// We have a callback function to call
		if (typeof(callback) == "function") {
			custom_select.unbind("change").change(function(e){
				callback.call();
			}).change();
		}
	});
}

// Advanced location select #######################################################
// form_id, container, mode(selects/autocomplete), toggle_link, selected_country, selected_state, selected_city, selected_location
// label_country, label_state, label_city, label_location
function build_location_block(opt){
	
	// Get selection mode from cookie if toggle mode link is enabled
	if (($.cookie("location_mode") != null) && (opt.toggle_link > 0)) {
		opt.mode = $.cookie("location_mode");
	}
	
	// Extend default option
	var opt = $.extend({}, {
		mode              : "selects",
		err               : "",
		selected_location : "",
		country_name      : "fk_countries",
		country_id        : "fk_countries",
		state_name        : "fk_states",
		state_id          : "fk_states",
		city_name         : "fk_cities",
		city_id           : "fk_cities",
		location_name     : "fk_location",
		location_id       : "fk_location"
	}, opt);
	
	// Build required data hint
	var required;
	if (opt.required > 0) {
		required = " <span class=\"error_star\">*</span>";
	}
	else {
		required = "";
	}
	
	// Selection mode is advanced
	if (opt.mode == "selects") {
		// Empty the container and add 3 selects for country, state, city
		$("#" + opt.container).empty().append("<li class=\"fr\"><div class=\"l\"><label>" + opt.label_country + ":" + required + "</label></div><div class=\"r\"><select id=\"" + opt.country_id + "\" name=\"" + opt.country_name + "\"><option value=\"0\">" + _txt_loading + "</option></select> " + opt.err + " <span id=\"change_link_container\"></span></div></li>" +
		"<li class=\"fr\"><div class=\"l\"><label>" + opt.label_state + ":" + required + "</label></div><div class=\"r\"><select id=\"" + opt.state_id + "\" name=\"" + opt.state_name + "\"><option value=\"0\">" + _txt_loading + "</option></select></div></li>" +
		"<li class=\"fr\"><div class=\"l\"><label>" + opt.label_city + ":" + required + "</label></div><div class=\"r\"><select id=\"" + opt.city_id  + "\" name=\"" + opt.city_name + "\"><option value=\"0\">" + _txt_loading + "</option></select></div></li>");
		
		// Call populate_countries
		populate_countries({
			form_id             : opt.form_id,
			select_id_countries : opt.country_id,
			select_id_states    : opt.state_id,
			select_id_cities    : opt.city_id,
			selected_country    : opt.selected_country
		}, function(){
			// Callback function on populate_countries change is populate_states
			populate_states({
				form_id             : opt.form_id,
				select_id_countries : opt.country_id,
				select_id_states    : opt.state_id,
				select_id_cities    : opt.city_id,
				selected_state      : opt.selected_state
			}, function(){
				// Callback function on populate_states change is populate_cities
				populate_cities({
					form_id          : opt.form_id,
					select_id_states : opt.state_id,
					select_id_cities : opt.city_id,
					selected_city    : opt.selected_city
				})
			});
		});
	}
	// Selection mode is simple
	else if (opt.mode == "autocomplete") {
		// Empty the container and add a textbox and 3 hidden imputs
		$("#" + opt.container).empty().append("<input type=\"hidden\" id=\"" + opt.country_id + "\" name=\"" + opt.country_name + "\" value=\"" + opt.selected_country + "\">" +
		"<input type=\"hidden\" id=\"" + opt.state_id + "\" name=\"" + opt.state_name + "\" value=\"" + opt.selected_state + "\">" +
		"<input type=\"hidden\" id=\"" + opt.city_id + "\" name=\"" + opt.city_name + "\" value=\"" + opt.selected_city + "\">" +
		"<li class=\"fr\"><div class=\"l\"><label for=\"" + opt.location_id + "\">" + opt.label_location + ":" + required + "</label></div><div class=\"r\"><input type=\"text\" id=\"" + opt.location_id + "\" name=\"" + opt.location_name + "\" value=\"" + opt.selected_location + "\" class=\"txt\" maxlength=\"255\" /> " + opt.err + " <span id=\"change_link_container\"></span><p class=\"hint\">" + opt.hint_location + "</p></div></li>");
		
		// Init autocompleter
		$("#" + opt.location_id).autocompleteShow({
			matchSubset        : false,
			minChars           : 2,
			request            : "autocomplete_city",
			remote_connector   : "site.remote",
			result_fields_id   : opt.city_id + "," + opt.state_id + "," + opt.country_id,
			result_fields_name : opt.city_name + "," + opt.state_name + "," + opt.country_name,
			form_id            : opt.form_id
		});
	}
	
	// Toggle selection mode link is enabled
	if (opt.toggle_link > 0) {
		var txt_toggle_link
		// Get text for toggle link
		if (opt.mode == "autocomplete") {
			txt_toggle_link = opt.txt_toggle_link_advanced;
		}
		else if (opt.mode == "selects") {
			txt_toggle_link = opt.txt_toggle_link_simple;
		}
		
		// Assign link action
		var link = $("<a href=\"#\" class=\"dark small\">" + txt_toggle_link + "</a>").click(function(e){
			// Change to advanced
			if (opt.mode == "autocomplete") {
				// Remove autocomplete
				$(".ac_results").remove();
				
				// Define new mode
				opt.mode = "selects";
				// Get values from hidden imputs
				opt.selected_country = $(":hidden#" + opt.country_id, "#" + opt.form_id).attr("value");
				opt.selected_state = $(":hidden#" + opt.state_id, "#" + opt.form_id).attr("value");
				opt.selected_city = $(":hidden#" + opt.city_id, "#" + opt.form_id).attr("value");
			}
			else {
				// Define new mode
				opt.mode = "autocomplete";
				// Get values from hidden imputs
				opt.selected_country = $("#" + opt.country_id, "#" + opt.form_id).getOption();
				opt.selected_state = $("#" + opt.state_id, "#" + opt.form_id).getOption();
				opt.selected_city = $("#" + opt.city_id, "#" + opt.form_id).getOption();
				
				// Full location is selected
				if ($("#fk_cities", "#" + opt.form_id).val() > 0) {
					// Append location data
					opt.selected_location = $("#" + opt.city_id + " :selected", "#" + opt.form_id).text() + ", " + $("#" + opt.state_id + " :selected", "#" + opt.form_id).text() + ", " + $("#" + opt.country_id + " :selected", "#" + opt.form_id).text();
				}
				else {
					opt.selected_location = "";
				}
			}
			
			// Set new selection mode in cookie
			$.cookie("location_mode", opt.mode, {path: "/"})
			// Rebuild location block with new options
			build_location_block(opt);
			
			return false;
		});
		// Add toggle mode link
		$("#change_link_container", "#" + opt.container).append(link);
	}
}

// ################################################################################

// Form functions #######################################################

// Focus on input
function jform_focus(form_id){
	$(":input[value='']:not(select):enabled:visible:first", "form#" + form_id).focus();
}

// Disable submit buttons
function jform_do_submit(form_id){
	
	var my_form = $("form#" + form_id);
	var loading = $("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" align=\"absmiddle\" style=\"width: 16px; height: 16px;\">");
	
	my_form.submit(function() {
		if (!form_is_submitted) {
			// Disable all buttons from my form
			$(":button, :submit", my_form).attr("disabled", "disabled");
			
			$(":submit", my_form).each(function(i, v){
				var jThis = $(v);
				if (jThis.css("float") == "right") {
					loading.addClass("mr_05");
					jThis.before(loading);
				}
				else {
					loading.addClass("ml_05");
					jThis.after(loading);
				}
			});
			
			form_is_submitted = 1;
			submitted_form = form_id;
		}
	});
}

// Select an option
function jform_set_select(form_id, sel_id, sel_value){
	$("select#" + sel_id, "form#" + form_id).option(sel_value);
}

// Check radio by value
function jform_set_radio(radio_name, form_id, selected_value){
	$(":radio[name='" + radio_name + "'][value='" + selected_value + "']:eq(0)", "form#" + form_id).attr("checked", "checked");
}

// Check checkbox
function jform_set_checked(form_id, check_id, checked_mode){
	if ((checked_mode > 0) || (checked_mode == "on") || (checked_mode == "yes")) {
		$(":checkbox#" + check_id, "form#" + form_id).attr("checked", "checked");
	}
}

// Check all checkboxes from my form
function jform_check_all(form_id){
	$(":checkbox", "form#" + form_id).attr("checked", "checked");
}

// Uncheck all checkboxes from my form
function jform_uncheck_all(form_id){
	$(":checkbox", "form#" + form_id).removeAttr("checked");
}

// Input/texarea limit text (with hints)
function bind_text_length(elem){

	var self = $(elem);
	
	// Only one element
	if (self.length == 1) {
		var mdata = self.metadata();
		// Get hint container from metadata
		var info = $(mdata.infotext);
		var textlength;
		
		// Bind events
		self.bind("keyup", function(){
			// Get content length
			textlength = self.val().length;
			// Limit text length
			if (textlength > mdata.maxlength) {
				info.html("Nu poti sa introduci mai mult de " + mdata.maxlength + " caractere!");
				self.val(self.val().substr(0, mdata.maxlength));
				return false;
			}
			else {
				info.html("Mai poti sa introduci " + (mdata.maxlength - textlength) + " caractere!");
				return true;
			}
		}).trigger("keyup");
	}
}

// ################################################################################

// Utility functions #######################################################

// Get remote action
function remote_action(page, options){
	var URL = do_link(page, $.param(options));
	$.getScript(URL, function(data){});
}

// Post remote action
function post_remote_action(page, options, _post){
	var URL = do_link(page, $.param(options));
	$.post(URL, _post, function(data){}, "script");
}

// Assign remote action
function assign_remote_action(){
	var loading = $("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" align=\"absmiddle\" style=\"width: 16px; height: 16px;\">");
	// Bind link action
	jQuery(".remote_action").unbind("click").click(function(e){
		
		var jThis = jQuery(this);
		
		// Get metadata from selected link
		var mdata = jThis.metadata();
		
		// If element is button add loading image
		if (jThis.is("button")) {
			if (mdata.load_icon == "left") {
				jThis.before(loading.addClass("mr_05"));
			}
			else {
				jThis.after(loading.addClass("ml_05"));
			}
		}
		
		// Move some data in other objects
		var mpost = mdata.post;
		var mpage = jQuery.extend({page: "site.remote"}, {page: mdata.page});
		var texts = jQuery.extend({}, {txt_ok: mdata.txt_ok, txt_cancel: mdata.txt_cancel, txt_confirm: mdata.txt_confirm});
		var new_mdata = jQuery.extend({}, mdata);
		delete new_mdata.page;
		delete new_mdata.post;
		delete new_mdata.load_icon;
		delete new_mdata.txt_ok;
		delete new_mdata.txt_cancel;
		delete new_mdata.txt_confirm;
		
		// Action confim
		if (jThis.attr("rel") == "confirm") {
			// If no confirm message get text from title
			var txt_confirm = texts.txt_confirm ? texts.txt_confirm : jThis.attr("title");
			Boxy.confirm("<b class=\"small\">" + txt_confirm + "</b>", function(){
				// Post data was found
				if (mpost) {
					post_remote_action(mpage.page, new_mdata, mpost);
				}
				else {
					remote_action(mpage.page, new_mdata);
				}
			}, texts);
		}
		else {
			// Post data was found
			if (mpost) {
				post_remote_action(mpage.page, new_mdata, mpost);
			}
			else {
				remote_action(mpage.page, new_mdata);
			}
		}
		
		// Disable default link action
		return false;
	});
}

// Assign live remote action
$.live_remote_action = function(str){
	
	// Bind link action
	jQuery(str).live("click", function(e){
		
		var jThis = jQuery(this);
		// Get metadata from selected link
		var mdata = jThis.metadata();
		
		// Move some data in other objects
		var mpost = mdata.post;
		var mpage = jQuery.extend({page: "site.remote"}, {page: mdata.page});
		var texts = jQuery.extend({}, {txt_ok: mdata.txt_ok, txt_cancel: mdata.txt_cancel, txt_confirm: mdata.txt_confirm});
		var new_mdata = jQuery.extend({}, mdata);
		delete new_mdata.page;
		delete new_mdata.post;
		delete new_mdata.txt_ok;
		delete new_mdata.txt_cancel;
		delete new_mdata.txt_confirm;
		
		// Action confim
		if (jThis.attr("rel") == "confirm") {
			// If no confirm message get text from title
			var txt_confirm = texts.txt_confirm ? texts.txt_confirm : jThis.attr("title");
			Boxy.confirm("<b class=\"small\">" + txt_confirm + "</b>", function(){
				// Post data was found
				if (mpost) {
					post_remote_action(mpage.page, new_mdata, mpost);
				}
				else {
					remote_action(mpage.page, new_mdata);
				}
			}, texts);
		}
		else {
			// Post data was found
			if (mpost) {
				post_remote_action(mpage.page, new_mdata, mpost);
			}
			else {
				remote_action(mpage.page, new_mdata);
			}
		}
		
		// Disable default link action
		return false;
	});
}

// Open boxy with an iframe inside
function view_iframe(link, _title, width, height){
	
	var add_sign = ((link.indexOf("?") > -1) ? "&" : "?");
	var box = new Boxy("<iframe src=\"" + link + add_sign + Math.floor(Math.random() * 10000000000) + "\"  framespacing=\"0\" frameborder=\"no\" scrolling=\"no\" width=\"" + width + "\" height=\"" + height + "\"></iframe>", {
		title: _title,
		closeText: "<span class='close_box'><a href='#' class='close img_close'>&nbsp;</a><span class='smaller normal f_right mr_05' style='display: inline;'>[ <a href='#' class='close'>Inchide</a> ]</span> </span>",
		closeable: true,
		draggable: true,
		modal: true
	});
	
	return box;
}

// Assign action to open boxy with an iframe inside
function assign_overlay_action(){
	jQuery(".overlay_page").click(function(e){
		// Get metadata
		var meta = jQuery(this).metadata();
		// Open boxy
		myBox = view_iframe(meta.page, meta.title, meta.width, meta.height);
		// Prevent default link behavior
		return false;
	});
}

// Assign action to redirect to specified location
function replace_redirect(){
	jQuery("button.redirect, a.redirect").click(function(e){
		// Get location from metadata
		var location = jQuery(this).metadata().location;
		// We have a location
		if (typeof(location) != "undefined") {
			document.location = location;
		}
		
		return false;
	});
}

// Repace all checkboxes with 'chk' class with images
function replace_checkbox(){
	jQuery('input:checkbox.chk').checkbox({empty: PATH_STATIC + '/img/spacer.gif'});
}

// Replace all radio inputs with images
function replace_radio(){
	jQuery('input:radio').checkbox({
		cls: 'jquery-radiobox',
		empty: PATH_STATIC + '/img/spacer.gif'
	});
}

// Show cropper box and assign afterHide actions to refresh page images
function show_cropper(options){
	// Open boxy
	myBox = new Boxy("<iframe name=\"cropper\" src=\"" + options.link + "&rv=" + Math.floor(Math.random() * 10000000000)  + "\"  framespacing=\"0\" frameborder=\"no\" scrolling=\"no\" width=\"" + options.width + "\" height=\"" + options.height + "\"></iframe>", {
		title: "Decupeaza poza profil",
		closeText: "<span class='close_box'><a href='#' class='close img_close'>&nbsp;</a><span class='smaller normal f_right mr_05' style='display: inline;'>[ <a href='#' class='close'>Inchide</a> ]</span> </span>",
		closeable: true,
		modal: true,
		unload: true,
		// After hide callback
		afterHide: function(){
			// Loop all images with current key in src
			jQuery("img[src*=" + options.key + "]").each(function(i, v){
				var jThis = jQuery(this);
				
				var d = new Date;
				// Valid src
				if (typeof(jThis.attr("src")) != "undefined") {
					// Get src
					var full_path = jThis.attr("src");
					// Remove extension
					var img_path = full_path.substr(0, (full_path.length - 4));
					// Check if we have already vesioning
					var tmp = img_path.split(".v");
					if (tmp.length > 1) {
						// Delete old versioning
						delete tmp[tmp.length -1];
						img_path = tmp.join("");
					}
					// Get extension
					var img_ext = full_path.substr(full_path.length - 4);
				}
				// Add new versioning
				jThis.attr("src", img_path + ".v" + d.getTime() + img_ext);
			});
		}
	});
}

// Generic function for submenu toggle
function menu_actions(_target, _submenu, instant){
	// Select main menu button
	var target = jQuery(_target);
	// Select submenu
	var submenu = jQuery(_submenu);
	// Define local timer
	var timer;
	// Select main menu button
	var parent = jQuery(_target).closest("div");
	var duration = ((instant > 0) ? 10 : 300);
	
	// Assign button actions
	target.hover(function(e){
		clearTimeout(timer);
		submenu.show();
		target.addClass("hover");
		parent.addClass("p_rel");
	}, function(e){
		timer = setTimeout(function(){
			submenu.hide();
			target.removeClass("hover");
			parent.removeClass("p_rel");
		}, duration);
	});
	
	// Assign submenu actions
	submenu.hover(function(e){
		clearTimeout(timer);
	}, function(e){
		timer = setTimeout(function(){
			submenu.hide();
			target.removeClass("hover");
			parent.removeClass("p_rel");
		}, duration);
	});
}

// Js version of URLEncode
function URLEncode(clearString) {
	var output = "";
	var x = 0;
	
	clearString = clearString.toString();
	var regex = /(^[a-zA-Z0-9_.]*)/;
	while (x < clearString.length) {
		var match = regex.exec(clearString.substr(x));
		if (match != null && match.length > 1 && match[1] != "") {
			output += match[1];
			x += match[1].length;
		}
		else {
			if (clearString[x] == " ") {
				output += "+";
			}
			else {
				var charCode = clearString.charCodeAt(x);
				var hexVal = charCode.toString(16);
				output += "%" + ( hexVal.length < 2 ? "0" : "" ) + hexVal.toUpperCase();
			}
			x ++;
		}
	}
	return output;
}

// ################################################################################

// Comment functions ####################################################################################

// Build review reply form
function build_review_reply(review_key, _content, _fk_review){
	
	var twitter_row = "";
	
	// If main post form has twitter auto post option, add the same option to reply form
	if ($(".post_twitter", "#post_review").length > 0) {
		twitter_row = "<li class=\"fr\" style=\"margin-top: -1em;\">" +
			"<p class=\"smaller\">Conform <a href=\"" + do_link("site.account_settings", "_RETURN=" + RETURN) + "\" class=\"dark\">setarilor</a> tale comentariul tau va fi postat automat si pe Twitter.</p>" +
		"</li>";
	}
	// If main post form has twitter checkbox post option, add the same option to reply form
	else if ($(".add_post_twitter", "#post_review").length > 0) {
		twitter_row = "<li class=\"fr is_inline\" style=\"margin-top: -1em;\">" +
			"<div class=\"l\">" +
				"<input type=\"checkbox\" id=\"post_twitter_comments_" + review_key + "\" name=\"post_twitter_comments\" value=\"\" />" +
			"</div>" +
			"<div class=\"r\">" +
				"<label for=\"post_twitter_comments_" + review_key + "\" class=\"smaller\"> Posteaza acest comentariu pe Twitter</label>" +
			"</div>" +
		"</li>";
	}
	else if ($(".connect_twitter", "#post_review").length > 0) {
		twitter_row = "<li class=\"fr\" style=\"margin-top: -1em;\">" +
			"<p class=\"smaller\">Conecteaza-te cu contul tau de pe Twitter.com pentru a putea posta comentariile automat si acolo.</p>" +
		"</li>";
	}
	
	// Build reply form html
	var html_form = "<form method=\"post\" action=\"" + PATH_SELF + "\" id=\"post_review_" + review_key + "\">" + 
	"<ul>" +
		"<li>" +
			"<input type=\"hidden\" name=\"show_all\" value=\"0\">" +
			"<input type=\"hidden\" id=\"" + _fk_review + "\" name=\"" + _fk_review + "\" value=\"" + review_key + "\">" +
		"</li>" +
		"<li class=\"fr\">" +
			"<div class=\"l\">" +
				"<label for=\"review_content_" + review_key + "\">Continut:</label>" +
			"</div>" +
			"<div class=\"r\">" +
				"<textarea name=\"" + _content + "\" id=\"review_content_" + review_key + "\" class=\"{maxlength: '500', infotext: '#info_review_length_" + review_key + "'}\" cols=\"60\" rows=\"3\" style=\"width: 30em;\"></textarea>" +
				"<p id=\"info_review_length_" + review_key + "\" class=\"hint\"></p>" +
			"</div>" +
		"</li>" +
		twitter_row +
		"<li class=\"fr\">" +
			"<div class=\"l\"></div>" +
			"<div class=\"r\">" +
				"<button type=\"submit\" id=\"btn_submit_" + review_key + "\" name=\"btn_submit\" class=\"btn_small\"><span>Raspunde</span></button>" +
				"<button type=\"button\" id=\"btn_cancel_" + review_key + "\" name=\"btn_cancel\" class=\"btn_cancel btn_small btn_small_gray\"><span>Anuleaza</span></button>" +
			"</div>" +
		"</li>" +
	"</ul>" +
	"</form>";
	
	// Transporm generated html into dom
	return jQuery(html_form);
}

var loading_small = $("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" align=\"absmiddle\" class=\"ml_05\" style=\"width: 16px; height: 16px;\">");

// Handle reply form submit
function handle_review_reply_submit(form, _content){
	// Select texarea
	var area = jQuery(form).find("[name='" + _content + "']");
	
	// Put in hidden input selected review_threshold value
	jQuery(form).find("[name='show_all']").val(jQuery("select#review_threshold").metadata().show_all);
	
	// Empty texarea
	if (jQuery.trim(area.val()) == "") {
		// Alert error message
		Boxy.alert("Trebuie sa introduci un comentariu!");
		return false;
	}
	else {
		// Disable submit button
		jQuery(form).find(":button").attr("disabled", "disabled");
		// Loading icon
		jQuery(form).find(":submit:eq(0)").after(loading_small);
		return true;
	}
}

// Change vote icons on hover
function assing_review_vote_hover(obj){
	jQuery(obj).hover(function(e){
		// Add hover class
		jQuery(this).addClass(jQuery(this).metadata().on_class);
	}, function(e){
		// Remove hover class
		jQuery(this).removeClass(jQuery(this).metadata().on_class);
	});
}

// Hide review content is rating is too low
function handle_review_vote(key, rating){
	if (jQuery.cookie("review_threshold") != "all") {
		// Compare new rating with threshold value
		if (rating < parseInt(jQuery.cookie("review_threshold"))) {
			// Hide comment content
			jQuery("#review_" + key).addClass("restrict_row");
		}
	}
}

// Bring comments to life :D
function bring_reviews_to_life(_key, _type, _content, _fk_review){
	
	var loading = $("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" align=\"absmiddle\" class=\"ml_05\" style=\"width: 16px; height: 16px;\">");
	
	// Handle comment vote with live actions
	jQuery(".i_vote_down_grey,.i_vote_up_grey").live("click", function(e){
		// Get metadata
		var mdata = jQuery(this).metadata();
		jQuery(this).closest(".grey")
			// Add loading gif
			.html("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" alt=\"\" style=\"width: 16px; height: 16px;\" />")
			// Rating response data from remote
			.load(do_link("site.remote", "request=review_rating&review_key=" + mdata.review + "&dir=" + mdata.dir + "&type=" + _type));
	});
	
	// Add hover efect to rating icons
	assing_review_vote_hover(jQuery(".i_vote_down_grey, .i_vote_up_grey"));
	
	// Toggle review options
	jQuery("#review_options_link, #review_tools_link").click(function(e){
		jQuery(".review_options").slideToggle("fast");
		
		return false;
	});
	
	if (jQuery(".review_nav").length > 0) {
		jQuery(".review_title").append(" <b class=\"smaller gray normal\">(" + jQuery(".review_nav").metadata().rec_count + ")</b>");
	}
	
	// Handle comment navigation
	jQuery(".review_nav_link").live("click", function(e){
		jQuery(".reviews_list")
			.html("<div class=\"a_center\"><img src=\"" + PATH_STATIC + "/img/site/loading_big.gif\" style=\"width: 50px; height: 50px; margin: 0 auto;\" /></div>")
			.load(jQuery(this).metadata().url, function(e){
				assing_review_vote_hover(jQuery(".i_vote_down_grey").add(".i_vote_up_grey"));
			});
		
		return false;
	});
	
	// Handle comment reply
	jQuery(".a_reply").live("click", function(e){
		// User is logged in
		if (USR_logins_key > 0) {
			var key = jQuery(this).toggle().metadata().review;
			// Get closest parent with 'review_row' class
			var row = jQuery(this).closest(".review_row");
			// Build new reply form
			var new_form = build_review_reply(key, _content, _fk_review);
			// Remove old reply form if we have any
			row.find("form").unbind().remove();
			// Assign actions to new form
			new_form.filter("form").submit(function(e){
				return handle_review_reply_submit(this, _content);
			});
			
			// Show the content when reply link is pressed
			if (!row.find(".review_content").is(":visible")) {
				row.find(".review_content").show();
				row.find(".review_show").hide();
				row.find(".review_hide").show();
			}
			
			// Append new form
			row.append(new_form);
			// Limit review content length
			bind_text_length(jQuery("#review_content_" + key));
			// Scroll to the new form
			jQuery(window).scrollTo(new_form, 500, {offset:-50});
			// Focus the new form
			jQuery("#review_content_" + key).focus();
		}
		else {
			// Alert login message
			Boxy.alert("Trebuie sa fii logat pentru a raspunde la acest comentariu!");
		}
		// Remove default link behavior
		return false;
	});
	
	// Assign action to cancel reply button
	jQuery(".btn_cancel").live("click", function(e){
		jQuery(this).closest(".review_row").find(".a_reply").toggle();
		jQuery(this).closest("form").remove();
		return false;
	});
	
	// Assign actions to toggle content links
	jQuery(".review_show, .review_hide").live("click", function(e){
		var parent = jQuery(this).closest(".review_row");
		parent.find(".review_show").toggle();
		parent.find(".review_hide").toggle();
		parent.find(".review_content").toggle();
		
		return false;
	});
	
	// Show all reviews
	jQuery("#all_reviews").click(function(e){
		jQuery(".reviews_list")
			// Show loading animation
			.html("<div class=\"a_center\"><img src=\"" + PATH_STATIC + "/img/site/loading_big.gif\" style=\"width: 50px; height: 50px; margin: 0 auto;\" /></div>")
			// Load new data from remote
			.load(do_link("site.remote", "request=reviews_get&type=" + _type + "&key=" + _key + "&reviews=show_all"), function(e){
				jQuery("select#review_threshold").metadata().show_all = 1;
				jQuery(":hidden[name='show_all']").val(1);
				jQuery("#all_reviews").hide();
				assing_review_vote_hover(jQuery(".i_vote_down_grey, .i_vote_up_grey"));
			});
		
		return false;
	});
	
	// Handle comment length
	bind_text_length(jQuery("#review_content"));
	
	// Handle main form submit
	jQuery("form#post_review").submit(function(e){
		if (jQuery.trim(jQuery("#review_content", this).val()) == "") {
			// Alert error message
			Boxy.alert("Trebuie sa introduci un comentariu!");
			return false;
		}
		else {
			// Disable form buttons after submit
			jQuery(this).find(":button").attr("disabled", "disabled");
			// Loading image
			jQuery(this).find(":submit:eq(0)").after(loading);
		}
	});
	
	// Get rating threshold value (default is -5)
	var threshold_val = (jQuery.cookie("review_threshold") ? jQuery.cookie("review_threshold") : -5);
	
	// Handle threshold filter
	jQuery("select#review_threshold").find("option").removeAttr("selected").filter("[value='" + threshold_val + "']:eq(0)").attr("selected", "selected");
	// Assign select action
	jQuery("#review_threshold").change(function(e){
		var show_all = "";
		
		if (jQuery(this).metadata().show_all == 1) {
			show_all = "&reviews=show_all";
		}
		
		// Store new threshold value in cookie
		jQuery.cookie("review_threshold", jQuery(this).val(), {expires: 365, path: "/"});
		// Refresh review list
		jQuery(".reviews_list")
			// Show loading animation
			.html("<div class=\"a_center\"><img src=\"" + PATH_STATIC + "/img/site/loading_big.gif\" style=\"width: 50px; height: 50px; margin: 0 auto;\" /></div>")
			// Load data from remote
			.load(do_link("site.remote", "request=reviews_get&type=" + _type + "&key=" + _key + show_all), function(e){
				assing_review_vote_hover(jQuery(".i_vote_down_grey, .i_vote_up_grey"));
			});
	});
	
	jQuery.live_remote_action(".live_remote_delete");
}

// ##################################################################################################

// Main Site functions ################################################################################

// Handle top blue navigation
function top_nav_actions(){
	// Select submenus
	var subnavs = jQuery(".top_nav .top_subnav");
	// Select main menu links with submenus
	var have_subnavs = jQuery(".top_nav .have_subnav");
	// Add iframe to submenus backgroun (only for IE6 - selectbox hack)
	subnavs.bgiframe();
	
	// Add common actions for the first link and for the left rond corner
	jQuery(".top_nav li:first").hover(function(e){
		if (jQuery("a.have_subnav", this).length > 0) {
			jQuery(".top_nav ul:first").addClass("white");
		}
		else {
			jQuery(".top_nav ul:first").addClass("on");
		}
	}, function(e){
		if (jQuery("a.have_subnav", this).length == 0) {
			jQuery(".top_nav ul:first").removeClass("on");
		}
	});
	
	// Assign actions to main menu links with submenus
	have_subnavs.hover(function(e){
		clearTimeout(menu_timer);
		subnavs.hide();
		have_subnavs.parent().removeClass("white");
		menu_tab = jQuery(this).parents("li:eq(0)").addClass("white").find(".top_subnav");
		menu_tab.show();
	}, function(e){
		menu_tab = jQuery(this).parents("li:eq(0)").find(".top_subnav");
		menu_timer = setTimeout("menu_tab.hide();menu_tab.closest(\"li\").removeClass(\"white\");jQuery(\".top_nav ul:first\").removeClass(\"white\");", 300);
	});
	
	// Assign actions to submenus
	subnavs.hover(function(e){
		clearTimeout(menu_timer);
	}, function(e){
		menu_tab = jQuery(this);
		menu_timer = setTimeout("menu_tab.hide();menu_tab.closest(\"li\").removeClass(\"white\");jQuery(\".top_nav ul:first\").removeClass(\"white\");", 300);
	});
}

// Handle top user navigation
function top_menu_actions(){
	// Select submenus
	var subnavs = jQuery(".top_menu .top_subnav");
	// Select main menu links with submenus
	var have_subnavs = jQuery(".top_menu .have_subnav");
	
	// Assign actions to main menu links with submenus
	have_subnavs.hover(function(e){
		clearTimeout(top_menu_timer);
		subnavs.hide();
		top_menu_tab = jQuery(this).closest("li").find(".top_subnav");
		top_menu_tab.show();
	}, function(e){
		top_menu_tab = jQuery(this).closest("li").find(".top_subnav");
		top_menu_timer = setTimeout("top_menu_tab.hide();", 300);
	});
	
	// Assign actions to submenus
	subnavs.hover(function(e){
		clearTimeout(top_menu_timer);
	}, function(e){
		top_menu_tab = jQuery(this);
		top_menu_timer = setTimeout("top_menu_tab.hide();", 300);
	});
	
	jQuery("div.top_menu dl.cross_site").hover(function(){
		this.style.overflow = "visible";
	}, function(){
		this.style.overflow = "hidden";
	});
	
	jQuery("div.top_menu a.close_layer").click(function(){
		jQuery(this).closest(".ajax_box").hide();
		top_menu_layer = false;
		
		return false;
	});
	
	jQuery("div.top_menu a.ajax_expand").hover(function(){
		if (!top_menu_layer) {
			
			if (jQuery("div.ajax_box div.b_text").is(":empty")) {
				jQuery("div.ajax_box").css({top: "40px", left: (jQuery(this).offset().left - 149 + jQuery(this).width() / 2) + "px"});
			}
			
			jQuery("div.ajax_box div.b_text").html("");
			
			jQuery.ajax({
				url: do_link("site.account_remote", "request=latest_notifications"),
				dataType: "html",
				success: function(data){
					jQuery("div.ajax_box").show();
					jQuery("div.ajax_box div.bxd")[0].style.height = "auto";
					jQuery("div.ajax_box b.side_b")[0].style.height = "auto";
					jQuery("div.ajax_box i.side_i")[0].style.height = "auto";
					jQuery("div.ajax_box div.b_text").html(data);
					jQuery("div.bxd, b.side_b, i.side_i", "div.ajax_box").height(jQuery("div.ajax_box div.b_text").innerHeight());
				}
			});
		}
		else {
			jQuery("div.ajax_box").hide();
		}
		
		top_menu_layer = !top_menu_layer;
		
		return false;
	});
}

// Submits filter form
function go_filter(obj, filter_opt) {
	// Select closest form parent
	var form = jQuery(obj).closest("form");
	// Change some hidden fields
	form.find("[mane=__s]").val(filter_opt);
	// Submit the form
	form.submit();
} 

// Friend handling (in profile page)
function friend_handling(how){

	if (how == "no_friends_at_all") {
		jQuery("#no_friends_at_all").show();
		jQuery("#we_re_friends_status").hide();
		jQuery("#we_re_friends_action").hide();
		jQuery("#friend_request_sent").hide();
		jQuery("#friend_request_received").hide();
	}
	else if (how == "friend_request_sent") {
		jQuery("#no_friends_at_all").hide();
		jQuery("#we_re_friends_status").hide();
		jQuery("#we_re_friends_action").hide();
		jQuery("#friend_request_sent").show();
		jQuery("#friend_request_received").hide();
	}
	else if (how == "friend_request_received") {
		jQuery("#no_friends_at_all").hide();
		jQuery("#we_re_friends_status").hide();
		jQuery("#we_re_friends_action").hide();
		jQuery("#friend_request_sent").hide();
		jQuery("#friend_request_received").show();
	}
	else if (how == "we_re_friends") {
		jQuery("#no_friends_at_all").hide();
		jQuery("#we_re_friends_status").show();
		jQuery("#we_re_friends_action").show();
		jQuery("#friend_request_sent").hide();
		jQuery("#friend_request_received").hide();
	}
	else if (how == "blocking" || how == "no_permissions") {
		jQuery("#no_friends_at_all").hide();
		jQuery("#we_re_friends_status").hide();
		jQuery("#we_re_friends_action").hide();
		jQuery("#friend_request_sent").hide();
		jQuery("#friend_request_received").hide();
	}
	else if (how == "block") {
		jQuery("#no_friends_at_all").hide();
		jQuery("#we_re_friends_status").hide();
		jQuery("#we_re_friends_action").hide();
		jQuery("#friend_request_sent").hide();
		jQuery("#friend_request_received").hide();
		jQuery("#interest_main").hide();
		jQuery("#send_messages").hide();
		jQuery("#profile_add_fav").hide();
		jQuery("#profile_is_fav").hide();
		jQuery("#can_block").hide();
		jQuery("#can_unblock").show();
	}
	else if (how == "unblock") {
		jQuery("#can_unblock").hide();
		jQuery("#can_block").show();
		jQuery("#interest_main").show();
		jQuery("#send_messages").show();
		jQuery("#profile_add_fav").show();
		jQuery("#no_friends_at_all").show();
	}
}

// Profile functions ################################################################################

function favorite_handling(is_fav) {
	
	if (parseInt(is_fav) == 1) {
		jQuery("#fav_container").hide();
		jQuery("#profile_is_fav").show();
		jQuery("#profile_add_fav").hide();
	}
	else {
		jQuery("#fav_container").show();
		jQuery("#profile_is_fav").hide();
		jQuery("#profile_add_fav").show();
	}
}

function page_profile(){
	
	// Show interest menu
	menu_actions(".interest_tab", ".interest_submenu");
	
	// Show cropper
	jQuery(".a_edit").click(function(e){
		show_cropper({
			link: do_link("site.cropper", "files_key=" + jQuery(this).metadata().files_key),
			width: '860',
			height: '680',
			key: jQuery(this).metadata().files_key
		});
		
		return false;
	});
	
	// Assign live actions (show more friends)
	/*jQuery(".remote_live_action").live("click", function(e){
		var jThis = jQuery(this);
		var mdata = jThis.metadata();
		
		remote_action(mdata);
		jQuery("#more_friends").html("<img src=\"" + PATH_STATIC + "/img/site/loading_small.gif\" alt=\"loading\" style=\"width: 16px; height: 16px;\">");
		
		return false;
	});*/
	
	// Redirect to specified location
	jQuery(".link_to").click(function(e){
		document.location = jQuery(this).metadata().src;
		return false;
	});
	
	// Init tooltips
	jQuery(".tooltip img").tooltip({
		showURL: false
	});
}

// User action response
function return_profile_action(key, msg, _title){
	Boxy.alert("<b>" + msg + "</b><br /><br />", null, {});
	jQuery("> .f_right", "#row_" + key).remove();
	jQuery("#row_" + key).hide();
}

// Left menu functions ################################################################################
function page_left_menu(){
	
	// Assign actions to section headers
	jQuery(".user_menu dt").click(function(e){
		if (jQuery(e.target).is(":not(a)")) {
			jQuery(this).find(".i_nice_minus").toggleClass("i_nice_plus");
			jQuery(this).closest("dl").find("dd").toggle();
		}
	});
}

// Profile Homepage functions ################################################################################

function page_profile_homepage(){
	// Select change status form elements
	var content = jQuery("#ps_content");
	var content_html_hidden = jQuery("#ps_content_html_hidden");
	var content_html = jQuery("#ps_content_html");
	var content_new = jQuery("#ps_new");
	var content_change = jQuery("#ps_change");
	
	jQuery("#profile_link").focus(function(e){this.select();})
	
	// Change personal status
	jQuery("form#personal_status").submit(function(e){
		var jSelf = jQuery(this);
		var loading = jQuery("#ps_loading", this);
		
		// Empty texarea is text = default text
		if (jQuery.trim(content.val()).toLowerCase() == jQuery.trim(default_personal_status).toLowerCase()) {
			content.val("");
		}
		
		content_change.hide();
		loading.show();
		
		// Post status data to remote
		jQuery.post(jSelf.attr("action"), jSelf.serialize(), function(data){
			eval(data);
			// Toggle form elements
			content_change.show();
			loading.hide();
			content_new.hide();
			content_html.show();
		});
		// Disable form submision
		return false;
	});
	// If status is empty add default text
	if (jQuery.trim(content_html.html()) == "") {
		content_html.html(default_personal_status);
	}
	// Add actions to status texatrea
	content.focus(function(e){
		if (jQuery.trim(content.val()).toLowerCase() == jQuery.trim(default_personal_status).toLowerCase()) {
			content.val("");
		}
	}).blur(function(e){
		if (jQuery.trim(content.val()) == "") {
			content.val(default_personal_status);
		}
	});
	// Toggle status form elements
	content_change.click(function(e){
		content.val(content_html_hidden.text());
		content_change.hide();
		content_html.hide();
		content_new.show();
		
		return false;
	});
	
	jQuery("#personal_status").click(function(e){
		if (content_change.is(":visible")) {
			content_change.click();
		}
	});
	
	jQuery("#ps_cancel").click(function(e){
		content.val(content_html_hidden.html());
		content_change.show();
		content_new.hide();
		content_html.show();
		
		return false;
	});
	
	jQuery("#ps_save").click(function(e){
		jQuery(this).closest("form").submit();
		
		return false;
	});
	
	if (typeof(js_init_skip) == "function") {
		js_init_skip();
	}
	
	jform_do_submit("site_account_confirmation");
	
	// Hide invite box
	jQuery("#hide_invite_box").click(function(e){
		jQuery("#invite_box").hide();
		jQuery.cookie("hide_invite", "1", {expires: 356, path: "/"});
		
		return false;
	});
	
	// Show cropper
	jQuery(".a_edit").click(function(e){
		show_cropper({
			link: do_link("site.cropper", "files_key=" + jQuery(this).metadata().files_key),
			width: '860',
			height: '680',
			key: jQuery(this).metadata().files_key
		});
		
		return false;
	});
}

// Mailbox functions ################################################################################
function page_mailbox(){
	// Add skin to search mode select
	jQuery("#search_mode").selBox({afterChange: function(obj){
		// If 'user' mode is selected init users autocomplete
		if (jQuery(obj).attr("rel") == "user") {
			$("#search_string").autocompleteShow({
				matchSubset        : false,
				minChars           : 2,
				request            : "autocomplete_sender",
				remote_connector   : "site.remote",
				result_fields_id   : "id",
				result_fields_name : "id",
				form_id            : "form_mailbox_search",
				show_portion       : 0
			});
		}
		// Remove autocomplete
		else {
			$("#search_string").unautocomplete();
		}
	}});
	
	// Init users autocomplete if 'user' option is selected by default
	if (jQuery("#search_mode").getOption() == "user") {
		$("#search_string").autocompleteShow({
			matchSubset        : false,
			minChars           : 2,
			request            : "autocomplete_sender",
			remote_connector   : "site.remote",
			result_fields_id   : "id",
			result_fields_name : "id",
			form_id            : "form_mailbox_search",
			show_portion       : 0
		});
	}
	
	// Checkbox click actions (click - skins are disabled / check, uncheck - skins are enabled)
	var chk_actions = "click";
	// Select message rows
	var trs = jQuery(".old_mail, .new_mail", "#mailbox");
	
	// Assign hover actions to messages
	trs.hover(function(e){
		jQuery(this).addClass("row_on");
	}, function(e){
		jQuery(this).removeClass("row_on");
	});
	
	// Select messages checkboxes
	var chks = trs.find(".disp_chk");
	// Select 'check all' checkbox
	var chk_all = jQuery("#chk_all");
	
	// Check if delete/make read action are enabled
	function enable_actions(){
		if (chks.filter(":checked").length > 0) {
			jQuery(".mail_delete:last, .mail_mark_read:last").hide();
			jQuery(".mail_delete:first, .mail_mark_read:first").show();
		}
		else {
			jQuery(".mail_delete:first, .mail_mark_read:first").hide();
			jQuery(".mail_delete:last, .mail_mark_read:last").show();
		}
	}
	
	// Assign checkbox actions
	chk_all.bind(chk_actions, function(e){
		if (jQuery(this).is(":checked")) {
			chks.attr("checked", "checked");
		}
		else {
			chks.removeAttr("checked");
		}
		enable_actions();
	});
	
	// Assign checkbox actions
	chks.bind(chk_actions, function(e){
		enable_actions();
	});
	
	// Assign delete actions
	jQuery("#mail_delete").click(function(e){
		if (chks.filter(":checked").length > 0) {
			Boxy.confirm("<b>Mesajele selectate vor fi sterse!<br />Continuati?</b>", function(){
				jQuery(":hidden[name='do']").val("delete");
				jQuery("form#mailbox").submit();
			});
		}
		// Remove default link behavior
		return false;
	});
	
	// Assign 'make read' actions
	jQuery("#mail_mark_read").click(function(e){
		if (chks.filter(":checked").length > 0) {
			jQuery(":hidden[name='do']").val("mark_read");
			jQuery("form#mailbox").submit();
		}
		// Remove default link behavior
		return false;
	});
}

// Albums functions ################################################################################
function page_albums_mgmt(){
	// Add skin to album selectbox
	jQuery("#fk_profile_albums").selBox({afterChange: function(obj){
		go_filter(obj, jQuery(obj).attr("rel"));
	}});
	
	// Limit textarea content length
	jQuery("textarea").each(function(i, elem){
		bind_text_length(elem);
	});
	
	// Show cropper
	jQuery(".a_edit").click(function(e){
		show_cropper({
			link: do_link("site.cropper", "files_key=" + jQuery(this).metadata().files_key),
			width: '860',
			height: '680',
			key: jQuery(this).metadata().files_key
		});
		
		return false;
	});
	
	// Disable and unselect form elements when you click on delete picture
	jQuery(":checkbox[id^='delete_']").click(function(e){
		jThis = jQuery(this);
		
		if (jThis.attr("checked") == true) {
			jThis.closest("ul")
				.find(":radio").removeAttr("checked").attr("disabled", "disabled")
			.end()
				.find("select").attr("disabled", "disabled");
		}
		else {
			jThis.closest("ul")
				.find(":radio").removeAttr("disabled")
			.end()
				.find("select").removeAttr("disabled");
		}
	});
}

// Address book functions ################################################################################

// Handle firends selection component
function refresh_friends_select(_container){
	
	// Select friends container
	var container = jQuery("#" + _container);
	
	// Create empty ul if the container doesn't have any
	if (container.find("ul").length == 0) {
		container.append("<ul></ul>");
	}
	
	// Select first ul from the container
	container = container.find("ul:eq(0)");
	
	// Select closest parent form
	var my_form = container.closest("form");
	
	// Test if container is palced inside a form
	var have_form = false;
	var my_friends;
	if (my_form.length > 0) {
		// Add hidden input with friends' keys to the form
		if (jQuery("#my_friends", my_form).length == 0) {
			my_form.prepend("<input type=\"hidden\" id=\"my_friends\" name=\"my_friends\" value=\"\" />");
		}
		
		my_friends = my_form.find("#my_friends");
		have_form = true;
	}
	
	// Preselect checkboxes if we have records in container
	var lis = jQuery("li", container);
	if (lis.length > 0) {
		lis.each(function(i, v){
			jQuery("#" + jQuery(this).attr("id").substr(4) + " :checkbox", "#friends_select").attr("checked", "checked");
		});
	}
	
	// Add actions to lis
	jQuery("li", "#friends_select").unbind("click").click(function(e){
		var chk = jQuery(this).find(":checkbox:eq(0)");
		chk.click();
		
		if (jQuery(this).find(":checkbox").is(":checked")) {
			// Add friend if doesn't exist
			var cell = jQuery(this);
			
			if (jQuery("#sel_" + cell.attr("id"), container).length == 0) {
				var new_cell = cell.clone();
				new_cell.attr("id", "sel_" + new_cell.attr("id"));
				new_cell.find(".checkbox_row").remove();
				new_cell.find(".txt:eq(0)").append("<a href=\"" + PATH_SELF + "\" class=\"del smaller dark\">Sterge</a>");
				container.append(new_cell);
			}
		}
		else {
			// Remove friend
			jQuery("#sel_" + jQuery(this).attr("id"), container).remove();
		}
		
		// Update friends' keys
		my_friends.val(jQuery.map(jQuery("li", container), function(v){
			return jQuery(v).attr("id").substr(11);
		}).join(","));
		
		return false;
	});
	
	// Assign checkbox actions
	jQuery(":checkbox", "#friends_select").unbind("click").click(function(e){
		
		if (jQuery(this).is(":checked")) {
			// Add friend if doesn't exist
			var cell = jQuery(this).closest("li");
			
			if (jQuery("#sel_" + cell.attr("id"), container).length == 0) {
				var new_cell = cell.clone();
				new_cell.attr("id", "sel_" + new_cell.attr("id"));
				new_cell.find(".checkbox_row").remove();
				new_cell.find(".txt:eq(0)").append("<a href=\"" + PATH_SELF + "\" class=\"del smaller dark\">Sterge</a>");
				container.append(new_cell);
			}
		}
		else {
			// Remove friend
			jQuery("#sel_" + jQuery(this).closest("li").attr("id"), container).remove();
		}
		
		// Update friends' keys
		my_friends.val(jQuery.map(jQuery("li", container), function(v){
			return jQuery(v).attr("id").substr(11);
		}).join(","));
		
		// We have a callback function to call
		if (typeof(refresh_friends_select_callback) == "function") {
			setTimeout(refresh_friends_select_callback, 100);
		}
		
		e.stopPropagation();
	});
	
	// Assing live action for delete links
	jQuery("#" + _container + " .del").die("click").live("click", function(e){
		jQuery(this).closest("li").remove();
		
		my_friends.val(jQuery.map(jQuery("li", container), function(v){
			return jQuery(v).attr("id").substr(11);
		}).join(","));
		
		// We have a callback function to call
		if (typeof(refresh_friends_select_callback) == "function") {
			refresh_friends_select_callback();
		}
		
		return false;
	});
}

// Handle invite form posting
function handle_ab_post(){
	// Disable form submisition and do an ajax posting
	jQuery("#ab_invite_form").submit(function(e){
		var jSelf = jQuery(this);
		var content = jQuery("#ab_container");
		
		// Disable form buttons
		jSelf.find(":button").attr("disabled", "disabled");
		
		// Post to remote
		jQuery.post(jSelf.attr("action"), jSelf.serialize(), function(data){
			ab_boxy.resize(280, 450, function(){});
			content.html(data);
			handle_ab_select();
		});
		
		return false;
	});
}

// Handle address book selection
function handle_ab_select(){
	// Select container checkboxes and assign actions
	jQuery("#address_container :checkbox").click(function(e){
		var label = jQuery(this).closest(".row").find("label");
		var self = this;
		
		if (jQuery(this).attr("checked") == true) {
			if (typeof(create_input_row) == "function") {
				// Create new row with name and email inputs
				create_input_row(new Array(label.find("b").text().toString(), label.find(".hint").text().toString()), jQuery(this).attr("id"));
			}
		}
		else {
			jQuery(".friends_group").filter(function(){
				return jQuery(this).data("mail_id") == jQuery(self).attr("id");
			}).remove();
		}
	});
	
	// Assign letter links actions (for address book scrolling)
	jQuery("#letter_block a").click(function(e){
		var related = jQuery("#address_container > b#" + jQuery(this).attr("rel").toUpperCase());
		jQuery("#address_container").scrollTo(related, 500, {axis: "y"});
		
		return false;
	});
}

// Handle group subscribe/unsubscribe links and request status
function handle_user_group_relation(is_member, request_status){
	
	// We have a member
	if (is_member > 0) {
		jQuery("#g_info_unsubscribe").show();
	}
	else {
		// Active request
		if (request_status == "active") {
			jQuery("#g_info_request_pending").show();
		}
		// Rejected request
		else if (request_status == "rejected") {
			jQuery("#g_info_request_rejected").show();
		}
		// No request
		else {
			jQuery("#g_info_subscribe").show();
		}
	}
}

/*************/
;// Site init #######################################################
$(function(){
	
	handle_search_input({input: "#top_search_input", default_text: "Cauta localuri, evenimente"});
	
	// Init actions for top site navigation
	top_nav_actions();
	// Init actions for top menu (for logged in users)
	top_menu_actions();
	
	$(".error_msg_close").live("click", function(e){
		$(this).closest("div[class^='box']").remove();
		$(this).closest("div[class^='error_block']").remove(); return false;
	});
	
	// Add functionality for links with 'remote_action' class
	assign_remote_action();
	// Add functionality for links with 'overlay_page' class
	assign_overlay_action();
	
	replace_redirect();
	
	// Handle cities layer (only for main_site)
	if (top == self) {
		handle_cities_layer();
	}
	
	// Run main js from current page
	if (typeof(js_init) == "function") {
		js_init();
	}
	// Run other js from current page
	if (typeof(js_init2) == "function") {
		js_init2();
	}
	// Run js from left menu
	if (typeof(js_init_left) == "function") {
		js_init_left();
	}
	// Run js from right menu
	if (typeof(js_init_right) == "function") {
		js_init_right();
	}
	
	// Add target='_blank' for links with rel='_blank' (for strict xhtml validation)
	$("a[rel='_blank']").click(function(e){
		this.target = "_blank";
	});
	
	// If user is logged in, auto update counters
	if (USR_logins_key > 0) {
		setInterval(function(){
			$.getScript(do_link("site.account_remote", "request=update_counters"), function(data){});
		}, 30000);
	}
});


function init_core_jmap(id, _query, coords){
	
	google.load("maps", "2.x", {"callback" : function(){
		
		jQuery("#" + id).jmap("init", {
			mapShowjMapsIcon: false
		}).css("visibility", "hidden");
		
		if (coords != null) {
			var tmp = coords.split(",");
			
			jQuery("#" + id).show().jmap("MoveTo", {
				"mapCenter": [tmp[0], tmp[1]],
				"mapZoom": parseInt(tmp[2])
			}).find("> div:eq(2)").remove().end().css("visibility", "visible");
			
			jQuery("#" + id).jmap("AddMarker",{
				"pointLatLng": [tmp[0], tmp[1]],
                        	"pointHTML": _query
                    	}, function(){
                    		jQuery("#copyright", "#" + id).hide();
                    	});
		}
		else {
			Mapifies.SearchAddress(jQuery("#" + id), {
				"query": _query,
				"returnType": "getLocations"
			}, function(result, options){
				var valid = Mapifies.SearchCode(result.Status.code);
				
				if (valid.success) {
					var box = result.Placemark[0].ExtendedData.LatLonBox;
					var point = result.Placemark[0].Point.coordinates;
					var address = result.Placemark[0].address;
					var google_map = Mapifies.MapObjects.Get(jQuery("#" + id));
					var bounds = new GLatLngBounds(new GLatLng(box.south, box.west), new GLatLng(box.north, box.east));
					var zoom = google_map.getBoundsZoomLevel(bounds);
					
					jQuery("#" + id).show().jmap("MoveTo", {
						"mapCenter": [point[1], point[0]],
						"mapZoom": zoom
					}).find("> div:eq(2)").remove().end().css("visibility", "visible");
					
					jQuery("#" + id).jmap("AddMarker",{
						"pointLatLng": [point[1], point[0]],
		                        	"pointHTML": address
		                    	});
		                    	
		                    	var mdata = jQuery("#" + id).metadata();
		                    	
		                    	if ((mdata.static_x == "0") && (typeof(mdata.request) != "undefined")) {
		                    		var new_geodata = point[1] + "," + point[0] + "," + zoom;
		                    		
		                    		jQuery.get(do_link("site.remote", "request=" + mdata.request + "&geodata=" + new_geodata + "&key=" + mdata.key), function(data){});
		                    	}
				}
			});
		}
	}});
}

function init_jmap(id, _query, init, coords){
	
	if (typeof(coords) == "undefined") {
		coords = null;
	}
	
	if (init == 0) {
		
		var mdata = jQuery("#" + id).metadata();
		
		if (mdata.static == "1") {
			if (mdata.static_x == "0") {
				init_core_jmap(id, _query, coords);
			}
			else {
				var static_img = "http://maps.google.com/staticmap?center=" + mdata.static_x + "," + mdata.static_y + "&zoom=" + mdata.static_zoom + "&size=" + jQuery("#" + id).width() + "x" + jQuery("#" + id).height() + "&maptype=mobile&markers=" + mdata.static_x + "," + mdata.static_y + "&key=" + MAPS_API_KEY + "&sensor=false";
				
				jQuery("#" + id).css("position", "relative").append("<div id=\"" + id + "_static\" style=\"position: absolute; top: 0; left: 0; z-index: 1000; cursor: pointer;\"><img src=\"" + static_img + "\" /></div>");
				jQuery("<span id=\"click_here\" style=\"position: absolute; top: 75%; left: 50%; width: 200px; margin-left: -100px; z-index: 1001; font-size: 93%; font-weight: 700; text-align: center; padding: 0.5em 0; background: #FBFBC5; border: 1px solid #333333;\">Click pe harta pentru activare</span>").css("opacity", "0").appendTo("#" + id + "_static");
				jQuery("<img src=\"" + PATH_STATIC + "/img/pubbing/site/loading_big.gif\" id=\"map_preload\" width=\"50\" height=\"50\" style=\"position: absolute; top: 50%; left: 50%; margin: -25px 0 0 -25px; z-index: 1002;\" />").hide().appendTo("#" + id);
				
				jQuery("#" + id + "_static").hover(function(e){
					jQuery("#click_here", this).animate({"opacity": 1}, {duration: 200, queue: false});
				}, function(e){
					jQuery("#click_here", this).animate({"opacity": 0}, {duration: 200, queue: false});
				}).click(function(e){
					jQuery(this).hide();
					jQuery("#map_preload", "#" + id).show();
					init_core_jmap(id, _query, mdata.static_x + "," + mdata.static_y + "," + mdata.static_zoom);
				});
			}
		}
		else {
			init_core_jmap(id, _query, coords);
		}
	}
	else {
		try {jQuery("#" + id).jmap("CheckResize");}catch(err){}
	}
	
	return 1;
}

// Handle cities layer
function handle_cities_layer(){
	var cities_boxy = $("<div id=\"cities_layer\"></div>").css({
		top: ($("#cities_layer_link").offset().top + $("#cities_layer_link").height()),
		left: ($("#cities_layer_link").offset().left + $("#cities_layer_link").width() - 574)
	});
	
	cities_boxy.appendTo("body");
	$("body").click(function(e){
		if ($("#cities_layer").is(":visible") && ($(e.target).closest("#cities_layer").length == 0) ) {
			$("#cities_layer").hide();
		}
	});
	
	var first_cities_boxy = false;
	// Assign actuator actions
	$("#cities_layer_link").click(function(){
		if (!first_cities_boxy) {
			// Show preloader and load cities from remote
			$("#cities_layer")
				.html("<img src=\"" + PATH_STATIC + "/img/pubbing/site/loading_big.gif\" style=\"width: 50px; height: 50px; margin: 1em auto;\" />")
				.load($(this).metadata().cities_url, function(data){
					$("#cities_layer").css("padding", "0px").html(data);
					// cities_boxy.center();
					jQuery("#cities_layer > div:get(0)").scrollTo($("#cities_layer ul :checkbox:checked:get(0)"), 500, {axis: "y"});
				});
			first_cities_boxy = true;
		}
		// Toggle cities layer
		cities_boxy.toggle();
		$("#cities_layer_link").closest("li").toggleClass("on");
		// Prevent default action
		return false;
	});
	
	// Add radio behavior to checkboxes
	$("#cities_layer ul :checkbox").live("click", function(){
		if ($(this).attr("checked") == false) {
			return false;
		}
		else {
			$("#cities_layer ul :checkbox").not(this).removeAttr("checked");
		}
	});
	
	// Assign action to change city button
	$("#btn_change_city").live("click", function(){
		var selected_city = $("#cities_layer ul :checkbox:checked:get(0)").metadata();
		if ($("#set_default_city").is(":checked")) {
			// Set new default city in cookie
			jQuery.cookie("ip_location_city_detect", selected_city.cities_key, {expires: 356, path: PATH_TO_FILE, domain: COOKIE_DOMAIN});
		}
		// Redirect to new city
		document.location = do_link("site.guide", "cities_str_key=" + selected_city.cities_str_key);
	});
}

function handle_search_input(options){
	
	options = $.extend({}, {default_text: "Cauta", color_light: "#AAAAAA", color_dark: "#333333"}, options);
	
	// Select search input
	var input = jQuery(options.input);
	
	if (input.length > 0) {
		// Default search text
		var txt = options.default_text;
		// Select closest parent form
		var par = input.closest("form");
		
		// If input is empty add default text
		if (jQuery.trim(input.val()) == "") {
			input.val(txt);
		}
		
		// Show default text with light gray
		if (input.val() == txt) {
			input.css("color", options.color_light);
		}
		else {
			input.css("color", options.color_dark);
		}
		
		// Assign input actions
		input.focus(function(e){
			// Remove default text on focus
			if ((jQuery.trim(input.val()) == "") || (input.val() == txt)) {
				input.val("");
				input.css("color", options.color_dark);
			}
		}).blur(function(e){
			// Add default text on blur if input is empty
			if (jQuery.trim(input.val()) == "") {
				input.val(txt);
				input.css("color", options.color_light);
			}
		});
		
		// If input is empty or has default text, disable form submision
		par.submit(function(e){
			if ((jQuery.trim(input.val()) == "") || (input.val() == txt)) {
				return false;
			}
		});
	}
}
;jQuery.cookie=function(b,j,m){if(typeof j!="undefined"){m=m||{};if(j===null){j="";m.expires=-1}var e="";if(m.expires&&(typeof m.expires=="number"||m.expires.toUTCString)){var f;if(typeof m.expires=="number"){f=new Date();f.setTime(f.getTime()+(m.expires*24*60*60*1000))}else{f=m.expires}e="; expires="+f.toUTCString()}var l=m.path?"; path="+(m.path):"";var g=m.domain?"; domain="+(m.domain):"";var a=m.secure?"; secure":"";document.cookie=[b,"=",encodeURIComponent(j),e,l,g,a].join("")}else{var d=null;if(document.cookie&&document.cookie!=""){var k=document.cookie.split(";");for(var h=0;h<k.length;h++){var c=jQuery.trim(k[h]);if(c.substring(0,b.length+1)==(b+"=")){d=decodeURIComponent(c.substring(b.length+1));break}}}return d}};
;(function($){$.extend({metadata:{defaults:{type:'class',name:'metadata',cre:/({.*})/,single:'metadata'},setType:function(type,name){this.defaults.type=type;this.defaults.name=name;},get:function(elem,opts){var settings=$.extend({},this.defaults,opts);if(!settings.single.length)settings.single='metadata';var data=$.data(elem,settings.single);if(data)return data;data="{}";if(settings.type=="class"){var m=settings.cre.exec(elem.className);if(m)data=m[1];}else if(settings.type=="elem"){if(!elem.getElementsByTagName)return;var e=elem.getElementsByTagName(settings.name);if(e.length)data=$.trim(e[0].innerHTML);}else if(elem.getAttribute!=undefined){var attr=elem.getAttribute(settings.name);if(attr)data=attr;}if(data.indexOf('{')<0)data="{"+data+"}";data=eval("("+data+")");$.data(elem,settings.single,data);return data;}}});$.fn.metadata=function(opts){return $.metadata.get(this[0],opts);};})(jQuery);
;(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie && parseInt($.browser.version)===6){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
;/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
;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}('(7($){$.8.9=7(d){g e=$.v({},$.8.9.k,d);g f=e.l;2.w(7(){5(!$(2).3(\'4\')||$(2).3(\'4\')=="#"){$(2).3(\'4\',j.x.4)}5(!$(2).3(\'6\')){$(2).3(\'6\',y.6)}5($.h.z){$(2).3(\'m\',$(2).3(\'4\')).3(\'4\',\'\').3(\'4\',\'A:B(0)\').3(\'C\',\'$.8.9.n(2,"\'+$(2).3(\'6\')+\'","\'+$(2).3(\'m\')+\'")\')}i{$(2).o(p)}});7 p(a){g b=$(2).3(\'4\');g c=$(2).3(\'6\');b=b.E("q:///","F://q/");5($.h.G){j.H.I(b,c)}i 5($.h.J){j.r.K(c,b,\'\')}i 5(L.M.N().O(\'P\')>-1){s(f)}i 5($.h.Q){s(f)}a.R()};t 2};$.8.9.k={l:\'S "T + D" U "V + D" W X, u Y 2 Z u 10 11.\'};$.8.9.n=7(e,a,b){e.12="r";e.6=a;e.4="";e.4=b;e.o();t 13}})(14);',62,67,'||this|attr|href|if|title|function|fn|jFav|||||||var|browser|else|window|defaults|msg|link|OperaBookmark|click|addToFavorites|file|sidebar|alert|return|to|extend|each|location|document|opera|javascript|void|onClick||replace|http|msie|external|AddFavorite|mozilla|addPanel|navigator|userAgent|toLowerCase|indexOf|chrome|safari|preventDefault|Press|Ctrl|or|CMD|for|MAC|add|page|your|bookmarks|rel|false|jQuery'.split('|'),0,{}))
;(function(a){a.fn.autoResize=function(j){var b=a.extend({onResize:function(){},animate:true,animateDuration:150,animateCallback:function(){},extraSpace:20,limit:1000},j);this.filter('textarea').each(function(){var c=a(this).css({resize:'none','overflow-y':'hidden'}),k=c.height(),f=(function(){var l=['height','width','lineHeight','textDecoration','letterSpacing'],h={};a.each(l,function(d,e){h[e]=c.css(e)});return c.clone().removeAttr('id').removeAttr('name').css({position:'absolute',top:0,left:-9999}).css(h).attr('tabIndex','-1').insertBefore(c)})(),i=null,g=function(){f.height(0).val(a(this).val()).scrollTop(10000);var d=Math.max(f.scrollTop(),k)+b.extraSpace,e=a(this).add(f);if(i===d){return}i=d;if(d>=b.limit){a(this).css('overflow-y','');return}b.onResize.call(this);b.animate&&c.css('display')==='block'?e.stop().animate({height:d},b.animateDuration,b.animateCallback):e.height(d)};c.unbind('.dynSiz').bind('keyup.dynSiz',g).bind('keydown.dynSiz',g).bind('change.dynSiz',g)});return this}})(jQuery);
;if(jQuery.fn.bgiframe==undefined){jQuery.fn.bgiframe=function(){return this}}jQuery.fn.boxy=function(a){a=a||{};return this.each(function(){var c=this.nodeName.toLowerCase(),b=this;if(c=="a"){jQuery(this).click(function(){var h=Boxy.linkedTo(this),e=this.getAttribute("href"),g=jQuery.extend({actuator:this,title:this.title},a);if(e.match(/(&|\?)boxy\.modal/)){g.modal=true}if(h){h.show()}else{if(e.indexOf("#")>=0){var f=jQuery(e.substr(e.indexOf("#"))),d=f.clone(true);f.remove();g.unloadOnHide=false;new Boxy(d,g)}else{if(!g.cache){g.unloadOnHide=true}Boxy.load(this.href,g)}}return false})}else{if(c=="form"){jQuery(this).bind("submit.boxy",function(){Boxy.confirm(a.message||"Please confirm:",function(){jQuery(b).unbind("submit.boxy").submit()});return false})}}})};function Boxy(b,a){this.boxy=jQuery(Boxy.WRAPPER);jQuery.data(this.boxy[0],"boxy",this);this.visible=false;this.options=jQuery.extend({},Boxy.DEFAULTS,a||{});if(this.options.modal){this.options=jQuery.extend(this.options,{center:true,draggable:false})}if(this.options.actuator){jQuery.data(this.options.actuator,"active.boxy",this)}this.setContent(b||"<div></div>");this._setupTitleBar();this.boxy.css("display","none").appendTo(document.body);this.toTop();if(this.options.fixed){if(jQuery.browser.msie&&jQuery.browser.version<7){this.options.fixed=false}else{this.boxy.addClass("fixed")}}if(this.options.center&&Boxy._u(this.options.x,this.options.y)){this.center()}else{this.moveTo(Boxy._u(this.options.x)?this.options.x:Boxy.DEFAULT_X,Boxy._u(this.options.y)?this.options.y:Boxy.DEFAULT_Y)}if(this.options.show){this.show()}}Boxy.EF=function(){};jQuery.extend(Boxy,{WRAPPER:"<table cellspacing='0' cellpadding='0' border='0' class='boxy-wrapper'><tr><td class='top' colspan='3'></td></tr><tr><td class='left'></td><td class='boxy-inner'></td><td class='right'></td></tr><tr><td class='bottom' colspan='3'></td></tr></table>",DEFAULTS:{title:null,animate:false,closeable:true,draggable:true,clone:false,actuator:null,center:true,show:true,modal:false,fixed:true,closeText:"[close]",unloadOnHide:false,clickToFront:false,behaviours:Boxy.EF,afterDrop:Boxy.EF,beforeShow:Boxy.EF,afterShow:Boxy.EF,afterHide:Boxy.EF,beforeUnload:Boxy.EF},DEFAULT_X:50,DEFAULT_Y:50,MODAL_OPACITY:0.7,zIndex:4337,dragConfigured:false,resizeConfigured:false,dragging:null,load:function(b,a){a=a||{};var c={url:b,type:"GET",dataType:"html",cache:false,success:function(d){d=jQuery(d);if(a.filter){d=jQuery(a.filter,d)}new Boxy(d,a)}};jQuery.each(["type","cache"],function(){if(this in a){c[this]=a[this];delete a[this]}});jQuery.ajax(c)},get:function(a){var b=jQuery(a).parents(".boxy-wrapper");return b.length?jQuery.data(b[0],"boxy"):null},linkedTo:function(a){return jQuery.data(a,"active.boxy")},alert:function(b,c,a){a=jQuery.extend({txt_ok:"Inchide",autoClose:2500},a);return Boxy.ask(b,[a.txt_ok],c,a)},confirm:function(b,c,a){a=jQuery.extend({txt_ok:"OK",txt_cancel:"Cancel"},a);return Boxy.ask(b,[a.txt_ok,a.txt_cancel],function(d){if(d==a.txt_ok){c()}},a)},ask:function(c,f,m,n){n=jQuery.extend({modal:true,closeable:false},n||{},{show:true,unloadOnHide:true});var l="";if(n.autoClose>0){l=' class="alert_hint"'}var e=jQuery("<div"+l+"></div>").append(jQuery('<div class="question"></div>').html(c));var a={},j=[];if(f instanceof Array){for(var d=0;d<f.length;d++){a[f[d]]=f[d];j.push(f[d])}}else{for(var b in f){a[f[b]]=b;j.push(f[b])}}var h=jQuery('<form class="answers"></form>');h.html(jQuery.map(j,function(i){return' <button type="button" class="btn btn_small"><span>'+i+"</span></button>"}).join(" "));jQuery("button[type=button]",h).click(function(){var i=this;Boxy.get(this).hide(function(){if(m){m(a[jQuery(i).find("span").text()])}})});jQuery("button[type=button]:contains("+n.txt_cancel+")",h).addClass("btn_small_gray");e.append(h);if(n.autoClose>0){n.modal=false}var g=new Boxy(e,n);if(n.autoClose>0){setTimeout(function(){if(m){m(null)}g.hideAndUnload()},n.autoClose)}},isModalVisible:function(){return jQuery(".boxy-modal-blackout").length>0},_u:function(){for(var a=0;a<arguments.length;a++){if(typeof arguments[a]!="undefined"){return false}}return true},_handleResize:function(a){jQuery(".boxy-modal-blackout").css("display","none").css(Boxy._documentSize()).css("display","block")},_handleDrag:function(a){var b;if(b=Boxy.dragging){b[0].boxy.css({left:a.pageX-b[1],top:a.pageY-b[2]})}},_nextZ:function(){return Boxy.zIndex++},_viewport:function(){var e=document.documentElement,a=document.body,c=window;return jQuery.extend(jQuery.browser.msie?{left:a.scrollLeft||e.scrollLeft,top:a.scrollTop||e.scrollTop}:{left:c.pageXOffset,top:c.pageYOffset},!Boxy._u(c.innerWidth)?{width:c.innerWidth,height:c.innerHeight}:(!Boxy._u(e)&&!Boxy._u(e.clientWidth)&&e.clientWidth!=0?{width:e.clientWidth,height:e.clientHeight}:{width:a.clientWidth,height:a.clientHeight}))},_documentSize:function(){return{height:document.body.offsetHeight}}});Boxy.prototype={estimateSize:function(){this.boxy.css({visibility:"hidden",display:"block"});var a=this.getSize();this.boxy.css("display","none").css("visibility","visible");return a},getSize:function(){return[this.boxy.width(),this.boxy.height()]},getContentSize:function(){var a=this.getContent();return[a.width(),a.height()]},getPosition:function(){var a=this.boxy[0];return[a.offsetLeft,a.offsetTop]},getCenter:function(){var b=this.getPosition();var a=this.getSize();return[Math.floor(b[0]+a[0]/2),Math.floor(b[1]+a[1]/2)]},getInner:function(){return jQuery(".boxy-inner",this.boxy)},getContent:function(){return jQuery(".boxy-content",this.boxy)},setContent:function(a){a=jQuery(a).css({display:"block"}).addClass("boxy-content");if(this.options.clone){a=a.clone(true)}this.getContent().remove();this.getInner().append(a);this._setupDefaultBehaviours(a);this.options.behaviours.call(this,a);return this},moveTo:function(a,b){this.moveToX(a).moveToY(b);return this},moveToX:function(a){if(typeof a=="number"){this.boxy.css({left:a})}else{this.centerX()}return this},moveToY:function(a){if(typeof a=="number"){this.boxy.css({top:a})}else{this.centerY()}return this},centerAt:function(a,c){var b=this[this.visible?"getSize":"estimateSize"]();if(typeof a=="number"){this.moveToX(a-b[0]/2)}if(typeof c=="number"){this.moveToY((c-b[1]/2)>=0?c-b[1]/2:0)}return this},centerAtX:function(a){return this.centerAt(a,null)},centerAtY:function(a){return this.centerAt(null,a)},center:function(b){var a=Boxy._viewport();var c=this.options.fixed?[0,0]:[a.left,a.top];if(!b||b=="x"){this.centerAt(c[0]+a.width/2,null)}if(!b||b=="y"){this.centerAt(null,c[1]+a.height/2)}return this},centerX:function(){return this.center("x")},centerY:function(){return this.center("y")},resize:function(b,a,d){if(!this.visible){return}var c=this._getBoundsForResize(b,a);this.boxy.css({left:c[0],top:c[1]});this.getContent().css({width:c[2],height:c[3]});if(d){d(this)}return this},tween:function(c,a,e){if(!this.visible){return}var d=this._getBoundsForResize(c,a);var b=this;this.boxy.stop().animate({left:d[0],top:d[1]});this.getContent().stop().animate({width:d[2],height:d[3]},function(){if(e){e(b)}});return this},isVisible:function(){return this.visible},show:function(){this._fire("beforeShow");var a=this;if(this.visible){return}if(!Boxy.resizeConfigured){Boxy.resizeConfigured=true;jQuery(window).resize(function(){if(Boxy.isModalVisible()&&a.options.modal){Boxy._handleResize()}a.center()})}if(this.options.modal){this.modalBlackout=jQuery('<div class="boxy-modal-blackout"></div>').css(jQuery.extend(Boxy._documentSize(),{zIndex:Boxy._nextZ(),opacity:Boxy.MODAL_OPACITY})).appendTo(document.body);this.toTop();if(this.options.closeable){jQuery(document.body).bind("keypress.boxy",function(b){var c=b.which||b.keyCode;if(c==27){a.hide();jQuery(document.body).unbind("keypress.boxy")}})}}if(jQuery.browser.msie&&/6.0/.test(navigator.userAgent)&&this.options.modal){jQuery("select").not(jQuery(".boxy-wrapper select")).css("visibility","hidden")}this.boxy.stop().show();this.visible=true;this._fire("afterShow");return this},hide:function(c){if(!this.visible){return}var b=this;var a=(this.options.animate?300:0);if(this.options.modal){jQuery(document.body).unbind("keypress.boxy");jQuery(window).unbind("resize");b.modalBlackout.remove()}b.boxy.css({display:"none"});b.visible=false;b._fire("afterHide");if(c){c(b)}if(b.options.unloadOnHide){b.unload()}if(jQuery.browser.msie&&/6.0/.test(navigator.userAgent)&&this.options.modal){jQuery("select").remove(".boxy-wrapper select").css("visibility","visible")}return this},toggle:function(){this[this.visible?"hide":"show"]();return this},hideAndUnload:function(a){this.options.unloadOnHide=true;this.hide(a);return this},unload:function(){this._fire("beforeUnload");this.boxy.remove();if(this.options.actuator){jQuery.data(this.options.actuator,"active.boxy",false)}},toTop:function(){this.boxy.css({zIndex:Boxy._nextZ()});return this},getTitle:function(){return jQuery("> .title-bar h2",this.getInner()).html()},setTitle:function(a){jQuery("> .title-bar h2",this.getInner()).html(a);return this},_getBoundsForResize:function(c,a){var b=this.getContentSize();var e=[c-b[0],a-b[1]];var d=this.getPosition();return[Math.max(d[0]-e[0]/2,0),Math.max(d[1]-e[1]/2,0),c,a]},_setupTitleBar:function(){if(this.options.title){var b=this;var a=jQuery("<div class='title-bar'></div>").html("<h2>"+this.options.title+"</h2>");if(this.options.closeable){a.append(this.options.closeText)}if(this.options.draggable){a[0].onselectstart=function(){return false};a[0].unselectable="on";a[0].style.MozUserSelect="none";if(!Boxy.dragConfigured){jQuery(document).mousemove(Boxy._handleDrag);Boxy.dragConfigured=true}a.mousedown(function(c){b.toTop();Boxy.dragging=[b,c.pageX-b.boxy[0].offsetLeft,c.pageY-b.boxy[0].offsetTop];jQuery(this).addClass("dragging")}).mouseup(function(){jQuery(this).removeClass("dragging");Boxy.dragging=null;b._fire("afterDrop")})}this.getInner().prepend(a);this._setupDefaultBehaviours(a)}},_setupDefaultBehaviours:function(a){var b=this;if(this.options.clickToFront){a.click(function(){b.toTop()})}jQuery(".close",a).click(function(){b.hide();return false}).mousedown(function(c){c.stopPropagation()})},_fire:function(a){this.options[a].call(this)}};
;(function(b){var a=function(c){if(!c){var c=window.event}c.cancelBubble=true;if(c.stopPropagation){c.stopPropagation()}};b.fn.checkbox=function(c){try{document.execCommand("BackgroundImageCache",false,true)}catch(g){}var f={cls:"jquery-checkbox",empty:"empty.png"};f=b.extend(f,c||{});var d=function(e){var j=e.checked;var h=e.disabled;var i=b(e);if(e.stateInterval){clearInterval(e.stateInterval)}e.stateInterval=setInterval(function(){if(e.disabled!=h){i.trigger((h=!!e.disabled)?"disable":"enable")}if(e.checked!=j){i.trigger((j=!!e.checked)?"check":"uncheck")}},10);return i};return this.each(function(){var i=this;var h=d(i);if(i.wrapper){i.wrapper.remove()}i.wrapper=b('<span class="'+f.cls+'"><span class="mark"><img src="'+f.empty+'" /></span></span>');i.wrapperInner=i.wrapper.children("span:eq(0)");i.wrapper.hover(function(j){i.wrapperInner.addClass(f.cls+"-hover");a(j)},function(j){i.wrapperInner.removeClass(f.cls+"-hover");a(j)});h.css({position:"absolute",zIndex:-1,visibility:"hidden"}).after(i.wrapper);var e=false;if(h.attr("id")){e=b("label[for="+h.attr("id")+"]");if(!e.length){e=false}}if(!e){e=h.closest?h.closest("label"):h.parents("label:eq(0)");if(!e.length){e=false}}if(e){e.hover(function(j){i.wrapper.trigger("mouseover",[j])},function(j){i.wrapper.trigger("mouseout",[j])});e.click(function(j){h.trigger("click",[j]);a(j);return false})}i.wrapper.click(function(j){h.trigger("click",[j]);a(j);return false});h.click(function(j){a(j)});h.bind("disable",function(){i.wrapperInner.addClass(f.cls+"-disabled")}).bind("enable",function(){i.wrapperInner.removeClass(f.cls+"-disabled")});h.bind("check",function(){i.wrapper.addClass(f.cls+"-checked")}).bind("uncheck",function(){i.wrapper.removeClass(f.cls+"-checked")});b("img",i.wrapper).bind("dragstart",function(){return false}).bind("mousedown",function(){return false});if(window.getSelection){i.wrapper.css("MozUserSelect","none")}if(i.checked){i.wrapper.addClass(f.cls+"-checked")}if(i.disabled){i.wrapperInner.addClass(f.cls+"-disabled")}})}})(jQuery);
;/*
 * jQuery Tooltip plugin 1.3
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
 * http://docs.jquery.com/Plugins/Tooltip
 *
 * Copyright (c) 2006 - 2008 Jörn Zaefferer
 *
 * $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
 
;(function($) {
	
		// the tooltip element
	var helper = {},
		// the current tooltipped element
		current,
		// the title of the current element, used for restoring
		title,
		// timeout id for delayed tooltips
		tID,
		// IE 5.5 or 6
		IE = $.browser.msie && /MSIE\s(5\.5|6\.)/.test(navigator.userAgent),
		// flag for mouse tracking
		track = false;
	
	$.tooltip = {
		blocked: false,
		defaults: {
			delay: 200,
			fade: false,
			showURL: true,
			extraClass: "",
			top: 15,
			left: 15,
			id: "tooltip"
		},
		block: function() {
			$.tooltip.blocked = !$.tooltip.blocked;
		}
	};
	
	$.fn.extend({
		tooltip: function(settings) {
			settings = $.extend({}, $.tooltip.defaults, settings);
			createHelper(settings);
			return this.each(function() {
					$.data(this, "tooltip", settings);
					this.tOpacity = helper.parent.css("opacity");
					// copy tooltip into its own expando and remove the title
					this.tooltipText = this.title;
					$(this).removeAttr("title");
					// also remove alt attribute to prevent default tooltip in IE
					this.alt = "";
				})
				.mouseover(save)
				.mouseout(hide)
				.click(hide);
		},
		fixPNG: IE ? function() {
			return this.each(function () {
				var image = $(this).css('backgroundImage');
				if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
					image = RegExp.$1;
					$(this).css({
						'backgroundImage': 'none',
						'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
					}).each(function () {
						var position = $(this).css('position');
						if (position != 'absolute' && position != 'relative')
							$(this).css('position', 'relative');
					});
				}
			});
		} : function() { return this; },
		unfixPNG: IE ? function() {
			return this.each(function () {
				$(this).css({'filter': '', backgroundImage: ''});
			});
		} : function() { return this; },
		hideWhenEmpty: function() {
			return this.each(function() {
				$(this)[ $(this).html() ? "show" : "hide" ]();
			});
		},
		url: function() {
			return this.attr('href') || this.attr('src');
		}
	});
	
	function createHelper(settings) {
		// there can be only one tooltip helper
		if( helper.parent )
			return;
		// create the helper, h3 for title, div for url
		helper.parent = $('<div id="' + settings.id + '"><h3></h3><div class="body"></div><div class="url"></div></div>')
			// add to document
			.appendTo(document.body)
			// hide it at first
			.hide();
			
		// apply bgiframe if available
		if ( $.fn.bgiframe )
			helper.parent.bgiframe();
		
		// save references to title and url elements
		helper.title = $('h3', helper.parent);
		helper.body = $('div.body', helper.parent);
		helper.url = $('div.url', helper.parent);
	}
	
	function settings(element) {
		return $.data(element, "tooltip");
	}
	
	// main event handler to start showing tooltips
	function handle(event) {
		// show helper, either with timeout or on instant
		if( settings(this).delay )
			tID = setTimeout(show, settings(this).delay);
		else
			show();
		
		// if selected, update the helper position when the mouse moves
		track = !!settings(this).track;
		$(document.body).bind('mousemove', update);
			
		// update at least once
		update(event);
	}
	
	// save elements title before the tooltip is displayed
	function save() {
		// if this is the current source, or it has no title (occurs with click event), stop
		if ( $.tooltip.blocked || this == current || (!this.tooltipText && !settings(this).bodyHandler) )
			return;

		// save current
		current = this;
		title = this.tooltipText;
		
		if ( settings(this).bodyHandler ) {
			helper.title.hide();
			var bodyContent = settings(this).bodyHandler.call(this);
			if (bodyContent.nodeType || bodyContent.jquery) {
				helper.body.empty().append(bodyContent)
			} else {
				helper.body.html( bodyContent );
			}
			helper.body.show();
		} else if ( settings(this).showBody ) {
			var parts = title.split(settings(this).showBody);
			helper.title.html(parts.shift()).show();
			helper.body.empty();
			for(var i = 0, part; (part = parts[i]); i++) {
				if(i > 0)
					helper.body.append("<br/>");
				helper.body.append(part);
			}
			helper.body.hideWhenEmpty();
		} else {
			helper.title.html(title).show();
			helper.body.hide();
		}
		
		// if element has href or src, add and show it, otherwise hide it
		if( settings(this).showURL && $(this).url() )
			helper.url.html( $(this).url().replace('http://', '') ).show();
		else 
			helper.url.hide();
		
		// add an optional class for this tip
		helper.parent.addClass(settings(this).extraClass);

		// fix PNG background for IE
		if (settings(this).fixPNG )
			helper.parent.fixPNG();
			
		handle.apply(this, arguments);
	}
	
	// delete timeout and show helper
	function show() {
		tID = null;
		if ((!IE || !$.fn.bgiframe) && settings(current).fade) {
			if (helper.parent.is(":animated"))
				helper.parent.stop().show().fadeTo(settings(current).fade, current.tOpacity);
			else
				helper.parent.is(':visible') ? helper.parent.fadeTo(settings(current).fade, current.tOpacity) : helper.parent.fadeIn(settings(current).fade);
		} else {
			helper.parent.show();
		}
		update();
	}
	
	/**
	 * callback for mousemove
	 * updates the helper position
	 * removes itself when no current element
	 */
	function update(event)	{
		if($.tooltip.blocked)
			return;
		
		if (event && event.target.tagName == "OPTION") {
			return;
		}
		
		// stop updating when tracking is disabled and the tooltip is visible
		if ( !track && helper.parent.is(":visible")) {
			$(document.body).unbind('mousemove', update)
		}
		
		// if no current element is available, remove this listener
		if( current == null ) {
			$(document.body).unbind('mousemove', update);
			return;	
		}
		
		// remove position helper classes
		helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");
		
		var left = helper.parent[0].offsetLeft;
		var top = helper.parent[0].offsetTop;
		if (event) {
			// position the helper 15 pixel to bottom right, starting from mouse position
			left = event.pageX + settings(current).left;
			top = event.pageY + settings(current).top;
			var right='auto';
			if (settings(current).positionLeft) {
				right = $(window).width() - left;
				left = 'auto';
			}
			helper.parent.css({
				left: left,
				right: right,
				top: top
			});
		}
		
		var v = viewport(),
			h = helper.parent[0];
		// check horizontal position
		if (v.x + v.cx < h.offsetLeft + h.offsetWidth) {
			left -= h.offsetWidth + 20 + settings(current).left;
			helper.parent.css({left: left + 'px'}).addClass("viewport-right");
		}
		// check vertical position
		if (v.y + v.cy < h.offsetTop + h.offsetHeight) {
			top -= h.offsetHeight + 20 + settings(current).top;
			helper.parent.css({top: top + 'px'}).addClass("viewport-bottom");
		}
	}
	
	function viewport() {
		return {
			x: $(window).scrollLeft(),
			y: $(window).scrollTop(),
			cx: $(window).width(),
			cy: $(window).height()
		};
	}
	
	// hide helper and restore added classes and the title
	function hide(event) {
		
		if($.tooltip.blocked)
			return;
		// clear timeout if possible
		if(tID)
			clearTimeout(tID);
		// no more current element
		current = null;
		
		var tsettings = settings(this);
		function complete() {
			helper.parent.removeClass( tsettings.extraClass ).hide().css("opacity", "");
		}
		if ((!IE || !$.fn.bgiframe) && tsettings.fade) {
			if (helper.parent.is(':animated'))
				helper.parent.stop().fadeTo(tsettings.fade, 0, complete);
			else
				helper.parent.stop().fadeOut(tsettings.fade, complete);
		} else
			complete();
		
		if( settings(this).fixPNG )
			helper.parent.unfixPNG();
	}
	
})(jQuery);

;(function($) {
	$.fn.jVexCarousel = function(options){
		
		var opts = $.extend({}, $.fn.jVexCarousel.defaults, options);
		
		return this.each(function(){
			var jThis = $(this), ul = $("ul", jThis), li = tmp_li = $("li", ul), items = li.length;
			var o = $.meta ? $.extend({}, opts, jThis.data()) : opts;
			
			var running = false, v = o.visible, curr = o.start, animCss = (o.vertical ? "top" : "left"), sizeCss = (o.vertical ? "height" : "width");
			var liSize = (o.vertical ? li.outerHeight(true) : li.outerWidth(true)), ulSize = liSize * items, divSize = liSize * v;
			var center = parseInt(v / 2);
			
			jThis.css({visibility: "visible", overflow: "hidden", position: "relative", "z-index": "2"}).css(sizeCss, divSize + "px");
			
			if (o.center_start) {
				curr = curr - (center - 1);
			}
			if (curr > (items - v)) {
				curr = items - v;
			}
			if (curr < 0) {
				curr = 0;
			}
			
			ul.css({position: "relative", "z-index": "1"}).css(sizeCss, ulSize + "px").css(animCss, -(curr * liSize));
			li.css({overflow: "hidden", float: (o.vertical ? "none" : "left"), width: li.width(), height: li.height()});
			
			if (o.btnPrev) {
				$(o.btnPrev).click(function() {
					return go(curr - o.scroll);
				});
			}
			
			if (o.btnNext) {
				$(o.btnNext).click(function() {
					return go(curr + o.scroll);
				});
			}
			
			if(o.btnGo) {
				$.each(o.btnGo, function(i, val) {
					$(val).click(function() {
						return go(i);
					});
				});
			}
			
			if(o.auto) {
				setInterval(function() {
					go(curr + o.scroll);
				}, o.auto + o.speed);
			}
			
			// Select visible elements
			function vis() {
			    return li.slice(curr).slice(0,v);
			};
			
			function go(to) {
				if(!running) {
					if(o.beforeStart) {
						o.beforeStart.call(this, vis());
					}
					
					if (to < 0) {
						curr = 0;
					} else if (to > (items - v)) {
						curr = items - v;
					} else {
						curr = to;
					}
					
					running = true;
					
					ul.animate(
						((animCss == "left") ? {left: -(curr * liSize)} : {top: -(curr * liSize)}) , o.speed, o.easing,
						function() {
							if(o.afterEnd) {
								o.afterEnd.call(this, vis());
							}
							
							running = false;
						}
					);
					
					$(o.btnPrev).removeClass("img_nav_left").addClass("thumb_nav_left");
					$(o.btnNext).removeClass("img_nav_right").addClass("thumb_nav_right");
					
					$(curr <= 0 && o.btnPrev).addClass("img_nav_left").removeClass("thumb_nav_left");
					$((curr >= (items - v)) && o.btnNext).addClass("img_nav_right").removeClass("thumb_nav_right");
				}
				
				return false;
			};
			
			$(o.btnPrev).removeClass("img_nav_left").addClass("thumb_nav_left");
			$(o.btnNext).removeClass("img_nav_right").addClass("thumb_nav_right");
			
			$(curr <= 0 && o.btnPrev).addClass("img_nav_left").removeClass("thumb_nav_left");
			$((curr >= (items - v)) && o.btnNext).addClass("img_nav_right").removeClass("thumb_nav_right");
		});
	};
	
	$.fn.jVexCarousel.defaults = {
		btnPrev     : null,
		btnNext     : null,
		btnGo       : null,
		auto        : null,
		speed       : 200,
		easing      : null,
		vertical    : false,
		visible     : 3,
		start       : 0,
		center_start: true,
		scroll      : 1,
		beforeStart : null,
		afterEnd    : null
	};

})(jQuery);
;// (function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b=="string";c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&&!c.scroll?10:150},c);c.highlight=c.highlight||function(e){return e};c.formatMatch=c.formatMatch||c.formatItem;return this.each(function(){new a.Autocompleter(this,c)})},result:function(b){return this.bind("result",b)},search:function(b){return this.trigger("search",[b])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(b){return this.trigger("setOptions",[b])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(l,g){var c={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var b=a(l).attr("autocomplete","off").addClass(g.inputClass);var j;var p="";var m=a.Autocompleter.Cache(g);var e=0;var u;var x={mouseDownOnSelect:false};var r=a.Autocompleter.Select(g,l,d,x);var w;a.browser.opera&&a(l.form).bind("submit.autocomplete",function(){if(w){w=false;return false}});b.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(y){u=y.keyCode;switch(y.keyCode){case c.UP:y.preventDefault();if(r.visible()){r.prev()}else{t(0,true)}break;case c.DOWN:y.preventDefault();if(r.visible()){r.next()}else{t(0,true)}break;case c.PAGEUP:y.preventDefault();if(r.visible()){r.pageUp()}else{t(0,true)}break;case c.PAGEDOWN:y.preventDefault();if(r.visible()){r.pageDown()}else{t(0,true)}break;case g.multiple&&a.trim(g.multipleSeparator)==","&&c.COMMA:case c.TAB:case c.RETURN:if(d()){y.preventDefault();w=true;return false}break;case c.ESC:r.hide();break;default:clearTimeout(j);j=setTimeout(t,g.delay);break}}).focus(function(){e++}).blur(function(){e=0;if(!x.mouseDownOnSelect){s()}}).click(function(){if(e++>0&&!r.visible()){t(0,true)}}).bind("search",function(){var y=(arguments.length>1)?arguments[1]:null;function z(D,C){var A;if(C&&C.length){for(var B=0;B<C.length;B++){if(C[B].result.toLowerCase()==D.toLowerCase()){A=C[B];break}}}if(typeof y=="function"){y(A)}else{b.trigger("result",A&&[A.data,A.value])}}a.each(h(b.val()),function(A,B){f(B,z,z)})}).bind("flushCache",function(){m.flush()}).bind("setOptions",function(){a.extend(g,arguments[1]);if("data" in arguments[1]){m.populate()}}).bind("unautocomplete",function(){r.unbind();b.unbind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete");a(l.form).unbind(".autocomplete")});function d(){var z=r.selected();if(!z){return false}var y=z.result;p=y;if(g.multiple){var A=h(b.val());if(A.length>1){y=A.slice(0,A.length-1).join(g.multipleSeparator)+g.multipleSeparator+y}y+=g.multipleSeparator}b.val(y);v();b.trigger("result",[z.data,z.value]);return true}function t(A,z){/*if(u==c.DEL){r.hide();return}*/var y=b.val();if(!z&&y==p){return}p=y;y=i(y);if(y.length>=g.minChars){b.addClass(g.loadingClass);if(!g.matchCase){y=y.toLowerCase()}f(y,k,v)}else{n();r.hide()}}function h(z){if(!z){return[""]}var A=z.split(g.multipleSeparator);var y=[];a.each(A,function(B,C){if(a.trim(C)){y[B]=a.trim(C)}});return y}function i(y){if(!g.multiple){return y}var z=h(y);return z[z.length-1]}function q(y,z){if(g.autoFill&&(i(b.val()).toLowerCase()==y.toLowerCase())&&u!=c.BACKSPACE){b.val(b.val()+z.substring(i(p).length));a.Autocompleter.Selection(l,p.length,p.length+z.length)}}function s(){clearTimeout(j);j=setTimeout(v,200)}function v(){var y=r.visible();r.hide();clearTimeout(j);n();if(g.mustMatch){b.search(function(z){if(!z){if(g.multiple){var A=h(b.val()).slice(0,-1);b.val(A.join(g.multipleSeparator)+(A.length?g.multipleSeparator:""))}else{b.val("")}}})}if(y){a.Autocompleter.Selection(l,l.value.length,l.value.length)}}function k(z,y){if(y&&y.length&&e){n();r.display(y,z);q(z,y[0].value);r.show()}else{v()}}function f(z,B,y){if(!g.matchCase){z=z.toLowerCase()}var A=m.load(z);if(A&&A.length){B(z,A)}else{if((typeof g.url=="string")&&(g.url.length>0)){var C={timestamp:+new Date()};a.each(g.extraParams,function(D,E){C[D]=typeof E=="function"?E():E});a.ajax({mode:"abort",port:"autocomplete"+l.name,dataType:g.dataType,url:g.url,data:a.extend({q:i(z),limit:g.max},C),success:function(E){var D=g.parse&&g.parse(E)||o(E);m.add(z,D);B(z,D)}})}else{r.emptyList();y(z)}}}function o(B){var y=[];var A=B.split("\n");for(var z=0;z<A.length;z++){var C=a.trim(A[z]);if(C){C=C.split("|");y[y.length]={data:C,value:C[0],result:g.formatResult&&g.formatResult(C,C[0])||C[0]}}}return y}function n(){b.removeClass(g.loadingClass)}};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(b){return b[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(c,b){return c.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(c){var f={};var d=0;function h(l,k){if(!c.matchCase){l=l.toLowerCase()}var j=l.indexOf(k);if(j==-1){return false}return j==0||c.matchContains}function g(j,i){if(d>c.cacheLength){b()}if(!f[j]){d++}f[j]=i}function e(){if(!c.data){return false}var k={},j=0;if(!c.url){c.cacheLength=1}k[""]=[];for(var m=0,l=c.data.length;m<l;m++){var p=c.data[m];p=(typeof p=="string")?[p]:p;var o=c.formatMatch(p,m+1,c.data.length);if(o===false){continue}var n=o.charAt(0).toLowerCase();if(!k[n]){k[n]=[]}var q={value:o,data:p,result:c.formatResult&&c.formatResult(p)||o};k[n].push(q);if(j++<c.max){k[""].push(q)}}a.each(k,function(r,s){c.cacheLength++;g(r,s)})}setTimeout(e,25);function b(){f={};d=0}return{flush:b,add:g,populate:e,load:function(n){if(!c.cacheLength||!d){return null}if(!c.url&&c.matchContains){var m=[];for(var j in f){if(j.length>0){var o=f[j];a.each(o,function(p,k){if(h(k.value,n)){m.push(k)}})}}return m}else{if(f[n]){return f[n]}else{if(c.matchSubset){for(var l=n.length-1;l>=c.minChars;l--){var o=f[n.substr(0,l)];if(o){var m=[];a.each(o,function(p,k){if(h(k.value,n)){m[m.length]=k}});return m}}}}}return null}}};a.Autocompleter.Select=function(e,j,l,p){var i={ACTIVE:"ac_over"};var k,f=-1,r,m="",s=true,c,o;function n(){if(!s){return}c=a("<div/>").hide().addClass(e.resultsClass).css("position","absolute").appendTo(document.body);o=a("<ul/>").appendTo(c).mouseover(function(t){if(q(t).nodeName&&q(t).nodeName.toUpperCase()=="LI"){f=a("li",o).removeClass(i.ACTIVE).index(q(t));a(q(t)).addClass(i.ACTIVE)}}).click(function(t){a(q(t)).addClass(i.ACTIVE);l();j.focus();return false}).mousedown(function(){p.mouseDownOnSelect=true}).mouseup(function(){p.mouseDownOnSelect=false});if(e.width>0){c.css("width",e.width)}s=false}function q(u){var t=u.target;while(t&&t.tagName!="LI"){t=t.parentNode}if(!t){return[]}return t}function h(t){k.slice(f,f+1).removeClass(i.ACTIVE);g(t);var v=k.slice(f,f+1).addClass(i.ACTIVE);if(e.scroll){var u=0;k.slice(0,f).each(function(){u+=this.offsetHeight});if((u+v[0].offsetHeight-o.scrollTop())>o[0].clientHeight){o.scrollTop(u+v[0].offsetHeight-o.innerHeight())}else{if(u<o.scrollTop()){o.scrollTop(u)}}}}function g(t){f+=t;if(f<0){f=k.size()-1}else{if(f>=k.size()){f=0}}}function b(t){return e.max&&e.max<t?e.max:t}function d(){o.empty();var u=b(r.length);for(var v=0;v<u;v++){if(!r[v]){continue}var w=e.formatItem(r[v].data,v+1,u,r[v].value,m);if(w===false){continue}var t=a("<li/>").html(e.highlight(w,m)).addClass(v%2==0?"ac_even":"ac_odd").appendTo(o)[0];a.data(t,"ac_data",r[v])}k=o.find("li");if(e.selectFirst){k.slice(0,1).addClass(i.ACTIVE);f=0}if(a.fn.bgiframe){o.bgiframe()}}return{display:function(u,t){n();r=u;m=t;d()},next:function(){h(1)},prev:function(){h(-1)},pageUp:function(){if(f!=0&&f-8<0){h(-f)}else{h(-8)}},pageDown:function(){if(f!=k.size()-1&&f+8>k.size()){h(k.size()-1-f)}else{h(8)}},hide:function(){c&&c.hide();k&&k.removeClass(i.ACTIVE);f=-1},visible:function(){return c&&c.is(":visible")},current:function(){return this.visible()&&(k.filter("."+i.ACTIVE)[0]||e.selectFirst&&k[0])},show:function(){var v=a(j).offset();c.css({width:typeof e.width=="string"||e.width>0?e.width:a(j).width(),top:v.top+j.offsetHeight,left:v.left}).show();if(e.scroll){o.scrollTop(0);o.css({maxHeight:e.scrollHeight,overflow:"auto"});if(a.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var t=0;k.each(function(){t+=this.offsetHeight});var u=t>e.scrollHeight;o.css("height",u?e.scrollHeight:t);if(!u){k.width(o.width()-parseInt(k.css("padding-left"))-parseInt(k.css("padding-right")))}}}},selected:function(){var t=k&&k.filter("."+i.ACTIVE).removeClass(i.ACTIVE);return t&&t.length&&a.data(t[0],"ac_data")},emptyList:function(){o&&o.empty()},unbind:function(){c&&c.remove()}}};a.Autocompleter.Selection=function(d,e,c){if(d.createTextRange){var b=d.createTextRange();b.collapse(true);b.moveStart("character",e);b.moveEnd("character",c);b.select()}else{if(d.setSelectionRange){d.setSelectionRange(e,c)}else{if(d.selectionStart){d.selectionStart=e;d.selectionEnd=c}}}d.focus()}})(jQuery);
// (function(a){a.fn.autocompleteShow=function(d){var e=this.attr("id");var f=a.extend({},a.fn.autocompleteShow.defaults,d);var b=do_link(f.remote_connector,"request="+f.request);var c=this;a(this).autocomplete(b,{minChars:f.minChars,cacheLength:f.cacheLength,matchCase:f.matchCase,matchSubset:f.matchSubset,minChars:f.minChars});a(this).result(function(i,k,j){if(k){a(this).val(k[0]);if(k[1]){var l=f.result_fields_id.split(",");var h=f.result_fields_name.split(",");var g=k[1].split(",");a.each(l,function(n,m){if(a(":hidden#"+m,"#"+f.form_id).length>0){a(":hidden#"+m,"#"+f.form_id).attr("value",g[n])}else{if(a("#"+m,"#"+f.form_id).length>0){a("#"+m,"#"+f.form_id).remove()}a(a(c).parents()[0]).prepend('<input type="hidden" id="'+m+'" name="'+h[n]+'" value="'+g[n]+'" />')}})}}})};a.fn.autocompleteShow.defaults={autocompleteClass:"",remote_connector:"site.remote",result_fields_id:"",result_fields_name:"",form_id:"",request:""}})(jQuery);

;(function($) {
	
$.fn.extend({
	autocomplete: function(urlOrData, options) {
		var isUrl = typeof urlOrData == "string";
		options = $.extend({}, $.Autocompleter.defaults, {
			url: isUrl ? urlOrData : null,
			data: isUrl ? null : urlOrData,
			delay: isUrl ? $.Autocompleter.defaults.delay : 10,
			max: options && !options.scroll ? 10 : 150
		}, options);
		
		// if highlight is set to false, replace it with a do-nothing function
		options.highlight = options.highlight || function(value) { return value; };
		
		// if the formatMatch option is not specified, then use formatItem for backwards compatibility
		options.formatMatch = options.formatMatch || options.formatItem;
		
		return this.each(function() {
			new $.Autocompleter(this, options);
		});
	},
	result: function(handler) {
		return this.bind("result", handler);
	},
	search: function(handler) {
		return this.trigger("search", [handler]);
	},
	flushCache: function() {
		return this.trigger("flushCache");
	},
	setOptions: function(options){
		return this.trigger("setOptions", [options]);
	},
	unautocomplete: function() {
		return this.trigger("unautocomplete");
	}
});

$.Autocompleter = function(input, options) {

	var KEY = {
		UP: 38,
		DOWN: 40,
		DEL: 46,
		TAB: 9,
		RETURN: 13,
		ESC: 27,
		COMMA: 188,
		PAGEUP: 33,
		PAGEDOWN: 34,
		BACKSPACE: 8
	};

	// Create $ object for input element
	var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);

	var timeout;
	var previousValue = "";
	var cache = $.Autocompleter.Cache(options);
	var hasFocus = 0;
	var lastKeyPressCode;
	var config = {
		mouseDownOnSelect: false
	};
	var select = $.Autocompleter.Select(options, input, selectCurrent, config);
	
	var blockSubmit;
	
	// prevent form submit in opera when selecting with return key
	$.browser.opera && $(input.form).bind("submit.autocomplete", function() {
		if (blockSubmit) {
			blockSubmit = false;
			return false;
		}
	});
	
	// only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
	$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
		// a keypress means the input has focus
		// avoids issue where input had focus before the autocomplete was applied
		hasFocus = 1;
		// track last key pressed
		lastKeyPressCode = event.keyCode;
		switch(event.keyCode) {
		
			case KEY.UP:
				event.preventDefault();
				if ( select.visible() ) {
					select.prev();
				} else {
					onChange(0, true);
				}
				break;
				
			case KEY.DOWN:
				event.preventDefault();
				if ( select.visible() ) {
					select.next();
				} else {
					onChange(0, true);
				}
				break;
				
			case KEY.PAGEUP:
				event.preventDefault();
				if ( select.visible() ) {
					select.pageUp();
				} else {
					onChange(0, true);
				}
				break;
				
			case KEY.PAGEDOWN:
				event.preventDefault();
				if ( select.visible() ) {
					select.pageDown();
				} else {
					onChange(0, true);
				}
				break;
			
			// matches also semicolon
			case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
			case KEY.TAB:
			case KEY.RETURN:
				if( selectCurrent() ) {
					// stop default to prevent a form submit, Opera needs special handling
					event.preventDefault();
					blockSubmit = true;
					return false;
				}
				break;
				
			case KEY.ESC:
				select.hide();
				break;
				
			default:
				clearTimeout(timeout);
				timeout = setTimeout(onChange, options.delay);
				break;
		}
	}).focus(function(){
		// track whether the field has focus, we shouldn't process any
		// results if the field no longer has focus
		hasFocus++;
	}).blur(function() {
		hasFocus = 0;
		if (!config.mouseDownOnSelect) {
			hideResults();
		}
	}).click(function() {
		// show select when clicking in a focused field
		if ( hasFocus++ > 0 && !select.visible() ) {
			onChange(0, true);
		}
	}).bind("search", function() {
		// TODO why not just specifying both arguments?
		var fn = (arguments.length > 1) ? arguments[1] : null;
		function findValueCallback(q, data) {
			var result;
			if( data && data.length ) {
				for (var i=0; i < data.length; i++) {
					if( data[i].result.toLowerCase() == q.toLowerCase() ) {
						result = data[i];
						break;
					}
				}
			}
			if( typeof fn == "function" ) fn(result);
			else $input.trigger("result", result && [result.data, result.value]);
		}
		$.each(trimWords($input.val()), function(i, value) {
			request(value, findValueCallback, findValueCallback);
		});
	}).bind("flushCache", function() {
		cache.flush();
	}).bind("setOptions", function() {
		$.extend(options, arguments[1]);
		// if we've updated the data, repopulate
		if ( "data" in arguments[1] )
			cache.populate();
	}).bind("unautocomplete", function() {
		select.unbind();
		$input.unbind();
		$(input.form).unbind(".autocomplete");
		$input.unbind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete");
	});
	
	
	function selectCurrent() {
		var selected = select.selected();
		if( !selected )
			return false;
		
		var v = selected.result;
		previousValue = v;
		
		if ( options.multiple ) {
			var words = trimWords($input.val());
			if ( words.length > 1 ) {
				var seperator = options.multipleSeparator.length;
				var cursorAt = $(input).selection().start;
				var wordAt, progress = 0;
				$.each(words, function(i, word) {
					progress += word.length;
					if (cursorAt <= progress) {
						wordAt = i;
						return false;
					}
					progress += seperator;
				});
				words[wordAt] = v;
				// TODO this should set the cursor to the right position, but it gets overriden somewhere
				//$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
				v = words.join( options.multipleSeparator );
			}
			v += options.multipleSeparator;
		}
		
		$input.val(v);
		hideResultsNow();
		$input.trigger("result", [selected.data, selected.value]);
		return true;
	}
	
	function onChange(crap, skipPrevCheck) {
		/*if( lastKeyPressCode == KEY.DEL ) {
			select.hide();
			return;
		}*/
		
		var currentValue = $input.val();
		
		if ( !skipPrevCheck && currentValue == previousValue )
			return;
		
		previousValue = currentValue;
		
		currentValue = lastWord(currentValue);
		if ( currentValue.length >= options.minChars) {
			$input.addClass(options.loadingClass);
			if (!options.matchCase)
				currentValue = currentValue.toLowerCase();
			request(currentValue, receiveData, hideResultsNow);
		} else {
			stopLoading();
			select.hide();
		}
	};
	
	function trimWords(value) {
		if (!value)
			return [""];
		if (!options.multiple)
			return [$.trim(value)];
		return $.map(value.split(options.multipleSeparator), function(word) {
			return $.trim(value).length ? $.trim(word) : null;
		});
	}
	
	function lastWord(value) {
		if ( !options.multiple )
			return value;
		var words = trimWords(value);
		if (words.length == 1) 
			return words[0];
		var cursorAt = $(input).selection().start;
		if (cursorAt == value.length) {
			words = trimWords(value)
		} else {
			words = trimWords(value.replace(value.substring(cursorAt), ""));
		}
		return words[words.length - 1];
	}
	
	// fills in the input box w/the first match (assumed to be the best match)
	// q: the term entered
	// sValue: the first matching result
	function autoFill(q, sValue){
		// autofill in the complete box w/the first match as long as the user hasn't entered in more data
		// if the last user key pressed was backspace, don't autofill
		if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
			// fill in the value (keep the case the user has typed)
			$input.val($input.val() + sValue.substring(lastWord(previousValue).length));
			// select the portion of the value not typed by the user (so the next character will erase)
			$(input).selection(previousValue.length, previousValue.length + sValue.length);
		}
	};

	function hideResults() {
		clearTimeout(timeout);
		timeout = setTimeout(hideResultsNow, 200);
	};

	function hideResultsNow() {
		var wasVisible = select.visible();
		select.hide();
		clearTimeout(timeout);
		stopLoading();
		if (options.mustMatch) {
			// call search and run callback
			$input.search(
				function (result){
					// if no value found, clear the input box
					if( !result ) {
						if (options.multiple) {
							var words = trimWords($input.val()).slice(0, -1);
							$input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
						}
						else {
							$input.val( "" );
							$input.trigger("result", null);
						}
					}
				}
			);
		}
	};

	function receiveData(q, data) {
		if ( data && data.length && hasFocus ) {
			stopLoading();
			select.display(data, q);
			autoFill(q, data[0].value);
			select.show();
		} else {
			hideResultsNow();
		}
	};

	function request(term, success, failure) {
		if (!options.matchCase)
			term = term.toLowerCase();
		
		var data = cache.load(term);
		
		// recieve the cached data
		if (data && data.length) {
			success(term, data);
		// if an AJAX url has been supplied, try loading the data now
		} else if( (typeof options.url == "string") && (options.url.length > 0) ){
			
			var extraParams = {
				timestamp: +new Date()
			};
			$.each(options.extraParams, function(key, param) {
				extraParams[key] = typeof param == "function" ? param() : param;
			});
			
			$.ajax({
				// try to leverage ajaxQueue plugin to abort previous requests
				mode: "abort",
				// limit abortion to this input
				port: "autocomplete" + input.name,
				dataType: options.dataType,
				url: options.url,
				data: $.extend({
					q: lastWord(term),
					limit: options.max
				}, extraParams),
				success: function(data) {
					var parsed = options.parse && options.parse(data) || parse(data);
					cache.add(term, parsed);
					success(term, parsed);
				}
			});
		} else {
			// if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
			select.emptyList();
			failure(term);
		}
	};
	
	function parse(data) {
		var parsed = [];
		var rows = data.split("\n");
		for (var i=0; i < rows.length; i++) {
			var row = $.trim(rows[i]);
			if (row) {
				row = row.split("|");
				parsed[parsed.length] = {
					data: row,
					value: row[0],
					result: options.formatResult && options.formatResult(row, row[0]) || row[0]
				};
			}
		}
		return parsed;
	};

	function stopLoading() {
		$input.removeClass(options.loadingClass);
	};

};

$.Autocompleter.defaults = {
	inputClass: "ac_input",
	resultsClass: "ac_results",
	loadingClass: "ac_loading",
	minChars: 1,
	delay: 400,
	matchCase: false,
	matchSubset: true,
	matchContains: false,
	cacheLength: 10,
	max: 100,
	mustMatch: false,
	extraParams: {},
	selectFirst: true,
	formatItem: function(row) { return row[0]; },
	formatMatch: null,
	autoFill: false,
	width: 0,
	multiple: false,
	multipleSeparator: ", ",
	highlight: function(value, term) {
		return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
	},
    scroll: true,
    scrollHeight: 180
};

$.Autocompleter.Cache = function(options) {

	var data = {};
	var length = 0;
	
	function matchSubset(s, sub) {
		if (!options.matchCase) 
			s = s.toLowerCase();
		var i = s.indexOf(sub);
		if (options.matchContains == "word"){
			i = s.toLowerCase().search("\\b" + sub.toLowerCase());
		}
		if (i == -1) return false;
		return i == 0 || options.matchContains;
	};
	
	function add(q, value) {
		if (length > options.cacheLength){
			flush();
		}
		if (!data[q]){ 
			length++;
		}
		data[q] = value;
	}
	
	function populate(){
		if( !options.data ) return false;
		// track the matches
		var stMatchSets = {},
			nullData = 0;

		// no url was specified, we need to adjust the cache length to make sure it fits the local data store
		if( !options.url ) options.cacheLength = 1;
		
		// track all options for minChars = 0
		stMatchSets[""] = [];
		
		// loop through the array and create a lookup structure
		for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
			var rawValue = options.data[i];
			// if rawValue is a string, make an array otherwise just reference the array
			rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
			
			var value = options.formatMatch(rawValue, i+1, options.data.length);
			if ( value === false )
				continue;
				
			var firstChar = value.charAt(0).toLowerCase();
			// if no lookup array for this character exists, look it up now
			if( !stMatchSets[firstChar] ) 
				stMatchSets[firstChar] = [];

			// if the match is a string
			var row = {
				value: value,
				data: rawValue,
				result: options.formatResult && options.formatResult(rawValue) || value
			};
			
			// push the current match into the set list
			stMatchSets[firstChar].push(row);

			// keep track of minChars zero items
			if ( nullData++ < options.max ) {
				stMatchSets[""].push(row);
			}
		};

		// add the data items to the cache
		$.each(stMatchSets, function(i, value) {
			// increase the cache size
			options.cacheLength++;
			// add to the cache
			add(i, value);
		});
	}
	
	// populate any existing data
	setTimeout(populate, 25);
	
	function flush(){
		var tmp = data[''];
		data = {};
		length = 0;
		
		if (options.single_request) {
			data[''] = tmp;
			length = 1;
		}
	}
	
	return {
		flush: flush,
		add: add,
		populate: populate,
		load: function(q) {
			if (!options.cacheLength || !length)
				return null;
			
			/* 
			 * if dealing w/local data and matchContains than we must make sure
			 * to loop through all the data collections looking for matches
			 */
			if( !options.url && options.matchContains ){
				// track all matches
				var csub = [];
				// loop through all the data grids for matches
				for( var k in data ){
					// don't search through the stMatchSets[""] (minChars: 0) cache
					// this prevents duplicates
					if( k.length > 0 ){
						var c = data[k];
						$.each(c, function(i, x) {
							// if we've got a match, add it to the array
							if (matchSubset(x.value, q)) {
								csub.push(x);
							}
						});
					}
				}				
				return csub;
			} else 
			// if the exact item exists, use it
			if (data[q]){
				return data[q];
			} else
			if (options.matchSubset) {
				for (var i = q.length - 1; i >= options.minChars; i--) {
					var c = data[q.substr(0, i)];
					if (c) {
						var csub = [];
						$.each(c, function(i, x) {
							if (matchSubset(x.value, q)) {
								csub[csub.length] = x;
							}
						});
						if (csub.length == 0 && options.single_request && data[''].length > 0) {
							return data[''];
						}
						return csub;
					}
				}
			}
			return null;
		}
	};
};

$.Autocompleter.Select = function (options, input, select, config) {
	var CLASSES = {
		ACTIVE: "ac_over"
	};
	
	var listItems,
		active = -1,
		data,
		term = "",
		needsInit = true,
		element,
		list;
	
	// Create results
	function init() {
		if (!needsInit)
			return;
		element = $("<div/>")
		.hide()
		.addClass(options.resultsClass)
		.css("position", "absolute")
		.appendTo(document.body);
	
		list = $("<ul/>").appendTo(element).mouseover( function(event) {
			if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
	            active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
			    $(target(event)).addClass(CLASSES.ACTIVE);            
	        }
		}).click(function(event) {
			$(target(event)).addClass(CLASSES.ACTIVE);
			select();
			// TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
			input.focus();
			return false;
		}).mousedown(function() {
			config.mouseDownOnSelect = true;
		}).mouseup(function() {
			config.mouseDownOnSelect = false;
		});
		
		if( options.width > 0 )
			element.css("width", options.width);
			
		needsInit = false;
	} 
	
	function target(event) {
		var element = event.target;
		while(element && element.tagName != "LI")
			element = element.parentNode;
		// more fun with IE, sometimes event.target is empty, just ignore it then
		if(!element)
			return [];
		return element;
	}

	function moveSelect(step) {
		listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
		movePosition(step);
        var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
        if(options.scroll) {
            var offset = 0;
            listItems.slice(0, active).each(function() {
				offset += this.offsetHeight;
			});
            if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
                list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
            } else if(offset < list.scrollTop()) {
                list.scrollTop(offset);
            }
        }
	};
	
	function movePosition(step) {
		active += step;
		if (active < 0) {
			active = listItems.size() - 1;
		} else if (active >= listItems.size()) {
			active = 0;
		}
	}
	
	function limitNumberOfItems(available) {
		return options.max && options.max < available
			? options.max
			: available;
	}
	
	function fillList() {
		list.empty();
		var max = limitNumberOfItems(data.length);
		for (var i=0; i < max; i++) {
			if (!data[i])
				continue;
			var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
			if ( formatted === false )
				continue;
			var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
			$.data(li, "ac_data", data[i]);
		}
		listItems = list.find("li");
		if ( options.selectFirst ) {
			listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
			active = 0;
		}
		// apply bgiframe if available
		if ( $.fn.bgiframe )
			list.bgiframe();
	}
	
	return {
		display: function(d, q) {
			init();
			data = d;
			term = q;
			fillList();
		},
		next: function() {
			moveSelect(1);
		},
		prev: function() {
			moveSelect(-1);
		},
		pageUp: function() {
			if (active != 0 && active - 8 < 0) {
				moveSelect( -active );
			} else {
				moveSelect(-8);
			}
		},
		pageDown: function() {
			if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
				moveSelect( listItems.size() - 1 - active );
			} else {
				moveSelect(8);
			}
		},
		hide: function() {
			element && element.hide();
			listItems && listItems.removeClass(CLASSES.ACTIVE);
			active = -1;
		},
		visible : function() {
			return element && element.is(":visible");
		},
		current: function() {
			return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
		},
		show: function() {
			var offset = $(input).offset();
			element.css({
				width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
				top: offset.top + input.offsetHeight,
				left: offset.left
			}).show();
            if(options.scroll) {
                list.scrollTop(0);
                list.css({
					maxHeight: options.scrollHeight,
					overflow: 'auto'
				});
				
                if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
					var listHeight = 0;
					listItems.each(function() {
						listHeight += this.offsetHeight;
					});
					var scrollbarsVisible = listHeight > options.scrollHeight;
                    list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
					if (!scrollbarsVisible) {
						// IE doesn't recalculate width when scrollbar disappears
						listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
					}
                }
                
            }
		},
		selected: function() {
			var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
			return selected && selected.length && $.data(selected[0], "ac_data");
		},
		emptyList: function (){
			list && list.empty();
		},
		unbind: function() {
			element && element.remove();
		}
	};
};

$.fn.selection = function(start, end) {
	if (start !== undefined) {
		return this.each(function() {
			if( this.createTextRange ){
				var selRange = this.createTextRange();
				if (end === undefined || start == end) {
					selRange.move("character", start);
					selRange.select();
				} else {
					selRange.collapse(true);
					selRange.moveStart("character", start);
					selRange.moveEnd("character", end);
					selRange.select();
				}
			} else if( this.setSelectionRange ){
				this.setSelectionRange(start, end);
			} else if( this.selectionStart ){
				this.selectionStart = start;
				this.selectionEnd = end;
			}
		});
	}
	var field = this[0];
	if ( field.createTextRange ) {
		var range = document.selection.createRange(),
			orig = field.value,
			teststring = "<->",
			textLength = range.text.length;
		range.text = teststring;
		var caretAt = field.value.indexOf(teststring);
		field.value = orig;
		this.selection(caretAt, caretAt + textLength);
		return {
			start: caretAt,
			end: caretAt + textLength
		}
	} else if( field.selectionStart !== undefined ){
		return {
			start: field.selectionStart,
			end: field.selectionEnd
		}
	}
};

})(jQuery);

(function($){
	$.fn.autocompleteShow = function(options){
		
		var field_id = this.attr("id");
		var opts = $.extend({}, $.fn.autocompleteShow.defaults, options);
		var URL = do_link(opts.remote_connector, "request=" + opts.request);
		var self = this;
		
		$(this).unautocomplete().autocomplete(URL, {
			extraParams	: opts.extraParams,
			minChars	: opts.minChars,
			cacheLength	: opts.cacheLength,
			matchCase 	: opts.matchCase,
			matchSubset	: opts.matchSubset,
			minChars	: opts.minChars
		});
		
		$(this).result(function(event, data, formatted){
			if (data){
				$(this).val(data[opts.show_portion]);
				
				if(data[1]){
					
					var fields_id = opts.result_fields_id.split(",");
					var fields_name = opts.result_fields_name.split(",");
					var values = data[1].split(",");
					
					if ($.trim(opts.result_fields_id).length > 0) {
						$.each(fields_id, function(i, v){
							
							var new_val = ((values[i] > 0) ? values[i] : -1);
							
							if ($(":hidden#" + v, "#" + opts.form_id).length > 0) {
								$(":hidden#" + v, "#" + opts.form_id).attr("value", new_val);
							}
							else {
								if ($("#" + v, "#" + opts.form_id).length > 0) {
									$("#" + v, "#" + opts.form_id).remove();
								}
								$($(self).parents()[0]).prepend("<input type=\"hidden\" id=\"" + v + "\" name=\"" + fields_name[i] + "\" value=\"" + new_val + "\" />")
							}
						});
					}
				}
			}
		});
	};
	
	$.fn.autocompleteShow.defaults = {
		extraParams : "",
		autocompleteClass : "",
		remote_connector: "site.remote",
		result_fields_id: "",
		result_fields_name: "",
		form_id: "",
		request : "",
		show_portion: 0
	};
})(jQuery);

(function($){
	$.fn.autocompleteUser = function(options){
		
		var field_id = this.attr("id");
		var opts = $.extend({}, $.fn.autocompleteUser.defaults, options);
		var URL = do_link(opts.remote_connector, "request=" + opts.request);
		var self = this;
		
		$(this).unautocomplete().autocomplete(URL, {
			minChars	: opts.minChars,
			cacheLength	: opts.cacheLength,
			matchCase 	: opts.matchCase,
			matchSubset	: opts.matchSubset,
			minChars	: opts.minChars,
			matchContains   : true,
			selectFirst     : true,
			scrollHeight    : 190,
			single_request  : true,
			formatItem: function(data, i, n, value){
				return "<img src=\"" + data[1] + "\" class=\"s_prof\"/> " + value;
			},
			highlight: function(value, term) {
				return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<span class=\"bold red\">$1</span>");
			}
		});
		
		$(this).result(function(event, data, formatted){
			if (data){
				var fields_id = opts.result_fields_id.split(",");
				var fields_name = opts.result_fields_name.split(",");
				var fields_portion = opts.result_fields_portion.split(",");
				
				if (fields_id.length > 0) {
					$.each(fields_id, function(i, v){
						
						var new_val = ((data[fields_portion[i]] > 0) ? data[fields_portion[i]] : -1);
						
						if ($(":hidden#" + v, "#" + opts.form_id).length > 0) {
							$(":hidden#" + v, "#" + opts.form_id).attr("value", new_val);
						}
						else {
							if ($("#" + v, "#" + opts.form_id).length > 0) {
								$("#" + v, "#" + opts.form_id).remove();
							}
							$($(self).parents()[0]).prepend("<input type=\"hidden\" id=\"" + v + "\" name=\"" + fields_name[i] + "\" value=\"" + new_val + "\" />");
						}
					});
				}
			}
		});
	};
	
	$.fn.autocompleteUser.defaults = {
		autocompleteClass : "",
		remote_connector: "site.remote",
		result_fields_id: "",
		result_fields_name: "",
		result_fields_portion: "0",
		form_id: "",
		request : ""
	};
})(jQuery);
;(function($){
	
	$.fn.selBox = function(options){
		
		var opts = $.extend({}, $.fn.selBox.defaults, options);
		
		return this.each(function(){
			
			var sBox  = this;
			var $sBox = $(this);
			
			var o = $.meta ? $.extend({}, opts, $sBox.data()) : opts;
			
			var hasFocus     = 0;
			var hasScroll    = 0;
			var layerHeight  = 0;
			var hoveredIndex = 0;
			
			var $container;
			var $input;
			var $layer;
			var $options;
			var $selectedOpt;
			var $hoveredOpt;
			var $ifrm;
			
			sBox.init = function(){
				$container = sBox.buildContainer();
				$input = sBox.buildInput();
				$layer = sBox.buildLayer();
				
				$input.width((($sBox.width() > o.maxInputWidth) ? o.maxInputWidth : $sBox.width()) - o.arrowWidth);
				$container.width(($sBox.width() > o.maxInputWidth) ? o.maxInputWidth : $sBox.width());
				
				$container.append($input).append($layer);
				
				$sBox.hide().before($container);
				
				$layer.width($sBox.width() - 2).css("top", o.selectHeight + 1);
				if ($layer.height() > o.maxHeight) {
					hasScroll = 1;
					$layer.height(o.maxHeight);
				}
				layerHeight = $layer.height();
				
				if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
					$ifrm = $('<iframe class="bgiframe" frameborder="0" tabindex="-1" src="javascript:false;" style="display:block; position:absolute; z-index:-1;' +
				               'filter:Alpha(Opacity=\'0\');' +
					       'top:' + (o.selectHeight + 1) + 'px;' +
					       'left: 0px;' +
					       'width:' + $sBox.width() + 'px;' +
					       'height:' + layerHeight +'px;' +
					'"/>');
					
					$ifrm.insertBefore($($layer, $container)).hide();
				}
				
				$options = $("li", $layer);
				$selectedOpt = $options.filter("." + o.optOnClass);
				$hoveredOpt = $options.filter("." + o.optHoverClass);
				
				sBox.assignActions();
			}
			
			sBox.buildContainer = function(){
				return $("<div id=\"" + $sBox.attr("id") + "_sBox\" class=\"" + o.containerClass + "\"></div>");
			}
			
			sBox.buildInput = function(){
				return $("<input type=\"text\" id=\"" + $sBox.attr("id") + "_sBoxInput\" class=\"" + o.inputClass + "\" tabIndex=\"" + $sBox.attr("tabindex") + "\" autocomplete=\"off\" readonly=\"readonly\" style=\"-moz-user-select: none;\" />");
			}
			
			sBox.buildLayer = function(){
				var _opt = "<ul id=\"" + $sBox.attr("id") + "_sBoxOptions\" class=\"" + o.layerClass + "\">";
				
				$("option", sBox).each(function(i, v){
					var $v = $(v);
					var _class = "";
					
					if ($v.is(":selected")) {
						_class = " class=\"" + o.optOnClass + " " + o.optHoverClass + "\"";
						$input.val($v.text());
						hoveredIndex = i;
					}
					
					_opt += "<li" + _class + " rel=\"" + $v.val() + "\">" + $v.html() + "</li>";
				});
				
				_opt += "</ul>";
				
				return $(_opt);
			}
			
			sBox.assignActions = function(){
				
				$container.click(function(e){
					$input.click().get(0).focus();
					e.preventDefault(); e.stopPropagation();
				}).hover(function(e){
					hasFocus = 1;
				}, function(e){
					hasFocus = 0;
				});
				
				$layer.hover(function(){}, function(){
					hasFocus = 0;
				})
				
				$input.focus(function(e){
					e.preventDefault(); e.stopPropagation();
				}).blur(function(e){
					if (hasFocus == 0) {
						$layer.hide();
						if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
							$ifrm.hide();
						}
					}
					e.preventDefault(); e.stopPropagation();
				}).keydown(function(e){
					sBox.inputKey(e.keyCode);
					e.preventDefault(); e.stopPropagation();
				}).click(function(e){
					sBox.toggleLayer();
					e.preventDefault(); e.stopPropagation();
				});
				
				$options.click(function(e){
					$input.get(0).focus();
					sBox.optionChange($(this));
					e.preventDefault(); e.stopPropagation();
				}).mouseover(function(e){
					sBox.hoverChange($(this));
					e.preventDefault(); e.stopPropagation();
				});
			}
			
			sBox.toggleLayer = function(){
				$layer.toggle();
				if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
					$ifrm.toggle();
				}
				if ($layer.is(":visible")) {
					hasFocus = 1;
					sBox.scrollTo($selectedOpt);
				}
			}
			
			sBox.scrollTo = function($obj){
				if (hasScroll > 0) {
					var optionOffset = $obj.get(0).offsetTop;
					var layerOffset = $layer.get(0).scrollTop;
					
					if (optionOffset < layerOffset) {
						$layer.scrollTop(optionOffset);
					}
					else if ((optionOffset - layerHeight) >= layerOffset) {
						$layer.scrollTop(optionOffset - layerHeight + $obj.height() + 2);
					}
				}
			}
			
			sBox.inputKey = function(key){
				
				switch(key) {
					case 33: // pgUp
						sBox.moveKey(-10);
						break;
					case 34: // pgDown
						sBox.moveKey(10);
						break;
					case 38: // up
						sBox.moveKey(-1);
						break;
					case 40: // down
						sBox.moveKey(1);
						break;
					case 36: // home
						sBox.moveKey(0);
						break;
					case 35: // end
						sBox.moveKey($options.length - 1);
						break;
					case 13: // return
						if ($layer.is(":visible")) {
							sBox.optionChange($hoveredOpt);
						}
						else {
							$layer.show();
							if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
								$ifrm.show();
							}
							sBox.scrollTo($selectedOpt);
						}
						break;
					case 27: // escape
						$layer.hide();
						if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
							$ifrm.hide();
						}
						break;
						
					default:
						if ((key >= 48 && key <= 57) || (key >= 65 && key <= 90) || (key >= 97 && key <= 122)) {
						
							var patt = new RegExp("^" + String.fromCharCode(key), "i");
							var hasFirst = 0;
							
							$newOpt = $options.filter(function(i){
								if (!hasFirst && (patt.test($options[i].innerHTML) == true)) {
									hasFirst = 1;
									return true;
								}
								else if ((i > hoveredIndex) && (patt.test($options[i].innerHTML) == true)) {
									return true;
								}
								else {
									return false;
								}
							});
							
							if ($newOpt.length > 0) {
								
								if ($newOpt.length > 1) {
									newSel = 1;
								}
								else {
									newSel = 0
								}
								
								if ($layer.is(":visible")) {
									sBox.scrollTo($($newOpt.get(newSel)));
									sBox.hoverChange($($newOpt.get(newSel)));
								}
								else {
									sBox.optionChange($($newOpt.get(newSel)));
								}
							}
						}
				}
			}
			
			sBox.optionChange = function($obj){
				$input.val($obj.text());
				
				$("option", sBox).removeAttr("selected").filter("[value='" + $obj.attr("rel") + "']").attr("selected", "selected");
				
				$layer.hide();
				if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
					$ifrm.hide();
				}
				$selectedOpt.removeClass(o.optOnClass);
				$obj.addClass(o.optOnClass);
				$selectedOpt = $obj;
				sBox.hoverChange($obj);
				
				o.afterChange.call(this, $obj);
			}
			
			sBox.hoverChange = function($obj){
				$hoveredOpt.removeClass(o.optHoverClass);
				$obj.addClass(o.optHoverClass);
				$hoveredOpt = $obj;
				hasFocus = 1;
				hoveredIndex = $options.index($obj);
			}
			
			sBox.moveKey = function(offset){
				if ($layer.is(":visible")) {
					var _index = $options.index($hoveredOpt);
					var _new_index;
					
					if ((offset == 0) || (offset == ($options.length - 1))) {
						_new_index = offset;
					}
					else {
						_new_index = ((_index + offset) < 0) ? 0 : (((_index + offset) > ($options.length - 1)) ? ($options.length - 1) : (_index + offset));
					}
					
					sBox.hoverChange($($options[_new_index]));
					sBox.scrollTo($($options[_new_index]));
				}
				else {
					var _index = $options.index($selectedOpt);
					var _new_index
					
					if ((offset == 0) || (offset == ($options.length - 1))) {
						_new_index = offset;
					}
					else {
						_new_index = ((_index + offset) < 0) ? 0 : (((_index + offset) > ($options.length - 1)) ? ($options.length - 1) : (_index + offset));
					}
					
					sBox.optionChange($($options[_new_index]));
				}
			}
			
			sBox.init();
			
		});
	};
	
	$.fn.selBox.defaults = {
		maxHeight      : 250,
		maxInputWidth  : 220,
		arrowWidth     : 31,
		selectHeight   : 22,
		containerClass : "sBox_container",
		inputClass     : "sBox_input",
		layerClass     : "sBox_layer",
		optOnClass     : "sBox_optOn",
		optHoverClass  : "sBox_optHover",
		afterChange    : function(obj){}
	};
	
})(jQuery);
;/* http://keith-wood.name/bookmark.html
   Sharing bookmarks for jQuery v1.1.3.
   Written by Keith Wood (kbwood{at}iinet.com.au) March 2008.
   Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
   MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
   Please attribute the author if you use it. */

/* Allow your page to be shared with various bookmarking sites.
   Attach the functionality with options like:
   $('div selector').bookmark({sites: ['delicious', 'digg']});
*/

(function($) { // Hide scope, no $ conflict

var PROP_NAME = 'bookmark';

/* Bookmark sharing manager. */
function Bookmark() {
	this._defaults = {
		url: '',  // The URL to bookmark, leave blank for the current page
		title: '',  // The title to bookmark, leave blank for the current one
		sites: [],  // List of site IDs to use, empty for all
		icons: PATH_STATIC + '/img/img_map/social.png', // Horizontal amalgamation of all site icons
		iconSize: 24,  // The size of the individual icons
		iconCols: 6,  // The number of icons across the combined image
		target: '_blank',  // The name of the target window for the bookmarking links
		compact: true,  // True if a compact presentation should be used, false for full
		hint: 'Trimite la {s}',  // Popup hint for links, {s} is replaced by display name
		popup: false, // True to have it popup on demand, false to show always
		popupText: 'Bookmark this site...', // Text for the popup trigger
		addFavorite: false,  // True to add a 'add to favourites' link, false for none
		favoriteText: 'Favorite',  // Display name for the favourites link
		favoriteIcon: 0,  // Icon for the favourites link
		addEmail: false,  // True to add a 'e-mail a friend' link, false for none
		emailText: 'E-mail',  // Display name for the e-mail link
		emailIcon: 1,  // Icon for the e-mail link
		emailSubject: 'Interesting page',  // The subject for the e-mail
		emailBody: 'I thought you might find this page interesting:\n{t} ({u})', // The body of the e-mail
			// Use '{t}' for the position of the page title, '{u}' for the page URL, and '\n' for new lines
		manualBookmark: 'Please close this dialog and\npress Ctrl-D to bookmark this page.'
			// Instructions for manually bookmarking the page
	};
	this._sites = {  // The definitions of the available bookmarking sites
		'messenger': {display: 'Yahoo Messenger', icon: 18,
			url: 'ymsgr:im?&msg={u} --> {t};', target: "_self"},
		'facebook': {display: 'Facebook', icon: 0,
			url: 'http://www.facebook.com/sharer.php?u={u}&amp;t={t}'},
		'twitthis': {display: 'TwitThis', icon: 1,
			url: 'http://twitthis.com/twit?url={u}'},
		'google': {display: 'Google', icon: 17,
			url: 'http://www.google.com/bookmarks/mark?op=edit&amp;bkmk={u}&amp;title={t}'},
		'myspace': {display: 'MySpace', icon: 2,
			url: 'http://www.myspace.com/Modules/PostTo/Pages/?u={u}&amp;t={t}'},
		'delicious': {display: 'del.icio.us', icon: 3,
			url: 'http://del.icio.us/post?url={u}&amp;title={t}'},
		'digg': {display: 'Digg', icon: 4,
			url: 'http://digg.com/submit?phase=2&amp;url={u}&amp;title={t}'},
		'stumbleupon': {display: 'StumbleUpon', icon: 9,
			url: 'http://www.stumbleupon.com/submit?url={u}&amp;title={t}'},
		'reddit': {display: 'reddit', icon: 10,
			url: 'http://reddit.com/submit?url={u}&amp;title={t}'},
		'technorati': {display: 'Technorati', icon: 11,
			url: 'http://www.technorati.com/faves?add={u}'},
		'diigo': {display: 'Diigo', icon: 12,
			url: 'http://www.diigo.com/post?url={u}&amp;title={t}'},
		'furl': {display: 'Furl', icon: 13,
			url: 'http://www.furl.net/storeIt.jsp?u={u}&amp;t={t}'},
		'netvibes': {display: 'Netvibes', icon: 6,
			url: 'http://www.netvibes.com/share?url={u}&amp;title={t}'},
		'newsvine': {display: 'Newsvine', icon: 14,
			url: 'http://www.newsvine.com/_wine/save?u={u}&amp;h={t}'},
		'blogmarks': {display: 'Blogmarks', icon: 7,
			url: 'http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url={u}&amp;title={t}'},
		'misterwong': {display: 'Mister Wong', icon: 8,
			url: 'http://www.mister-wong.com/index.php?action=addurl&amp;bm_url={u}&amp;bm_description={t}'},
		'magnolia': {display: 'ma.gnolia', icon: 15,
			url: 'http://ma.gnolia.com/bookmarklet/add?url={u}&amp;title={t}'},
		'blinklist': {display: 'BlinkList', icon: 5,
			url: 'http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url={u}&amp;Title={t}'},
		'simpy': {display: 'Simpy', icon: 16,
			url: 'http://www.simpy.com/simpy/LinkAdd.do?href={u}&amp;title={t}'}
	    	/*'alltagz': {display: 'alltagz', icon: 69,
			url: 'http://www.alltagz.de/bookmarks/?action=add&amp;address={u}&amp;title={t}'},
		'allvoices': {display: 'Allvoices', icon: 75,
			url: 'http://www.allvoices.com/post_event?url={u}&amp;title={t}'},
		'aol': {display: 'myAOL', icon: 2,
			url: 'http://favorites.my.aol.com/ffclient/webroot/0.4.1/src/html/addBookmarkDialog.html?url={u}&amp;title={t}&amp;favelet=true'},
		'arto': {display: 'Arto', icon: 76,
			url: 'http://www.arto.com/section/linkshare/?lu={u}&amp;ln={t}'},
		'ask': {display: 'Ask', icon: 3,
			url: 'http://myjeeves.ask.com/mysearch/BookmarkIt?v=1.2&amp;t=webpages&amp;url={u}&amp;title={t}'},
		'backflip': {display: 'Backflip', icon: 62,
			url: 'http://www.backflip.com/add_page_pop.ihtml?url={u}&amp;title={t}'},
		'ballhype': {display: 'BallHype', icon: 63,
			url: 'http://ballhype.com/post/url/?url={u}&amp;title={t}'},
		'bebo': {display: 'Bebo', icon: 64,
			url: 'http://bebo.com/c/share?Url={u}&amp;Title={t}'},
		'bibsonomy': {display: 'BibSonomy', icon: 77,
			url: 'http://www.bibsonomy.org/BibtexHandler?requTask=upload&amp;url={u}&amp;description={t}'},
		'bloglines': {display: 'Bloglines', icon: 48,
			url: 'http://www.bloglines.com/sub/{u}'},
		'bookmarkit': {display: 'bookmark.it', icon: 71,
			url: 'http://www.bookmark.it/bookmark.php?url={u}'},
		'bookmarksfr': {display: 'bookmarks.fr', icon: 78,
			url: 'http://www.bookmarks.fr/favoris/AjoutFavori?action=add&amp;address={u}&amp;title={t}'},
		'buddymarks': {display: 'BuddyMarks', icon: 79,
			url: 'http://buddymarks.com/add_bookmark.php?bookmark_url={u}&amp;bookmark_title={t}'},
		'bx': {display: 'Business Exchange', icon: 73,
			url: 'http://bx.businessweek.com/api/add-article-to-bx.tn?url={u}'},
		'bzzster': {display: 'Bzzster', icon: 80,
			url: 'http://bzzster.com/share?v=5;link={u}&amp;subject={t}'},
		'care2': {display: 'Care2', icon: 6,
			url: 'http://www.care2.com/news/news_post.html?url={u}&amp;title={t}'},
		'citeulike': {display: 'citeulike', icon: 81,
			url: 'http://www.citeulike.org/posturl?url={u}&amp;title={t}'},
		'connotea': {display: 'Connotea', icon: 82,
			url: 'http://www.connotea.org/add?uri={u}&amp;title={t}'},
		'current': {display: 'Current', icon: 49,
			url: 'http://current.com/clipper.htm?url={u}&amp;title={t}'},
		'dealsplus': {display: 'deals plus', icon: 74,
			url: 'http://dealspl.us/add.php?ibm=1&amp;url={u}'},
		'designfloat': {display: 'Design Float', icon: 50,
			url: 'http://www.designfloat.com/submit.php?url={u}&amp;title={t}'},
		'dzone': {display: 'DZone', icon: 10,
			url: 'http://www.dzone.com/links/add.html?url={u}&amp;title={t}'},
		'evernote': {display: 'Evernote', icon: 83,
			url: 'http://www.evernote.com/clip.action?url={u}&amp;title={t}'},
		'expression': {display: 'Expression', icon: 84,
			url: 'http://social.expression.microsoft.com/en-US/action/Create/s/E/?url={u}&amp;bm=true&amp;ttl={t}'},
		'fark': {display: 'Fark', icon: 12,
			url: 'http://cgi.fark.com/cgi/fark/submit.pl?new_url={u}&amp;new_comment={t}'},
		'faves': {display: 'Faves', icon: 13,
			url: 'http://faves.com/Authoring.aspx?u={u}&amp;t={t}'},
		'feedmelinks': {display: 'Feed Me Links', icon: 14,
			url: 'http://feedmelinks.com/categorize?from=toolbar&amp;op=submit&amp;url={u}&amp;name={t}'},
		'folkd': {display: 'Folkd', icon: 85,
			url: 'http://www.folkd.com/submit/{u}'},
		'foxiewire': {display: 'FoxieWire', icon: 86,
			url: 'http://www.foxiewire.com/submit?url={u}&amp;title={t}'},
		'fresqui': {display: 'Fresqui', icon: 51,
			url: 'http://ocio.fresqui.com/post?url={u}&amp;title={t}'},
		'friendfeed': {display: 'FriendFeed', icon: 52,
			url: 'http://friendfeed.com/share?url={u}&amp;title={t}'},
		'funp': {display: 'funP', icon: 53,
			url: 'http://funp.com/pages/submit/add.php?url={u}&amp;title={t}'},
		'gabbr': {display: 'Gabbr', icon: 87,
			url: 'http://www.gabbr.com/submit/?bookurl={u}'},
		'globalgrind': {display: 'Global Grind', icon: 88,
			url: 'http://globalgrind.com/submission/submit.aspx?url={u}&amp;type=Article&amp;title={t}'},
		'gravee': {display: 'Gravee', icon: 89,
			url: 'http://www.gravee.com/account/bookmarkpop?u={u}&amp;t={t}'},
		'healthranker': {display: 'HealthRanker', icon: 90,
			url: 'http://www.healthranker.com/submit.php?url={u}&amp;title={t}'},
		'hemidemi': {display: 'HEMiDEMi', icon: 91,
			url: 'http://www.hemidemi.com/user_bookmark/new?url={u}&amp;title={t}'},
		'hugg': {display: 'Hugg', icon: 17,
			url: 'http://www.hugg.com/submit?url={u}'},
		'identica': {display: 'identi.ca', icon: 92,
			url: 'http://identi.ca/notice/new?status_textarea={t}%20{u}'},
		'imera': {display: 'Imera', icon: 93,
			url: 'http://www.imera.com.br/post_d.html?linkUrl={u}&amp;linkName={t}'},
		'instapaper': {display: 'Instapaper', icon: 94,
			url: 'http://www.instapaper.com/b?u={u}&amp;t={y}'},
		'jamespot': {display: 'Jamespot', icon: 95,
			url: 'http://www.jamespot.com/?action=spotit&amp;url={u}'},
		'jumptags': {display: 'Jumptags', icon: 96,
			url: 'http://www.jumptags.com/add/?url={u}&amp;title={t}'},
		'kaboodle': {display: 'Kaboodle', icon: 65,
			url: 'http://www.kaboodle.com/grab/addItemWithUrl?url={u}&amp;pidOrRid=pid=&amp;redirectToKPage=true'},
		'khabbr': {display: 'Khabbr', icon: 97,
			url: 'http://www.khabbr.com/submit.php?out=yes&amp;url={u}'},
		'kledy': {display: 'Kledy', icon: 98,
			url: 'http://www.kledy.de/submit.php?url={u}'},
		'kirtsy': {display: 'Kirtsy', icon: 54,
			url: 'http://www.kirtsy.com/submit.php?url={u}'},
		'kool': {display: 'Koolontheweb', icon: 43,
			url: 'http://www.koolontheweb.com/post?url={u}&amp;title={t}'},
	    	'linkarena': {display: 'Linkarena', icon: 70,
			url: 'http://linkarena.com/bookmarks/addlink/?url={u}&amp;title={t}&amp;desc=&amp;tags='},			
		'linkagogo': {display: 'LinkaGoGo', icon: 18,
			url: 'http://www.linkagogo.com/go/AddNoPopup?url={u}&amp;title={t}'},
		'linkedin': {display: 'LinkedIn', icon: 66,
			url: 'http://www.linkedin.com/shareArticle?mini=true&amp;url={u}&amp;title={t}&amp;ro=false&amp;summary=&amp;source='},
		'livejournal': {display: 'LiveJournal', icon: 19,
			url: 'http://www.livejournal.com/update.bml?subject={u}'},
		'maple': {display: 'Maple', icon: 99,
			url: 'http://www.maple.nu/bookmarks/bookmarklet?bookmark[url]={u}&amp;bookmark[description]={t}'},
		'meneame': {display: 'menÃ©ame', icon: 55,
			url: 'http://meneame.net/submit.php?url={u}'},
		'mindbody': {display: 'MindBodyGreen', icon: 21,
			url: 'http://www.mindbodygreen.com/passvote.action?u={u}'},
		'mixx': {display: 'Mixx', icon: 23,
			url: 'http://www.mixx.com/submit/story?page_url={u}&amp;title={t}'},
		'multiply': {display: 'Multiply', icon: 24,
			url: 'http://multiply.com/gus/journal/compose/addthis?body=&amp;url={u}&amp;subject={t}'},
		'mylinkvault': {display: 'MyLinkVault', icon: 100,
			url: 'http://www.mylinkvault.com/link-page.php?u={u}&amp;n={t}'},
		'n4g': {display: 'N4G', icon: 56,
			url: 'http://www.n4g.com/tips.aspx?url={u}&amp;title={t}'},
		'netlog': {display: 'NetLog', icon: 101,
			url: 'http://www.netlog.com/go/manage/links/view=save&amp;origin=external&amp;url={u}&amp;title={t}'},
		'netscape': {display: 'Netscape', icon: 26,
			url: 'http://www.netscape.com/submit/?U={u}&amp;T={t}'},
		'netvouz': {display: 'Netvouz', icon: 27,
			url: 'http://netvouz.com/action/submitBookmark?url={u}&amp;title={t}&amp;popup=no'},
		'newstrust': {display: 'NewsTrust', icon: 103,
			url: 'http://newstrust.net/submit?url={u}&amp;title={t}&amp;ref=addtoany'},
		'nowpublic': {display: 'NowPublic', icon: 29,
			url: 'http://view.nowpublic.com/?src={u}&amp;t={t}'},
		'oknotizie': {display: 'OKNOtizie', icon: 57,
			url: 'http://oknotizie.alice.it/post?url={u}&amp;title={t}'},
		'oneview': {display: 'OneView', icon: 72,
			url: 'http://www.oneview.de/quickadd/neu/addBookmark.jsf?URL={u}&amp;title={t}'},
		'ping': {display: 'Ping', icon: 104,
			url: 'http://ping.fm/ref/?link={u}&amp;title={t}'},
		'plaxo': {display: 'Plaxo Pulse', icon: 105,
			url: 'http://www.plaxo.com/pulse/?share_link={u}'},
		'propeller': {display: 'Propeller', icon: 58,
			url: 'http://www.propeller.com/submit/?U={u}&amp;T={t}'},
		'protopage': {display: 'Protopage', icon: 106,
			url: 'http://www.protopage.com/add-button-site?url={u}&amp;label={t}&amp;type=page'},
		'pusha': {display: 'Pusha', icon: 107,
			url: 'http://www.pusha.se/posta?url={u}'},
		'scoopeo': {display: 'Scoopeo', icon: 46,
			url: 'http://www.scoopeo.com/scoop/new?newurl={u}&amp;title={t}'},
		'segnalo': {display: 'Segnalo', icon: 31,
			url: 'http://segnalo.alice.it/post.html.php?url={u}&amp;title={t}'},
		'shoutwire': {display: 'ShoutWire', icon: 108,
			url: 'http://www.shoutwire.com/?s={u}'},
		'sitejot': {display: 'Sitejot', icon: 109,
			url: 'http://www.sitejot.com/addform.php?iSiteAdd={u}&amp;iSiteDes={t}'},
		'slashdot': {display: 'Slashdot', icon: 33,
			url: 'http://slashdot.org/bookmark.pl?url={u}&amp;title={t}'},
		'smaknews': {display: 'SmakNews', icon: 110,
			url: 'http://smaknews.com/submit.php?url={u}&amp;title={t}'},
		'smarking': {display: 'Smarking', icon: 34,
			url: 'http://smarking.com/editbookmark/?url={u}&amp;title={t}'},
		'sphinn': {display: 'Sphinn', icon: 44,
			url: 'http://sphinn.com/submit.php?url={u}&amp;title={t}'},
		'spurl': {display: 'Spurl', icon: 35,
			url: 'http://www.spurl.net/spurl.php?url={u}&amp;title={t}'},
		'squidoo': {display: 'Squidoo', icon: 42,
			url: 'http://www.squidoo.com/lensmaster/bookmark?{u}&amp;title={t}'},
		'startaid': {display: 'StartAid', icon: 111,
			url: 'http://www.startaid.com/index.php?st=AddBrowserLink&amp;type=Detail&amp;v=3&amp;urlname={u}&amp;urltitle={t}'},
		'strands': {display: 'Strands', icon: 112,
			url: 'http://www.strands.com/tools/share/webpage?url={u}&amp;title={t}'},
		'stumpedia': {display: 'Stumpedia', icon: 113,
			url: 'http://www.stumpedia.com/submit?url={u}&amp;title={t}'},
		'symbaloo': {display: 'Symbaloo', icon: 114,
			url: 'http://www.symbaloo.com/us/add/url={u}&amp;title={t}'},
		'tagza': {display: 'Tagza', icon: 115,
			url: 'http://www.tagza.com/submit.php?url={u}'},
		'tailrank': {display: 'Tailrank', icon: 37,
			url: 'http://tailrank.com/share/?link_href={u}&amp;title={t}'},
		'technet': {display: 'TechNet', icon: 116,
			url: 'http://social.technet.microsoft.com/en-US/action/Create/s/E/?url={u}&amp;bm=true&amp;ttl={t}'},
		'technotizie': {display: 'Technotizie', icon: 117,
			url: 'http://www.technotizie.it/posta_ok?action=f2&amp;url={u}&amp;title={t}'},
		'thisnext': {display: 'ThisNext', icon: 39,
			url: 'http://www.thisnext.com/pick/new/submit/sociable/?url={u}&amp;name={t}'},
		'tipd': {display: 'Tip\'d', icon: 118,
			url: 'http://tipd.com/submit.php?url={u}'},
		'tumblr': {display: 'tumblr', icon: 119,
			url: 'http://www.tumblr.com/share?v=3&amp;u={u}&amp;t={t}'},
		'viadeo': {display: 'Viadeo', icon: 120,
			url: 'http://www.viadeo.com/shareit/share/?url={u}&amp;title={t}'},
		'vodpod': {display: 'Vodpod', icon: 121,
			url: 'http://vodpod.com/account/add_video_page?p={u}'},
		'webnews': {display: 'WebNews', icon: 122,
			url: 'http://www.webnews.de/einstellen?url={u}&amp;title={t}'},
		'wikio': {display: 'Wikio', icon: 47,
			url: 'http://www.wikio.com/vote?newurl={u}'},
		'windows': {display: 'Windows Live', icon: 40,
			url: 'https://favorites.live.com/quickadd.aspx?marklet=1&amp;mkt=en-us&amp;url={u}&amp;title={t}'},
		'wishlist': {display: 'Amazon WishList', icon: 123,
			url: 'http://www.amazon.com/wishlist/add?u={u}&amp;t={t}'},
		'wists': {display: 'Wists', icon: 124,
			url: 'http://wists.com/r.php?r={u}&amp;title={t}'},
		'xanga': {display: 'Xanga', icon: 59,
			url: 'http://www.xanga.com/private/editorx.aspx?u={u}&amp;t={t}'},
		'xerpi': {display: 'Xerpi', icon: 125,
			url: 'http://www.xerpi.com/block/add_link_from_extension?url={u}&amp;title={t}'},
		'yahoobm': {display: 'Yahoo Bookmarks', icon: 60,
			url: 'http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u={u}&amp;t={t}'},
		'yahoobuzz': {display: 'Yahoo Buzz', icon: 67,
			url: 'http://buzz.yahoo.com/submit?submitUrl={u}&amp;submitHeadline={t}'},
		'yahoo': {display: 'Yahoo MyWeb', icon: 41,
			url: 'http://myweb2.search.yahoo.com/myresults/bookmarklet?u={u}&amp;t={t}'},
		'yardbarker': {display: 'Yardbarker', icon: 68,
			url: 'http://www.yardbarker.com/author/new/?pUrl={u}'},
		'yigg': {display: 'Yigg', icon: 61,
			url: 'http://www.yigg.de/neu?exturl={u}&amp;exttitle={t}'},
		'yoolink': {display: 'yoolink', icon: 126,
			url: 'http://www.yoolink.fr/post/tag?f=aa&amp;url_value={u}&amp;title={t}'}*/
	};
}

$.extend(Bookmark.prototype, {
	/* Class name added to elements to indicate already configured with bookmarking. */
	markerClassName: 'hasBookmark',

	/* Override the default settings for all bookmarking instances.
	   @param  settings  object - the new settings to use as defaults
	   @return void */
	setDefaults: function(settings) {
		extendRemove(this._defaults, settings || {});
		return this;
	},

	/* Add a new bookmarking site to the list.
	   @param  id  string - the ID of the new site
	   @param  display  string - the display name for this site
	   @param  icon     url - the location of an icon for this site (16x16), or
	                    number - the index of the icon within the combined image
	   @param  url      url - the submission URL for this site,
	                    with {u} marking where the current page's URL should be inserted,
	                    and {t} indicating the title insertion point
	   @return void */
	addSite: function(id, display, icon, url) {
		this._sites[id] = {display: display, icon: icon, url: url};
		return this;
	},

	/* Return the list of defined sites.
	   @return  object[] - indexed by site id (string), each object contains
	            display (string) - the display name,
	            icon    (string) - the location of the icon,, or
	                    (number) the icon's index in the combined image
	            url     (string) - the submission URL for the site */
	getSites: function() {
		return this._sites;
	},

	/* Attach the bookmarking widget to a div. */
	_attachBookmark: function(target, settings) {
		target = $(target);
		if (target.hasClass(this.markerClassName)) {
			return;
		}
		target.addClass(this.markerClassName);
		this._updateBookmark(target, settings);
	},

	/* Reconfigure the settings for a bookmarking div. */
	_changeBookmark: function(target, settings) {
		target = $(target);
		if (!target.hasClass(this.markerClassName)) {
			return;
		}
		this._updateBookmark(target, settings);
	},

	/* Construct the requested bookmarking links. */
	_updateBookmark: function(target, settings) {
		var oldSettings = $.data(target[0], PROP_NAME) || $.extend({}, this._defaults);
		settings = extendRemove(oldSettings, settings || {});
		$.data(target[0], PROP_NAME, settings);
		var sites = settings.sites;
		if (sites.length == 0) {
			$.each(this._sites, function(id) {
				sites.push(id);
			});
		}
		var hint = settings.hint || '{s}';
		var html = (settings.popup ? '<a href="#" class="bookmark_popup_text">' +
			settings.popupText + '</a><div class="bookmark_popup">' : '') +
			'<ul class="bookmark_list' + (settings.compact ? ' bookmark_compact' : '') + '">';
		var addSite = function(display, icon, url, onclick, tgt) {
			var new_target;
			if (tgt == "_self") {
				new_target = tgt;
			}
			else {
				new_target = settings.target;
			}
			var html = '<li><a href="' + url + '"' + (onclick ? ' onclick="' + onclick + '"' :
				(new_target ? ' target="' + new_target + '"' : '')) + '>';
			if (icon != null) {
				var title = hint.replace(/\{s\}/, display);
				if (typeof icon == 'number') {
					html += '<span title="' + title + '" style="background: ' +
						'transparent url(' + settings.icons + ') no-repeat -' +
						((icon % settings.iconCols) * settings.iconSize) + 'px -' +
						(Math.floor(icon / settings.iconCols) * settings.iconSize) + 'px;' +
						($.browser.mozilla && $.browser.version < '1.9' ?
						' padding-left: ' + settings.iconSize + 'px; padding-bottom: ' +
						(Math.max(0, settings.iconSize - 24)) + 'px;' : '') + '"></span>';
				}
				else {
					html += '<img src="' + icon + '" alt="' + title + '" title="' +
						title + '"' + (($.browser.mozilla && $.browser.version < '1.9') ||
						($.browser.msie && $.browser.version < '7.0') ?
						' style="vertical-align: bottom;"' :
						($.browser.msie ? ' style="vertical-align: middle;"' :
						($.browser.opera || $.browser.safari ?
						' style="vertical-align: baseline;"' : ''))) + '/>';
				}
				html +=	(settings.compact ? '' : '&#xa0;');
			}
			html +=	(settings.compact ? '' : display) + '</a></li>';
			return html;
		};
		var url = settings.url || window.location.href;
		var title = settings.title || document.title;
		if (settings.addFavorite) {
			html += addSite(settings.favoriteText, settings.favoriteIcon,
				'#', 'jQuery.bookmark._addFavourite(\'' + url.replace(/'/g, '\\\'') +
				'\',\'' + title.replace(/'/g, '\\\'') + '\')');
		}
		if (settings.addEmail) {
			html += addSite(settings.emailText, settings.emailIcon,
				'mailto:?subject=' + encodeURIComponent(settings.emailSubject) +
				'&amp;body=' + encodeURIComponent(settings.emailBody.
				replace(/{u}/, url).replace(/{t}/, title)));
		}
		url = encodeURIComponent(url);
		title = encodeURIComponent(title);
		var allSites = this._sites;
		$.each(sites, function(index, id) {
			var site = allSites[id];
			if (site) {
				html += addSite(site.display, site.icon,
					site.url.replace(/{u}/, url).replace(/{t}/, title), "", site.target);
			}
		});
		html += '</ul>' + (settings.popup ? '</div>' : '');
		target.html(html);
		if (settings.popup) {
			$(target).find('.bookmark_popup_text').click(function() {
				var target = $(this).parent();
				var offset = target.offset();
				$('.bookmark_popup', target).css('left', offset.left).
					css('top', offset.top + target.outerHeight()).
					toggle();
				return false;
			});
			$(document).click(function(event) { // Close on external click
				$('.bookmark_popup', target).hide();
			});
		}
	},

	/* Remove the bookmarking widget from a div. */
	_destroyBookmark: function(target) {
		target = $(target);
		if (!target.hasClass(this.markerClassName)) {
			return;
		}
		target.removeClass(this.markerClassName).empty();
		$.removeData(target[0], PROP_NAME);
	},

	/* Add the current page as a favourite in the browser.
	   @param  url    (string) the URL to bookmark
	   @param  title  (string) the title to bookmark */
	_addFavourite: function(url, title) {
		if ($.browser.msie) {
			window.external.addFavorite(url, title);
		}
		else {
			alert(this._defaults.manualBookmark);
		}
	}
});

/* jQuery extend now ignores nulls! */
function extendRemove(target, props) {
	$.extend(target, props);
	for (var name in props) {
		if (props[name] == null) {
			target[name] = null;
		}
	}
	return target;
}

/* Attach the bookmarking functionality to a jQuery selection.
   @param  command  string - the command to run (optional, default 'attach')
   @param  options  object - the new settings to use for these bookmarking instances
   @return  jQuery object - for chaining further calls */
$.fn.bookmark = function(options) {
	var otherArgs = Array.prototype.slice.call(arguments, 1);
	return this.each(function() {
		if (typeof options == 'string') {
			$.bookmark['_' + options + 'Bookmark'].
				apply($.bookmark, [this].concat(otherArgs));
		}
		else {
			$.bookmark._attachBookmark(this, options || {});
		}
	});
};

/* Initialise the bookmarking functionality. */
$.bookmark = new Bookmark(); // singleton instance

})(jQuery);

;if(window.jQuery){(function(a){if(a.browser.msie){try{document.execCommand("BackgroundImageCache",false,true)}catch(b){}}a.fn.rating=function(d){if(this.length==0){return this}if(typeof arguments[0]=="string"){if(this.length>1){var c=arguments;return this.each(function(){a.fn.rating.apply(a(this),c)})}a.fn.rating[arguments[0]].apply(this,a.makeArray(arguments).slice(1)||[]);return this}var d=a.extend({},a.fn.rating.options,d||{});a.fn.rating.calls++;this.not(".star-rating-applied").addClass("star-rating-applied").each(function(){var g,l=a(this);var e=(this.name||"unnamed-rating").replace(/\[|\]/g,"_").replace(/^\_+|\_+$/g,"");var f=a(this.form||document.body);var k=f.data("rating");if(!k||k.call!=a.fn.rating.calls){k={count:0,call:a.fn.rating.calls}}var n=k[e];if(n){g=n.data("rating")}if(n&&g){g.count++}else{g=a.extend({},d||{},(a.metadata?l.metadata():(a.meta?l.data():null))||{},{count:0,stars:[],inputs:[]});g.serial=k.count++;n=a('<span class="star-rating-control"/>');l.before(n);n.addClass("rating-to-be-drawn");if(l.attr("disabled")){g.readOnly=true}n.append(g.cancel=a('<div class="rating-cancel"><a title="'+g.cancel+'">'+g.cancelValue+"</a></div>").mouseover(function(){a(this).rating("drain");a(this).addClass("star-rating-hover")}).mouseout(function(){a(this).rating("draw");a(this).removeClass("star-rating-hover")}).click(function(){a(this).rating("select")}).data("rating",g))}var j=a('<div class="star-rating rater-'+g.serial+'"><a title="'+(this.title||this.value)+'">'+this.value+"</a></div>");n.append(j);if(this.id){j.attr("id",this.id)}if(this.className){j.addClass(this.className)}if(g.half){g.split=2}if(typeof g.split=="number"&&g.split>0){var i=(a.fn.width?j.width():0)||g.starWidth;var h=(g.count%g.split),m=Math.floor(i/g.split);j.width(m).find("a").css({"margin-left":"-"+(h*m)+"px"})}if(g.readOnly){j.addClass("star-rating-readonly")}else{j.addClass("star-rating-live").mouseover(function(){a(this).rating("fill");a(this).rating("focus")}).mouseout(function(){a(this).rating("draw");a(this).rating("blur")}).click(function(){a(this).rating("select")})}if(this.checked){g.current=j}l.hide();l.change(function(){a(this).rating("select")});j.data("rating.input",l.data("rating.star",j));g.stars[g.stars.length]=j[0];g.inputs[g.inputs.length]=l[0];g.rater=k[e]=n;g.context=f;l.data("rating",g);n.data("rating",g);j.data("rating",g);f.data("rating",k)});a(".rating-to-be-drawn").rating("draw").removeClass("rating-to-be-drawn");return this};a.extend(a.fn.rating,{calls:0,focus:function(){var d=this.data("rating");if(!d){return this}if(!d.focus){return this}var c=a(this).data("rating.input")||a(this.tagName=="INPUT"?this:null);if(d.focus){d.focus.apply(c[0],[c.val(),a("a",c.data("rating.star"))[0]])}},blur:function(){var d=this.data("rating");if(!d){return this}if(!d.blur){return this}var c=a(this).data("rating.input")||a(this.tagName=="INPUT"?this:null);if(d.blur){d.blur.apply(c[0],[c.val(),a("a",c.data("rating.star"))[0]])}},fill:function(){var c=this.data("rating");if(!c){return this}if(c.readOnly){return}this.rating("drain");this.prevAll().andSelf().filter(".rater-"+c.serial).addClass("star-rating-hover")},drain:function(){var c=this.data("rating");if(!c){return this}if(c.readOnly){return}c.rater.children().filter(".rater-"+c.serial).removeClass("star-rating-on").removeClass("star-rating-hover")},draw:function(){var c=this.data("rating");if(!c){return this}this.rating("drain");if(c.current){c.current.data("rating.input").attr("checked","checked");c.current.prevAll().andSelf().filter(".rater-"+c.serial).addClass("star-rating-on")}else{a(c.inputs).removeAttr("checked")}c.cancel[c.readOnly||c.required?"hide":"show"]();this.siblings()[c.readOnly?"addClass":"removeClass"]("star-rating-readonly")},select:function(d){var e=this.data("rating");if(!e){return this}if(e.readOnly){return}e.current=null;if(typeof d!="undefined"){if(typeof d=="number"){return a(e.stars[d]).rating("select")}if(typeof d=="string"){a.each(e.stars,function(){if(a(this).data("rating.input").val()==d){a(this).rating("select")}})}}else{e.current=this[0].tagName=="INPUT"?this.data("rating.star"):(this.is(".rater-"+e.serial)?this:null)}this.data("rating",e);this.rating("draw");var c=a(e.current?e.current.data("rating.input"):null);if(e.callback){e.callback.apply(c[0],[c.val(),a("a",e.current)[0]])}},readOnly:function(c,d){var e=this.data("rating");if(!e){return this}e.readOnly=c||c==undefined?true:false;if(d){a(e.inputs).attr("disabled","disabled")}else{a(e.inputs).removeAttr("disabled")}this.data("rating",e);this.rating("draw")},disable:function(){this.rating("readOnly",true,true)},enable:function(){this.rating("readOnly",false,false)}});a.fn.rating.options={cancel:"Cancel Rating",cancelValue:"",split:0,starWidth:16};a(function(){a("input[type=radio].star").rating()})})(jQuery)};
;/*
 * imgAreaSelect jQuery plugin
 * version 0.8
 *
 * Copyright (c) 2008-2009 Michal Wojciechowski (odyniec.net)
 *
 * Dual licensed under the MIT (MIT-LICENSE.txt) 
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * http://odyniec.net/projects/imgareaselect/
 *
 */

(function($) {

$.imgAreaSelect = { onKeyPress: null };

$.imgAreaSelect.init = function (img, options) {
    var $img = $(img), imgLoaded, $box = $('<div />'), $area = $('<div />'),
        $border1 = $('<div />'), $border2 = $('<div />'), $areaOpera,
        $outLeft = $('<div />'), $outTop = $('<div />'),
        $outRight = $('<div />'), $outBottom = $('<div />'),
        $handles = $([]), handleWidth, handles = [ ], left, top, M = Math,
        imgOfs, imgWidth, imgHeight, $parent, parOfs,
        zIndex = 0, position = 'absolute', $p, startX, startY,
        scaleX = 1, scaleY = 1, resizeMargin = 10, resize = [ ], V = 0, H = 1,
        d, aspectRatio, x1, x2, y1, y2, x, y, adjusted, shown, i,
        selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 };

    var $o = $outLeft.add($outTop).add($outRight).add($outBottom);

    function viewX(x)
    {
        return x + imgOfs.left - parOfs.left;
    }

    function viewY(y)
    {
        return y + imgOfs.top - parOfs.top;
    }

    function selX(x)
    {
        return x - imgOfs.left + parOfs.left;
    }

    function selY(y)
    {
        return y - imgOfs.top + parOfs.top;
    }

    function evX(event)
    {
        return event.pageX - parOfs.left;
    }

    function evY(event)
    {
        return event.pageY - parOfs.top;
    }

    function trueSelection()
    {
        return { x1: M.round(selection.x1 * scaleX),
            y1: M.round(selection.y1 * scaleY),
            x2: M.round(selection.x2 * scaleX),
            y2: M.round(selection.y2 * scaleY),
            width: M.round(selection.x2 * scaleX) - M.round(selection.x1 * scaleX),
            height: M.round(selection.y2 * scaleY) - M.round(selection.y1 * scaleY) };
    }

    function getZIndex()
    {
        $p = $img;

        while ($p.length && !$p.is('body')) {
            if (!isNaN($p.css('z-index')) && $p.css('z-index') > zIndex)
                zIndex = $p.css('z-index');
            if ($p.css('position') == 'fixed')
                position = 'fixed';

            $p = $p.parent();
        }

        if (!isNaN(options.zIndex))
            zIndex = options.zIndex;
    }

    function adjust()
    {
        imgOfs = { left: M.round($img.offset().left), top: M.round($img.offset().top) };
        imgWidth = $img.width();
        imgHeight = $img.height();

        if ($().jquery == '1.3.2' && $.browser.safari && position == 'fixed') {
            imgOfs.top += M.max(document.documentElement.scrollTop, $('body').scrollTop()); 
            imgOfs.left += M.max(document.documentElement.scrollLeft, $('body').scrollLeft());
        }

        parOfs = $.inArray($parent.css('position'), ['absolute', 'relative']) != -1 ? 
            { left: M.round($parent.offset().left) - $parent.scrollLeft(),
                top: M.round($parent.offset().top) - $parent.scrollTop() } :
            position == 'fixed' ?
                { left: $(document).scrollLeft(), top: $(document).scrollTop() } :
                { left: 0, top: 0 };

        left = viewX(0);
        top = viewY(0);
    }

    function update(resetKeyPress)
    {
        if (!shown) return;

        $box.css({
            left: viewX(selection.x1) + 'px', top: viewY(selection.y1) + 'px',
            width: selection.width + 'px', height: selection.height + 'px'
        });
        $area.add($border1).add($border2).css({
            left: '0px', top: '0px',
            width: M.max(selection.width - options.borderWidth * 2, 0) + 'px',
            height: M.max(selection.height - options.borderWidth * 2, 0) + 'px'
        });
        $border1.css({ borderStyle: 'solid', borderColor: options.borderColor1 });
        $border2.css({ borderStyle: 'dashed', borderColor: options.borderColor2 });
        $border1.add($border2).css({ opacity: options.borderOpacity });
        $outLeft.css({ left: left + 'px', top: top + 'px',
            width: selection.x1 + 'px', height: imgHeight + 'px' });
        $outTop.css({ left: left + selection.x1 + 'px', top: top + 'px',
            width: selection.width + 'px', height: selection.y1 + 'px' });
        $outRight.css({ left: left + selection.x2 + 'px', top: top + 'px',
            width: imgWidth - selection.x2 + 'px', height: imgHeight + 'px' });
        $outBottom.css({ left: left + selection.x1 + 'px', top: top + selection.y2 + 'px',
            width: selection.width + 'px', height: imgHeight - selection.y2 + 'px' });

        if (handles.length) {
            handles[1].css({ left: selection.width - handleWidth + 'px' });
            handles[2].css({ left: selection.width - handleWidth + 'px',
                top: selection.height - handleWidth + 'px' });
            handles[3].css({ top: selection.height - handleWidth + 'px' });

            if (handles.length == 8) {
                handles[4].css({ left: (selection.width - handleWidth) / 2 + 'px' });
                handles[5].css({ left: selection.width - handleWidth + 'px',
                    top: (selection.height - handleWidth) / 2 + 'px' });
                handles[6].css({ left: (selection.width - handleWidth) / 2 + 'px',
                    top: selection.height - handleWidth + 'px' });
                handles[7].css({ top: (selection.height - handleWidth) / 2 + 'px' });
            }
        }

        if (resetKeyPress !== false) {
            if ($.imgAreaSelect.keyPress != docKeyPress)
                $(document).unbind($.imgAreaSelect.keyPress,
                    $.imgAreaSelect.onKeyPress);

            if (options.keys)
                $(document).bind($.imgAreaSelect.keyPress,
                    $.imgAreaSelect.onKeyPress = docKeyPress);
        }

        if ($.browser.msie && options.borderWidth == 1 && options.borderOpacity < 1) {
            $border1.add($border2).css('margin', '0');
            setTimeout(function () { $border1.add($border2).css('margin', 'auto'); }, 0);
        }
    }

    function areaMouseMove(event)
    {
        if (!adjusted) {
            adjust();
            adjusted = true;

            $box.one('mouseout', function () { adjusted = false; });
        }

        x = selX(evX(event)) - selection.x1;
        y = selY(evY(event)) - selection.y1;

        resize = [ ];

        if (options.resizable) {
            if (y <= resizeMargin)
                resize[V] = 'n';
            else if (y >= selection.height - resizeMargin)
                resize[V] = 's';
            if (x <= resizeMargin)
                resize[H] = 'w';
            else if (x >= selection.width - resizeMargin)
                resize[H] = 'e';
        }

        $box.css('cursor', resize.length ? resize.join('') + '-resize' :
            options.movable ? 'move' : '');
        if ($areaOpera)
            $areaOpera.toggle();
    }

    function docMouseUp(event)
    {
    	resize = [ ];

        $('body').css('cursor', '');

        if (options.autoHide || selection.width * selection.height == 0)
            $box.add($o).hide();

        options.onSelectEnd(img, trueSelection());

        $(document).unbind('mousemove', selectingMouseMove);
        $box.mousemove(areaMouseMove);
    }

    function areaMouseDown(event)
    {
        if (event.which != 1) return false;

        adjust();

        if (options.resizable && resize.length > 0) {
            $('body').css('cursor', resize.join('') + '-resize');

            x1 = viewX(selection[resize[H] == 'w' ? 'x2' : 'x1']);
            y1 = viewY(selection[resize[V] == 'n' ? 'y2' : 'y1']);

            $(document).mousemove(selectingMouseMove)
                .one('mouseup', docMouseUp);
            $box.unbind('mousemove', areaMouseMove);
        }
        else if (options.movable) {
            startX = left + selection.x1 - evX(event);
            startY = top + selection.y1 - evY(event);

            $box.unbind('mousemove', areaMouseMove);

            $(document).mousemove(movingMouseMove)
                .one('mouseup', function () {
                    options.onSelectEnd(img, trueSelection());

                    $(document).unbind('mousemove', movingMouseMove);
                    $box.mousemove(areaMouseMove);
                });
        }
        else
            $img.mousedown(event);

        return false;
    }

    function aspectRatioXY()
    {
        x2 = M.max(left, M.min(left + imgWidth,
            x1 + M.abs(y2 - y1) * aspectRatio * (x2 < x1 ? -1 : 1)));
        y2 = M.round(M.max(top, M.min(top + imgHeight,
            y1 + M.abs(x2 - x1) / aspectRatio * (y2 < y1 ? -1 : 1))));
        x2 = M.round(x2);
    }

    function aspectRatioYX()
    {
        y2 = M.max(top, M.min(top + imgHeight,
            y1 + M.abs(x2 - x1) / aspectRatio * (y2 < y1 ? -1 : 1)));
        x2 = M.round(M.max(left, M.min(left + imgWidth,
            x1 + M.abs(y2 - y1) * aspectRatio * (x2 < x1 ? -1 : 1))));
        y2 = M.round(y2);
    }

    function doResize()
    {
        if (options.minWidth && M.abs(x2 - x1) < options.minWidth) {
            x2 = x1 - options.minWidth * (x2 < x1 ? 1 : -1);

            if (x2 < left) {
            	x1 = left + parseInt(options.minWidth);
            }
            else if (x2 > left + imgWidth)
                x1 = left + imgWidth - options.minWidth;
        }

        if (options.minHeight && M.abs(y2 - y1) < options.minHeight) {
            y2 = y1 - options.minHeight * (y2 < y1 ? 1 : -1);

            if (y2 < top) {
                y1 = top + options.minHeight;
            }
            else if (y2 > top + imgHeight)
                y1 = top + imgHeight - options.minHeight;
        }

        x2 = M.max(left, M.min(x2, left + imgWidth));
        y2 = M.max(top, M.min(y2, top + imgHeight));

        if (aspectRatio)
            if (M.abs(x2 - x1) / aspectRatio > M.abs(y2 - y1))
                aspectRatioYX();
            else
                aspectRatioXY();

        if (options.maxWidth && M.abs(x2 - x1) > options.maxWidth) {
            x2 = x1 - options.maxWidth * (x2 < x1 ? 1 : -1);
            if (aspectRatio) aspectRatioYX();
        }

        if (options.maxHeight && M.abs(y2 - y1) > options.maxHeight) {
            y2 = y1 - options.maxHeight * (y2 < y1 ? 1 : -1);
            if (aspectRatio) aspectRatioXY();
        }

        selection = { x1: selX(M.min(x1, x2)), x2: selX(M.max(x1, x2)),
            y1: selY(M.min(y1, y2)), y2: selY(M.max(y1, y2)),
            width: M.abs(x2 - x1), height: M.abs(y2 - y1) };

        update();

        options.onSelectChange(img, trueSelection());
    }

    function selectingMouseMove(event)
    {
        x2 = !resize.length || resize[H] || aspectRatio ? evX(event) : viewX(selection.x2);
        y2 = !resize.length || resize[V] || aspectRatio ? evY(event) : viewY(selection.y2);
        
        doResize();

        return false;        
    }

    function doMove(newX1, newY1)
    {
        x2 = (x1 = newX1) + selection.width;
        y2 = (y1 = newY1) + selection.height;

        selection = $.extend(selection, { x1: selX(x1), y1: selY(y1),
            x2: selX(x2), y2: selY(y2) });

        update();

        options.onSelectChange(img, trueSelection());
    }

    function movingMouseMove(event)
    {
        x1 = M.max(left, M.min(startX + evX(event), left + imgWidth - selection.width));
        y1 = M.max(top, M.min(startY + evY(event), top + imgHeight - selection.height));

        doMove(x1, y1);

        event.preventDefault();     
        return false;
    }

    function startSelection(event)
    {
        adjust();

        x2 = x1;
        y2 = y1;       
        doResize();
	
        resize = [ ];

        $box.add($o.is(':visible') ? null : $o).show();
        shown = true;

        $(document).unbind('mouseup', cancelSelection)
            .mousemove(selectingMouseMove).one('mouseup', docMouseUp);
        $box.unbind('mousemove', areaMouseMove);

        options.onSelectStart(img, trueSelection());
    }

    function cancelSelection()
    {
    	$(document).unbind('mousemove', startSelection);
        /*$box.add($o).hide();

        selection = { x1: 0, y1: 0, x2: 0, y2: 0, width: 0, height: 0 };

        options.onSelectChange(img, selection);
        options.onSelectEnd(img, selection);*/
        
    }

    function imgMouseDown(event)
    {
    	
        if (event.which != 1) return false;
        
        adjust();
        
        startX = x1 = evX(event);
        startY = y1 = evY(event);
        
        $(document).one('mousemove', startSelection)
            .one('mouseup', cancelSelection);
            
        return false;
    }

    function parentScroll()
    {
        adjust();
        update(false);
        x1 = viewX(selection.x1); y1 = viewY(selection.y1);
        x2 = viewX(selection.x2); y2 = viewY(selection.y2);
    }

    function imgLoad()
    {
        imgLoaded = true;

        if (options.show) {
            shown = true;
            adjust();
            update();
            $box.add($o).show();
        }

        $box.add($o).css({ visibility: '' });
    }

    var docKeyPress = function(event) {
        var k = options.keys, d, t, key = event.keyCode || event.which;

        d = !isNaN(k.alt) && (event.altKey || event.originalEvent.altKey) ? k.alt :
            !isNaN(k.ctrl) && event.ctrlKey ? k.ctrl :
            !isNaN(k.shift) && event.shiftKey ? k.shift :
            !isNaN(k.arrows) ? k.arrows : 10;

        if (k.arrows == 'resize' || (k.shift == 'resize' && event.shiftKey) ||
            (k.ctrl == 'resize' && event.ctrlKey) ||
            (k.alt == 'resize' && (event.altKey || event.originalEvent.altKey)))
        {
            switch (key) {
            case 37:
                d = -d;
            case 39:
                t = M.max(x1, x2);
                x1 = M.min(x1, x2);
                x2 = M.max(t + d, x1);
                if (aspectRatio) aspectRatioYX();
                break;
            case 38:
                d = -d;
            case 40:
                t = M.max(y1, y2);
                y1 = M.min(y1, y2);
                y2 = M.max(t + d, y1);
                if (aspectRatio) aspectRatioXY();
                break;
            default:
                return;
            }

            doResize();
        }
        else {
            x1 = M.min(x1, x2);
            y1 = M.min(y1, y2);

            switch (key) {
            case 37:
                doMove(M.max(x1 - d, left), y1);
                break;
            case 38:
                doMove(x1, M.max(y1 - d, top));
                break;
            case 39:
                doMove(x1 + M.min(d, imgWidth - selX(x2)), y1);
                break;
            case 40:
                doMove(x1, y1 + M.min(d, imgHeight - selY(y2)));
                break;
            default:
                return;
            }
        }

        return false;
    };

    this.setOptions = function(newOptions)
    {
        if (newOptions.parent)
            ($parent = $(newOptions.parent)).append($box.add($o));

        adjust();
        getZIndex();

        if (newOptions.x1 != null) {
            selection = { x1: newOptions.x1, y1: newOptions.y1,
                x2: newOptions.x2, y2: newOptions.y2 };
            newOptions.show = !newOptions.hide;
            
            /*var big_pic = $($(newOptions.parent).find("img").get(0));
            
            if (selection.x2 > big_pic.width()) {
            	selection.x2 = big_pic.width();
            }
            
            if (selection.y2 > big_pic.height()) {
            	selection.y2 = big_pic.height();
            }*/
            
            x1 = viewX(selection.x1); y1 = viewY(selection.y1);
            x2 = viewX(selection.x2); y2 = viewY(selection.y2);
            selection.width = x2 - x1;
            selection.height = y2 - y1;
        }

        if (newOptions.handles != null) {
            $handles.remove();
            $handles = $(handles = [ ]);

            i = newOptions.handles ? newOptions.handles == 'corners' ? 4 : 8 : 0;

            while (i--)
                $handles = $handles.add(handles[i] = $('<div />'));

            handleWidth = 4 + options.borderWidth;

            $handles.css({ position: 'absolute', borderWidth: options.borderWidth + 'px',
                borderStyle: 'solid', borderColor: options.borderColor1, 
                opacity: options.borderOpacity, backgroundColor: options.borderColor2,
                width: handleWidth + 'px', height: handleWidth + 'px',
                fontSize: '0px', zIndex: zIndex > 0 ? zIndex + 1 : '1' })
                .addClass(options.classPrefix + '-handle');

            handleWidth += options.borderWidth * 2;
        }

        update();

        options = $.extend(options, newOptions);

        if (options.imageWidth || options.imageHeight) {
            scaleX = (parseInt(options.imageWidth) || imgWidth) / imgWidth;
            scaleY = (parseInt(options.imageHeight) || imgHeight) / imgHeight;
        }

        if (newOptions.keys)
            options.keys = $.extend({ shift: 1, ctrl: 'resize' },
                newOptions.keys === true ? { } : newOptions.keys);

        $o.addClass(options.classPrefix + '-outer');
        $area.addClass(options.classPrefix + '-selection');
        $border1.addClass(options.classPrefix + '-border1');
        $border2.addClass(options.classPrefix + '-border2');

        $box.add($area).add($border1).add($border2).css({ borderWidth: options.borderWidth + 'px' });
        $area.css({ backgroundColor: options.selectionColor, opacity: options.selectionOpacity });       
        $border1.css({ borderStyle: 'solid', borderColor: options.borderColor1 });
        $border2.css({ borderStyle: 'dashed', borderColor: options.borderColor2 });
        $border1.add($border2).css({ opacity: options.borderOpacity });
        $o.css({ opacity: options.outerOpacity, backgroundColor: options.outerColor });

        $box.append($area.add($border1).add($border2).add($handles).add($areaOpera));

        if (newOptions.hide)
            $box.add($o).hide();
        else if (newOptions.show && imgLoaded) {
            shown = true;
            update();
            $box.add($o).show();
        }

        aspectRatio = options.aspectRatio && (d = options.aspectRatio.split(/:/)) ?
            d[0] / d[1] : null;

        if (aspectRatio)
            if (options.minWidth)
                options.minHeight = parseInt(options.minWidth / aspectRatio);
            else if (options.minHeight)
                options.minWidth = parseInt(options.minHeight * aspectRatio);

        if (options.disable || options.enable === false) {
            $box.unbind('mousemove', areaMouseMove).unbind('mousedown', areaMouseDown);
            $img.add($o).unbind('mousedown', imgMouseDown);
            $(window).unbind('resize', parentScroll);
            $img.add($img.parents()).unbind('scroll', parentScroll);
        }
        else if (options.enable || options.disable === false) {
            if (options.resizable || options.movable)
                $box.mousemove(areaMouseMove).mousedown(areaMouseDown);

            if (!options.persistent)
                $img.add($o).mousedown(imgMouseDown);
            $(window).resize(parentScroll);
            $img.add($img.parents()).scroll(parentScroll);
        }

        options.enable = options.disable = undefined;
    };

    if ($.browser.msie)
        $img.attr('unselectable', 'on');

    $.imgAreaSelect.keyPress = $.browser.msie ||
        $.browser.safari ? 'keydown' : 'keypress';

    if ($.browser.opera)
        ($areaOpera = $('<div style="width: 100%; height: 100%; position: absolute;" />'))
            .css({ zIndex: zIndex > 0 ? zIndex + 2 : '2' });

    this.setOptions(options = $.extend({
        borderColor1: '#000',
        borderColor2: '#fff',
        borderWidth: 1,
        borderOpacity: .5,
        classPrefix: 'imgareaselect',
        movable: true,
        resizable: true,
        selectionColor: '#fff',
        selectionOpacity: 0,
        outerColor: '#000',
        outerOpacity: .4,
        parent: 'body',
        onSelectStart: function () {},
        onSelectChange: function () {},
        onSelectEnd: function () {}
    }, options));

    $box.add($o).css({ visibility: 'hidden', position: position,
        overflow: 'hidden', zIndex: zIndex > 0 ? zIndex : '0' });
    $area.css({ borderStyle: 'solid' });
    $box.css({ position: position, zIndex: zIndex > 0 ? zIndex + 2 : '2' });
    $area.add($border1).add($border2).css({ position: 'absolute' });

    img.complete || img.readyState == 'complete' || !$img.is('img') ?
        imgLoad() : $img.one('load', imgLoad);
};

$.fn.imgAreaSelect = function (options) {
    options = options || {};

    this.each(function () {
        if ($(this).data('imgAreaSelect'))
            $(this).data('imgAreaSelect').setOptions(options);
        else {
            if (options.enable === undefined && options.disable === undefined)
                options.enable = true;

            $(this).data('imgAreaSelect', new $.imgAreaSelect.init(this, options));
        }
    });

    return this;
};

})(jQuery);

;jQuery.fn.clockpick=function(k,o){var p={starthour:8,endhour:18,showminutes:true,minutedivisions:4,military:false,event:'click',layout:'vertical',valuefield:null,useBgiframe:false,hoursopacity:1,minutesopacity:1};if(k){jQuery.extend(p,k)};var o=o||function(){},v=(p.layout=='vertical');errorcheck();jQuery(this)[p.event](function(e){var g=this,$self=jQuery(this),$body=jQuery("body");if(!p.valuefield){$self.unbind("keydown").bind("keydown",keyhandler)}else{var j=jQuery("[name="+p.valuefield+"]");j.unbind("keydown").bind("keydown",keyhandler)[0].focus();j.bind("click",function(){j.unbind("keydown")})}jQuery("#CP_hourcont,#CP_minutecont").remove();$hourcont=jQuery("<div id='CP_hourcont' class='CP' />").appendTo($body);!p.useBgiframe?$hourcont.css("opacity",p.hoursopacity):null;binder($hourcont);$hourcol1=jQuery("<div class='CP_hourcol' id='hourcol1' />").appendTo($body);$hourcol2=jQuery("<div class='CP_hourcol' id='hourcol2' />").appendTo($body);if(p.showminutes){$mc=jQuery("<div id='CP_minutecont' class='CP' />").appendTo($body);!p.useBgiframe?$mc.css("opacity",p.minutesopacity):null;binder($mc)}if(!v){$hourcont.css("width","auto");$mc.css("width","auto")}else{$hourcol1.addClass('floatleft');$hourcol2.addClass('floatleft')}renderhours();putcontainer();function renderhours(){var c=1;for(h=p.starthour;h<=p.endhour;h++){if(h==12){c=1}displayhours=((!p.military&&h>12)?h-12:h);if(!p.military&&h==0){displayhours='12'}if(p.military&&h<10){displayhours='0'+displayhours}$hd=jQuery("<div class='CP_hour' id='hr_"+h+"_"+c+"'>"+displayhours+set_tt(h)+"</div>");if(p.military){$hd.width(20)}binder($hd);if(!v){$hd.css("float","left")}(h<12)?$hourcol1.append($hd):$hourcol2.append($hd);c++}$hourcont.append($hourcol1);!v?$hourcont.append("<div style='clear:left' />"):'';$hourcont.append($hourcol2)}function renderminutes(h){realhours=h;displayhours=(!p.military&&h>12)?h-12:h;if(!p.military&&h==0){displayhours='12'}if(p.military&&h<10){displayhours='0'+displayhours}$mc.empty();var n=60/p.minutedivisions,tt=set_tt(realhours),counter=1;for(m=0;m<60;m=m+n){$md=jQuery("<div class='CP_minute' id='"+realhours+"_"+m+"'>"+displayhours+":"+((m<10)?"0":"")+m+tt+"</div>");if(!v){$md.css("float","left");if(p.minutedivisions>6&&counter==p.minutedivisions/2+1){$mc.append("<div style='clear:left' />")}}$mc.append($md);binder($md);counter++}}function set_tt(a){if(!p.military){return(a>=12)?' PM':' AM'}else{return''}}function putcontainer(){if(e.type!='focus'){$hourcont.css("left",e.pageX-5+'px').css("top",e.pageY-(Math.floor($hourcont.height()/2))+'px');rectify($hourcont)}else{$self.after($hourcont)}$hourcont.show();if(p.useBgiframe)bgi($hourcont)}function rectify(a){var b=document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight;var c=document.documentElement.clientWidth?document.documentElement.clientWidth:document.body.clientWidth;var t=parseInt(a.css("top"));var l=parseInt(a.css("left"));var d=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;if(t<=d&&!a.is("#CP_minutecont")){a.css("top",d+10+'px')}else if(t+a.height()-d>b){a.css("top",d+b-a.height()-10+'px')}if(l<=0){a.css("left",'10px')}}function bgi(a){if(typeof jQuery.fn.bgIframe=='function')a.bgIframe();else alert('bgIframe plugin not loaded.')}function binder(a){if(a.attr("id")=='CP_hourcont'){a.mouseout(function(e){hourcont_out(e)})}else if(a.attr("id")=='CP_minutecont'){a.mouseout(function(e){minutecont_out(e)})}else if(a.attr("class")=='CP_hour'){a.mouseover(function(e){hourdiv_over(a,e)});a.mouseout(function(){hourdiv_out(a)});a.click(function(){hourdiv_click(a)})}else if(a.attr("class")=='CP_minute'){a.mouseover(function(){minutediv_over(a)});a.mouseout(function(){minutediv_out(a)});a.click(function(){minutediv_click(a)})}};function hourcont_out(e){try{t=(e.toElement)?e.toElement:e.relatedTarget;if(!(jQuery(t).is("div[class^=CP], iframe"))){cleardivs()}}catch(e){cleardivs()}}function minutecont_out(e){try{t=(e.toElement)?e.toElement:e.relatedTarget;if(!(jQuery(t).is("div[class^=CP], iframe"))){cleardivs()}}catch(e){cleardivs()}}function hourdiv_over(a,e){var h=a.attr("id").split('_')[1],i=a.attr("id").split('_')[2],l,t;a.addClass("CP_over");if(p.showminutes){$mc.hide();renderminutes(h);if(v){t=e.type=='mouseover'?e.pageY-15:$hourcont.offset().top+2+(a.height()*i);if(h<12)l=$hourcont.offset().left-$mc.width()-2;else l=$hourcont.offset().left+$hourcont.width()+2}else{l=(e.type=='mouseover')?e.pageX-10:$hourcont.offset().left+(a.width()-5)*i;if(h<12){t=$hourcont.offset().top-$mc.height()-2}else{t=$hourcont.offset().top+$hourcont.height()}}$mc.css("left",l+'px').css("top",t+'px');rectify($mc);$mc.show();if(p.useBgiframe)bgi($mc)}return false}function hourdiv_out(a){a.removeClass("CP_over");return false}function hourdiv_click(a){h=a.attr("id").split('_')[1];tt=set_tt(h);str=a.text();if(str.indexOf(' ')!=-1){cleanstr=str.substring(0,str.indexOf(' '))}else{cleanstr=str}a.text(cleanstr+':00'+tt);setval(a);cleardivs()}function minutediv_over(a){a.addClass("CP_over");return false}function minutediv_out(a){a.removeClass("CP_over");return false}function minutediv_click(a){setval(a);cleardivs()}function setval(a){if(!p.valuefield){g.value=a.text()}else{jQuery("input[name="+p.valuefield+"]").val(a.text())}o.apply($self,[a.text()]);$self.unbind("keydown",keyhandler)}function cleardivs(){if(p.showminutes){$mc.hide()}$hourcont.hide();$self.unbind("keydown",keyhandler)}function keyhandler(e){var d=$("div.CP_over").size()?$("div.CP_over"):$("div.CP_hour:first"),divtype=d.is(".CP_hour")?'hour':'minute',hi=(divtype=='hour')?d[0].id.split('_')[2]:0,h=(divtype=='minute')?d[0].id.split('_')[0]:d[0].id.split('_')[1];if(divtype=='minute'){var f=h<12?'m1':'m2'}else{var f=h<12?'h1':'h2'}function divprev(a){if(a.prev().size()){eval(divtype+'div_out($obj)');eval(divtype+'div_over($obj.prev(), e)')}else{return false}}function divnext(a){if(a.next().size()){eval(divtype+'div_out($obj)');eval(divtype+'div_over($obj.next(), e)')}else{return false}}function hourtohour(a){var b=h>=12?'#hourcol1':'#hourcol2';$newobj=jQuery(".CP_hour[id$=_"+hi+"]",b);if($newobj.size()){hourdiv_out(a);hourdiv_over($newobj,e)}else{return false}}function hourtominute(a){hourdiv_out(a);minutediv_over($(".CP_minute:first"))}function minutetohour(a){minutediv_out(a);var b=h>=12?'#hourcol2':'#hourcol1';var c=jQuery(".CP_hour[id^=hr_"+h+"]",b);hourdiv_over(c,e)}switch(e.keyCode){case 37:if(v){switch(f){case'm1':return false;break;case'm2':minutetohour(d);break;case'h1':hourtominute(d);break;case'h2':hourtohour(d);break}}else{divprev(d)}break;case 38:if(v){divprev(d)}else{switch(f){case'm1':return false;break;case'm2':minutetohour(d);break;case'h1':hourtominute(d);break;case'h2':hourtohour(d);break}}break;case 39:if(v){switch(f){case'm1':minutetohour(d);break;case'm2':return false;break;case'h1':hourtohour(d);break;case'h2':hourtominute(d);break}}else{divnext(d)}break;case 40:if(v){divnext(d)}else{switch(f){case'm1':minutetohour(d);break;case'm2':return false;break;case'h1':hourtohour(d);break;case'h2':hourtominute(d);break}}break;case 13:eval(divtype+'div_click($obj)');break;default:return true}return false}return false});function errorcheck(){if(p.starthour>=p.endhour){alert('Error - start hour must be less than end hour.');return false}else if(60%p.minutedivisions!=0){alert('Error - param minutedivisions must divide evenly into 60.');return false}}return this}
;var Mapifies;if(!Mapifies){Mapifies={}}Mapifies.MapObjects={};Mapifies.MapObjects.Set=function(B,A){var C=jQuery(B).attr("id");var D=new GMap2(B);Mapifies.MapObjects[C]=D;Mapifies.MapObjects[C].Options=A;return Mapifies.MapObjects[C]};Mapifies.MapObjects.Append=function(A,C,D){var B=jQuery(A).attr("id");Mapifies.MapObjects[B][C]=D};Mapifies.MapObjects.Get=function(A){return Mapifies.MapObjects[jQuery(A).attr("id")]};Mapifies.Initialise=function(B,A,F){function D(){return{language:"en",mapType:"map",mapCenter:[55.958858,-3.162302],mapZoom:12,mapControl:"small",mapEnableType:false,mapEnableOverview:false,mapEnableDragging:true,mapEnableInfoWindows:true,mapEnableDoubleClickZoom:false,mapEnableScrollZoom:false,mapEnableSmoothZoom:false,mapEnableGoogleBar:false,mapEnableScaleControl:false,mapShowjMapsIcon:true,debugMode:false}}A=jQuery.extend(D(),A);if(GBrowserIsCompatible()){var E=Mapifies.MapObjects.Set(B,A);var C=Mapifies.GetMapType(A.mapType);E.setCenter(new GLatLng(A.mapCenter[0],A.mapCenter[1]),A.mapZoom,C);if(A.mapShowjMapsIcon){Mapifies.AddScreenOverlay(B,{imageUrl:"http://hg.digitalspaghetti.me.uk/jmaps/raw-file/3228fade0b3c/docs/images/jmaps-mapicon.png",screenXY:[70,10],overlayXY:[0,0],size:[42,25]})}switch(A.mapControl){case"small":E.addControl(new GSmallMapControl());break;case"large":E.addControl(new GLargeMapControl());break}if(A.mapEnableType){E.addControl(new GMapTypeControl())}if(A.mapEnableOverview){E.addControl(new GOverviewMapControl())}if(!A.mapEnableDragging){E.disableDragging()}if(!A.mapEnableInfoWindows){E.disableInfoWindow()}if(A.mapEnableDoubleClickZoom){E.enableDoubleClickZoom()}if(A.mapEnableScrollZoom){E.enableScrollWheelZoom()}if(A.mapEnableSmoothZoom){E.enableContinuousZoom()}if(A.mapEnableGoogleBar){E.enableGoogleBar()}if(A.mapEnableScaleControl){E.addControl(new GScaleControl())}if(A.debugMode){console.log(Mapifies)}if(typeof F=="function"){return F(E,B,A)}}else{jQuery(B).text("Your browser does not support Google Maps.");return false}return};Mapifies.MoveTo=function(C,B,G){function E(){return{centerMethod:"normal",mapType:null,mapCenter:[],mapZoom:null}}var F=Mapifies.MapObjects.Get(C);B=jQuery.extend(E(),B);if(B.mapType){var D=Mapifies.GetMapType(B.mapType)}var A=new GLatLng(B.mapCenter[0],B.mapCenter[1]);switch(B.centerMethod){case"normal":F.setCenter(A,B.mapZoom,D);break;case"pan":F.panTo(A);break}if(typeof G=="function"){return G(A,B)}};Mapifies.SavePosition=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.savePosition();if(typeof D=="function"){return D(C)}};Mapifies.GotoSavedPosition=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.returnToSavedPosition();if(typeof D=="function"){return D(C)}};Mapifies.CreateKeyboardHandler=function(B,A,E){var C=Mapifies.MapObjects.Get(B);var D=new GKeyboardHandler(C);if(typeof E=="function"){return E(D)}};Mapifies.CheckResize=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.checkResize();if(typeof D=="function"){return D(B)}};Mapifies.SearchAddress=function(C,B,F){function D(){return{query:null,returnType:"getLatLng",cache:undefined,countryCode:"uk"}}var E=Mapifies.MapObjects.Get(C);B=jQuery.extend(D(),B);if(typeof E.Geocoder==="undefined"){if(typeof B.cache==="undefined"){var A=new GClientGeocoder()}else{var A=new GClientGeocoder(cache)}Mapifies.MapObjects.Append(C,"Geocoder",A);E=Mapifies.MapObjects.Get(C)}E.Geocoder[B.returnType](B.query,function(G){if(typeof F==="function"){return F(G,B)}});return};Mapifies.SearchDirections=function(D,I,H){function C(){return{query:null,panel:null,locale:"en_GB",travelMode:"driving",avoidHighways:false,getPolyline:true,getSteps:true,preserveViewport:false,clearLastSearch:false}}var G=Mapifies.MapObjects.Get(D);I=jQuery.extend(C(),I);var B={locale:I.locale,travelMode:I.travelMode,avoidHighways:I.avoidHighways,getPolyline:I.getPolyline,getSteps:I.getSteps,preserveViewport:I.preserveViewport};var A=$(I.panel).get(0);if(typeof G.Directions==="undefined"){Mapifies.MapObjects.Append(D,"Directions",new GDirections(G,A))}GEvent.addListener(G.Directions,"load",F);GEvent.addListener(G.Directions,"error",E);if(I.clearLastSearch){G.Directions.clear()}G.Directions.load(I.query,B);function F(){if(typeof H=="function"){return H(G.Directions,I)}}function E(){if(typeof H=="function"){return H(G.Directions,I)}}return};Mapifies.CreateAdsManager=function(C,B,F){function D(){return{publisherId:"",maxAdsOnMap:3,channel:0,minZoomLevel:6}}var E=Mapifies.MapObjects.Get(C);B=jQuery.extend(D(),B);var A={maxAdsOnMap:B.maxAdsOnMap,channel:B.channel,minZoomLevel:B.minZoomLevel};if(typeof E.AdsManager=="undefined"){Mapifies.MapObjects.Append(C,"AdsManager",new GAdsManager(E,B.publisherId,A))}if(typeof F=="function"){return F(E.AdsManager,B)}};Mapifies.AddFeed=function(B,A,F){function D(){return{feedUrl:null,mapCenter:[]}}var E=Mapifies.MapObjects.Get(B);A=jQuery.extend(D(),A);var C=new GGeoXml(A.feedUrl);E.addOverlay(C);if(A.mapCenter[0]&&A.mapCenter[1]){E.setCenter(new GLatLng(A.mapCenter[0],A.mapCenter[1]))}if(typeof F=="function"){return F(C,A)}return};Mapifies.RemoveFeed=function(A,B,D){var C=Mapifies.MapObjects.Get(A);C.removeOverlay(B);if(typeof D=="function"){return D(B)}return};Mapifies.AddGroundOverlay=function(B,A,F){function D(){return{overlaySouthWestBounds:undefined,overlayNorthEastBounds:undefined,overlayImage:undefined}}var E=Mapifies.MapObjects.Get(B);A=jQuery.extend(D(),A);var C=new GLatLngBounds(new GLatLng(A.overlaySouthWestBounds[0],A.overlaySouthWestBounds[1]),new GLatLng(A.overlayNorthEastBounds[0],A.overlayNorthEastBounds[1]));groundOverlay=new GGroundOverlay(A.overlayImage,C);E.addOverlay(groundOverlay);if(typeof F=="function"){return F(groundOverlay,A)}return};Mapifies.RemoveGroundOverlay=function(A,C,D){var B=Mapifies.MapObjects.Get(A);B.removeOverlay(C);if(typeof D==="function"){return D(C)}return};Mapifies.AddMarker=function(D,C,G){function E(){var H={pointLatLng:undefined,pointHTML:undefined,pointOpenHTMLEvent:"click",pointIsDraggable:false,pointIsRemovable:false,pointRemoveEvent:"dblclick",pointMinZoom:4,pointMaxZoom:17,pointIcon:undefined,centerMap:false,centerMoveMethod:"normal"};return H}var F=Mapifies.MapObjects.Get(D);C=jQuery.extend({},E(),C);var B={};if(typeof C.pointIcon=="object"){jQuery.extend(B,{icon:C.pointIcon})}if(C.pointIsDraggable){jQuery.extend(B,{draggable:C.pointIsDraggable})}if(C.centerMap){switch(C.centerMoveMethod){case"normal":F.setCenter(new GLatLng(C.pointLatLng[0],C.pointLatLng[1]));break;case"pan":F.panTo(new GLatLng(C.pointLatLng[0],C.pointLatLng[1]));break}}var A=new GMarker(new GLatLng(C.pointLatLng[0],C.pointLatLng[1]),B);if(C.pointHTML){GEvent.addListener(A,C.pointOpenHTMLEvent,function(){A.openInfoWindowHtml(C.pointHTML,{maxContent:C.pointMaxContent,maxTitle:C.pointMaxTitle})})}if(C.pointIsRemovable){GEvent.addListener(A,C.pointRemoveEvent,function(){F.removeOverlay(A)})}if(F.MarkerManager){F.MarkerManager.addMarker(A,C.pointMinZoom,C.pointMaxZoom)}else{F.addOverlay(A)}if(typeof G=="function"){return G(A,C)}return};Mapifies.RemoveMarker=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.removeOverlay(A);if(typeof D==="function"){return D(A)}return};Mapifies.CreateMarkerManager=function(C,A,G){function D(){return{markerManager:"GMarkerManager",borderPadding:100,maxZoom:17,trackMarkers:false}}var F=Mapifies.MapObjects.Get(C);A=jQuery.extend(D(),A);var E={borderPadding:A.borderPadding,maxZoom:A.maxZoom,trackMarkers:A.trackMarkers};var B=new window[A.markerManager](F,A);Mapifies.MapObjects.Append(C,"MarkerManager",B);if(typeof G=="function"){return G(B,A)}};Mapifies.AddPolygon=function(E,C,H){function F(){return{polygonPoints:[],polygonStrokeColor:"#000000",polygonStrokeWeight:5,polygonStrokeOpacity:1,polygonFillColor:"#ff0000",polygonFillOpacity:1,mapCenter:undefined,polygonClickable:true}}var G=Mapifies.MapObjects.Get(E);C=jQuery.extend(F(),C);var A={};if(!C.polygonClickable){A=jQuery.extend(A,{clickable:false})}if(typeof C.mapCenter!=="undefined"&&C.mapCenter[0]&&C.mapCenter[1]){G.setCenter(new GLatLng(C.mapCenter[0],C.mapCenter[1]))}var B=[];jQuery.each(C.polygonPoints,function(J,I){B.push(new GLatLng(I[0],I[1]))});var D=new GPolygon(B,C.polygonStrokeColor,C.polygonStrokeWeight,C.polygonStrokeOpacity,C.polygonFillColor,C.polygonFillOpacity,A);G.addOverlay(D);if(typeof H=="function"){return H(D,A,C)}return};Mapifies.RemovePolygon=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.removeOverlay(A);if(typeof D==="function"){return D(A)}return};Mapifies.AddPolyline=function(D,C,H){function F(){return{polylinePoints:[],polylineStrokeColor:"#ff0000",polylineStrokeWidth:10,polylineStrokeOpacity:1,mapCenter:[],polylineGeodesic:false,polylineClickable:true}}var G=Mapifies.MapObjects.Get(D);C=jQuery.extend(F(),C);var E={};if(C.polylineGeodesic){jQuery.extend(E,{geodesic:true})}if(!C.polylineClickable){jQuery.extend(E,{clickable:false})}if(C.mapCenter[0]&&C.mapCenter[1]){G.setCenter(new GLatLng(C.mapCenter[0],C.mapCenter[1]))}var B=[];jQuery.each(C.polylinePoints,function(J,I){B.push(new GLatLng(I[0],I[1]))});var A=new GPolyline(B,C.polylineStrokeColor,C.polylineStrokeWidth,C.polylineStrokeOpacity,E);G.addOverlay(A);if(typeof H=="function"){return H(A,E,C)}return};Mapifies.RemovePolyline=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.removeOverlay(A);if(typeof D==="function"){return D(A)}return};Mapifies.AddScreenOverlay=function(C,B,F){function D(){return{imageUrl:"",screenXY:[],overlayXY:[],size:[]}}var E=Mapifies.MapObjects.Get(C);B=jQuery.extend(D(),B);var A=new GScreenOverlay(B.imageUrl,new GScreenPoint(B.screenXY[0],B.screenXY[1]),new GScreenPoint(B.overlayXY[0],B.overlayXY[1]),new GScreenSize(B.size[0],B.size[1]));E.addOverlay(A);if(typeof F=="function"){return F(A,B)}};Mapifies.RemoveScreenOverlay=function(B,A,D){var C=Mapifies.MapObjects.Get(B);C.removeOverlay(A);if(typeof D==="function"){return D(A)}return};Mapifies.CreateStreetviewPanorama=function(E,D,H){function F(){return{overideContainer:"",latlng:[40.75271883902363,-73.98262023925781],pov:[]}}var G=Mapifies.MapObjects.Get(E);D=jQuery.extend(F(),D);var A=null;if(D.overideContainer!==""){A=jQuery(D.overideContainer).get(0)}else{A=jQuery(E).get(0)}var B={};if(D.pov.length>0){jQuery.extend(B,{pov:new GPov(D.latlng[0],D.latlng[1],D.latlng[2])})}if(D.latlng.length>0){jQuery.extend(B,{latlng:new GLatLng(D.latlng[0],D.latlng[1])})}var C=new GStreetviewPanorama(A,B);if(typeof H=="function"){return H(C,D)}return};Mapifies.RemoveStreetviewPanorama=function(B,A,D){var C=Mapifies.MapObjects.Get(B);A.remove();if(typeof D=="function"){return D(A)}return};Mapifies.AddTrafficInfo=function(B,A,F){function D(){return{mapCenter:[]}}var E=Mapifies.MapObjects.Get(B);A=jQuery.extend(D(),A);var C=new GTrafficOverlay;E.addOverlay(C);if(A.mapCenter[0]&&A.mapCenter[1]){E.setCenter(new GLatLng(A.mapCenter[0],A.mapCenter[1]))}if(typeof F=="function"){return F(C,A)}};Mapifies.RemoveTrafficInfo=function(A,B,D){var C=Mapifies.MapObjects.Get(A);C.removeOverlay(B);if(typeof D==="function"){return D(B)}return};Mapifies.SearchCode=function(A){switch(A){case G_GEO_SUCCESS:return{code:G_GEO_SUCCESS,success:true,message:"Success"};case G_GEO_UNKNOWN_ADDRESS:return{code:G_GEO_UNKNOWN_ADDRESS,success:false,message:"No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect"};break;case G_GEO_SERVER_ERROR:return{code:G_GEO_UNKNOWN_ADDRESS,success:false,message:"A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known."};break;case G_GEO_MISSING_QUERY:return{code:G_GEO_UNKNOWN_ADDRESS,success:false,message:"The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input."};break;case G_GEO_BAD_KEY:return{code:G_GEO_UNKNOWN_ADDRESS,success:false,message:"The given key is either invalid or does not match the domain for which it was given."};break;case G_GEO_BAD_REQUEST:return{code:G_GEO_UNKNOWN_ADDRESS,success:false,message:"A directions request could not be successfully parsed."};break;default:return{code:null,success:false,message:"An unknown error occurred."};break}};Mapifies.GetMapType=function(A){switch(A){case"map":A=G_NORMAL_MAP;break;case"sat":A=G_SATELLITE_MAP;break;case"hybrid":A=G_HYBRID_MAP;break}return A};Mapifies.GetTravelMode=function(A){switch(A){case"driving":A=G_TRAVEL_MODE_DRIVING;break;case"walking":A=G_TRAVEL_MODE_WALKING;break}return A};Mapifies.createIcon=function(A){function C(){return{iconImage:undefined,iconShadow:undefined,iconSize:undefined,iconShadowSize:undefined,iconAnchor:undefined,iconInfoWindowAnchor:undefined,iconPrintImage:undefined,iconMozPrintImage:undefined,iconPrintShadow:undefined,iconTransparent:undefined}}A=jQuery.extend(C(),A);var B=new GIcon(G_DEFAULT_ICON);if(A.iconImage){B.image=A.iconImage}if(A.iconShadow){B.shadow=A.iconShadow}if(A.iconSize){B.iconSize=A.iconSize}if(A.iconShadowSize){B.shadowSize=A.iconShadowSize}if(A.iconAnchor){B.iconAnchor=A.iconAnchor}if(A.iconInfoWindowAnchor){B.infoWindowAnchor=A.iconInfoWindowAnchor}return B};Mapifies.getCenter=function(A){var B=Mapifies.MapObjects.Get(A);return B.getCenter()};Mapifies.getBounds=function(A){var B=Mapifies.MapObjects.Get(A);return B.getBounds()};var Mapifies;if(!Mapifies){Mapifies={}}(function(A){A.fn.jmap=function(D,B,C){return this.each(function(){if(D=="init"&&typeof B=="undefined"){new Mapifies.Initialise(this,{},null)}else{if(D=="init"&&typeof B=="object"){new Mapifies.Initialise(this,B,C)}else{if(D=="init"&&typeof B=="function"){new Mapifies.Initialise(this,{},B)}else{if(typeof D=="object"||D==null){new Mapifies.Initialise(this,D,B)}else{try{new Mapifies[D](this,B,C)}catch(E){throw Error("Mapifies Function Does Not Exist")}}}}}})}})(jQuery);
;$.AdvancedSBox = function($container, options){
	var o, needsInit = true, $list, $items, data, activeItem = {}, selectedItem = {}, hasScroll = false;
	
	// Init function
	function init(){
	
		// Select already initiated
		if (!needsInit) {
			// Remove old list
			$list.remove();
		}
		
		needsInit = false;
		
		// Extend default options
		o = $.extend({}, $.AdvancedSBox.defaults, options);
		
		// Fill list
		$list = $("<div>" + fillList(data) + "</div>");
		// Get inner item list
		$items = $list.find(o.itemTag);
		
		if (!o.isMultiple) {
			selectedItem = $items.filter("." + o.selectedClass).eq(0);
			if (selectedItem.length == 0) {
				selectedItem = $items.eq(0);
			}
			selectedItem.data("order", $items.index(selectedItem));
		}
		
		// Change callback
		o.afterChange.call(this, selectedItem, null);
		
		// Append list to container
		$list.addClass(o.resultsClass).hide().appendTo($container);
		$list.width($container.width() - ($list.outerWidth(false) - $list.innerWidth()));
		
		if ($list.height() > o.maxHeight) {
			hasScroll = true;
			$list.height(o.maxHeight);
		}
		
		$list.bind("click mouseover", function(e){
			var $target = $(e.target).closest(o.itemTag);
			if ($target.length > 0) {
				if (e.type == "click") {
					changeSelection($target);
				}
				else if (e.type == "mouseover") {
					changePosition($target, false);
				}
			}
		});
	}
	
	// Fill replacement list
	function fillList(_data){
		var _tmp_list = "";
		var loop_data = (((typeof(_data.data) != "undefined") && (_data.data.length > 0)) ? _data.data : _data);
		
		// Get first level of childs
		$(loop_data).each(function(i, v){
			if ((typeof(v.data) != "undefined") && (v.data.length > 0)) {
				_tmp_list += fillList(v);
			}
			else {
				_tmp_list += o.formatItem(v, o.selectedClass);
			}
		});
		
		return o.formatGroup(_data, _tmp_list);
	}
	
	function changePosition($item, autoscroll){
		if (activeItem.length > 0) {
			activeItem.removeClass(o.activeClass);
		}
		activeItem = $item;
		activeItem.addClass(o.activeClass);
		
		if (autoscroll && hasScroll) {
			var optionOffset = activeItem.get(0).offsetTop;
			var layerOffset = $list.get(0).scrollTop;
			
			if (optionOffset < layerOffset) {
				$list.scrollTop(optionOffset);
			}
			else if ((optionOffset - $list.height()) >= layerOffset) {
				$list.scrollTop(optionOffset - $list.height() + activeItem.height());
			}
		}
	}
	
	function changeSelection($item){
		$item.data("order", $items.index($item));
		
		if (!o.isMultiple) {
			if (selectedItem.length > 0) {
				selectedItem.removeClass(o.selectedClass);
			}
			
			// Change callback
			o.afterChange.call(this, $item, selectedItem);
			
			selectedItem = $item;
			selectedItem.addClass(o.selectedClass);
		}
		else {
			if ($item.is("." + o.selectedClass)) {
				$item.removeClass(o.selectedClass);
			}
			else {
				$item.addClass(o.selectedClass);
			}
			
			// Change callback
			o.afterChange.call(this, $item);
		}
	}
	
	function movePosition(step){
		var new_index = $items.index(activeItem) + step;
		if (new_index < 0) {
			new_index = 0;
		}
		if (new_index >= $items.length) {
			new_index = $items.length - 1;
		}
		changePosition($items.eq(new_index), true);
	}
	
	function moveSelection(step){
		if (!o.isMultiple) {
			var new_index = $items.index(selectedItem) + step;
			if (new_index < 0) {
				new_index = 0;
			}
			if (new_index >= $items.length) {
				new_index = $items.length - 1;
			}
			changeSelection($items.eq(new_index));
		}
	}
	
	return {
		display: function(_data) {
			data = _data;
			init();
		},
		show: function() {
			$container.css("position", "relative");
			$list.css({
				top: o.layerOffsetTop + "px",
				left: "0px"
			})
			$list.show();
		},
		moveFirst: function() {
			changePosition($items.find(":first"), true);
		},
		moveLast: function() {
			changePosition($items.find(":last"), true);
		},
		moveNext: function() {
			movePosition(1);
		},
		movePrev: function() {
			movePosition(-1);
		},
		movePageUp: function() {
			movePosition(-10);
		},
		movePageDown: function() {
			movePosition(10);
		},
		do_move: function(step) {
			movePosition(step);
		},
		selectNext: function() {
			moveSelection(1);
		},
		selectPrev: function() {
			moveSelection(-1);
		},
		selectActive: function() {
			changeSelection(activeItem);
		},
		do_select: function(step) {
			moveSelection(step);
		},
		visible : function() {
			return $list.is(":visible");
		},
		current: function() {
			return $items.index(activeItem);
		},
		selected: function() {
			
		},
		toggle: function() {
			$list.css({
				top: o.layerOffsetTop + "px",
				left: "0px"
			});
			if ($list.is(":visible")) {
				$list.hide();
				$container.css("position", "static");
			}
			else {
				$container.css("position", "relative");
				$list.show();
			}
		},
		hide: function() {
			$list.hide();
			$container.css("position", "static");
		},
		emptyList: function (){
			
		},
		unbind: function() {
			
		}
	};
}

$.AdvancedSBox.defaults = {
	resultsClass          : "asb_results",
	activeClass           : "asb_active",
	selectedClass         : "asb_selected",
	itemTag               : "dd",
	isMultiple            : false,
	maxHeight             : 240,
	layerOffsetTop        : 23,
	formatItem            : function($option){},
	formatGroup           : function($group, content){},
	afterChange           : function($new_item, $old_item){}
}

$.fn.AdvancedSBox = function(options){
	
	var o = $.extend({}, $.fn.AdvancedSBox.defaults, options);
	
	function select_to_data($group){
		var _data = [];
		
		// Get first level of childs
		$("> *", $group).each(function(i, v){
			var $v = $(v);
			if ($v.is("option")) {
				var obj = {
					value: v.getAttribute("value"),
					selected: v.getAttribute("selected"),
					html: v.innerHTML
				};
				_data.push(obj);
			}
			else if ($v.is("optgroup")) {
				var obj = {
					label: v.getAttribute("label"),
					data: select_to_data($v)
				}
				_data.push(obj);
			}
		});
		
		return _data;
	}
	
	return this.each(function(){
		var $sel, $options, $input, $container, data, isOver = false;
		
		$sel = $(this);
		// Get options list
		$options = $sel.find("option");
		// Check for multiple selection
		o.isMultiple = $sel.attr("multiple");
		o.afterChange = function($new_item, $old_item){
			if (o.isMultiple) {
				if ($new_item.length > 0) {
					var $item = $options.eq($new_item.data("order"));
					if ($item.is(":selected")) {
						$item.removeAttr("selected");
					}
					else {
						$item.attr("selected", "selected");
					}
				}
				
				var input_val = $options.map(function(){
					var $this = $(this);
					if ($this.is(":selected")) { return $this.text(); } 
				}).get().join(", ");
				
				if (input_val != "") {
					$input.val(input_val);
				}
				else {
					$input.val(o.multipleLabel);
				}
				
				if (!o.autoClose) {
					// $input.get(0).focus();
				}
				else {
					ASB.hide();
				}
			}
			else {
				var $new_option = $options.eq($new_item.data("order"));
				
				if ($old_item != null) {
					var $old_option = $options.eq($old_item.data("order"));
					$old_option.removeAttr("selected");
				}
				
				$new_option.attr("selected", "selected");
				$input.val($new_option.text());
				
				ASB.hide();
			}
			
			// Change callback
			o.changeCallback.call(this, $options);
		}
		
		// Build list container
		$container = $("<div class=\"" + o.containerClass + "\" />");
		
		// Build input box
		$input = $("<input type=\"text\" id=\"asb_" + $sel.attr("id") + "\" class=\"" + o.inputClass + "\" autocomplete=\"off\" readonly=\"readonly\" style=\"-moz-user-select: none;\" />");
		$input.width((($sel.width() > o.maxInputWidth) ? o.maxInputWidth : $sel.width()) - o.arrowWidth);
		$container.width(($sel.width() > o.maxInputWidth) ? o.maxInputWidth : $sel.width());
		if (o.isMultiple) {
			$input.val(o.multipleLabel);
		}
		// Append input to container
		$input.appendTo($container);
		// Hide select and insert container before
		$sel.hide().before($container);
		
		data = select_to_data($sel);
		
		var ASB = new $.AdvancedSBox($container, o);
		ASB.display(data);
		
		$sel.bind("refresh", function(){
			$sel = $(this);
			// Get options list
			$options = $sel.find("option");
			
			$input.width((($sel.width() > o.maxInputWidth) ? o.maxInputWidth : $sel.width()) - o.arrowWidth);
			$container.width(($sel.width() > o.maxInputWidth) ? o.maxInputWidth : $sel.width());
			data = select_to_data($sel);
			ASB.display(data);
		});
		
		$container.click(function(e){
			if (e.target === $container.get(0)) {
				// $input.get(0).focus();
				ASB.toggle(); 
			}
		}).hover(function(){
			isOver = true;
		}, function(){
			isOver = false;
		});
		
		$(document).bind("click.asb", function(e){
			if (!isOver) {
				ASB.hide();
			}
		});
		
		$input.focus(function(){
			// ASB.show(); 
			// return false;
		}).blur(function(){
			if (!isOver) {
				// ASB.hide();
			}
			// return false;
		}).click(function(){
			ASB.toggle();
			// return false;
		}).keydown(function(e){
			switch(e.keyCode) {
				case 33: // pgUp
					ASB.movePageUp();
					break;
				case 34: // pgDown
					ASB.movePageDown();
					break;
				case 38: // up
					ASB.movePrev();
					break;
				case 40: // down
					ASB.moveNext();
					break;
				case 36: // home
					ASB.moveFirst();
					break;
				case 35: // end
					ASB.moveLast();
					break;
				case 13: // return
					ASB.selectActive();
					break;
				case 32: // space
					ASB.selectActive();
					break;
				case 27: // escape
					ASB.hide();
					break;
			}
			return false;
		});
	});
}

$.fn.AdvancedSBox.defaults = {
	containerClass        : "asb_container",
	inputClass            : "asb_input",
	loadingClass          : "asb_loading",
	multipleLabel         : "Selecteaza",
	autoRefresh           : 0,
	autoClose             : 0,
	maxInputWidth         : 220,
	arrowWidth            : 31,
	layerOffsetTop        : 23,
	changeCallback        : function($options){},
	formatItem            : function(option, selectedClass){
		var selected = (option.selected ? " class=\"" + selectedClass + "\"" : "");
		return "<dd" + selected + ">" + option.html + "</dd>";
	},
	formatGroup           : function(group, content){
		var label = group.label || "";
		return "<dl>" + ((label.length > 0) ? "<dt>" + label + "</dt>" : "") + content + "</dl>";
	}
}
;/*
 * FancyBox - jQuery Plugin
 * simple and fancy lightbox alternative
 *
 * Copyright (c) 2009 Janis Skarnelis
 * Examples and documentation at: http://fancybox.net
 * 
 * Version: 1.2.6 (16/11/2009)
 * Requires: jQuery v1.3+
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

;(function($) {
	$.fn.fixPNG = function() {
		return this.each(function () {
			var image = $(this).css('backgroundImage');

			if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
				image = RegExp.$1;
				$(this).css({
					'backgroundImage': 'none',
					'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + ($(this).css('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale') + ", src='" + image + "')"
				}).each(function () {
					var position = $(this).css('position');
					if (position != 'absolute' && position != 'relative')
						$(this).css('position', 'relative');
				});
			}
		});
	};

	var elem, opts, busy = false, imagePreloader = new Image, loadingTimer, loadingFrame = 1, imageRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i;
	var ieQuirks = null, IE6 = $.browser.msie && $.browser.version.substr(0,1) == 6 && !window.XMLHttpRequest, oldIE = IE6 || ($.browser.msie && $.browser.version.substr(0,1) == 7);

	$.fn.fancybox = function(o) {
		var settings		= $.extend({}, $.fn.fancybox.defaults, o);
		var matchedGroup	= this;

		function _initialize() {
			elem = this;
			opts = $.extend({}, settings);

			_start();

			return false;
		};

		function _start() {
			if (busy) return;

			if ($.isFunction(opts.callbackOnStart)) {
				opts.callbackOnStart();
			}

			opts.itemArray		= [];
			opts.itemCurrent	= 0;

			if (settings.itemArray.length > 0) {
				opts.itemArray = settings.itemArray;

			} else {
				var item = {};

				if (!elem.rel || elem.rel == '') {
					var item = {href: elem.href, title: elem.title};

					if ($(elem).children("img:first").length) {
						item.orig = $(elem).children("img:first");
					} else {
						item.orig = $(elem);
					}

					if (item.title == '' || typeof item.title == 'undefined') {
						item.title = item.orig.attr('alt');
					}
					
					opts.itemArray.push( item );

				} else {
					var subGroup = $(matchedGroup).filter("a[rel=" + elem.rel + "]");
					var item = {};

					for (var i = 0; i < subGroup.length; i++) {
						item = {href: subGroup[i].href, title: subGroup[i].title};

						if ($(subGroup[i]).children("img:first").length) {
							item.orig = $(subGroup[i]).children("img:first");
						} else {
							item.orig = $(subGroup[i]);
						}

						if (item.title == '' || typeof item.title == 'undefined') {
							item.title = item.orig.attr('alt');
						}

						opts.itemArray.push( item );
					}
				}
			}

			while ( opts.itemArray[ opts.itemCurrent ].href != elem.href ) {
				opts.itemCurrent++;
			}

			if (opts.overlayShow) {
				if (IE6) {
					$('embed, object, select').css('visibility', 'hidden');
					$("#fancy_overlay").css('height', $(document).height());
				}

				$("#fancy_overlay").css({
					'background-color'	: opts.overlayColor,
					'opacity'			: opts.overlayOpacity
				}).show();
			}
			
			$(window).bind("resize.fb scroll.fb", $.fn.fancybox.scrollBox);

			_change_item();
		};

		function _change_item() {
			$("#fancy_right, #fancy_left, #fancy_close, #fancy_title").hide();

			var href = opts.itemArray[ opts.itemCurrent ].href;

			if (href.match("iframe") || elem.className.indexOf("iframe") >= 0) {
				$.fn.fancybox.showLoading();
				_set_content('<iframe id="fancy_frame" onload="jQuery.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + href + '"></iframe>', opts.frameWidth, opts.frameHeight);

			} else if (href.match(/#/)) {
				var target = window.location.href.split('#')[0]; target = href.replace(target, ''); target = target.substr(target.indexOf('#'));

				_set_content('<div id="fancy_div">' + $(target).html() + '</div>', opts.frameWidth, opts.frameHeight);

			} else if (href.match(imageRegExp)) {
				imagePreloader = new Image; imagePreloader.src = href;

				if (imagePreloader.complete) {
					_proceed_image();

				} else {
					$.fn.fancybox.showLoading();
					$(imagePreloader).unbind().bind('load', function() {
						$("#fancy_loading").hide();

						_proceed_image();
					});
				}
			} else {
				$.fn.fancybox.showLoading();
				$.get(href, function(data) {
					$("#fancy_loading").hide();
					_set_content( '<div id="fancy_ajax">' + data + '</div>', opts.frameWidth, opts.frameHeight );
				});
			}
		};

		function _proceed_image() {
			var width	= imagePreloader.width;
			var height	= imagePreloader.height;

			var horizontal_space	= (opts.padding * 2) + 40;
			var vertical_space		= (opts.padding * 2) + 60;

			var w = $.fn.fancybox.getViewport();
			
			if (opts.imageScale && (width > (w[0] - horizontal_space) || height > (w[1] - vertical_space))) {
				var ratio = Math.min(Math.min(w[0] - horizontal_space, width) / width, Math.min(w[1] - vertical_space, height) / height);

				width	= Math.round(ratio * width);
				height	= Math.round(ratio * height);
			}

			_set_content('<img alt="" id="fancy_img" src="' + imagePreloader.src + '" />', width, height);
		};

		function _preload_neighbor_images() {
			if ((opts.itemArray.length -1) > opts.itemCurrent) {
				var href = opts.itemArray[opts.itemCurrent + 1].href || false;

				if (href && href.match(imageRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}

			if (opts.itemCurrent > 0) {
				var href = opts.itemArray[opts.itemCurrent -1].href || false;

				if (href && href.match(imageRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}
		};

		function _set_content(value, width, height) {
			busy = true;

			var pad = opts.padding;

			if (oldIE || ieQuirks) {
				$("#fancy_content")[0].style.removeExpression("height");
				$("#fancy_content")[0].style.removeExpression("width");
			}

			if (pad > 0) {
				width	+= pad * 2;
				height	+= pad * 2;

				$("#fancy_content").css({
					'top'		: pad + 'px',
					'right'		: pad + 'px',
					'bottom'	: pad + 'px',
					'left'		: pad + 'px',
					'width'		: 'auto',
					'height'	: 'auto'
				});

				if (oldIE || ieQuirks) {
					$("#fancy_content")[0].style.setExpression('height',	'(this.parentNode.clientHeight - '	+ pad * 2 + ')');
					$("#fancy_content")[0].style.setExpression('width',		'(this.parentNode.clientWidth - '	+ pad * 2 + ')');
				}
			} else {
				$("#fancy_content").css({
					'top'		: 0,
					'right'		: 0,
					'bottom'	: 0,
					'left'		: 0,
					'width'		: '100%',
					'height'	: '100%'
				});
			}

			if ($("#fancy_outer").is(":visible") && width == $("#fancy_outer").width() && height == $("#fancy_outer").height()) {
				$("#fancy_content").fadeOut('fast', function() {
					$("#fancy_content").empty().append($(value)).fadeIn("normal", function() {
						_finish();
					});
				});

				return;
			}

			var w = $.fn.fancybox.getViewport();

			var itemTop		= (height	+ 60) > w[1] ? w[3] : (w[3] + Math.round((w[1] - height	- 60) * 0.5));
			var itemLeft	= (width	+ 40) > w[0] ? w[2] : (w[2] + Math.round((w[0] - width	- 40) * 0.5));

			var itemOpts = {
				'left':		itemLeft,
				'top':		itemTop,
				'width':	width + 'px',
				'height':	height + 'px'
			};

			if ($("#fancy_outer").is(":visible")) {
				$("#fancy_content").fadeOut("normal", function() {
					$("#fancy_content").empty();
					$("#fancy_outer").animate(itemOpts, opts.zoomSpeedChange, opts.easingChange, function() {
						$("#fancy_content").append($(value)).fadeIn("normal", function() {
							_finish();
						});
					});
				});

			} else {

				if (opts.zoomSpeedIn > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
					$("#fancy_content").empty().append($(value));

					var orig_item	= opts.itemArray[opts.itemCurrent].orig;
					var orig_pos	= $.fn.fancybox.getPosition(orig_item);

					$("#fancy_outer").css({
						'left':		(orig_pos.left	- 20 - opts.padding) + 'px',
						'top':		(orig_pos.top	- 20 - opts.padding) + 'px',
						'width':	$(orig_item).width() + (opts.padding * 2),
						'height':	$(orig_item).height() + (opts.padding * 2)
					});

					if (opts.zoomOpacity) {
						itemOpts.opacity = 'show';
					}

					$("#fancy_outer").animate(itemOpts, opts.zoomSpeedIn, opts.easingIn, function() {
						_finish();
					});

				} else {

					$("#fancy_content").hide().empty().append($(value)).show();
					$("#fancy_outer").css(itemOpts).fadeIn("normal", function() {
						_finish();
					});
				}
			}
		};

		function _set_navigation() {
			if (opts.itemCurrent !== 0) {
				$("#fancy_left, #fancy_left_ico").unbind().bind("click", function(e) {
					e.stopPropagation();

					opts.itemCurrent--;
					_change_item();

					return false;
				});

				$("#fancy_left").show();
			}

			if (opts.itemCurrent != ( opts.itemArray.length -1)) {
				$("#fancy_right, #fancy_right_ico").unbind().bind("click", function(e) {
					e.stopPropagation();

					opts.itemCurrent++;
					_change_item();

					return false;
				});

				$("#fancy_right").show();
			}
		};

		function _finish() {
			if ($.browser.msie) {
				$("#fancy_content")[0].style.removeAttribute('filter');
				$("#fancy_outer")[0].style.removeAttribute('filter');
			}

			_set_navigation();

			_preload_neighbor_images();

			$(document).bind("keydown.fb", function(e) {
				if (e.keyCode == 27 && opts.enableEscapeButton) {
					$.fn.fancybox.close();

				} else if(e.keyCode == 37 && opts.itemCurrent !== 0) {
					$(document).unbind("keydown.fb");
					opts.itemCurrent--;
					_change_item();
					

				} else if(e.keyCode == 39 && opts.itemCurrent != (opts.itemArray.length - 1)) {
					$(document).unbind("keydown.fb");
					opts.itemCurrent++;
					_change_item();
				}
			});

			if (opts.hideOnContentClick) {
				$("#fancy_content").click($.fn.fancybox.close);
			}

			if (opts.overlayShow && opts.hideOnOverlayClick) {
				$("#fancy_overlay").bind("click", $.fn.fancybox.close);
			}

			if (opts.showCloseButton) {
				$("#fancy_close").bind("click", $.fn.fancybox.close).show();
			}

			if (typeof opts.itemArray[ opts.itemCurrent ].title !== 'undefined' && opts.itemArray[ opts.itemCurrent ].title.length > 0) {
				var pos = $("#fancy_outer").position();

				$('#fancy_title div').text( opts.itemArray[ opts.itemCurrent ].title).html();

				$('#fancy_title').css({
					'top'	: pos.top + $("#fancy_outer").outerHeight() - 32,
					'left'	: pos.left + (($("#fancy_outer").outerWidth() * 0.5) - ($('#fancy_title').width() * 0.5))
				}).show();
			}

			if (opts.overlayShow && IE6) {
				$('embed, object, select', $('#fancy_content')).css('visibility', 'visible');
			}

			if ($.isFunction(opts.callbackOnShow)) {
				opts.callbackOnShow( opts.itemArray[ opts.itemCurrent ] );
			}

			if ($.browser.msie) {
				$("#fancy_outer")[0].style.removeAttribute('filter'); 
				$("#fancy_content")[0].style.removeAttribute('filter'); 
			}
			
			busy = false;
		};

		return this.unbind('click.fb').bind('click.fb', _initialize);
	};

	$.fn.fancybox.scrollBox = function() {
		var w = $.fn.fancybox.getViewport();
		
		if (opts.centerOnScroll && $("#fancy_outer").is(':visible')) {
			var ow	= $("#fancy_outer").outerWidth();
			var oh	= $("#fancy_outer").outerHeight();

			var pos	= {
				'top'	: (oh > w[1] ? w[3] : w[3] + Math.round((w[1] - oh) * 0.5)),
				'left'	: (ow > w[0] ? w[2] : w[2] + Math.round((w[0] - ow) * 0.5))
			};

			$("#fancy_outer").css(pos);

			$('#fancy_title').css({
				'top'	: pos.top	+ oh - 32,
				'left'	: pos.left	+ ((ow * 0.5) - ($('#fancy_title').width() * 0.5))
			});
		}
		
		if (IE6 && $("#fancy_overlay").is(':visible')) {
			$("#fancy_overlay").css({
				'height' : $(document).height()
			});
		}
		
		if ($("#fancy_loading").is(':visible')) {
			$("#fancy_loading").css({'left': ((w[0] - 40) * 0.5 + w[2]), 'top': ((w[1] - 40) * 0.5 + w[3])});
		}
	};

	$.fn.fancybox.getNumeric = function(el, prop) {
		return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
	};

	$.fn.fancybox.getPosition = function(el) {
		var pos = el.offset();

		pos.top	+= $.fn.fancybox.getNumeric(el, 'paddingTop');
		pos.top	+= $.fn.fancybox.getNumeric(el, 'borderTopWidth');

		pos.left += $.fn.fancybox.getNumeric(el, 'paddingLeft');
		pos.left += $.fn.fancybox.getNumeric(el, 'borderLeftWidth');

		return pos;
	};

	$.fn.fancybox.showIframe = function() {
		$("#fancy_loading").hide();
		$("#fancy_frame").show();
	};

	$.fn.fancybox.getViewport = function() {
		return [$(window).width(), $(window).height(), $(document).scrollLeft(), $(document).scrollTop() ];
	};

	$.fn.fancybox.animateLoading = function() {
		if (!$("#fancy_loading").is(':visible')){
			clearInterval(loadingTimer);
			return;
		}

		$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');

		loadingFrame = (loadingFrame + 1) % 12;
	};

	$.fn.fancybox.showLoading = function() {
		clearInterval(loadingTimer);

		var w = $.fn.fancybox.getViewport();

		$("#fancy_loading").css({'left': ((w[0] - 40) * 0.5 + w[2]), 'top': ((w[1] - 40) * 0.5 + w[3])}).show();
		$("#fancy_loading").bind('click', $.fn.fancybox.close);

		loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
	};

	$.fn.fancybox.close = function() {
		busy = true;

		$(imagePreloader).unbind();

		$(document).unbind("keydown.fb");
		$(window).unbind("resize.fb scroll.fb");

		$("#fancy_overlay, #fancy_content, #fancy_close").unbind();

		$("#fancy_close, #fancy_loading, #fancy_left, #fancy_right, #fancy_title").hide();

		__cleanup = function() {
			if ($("#fancy_overlay").is(':visible')) {
				$("#fancy_overlay").fadeOut("fast");
			}

			$("#fancy_content").empty();
			
			if (opts.centerOnScroll) {
				$(window).unbind("resize.fb scroll.fb");
			}

			if (IE6) {
				$('embed, object, select').css('visibility', 'visible');
			}

			if ($.isFunction(opts.callbackOnClose)) {
				opts.callbackOnClose();
			}

			busy = false;
		};

		if ($("#fancy_outer").is(":visible") !== false) {
			if (opts.zoomSpeedOut > 0 && opts.itemArray[opts.itemCurrent].orig !== undefined) {
				var orig_item	= opts.itemArray[opts.itemCurrent].orig;
				var orig_pos	= $.fn.fancybox.getPosition(orig_item);

				var itemOpts = {
					'left':		(orig_pos.left	- 20 - opts.padding) + 'px',
					'top': 		(orig_pos.top	- 20 - opts.padding) + 'px',
					'width':	$(orig_item).width() + (opts.padding * 2),
					'height':	$(orig_item).height() + (opts.padding * 2)
				};

				if (opts.zoomOpacity) {
					itemOpts.opacity = 'hide';
				}

				$("#fancy_outer").stop(false, true).animate(itemOpts, opts.zoomSpeedOut, opts.easingOut, __cleanup);

			} else {
				$("#fancy_outer").stop(false, true).fadeOut('fast', __cleanup);
			}

		} else {
			__cleanup();
		}

		return false;
	};

	$.fn.fancybox.build = function() {
		var html = '';

		html += '<div id="fancy_overlay"></div>';
		html += '<div id="fancy_loading"><div></div></div>';

		html += '<div id="fancy_outer">';
		html += '<div id="fancy_inner">';

		html += '<div id="fancy_close"></div>';

		html += '<div id="fancy_bg"><div class="fancy_bg" id="fancy_bg_n"></div><div class="fancy_bg" id="fancy_bg_ne"></div><div class="fancy_bg" id="fancy_bg_e"></div><div class="fancy_bg" id="fancy_bg_se"></div><div class="fancy_bg" id="fancy_bg_s"></div><div class="fancy_bg" id="fancy_bg_sw"></div><div class="fancy_bg" id="fancy_bg_w"></div><div class="fancy_bg" id="fancy_bg_nw"></div></div>';

		html += '<a href="javascript:;" id="fancy_left"><span class="fancy_ico" id="fancy_left_ico"></span></a><a href="javascript:;" id="fancy_right"><span class="fancy_ico" id="fancy_right_ico"></span></a>';

		html += '<div id="fancy_content"></div>';

		html += '</div>';
		html += '</div>';
		
		html += '<div id="fancy_title"></div>';
		
		$(html).appendTo("body");

		$('<table cellspacing="0" cellpadding="0" border="0"><tr><td class="fancy_title" id="fancy_title_left"></td><td class="fancy_title" id="fancy_title_main"><div></div></td><td class="fancy_title" id="fancy_title_right"></td></tr></table>').appendTo('#fancy_title');

		if ($.browser.msie) {
			$(".fancy_bg").fixPNG();
		}

		if (IE6) {
			$("div#fancy_overlay").css("position", "absolute");
			$("#fancy_loading div, #fancy_close, .fancy_title, .fancy_ico").fixPNG();

			$("#fancy_inner").prepend('<iframe id="fancy_bigIframe" src="javascript:false;" scrolling="no" frameborder="0"></iframe>');

			// Get rid of the 'false' text introduced by the URL of the iframe
			var frameDoc = $('#fancy_bigIframe')[0].contentWindow.document;
			frameDoc.open();
			frameDoc.close();
			
		}
	};

	$.fn.fancybox.defaults = {
		padding				:	10,
		imageScale			:	true,
		zoomOpacity			:	true,
		zoomSpeedIn			:	0,
		zoomSpeedOut		:	0,
		zoomSpeedChange		:	300,
		easingIn			:	'swing',
		easingOut			:	'swing',
		easingChange		:	'swing',
		frameWidth			:	560,
		frameHeight			:	340,
		overlayShow			:	true,
		overlayOpacity		:	0.3,
		overlayColor		:	'#666',
		enableEscapeButton	:	true,
		showCloseButton		:	true,
		hideOnOverlayClick	:	true,
		hideOnContentClick	:	true,
		centerOnScroll		:	true,
		itemArray			:	[],
		callbackOnStart		:	null,
		callbackOnShow		:	null,
		callbackOnClose		:	null
	};

	$(document).ready(function() {
		ieQuirks = $.browser.msie && !$.boxModel;

		if ($("#fancy_outer").length < 1) {
			$.fn.fancybox.build();
		}
	});

})(jQuery);
;Date.dayNames = ['Duminica', 'Luni', 'Marti', 'Miercuri', 'Joi', 'Vineri', 'Sambata'];
Date.abbrDayNames = ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam'];
Date.monthNames = ['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'];
Date.abbrMonthNames = ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
Date.firstDayOfWeek = 1;

// Date.format = 'dd/mm/yyyy';
//Date.format = 'mm/dd/yyyy';
Date.format = 'yyyy-mm-dd';
//Date.format = 'dd mmm yy';

Date.fullYearStart = '20';

(function() {

	function add(name, method) {
		if( !Date.prototype[name] ) {
			Date.prototype[name] = method;
		}
	};
	
	add("isLeapYear", function() {
		var y = this.getFullYear();
		return (y%4==0 && y%100!=0) || y%400==0;
	});
	
	add("isWeekend", function() {
		return this.getDay()==0 || this.getDay()==6;
	});
	
	add("isWeekDay", function() {
		return !this.isWeekend();
	});
	
	add("getDaysInMonth", function() {
		return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()];
	});
	
	add("getDayName", function(abbreviated) {
		return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()];
	});

	add("getMonthName", function(abbreviated) {
		return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()];
	});

	add("getDayOfYear", function() {
		var tmpdtm = new Date("1/1/" + this.getFullYear());
		return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000);
	});
	
	add("getWeekOfYear", function() {
		return Math.ceil(this.getDayOfYear() / 7);
	});

	add("setDayOfYear", function(day) {
		this.setMonth(0);
		this.setDate(day);
		return this;
	});
	
	add("addYears", function(num) {
		this.setFullYear(this.getFullYear() + num);
		return this;
	});
	
	add("addMonths", function(num) {
		var tmpdtm = this.getDate();
		
		this.setMonth(this.getMonth() + num);
		
		if (tmpdtm > this.getDate())
			this.addDays(-this.getDate());
		
		return this;
	});
	
	add("addDays", function(num) {
		//this.setDate(this.getDate() + num);
		this.setTime(this.getTime() + (num*86400000) );
		return this;
	});
	
	add("addHours", function(num) {
		this.setHours(this.getHours() + num);
		return this;
	});

	add("addMinutes", function(num) {
		this.setMinutes(this.getMinutes() + num);
		return this;
	});
	
	add("addSeconds", function(num) {
		this.setSeconds(this.getSeconds() + num);
		return this;
	});
	
	add("zeroTime", function() {
		this.setMilliseconds(0);
		this.setSeconds(0);
		this.setMinutes(0);
		this.setHours(0);
		return this;
	});
	
	add("asString", function(format) {
		var r = format || Date.format;
		if (r.split('mm').length>1) { // ugly workaround to make sure we don't replace the m's in e.g. noveMber
			r = r.split('mmmm').join(this.getMonthName(false))
				.split('mmm').join(this.getMonthName(true))
				.split('mm').join(_zeroPad(this.getMonth()+1))
		} else {
			r = r.split('m').join(this.getMonth()+1);
		}
		r = r.split('yyyy').join(this.getFullYear())
			.split('yy').join((this.getFullYear() + '').substring(2))
			.split('dd').join(_zeroPad(this.getDate()))
			.split('d').join(this.getDate());
		return r;
	});
	
	Date.fromString = function(s)
	{
		var f = Date.format;
		
		var d = new Date('01/01/1970');
		
		if (s == '') return d;

		s = s.toLowerCase();
		var matcher = '';
		var order = [];
		var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g;
		var results;
		while ((results = r.exec(f)) != null)
		{
			switch (results[1]) {
				case 'd':
				case 'dd':
				case 'm':
				case 'mm':
				case 'yy':
				case 'yyyy':
					matcher += '(\\d+\\d?\\d?\\d?)+';
					order.push(results[1].substr(0, 1));
					break;
				case 'mmm':
					matcher += '([a-z]{3})';
					order.push('M');
					break;
			}
			if (results[2]) {
				matcher += results[2];
			}
			
		}
		var dm = new RegExp(matcher);
		var result = s.match(dm);
		for (var i=0; i<order.length; i++) {
			var res = result[i+1];
			switch(order[i]) {
				case 'd':
					d.setDate(res);
					break;
				case 'm':
					d.setMonth(Number(res)-1);
					break;
				case 'M':
					for (var j=0; j<Date.abbrMonthNames.length; j++) {
						if (Date.abbrMonthNames[j].toLowerCase() == res) break;
					}
					d.setMonth(j);
					break;
				case 'y':
					d.setYear(res);
					break;
			}
		}

		return d;
	};
	
	// utility method
	var _zeroPad = function(num) {
		var s = '0'+num;
		return s.substring(s.length-2)
		//return ('0'+num).substring(-2); // doesn't work on IE :(
	};
	
})();
;(function(D){D.fn.extend({renderCalendar:function(P){var X=function(Y){return document.createElement(Y)};P=D.extend({},D.fn.datePicker.defaults,P);if(P.showHeader!=D.dpConst.SHOW_HEADER_NONE){var M=D(X("tr"));for(var S=Date.firstDayOfWeek;S<Date.firstDayOfWeek+7;S++){var H=S%7;var R=Date.dayNames[H];M.append(jQuery(X("th")).attr({scope:"col",abbr:R,title:R,"class":(H==0||H==6?"weekend":"weekday")}).html(P.showHeader==D.dpConst.SHOW_HEADER_SHORT?R.substr(0,1):R))}}var E=D(X("table")).attr({cellspacing:2,className:"jCalendar"}).append((P.showHeader!=D.dpConst.SHOW_HEADER_NONE?D(X("thead")).append(M):X("thead")));var F=D(X("tbody"));var U=(new Date()).zeroTime();var W=P.month==undefined?U.getMonth():P.month;var N=P.year||U.getFullYear();var K=new Date(N,W,1);var J=Date.firstDayOfWeek-K.getDay()+1;if(J>1){J-=7}var O=Math.ceil(((-1*J+1)+K.getDaysInMonth())/7);K.addDays(J-1);var V=function(){if(P.hoverClass){D(this).addClass(P.hoverClass)}};var G=function(){if(P.hoverClass){D(this).removeClass(P.hoverClass)}};var L=0;while(L++<O){var Q=jQuery(X("tr"));for(var S=0;S<7;S++){var I=K.getMonth()==W;var T=D(X("td")).text(K.getDate()+"").attr("className",(I?"current-month ":"other-month ")+(K.isWeekend()?"weekend ":"weekday ")+(I&&K.getTime()==U.getTime()?"today ":"")).hover(V,G);if(P.renderCallback){P.renderCallback(T,K,W,N)}Q.append(T);K.addDays(1)}F.append(Q)}E.append(F);return this.each(function(){D(this).empty().append(E)})},datePicker:function(E){if(!D.event._dpCache){D.event._dpCache=[]}E=D.extend({},D.fn.datePicker.defaults,E);return this.each(function(){var G=D(this);var I=true;if(!this._dpId){this._dpId=D.event.guid++;D.event._dpCache[this._dpId]=new A(this);I=false}if(E.inline){E.createButton=false;E.displayClose=false;E.closeOnSelect=false;G.empty()}var F=D.event._dpCache[this._dpId];F.init(E);if(!I&&E.createButton){F.button=D('<a href="#" class="dp-choose-date" title="'+D.dpText.TEXT_CHOOSE_DATE+'">'+D.dpText.TEXT_CHOOSE_DATE+"</a>").bind("click",function(){G.dpDisplay(this);this.blur();return false});G.after(F.button)}if(!I&&G.is(":text")){G.bind("dateSelected",function(K,J,L){this.value=J.asString()}).bind("change",function(){if(this.value!=""){var J=Date.fromString(this.value);if(J){F.setSelected(J,true,true)}}});if(E.clickInput){G.bind("click",function(){G.dpDisplay()})}var H=Date.fromString(this.value);if(this.value!=""&&H){F.setSelected(H,true,true)}}G.addClass("dp-applied")})},dpSetDisabled:function(E){return B.call(this,"setDisabled",E)},dpSetStartDate:function(E){return B.call(this,"setStartDate",E)},dpReRender:function(){return B.call(this,"_rerenderCalendar")},dpSetEndDate:function(E){return B.call(this,"setEndDate",E)},dpGetSelected:function(){var E=C(this[0]);if(E){return E.getSelected()}return null},dpSetSelected:function(G,F,E){if(F==undefined){F=true}if(E==undefined){E=true}return B.call(this,"setSelected",Date.fromString(G),F,E,true)},dpSetDisplayedMonth:function(E,F){return B.call(this,"setDisplayedMonth",Number(E),Number(F),true)},dpDisplay:function(E){return B.call(this,"display",E)},dpSetRenderCallback:function(E){return B.call(this,"setRenderCallback",E)},dpSetPosition:function(E,F){return B.call(this,"setPosition",E,F)},dpSetOffset:function(E,F){return B.call(this,"setOffset",E,F)},dpClose:function(){return B.call(this,"_closeCalendar",false,this[0])},_dpDestroy:function(){}});var B=function(G,F,E,I,H){return this.each(function(){var J=C(this);if(J){J[G](F,E,I,H)}})};function A(E){this.ele=E;this.displayedMonth=null;this.displayedYear=null;this.startDate=null;this.endDate=null;this.showYearNavigation=null;this.closeOnSelect=null;this.displayClose=null;this.selectMultiple=null;this.verticalPosition=null;this.horizontalPosition=null;this.verticalOffset=null;this.horizontalOffset=null;this.button=null;this.renderCallback=[];this.selectedDates={};this.inline=null;this.context="#dp-popup"}D.extend(A.prototype,{init:function(E){this.setStartDate(E.startDate);this.setEndDate(E.endDate);this.setDisplayedMonth(Number(E.month),Number(E.year));this.setRenderCallback(E.renderCallback);this.showYearNavigation=E.showYearNavigation;this.closeOnSelect=E.closeOnSelect;this.displayClose=E.displayClose;this.selectMultiple=E.selectMultiple;this.verticalPosition=E.verticalPosition;this.horizontalPosition=E.horizontalPosition;this.hoverClass=E.hoverClass;this.setOffset(E.verticalOffset,E.horizontalOffset);this.inline=E.inline;if(this.inline){this.context=this.ele;this.display()}},setStartDate:function(E){if(E){this.startDate=Date.fromString(E)}if(!this.startDate){this.startDate=(new Date()).zeroTime()}this.setDisplayedMonth(this.displayedMonth,this.displayedYear)},setEndDate:function(E){if(E){this.endDate=Date.fromString(E)}if(!this.endDate){this.endDate=(new Date("12/31/2999"))}if(this.endDate.getTime()<this.startDate.getTime()){this.endDate=this.startDate}this.setDisplayedMonth(this.displayedMonth,this.displayedYear)},setPosition:function(E,F){this.verticalPosition=E;this.horizontalPosition=F},setOffset:function(E,F){this.verticalOffset=parseInt(E)||0;this.horizontalOffset=parseInt(F)||0},setDisabled:function(E){$e=D(this.ele);$e[E?"addClass":"removeClass"]("dp-disabled");if(this.button){$but=D(this.button);$but[E?"addClass":"removeClass"]("dp-disabled");$but.attr("title",E?"":D.dpText.TEXT_CHOOSE_DATE)}if($e.is(":text")){$e.attr("disabled",E?"disabled":"")}},setDisplayedMonth:function(E,L,I){if(this.startDate==undefined||this.endDate==undefined){return}var H=new Date(this.startDate.getTime());H.setDate(1);var K=new Date(this.endDate.getTime());K.setDate(1);var G;if((!E&&!L)||(isNaN(E)&&isNaN(L))){G=new Date().zeroTime();G.setDate(1)}else{if(isNaN(E)){G=new Date(L,this.displayedMonth,1)}else{if(isNaN(L)){G=new Date(this.displayedYear,E,1)}else{G=new Date(L,E,1)}}}if(G.getTime()<H.getTime()){G=H}else{if(G.getTime()>K.getTime()){G=K}}var F=this.displayedMonth;var J=this.displayedYear;this.displayedMonth=G.getMonth();this.displayedYear=G.getFullYear();if(I&&(this.displayedMonth!=F||this.displayedYear!=J)){this._rerenderCalendar();D(this.ele).trigger("dpMonthChanged",[this.displayedMonth,this.displayedYear])}},setSelected:function(K,E,F,H){if(E==this.isSelected(K)){return}if(this.selectMultiple==false){this.selectedDates={};D("td.selected",this.context).removeClass("selected")}if(F&&this.displayedMonth!=K.getMonth()){this.setDisplayedMonth(K.getMonth(),K.getFullYear(),true)}this.selectedDates[K.toString()]=E;var I="td.";I+=K.getMonth()==this.displayedMonth?"current-month":"other-month";I+=':contains("'+K.getDate()+'")';var J;D(I,this.ele).each(function(){if(D(this).text()==K.getDate()){J=D(this);J[E?"addClass":"removeClass"]("selected")}});if(H){var G=this.isSelected(K);$e=D(this.ele);$e.trigger("dateSelected",[K,J,G]);$e.trigger("change")}},isSelected:function(E){return this.selectedDates[E.toString()]},getSelected:function(){var E=[];for(s in this.selectedDates){if(this.selectedDates[s]==true){E.push(Date.parse(s))}}return E},display:function(E){if(D(this.ele).is(".dp-disabled")){return}E=E||this.ele;var L=this;var H=D(E);var K=H.offset();var M;var N;var G;var I;if(L.inline){M=D(this.ele);N={id:"calendar-"+this.ele._dpId,className:"dp-popup dp-popup-inline"};I={}}else{M=D("body");N={id:"dp-popup",className:"dp-popup"};I={top:K.top+L.verticalOffset,left:K.left+L.horizontalOffset};var J=function(Q){var O=Q.target;var P=D("#dp-popup")[0];while(true){if(O==P){return true}else{if(O==document){L._closeCalendar();return false}else{O=D(O).parent()[0]}}}};this._checkMouse=J;this._closeCalendar(true)}M.append(D("<div></div>").attr(N).css(I).append(D('<div class="dp-nav-prev"></div>').append(D('<a class="dp-nav-prev-year" href="#" title="'+D.dpText.TEXT_PREV_YEAR+'">&lt;&lt;</a>').bind("click",function(){return L._displayNewMonth.call(L,this,0,-1)}),D('<a class="dp-nav-prev-month" href="#" title="'+D.dpText.TEXT_PREV_MONTH+'">&lt;</a>').bind("click",function(){return L._displayNewMonth.call(L,this,-1,0)})),D('<div class="dp-nav-next"></div>').append(D('<a class="dp-nav-next-month" href="#" title="'+D.dpText.TEXT_NEXT_MONTH+'">&gt;</a>').bind("click",function(){return L._displayNewMonth.call(L,this,1,0)}),D('<a class="dp-nav-next-year" href="#" title="'+D.dpText.TEXT_NEXT_YEAR+'">&gt;&gt;</a>').bind("click",function(){return L._displayNewMonth.call(L,this,0,1)})),D("<h2></h2>"),D("<div></div>").attr("className","dp-calendar")).bgIframe());var F=this.inline?D(".dp-popup",this.context):D("#dp-popup");if(this.showYearNavigation==false){D(".dp-nav-prev-year, .dp-nav-next-year",L.context).css("display","none")}if(this.displayClose){F.append(D('<a href="#" id="dp-close">'+D.dpText.TEXT_CLOSE+"</a>").bind("click",function(){L._closeCalendar();return false}))}L._renderCalendar();D(this.ele).trigger("dpDisplayed",F);if(!L.inline){if(this.verticalPosition==D.dpConst.POS_BOTTOM){F.css("top",K.top+H.height()-F.height()+L.verticalOffset)}if(this.horizontalPosition==D.dpConst.POS_RIGHT){F.css("left",K.left+H.width()-F.width()+L.horizontalOffset)}D(document).bind("mousedown",this._checkMouse)}},setRenderCallback:function(E){if(E==null){return}if(E&&typeof(E)=="function"){E=[E]}this.renderCallback=this.renderCallback.concat(E)},cellRender:function(J,E,H,G){var K=this.dpController;var I=new Date(E.getTime());J.bind("click",function(){var L=D(this);if(!L.is(".disabled")){K.setSelected(I,!L.is(".selected")||!K.selectMultiple,false,true);if(K.closeOnSelect){K._closeCalendar()}}});if(K.isSelected(I)){J.addClass("selected")}for(var F=0;F<K.renderCallback.length;F++){K.renderCallback[F].apply(this,arguments)}},_displayNewMonth:function(F,E,G){if(!D(F).is(".disabled")){this.setDisplayedMonth(this.displayedMonth+E,this.displayedYear+G,true)}F.blur();return false},_rerenderCalendar:function(){this._clearCalendar();this._renderCalendar()},_renderCalendar:function(){D("h2",this.context).html(Date.monthNames[this.displayedMonth]+" "+this.displayedYear);D(".dp-calendar",this.context).renderCalendar({month:this.displayedMonth,year:this.displayedYear,renderCallback:this.cellRender,dpController:this,hoverClass:this.hoverClass});if(this.displayedYear==this.startDate.getFullYear()&&this.displayedMonth==this.startDate.getMonth()){D(".dp-nav-prev-year",this.context).addClass("disabled");D(".dp-nav-prev-month",this.context).addClass("disabled");D(".dp-calendar td.other-month",this.context).each(function(){var H=D(this);if(Number(H.text())>20){H.addClass("disabled")}});var G=this.startDate.getDate();D(".dp-calendar td.current-month",this.context).each(function(){var H=D(this);if(Number(H.text())<G){H.addClass("disabled")}})}else{D(".dp-nav-prev-year",this.context).removeClass("disabled");D(".dp-nav-prev-month",this.context).removeClass("disabled");var G=this.startDate.getDate();if(G>20){var F=new Date(this.startDate.getTime());F.addMonths(1);if(this.displayedYear==F.getFullYear()&&this.displayedMonth==F.getMonth()){D("dp-calendar td.other-month",this.context).each(function(){var H=D(this);if(Number(H.text())<G){H.addClass("disabled")}})}}}if(this.displayedYear==this.endDate.getFullYear()&&this.displayedMonth==this.endDate.getMonth()){D(".dp-nav-next-year",this.context).addClass("disabled");D(".dp-nav-next-month",this.context).addClass("disabled");D(".dp-calendar td.other-month",this.context).each(function(){var H=D(this);if(Number(H.text())<14){H.addClass("disabled")}});var G=this.endDate.getDate();D(".dp-calendar td.current-month",this.context).each(function(){var H=D(this);if(Number(H.text())>G){H.addClass("disabled")}})}else{D(".dp-nav-next-year",this.context).removeClass("disabled");D(".dp-nav-next-month",this.context).removeClass("disabled");var G=this.endDate.getDate();if(G<13){var E=new Date(this.endDate.getTime());E.addMonths(-1);if(this.displayedYear==E.getFullYear()&&this.displayedMonth==E.getMonth()){D(".dp-calendar td.other-month",this.context).each(function(){var H=D(this);if(Number(H.text())>G){H.addClass("disabled")}})}}}},_closeCalendar:function(E,F){if(!F||F==this.ele){D(document).unbind("mousedown",this._checkMouse);this._clearCalendar();D("#dp-popup a").unbind();D("#dp-popup").empty().remove();if(!E){D(this.ele).trigger("dpClosed",[this.getSelected()])}}},_clearCalendar:function(){D(".dp-calendar td",this.context).unbind();D(".dp-calendar",this.context).empty()}});D.dpConst={SHOW_HEADER_NONE:0,SHOW_HEADER_SHORT:1,SHOW_HEADER_LONG:2,POS_TOP:0,POS_BOTTOM:1,POS_LEFT:0,POS_RIGHT:1};D.dpText={TEXT_PREV_YEAR:"Previous year",TEXT_PREV_MONTH:"Previous month",TEXT_NEXT_YEAR:"Next year",TEXT_NEXT_MONTH:"Next month",TEXT_CLOSE:"Close",TEXT_CHOOSE_DATE:"Choose date"};D.dpVersion="$Id: jquery.datePicker.js 15 2008-12-17 04:40:18Z kelvin.luck $";D.fn.datePicker.defaults={month:undefined,year:undefined,showHeader:D.dpConst.SHOW_HEADER_SHORT,startDate:undefined,endDate:undefined,inline:false,renderCallback:null,createButton:true,showYearNavigation:true,closeOnSelect:true,displayClose:false,selectMultiple:false,clickInput:false,verticalPosition:D.dpConst.POS_TOP,horizontalPosition:D.dpConst.POS_LEFT,verticalOffset:0,horizontalOffset:0,hoverClass:"dp-hover"};function C(E){if(E._dpId){return D.event._dpCache[E._dpId]}return false}if(D.fn.bgIframe==undefined){D.fn.bgIframe=function(){return this}}D(window).bind("unload",function(){var F=D.event._dpCache||[];for(var E in F){D(F[E].ele)._dpDestroy()}})})(jQuery);

$.dpText = {
	TEXT_PREV_YEAR		:	'Anul anterior',
	TEXT_PREV_MONTH		:	'Luna anterioara',
	TEXT_NEXT_YEAR		:	'Anul urmator',
	TEXT_NEXT_MONTH		:	'Luna urmatoare',
	TEXT_CLOSE		:	'Inchide',
	TEXT_CHOOSE_DATE	:	'Alege data'
}

;// ColorBox v1.3.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
// c) 2009 Jack Moore - www.colorpowered.com - jack@colorpowered.com
// Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php

(function ($) {
	// Shortcuts (to increase compression)
	var colorbox = 'colorbox',
	hover = 'hover',
	TRUE = true,
	FALSE = false,
	cboxPublic,
	isIE = $.browser.msie && !$.support.opacity, // feature detection alone gave false positives in some browsers
	isIE6 = isIE && $.browser.version < 7,

	// Event Strings (to increase compression)
	cbox_open = 'cbox_open',
	cbox_load = 'cbox_load',
	cbox_complete = 'cbox_complete',
	cbox_cleanup = 'cbox_cleanup',
	cbox_closed = 'cbox_closed',
	cbox_resize = 'resize.cbox_resize',

	// Cached jQuery Object Variables
	$overlay,
	$cbox,
	$wrap,
	$content,
	$topBorder,
	$leftBorder,
	$rightBorder,
	$bottomBorder,
	$related,
	$window,
	$loaded,
	$loadingBay,
	$loadingOverlay,
	$loadingGraphic,
	$title,
	$current,
	$slideshow,
	$next,
	$prev,
	$close,

	// Variables for cached values or use across multiple functions
	interfaceHeight,
	interfaceWidth,
	loadedHeight,
	loadedWidth,
	element,
	bookmark,
	index,
	settings,
	open,
	active,
	
	// ColorBox Default Settings.	
	// See http://colorpowered.com/colorbox for details.
	defaults = {
		transition: "elastic",
		speed: 350,
		width: FALSE,
		height: FALSE,
		innerWidth: FALSE,
		innerHeight: FALSE,
		initialWidth: "400",
		initialHeight: "400",
		maxWidth: FALSE,
		maxHeight: FALSE,
		scalePhotos: TRUE,
		scrolling: TRUE,
		inline: FALSE,
		html: FALSE,
		iframe: FALSE,
		photo: FALSE,
		href: FALSE,
		title: FALSE,
		rel: FALSE,
		opacity: 0.9,
		preloading: TRUE,
		current: "poza _current_ din _total_",
		previous: "previous",
		next: "next",
		close: "close",
		open: FALSE,
		overlayClose: TRUE,
		
		slideshow: FALSE,
		slideshowAuto: TRUE,
		slideshowSpeed: 2500,
		slideshowStart: "start slideshow",
		slideshowStop: "stop slideshow",
		
		onOpen: FALSE,
		onLoad: FALSE,
		onComplete: FALSE,
		onCleanup: FALSE,
		onClosed: FALSE
	};
	
	// ****************
	// HELPER FUNCTIONS
	// ****************
		
	// Convert % values to pixels
	function setSize(size, dimension) {
		dimension = dimension === 'x' ? $window.width() : $window.height();//document.documentElement.clientWidth : document.documentElement.clientHeight;
		return (typeof size === 'string') ? Math.round((size.match(/%/) ? (dimension / 100) * parseInt(size, 10) : parseInt(size, 10))) : size;
	}

	// Checks an href to see if it is a photo.
	// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
	function isImage(url) {
		url = $.isFunction(url) ? url.call(element) : url;
		return settings.photo || url.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i);
	}
	
	// Assigns functions results to their respective settings.  This allows functions to be used to set ColorBox options.
	function process() {
		for (var i in settings) {
			if ($.isFunction(settings[i]) && i.substring(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
			    settings[i] = settings[i].call(element);
			}
		}
		settings.rel = settings.rel || element.rel;
		settings.href = settings.href || element.href;
		settings.title = settings.title || element.title;
	}

	function launch(elem) {
		
		element = elem;
		
		settings = $(element).data(colorbox);
		
		process(); // Convert functions to their returned values.
		
		if (settings.rel && settings.rel !== 'nofollow') {
			$related = $('.cboxElement').filter(function () {
				var relRelated = $(this).data(colorbox).rel || this.rel;
				return (relRelated === settings.rel);
			});
			index = $related.index(element);
			
			// Check direct calls to ColorBox.
			if (index < 0) {
				$related = $related.add(element);
				index = $related.length - 1;
			}
		} else {
			$related = $(element);
			index = 0;
		}
		
		if (!open) {
			open = TRUE;
			
			active = TRUE; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
			
			bookmark = element;
			
			bookmark.blur(); // Remove the focus from the calling element.
			
			// Set Navigation Key Bindings
			$(document).bind("keydown.cbox_close", function (e) {
				if (e.keyCode === 27) {
					e.preventDefault();
					cboxPublic.close();
				}
			}).bind("keydown.cbox_arrows", function (e) {
				if ($related.length > 1) {
					if (e.keyCode === 37) {
						e.preventDefault();
						$prev.click();
					} else if (e.keyCode === 39) {
						e.preventDefault();
						$next.click();
					}
				}
			});
			
			if (settings.overlayClose) {
				$overlay.css({"cursor": "pointer"}).one('click', cboxPublic.close);
			}
			
			$.event.trigger(cbox_open);
			if (settings.onOpen) {
				settings.onOpen.call(element);
			}
			
			$overlay.css({"opacity": settings.opacity}).show();
			
			// Opens inital empty ColorBox prior to content being loaded.
			settings.w = setSize(settings.initialWidth, 'x');
			settings.h = setSize(settings.initialHeight, 'y');
			cboxPublic.position(0);
			
			if (isIE6) {
				$window.bind('resize.cboxie6 scroll.cboxie6', function () {
					$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
				}).trigger("scroll.cboxie6");
			}
		}
		
		$current.add($prev).add($next).add($slideshow).add($title).hide();
		
		$close.html(settings.close).show();
		
		cboxPublic.slideshow();
		
		cboxPublic.load();
	}

	// ****************
	// PUBLIC FUNCTIONS
	// Usage format: $.fn.colorbox.close();
	// Usage from within an iframe: parent.$.fn.colorbox.close();
	// ****************
	
	cboxPublic = $.fn.colorbox = function (options, callback) {
		var $this = this;
		
		if (!$this.length) {
			if ($this.selector === '') { // empty selector means a direct call, ie: $.fn.colorbox();
				$this = $('<a/>');
				options.open = TRUE;
			} else { // else the selector didn't match anything, and colorbox should go ahead and return.
				return this;
			}
		}
		
		$this.each(function () {
			var data = $.extend({}, $(this).data(colorbox) ? $(this).data(colorbox) : defaults, options);
			
			$(this).data(colorbox, data).addClass("cboxElement");
			
			if (callback) {
				$(this).data(colorbox).onComplete = callback;
			}
		});
		
		if (options && options.open) {
			launch($this);
		}
		
		return this;
	};

	// Initialize ColorBox: store common calculations, preload the interface graphics, append the html.
	// This preps colorbox for a speedy open when clicked, and lightens the burdon on the browser by only
	// having to run once, instead of each time colorbox is opened.
	cboxPublic.init = function () {
		
		// jQuery object generator to save a bit of space
		function $div(id) {
			return $('<div id="cbox' + id + '"/>');
		}
		
		// Create & Append jQuery Objects
		$window = $(window);
		$cbox = $('<div id="colorbox"/>');
		$overlay = $div("Overlay").hide();
		$wrap = $div("Wrapper");
		$content = $div("Content").append(
			$loaded = $div("LoadedContent").css({width: 0, height: 0}),
			$loadingOverlay = $div("LoadingOverlay"),
			$loadingGraphic = $div("LoadingGraphic"),
			$title = $div("Title"),
			$current = $div("Current"),
			$slideshow = $div("Slideshow"),
			$next = $div("Next"),
			$prev = $div("Previous"),
			$close = $div("Close")
		);
		$wrap.append( // The 3x3 Grid that makes up ColorBox
			$('<div/>').append(
				$div("TopLeft"),
				$topBorder = $div("TopCenter"),
				$div("TopRight")
			),
			$('<div/>').append(
				$leftBorder = $div("MiddleLeft"),
				$content,
				$rightBorder = $div("MiddleRight")
			),
			$('<div/>').append(
				$div("BottomLeft"),
				$bottomBorder = $div("BottomCenter"),
				$div("BottomRight")
			)
		).children().children().css({'float': 'left'});
		
		$loadingBay = $("<div style='position:absolute; top:0; left:0; width:9999px; height:0;'/>");
		
		$('body').prepend($overlay, $cbox.append($wrap, $loadingBay));
				
		if (isIE) {
			$cbox.addClass('cboxIE');
			if (isIE6) {
				$overlay.css('position', 'absolute');
			}
		}
		
		// Add rollover event to navigation elements
		$content.children()
		.bind('mouseover mouseout', function(){
			$(this).toggleClass(hover);
		}).addClass(hover);
		
		// Cache values needed for size calculations
		interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(TRUE) - $content.height();//Subtraction needed for IE6
		interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(TRUE) - $content.width();
		loadedHeight = $loaded.outerHeight(TRUE);
		loadedWidth = $loaded.outerWidth(TRUE);
		
		// Setting padding to remove the need to do size conversions during the animation step.
		$cbox.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth}).hide();
		
		// Setup button & key events.
		$next.click(cboxPublic.next);
		$prev.click(cboxPublic.prev);
		$close.click(cboxPublic.close);
		
		// Adding the 'hover' class allowed the browser to load the hover-state
		// background graphics.  The class can now can be removed.
		$content.children().removeClass(hover);
		
		$('.cboxElement').live('click', function (e) {
			if (e.button !== 0 && typeof e.button !== 'undefined') {// checks to see if it was a non-left mouse-click.
				return TRUE;
			} else {
				launch(this);			
				return FALSE;
			}
		});
	};

	cboxPublic.position = function (speed, loadedCallback) {
		var
		animate_speed,
		winHeight = $window.height(),
		// keeps the top and left positions within the browser's viewport.
		posTop = Math.max(winHeight - settings.h - loadedHeight - interfaceHeight,0)/2 + $window.scrollTop(),
		posLeft = Math.max(document.documentElement.clientWidth - settings.w - loadedWidth - interfaceWidth,0)/2 + $window.scrollLeft();
		
		// setting the speed to 0 to reduce the delay between same-sized content.
		animate_speed = ($cbox.width() === settings.w+loadedWidth && $cbox.height() === settings.h+loadedHeight) ? 0 : speed;
		
		// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
		// but it has to be shrank down around the size of div#colorbox when it's done.  If not,
		// it can invoke an obscure IE bug when using iframes.
		$wrap[0].style.width = $wrap[0].style.height = "9999px";
		
		function modalDimensions (that) {
			// loading overlay size has to be sure that IE6 uses the correct height.
			$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
			$loadingGraphic[0].style.height = $loadingOverlay[0].style.height = $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
		}
		
		$cbox.dequeue().animate({width:settings.w+loadedWidth, height:settings.h+loadedHeight, top:posTop, left:posLeft}, {duration: animate_speed,
			complete: function(){
				modalDimensions(this);
				
				active = FALSE;
				
				// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
				$wrap[0].style.width = (settings.w+loadedWidth+interfaceWidth) + "px";
				$wrap[0].style.height = (settings.h+loadedHeight+interfaceHeight) + "px";
				
				if (loadedCallback) {loadedCallback();}
			},
			step: function(){
				modalDimensions(this);
			}
		});
	};

	cboxPublic.resize = function (object) {
		if(!open){ return; }
		
		var topMargin,
		prev,
		prevSrc,
		next,
		nextSrc,
		photo,
		timeout,
		speed = settings.transition==="none" ? 0 : settings.speed;
		
		$window.unbind(cbox_resize);
		
		if(!object){
			timeout = setTimeout(function(){ // timer allows IE to render the dimensions before attempting to calculate the height
				var $child = $loaded.wrapInner("<div style='overflow:auto'></div>").children(); // temporary wrapper to get an accurate estimate of just how high the total content should be.
				settings.h = $child.height();
				$loaded.css({height:settings.h});
				$child.replaceWith($child.children()); // ditch the temporary wrapper div used in height calculation
				cboxPublic.position(speed);
			}, 1);
			return;
		}
		
		$loaded.remove();
		$loaded = $('<div id="cboxLoadedContent"/>').html(object);
		
		function getWidth(){
			settings.w = settings.w || $loaded.width();
			settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
			return settings.w;
		}
		function getHeight(){
			settings.h = settings.h || $loaded.height();
			settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
			return settings.h;
		}
		
		$loaded.hide()
		.appendTo($loadingBay)// content has to be appended to the DOM for accurate size calculations.  Appended to an absolutely positioned element, rather than BODY, which avoids an extremely brief display of the vertical scrollbar in Firefox that can occur for a small minority of websites.
		.css({width:getWidth(), overflow:settings.scrolling ? 'auto' : 'hidden'})
		.css({height:getHeight()})// sets the height independently from the width in case the new width influences the value of height.
		.prependTo($content);
		
		$('#cboxPhoto').css({cssFloat:'none'});// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
		
		// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
		if (isIE6) {
			$('select:not(#colorbox select)').filter(function(){
				return this.style.visibility !== 'hidden';
			}).css({'visibility':'hidden'}).one(cbox_cleanup, function(){
				this.style.visibility = 'inherit';
			});
		}
				
		function setPosition (s) {
			cboxPublic.position(s, function(){
				if (!open) { return; }
				
				if (isIE) {
					//This fadeIn helps the bicubic resampling to kick-in.
					if( photo ){$loaded.fadeIn(100);}
					//IE adds a filter when ColorBox fades in and out that can cause problems if the loaded content contains transparent pngs.
					$cbox[0].style.removeAttribute("filter");
				}
				
				//Waited until the iframe is added to the DOM & it is visible before setting the src.
				//This increases compatability with pages using DOM dependent JavaScript.
				if(settings.iframe){
					$loaded.append("<iframe id='cboxIframe'" + (settings.scrolling ? " " : "scrolling='no'") + " name='iframe_"+new Date().getTime()+"' frameborder=0 src='"+settings.href+"' " + (isIE ? "allowtransparency='true'" : '') + " />");
				}
				
				$loaded.show();
				
				$title.show().html(settings.title);
				
				if ($related.length>1) {
					$current.html(settings.current.replace(/\_current\_/, index+1).replace(/\_total\_/, $related.length)).show();
					$next.html(settings.next).show();
					$prev.html(settings.previous).show();
					
					if(settings.slideshow){
						$slideshow.show();
					}
				}
				
				$loadingOverlay.hide();
				$loadingGraphic.hide();
				
				$.event.trigger(cbox_complete);
				if (settings.onComplete) {
					settings.onComplete.call(element);
				}
				
				if (settings.transition === 'fade'){
					$cbox.fadeTo(speed, 1, function(){
						if(isIE){$cbox[0].style.removeAttribute("filter");}
					});
				}
				
				$window.bind(cbox_resize, function(){
					cboxPublic.position(0);
				});
			});
		}
		
		if((settings.transition === 'fade' && $cbox.fadeTo(speed, 0, function(){setPosition(0);})) || setPosition(speed)){}
		
		// Preloads images within a rel group
		if (settings.preloading && $related.length>1) {
			prev = index > 0 ? $related[index-1] : $related[$related.length-1];
			next = index < $related.length-1 ? $related[index+1] : $related[0];
			nextSrc = $(next).data(colorbox).href || next.href;
			prevSrc = $(prev).data(colorbox).href || prev.href;
			
			if(isImage(nextSrc)){
				$('<img />').attr('src', nextSrc);
			}
			
			if(isImage(prevSrc)){
				$('<img />').attr('src', prevSrc);
			}
		}
	};

	cboxPublic.load = function () {
		var href, img, setResize, resize = cboxPublic.resize;
		
		active = TRUE;
		
		/*
		 
		// I decided to comment this out because I can see it causing problems as users
		// really should just set the dimensions on their IMG elements instead,
		// but I'm leaving the code in as it may be useful to someone.
		// To use, uncomment the function and change 'if(textStatus === "success"){ resize(this); }'
		// to 'if(textStatus === "success"){ preload(this); }'
		
		// Preload loops through the HTML to find IMG elements and loads their sources.
		// This allows the resize method to accurately estimate the dimensions of the new content.
		function preload(html){
			var
			$ajax = $(html),
			$imgs = $ajax.find('img'),
			x = $imgs.length;
			
			function loadloop(){
				var img = new Image();
				x = x-1;
				if(x >= 0){
					img.onload = loadloop;
					img.src = $imgs[x].src;
				} else {
					resize($ajax);
				}
			}
			
			loadloop();
		}
		*/
		
		element = $related[index];
		
		settings = $(element).data(colorbox);
		
		//convert functions to static values
		process();
		
		$.event.trigger(cbox_load);
		if (settings.onLoad) {
			settings.onLoad.call(element);
		}
		
		// Evaluate the height based on the optional height and width settings.
		settings.h = settings.height ?
				setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
				settings.innerHeight ?
					setSize(settings.innerHeight, 'y') :
					FALSE;
		settings.w = settings.width ?
				setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
				settings.innerWidth ?
					setSize(settings.innerWidth, 'x') :
					FALSE;
		
		// Sets the minimum dimensions for use in image scaling
		settings.mw = settings.w;
		settings.mh = settings.h;
		
		// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
		// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
		if(settings.maxWidth){
			settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
			settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
		}
		if(settings.maxHeight){
			settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
			settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
		}
		
		href = settings.href;
		
		$loadingOverlay.show();
		$loadingGraphic.show();
		
		if (settings.inline) {
			// Inserts an empty placeholder where inline content is being pulled from.
			// An event is bound to put inline content back when ColorBox closes or loads new content.
			$('<div id="cboxInlineTemp" />').hide().insertBefore($(href)[0]).bind(cbox_load+' '+cbox_cleanup, function(){
				$(this).replaceWith($loaded.children());
			});
			resize($(href));
		} else if (settings.iframe) {
			// IFrame element won't be added to the DOM until it is ready to be displayed,
			// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
			resize(" ");
		} else if (settings.html) {
			resize(settings.html);
		} else if (isImage(href)){
			img = new Image();
			img.onload = function(){
				var percent;
				
				img.onload = null;
				
				img.id = 'cboxPhoto';
				
				$(img).css({margin:'auto', border:'none', display:'block', cssFloat:'left'});
				
				if(settings.scalePhotos){
					setResize = function(){
						img.height -= img.height * percent;
						img.width -= img.width * percent;	
					};
					if(settings.mw && img.width > settings.mw){
						percent = (img.width - settings.mw) / img.width;
						setResize();
					}
					if(settings.mh && img.height > settings.mh){
						percent = (img.height - settings.mh) / img.height;
						setResize();
					}
				}
				
				if (settings.h) {
					img.style.marginTop = Math.max(settings.h - img.height,0)/2 + 'px';
				}
				
				resize(img);
				
				if($related.length > 1){
					$(img).css({cursor:'pointer'}).click(cboxPublic.next);
				}
				
				if(isIE){
					img.style.msInterpolationMode='bicubic';
				}
			};
			img.src = href;
		} else {
			$('<div />').appendTo($loadingBay).load(href, function(data, textStatus){
				if(textStatus === "success"){
					resize(this);
				} else {
					resize($("<p>Request unsuccessful.</p>"));
				}
			});
		}
	};

	// Navigates to the next page/image in a set.
	cboxPublic.next = function () {
		if(!active){
			index = index < $related.length-1 ? index+1 : 0;
			cboxPublic.load();
		}
	};
	
	cboxPublic.prev = function () {
		if(!active){
			index = index > 0 ? index-1 : $related.length-1;
			cboxPublic.load();
		}
	};

	cboxPublic.slideshow = function () {
		var stop, timeOut, className = 'cboxSlideshow_';
		
		$slideshow.bind(cbox_closed, function(){
			$slideshow.unbind();
			clearTimeout(timeOut);
			$cbox.removeClass(className+"off"+" "+className+"on");
		});
		
		function start(){
			$slideshow
			.text(settings.slideshowStop)
			.bind(cbox_complete, function(){
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
			})
			.bind(cbox_load, function(){
				clearTimeout(timeOut);	
			}).one("click", function(){
				stop();
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"off").addClass(className+"on");
		}
		
		stop = function(){
			clearTimeout(timeOut);
			$slideshow
			.text(settings.slideshowStart)
			.unbind(cbox_complete+' '+cbox_load)
			.one("click", function(){
				start();
				timeOut = setTimeout(cboxPublic.next, settings.slideshowSpeed);
				$(this).removeClass(hover);
			});
			$cbox.removeClass(className+"on").addClass(className+"off");
		};
		
		if(settings.slideshow && $related.length>1){
			if(settings.slideshowAuto){
				start();
			} else {
				stop();
			}
		}
	};

	// Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
	cboxPublic.close = function () {
		
		$.event.trigger(cbox_cleanup);
		if (settings.onCleanup) {
			settings.onCleanup.call(element);
		}
		
		open = FALSE;
		$(document).unbind("keydown.cbox_close keydown.cbox_arrows");
		$window.unbind(cbox_resize+' resize.cboxie6 scroll.cboxie6');
		$overlay.css({cursor: 'auto'}).fadeOut('fast');
		
		$cbox
		.stop(TRUE, FALSE)
		.fadeOut('fast', function () {
			$('#colorbox iframe').attr('src', 'about:blank');
			$loaded.remove();
			$cbox.css({'opacity': 1});
			
			try{
				bookmark.focus();
			} catch (er){
				// do nothing
			}
			
			$.event.trigger(cbox_closed);
			if (settings.onClosed) {
				settings.onClosed.call(element);
			}
		});
	};

	// A method for fetching the current element ColorBox is referencing.
	// returns a jQuery object.
	cboxPublic.element = function(){ return $(element); };

	cboxPublic.settings = defaults;

	// Initializes ColorBox when the DOM has loaded
	$(cboxPublic.init);

}(jQuery));

;// Populate invited friends list #######################################################

function invite_friends(sess){
	
	var URL = do_link("site.account_remote", "request=invite_friends&sess=" + sess);
	
	jQuery.extend(jQuery.template.regx, {
		myvartype: /\<\%\=([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\%\>/g
	});
	
	var t = jQuery.template("<div class=\"row on\"><div class=\"check\"><input type=\"checkbox\" name=\"invite[<%=it_name_encoded%>]\" value=\"<%=it_email_encoded%>\" checked=\"checked\" /></div><div class=\"content\"><b><%=it_name%></b><br /><span class=\"hint\"><%=it_email%></span></div></div>", { regx: "myvartype" });

	jQuery.getJSON(URL, function(data){
		
		jQuery.each(data, function(i, v) {
			
			jQuery("#address_container").append(t, {
				it_name_encoded: v.it_name_encoded,
				it_email_encoded: v.it_email_encoded,
				it_name: v.it_name,
				it_email: v.it_email
			});
		});
		
		var inv_check = jQuery("form#user_invite :checkbox[name='check_all']:first");
		
		inv_check.attr("checked", "checked");
		
		jQuery("form#user_invite :checkbox[name^='invite']").each(function(i, v) {
			
			v = jQuery(v);
		
			v.bind("click", function(e){
				jQuery(v.parents().get(1)).toggleClass("on");
			});
			
		});
		
		inv_check.click(function(e){
			
			if (inv_check.attr("checked") == true) {
				jQuery("form#user_invite :checkbox[name^='invite']").attr("checked", "checked");
			}
			else {
				jQuery("form#user_invite :checkbox[name^='invite']").removeAttr("checked");
			}
		});
		
	});
}

var unchecked_emails = 0;

function handle_imported_emails() {
	
	var inv_check = jQuery("form#user_invite :checkbox[name='check_all']:first");
	var cks = jQuery("form#user_invite :checkbox[name^='invite']");
	var rows = jQuery("form#user_invite #address_form .row");
	var email_list = jQuery("form#user_invite #email_list_container li");
		
	// Total number of imported contacts
	inv_check_length = cks.length;
		
	inv_check.click(function(e){
		
		if (inv_check.attr("checked") == true) {
			
			unchecked_emails = 0;
			
			cks.attr("checked", "checked");
			rows.addClass("on");
			
			jQuery("form#user_invite #email_list_container li").show();
		}
		else {
			
			unchecked_emails = cks.length;
			
			cks.removeAttr("checked");
			rows.removeClass("on");
			
			jQuery("form#user_invite #email_list_container li").hide();
		}
		
		// Insert number of contacts
		jQuery("#hint_chk_contacts").text(inv_check_length - unchecked_emails);
		
	});
	
	cks.bind("click", function(e){
		
		var v = jQuery(this);
		
		jQuery(v.parents().get(1)).toggleClass("on");
		
		var str_link = "form#user_invite #email_list_container li[id='" + v.attr("id") + "']";
		var link = jQuery(str_link);
		
		if (v.attr("checked") != true) {
			unchecked_emails ++;
			inv_check.removeAttr("checked");
			
			link.hide();
		}
		else {
			unchecked_emails --;
			
			if (unchecked_emails == 0) {
				inv_check.attr("checked", "checked");
			}
			
			link.show();
		}
		
		// Insert number of contacts
		jQuery("#hint_chk_contacts").text(inv_check_length - unchecked_emails);
	});
	
	rows.find(".content").bind("click", function(e){
		
		var v = jQuery(this);
		v = jQuery(v.parents().get(0)).find(".check input");
		
		jQuery(v.parents().get(1)).toggleClass("on");
		
		var str_link = "form#user_invite #email_list_container li[id='" + v.attr("id") + "']";
		var link = jQuery(str_link);
		
		if (v.attr("checked") != true) {
			
			v.attr("checked", "checked");
			
			unchecked_emails --;
			
			if (unchecked_emails == 0) {
				inv_check.attr("checked", "checked");
			}
			
			link.show();
		}
		else {
			
			v.removeAttr("checked");
			
			unchecked_emails ++;
			
			inv_check.removeAttr("checked");
			
			link.hide();
		}
		
		// Insert number of contacts
		jQuery("#hint_chk_contacts").text(inv_check_length - unchecked_emails);
	});
	
	email_list.bind("click", function(e){
			
		v = jQuery(this);
		
		jQuery("form#user_invite :checkbox[name='invite[" + v.attr("id") + "]']").get(0).click();
		
		v.hide();
		
		e.preventDefault(); e.stopPropagation();
	});
	
	jQuery("#remove_all").bind("click", function(e){
		
		unchecked_emails = cks.length;
		
		inv_check.removeAttr("checked");
			
		cks.removeAttr("checked");
		rows.removeClass("on");
		
		jQuery("form#user_invite #email_list_container li").hide();
		
		e.preventDefault(); e.stopPropagation();
		
		// Insert number of contacts
		jQuery("#hint_chk_contacts").text("0");
	});
	
	jQuery("#friend_show").bind("click", function(e){
		jQuery(this).toggle();
		jQuery("#friend_hide").toggle();
		jQuery("#friends_content").toggle();
		
		e.preventDefault(); e.stopPropagation();
	});
	
	jQuery("#friend_hide").bind("click", function(e){
		jQuery(this).toggle();
		jQuery("#friend_show").toggle();
		jQuery("#friends_content").toggle();
		
		e.preventDefault(); e.stopPropagation();
	});
	
	jQuery("#letter_block a").bind("click", function(e){
		
		var v = jQuery(this);
		
		jQuery("#address_container").scrollTo(jQuery(v.attr("href")), {duration: 250});
		
		e.preventDefault(); e.stopPropagation();
	});
}

function assign_link_help() {
	
	jQuery(".import_form a.link_help_all").bind("click", function(e){
		
		jQuery("#faq_import").toggle();
		
		e.preventDefault(); e.stopPropagation();
	});
	
	jQuery(".import_form a.link_help").bind("click", function(e){
		
		var v = jQuery(this);
		
		jQuery(".import_form span#" + v.attr("rel")).toggle();
		e.preventDefault(); e.stopPropagation();
	});
}

function assign_link_skip() {
	
	jQuery("#discover_form a.close").bind("click", function(e){
		
		var URL = do_link("site.account_remote", "request=skip_friend&item_key=" + jQuery(this).attr("rel"));
		
		jQuery(this).hide();
		
		var parent = jQuery(this).parents().get(0);
		var container = jQuery(this).parents().get(1);
		
		jQuery(parent).find("a.invite").hide();
		jQuery(parent).find("a.name").hide();
		
		jQuery(parent).hide("fast");
		
		/*var childs = jQuery(container).find("div.row:visible");
		
		if (childs.length == 0) {
			jQuery(container).hide("fast");
		}*/
		
		jQuery.getScript(URL, function(){
			
		});
		
		e.preventDefault(); e.stopPropagation();
	});
}

function assign_link_invite(URL) {
	
	jQuery("#discover_form a.invite").bind("click", function(e){
		
		var INVITE_URL = URL;
		
		INVITE_URL = INVITE_URL.replace(/#FRIEND#/, jQuery(this).attr("rel"))
		
		jQuery(this).hide();
		
		var parent = jQuery(this).parents().get(2);
		var container = jQuery(this).parents().get(3);
		
		jQuery(parent).find("a.invite").hide();
		jQuery(parent).find("a.name").hide();
		
		jQuery(parent).hide("fast");
		
		/*var childs = jQuery(container).find("div.row:visible");
		
		if (childs.length == 0) {
			jQuery(container).hide("fast");
		}*/
		
		jQuery.getScript(INVITE_URL, function(){
			
		});
		
		e.preventDefault(); e.stopPropagation();
	});
}

function assign_link_more() {
	
	jQuery("#row_more a").bind("click", function(e){
		
		var parent = jQuery(this).parents().get(0);
		
		jQuery(parent).hide();
		jQuery("#hidden_people").show();
		
		e.preventDefault(); e.stopPropagation();
	});
}

function assign_link_provider() {
	
	jQuery(":radio[name='from']").bind("check", function(e){
		jQuery("#addr").text("@" + jQuery(this).attr("rel") + ".com");
	});
	
	jQuery("img.img_provider").bind("click", function(e){
		
		var v = jQuery(this);
		
		jQuery("#from_" + v.attr("rel")).trigger("click");
		
		return false;
	});
}

function jform_set_radio(radio_name, form_id, selected_value){
	// $("form#" + form_id + " :radio[name='" + radio_name + "'][value='" + selected_value + "']:first").attr("checked", "checked");
	
	var this_radio = jQuery("form#" + form_id + " :radio[name='" + radio_name + "'][value='" + selected_value + "']:first");
	
	if (jQuery(this_radio).length > 0) {
		jQuery(this_radio).click();
	}
}

// ################################################################################
