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

/*************/
;// Global vars #######################################################

// Thumbs global vars
var thumbs_timer;
var thumb_instance;

// Site init #######################################################
$(function(){
	
	// Init actions for top site navigation
	top_nav_actions();
	// Init actions for top menu (for logged in users)
	top_menu_actions();
	// Init actions for top search
	top_search();
	
	$(".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();
	
	// 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);
	}
});

// Show selected tab
function jBoxShow(tab, is_click){
	// Select tab menu and current tab
	var ul = jQuery(tab).parents("ul").get(0);
	var li = jQuery(tab).parents("li").get(0);
	var li = jQuery(li);
	
	// Current tab is visible
	if (li.is(":visible") === true) {
		var li_rel = li.attr("rel");
		
		// We have a before show callback function
		if (typeof(beforeBoxShow) == "function"){
			if (!beforeBoxShow(li_rel.substr(2), is_click)) {
				return false;
			}
		}
		
		// Hide boxes for all tabs and remove 'on' class
		jQuery(ul).find("li").each(function(i, v) {
			v = jQuery(v);
			v.removeClass("on");
			jQuery("#" + v.attr("rel")).hide();
		});
		
		// Add 'on' class only for current tab
		li.addClass("on");
		// Show box related to current tab
		jQuery("#" + li_rel).show();
		
		// Change url hash
		if (draw_hash) {
			location.hash = li_rel.substr(2);
		}
		
		draw_hash = true;
		
		// We have an after show callback function
		if (typeof(afterBoxShow) == "function"){
			afterBoxShow(li_rel.substr(2), is_click);
		}
	}
}

function jAutoBox(menu){
	// Select tab related to hash
	var link = jQuery("#" + menu + " li#m_" + location.hash.substr(1) + ":visible a");
	
	// We have a tab
	if (link.length > 0) {
		// Show box related to selected tab
		jBoxShow(link, 0);
	}
	// Get first tab with on class
	else {
		// Select first visible tab with 'on' class
		var on_link = jQuery("#" + menu + " li.on:visible:first a");
		
		if (on_link.length > 0) {
			// Show box related to selected tab
			jBoxShow(on_link, 0);
		}
		// Get first visible link
		else {
			// Select first visible tab
			var new_link = jQuery("#" + menu + " li:visible:first a");
			
			// We have a link
			if (new_link.length > 0) {
				// Show box related to selected tab
				jBoxShow(new_link, 0);
			}
		}
	}
	
	// Bind events
	jQuery("#" + menu + " li a").click(function(e){
		jBoxShow(this, 1);
		return false;
	});
}

// Accordion tabs
function jAutoTabs(menu){
	// Select tabs and boxes
	var tabs = jQuery("dt", "#" + menu + ":visible");
	var boxes = jQuery("dd", "#" + menu);
	// Select tab related to hash
	var tab = tabs.filter("#t_" + location.hash.substr(1));
	var ignore_hash = false;
	
	// Bind tab actions
	tabs.click(function(e){
		var jThis = jQuery(this);
		// Select current box
		var jBox = jThis.next("dd");
		// Box is hidden
		if (jBox.is(":not(:visible)")) {
			if (!ignore_hash) {
				// Change url hash
				location.hash = jThis.attr("id").substr(2);
			}
			
			ignore_hash = false;
			
			jThis.addClass("header_tab11");
			tabs.not(jThis).removeClass("header_tab11");
			tabs.find("em").removeClass("i_arr_open");
			jThis.find("em").addClass("i_arr_open");
			
			// SlideToogle boxes
			/*boxes.slideUp(300);
			jBox.slideDown(300);*/
			boxes.hide();
			jBox.show();
		}
	});
	
	ignore_hash = true;
	// Simulate click on the first tab
	if (tab.length > 0) {
		tab.click();
	}
	else {
		tabs.filter(":eq(0)").click();
	}
}

function jActiveRow(row){
	
	// Bind events
	jQuery("." + row).mouseover(function(e){
		jQuery(this).attr("bg", jQuery(this).css("background-color"));
		jQuery(this).css({backgroundColor: "#FEFFDB"});
	});
	
	jQuery("." + row).mouseout(function(e){
		jQuery(this).css({backgroundColor: jQuery(this).attr("bg")});
	});
}

// Updates messages number in real time
function check_new_messages(){
	
	// Get new messages from remote
	jQuery.getScript(do_link("site.account_remote", "request=check_new_messages"), function(){
		
		// Change message counter
		update_new_msg(count_new_messages);
		// Show new message bell
		show_bell(count_new_messages);
		
		// Recall function after 15 sec
		setTimeout("check_new_messages();", 15000);
	});
}

// Clean tags
function clean_tags(str){
	// Trim extra spaces
	str = str.replace(/\s+/g, " ");
	// Remove some special characters
	str = str.replace(/(\~)|(\`)|(\!)|(\@)|(\#)|(\$)|(\%)|(\^)|(\&)|(\*)|(\()|(\))|(\=)|(\+)|(\{)|(\[)|(\})|(\])|(\:)|(\;)|(\')|(\")|(\<)|(\>)|(\.)|(\?)|(\/)|(\\)/g, "");
	// Trim extra spaces
	str = str.replace(/\s+/g, " ");
	
	return str;
}

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

// Page scripts ####################################################################################

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

// Handle top search actions
function top_search(){
	// Select search input
	var input = jQuery("#top_search_input");
	// Default search text
	var txt = "Cauta pe site";
	// 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", "#AAAAAA");
	}
	else {
		input.css("color", "#666666");
	}
	
	// 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", "#666666");
		}
	}).blur(function(e){
		// Add default text on blur if input is empty
		if (jQuery.trim(input.val()) == "") {
			input.val(txt);
			input.css("color", "#AAAAAA");
		}
	});
	
	// 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;
		}
	});
}

// Change movie thumbs on mouseOver

// Change background position of the thumb
function change_thumb(_width){
	// Select current thumb
	var jThis = jQuery(thumb_instance);
	// Get old background position
	var poz = jThis.css("backgroundPosition").split(" ");
	// Calc new background position
	var poz_x = poz[0].toString().substr(0, poz[0].toString().length - 2);
	var new_poz_x = parseInt(poz_x) - 137;
	
	if (new_poz_x <= ((-1) * parseInt(_width))) {
		new_poz_x = 0;
	}
	// Move the background to the new position
	jThis.css({backgroundPosition: new_poz_x + "px " + poz[1]});
}

// Action for the first thumb changed
function first_thumb(){
	// Reset thumb rotation interval
	clearInterval(thumbs_timer);
	// Get original thumb
	var static_src = thumb_instance.metadata().static_src;
	// Get composed thumbs
	var comp_img = static_src.substr(0, static_src.length - 4) + "_merge.jpg";
	// Change thumb src to spacer (in order to see the background image)
	jQuery(thumb_instance).attr('src', PATH_STATIC + '/img/spacer.gif');
	// Preload the background
	jQuery("<img src=\"" + comp_img + "\" />").load(function(e){
		jQuery(this).hide().appendTo("body");
		thumbs_timer = setInterval("change_thumb(" + jQuery(this).width() + ");", 700);
		jQuery(this).remove();
	});
}

// Add thumb actions
function init_change_thumb(){
	// Redirect with autoplay when you click on the play icon
	jQuery("img.i_video_fade").click(function(e){
		var new_href = jQuery(this).closest(".content_img").find("a:eq(0)").attr("href");
		if (new_href.length > 0) {
			document.location = new_href + "#autoplay";
		}
	});
	
	// Begin to change thumbs
	jQuery("p.content_img").hover(function(e){
		var jThis = jQuery(this);
		var jImg = jThis.find("img.t_content");
		var static_src = jImg.metadata().static_src;
		var comp_img = static_src.substr(0, static_src.length - 4) + "_merge.jpg";
		// Check if the content is video
		if (jThis.find(".content_type").length > 0) {
			thumb_instance = jImg;
			// Show stronger play icon on mouseOver
			jThis.find(".i_video_fade").toggleClass("i_video_fade").toggleClass("i_video");
			jImg.removeAttr("alt");
			jThis.find("a").removeAttr("title");
			// Change background image
			jImg.css({
				backgroundImage: "url('" + comp_img + "')", 
				backgroundPosition: "0px 1px",
				backgroundRepeat: "no-repeat"
			});
			
			thumbs_timer = setTimeout("first_thumb();", 300);
		}
	}, function(e){
		var jThis = jQuery(this);
		var jImg = jThis.find("img.t_content");
		var static_src = jImg.metadata().static_src;
		// Show stronger play icon on mouseOver
		jThis.find(".i_video").toggleClass("i_video").toggleClass("i_video_fade");
		
		clearInterval(thumbs_timer);
		jImg.attr("src", static_src);
	});
	
	// Add tooltip to the play icon
	jQuery(".content_type").tooltip({
		bodyHandler: function() { 
			return "Play";
		}, 
		showURL: false 
	});
}

jQuery(".small_tabs").each(function(i, v){
	var tabs = jQuery("> li", this);
	var boxes = jQuery(".small_tabs_box", jQuery(this).next("div"));
	tabs.click(function(e){
		tabs.removeClass("on");
		jQuery(this).addClass("on");
		boxes.hide().filter(":eq(" + tabs.index(this) + ")").show();
		
		return false;
	}).filter(":eq(0)").triggerHandler("click");
});

if (jQuery(".posts_auto_refresh:eq(0)").length > 0) {
	setInterval(function(){
		var URL = do_link("site.group_remote", "request=get_latest_posts&group_key=" + jQuery(".posts_auto_refresh:eq(0)").metadata().group_key + "&latest_key=" + jQuery(".posts_auto_refresh:eq(0)").metadata().latest_key);
		jQuery.get(URL, function(data){
			var latest_key = jQuery(data).metadata().latest_key;
			if (latest_key > 0) {
				jQuery(".posts_auto_refresh:eq(0)").metadata().latest_key = latest_key;
			}
			jQuery(".posts_auto_refresh:eq(0)").prepend(jQuery(data).find("> li"));
		});
		
		jQuery(".posts_auto_refresh:eq(0) > li:gt(29)").remove();
	}, 30000);
}
;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(a){a.fn.bgIframe=a.fn.bgiframe=function(c){if(a.browser.msie&&/6.0/.test(navigator.userAgent)){c=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},c||{});var d=function(e){return e&&e.constructor==Number?e+"px":e},b='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+c.src+'"style="display:block;position:absolute;z-index:-1;'+(c.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(c.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":d(c.top))+";left:"+(c.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":d(c.left))+";width:"+(c.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":d(c.width))+";height:"+(c.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":d(c.height))+';"/>';return this.each(function(){if(a("> iframe.bgiframe",this).length==0){this.insertBefore(document.createElement(b),this.firstChild)}})}return this}})(jQuery);
;/*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 *
 * Version: 3.0.2
 * 
 * Requires: 1.2.2+
 */

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
	setup: function() {
		if ( this.addEventListener )
			for ( var i=types.length; i; )
				this.addEventListener( types[--i], handler, false );
		else
			this.onmousewheel = handler;
	},
	
	teardown: function() {
		if ( this.removeEventListener )
			for ( var i=types.length; i; )
				this.removeEventListener( types[--i], handler, false );
		else
			this.onmousewheel = null;
	}
};

$.fn.extend({
	mousewheel: function(fn) {
		return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
	},
	
	unmousewheel: function(fn) {
		return this.unbind("mousewheel", fn);
	}
});


function handler(event) {
	var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
	
	event = $.event.fix(event || window.event);
	event.type = "mousewheel";
	
	if ( event.wheelDelta ) delta = event.wheelDelta/120;
	if ( event.detail     ) delta = -event.detail/3;
	
	// Add events and delta to the front of the arguments
	args.unshift(event, delta);

	return $.event.handle.apply(this, args);
}

})(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,{}))
;// Simple Set Clipboard System
// Author: Joseph Huckaby

var ZeroClipboard = {
	
	version: "1.0.4",
	clients: {}, // registered upload clients on page, indexed by id
	moviePath: 'ZeroClipboard.swf', // URL to movie
	nextId: 1, // ID of next movie
	
	$: function(thingy) {
		// simple DOM lookup utility function
		if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
		if (!thingy.addClass) {
			// extend element with a few useful methods
			thingy.hide = function() { this.style.display = 'none'; };
			thingy.show = function() { this.style.display = ''; };
			thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
			thingy.removeClass = function(name) {
				this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
			};
			thingy.hasClass = function(name) {
				return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
			}
		}
		return thingy;
	},
	
	setMoviePath: function(path) {
		// set path to ZeroClipboard.swf
		this.moviePath = path;
	},
	
	dispatch: function(id, eventName, args) {
		// receive event from flash movie, send to client		
		var client = this.clients[id];
		if (client) {
			client.receiveEvent(eventName, args);
		}
	},
	
	register: function(id, client) {
		// register new client to receive events
		this.clients[id] = client;
	},
	
	getDOMObjectPosition: function(obj) {
		// get absolute coordinates for dom element
		var info = {
			left: 0, 
			top: 0, 
			width: obj.width ? obj.width : obj.offsetWidth, 
			height: obj.height ? obj.height : obj.offsetHeight
		};

		while (obj) {
			info.left += obj.offsetLeft;
			info.top += obj.offsetTop;
			obj = obj.offsetParent;
		}

		return info;
	},
	
	Client: function(elem) {
		// constructor for new simple upload client
		this.handlers = {};
		
		// unique ID
		this.id = ZeroClipboard.nextId++;
		this.movieId = 'ZeroClipboardMovie_' + this.id;
		
		// register client with singleton to receive flash events
		ZeroClipboard.register(this.id, this);
		
		// create movie
		if (elem) this.glue(elem);
	}
};

ZeroClipboard.Client.prototype = {
	
	id: 0, // unique ID for us
	ready: false, // whether movie is ready to receive events or not
	movie: null, // reference to movie object
	clipText: '', // text to copy to clipboard
	handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
	cssEffects: true, // enable CSS mouse effects on dom container
	handlers: null, // user event handlers
	
	glue: function(elem) {
		// glue to DOM element
		// elem can be ID or actual DOM element object
		this.domElement = ZeroClipboard.$(elem);
		
		// float just above object, or zIndex 99 if dom element isn't set
		var zIndex = 99;
		if (this.domElement.style.zIndex) {
			zIndex = parseInt(this.domElement.style.zIndex) + 1;
		}
		
		// find X/Y position of domElement
		var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
		
		// create floating DIV above element
		this.div = document.createElement('div');
		var style = this.div.style;
		style.position = 'absolute';
		style.left = '' + box.left + 'px';
		style.top = '' + box.top + 'px';
		style.width = '' + box.width + 'px';
		style.height = '' + box.height + 'px';
		style.zIndex = zIndex;
		
		// style.backgroundColor = '#f00'; // debug
		
		var body = document.getElementsByTagName('body')[0];
		body.appendChild(this.div);
		
		this.div.innerHTML = this.getHTML( box.width, box.height );
	},
	
	getHTML: function(width, height) {
		// return HTML for movie
		var html = '';
		var flashvars = 'id=' + this.id + 
			'&width=' + width + 
			'&height=' + height;
			
		if (navigator.userAgent.match(/MSIE/)) {
			// IE gets an OBJECT tag
			var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
			html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
		}
		else {
			// all other browsers get an EMBED tag
			html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
		}
		return html;
	},
	
	hide: function() {
		// temporarily hide floater offscreen
		if (this.div) {
			this.div.style.left = '-2000px';
		}
	},
	
	show: function() {
		// show ourselves after a call to hide()
		this.reposition();
	},
	
	destroy: function() {
		// destroy control and floater
		if (this.domElement && this.div) {
			this.hide();
			this.div.innerHTML = '';
			
			var body = document.getElementsByTagName('body')[0];
			try { body.removeChild( this.div ); } catch(e) {;}
			
			this.domElement = null;
			this.div = null;
		}
	},
	
	reposition: function(elem) {
		// reposition our floating div, optionally to new container
		// warning: container CANNOT change size, only position
		if (elem) {
			this.domElement = ZeroClipboard.$(elem);
			if (!this.domElement) this.hide();
		}
		
		if (this.domElement && this.div) {
			var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
			var style = this.div.style;
			style.left = '' + box.left + 'px';
			style.top = '' + box.top + 'px';
		}
	},
	
	setText: function(newText) {
		// set text to be copied to clipboard
		this.clipText = newText;
		if (this.ready) this.movie.setText(newText);
	},
	
	addEventListener: function(eventName, func) {
		// add user event listener for event
		// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
		if (!this.handlers[eventName]) this.handlers[eventName] = [];
		this.handlers[eventName].push(func);
	},
	
	setHandCursor: function(enabled) {
		// enable hand cursor (true), or default arrow cursor (false)
		this.handCursorEnabled = enabled;
		if (this.ready) this.movie.setHandCursor(enabled);
	},
	
	setCSSEffects: function(enabled) {
		// enable or disable CSS effects on DOM container
		this.cssEffects = !!enabled;
	},
	
	receiveEvent: function(eventName, args) {
		// receive event from flash
		eventName = eventName.toString().toLowerCase().replace(/^on/, '');
				
		// special behavior for certain events
		switch (eventName) {
			case 'load':
				// movie claims it is ready, but in IE this isn't always the case...
				// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
				this.movie = document.getElementById(this.movieId);
				if (!this.movie) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 1 );
					return;
				}
				
				// firefox on pc needs a "kick" in order to set these in certain cases
				if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
					var self = this;
					setTimeout( function() { self.receiveEvent('load', null); }, 100 );
					this.ready = true;
					return;
				}
				
				this.ready = true;
				this.movie.setText( this.clipText );
				this.movie.setHandCursor( this.handCursorEnabled );
				break;
			
			case 'mouseover':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('hover');
					if (this.recoverActive) this.domElement.addClass('active');
				}
				break;
			
			case 'mouseout':
				if (this.domElement && this.cssEffects) {
					this.recoverActive = false;
					if (this.domElement.hasClass('active')) {
						this.domElement.removeClass('active');
						this.recoverActive = true;
					}
					this.domElement.removeClass('hover');
				}
				break;
			
			case 'mousedown':
				if (this.domElement && this.cssEffects) {
					this.domElement.addClass('active');
				}
				break;
			
			case 'mouseup':
				if (this.domElement && this.cssEffects) {
					this.domElement.removeClass('active');
					this.recoverActive = false;
				}
				break;
		} // switch eventName
		
		if (this.handlers[eventName]) {
			for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
				var func = this.handlers[eventName][idx];
			
				if (typeof(func) == 'function') {
					// actual function reference
					func(this, args);
				}
				else if ((typeof(func) == 'object') && (func.length == 2)) {
					// PHP style object + method, i.e. [myObject, 'myMethod']
					func[0][ func[1] ](this, args);
				}
				else if (typeof(func) == 'string') {
					// name of function
					window[func](this, args);
				}
			} // foreach event handler defined
		} // user defined handler for event
	}
	
};

;(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);

;jQuery.ui||(function(c){var i=c.fn.remove,d=c.browser.mozilla&&(parseFloat(c.browser.version)<1.9);c.ui={version:"1.7.2",plugin:{add:function(k,l,n){var m=c.ui[k].prototype;for(var j in n){m.plugins[j]=m.plugins[j]||[];m.plugins[j].push([l,n[j]])}},call:function(j,l,k){var n=j.plugins[l];if(!n||!j.element[0].parentNode){return}for(var m=0;m<n.length;m++){if(j.options[n[m][0]]){n[m][1].apply(j.element,k)}}}},contains:function(k,j){return document.compareDocumentPosition?k.compareDocumentPosition(j)&16:k!==j&&k.contains(j)},hasScroll:function(m,k){if(c(m).css("overflow")=="hidden"){return false}var j=(k&&k=="left")?"scrollLeft":"scrollTop",l=false;if(m[j]>0){return true}m[j]=1;l=(m[j]>0);m[j]=0;return l},isOverAxis:function(k,j,l){return(k>j)&&(k<(j+l))},isOver:function(o,k,n,m,j,l){return c.ui.isOverAxis(o,n,j)&&c.ui.isOverAxis(k,m,l)},keyCode:{BACKSPACE:8,CAPS_LOCK:20,COMMA:188,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38}};if(d){var f=c.attr,e=c.fn.removeAttr,h="http://www.w3.org/2005/07/aaa",a=/^aria-/,b=/^wairole:/;c.attr=function(k,j,l){var m=l!==undefined;return(j=="role"?(m?f.call(this,k,j,"wairole:"+l):(f.apply(this,arguments)||"").replace(b,"")):(a.test(j)?(m?k.setAttributeNS(h,j.replace(a,"aaa:"),l):f.call(this,k,j.replace(a,"aaa:"))):f.apply(this,arguments)))};c.fn.removeAttr=function(j){return(a.test(j)?this.each(function(){this.removeAttributeNS(h,j.replace(a,""))}):e.call(this,j))}}c.fn.extend({remove:function(){c("*",this).add(this).each(function(){c(this).triggerHandler("remove")});return i.apply(this,arguments)},enableSelection:function(){return this.attr("unselectable","off").css("MozUserSelect","").unbind("selectstart.ui")},disableSelection:function(){return this.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return false})},scrollParent:function(){var j;if((c.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){j=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(c.curCSS(this,"position",1))&&(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}else{j=this.parents().filter(function(){return(/(auto|scroll)/).test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!j.length?c(document):j}});c.extend(c.expr[":"],{data:function(l,k,j){return !!c.data(l,j[3])},focusable:function(k){var l=k.nodeName.toLowerCase(),j=c.attr(k,"tabindex");return(/input|select|textarea|button|object/.test(l)?!k.disabled:"a"==l||"area"==l?k.href||!isNaN(j):!isNaN(j))&&!c(k)["area"==l?"parents":"closest"](":hidden").length},tabbable:function(k){var j=c.attr(k,"tabindex");return(isNaN(j)||j>=0)&&c(k).is(":focusable")}});function g(m,n,o,l){function k(q){var p=c[m][n][q]||[];return(typeof p=="string"?p.split(/,?\s+/):p)}var j=k("getter");if(l.length==1&&typeof l[0]=="string"){j=j.concat(k("getterSetter"))}return(c.inArray(o,j)!=-1)}c.widget=function(k,j){var l=k.split(".")[0];k=k.split(".")[1];c.fn[k]=function(p){var n=(typeof p=="string"),o=Array.prototype.slice.call(arguments,1);if(n&&p.substring(0,1)=="_"){return this}if(n&&g(l,k,p,o)){var m=c.data(this[0],k);return(m?m[p].apply(m,o):undefined)}return this.each(function(){var q=c.data(this,k);(!q&&!n&&c.data(this,k,new c[l][k](this,p))._init());(q&&n&&c.isFunction(q[p])&&q[p].apply(q,o))})};c[l]=c[l]||{};c[l][k]=function(o,n){var m=this;this.namespace=l;this.widgetName=k;this.widgetEventPrefix=c[l][k].eventPrefix||k;this.widgetBaseClass=l+"-"+k;this.options=c.extend({},c.widget.defaults,c[l][k].defaults,c.metadata&&c.metadata.get(o)[k],n);this.element=c(o).bind("setData."+k,function(q,p,r){if(q.target==o){return m._setData(p,r)}}).bind("getData."+k,function(q,p){if(q.target==o){return m._getData(p)}}).bind("remove",function(){return m.destroy()})};c[l][k].prototype=c.extend({},c.widget.prototype,j);c[l][k].getterSetter="option"};c.widget.prototype={_init:function(){},destroy:function(){this.element.removeData(this.widgetName).removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").removeAttr("aria-disabled")},option:function(l,m){var k=l,j=this;if(typeof l=="string"){if(m===undefined){return this._getData(l)}k={};k[l]=m}c.each(k,function(n,o){j._setData(n,o)})},_getData:function(j){return this.options[j]},_setData:function(j,k){this.options[j]=k;if(j=="disabled"){this.element[k?"addClass":"removeClass"](this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled").attr("aria-disabled",k)}},enable:function(){this._setData("disabled",false)},disable:function(){this._setData("disabled",true)},_trigger:function(l,m,n){var p=this.options[l],j=(l==this.widgetEventPrefix?l:this.widgetEventPrefix+l);m=c.Event(m);m.type=j;if(m.originalEvent){for(var k=c.event.props.length,o;k;){o=c.event.props[--k];m[o]=m.originalEvent[o]}}this.element.trigger(m,n);return !(c.isFunction(p)&&p.call(this.element[0],m,n)===false||m.isDefaultPrevented())}};c.widget.defaults={disabled:false};c.ui.mouse={_mouseInit:function(){var j=this;this.element.bind("mousedown."+this.widgetName,function(k){return j._mouseDown(k)}).bind("click."+this.widgetName,function(k){if(j._preventClickEvent){j._preventClickEvent=false;k.stopImmediatePropagation();return false}});if(c.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName);(c.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},_mouseDown:function(l){l.originalEvent=l.originalEvent||{};if(l.originalEvent.mouseHandled){return}(this._mouseStarted&&this._mouseUp(l));this._mouseDownEvent=l;var k=this,m=(l.which==1),j=(typeof this.options.cancel=="string"?c(l.target).parents().add(l.target).filter(this.options.cancel).length:false);if(!m||j||!this._mouseCapture(l)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){k.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(l)&&this._mouseDelayMet(l)){this._mouseStarted=(this._mouseStart(l)!==false);if(!this._mouseStarted){l.preventDefault();return true}}this._mouseMoveDelegate=function(n){return k._mouseMove(n)};this._mouseUpDelegate=function(n){return k._mouseUp(n)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);(c.browser.safari||l.preventDefault());l.originalEvent.mouseHandled=true;return true},_mouseMove:function(j){if(c.browser.msie&&!j.button){return this._mouseUp(j)}if(this._mouseStarted){this._mouseDrag(j);return j.preventDefault()}if(this._mouseDistanceMet(j)&&this._mouseDelayMet(j)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,j)!==false);(this._mouseStarted?this._mouseDrag(j):this._mouseUp(j))}return !this._mouseStarted},_mouseUp:function(j){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=(j.target==this._mouseDownEvent.target);this._mouseStop(j)}return false},_mouseDistanceMet:function(j){return(Math.max(Math.abs(this._mouseDownEvent.pageX-j.pageX),Math.abs(this._mouseDownEvent.pageY-j.pageY))>=this.options.distance)},_mouseDelayMet:function(j){return this.mouseDelayMet},_mouseStart:function(j){},_mouseDrag:function(j){},_mouseStop:function(j){},_mouseCapture:function(j){return true}};c.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);;
(function(a){a.widget("ui.draggable",a.extend({},a.ui.mouse,{_init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.addClasses&&this.element.addClass("ui-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this._mouseInit()},destroy:function(){if(!this.element.data("draggable")){return}this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy()},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")){return false}this.handle=this._getHandle(b);if(!this.handle){return false}return true},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b);this._cacheHelperProportions();if(a.ui.ddmanager){a.ui.ddmanager.current=this}this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(b);this.originalPageX=b.pageX;this.originalPageY=b.pageY;if(c.cursorAt){this._adjustOffsetFromHelper(c.cursorAt)}if(c.containment){this._setContainment()}this._trigger("start",b);this._cacheHelperProportions();if(a.ui.ddmanager&&!c.dropBehaviour){a.ui.ddmanager.prepareOffsets(this,b)}this.helper.addClass("ui-draggable-dragging");this._mouseDrag(b,true);return true},_mouseDrag:function(b,d){this.position=this._generatePosition(b);this.positionAbs=this._convertPositionTo("absolute");if(!d){var c=this._uiHash();this._trigger("drag",b,c);this.position=c.position}if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(a.ui.ddmanager){a.ui.ddmanager.drag(this,b)}return false},_mouseStop:function(c){var d=false;if(a.ui.ddmanager&&!this.options.dropBehaviour){d=a.ui.ddmanager.drop(this,c)}if(this.dropped){d=this.dropped;this.dropped=false}if((this.options.revert=="invalid"&&!d)||(this.options.revert=="valid"&&d)||this.options.revert===true||(a.isFunction(this.options.revert)&&this.options.revert.call(this.element,d))){var b=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){b._trigger("stop",c);b._clear()})}else{this._trigger("stop",c);this._clear()}return false},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?true:false;a(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==b.target){c=true}});return c},_createHelper:function(c){var d=this.options;var b=a.isFunction(d.helper)?a(d.helper.apply(this.element[0],[c])):(d.helper=="clone"?this.element.clone():this.element);if(!b.parents("body").length){b.appendTo((d.appendTo=="parent"?this.element[0].parentNode:d.appendTo))}if(b[0]!=this.element[0]&&!(/(fixed|absolute)/).test(b.css("position"))){b.css("position","absolute")}return b},_adjustOffsetFromHelper:function(b){if(b.left!=undefined){this.offset.click.left=b.left+this.margins.left}if(b.right!=undefined){this.offset.click.left=this.helperProportions.width-b.right+this.margins.left}if(b.top!=undefined){this.offset.click.top=b.top+this.margins.top}if(b.bottom!=undefined){this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top}},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])){b.left+=this.scrollParent.scrollLeft();b.top+=this.scrollParent.scrollTop()}if((this.offsetParent[0]==document.body)||(this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)){b={top:0,left:0}}return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var b=this.element.position();return{top:b.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:b.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else{return{top:0,left:0}}},_cacheMargins:function(){this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e=this.options;if(e.containment=="parent"){e.containment=this.helper[0].parentNode}if(e.containment=="document"||e.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(e.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(e.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]}if(!(/^(document|window|parent)$/).test(e.containment)&&e.containment.constructor!=Array){var c=a(e.containment)[0];if(!c){return}var d=a(e.containment).offset();var b=(a(c).css("overflow")!="hidden");this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(b?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(b?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}else{if(e.containment.constructor==Array){this.containment=e.containment}}},_convertPositionTo:function(f,h){if(!h){h=this.position}var c=f=="absolute"?1:-1;var e=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=(/(html|body)/i).test(b[0].tagName);return{top:(h.top+this.offset.relative.top*c+this.offset.parent.top*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(g?0:b.scrollTop()))*c)),left:(h.left+this.offset.relative.left*c+this.offset.parent.left*c-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:b.scrollLeft())*c))}},_generatePosition:function(e){var h=this.options,b=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,i=(/(html|body)/i).test(b[0].tagName);if(this.cssPosition=="relative"&&!(this.scrollParent[0]!=document&&this.scrollParent[0]!=this.offsetParent[0])){this.offset.relative=this._getRelativeOffset()}var d=e.pageX;var c=e.pageY;if(this.originalPosition){if(this.containment){if(e.pageX-this.offset.click.left<this.containment[0]){d=this.containment[0]+this.offset.click.left}if(e.pageY-this.offset.click.top<this.containment[1]){c=this.containment[1]+this.offset.click.top}if(e.pageX-this.offset.click.left>this.containment[2]){d=this.containment[2]+this.offset.click.left}if(e.pageY-this.offset.click.top>this.containment[3]){c=this.containment[3]+this.offset.click.top}}if(h.grid){var g=this.originalPageY+Math.round((c-this.originalPageY)/h.grid[1])*h.grid[1];c=this.containment?(!(g-this.offset.click.top<this.containment[1]||g-this.offset.click.top>this.containment[3])?g:(!(g-this.offset.click.top<this.containment[1])?g-h.grid[1]:g+h.grid[1])):g;var f=this.originalPageX+Math.round((d-this.originalPageX)/h.grid[0])*h.grid[0];d=this.containment?(!(f-this.offset.click.left<this.containment[0]||f-this.offset.click.left>this.containment[2])?f:(!(f-this.offset.click.left<this.containment[0])?f-h.grid[0]:f+h.grid[0])):f}}return{top:(c-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():(i?0:b.scrollTop())))),left:(d-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():i?0:b.scrollLeft())))}},_clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.helper[0]!=this.element[0]&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},_trigger:function(b,c,d){d=d||this._uiHash();a.ui.plugin.call(this,b,[c,d]);if(b=="drag"){this.positionAbs=this._convertPositionTo("absolute")}return a.widget.prototype._trigger.call(this,b,c,d)},plugins:{},_uiHash:function(b){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,offset:this.positionAbs}}}));a.extend(a.ui.draggable,{version:"1.7.2",eventPrefix:"drag",defaults:{addClasses:true,appendTo:"parent",axis:false,cancel:":input,option",connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,delay:0,distance:1,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false}});a.ui.plugin.add("draggable","connectToSortable",{start:function(c,e){var d=a(this).data("draggable"),f=d.options,b=a.extend({},e,{item:d.element});d.sortables=[];a(f.connectToSortable).each(function(){var g=a.data(this,"sortable");if(g&&!g.options.disabled){d.sortables.push({instance:g,shouldRevert:g.options.revert});g._refreshItems();g._trigger("activate",c,b)}})},stop:function(c,e){var d=a(this).data("draggable"),b=a.extend({},e,{item:d.element});a.each(d.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;d.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance._mouseStop(c);this.instance.options.helper=this.instance.options._helper;if(d.options.helper=="original"){this.instance.currentItem.css({top:"auto",left:"auto"})}}else{this.instance.cancelHelperRemoval=false;this.instance._trigger("deactivate",c,b)}})},drag:function(c,f){var e=a(this).data("draggable"),b=this;var d=function(i){var n=this.offset.click.top,m=this.offset.click.left;var g=this.positionAbs.top,k=this.positionAbs.left;var j=i.height,l=i.width;var p=i.top,h=i.left;return a.ui.isOver(g+n,k+m,p,h,j,l)};a.each(e.sortables,function(g){this.instance.positionAbs=e.positionAbs;this.instance.helperProportions=e.helperProportions;this.instance.offset.click=e.offset.click;if(this.instance._intersectsWith(this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=a(b).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return f.helper[0]};c.target=this.instance.currentItem[0];this.instance._mouseCapture(c,true);this.instance._mouseStart(c,true,true);this.instance.offset.click.top=e.offset.click.top;this.instance.offset.click.left=e.offset.click.left;this.instance.offset.parent.left-=e.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=e.offset.parent.top-this.instance.offset.parent.top;e._trigger("toSortable",c);e.dropped=this.instance.element;e.currentItem=e.element;this.instance.fromOutside=e}if(this.instance.currentItem){this.instance._mouseDrag(c)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance._trigger("out",c,this.instance._uiHash(this.instance));this.instance._mouseStop(c,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}e._trigger("fromSortable",c);e.dropped=false}}})}});a.ui.plugin.add("draggable","cursor",{start:function(c,d){var b=a("body"),e=a(this).data("draggable").options;if(b.css("cursor")){e._cursor=b.css("cursor")}b.css("cursor",e.cursor)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._cursor){a("body").css("cursor",d._cursor)}}});a.ui.plugin.add("draggable","iframeFix",{start:function(b,c){var d=a(this).data("draggable").options;a(d.iframeFix===true?"iframe":d.iframeFix).each(function(){a('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(a(this).offset()).appendTo("body")})},stop:function(b,c){a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});a.ui.plugin.add("draggable","opacity",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("opacity")){e._opacity=b.css("opacity")}b.css("opacity",e.opacity)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._opacity){a(c.helper).css("opacity",d._opacity)}}});a.ui.plugin.add("draggable","scroll",{start:function(c,d){var b=a(this).data("draggable");if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){b.overflowOffset=b.scrollParent.offset()}},drag:function(d,e){var c=a(this).data("draggable"),f=c.options,b=false;if(c.scrollParent[0]!=document&&c.scrollParent[0].tagName!="HTML"){if(!f.axis||f.axis!="x"){if((c.overflowOffset.top+c.scrollParent[0].offsetHeight)-d.pageY<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop+f.scrollSpeed}else{if(d.pageY-c.overflowOffset.top<f.scrollSensitivity){c.scrollParent[0].scrollTop=b=c.scrollParent[0].scrollTop-f.scrollSpeed}}}if(!f.axis||f.axis!="y"){if((c.overflowOffset.left+c.scrollParent[0].offsetWidth)-d.pageX<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft+f.scrollSpeed}else{if(d.pageX-c.overflowOffset.left<f.scrollSensitivity){c.scrollParent[0].scrollLeft=b=c.scrollParent[0].scrollLeft-f.scrollSpeed}}}}else{if(!f.axis||f.axis!="x"){if(d.pageY-a(document).scrollTop()<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()-f.scrollSpeed)}else{if(a(window).height()-(d.pageY-a(document).scrollTop())<f.scrollSensitivity){b=a(document).scrollTop(a(document).scrollTop()+f.scrollSpeed)}}}if(!f.axis||f.axis!="y"){if(d.pageX-a(document).scrollLeft()<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()-f.scrollSpeed)}else{if(a(window).width()-(d.pageX-a(document).scrollLeft())<f.scrollSensitivity){b=a(document).scrollLeft(a(document).scrollLeft()+f.scrollSpeed)}}}}if(b!==false&&a.ui.ddmanager&&!f.dropBehaviour){a.ui.ddmanager.prepareOffsets(c,d)}}});a.ui.plugin.add("draggable","snap",{start:function(c,d){var b=a(this).data("draggable"),e=b.options;b.snapElements=[];a(e.snap.constructor!=String?(e.snap.items||":data(draggable)"):e.snap).each(function(){var g=a(this);var f=g.offset();if(this!=b.element[0]){b.snapElements.push({item:this,width:g.outerWidth(),height:g.outerHeight(),top:f.top,left:f.left})}})},drag:function(u,p){var g=a(this).data("draggable"),q=g.options;var y=q.snapTolerance;var x=p.offset.left,w=x+g.helperProportions.width,f=p.offset.top,e=f+g.helperProportions.height;for(var v=g.snapElements.length-1;v>=0;v--){var s=g.snapElements[v].left,n=s+g.snapElements[v].width,m=g.snapElements[v].top,A=m+g.snapElements[v].height;if(!((s-y<x&&x<n+y&&m-y<f&&f<A+y)||(s-y<x&&x<n+y&&m-y<e&&e<A+y)||(s-y<w&&w<n+y&&m-y<f&&f<A+y)||(s-y<w&&w<n+y&&m-y<e&&e<A+y))){if(g.snapElements[v].snapping){(g.options.snap.release&&g.options.snap.release.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=false;continue}if(q.snapMode!="inner"){var c=Math.abs(m-e)<=y;var z=Math.abs(A-f)<=y;var j=Math.abs(s-w)<=y;var k=Math.abs(n-x)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m-g.helperProportions.height,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s-g.helperProportions.width}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n}).left-g.margins.left}}var h=(c||z||j||k);if(q.snapMode!="outer"){var c=Math.abs(m-f)<=y;var z=Math.abs(A-e)<=y;var j=Math.abs(s-x)<=y;var k=Math.abs(n-w)<=y;if(c){p.position.top=g._convertPositionTo("relative",{top:m,left:0}).top-g.margins.top}if(z){p.position.top=g._convertPositionTo("relative",{top:A-g.helperProportions.height,left:0}).top-g.margins.top}if(j){p.position.left=g._convertPositionTo("relative",{top:0,left:s}).left-g.margins.left}if(k){p.position.left=g._convertPositionTo("relative",{top:0,left:n-g.helperProportions.width}).left-g.margins.left}}if(!g.snapElements[v].snapping&&(c||z||j||k||h)){(g.options.snap.snap&&g.options.snap.snap.call(g.element,u,a.extend(g._uiHash(),{snapItem:g.snapElements[v].item})))}g.snapElements[v].snapping=(c||z||j||k||h)}}});a.ui.plugin.add("draggable","stack",{start:function(b,c){var e=a(this).data("draggable").options;var d=a.makeArray(a(e.stack.group)).sort(function(g,f){return(parseInt(a(g).css("zIndex"),10)||e.stack.min)-(parseInt(a(f).css("zIndex"),10)||e.stack.min)});a(d).each(function(f){this.style.zIndex=e.stack.min+f});this[0].style.zIndex=e.stack.min+d.length}});a.ui.plugin.add("draggable","zIndex",{start:function(c,d){var b=a(d.helper),e=a(this).data("draggable").options;if(b.css("zIndex")){e._zIndex=b.css("zIndex")}b.css("zIndex",e.zIndex)},stop:function(b,c){var d=a(this).data("draggable").options;if(d._zIndex){a(c.helper).css("zIndex",d._zIndex)}}})})(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($) {
	$.fn.markItUp = function(settings, extraSettings) {
		var options, ctrlKey, shiftKey, altKey;
		ctrlKey = shiftKey = altKey = false;

		options = {	id:						'',
					nameSpace:				'',
					root:					'',
					previewInWindow:		'', // 'width=800, height=600, resizable=yes, scrollbars=yes'
					previewAutoRefresh:		false,
					previewPosition:		'after',
					previewTemplatePath:	        '~/templates/preview.html',
					previewParserPath:		'',
					previewParserVar:		'data',
					resizeHandle:			true,
					beforeInsert:			'',
					afterInsert:			'',
					onEnter:			{},
					onShiftEnter:			{},
					onCtrlEnter:			{},
					onTab:				{},
					markupSet:			[	{ /* set */ } ]
				};
		$.extend(options, settings, extraSettings);

		// compute markItUp! path
		if (!options.root) {
			$('script').each(function(a, tag) {
				miuScript = $(tag).get(0).src.match(/(.*)jquery\.markitup(\.pack)?\.js$/);
				if (miuScript !== null) {
					options.root = miuScript[1];
				}
			});
		}

		return this.each(function() {
			var $$, textarea, levels, scrollPosition, caretPosition, caretOffset,
				clicked, hash, header, footer, previewWindow, template, iFrame, abort;
			$$ = $(this);
			textarea = this;
			levels = [];
			abort = false;
			scrollPosition = caretPosition = 0;
			caretOffset = -1;

			options.previewParserPath = localize(options.previewParserPath);
			options.previewTemplatePath = localize(options.previewTemplatePath);

			// apply the computed path to ~/
			function localize(data, inText) {
				if (inText) {
					return 	data.replace(/("|')~\//g, "$1"+options.root);
				}
				return 	data.replace(/^~\//, options.root);
			}

			// init and build editor
			function init() {
				id = ''; nameSpace = '';
				if (options.id) {
					id = 'id="'+options.id+'"';
				} else if ($$.attr("id")) {
					id = 'id="markItUp'+($$.attr("id").substr(0, 1).toUpperCase())+($$.attr("id").substr(1))+'"';

				}
				if (options.nameSpace) {
					nameSpace = 'class="'+options.nameSpace+'"';
				}
				$$.wrap('<div '+nameSpace+'></div>');
				$$.wrap('<div '+id+' class="markItUp"></div>');
				$$.wrap('<div class="markItUpContainer"></div>');
				$$.addClass("markItUpEditor");

				// add the header before the textarea
				header = $('<div class="markItUpHeader"></div>').insertBefore($$);
				$(dropMenus(options.markupSet)).appendTo(header);

				// add the footer after the textarea
				footer = $('<div class="markItUpFooter"></div>').insertAfter($$);

				// add the resize handle after textarea
				if (options.resizeHandle === true && $.browser.safari !== true) {
					resizeHandle = $('<div class="markItUpResizeHandle"></div>')
						.insertAfter($$)
						.bind("mousedown", function(e) {
							var h = $$.height(), y = e.clientY, mouseMove, mouseUp;
							mouseMove = function(e) {
								$$.css("height", Math.max(20, e.clientY+h-y)+"px");
								return false;
							};
							mouseUp = function(e) {
								$("html").unbind("mousemove", mouseMove).unbind("mouseup", mouseUp);
								return false;
							};
							$("html").bind("mousemove", mouseMove).bind("mouseup", mouseUp);
					});
					footer.append(resizeHandle);
				}

				// listen key events
				$$.keydown(keyPressed).keyup(keyPressed);
				
				// bind an event to catch external calls
				$$.bind("insertion", function(e, settings) {
					if (settings.target !== false) {
						get();
					}
					if (textarea === $.markItUp.focused) {
						markup(settings);
					}
				});

				// remember the last focus
				$$.focus(function() {
					$.markItUp.focused = this;
				});
			}

			// recursively build header with dropMenus from markupset
			function dropMenus(markupSet) {
				var ul = $('<ul></ul>'), i = 0;
				$('li:hover > ul', ul).css('display', 'block');
				$.each(markupSet, function() {
					var button = this, t = '', title, li, j;
					title = (button.key) ? (button.name||'')+' [Ctrl+'+button.key+']' : (button.name||'');
					key   = (button.key) ? 'accesskey="'+button.key+'"' : '';
					if (button.separator) {
						li = $('<li class="markItUpSeparator">'+(button.separator||'')+'</li>').appendTo(ul);
					} else {
						i++;
						for (j = levels.length -1; j >= 0; j--) {
							t += levels[j]+"-";
						}
						li = $('<li class="markItUpButton markItUpButton'+t+(i)+' '+(button.className||'')+'"><a href="" '+key+' title="'+title+'">'+(button.name||'')+'</a></li>')
						.bind("contextmenu", function() { // prevent contextmenu on mac and allow ctrl+click
							return false;
						}).click(function() {
							return false;
						}).mouseup(function() {
							if (button.call) {
								eval(button.call)();
							}
							markup(button);
							return false;
						}).hover(function() {
								$('> ul', this).show();
								$(document).one('click', function() { // close dropmenu if click outside
										$('ul ul', header).hide();
									}
								);
							}, function() {
								$('> ul', this).hide();
							}
						).appendTo(ul);
						if (button.dropMenu) {
							levels.push(i);
							$(li).addClass('markItUpDropMenu').append(dropMenus(button.dropMenu));
						}
					}
				}); 
				levels.pop();
				return ul;
			}

			// markItUp! markups
			function magicMarkups(string) {
				if (string) {
					string = string.toString();
					string = string.replace(/\(\!\(([\s\S]*?)\)\!\)/g,
						function(x, a) {
							var b = a.split('|!|');
							if (altKey === true) {
								return (b[1] !== undefined) ? b[1] : b[0];
							} else {
								return (b[1] === undefined) ? "" : b[0];
							}
						}
					);
					// [![prompt]!], [![prompt:!:value]!]
					string = string.replace(/\[\!\[([\s\S]*?)\]\!\]/g,
						function(x, a) {
							var b = a.split(':!:');
							if (abort === true) {
								return false;
							}
							value = prompt(b[0], (b[1]) ? b[1] : '');
							if (value === null) {
								abort = true;
							}
							return value;
						}
					);
					return string;
				}
				return "";
			}

			// prepare action
			function prepare(action) {
				if ($.isFunction(action)) {
					action = action(hash);
				}
				return magicMarkups(action);
			}

			// build block to insert
			function build(string) {
				openWith 	= prepare(clicked.openWith);
				placeHolder = prepare(clicked.placeHolder);
				replaceWith = prepare(clicked.replaceWith);
				closeWith 	= prepare(clicked.closeWith);
				if (replaceWith !== "") {
					block = openWith + replaceWith + closeWith;
				} else if (selection === '' && placeHolder !== '') {
					block = openWith + placeHolder + closeWith;
				} else {
					block = openWith + (string||selection) + closeWith;
				}
				return {	block:block, 
							openWith:openWith, 
							replaceWith:replaceWith, 
							placeHolder:placeHolder,
							closeWith:closeWith
					};
			}

			// define markup to insert
			function markup(button) {
				var len, j, n, i;
				hash = clicked = button;
				get();

				$.extend(hash, {	line:"", 
						 			root:options.root,
									textarea:textarea, 
									selection:(selection||''), 
									caretPosition:caretPosition,
									ctrlKey:ctrlKey, 
									shiftKey:shiftKey, 
									altKey:altKey
								}
							);
				// callbacks before insertion
				prepare(options.beforeInsert);
				prepare(clicked.beforeInsert);
				if (ctrlKey === true && shiftKey === true) {
					prepare(clicked.beforeMultiInsert);
				}			
				$.extend(hash, { line:1 });
				
				if (ctrlKey === true && shiftKey === true) {
					lines = selection.split(/\r?\n/);
					for (j = 0, n = lines.length, i = 0; i < n; i++) {
						if ($.trim(lines[i]) !== '') {
							$.extend(hash, { line:++j, selection:lines[i] } );
							lines[i] = build(lines[i]).block;
						} else {
							lines[i] = "";
						}
					}
					string = { block:lines.join('\n')};
					start = caretPosition;
					len = string.block.length + (($.browser.opera) ? n : 0);
				} else if (ctrlKey === true) {
					string = build(selection);
					start = caretPosition + string.openWith.length;
					len = string.block.length - string.openWith.length - string.closeWith.length;
					len -= fixIeBug(string.block);
				} else if (shiftKey === true) {
					string = build(selection);
					start = caretPosition;
					len = string.block.length;
					len -= fixIeBug(string.block);
				} else {
					string = build(selection);
					start = caretPosition + string.block.length ;
					len = 0;
					start -= fixIeBug(string.block);
				}
				if ((selection === '' && string.replaceWith === '')) {
					caretOffset += fixOperaBug(string.block);
					
					start = caretPosition + string.openWith.length;
					len = string.block.length - string.openWith.length - string.closeWith.length;

					caretOffset = $$.val().substring(caretPosition,  $$.val().length).length;
					caretOffset -= fixOperaBug($$.val().substring(0, caretPosition));
				}
				$.extend(hash, { caretPosition:caretPosition, scrollPosition:scrollPosition } );

				if (string.block !== selection && abort === false) {
					insert(string.block);
					set(start, len);
				} else {
					caretOffset = -1;
				}
				get();

				$.extend(hash, { line:'', selection:selection });

				// callbacks after insertion
				if (ctrlKey === true && shiftKey === true) {
					prepare(clicked.afterMultiInsert);
				}
				prepare(clicked.afterInsert);
				prepare(options.afterInsert);

				// refresh preview if opened
				if (previewWindow && options.previewAutoRefresh) {
					refreshPreview(); 
				}
																									
				// reinit keyevent
				shiftKey = altKey = ctrlKey = abort = false;
			}

			// Substract linefeed in Opera
			function fixOperaBug(string) {
				if ($.browser.opera) {
					return string.length - string.replace(/\n*/g, '').length;
				}
				return 0;
			}
			// Substract linefeed in IE
			function fixIeBug(string) {
				if ($.browser.msie) {
					return string.length - string.replace(/\r*/g, '').length;
				}
				return 0;
			}
				
			// add markup
			function insert(block) {	
				if (document.selection) {
					var newSelection = document.selection.createRange();
					newSelection.text = block;
				} else {
					$$.val($$.val().substring(0, caretPosition)	+ block + $$.val().substring(caretPosition + selection.length, $$.val().length));
				}
			}

			// set a selection
			function set(start, len) {
				if (textarea.createTextRange){
					// quick fix to make it work on Opera 9.5
					if ($.browser.opera && $.browser.version >= 9.5 && len == 0) {
						return false;
					}
					range = textarea.createTextRange();
					range.collapse(true);
					range.moveStart('character', start); 
					range.moveEnd('character', len); 
					range.select();
				} else if (textarea.setSelectionRange ){
					textarea.setSelectionRange(start, start + len);
				}
				textarea.scrollTop = scrollPosition;
				textarea.focus();
			}

			// get the selection
			function get() {
				textarea.focus();

				scrollPosition = textarea.scrollTop;
				if (document.selection) {
					selection = document.selection.createRange().text;
					if ($.browser.msie) { // ie
						var range = document.selection.createRange(), rangeCopy = range.duplicate();
						rangeCopy.moveToElementText(textarea);
						caretPosition = -1;
						while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds...
							rangeCopy.moveStart('character');
							caretPosition ++;
						}
					} else { // opera
						caretPosition = textarea.selectionStart;
					}
				} else { // gecko
					caretPosition = textarea.selectionStart;
					selection = $$.val().substring(caretPosition, textarea.selectionEnd);
				} 
				return selection;
			}

			// open preview window
			function preview() {
				if (!previewWindow) {
					previewWindow = $('<div class="markItUpPreviewFrame" zoom="1"></div>');
					if (options.previewPosition == 'after') {
						previewWindow.insertAfter(footer);
					} else {
						previewWindow.insertBefore(header);
					}
				}
				// if (!options.previewAutoRefresh) {
					refreshPreview(); 
				// }
			}

			// refresh Preview window
			function refreshPreview() {
				previewWindow.html(renderPreview());
			}

			function renderPreview() {
				if (options.previewParserPath !== '') {
					$.ajax( {
						type: 'POST',
						async: false,
						url: options.previewParserPath,
						data: options.previewParserVar+'='+encodeURIComponent($$.val()),
						success: function(data) {
							phtml = localize(data, 1);
						}
					} );
				} else {
					if (!template) {
						$.ajax( {
							async: false,
							url: options.previewTemplatePath,
							success: function(data) {
								template = localize(data, 1); 
							}
						} );
					}
					phtml = template.replace(/<!-- content -->/g, $$.val());
				}
				return phtml;
			}
			
			// set keys pressed
			function keyPressed(e) { 
				shiftKey = e.shiftKey;
				altKey = e.altKey;
				ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false;

				if (e.type === 'keydown') {
					if (ctrlKey === true) {
						li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li');
						if (li.length !== 0) {
							ctrlKey = false;
							li.triggerHandler('mouseup');
							return false;
						}
					}
					if (e.keyCode === 13 || e.keyCode === 10) { // Enter key
						if (ctrlKey === true) {  // Enter + Ctrl
							ctrlKey = false;
							markup(options.onCtrlEnter);
							return options.onCtrlEnter.keepDefault;
						} else if (shiftKey === true) { // Enter + Shift
							shiftKey = false;
							markup(options.onShiftEnter);
							return options.onShiftEnter.keepDefault;
						} else { // only Enter
							markup(options.onEnter);
							return options.onEnter.keepDefault;
						}
					}
					if (e.keyCode === 9) { // Tab key
						if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob.
							return false; 
						}
						if (caretOffset !== -1) {
							get();
							caretOffset = $$.val().length - caretOffset;
							set(caretOffset, 0);
							caretOffset = -1;
							return false;
						} else {
							markup(options.onTab);
							return options.onTab.keepDefault;
						}
					}
				}
			}

			init();
		});
	};

	$.fn.markItUpRemove = function() {
		return this.each(function() {
				$$ = $(this).unbind().removeClass('markItUpEditor');
				$$.parent('div').parent('div.markItUp').parent('div').replaceWith($$);
			}
		);
	};

	$.markItUp = function(settings) {
		var options = { target:false };
		$.extend(options, settings);
		
		if (options.target) {
			return $(options.target).each(function() {
				$(this).focus();
				$(this).trigger('insertion', [options]);
			});
		} else {
			$('textarea').trigger('insertion', [options]);
		}
	};
})(jQuery);

mySettings = {
	onShiftEnter:  	{keepDefault:false, replaceWith:'<br />\n'},
	onCtrlEnter:  	{keepDefault:false, openWith:'\n<p>', closeWith:'</p>'},
	onTab:    		{keepDefault:false, replaceWith:'    '},
	previewParserPath:	do_link('site.group_remote', 'request=grup_forum_post_preview'), // path to your BBCode parser
	markupSet: [
		{name:'Bold', key:'B', openWith:'[b]', closeWith:'[/b]'},
		{name:'Italic', key:'I', openWith:'[i]', closeWith:'[/i]'},
		{name:'Subliniat', key:'U', openWith:'[u]', closeWith:'[/u]'},
		{separator:'---------------' },
		{name:'Imagine', key:'Q', replaceWith:'[img][![Url]!][/img]'},
		{name:'Link', key:'L', openWith:'[url=[![Url]!]]', closeWith:'[/url]', placeHolder:'Your text to link here...'},
		{separator:'---------------' },
		{	name:'Culori', 
			className:'colors', 
			openWith:'[color=[![Color]!]]', 
			closeWith:'[/color]', 
				dropMenu: [
					{name:'Yellow',	openWith:'[color=yellow]', 	closeWith:'[/color]', className:"col1-1" },
					{name:'Orange',	openWith:'[color=orange]', 	closeWith:'[/color]', className:"col1-2" },
					{name:'Red', 	openWith:'[color=red]', 	closeWith:'[/color]', className:"col1-3" },
					
					{name:'Blue', 	openWith:'[color=blue]', 	closeWith:'[/color]', className:"col2-1" },
					{name:'Purple', openWith:'[color=purple]', 	closeWith:'[/color]', className:"col2-2" },
					{name:'Green', 	openWith:'[color=green]', 	closeWith:'[/color]', className:"col2-3" },
					
					{name:'Pink', 	openWith:'[color=pink]', 	closeWith:'[/color]', className:"col3-1" },
					{name:'Gray', 	openWith:'[color=gray]', 	closeWith:'[/color]', className:"col3-2" },
					{name:'Black',	openWith:'[color=black]', 	closeWith:'[/color]', className:"col3-3" }
				]
		},
		{name:'Marime', openWith:'[size=[![Text size]!]]', closeWith:'[/size]',
		dropMenu :[
			{name:'Big', openWith:'[size=200]', closeWith:'[/size]' },
			{name:'Normal', openWith:'[size=100]', closeWith:'[/size]' },
			{name:'Small', openWith:'[size=50]', closeWith:'[/size]' }
		]},
		{separator:'---------------' },
		{name:'Smilie', dropMenu :[
			{}
		]},
		{name:'Previzualizeaza', className:"bb_preview", call:'preview' }
	]
}

// 
;// (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);
;/*
 * Jeditable - jQuery in place edit plugin
 *
 * Copyright (c) 2006-2009 Mika Tuupola, Dylan Verheul
 *
 * Licensed under the MIT license:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Project home:
 *   http://www.appelsiini.net/projects/jeditable
 *
 * Based on editable by Dylan Verheul <dylan_at_dyve.net>:
 *    http://www.dyve.net/jquery/?editable
 *
 */

/**
  * Version 1.7.1
  *
  * ** means there is basic unit tests for this parameter. 
  *
  * @name  Jeditable
  * @type  jQuery
  * @param String  target             (POST) URL or function to send edited content to **
  * @param Hash    options            additional options 
  * @param String  options[method]    method to use to send edited content (POST or PUT) **
  * @param Function options[callback] Function to run after submitting edited content **
  * @param String  options[name]      POST parameter name of edited content
  * @param String  options[id]        POST parameter name of edited div id
  * @param Hash    options[submitdata] Extra parameters to send when submitting edited content.
  * @param String  options[type]      text, textarea or select (or any 3rd party input type) **
  * @param Integer options[rows]      number of rows if using textarea ** 
  * @param Integer options[cols]      number of columns if using textarea **
  * @param Mixed   options[height]    'auto', 'none' or height in pixels **
  * @param Mixed   options[width]     'auto', 'none' or width in pixels **
  * @param String  options[loadurl]   URL to fetch input content before editing **
  * @param String  options[loadtype]  Request type for load url. Should be GET or POST.
  * @param String  options[loadtext]  Text to display while loading external content.
  * @param Mixed   options[loaddata]  Extra parameters to pass when fetching content before editing.
  * @param Mixed   options[data]      Or content given as paramameter. String or function.**
  * @param String  options[indicator] indicator html to show when saving
  * @param String  options[tooltip]   optional tooltip text via title attribute **
  * @param String  options[event]     jQuery event such as 'click' of 'dblclick' **
  * @param String  options[submit]    submit button value, empty means no button **
  * @param String  options[cancel]    cancel button value, empty means no button **
  * @param String  options[cssclass]  CSS class to apply to input form. 'inherit' to copy from parent. **
  * @param String  options[style]     Style to apply to input form 'inherit' to copy from parent. **
  * @param String  options[select]    true or false, when true text is highlighted ??
  * @param String  options[placeholder] Placeholder text or html to insert when element is empty. **
  * @param String  options[onblur]    'cancel', 'submit', 'ignore' or function ??
  *             
  * @param Function options[onsubmit] function(settings, original) { ... } called before submit
  * @param Function options[onreset]  function(settings, original) { ... } called before reset
  * @param Function options[onerror]  function(settings, original, xhr) { ... } called on error
  *             
  * @param Hash    options[ajaxoptions]  jQuery Ajax options. See docs.jquery.com.
  *             
  */

(function($) {

    $.fn.editable = function(target, options) {
            
        if ('disable' == target) {
            $(this).data('disabled.editable', true);
            return;
        }
        if ('enable' == target) {
            $(this).data('disabled.editable', false);
            return;
        }
        if ('destroy' == target) {
            $(this)
                .unbind($(this).data('event.editable'))
                .removeData('disabled.editable')
                .removeData('event.editable');
            return;
        }
        
        var settings = $.extend({}, $.fn.editable.defaults, {target:target}, options);
        
        /* setup some functions */
        var plugin   = $.editable.types[settings.type].plugin || function() { };
        var submit   = $.editable.types[settings.type].submit || function() { };
        var buttons  = $.editable.types[settings.type].buttons 
                    || $.editable.types['defaults'].buttons;
        var content  = $.editable.types[settings.type].content 
                    || $.editable.types['defaults'].content;
        var element  = $.editable.types[settings.type].element 
                    || $.editable.types['defaults'].element;
        var reset    = $.editable.types[settings.type].reset 
                    || $.editable.types['defaults'].reset;
        var callback = settings.callback || function() { };
        var onedit   = settings.onedit   || function() { }; 
        var onsubmit = settings.onsubmit || function() { };
        var onreset  = settings.onreset  || function() { };
        var onerror  = settings.onerror  || reset;
          
        /* show tooltip */
        if (settings.tooltip) {
            $(this).attr('title', settings.tooltip);
        }
        
        settings.autowidth  = 'auto' == settings.width;
        settings.autoheight = 'auto' == settings.height;
        
        return this.each(function() {
                        
            /* save this to self because this changes when scope changes */
            var self = this;  
                   
            /* inlined block elements lose their width and height after first edit */
            /* save them for later use as workaround */
            var savedwidth  = $(self).width();
            var savedheight = $(self).height();
            
            /* save so it can be later used by $.editable('destroy') */
            $(this).data('event.editable', settings.event);
            
            /* if element is empty add something clickable (if requested) */
            if (!$.trim($(this).html())) {
                $(this).html(settings.placeholder);
            }
            
            $(this).bind(settings.event, function(e) {
                
                /* abort if disabled for this element */
                if (true === $(this).data('disabled.editable')) {
                    return;
                }
                
                /* prevent throwing an exeption if edit field is clicked again */
                if (self.editing) {
                    return;
                }
                
                /* abort if onedit hook returns false */
                if (false === onedit.apply(this, [settings, self])) {
                   return;
                }
                
                /* prevent default action and bubbling */
                e.preventDefault();
                e.stopPropagation();
                
                /* remove tooltip */
                if (settings.tooltip) {
                    $(self).removeAttr('title');
                }
                
                /* figure out how wide and tall we are, saved width and height */
                /* are workaround for http://dev.jquery.com/ticket/2190 */
                if (0 == $(self).width()) {
                    //$(self).css('visibility', 'hidden');
                    settings.width  = savedwidth;
                    settings.height = savedheight;
                } else {
                    if (settings.width != 'none') {
                        settings.width = 
                            settings.autowidth ? $(self).width()  : settings.width;
                    }
                    if (settings.height != 'none') {
                        settings.height = 
                            settings.autoheight ? $(self).height() : settings.height;
                    }
                }
                //$(this).css('visibility', '');
                
                /* remove placeholder text, replace is here because of IE */
                if ($(this).html().toLowerCase().replace(/(;|")/g, '') == 
                    settings.placeholder.toLowerCase().replace(/(;|")/g, '')) {
                        $(this).html('');
                }
                                
                self.editing    = true;
                self.revert     = $(self).html();
                $(self).html('');

                /* create the form object */
                var form = $('<form />');
                
                /* apply css or style or both */
                if (settings.cssclass) {
                    if ('inherit' == settings.cssclass) {
                        form.attr('class', $(self).attr('class'));
                    } else {
                        form.attr('class', settings.cssclass);
                    }
                }

                if (settings.style) {
                    if ('inherit' == settings.style) {
                        form.attr('style', $(self).attr('style'));
                        /* IE needs the second line or display wont be inherited */
                        form.css('display', $(self).css('display'));                
                    } else {
                        form.attr('style', settings.style);
                    }
                }

                /* add main input element to form and store it in input */
                var input = element.apply(form, [settings, self]);

                /* set input content via POST, GET, given data or existing value */
                var input_content;
                
                if (settings.loadurl) {
                    var t = setTimeout(function() {
                        input.disabled = true;
                        content.apply(form, [settings.loadtext, settings, self]);
                    }, 100);

                    var loaddata = {};
                    loaddata[settings.id] = self.id;
                    if ($.isFunction(settings.loaddata)) {
                        $.extend(loaddata, settings.loaddata.apply(self, [self.revert, settings]));
                    } else {
                        $.extend(loaddata, settings.loaddata);
                    }
                    $.ajax({
                       type : settings.loadtype,
                       url  : settings.loadurl,
                       data : loaddata,
                       async : false,
                       success: function(result) {
                          window.clearTimeout(t);
                          input_content = result;
                          input.disabled = false;
                       }
                    });
                } else if (settings.data) {
                    input_content = settings.data;
                    if ($.isFunction(settings.data)) {
                        input_content = settings.data.apply(self, [self.revert, settings]);
                    }
                } else {
                    input_content = self.revert; 
                }
                content.apply(form, [input_content, settings, self]);

                input.attr('name', settings.name);
        
                /* add buttons to the form */
                buttons.apply(form, [settings, self]);
         
                /* add created form to self */
                $(self).append(form);
         
                /* attach 3rd party plugin if requested */
                plugin.apply(form, [settings, self]);

                /* focus to first visible form element */
                $(':input:visible:enabled:first', form).focus();

                /* highlight input contents when requested */
                if (settings.select) {
                    input.select();
                }
        
                /* discard changes if pressing esc */
                input.keydown(function(e) {
                    if (e.keyCode == 27) {
                        e.preventDefault();
                        //self.reset();
                        reset.apply(form, [settings, self]);
                    }
                });

                /* discard, submit or nothing with changes when clicking outside */
                /* do nothing is usable when navigating with tab */
                var t;
                if ('cancel' == settings.onblur) {
                    input.blur(function(e) {
                        /* prevent canceling if submit was clicked */
                        t = setTimeout(function() {
                            reset.apply(form, [settings, self]);
                        }, 500);
                    });
                } else if ('submit' == settings.onblur) {
                    input.blur(function(e) {
                        /* prevent double submit if submit was clicked */
                        t = setTimeout(function() {
                            form.submit();
                        }, 200);
                    });
                } else if ($.isFunction(settings.onblur)) {
                    input.blur(function(e) {
                        settings.onblur.apply(self, [input.val(), settings]);
                    });
                } else {
                    input.blur(function(e) {
                      /* TODO: maybe something here */
                    });
                }

                form.submit(function(e) {

                    if (t) { 
                        clearTimeout(t);
                    }

                    /* do no submit */
                    e.preventDefault(); 
            
                    /* call before submit hook. */
                    /* if it returns false abort submitting */                    
                    if (false !== onsubmit.apply(form, [settings, self])) { 
                        /* custom inputs call before submit hook. */
                        /* if it returns false abort submitting */
                        if (false !== submit.apply(form, [settings, self])) { 

                          /* check if given target is function */
                          if ($.isFunction(settings.target)) {
                              var str = settings.target.apply(self, [input.val(), settings]);
                              $(self).html(str);
                              self.editing = false;
                              callback.apply(self, [self.innerHTML, settings]);
                              /* TODO: this is not dry */                              
                              if (!$.trim($(self).html())) {
                                  $(self).html(settings.placeholder);
                              }
                          } else {
                              /* add edited content and id of edited element to POST */
                              var submitdata = {};
                              submitdata[settings.name] = input.val();
                              submitdata[settings.id] = self.id;
                              /* add extra data to be POST:ed */
                              if ($.isFunction(settings.submitdata)) {
                                  $.extend(submitdata, settings.submitdata.apply(self, [self.revert, settings]));
                              } else {
                                  $.extend(submitdata, settings.submitdata);
                              }

                              /* quick and dirty PUT support */
                              if ('PUT' == settings.method) {
                                  submitdata['_method'] = 'put';
                              }

                              /* show the saving indicator */
                              $(self).html(settings.indicator);
                              
                              /* defaults for ajaxoptions */
                              var ajaxoptions = {
                                  type    : 'POST',
                                  data    : submitdata,
                                  dataType: 'html',
                                  url     : settings.target,
                                  success : function(result, status) {
                                      if (ajaxoptions.dataType == 'html') {
                                        $(self).html(result);
                                      }
                                      self.editing = false;
                                      callback.apply(self, [result, settings]);
                                      if (!$.trim($(self).html())) {
                                          $(self).html(settings.placeholder);
                                      }
                                  },
                                  error   : function(xhr, status, error) {
                                      onerror.apply(form, [settings, self, xhr]);
                                  }
                              };
                              
                              /* override with what is given in settings.ajaxoptions */
                              $.extend(ajaxoptions, settings.ajaxoptions);   
                              $.ajax(ajaxoptions);          
                              
                            }
                        }
                    }
                    
                    /* show tooltip again */
                    $(self).attr('title', settings.tooltip);
                    
                    return false;
                });
            });
            
            /* privileged methods */
            this.reset = function(form) {
                /* prevent calling reset twice when blurring */
                if (this.editing) {
                    /* before reset hook, if it returns false abort reseting */
                    if (false !== onreset.apply(form, [settings, self])) { 
                        $(self).html(self.revert);
                        self.editing   = false;
                        if (!$.trim($(self).html())) {
                            $(self).html(settings.placeholder);
                        }
                        /* show tooltip again */
                        if (settings.tooltip) {
                            $(self).attr('title', settings.tooltip);                
                        }
                    }                    
                }
            };            
        });

    };


    $.editable = {
        types: {
            defaults: {
                element : function(settings, original) {
                    var input = $('<input type="hidden"></input>');                
                    $(this).append(input);
                    return(input);
                },
                content : function(string, settings, original) {
                    $(':input:first', this).val(string);
                },
                reset : function(settings, original) {
                  original.reset(this);
                },
                buttons : function(settings, original) {
                    var form = this;
                    if (settings.submit) {
                        /* if given html string use that */
                        if (settings.submit.match(/>$/)) {
                            var submit = $(settings.submit).click(function() {
                                if (submit.attr("type") != "submit") {
                                    form.submit();
                                }
                            });
                        /* otherwise use button with given string as text */
                        } else {
                            var submit = $('<button type="submit" />');
                            submit.html(settings.submit);                            
                        }
                        $(this).append(submit);
                    }
                    if (settings.cancel) {
                        /* if given html string use that */
                        if (settings.cancel.match(/>$/)) {
                            var cancel = $(settings.cancel);
                        /* otherwise use button with given string as text */
                        } else {
                            var cancel = $('<button type="cancel" />');
                            cancel.html(settings.cancel);
                        }
                        $(this).append(cancel);

                        $(cancel).click(function(event) {
                            //original.reset();
                            if ($.isFunction($.editable.types[settings.type].reset)) {
                                var reset = $.editable.types[settings.type].reset;                                                                
                            } else {
                                var reset = $.editable.types['defaults'].reset;                                
                            }
                            reset.apply(form, [settings, original]);
                            return false;
                        });
                    }
                }
            },
            text: {
                element : function(settings, original) {
                    var input = $('<input />');
                    if (settings.width  != 'none') { input.width(settings.width);  }
                    if (settings.height != 'none') { input.height(settings.height); }
                    /* https://bugzilla.mozilla.org/show_bug.cgi?id=236791 */
                    //input[0].setAttribute('autocomplete','off');
                    input.attr('autocomplete','off');
                    $(this).append(input);
                    return(input);
                }
            },
            textarea: {
                element : function(settings, original) {
                    var textarea = $('<textarea />');
                    if (settings.rows) {
                        textarea.attr('rows', settings.rows);
                    } else if (settings.height != "none") {
                        textarea.height(settings.height);
                    }
                    if (settings.cols) {
                        textarea.attr('cols', settings.cols);
                    } else if (settings.width != "none") {
                        textarea.width(settings.width);
                    }
                    $(this).append(textarea);
                    return(textarea);
                }
            },
            select: {
               element : function(settings, original) {
                    var select = $('<select />');
                    $(this).append(select);
                    return(select);
                },
                content : function(data, settings, original) {
                    /* If it is string assume it is json. */
                    if (String == data.constructor) {      
                        eval ('var json = ' + data);
                    } else {
                    /* Otherwise assume it is a hash already. */
                        var json = data;
                    }
                    for (var key in json) {
                        if (!json.hasOwnProperty(key)) {
                            continue;
                        }
                        if ('selected' == key) {
                            continue;
                        } 
                        var option = $('<option />').val(key).append(json[key]);
                        $('select', this).append(option);    
                    }                    
                    /* Loop option again to set selected. IE needed this... */ 
                    $('select', this).children().each(function() {
                        if ($(this).val() == json['selected'] || 
                            $(this).text() == $.trim(original.revert)) {
                                $(this).attr('selected', 'selected');
                        }
                    });
                }
            }
        },

        /* Add new input type */
        addInputType: function(name, input) {
            $.editable.types[name] = input;
        }
    };

    // publicly accessible defaults
    $.fn.editable.defaults = {
        name       : 'value',
        id         : 'id',
        type       : 'text',
        width      : 'auto',
        height     : 'auto',
        event      : 'click.editable',
        onblur     : 'cancel',
        loadtype   : 'GET',
        loadtext   : 'Loading...',
        placeholder: 'Click to edit',
        loaddata   : {},
        submitdata : {},
        ajaxoptions: {}
    };

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

;$.VirtualSelect = function (options, jThis, input, select, container) {
	var listItems, active = -1, data, term = "", needsInit = true, element, list;
	
	// Select closest li
	function target(event) {
		var elem = $(event.target).closest("li");
		// More fun with IE, sometimes event.target is empty, just ignore it then
		if(elem.length == 0) {
			
			return [];
		}
		
		return elem;
	}
	
	// Create results
	function init() {
		if (!needsInit) {
			
			return;
		}
		
		element = $("<div/>").addClass(options.resultsClass).appendTo(container.find(".bxd"));
		$(container).css("position", "absolute").appendTo(document.body);
	
		list = $("<ul/>").appendTo(element).mouseover(function(e) {
			var tgt = target(e);
			if(tgt.length > 0) {
				active = $("li", list).removeClass(options.activeClass).index(tgt);
				tgt.addClass(options.activeClass);
			}
		}).click(function(e) {
			var tgt = target(e);
			if ($(e.target).is(":checkbox")) {
				// e.preventDefault();
				return false;
			}
			if(tgt.length > 0) {
				tgt.addClass(options.activeClass);
			}
			select(tgt);
			// TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
			input.focus();
			return false;
		});
		
		if(options.width > 0) {
			element.css("width", options.width);
		}
			
		needsInit = false;
	}
	
	function movePosition(step) {
		active += step;
		if (active < 0) {
			active = listItems.length - 1;
		} else if (active >= listItems.length) {
			active = 0;
		}
	}
	
	function moveSelect(step) {
		listItems.slice(active, active + 1).removeClass(options.activeClass);
		movePosition(step);
		var activeItem = listItems.slice(active, active + 1).addClass(options.activeClass);
		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 limitNumberOfItems(available) {
		return ((options.max > 0) ? ((options.max < available) ? options.max : available) : 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, data[i].checked);
			if (formatted === false) {
				continue;
			}
			
			var li = $("<li/>").html(options.highlight(formatted, term)).addClass((i%2 == 0) ? "pick_even" : "pick_odd").appendTo(list)[0];
			$.data(li, "pick_data", data[i]);
		}
		
		if (max == 0) {
			list.prepend("<span class=\"hint\">Lista ta de prieteni este goala.</span>");
		}
		
		listItems = list.find("li");
		if (options.selectFirst){
			listItems.slice(0, 1).addClass(options.activeClass);
			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() {
			moveSelect(-8);
		},
		pageDown: function() {
			moveSelect(8);
		},
		hide: function() {
			container && container.hide();
			listItems && listItems.removeClass(options.activeClass);
			active = -1;
		},
		visible : function() {
			return container && container.is(":visible");
		},
		current: function() {
			return this.visible() && listItems[active];
		},
		show: function() {
			var offset = $(jThis).offset();
			$(input).css({width: (options.width > 0) ? options.width : $(jThis).width()});
			$(container).find(".bxd").css({width: (options.width > 0) ? options.width : $(jThis).outerWidth(false)});
			$(container).css({
				width: ((options.width > 0) ? options.width : $(jThis).outerWidth(false)),
				top: offset.top,
				left: offset.left
			}).show();
			
			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("." + options.activeClass).removeClass(options.activeClass);
			return selected && selected.length && $.data(selected[0], "pick_data");
		},
		do_select: function() {
			listItems.filter("." + options.activeClass).trigger("click");
		},
		emptyList: function (){
			list && list.empty();
		},
		unbind: function() {
			container && container.remove();
		}
	};
};

(function($){
	
	$.fn.friendPicker = function(options){
		
		var opts = $.extend({}, $.fn.friendPicker.defaults, options);
		
		var KEY = {
			UP: 38,
			DOWN: 40,
			DEL: 46,
			TAB: 9,
			RETURN: 13,
			ESC: 27,
			COMMA: 188,
			PAGEUP: 33,
			PAGEDOWN: 34,
			BACKSPACE: 8
		};
		
		function parse(options, 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 matchSubset(s, sub) {
			s = s.toLowerCase();
			var i = s.indexOf(sub);
			if (i == -1) return false;
			return true;
		};
		
		return this.each(function(){
			
			var jThis  = this, $jThis = $(this), is_active = false;
			var o = $.meta ? $.extend({}, opts, $jThis.data()) : opts;
			
			$jThis.click(function(){
				if (!is_active) {
					$.ajax({
						dataType: "text",
						url: o.request_url,
						success: function(data) {
							var prev_value;
							var parsed = o.parse && o.parse(o, data) || parse(o, data);
							var btn = $("<button type=\"button\" class=\"btn btn_small mt_1\"><span>Salveaza</span></button>");
							
							var jInput  = $("<input type=\"text\" />").addClass("txt f_left small"), $jInput = $(jInput);
							var container = $("<div><div class=\"top\"><b>&nbsp;</b><i>&nbsp;</i><span>&nbsp;</span></div><div class=\"bxd\"></div><div class=\"btm\"><b>&nbsp;</b><i>&nbsp;</i><span>&nbsp;</span></div></div>").hide().addClass(o.containerClass);
							container.find(".bxd").append(jInput);
							var select = $.VirtualSelect(o, jThis, jInput, function(li){
								var this_val = $(li).data("pick_data").value;
								var chk = $(li).find(":checkbox:eq(0)");
								
								if (chk.attr("checked") == true) {
									chk.removeAttr("checked");
									
									var i = parsed.length;
									while (i--) {
										if (parsed[i].value == this_val) {
											parsed[i].checked = false;
										}
									}
								}
								else {
									chk.attr("checked", "checked");
									if (!o.multipleSelect) {
										$(li).siblings().find(":checkbox:eq(0)").removeAttr("checked");
									}
									
									var i = parsed.length;
									while (i--) {
										if (parsed[i].value == this_val) {
											parsed[i].checked = true;
										}
										else if (!o.multipleSelect) {
											parsed[i].checked = false;
										}
									}
								}
							}, container);
							
							$jInput.attr("autocomplete", "off").addClass(o.inputClass)
							
							select.display(parsed, $jInput.val());
							if (o.showSaveBtn || o.multipleSelect) {
								container.find(".bxd").append(btn);
							}
							select.show();
							jInput.focus();
							
							container.find("ul").click(function(e){
								if (!o.showSaveBtn && !o.multipleSelect) {
									save_data();
								}
							});
							
							$jInput.bind("keyup.pick", function(e) {
								switch(e.keyCode) {
								
									case KEY.UP:
										e.preventDefault();
										select.prev();
										break;
									case KEY.DOWN:
										e.preventDefault();
										select.next();
										break;
										
									case KEY.PAGEUP:
										e.preventDefault();
										select.pageUp();
										break;
										
									case KEY.PAGEDOWN:
										e.preventDefault();
										select.pageDown();
										break;
									
									case KEY.TAB:
										break;
									case KEY.RETURN:
										select.do_select();
										if (!o.showSaveBtn && !o.multipleSelect) {
											// save_data();
										}
										break;
									case KEY.ESC:
										e.preventDefault();
										select.unbind();
										is_active = false;
										break;
									
									default:
										var term = $jInput.val(), tmp = [];
										
										if (prev_value != term) {
											jQuery(parsed).each(function(i, v){
												if (matchSubset(v['value'], term)) {
													tmp[tmp.length] = v;
												}
											});
											
											if (tmp.length == 0) {
												tmp = parsed;
											}
											select.display(tmp, term);
										}
								}
								
								prev_value = $jInput.val();
							});
							
							function save_data(){
								var dat;
								try {
									dat = $(container).find(":checkbox:checked:eq(0)").closest("li").data("pick_data").data;
								}
								catch(error){
									dat = {};
								}
								
								var new_val;
								if (dat.length > 0) {
									new_val = dat[o.result_fields_portion];
									$jThis.val(dat[0]);
								}
								else {
									new_val = "";
									$jThis.val("");
								}
								
								if (o.hidden_value) {
									if ($(":hidden#" + o.result_fields_id, "#" + o.form_id).length > 0) {
										$(":hidden#" + o.result_fields_id, "#" + o.form_id).attr("value", new_val);
									}
									else {
										if ($("#" + o.result_fields_id, "#" + o.form_id).length > 0) {
											$("#" + o.result_fields_id, "#" + o.form_id).remove();
										}
										$jThis.prepend("<input type=\"hidden\" id=\"" + o.result_fields_id + "\" name=\"" + o.result_fields_name + "\" value=\"" + new_val + "\" />");
									}
								}
								
								select.unbind();
								is_active = false;
							}
							
							btn.click(function(e){
								save_data();
							});
							
							$(document).unbind("click.picker").bind("click.picker", function(e){
								if (($(e.target).closest("." + o.containerClass).length == 0)) {
									select.unbind();
									is_active = false;
								}
							});
						}
					});
					
					is_active = true;
				}
			});
		});
	};
	
	$.fn.friendPicker.defaults = {
		inputClass            : "pick_input",
		resultsClass          : "pick_results",
		loadingClass          : "pick_loading",
		activeClass           : "pick_active",
		containerClass        : "pick_container",
		scrollHeight          : 200,
		selectFirst           : true,
		multipleSelect        : false,
		max                   : 0,
		request_url           : "",
		result_fields_id      : "",
		result_fields_name    : "",
		result_fields_portion : "0",
		hidden_value          : false,
		form_id               : "",
		showSaveBtn           : true,
		formatItem: function(data, i, n, value, term, checked){
			return "<input type=\"checkbox\" " + (checked ? "checked=\"checked\"" : "") + " /> <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\" style=\"color: #000000;\">$1</span>");
		}
	};
	
})(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);

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

// ################################################################################
;var sIFR=new function(){var O=this;var E={ACTIVE:"sIFR-active",REPLACED:"sIFR-replaced",IGNORE:"sIFR-ignore",ALTERNATE:"sIFR-alternate",CLASS:"sIFR-class",LAYOUT:"sIFR-layout",FLASH:"sIFR-flash",FIX_FOCUS:"sIFR-fixfocus",DUMMY:"sIFR-dummy"};E.IGNORE_CLASSES=[E.REPLACED,E.IGNORE,E.ALTERNATE];this.MIN_FONT_SIZE=6;this.MAX_FONT_SIZE=126;this.FLASH_PADDING_BOTTOM=5;this.VERSION="436";this.isActive=false;this.isEnabled=true;this.fixHover=true;this.autoInitialize=true;this.setPrefetchCookie=true;this.cookiePath="/";this.domains=[];this.forceWidth=true;this.fitExactly=false;this.forceTextTransform=true;this.useDomLoaded=true;this.useStyleCheck=false;this.hasFlashClassSet=false;this.repaintOnResize=true;this.replacements=[];var L=0;var R=false;function Y(){}function D(c){function d(e){return e.toLocaleUpperCase()}this.normalize=function(e){return e.replace(/\n|\r|\xA0/g,D.SINGLE_WHITESPACE).replace(/\s+/g,D.SINGLE_WHITESPACE)};this.textTransform=function(e,f){switch(e){case"uppercase":return f.toLocaleUpperCase();case"lowercase":return f.toLocaleLowerCase();case"capitalize":return f.replace(/^\w|\s\w/g,d)}return f};this.toHexString=function(e){if(e.charAt(0)!="#"||e.length!=4&&e.length!=7){return e}e=e.substring(1);return"0x"+(e.length==3?e.replace(/(.)(.)(.)/,"$1$1$2$2$3$3"):e)};this.toJson=function(g,f){var e="";switch(typeof(g)){case"string":e='"'+f(g)+'"';break;case"number":case"boolean":e=g.toString();break;case"object":e=[];for(var h in g){if(g[h]==Object.prototype[h]){continue}e.push('"'+h+'":'+this.toJson(g[h]))}e="{"+e.join(",")+"}";break}return e};this.convertCssArg=function(e){if(!e){return{}}if(typeof(e)=="object"){if(e.constructor==Array){e=e.join("")}else{return e}}var l={};var m=e.split("}");for(var h=0;h<m.length;h++){var k=m[h].match(/([^\s{]+)\s*\{(.+)\s*;?\s*/);if(!k||k.length!=3){continue}if(!l[k[1]]){l[k[1]]={}}var g=k[2].split(";");for(var f=0;f<g.length;f++){var n=g[f].match(/\s*([^:\s]+)\s*\:\s*([^;]+)/);if(!n||n.length!=3){continue}l[k[1]][n[1]]=n[2].replace(/\s+$/,"")}}return l};this.extractFromCss=function(g,f,i,e){var h=null;if(g&&g[f]&&g[f][i]){h=g[f][i];if(e){delete g[f][i]}}return h};this.cssToString=function(f){var g=[];for(var e in f){var j=f[e];if(j==Object.prototype[e]){continue}g.push(e,"{");for(var i in j){if(j[i]==Object.prototype[i]){continue}var h=j[i];if(D.UNIT_REMOVAL_PROPERTIES[i]){h=parseInt(h,10)}g.push(i,":",h,";")}g.push("}")}return g.join("")};this.escape=function(e){return escape(e).replace(/\+/g,"%2B")};this.encodeVars=function(e){return e.join("&").replace(/%/g,"%25")};this.copyProperties=function(g,f){for(var e in g){if(f[e]===undefined){f[e]=g[e]}}return f};this.domain=function(){var f="";try{f=document.domain}catch(g){}return f};this.domainMatches=function(h,g){if(g=="*"||g==h){return true}var f=g.lastIndexOf("*");if(f>-1){g=g.substr(f+1);var e=h.lastIndexOf(g);if(e>-1&&(e+g.length)==h.length){return true}}return false};this.uriEncode=function(e){return encodeURI(decodeURIComponent(e))};this.delay=function(f,h,g){var e=Array.prototype.slice.call(arguments,3);setTimeout(function(){h.apply(g,e)},f)}}D.UNIT_REMOVAL_PROPERTIES={leading:true,"margin-left":true,"margin-right":true,"text-indent":true};D.SINGLE_WHITESPACE=" ";function U(e){var d=this;function c(g,j,h){var k=d.getStyleAsInt(g,j,e.ua.ie);if(k==0){k=g[h];for(var f=3;f<arguments.length;f++){k-=d.getStyleAsInt(g,arguments[f],true)}}return k}this.getBody=function(){return document.getElementsByTagName("body")[0]||null};this.querySelectorAll=function(f){return window.parseSelector(f)};this.addClass=function(f,g){if(g){g.className=((g.className||"")==""?"":g.className+" ")+f}};this.removeClass=function(f,g){if(g){g.className=g.className.replace(new RegExp("(^|\\s)"+f+"(\\s|$)"),"").replace(/^\s+|(\s)\s+/g,"$1")}};this.hasClass=function(f,g){return new RegExp("(^|\\s)"+f+"(\\s|$)").test(g.className)};this.hasOneOfClassses=function(h,g){for(var f=0;f<h.length;f++){if(this.hasClass(h[f],g)){return true}}return false};this.ancestorHasClass=function(g,f){g=g.parentNode;while(g&&g.nodeType==1){if(this.hasClass(f,g)){return true}g=g.parentNode}return false};this.create=function(f,g){var h=document.createElementNS?document.createElementNS(U.XHTML_NS,f):document.createElement(f);if(g){h.className=g}return h};this.getComputedStyle=function(h,i){var f;if(document.defaultView&&document.defaultView.getComputedStyle){var g=document.defaultView.getComputedStyle(h,null);f=g?g[i]:null}else{if(h.currentStyle){f=h.currentStyle[i]}}return f||""};this.getStyleAsInt=function(g,i,f){var h=this.getComputedStyle(g,i);if(f&&!/px$/.test(h)){return 0}return parseInt(h)||0};this.getWidthFromStyle=function(f){return c(f,"width","offsetWidth","paddingRight","paddingLeft","borderRightWidth","borderLeftWidth")};this.getHeightFromStyle=function(f){return c(f,"height","offsetHeight","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth")};this.getDimensions=function(j){var h=j.offsetWidth;var f=j.offsetHeight;if(h==0||f==0){for(var g=0;g<j.childNodes.length;g++){var k=j.childNodes[g];if(k.nodeType!=1){continue}h=Math.max(h,k.offsetWidth);f=Math.max(f,k.offsetHeight)}}return{width:h,height:f}};this.getViewport=function(){return{width:window.innerWidth||document.documentElement.clientWidth||this.getBody().clientWidth,height:window.innerHeight||document.documentElement.clientHeight||this.getBody().clientHeight}};this.blurElement=function(g){try{g.blur();return}catch(h){}var f=this.create("input");f.style.width="0px";f.style.height="0px";g.parentNode.appendChild(f);f.focus();f.blur();f.parentNode.removeChild(f)}}U.XHTML_NS="http://www.w3.org/1999/xhtml";function H(r){var g=navigator.userAgent.toLowerCase();var q=(navigator.product||"").toLowerCase();var h=navigator.platform.toLowerCase();this.parseVersion=H.parseVersion;this.macintosh=/^mac/.test(h);this.windows=/^win/.test(h);this.linux=/^linux/.test(h);this.quicktime=false;this.opera=/opera/.test(g);this.konqueror=/konqueror/.test(g);this.ie=false/*@cc_on||true@*/;this.ieSupported=this.ie&&!/ppc|smartphone|iemobile|msie\s5\.5/.test(g)/*@cc_on&&@_jscript_version>=5.5@*/;this.ieWin=this.ie&&this.windows/*@cc_on&&@_jscript_version>=5.1@*/;this.windows=this.windows&&(!this.ie||this.ieWin);this.ieMac=this.ie&&this.macintosh/*@cc_on&&@_jscript_version<5.1@*/;this.macintosh=this.macintosh&&(!this.ie||this.ieMac);this.safari=/safari/.test(g);this.webkit=!this.konqueror&&/applewebkit/.test(g);this.khtml=this.webkit||this.konqueror;this.gecko=!this.khtml&&q=="gecko";this.ieVersion=this.ie&&/.*msie\s(\d\.\d)/.exec(g)?this.parseVersion(RegExp.$1):"0";this.operaVersion=this.opera&&/.*opera(\s|\/)(\d+\.\d+)/.exec(g)?this.parseVersion(RegExp.$2):"0";this.webkitVersion=this.webkit&&/.*applewebkit\/(\d+).*/.exec(g)?this.parseVersion(RegExp.$1):"0";this.geckoVersion=this.gecko&&/.*rv:\s*([^\)]+)\)\s+gecko/.exec(g)?this.parseVersion(RegExp.$1):"0";this.konquerorVersion=this.konqueror&&/.*konqueror\/([\d\.]+).*/.exec(g)?this.parseVersion(RegExp.$1):"0";this.flashVersion=0;if(this.ieWin){var l;var o=false;try{l=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(m){try{l=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");this.flashVersion=this.parseVersion("6");l.AllowScriptAccess="always"}catch(m){o=this.flashVersion==this.parseVersion("6")}if(!o){try{l=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(m){}}}if(!o&&l){this.flashVersion=this.parseVersion((l.GetVariable("$version")||"").replace(/^\D+(\d+)\D+(\d+)\D+(\d+).*/g,"$1.$2.$3"))}}else{if(navigator.plugins&&navigator.plugins["Shockwave Flash"]){var n=navigator.plugins["Shockwave Flash"].description.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var p=n.replace(/^\D*(\d+\.\d+).*$/,"$1");if(/r/.test(n)){p+=n.replace(/^.*r(\d*).*$/,".$1")}else{if(/d/.test(n)){p+=".0"}}this.flashVersion=this.parseVersion(p);var j=false;for(var k=0,c=this.flashVersion>=H.MIN_FLASH_VERSION;c&&k<navigator.mimeTypes.length;k++){var f=navigator.mimeTypes[k];if(f.type!="application/x-shockwave-flash"){continue}if(f.enabledPlugin){j=true;if(f.enabledPlugin.description.toLowerCase().indexOf("quicktime")>-1){c=false;this.quicktime=true}}}if(this.quicktime||!j){this.flashVersion=this.parseVersion("0")}}}this.flash=this.flashVersion>=H.MIN_FLASH_VERSION;this.transparencySupport=this.macintosh||this.windows||this.linux&&(this.flashVersion>=this.parseVersion("10")&&(this.gecko&&this.geckoVersion>=this.parseVersion("1.9")||this.opera));this.computedStyleSupport=this.ie||!!document.defaultView.getComputedStyle;this.fixFocus=this.gecko&&this.windows;this.nativeDomLoaded=this.gecko||this.webkit&&this.webkitVersion>=this.parseVersion("525")||this.konqueror&&this.konquerorMajor>this.parseVersion("03")||this.opera;this.mustCheckStyle=this.khtml||this.opera;this.forcePageLoad=this.webkit&&this.webkitVersion<this.parseVersion("523");this.properDocument=typeof(document.location)=="object";this.supported=this.flash&&this.properDocument&&(!this.ie||this.ieSupported)&&this.computedStyleSupport&&(!this.opera||this.operaVersion>=this.parseVersion("9.61"))&&(!this.webkit||this.webkitVersion>=this.parseVersion("412"))&&(!this.gecko||this.geckoVersion>=this.parseVersion("1.8.0.12"))&&(!this.konqueror)}H.parseVersion=function(c){return c.replace(/(^|\D)(\d+)(?=\D|$)/g,function(f,e,g){f=e;for(var d=4-g.length;d>=0;d--){f+="0"}return f+g})};H.MIN_FLASH_VERSION=H.parseVersion("8");function F(c){this.fix=c.ua.ieWin&&window.location.hash!="";var d;this.cache=function(){d=document.title};function e(){document.title=d}this.restore=function(){if(this.fix){setTimeout(e,0)}}}function S(l){var e=null;function c(){try{if(l.ua.ie||document.readyState!="loaded"&&document.readyState!="complete"){document.documentElement.doScroll("left")}}catch(n){return setTimeout(c,10)}i()}function i(){if(l.useStyleCheck){h()}else{if(!l.ua.mustCheckStyle){d(null,true)}}}function h(){e=l.dom.create("div",E.DUMMY);l.dom.getBody().appendChild(e);m()}function m(){if(l.dom.getComputedStyle(e,"marginLeft")=="42px"){g()}else{setTimeout(m,10)}}function g(){if(e&&e.parentNode){e.parentNode.removeChild(e)}e=null;d(null,true)}function d(n,o){l.initialize(o);if(n&&n.type=="load"){if(document.removeEventListener){document.removeEventListener("DOMContentLoaded",d,false)}if(window.removeEventListener){window.removeEventListener("load",d,false)}}}function j(){l.prepareClearReferences();if(document.readyState=="interactive"){document.attachEvent("onstop",f);setTimeout(function(){document.detachEvent("onstop",f)},0)}}function f(){document.detachEvent("onstop",f);k()}function k(){l.clearReferences()}this.attach=function(){if(window.addEventListener){window.addEventListener("load",d,false)}else{window.attachEvent("onload",d)}if(!l.useDomLoaded||l.ua.forcePageLoad||l.ua.ie&&window.top!=window){return}if(l.ua.nativeDomLoaded){document.addEventListener("DOMContentLoaded",i,false)}else{if(l.ua.ie||l.ua.khtml){c()}}};this.attachUnload=function(){if(!l.ua.ie){return}window.attachEvent("onbeforeunload",j);window.attachEvent("onunload",k)}}var Q="sifrFetch";function N(c){var e=false;this.fetchMovies=function(f){if(c.setPrefetchCookie&&new RegExp(";?"+Q+"=true;?").test(document.cookie)){return}try{e=true;d(f)}catch(g){}if(c.setPrefetchCookie){document.cookie=Q+"=true;path="+c.cookiePath}};this.clear=function(){if(!e){return}try{var f=document.getElementsByTagName("script");for(var g=f.length-1;g>=0;g--){var h=f[g];if(h.type=="sifr/prefetch"){h.parentNode.removeChild(h)}}}catch(j){}};function d(f){for(var g=0;g<f.length;g++){document.write('<script defer type="sifr/prefetch" src="'+f[g].src+'"><\/script>')}}}function b(e){var g=e.ua.ie;var f=g&&e.ua.flashVersion<e.ua.parseVersion("9.0.115");var d={};var c={};this.fixFlash=f;this.register=function(h){if(!g){return}var i=h.getAttribute("id");this.cleanup(i,false);c[i]=h;delete d[i];if(f){window[i]=h}};this.reset=function(){if(!g){return false}for(var j=0;j<e.replacements.length;j++){var h=e.replacements[j];var k=c[h.id];if(!d[h.id]&&(!k.parentNode||k.parentNode.nodeType==11)){h.resetMovie();d[h.id]=true}}return true};this.cleanup=function(l,h){var i=c[l];if(!i){return}for(var k in i){if(typeof(i[k])=="function"){i[k]=null}}c[l]=null;if(f){window[l]=null}if(i.parentNode){if(h&&i.parentNode.nodeType==1){var j=document.createElement("div");j.style.width=i.offsetWidth+"px";j.style.height=i.offsetHeight+"px";i.parentNode.replaceChild(j,i)}else{i.parentNode.removeChild(i)}}};this.prepareClearReferences=function(){if(!f){return}__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}};this.clearReferences=function(){if(f){var j=document.getElementsByTagName("object");for(var h=j.length-1;h>=0;h--){c[j[h].getAttribute("id")]=j[h]}}for(var k in c){if(Object.prototype[k]!=c[k]){this.cleanup(k,true)}}}}function K(d,g,f,c,e){this.sIFR=d;this.id=g;this.vars=f;this.movie=null;this.__forceWidth=c;this.__events=e;this.__resizing=0}K.prototype={getFlashElement:function(){return document.getElementById(this.id)},getAlternate:function(){return document.getElementById(this.id+"_alternate")},getAncestor:function(){var c=this.getFlashElement().parentNode;return !this.sIFR.dom.hasClass(E.FIX_FOCUS,c)?c:c.parentNode},available:function(){var c=this.getFlashElement();return c&&c.parentNode},call:function(c){var d=this.getFlashElement();if(!d[c]){return false}return Function.prototype.apply.call(d[c],d,Array.prototype.slice.call(arguments,1))},attempt:function(){if(!this.available()){return false}try{this.call.apply(this,arguments)}catch(c){if(this.sIFR.debug){throw c}return false}return true},updateVars:function(c,e){for(var d=0;d<this.vars.length;d++){if(this.vars[d].split("=")[0]==c){this.vars[d]=c+"="+e;break}}var f=this.sIFR.util.encodeVars(this.vars);this.movie.injectVars(this.getFlashElement(),f);this.movie.injectVars(this.movie.html,f)},storeSize:function(c,d){this.movie.setSize(c,d);this.updateVars(c,d)},fireEvent:function(c){if(this.available()&&this.__events[c]){this.sIFR.util.delay(0,this.__events[c],this,this)}},resizeFlashElement:function(c,d,e){if(!this.available()){return}this.__resizing++;var f=this.getFlashElement();f.setAttribute("height",c);this.getAncestor().style.minHeight="";this.updateVars("renderheight",c);this.storeSize("height",c);if(d!==null){f.setAttribute("width",d);this.movie.setSize("width",d)}if(this.__events.onReplacement){this.sIFR.util.delay(0,this.__events.onReplacement,this,this);delete this.__events.onReplacement}if(e){this.sIFR.util.delay(0,function(){this.attempt("scaleMovie");this.__resizing--},this)}else{this.__resizing--}},blurFlashElement:function(){if(this.available()){this.sIFR.dom.blurElement(this.getFlashElement())}},resetMovie:function(){this.sIFR.util.delay(0,this.movie.reset,this.movie,this.getFlashElement(),this.getAlternate())},resizeAfterScale:function(){if(this.available()&&this.__resizing==0){this.sIFR.util.delay(0,this.resize,this)}},resize:function(){if(!this.available()){return}this.__resizing++;var g=this.getFlashElement();var f=g.offsetWidth;if(f==0){return}var e=g.getAttribute("width");var l=g.getAttribute("height");var m=this.getAncestor();var o=this.sIFR.dom.getHeightFromStyle(m);g.style.width="1px";g.style.height="1px";m.style.minHeight=o+"px";var c=this.getAlternate().childNodes;var n=[];for(var k=0;k<c.length;k++){var h=c[k].cloneNode(true);n.push(h);m.appendChild(h)}var d=this.sIFR.dom.getWidthFromStyle(m);for(var k=0;k<n.length;k++){m.removeChild(n[k])}g.style.width=g.style.height=m.style.minHeight="";g.setAttribute("width",this.__forceWidth?d:e);g.setAttribute("height",l);if(sIFR.ua.ie){g.style.display="none";var j=g.offsetHeight;g.style.display=""}if(d!=f){if(this.__forceWidth){this.storeSize("width",d)}this.attempt("resize",d)}this.__resizing--},replaceText:function(g,j){var d=this.sIFR.util.escape(g);if(!this.attempt("replaceText",d)){return false}this.updateVars("content",d);var f=this.getAlternate();if(j){while(f.firstChild){f.removeChild(f.firstChild)}for(var c=0;c<j.length;c++){f.appendChild(j[c])}}else{try{f.innerHTML=g}catch(h){}}return true},changeCSS:function(c){c=this.sIFR.util.escape(this.sIFR.util.cssToString(this.sIFR.util.convertCssArg(c)));this.updateVars("css",c);return this.attempt("changeCSS",c)},remove:function(){if(this.movie&&this.available()){this.movie.remove(this.getFlashElement(),this.id)}}};var X=new function(){this.create=function(p,n,j,i,f,e,g,o,l,h,m){var k=p.ua.ie?d:c;return new k(p,n,j,i,f,e,g,o,["flashvars",l,"wmode",h,"bgcolor",m,"allowScriptAccess","always","quality","best"])};function c(s,q,l,h,f,e,g,r,n){var m=s.dom.create("object",E.FLASH);var p=["type","application/x-shockwave-flash","id",f,"name",f,"data",e,"width",g,"height",r];for(var o=0;o<p.length;o+=2){m.setAttribute(p[o],p[o+1])}var j=m;if(h){j=W.create("div",E.FIX_FOCUS);j.appendChild(m)}for(var o=0;o<n.length;o+=2){if(n[o]=="name"){continue}var k=W.create("param");k.setAttribute("name",n[o]);k.setAttribute("value",n[o+1]);m.appendChild(k)}l.style.minHeight=r+"px";while(l.firstChild){l.removeChild(l.firstChild)}l.appendChild(j);this.html=j.cloneNode(true)}c.prototype={reset:function(e,f){e.parentNode.replaceChild(this.html.cloneNode(true),e)},remove:function(e,f){e.parentNode.removeChild(e)},setSize:function(e,f){this.html.setAttribute(e,f)},injectVars:function(e,g){var h=e.getElementsByTagName("param");for(var f=0;f<h.length;f++){if(h[f].getAttribute("name")=="flashvars"){h[f].setAttribute("value",g);break}}}};function d(p,n,j,h,f,e,g,o,k){this.dom=p.dom;this.broken=n;this.html='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="'+f+'" width="'+g+'" height="'+o+'" class="'+E.FLASH+'"><param name="movie" value="'+e+'"></param></object>';var m="";for(var l=0;l<k.length;l+=2){m+='<param name="'+k[l]+'" value="'+k[l+1]+'"></param>'}this.html=this.html.replace(/(<\/object>)/,m+"$1");j.style.minHeight=o+"px";j.innerHTML=this.html;this.broken.register(j.firstChild)}d.prototype={reset:function(f,g){g=g.cloneNode(true);var e=f.parentNode;e.innerHTML=this.html;this.broken.register(e.firstChild);e.appendChild(g)},remove:function(e,f){this.broken.cleanup(f)},setSize:function(e,f){this.html=this.html.replace(e=="height"?/(height)="\d+"/:/(width)="\d+"/,'$1="'+f+'"')},injectVars:function(e,f){if(e!=this.html){return}this.html=this.html.replace(/(flashvars(=|\"\svalue=)\")[^\"]+/,"$1"+f)}}};this.errors=new Y(O);var A=this.util=new D(O);var W=this.dom=new U(O);var T=this.ua=new H(O);var G={fragmentIdentifier:new F(O),pageLoad:new S(O),prefetch:new N(O),brokenFlashIE:new b(O)};this.__resetBrokenMovies=G.brokenFlashIE.reset;var J={kwargs:[],replaceAll:function(d){for(var c=0;c<this.kwargs.length;c++){O.replace(this.kwargs[c])}if(!d){this.kwargs=[]}}};this.activate=function(){if(!T.supported||!this.isEnabled||this.isActive||!C()||a()){return}G.prefetch.fetchMovies(arguments);this.isActive=true;this.setFlashClass();G.fragmentIdentifier.cache();G.pageLoad.attachUnload();if(!this.autoInitialize){return}G.pageLoad.attach()};this.setFlashClass=function(){if(this.hasFlashClassSet){return}W.addClass(E.ACTIVE,W.getBody()||document.documentElement);this.hasFlashClassSet=true};this.removeFlashClass=function(){if(!this.hasFlashClassSet){return}W.removeClass(E.ACTIVE,W.getBody());W.removeClass(E.ACTIVE,document.documentElement);this.hasFlashClassSet=false};this.initialize=function(c){if(!this.isActive||!this.isEnabled){return}if(R){if(!c){J.replaceAll(false)}return}R=true;J.replaceAll(c);if(O.repaintOnResize){if(window.addEventListener){window.addEventListener("resize",Z,false)}else{window.attachEvent("onresize",Z)}}G.prefetch.clear()};this.replace=function(x,u){if(!T.supported){return}if(u){x=A.copyProperties(x,u)}if(!R){return J.kwargs.push(x)}if(this.onReplacementStart){this.onReplacementStart(x)}var AM=x.elements||W.querySelectorAll(x.selector);if(AM.length==0){return}var w=M(x.src);var AR=A.convertCssArg(x.css);var v=B(x.filters);var AN=x.forceSingleLine===true;var AS=x.preventWrap===true&&!AN;var q=AN||(x.fitExactly==null?this.fitExactly:x.fitExactly)===true;var AD=q||(x.forceWidth==null?this.forceWidth:x.forceWidth)===true;var s=x.ratios||[];var AE=x.pixelFont===true;var r=parseInt(x.tuneHeight)||0;var z=!!x.onRelease||!!x.onRollOver||!!x.onRollOut;if(q){A.extractFromCss(AR,".sIFR-root","text-align",true)}var t=A.extractFromCss(AR,".sIFR-root","font-size",true)||"0";var e=A.extractFromCss(AR,".sIFR-root","background-color",true)||"#FFFFFF";var o=A.extractFromCss(AR,".sIFR-root","kerning",true)||"";var AW=A.extractFromCss(AR,".sIFR-root","opacity",true)||"100";var k=A.extractFromCss(AR,".sIFR-root","cursor",true)||"default";var AP=parseInt(A.extractFromCss(AR,".sIFR-root","leading"))||0;var AJ=x.gridFitType||(A.extractFromCss(AR,".sIFR-root","text-align")=="right")?"subpixel":"pixel";var h=this.forceTextTransform===false?"none":A.extractFromCss(AR,".sIFR-root","text-transform",true)||"none";t=/^\d+(px)?$/.test(t)?parseInt(t):0;AW=parseFloat(AW)<1?100*parseFloat(AW):AW;var AC=x.modifyCss?"":A.cssToString(AR);var AG=x.wmode||"";if(!AG){if(x.transparent){AG="transparent"}else{if(x.opaque){AG="opaque"}}}if(AG=="transparent"){if(!T.transparencySupport){AG="opaque"}else{e="transparent"}}else{if(e=="transparent"){e="#FFFFFF"}}for(var AV=0;AV<AM.length;AV++){var AF=AM[AV];if(W.hasOneOfClassses(E.IGNORE_CLASSES,AF)||W.ancestorHasClass(AF,E.ALTERNATE)){continue}var AO=W.getDimensions(AF);var f=AO.height;var c=AO.width;var AA=W.getComputedStyle(AF,"display");if(!f||!c||!AA||AA=="none"){continue}c=W.getWidthFromStyle(AF);var n,AH;if(!t){var AL=I(AF);n=Math.min(this.MAX_FONT_SIZE,Math.max(this.MIN_FONT_SIZE,AL.fontSize));if(AE){n=Math.max(8,8*Math.round(n/8))}AH=AL.lines}else{n=t;AH=1}var d=W.create("span",E.ALTERNATE);var AX=AF.cloneNode(true);AF.parentNode.appendChild(AX);for(var AU=0,AT=AX.childNodes.length;AU<AT;AU++){var m=AX.childNodes[AU];if(!/^(style|script)$/i.test(m.nodeName)){d.appendChild(m.cloneNode(true))}}if(x.modifyContent){x.modifyContent(AX,x.selector)}if(x.modifyCss){AC=x.modifyCss(AR,AX,x.selector)}var p=P(AX,h,x.uriEncode);AX.parentNode.removeChild(AX);if(x.modifyContentString){p.text=x.modifyContentString(p.text,x.selector)}if(p.text==""){continue}var AK=Math.round(AH*V(n,s)*n)+this.FLASH_PADDING_BOTTOM+r;if(AH>1&&AP){AK+=Math.round((AH-1)*AP)}var AB=AD?c:"100%";var AI="sIFR_replacement_"+L++;var AQ=["id="+AI,"content="+A.escape(p.text),"width="+c,"renderheight="+AK,"link="+A.escape(p.primaryLink.href||""),"target="+A.escape(p.primaryLink.target||""),"size="+n,"css="+A.escape(AC),"cursor="+k,"tunewidth="+(x.tuneWidth||0),"tuneheight="+r,"offsetleft="+(x.offsetLeft||""),"offsettop="+(x.offsetTop||""),"fitexactly="+q,"preventwrap="+AS,"forcesingleline="+AN,"antialiastype="+(x.antiAliasType||""),"thickness="+(x.thickness||""),"sharpness="+(x.sharpness||""),"kerning="+o,"gridfittype="+AJ,"flashfilters="+v,"opacity="+AW,"blendmode="+(x.blendMode||""),"selectable="+(x.selectable==null||AG!=""&&!sIFR.ua.macintosh&&sIFR.ua.gecko&&sIFR.ua.geckoVersion>=sIFR.ua.parseVersion("1.9")?"true":x.selectable===true),"fixhover="+(this.fixHover===true),"events="+z,"delayrun="+G.brokenFlashIE.fixFlash,"version="+this.VERSION];var y=A.encodeVars(AQ);var g=new K(O,AI,AQ,AD,{onReplacement:x.onReplacement,onRollOver:x.onRollOver,onRollOut:x.onRollOut,onRelease:x.onRelease});g.movie=X.create(sIFR,G.brokenFlashIE,AF,T.fixFocus&&x.fixFocus,AI,w,AB,AK,y,AG,e);this.replacements.push(g);this.replacements[AI]=g;if(x.selector){if(!this.replacements[x.selector]){this.replacements[x.selector]=[g]}else{this.replacements[x.selector].push(g)}}d.setAttribute("id",AI+"_alternate");AF.appendChild(d);W.addClass(E.REPLACED,AF)}G.fragmentIdentifier.restore()};this.getReplacementByFlashElement=function(d){for(var c=0;c<O.replacements.length;c++){if(O.replacements[c].id==d.getAttribute("id")){return O.replacements[c]}}};this.redraw=function(){for(var c=0;c<O.replacements.length;c++){O.replacements[c].resetMovie()}};this.prepareClearReferences=function(){G.brokenFlashIE.prepareClearReferences()};this.clearReferences=function(){G.brokenFlashIE.clearReferences();G=null;J=null;delete O.replacements};function C(){if(O.domains.length==0){return true}var d=A.domain();for(var c=0;c<O.domains.length;c++){if(A.domainMatches(d,O.domains[c])){return true}}return false}function a(){if(document.location.protocol=="file:"){if(O.debug){O.errors.fire("isFile")}return true}return false}function M(c){if(T.ie&&c.charAt(0)=="/"){c=window.location.toString().replace(/([^:]+)(:\/?\/?)([^\/]+).*/,"$1$2$3")+c}return c}function V(d,e){for(var c=0;c<e.length;c+=2){if(d<=e[c]){return e[c+1]}}return e[e.length-1]||1}function B(g){var e=[];for(var d in g){if(g[d]==Object.prototype[d]){continue}var c=g[d];d=[d.replace(/filter/i,"")+"Filter"];for(var f in c){if(c[f]==Object.prototype[f]){continue}d.push(f+":"+A.escape(A.toJson(c[f],A.toHexString)))}e.push(d.join(","))}return A.escape(e.join(";"))}function Z(d){var e=Z.viewport;var c=W.getViewport();if(e&&c.width==e.width&&c.height==e.height){return}Z.viewport=c;if(O.replacements.length==0){return}if(Z.timer){clearTimeout(Z.timer)}Z.timer=setTimeout(function(){delete Z.timer;for(var f=0;f<O.replacements.length;f++){O.replacements[f].resize()}},200)}function I(f){var g=W.getComputedStyle(f,"fontSize");var d=g.indexOf("px")==-1;var e=f.innerHTML;if(d){f.innerHTML="X"}f.style.paddingTop=f.style.paddingBottom=f.style.borderTopWidth=f.style.borderBottomWidth="0px";f.style.lineHeight="2em";f.style.display="block";g=d?f.offsetHeight/2:parseInt(g,10);if(d){f.innerHTML=e}var c=Math.round(f.offsetHeight/(2*g));f.style.paddingTop=f.style.paddingBottom=f.style.borderTopWidth=f.style.borderBottomWidth=f.style.lineHeight=f.style.display="";if(isNaN(c)||!isFinite(c)||c==0){c=1}return{fontSize:g,lines:c}}function P(c,g,s){s=s||A.uriEncode;var q=[],m=[];var k=null;var e=c.childNodes;var o=false,p=false;var j=0;while(j<e.length){var f=e[j];if(f.nodeType==3){var t=A.textTransform(g,A.normalize(f.nodeValue)).replace(/</g,"&lt;");if(o&&p){t=t.replace(/^\s+/,"")}m.push(t);o=/\s$/.test(t);p=false}if(f.nodeType==1&&!/^(style|script)$/i.test(f.nodeName)){var h=[];var r=f.nodeName.toLowerCase();var n=f.className||"";if(/\s+/.test(n)){if(n.indexOf(E.CLASS)>-1){n=n.match("(\\s|^)"+E.CLASS+"-([^\\s$]*)(\\s|$)")[2]}else{n=n.match(/^([^\s]+)/)[1]}}if(n!=""){h.push('class="'+n+'"')}if(r=="a"){var d=s(f.getAttribute("href")||"");var l=f.getAttribute("target")||"";h.push('href="'+d+'"','target="'+l+'"');if(!k){k={href:d,target:l}}}m.push("<"+r+(h.length>0?" ":"")+h.join(" ")+">");p=true;if(f.hasChildNodes()){q.push(j);j=0;e=f.childNodes;continue}else{if(!/^(br|img)$/i.test(f.nodeName)){m.push("</",f.nodeName.toLowerCase(),">")}}}if(q.length>0&&!f.nextSibling){do{j=q.pop();e=f.parentNode.parentNode.childNodes;f=e[j];if(f){m.push("</",f.nodeName.toLowerCase(),">")}}while(j==e.length-1&&q.length>0)}j++}return{text:m.join("").replace(/^\s+|\s+$|\s*(<br>)\s*/g,"$1"),primaryLink:k||{}}}};
var parseSelector=(function(){var B=/\s*,\s*/;var A=/\s*([\s>+~(),]|^|$)\s*/g;var L=/([\s>+~,]|[^(]\+|^)([#.:@])/g;var F=/(^|\))[^\s>+~]/g;var M=/(\)|^)/;var K=/[\s#.:>+~()@]|[^\s#.:>+~()@]+/g;function H(R,P){P=P||document.documentElement;var S=R.split(B),X=[];for(var U=0;U<S.length;U++){var N=[P],W=G(S[U]);for(var T=0;T<W.length;){var Q=W[T++],O=W[T++],V="";if(W[T]=="("){while(W[T++]!=")"&&T<W.length){V+=W[T]}V=V.slice(0,-1)}N=I(N,Q,O,V)}X=X.concat(N)}return X}function G(N){var O=N.replace(A,"$1").replace(L,"$1*$2").replace(F,D);return O.match(K)||[]}function D(N){return N.replace(M,"$1 ")}function I(N,P,Q,O){return(H.selectors[P])?H.selectors[P](N,Q,O):[]}var E={toArray:function(O){var N=[];for(var P=0;P<O.length;P++){N.push(O[P])}return N}};var C={isTag:function(O,N){return(N=="*")||(N.toLowerCase()==O.nodeName.toLowerCase())},previousSiblingElement:function(N){do{N=N.previousSibling}while(N&&N.nodeType!=1);return N},nextSiblingElement:function(N){do{N=N.nextSibling}while(N&&N.nodeType!=1);return N},hasClass:function(N,O){return(O.className||"").match("(^|\\s)"+N+"(\\s|$)")},getByTag:function(N,O){return O.getElementsByTagName(N)}};var J={"#":function(N,P){for(var O=0;O<N.length;O++){if(N[O].getAttribute("id")==P){return[N[O]]}}return[]}," ":function(O,Q){var N=[];for(var P=0;P<O.length;P++){N=N.concat(E.toArray(C.getByTag(Q,O[P])))}return N},">":function(O,R){var N=[];for(var Q=0,S;Q<O.length;Q++){S=O[Q];for(var P=0,T;P<S.childNodes.length;P++){T=S.childNodes[P];if(T.nodeType==1&&C.isTag(T,R)){N.push(T)}}}return N},".":function(O,Q){var N=[];for(var P=0,R;P<O.length;P++){R=O[P];if(C.hasClass([Q],R)){N.push(R)}}return N},":":function(N,P,O){return(H.pseudoClasses[P])?H.pseudoClasses[P](N,O):[]}};H.selectors=J;H.pseudoClasses={};H.util=E;H.dom=C;return H})();

var helvetica = { src: PATH_STATIC + '/js/sifr/helveticaneueltstd-cn.swf' };

sIFR.activate(helvetica);

sIFR.replace(helvetica, {
	selector: '.head_1, .head_2, .contest_photo_text, .contest_video_text',
	//css: '.sIFR-root { color: #f3f3f3; }',
	wmode: 'transparent'
});

sIFR.replace(helvetica, {
	selector: '.head_3, #contest_title_view',
	css: '.sIFR-root { color: #cc3333; }',
	wmode: 'transparent'
});

sIFR.replace(helvetica, {
	selector: '.contest_or',
	css: '.sIFR-root { color: #858282; font-size: 30px;}',
	wmode: 'transparent'
});