
/*

 * jQuery JavaScript Library v1.3.2

 * http://jquery.com/

 *

 * Copyright (c) 2009 John Resig

 * Dual licensed under the MIT and GPL licenses.

 * http://docs.jquery.com/License

 *

 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)

 * Revision: 6246

 */

(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});

/*

 * Sizzle CSS Selector Engine - v0.9.3

 *  Copyright 2009, The Dojo Foundation

 *  Released under the MIT, BSD, and GPL Licenses.

 *  More information: http://sizzlejs.com/

 */

(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();


/**

 * Cookie plugin

 *

 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)

 * Dual licensed under the MIT and GPL licenses:

 * http://www.opensource.org/licenses/mit-license.php

 * http://www.gnu.org/licenses/gpl.html

 *

 */



/**

 * Create a cookie with the given name and value and other optional parameters.

 *

 * @example $.cookie('the_cookie', 'the_value');

 * @desc Set the value of a cookie.

 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });

 * @desc Create a cookie with all available options.

 * @example $.cookie('the_cookie', 'the_value');

 * @desc Create a session cookie.

 * @example $.cookie('the_cookie', null);

 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain

 *       used when the cookie was set.

 *

 * @param String name The name of the cookie.

 * @param String value The value of the cookie.

 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.

 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.

 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.

 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained

 *                             when the the browser exits.

 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).

 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).

 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will

 *                        require a secure protocol (like HTTPS).

 * @type undefined

 *

 * @name $.cookie

 * @cat Plugins/Cookie

 * @author Klaus Hartl/klaus.hartl@stilbuero.de

 */



/**

 * Get the value of a cookie with the given name.

 *

 * @example $.cookie('the_cookie');

 * @desc Get the value of a cookie.

 *

 * @param String name The name of the cookie.

 * @return The value of the cookie.

 * @type String

 *

 * @name $.cookie

 * @cat Plugins/Cookie

 * @author Klaus Hartl/klaus.hartl@stilbuero.de

 */

jQuery.cookie = function(name, value, options) {

    if (typeof value != 'undefined') { // name and value given, set cookie

        options = options || {};

        if (value === null) {

            value = '';

            options.expires = -1;

        }

        var expires = '';

        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {

            var date;

            if (typeof options.expires == 'number') {

                date = new Date();

                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));

            } else {

                date = options.expires;

            }

            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE

        }

        // CAUTION: Needed to parenthesize options.path and options.domain

        // in the following expressions, otherwise they evaluate to undefined

        // in the packed version for some reason...

        var path = options.path ? '; path=' + (options.path) : '';

        var domain = options.domain ? '; domain=' + (options.domain) : '';

        var secure = options.secure ? '; secure' : '';

        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');

    } else { // only name given, get cookie

        var cookieValue = null;

        if (document.cookie && document.cookie != '') {

            var cookies = document.cookie.split(';');

            for (var i = 0; i < cookies.length; i++) {

                var cookie = jQuery.trim(cookies[i]);

                // Does this cookie string begin with the name we want?

                if (cookie.substring(0, name.length + 1) == (name + '=')) {

                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));

                    break;

                }

            }

        }

        return cookieValue;

    }

};

/*

 * jQuery UI 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI

 */

;jQuery.ui || (function($) {



var _remove = $.fn.remove,

	isFF2 = $.browser.mozilla && (parseFloat($.browser.version) < 1.9);



//Helper functions and ui object

$.ui = {

	version: "1.7.2",



	// $.ui.plugin is deprecated.  Use the proxy pattern instead.

	plugin: {

		add: function(module, option, set) {

			var proto = $.ui[module].prototype;

			for(var i in set) {

				proto.plugins[i] = proto.plugins[i] || [];

				proto.plugins[i].push([option, set[i]]);

			}

		},

		call: function(instance, name, args) {

			var set = instance.plugins[name];

			if(!set || !instance.element[0].parentNode) { return; }



			for (var i = 0; i < set.length; i++) {

				if (instance.options[set[i][0]]) {

					set[i][1].apply(instance.element, args);

				}

			}

		}

	},



	contains: function(a, b) {

		return document.compareDocumentPosition

			? a.compareDocumentPosition(b) & 16

			: a !== b && a.contains(b);

	},



	hasScroll: function(el, a) {



		//If overflow is hidden, the element might have extra content, but the user wants to hide it

		if ($(el).css('overflow') == 'hidden') { return false; }



		var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',

			has = false;



		if (el[scroll] > 0) { return true; }



		// TODO: determine which cases actually cause this to happen

		// if the element doesn't have the scroll set, see if it's possible to

		// set the scroll

		el[scroll] = 1;

		has = (el[scroll] > 0);

		el[scroll] = 0;

		return has;

	},



	isOverAxis: function(x, reference, size) {

		//Determines when x coordinate is over "b" element axis

		return (x > reference) && (x < (reference + size));

	},



	isOver: function(y, x, top, left, height, width) {

		//Determines when x, y coordinates is over "b" element

		return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);

	},



	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

	}

};



// WAI-ARIA normalization

if (isFF2) {

	var attr = $.attr,

		removeAttr = $.fn.removeAttr,

		ariaNS = "http://www.w3.org/2005/07/aaa",

		ariaState = /^aria-/,

		ariaRole = /^wairole:/;



	$.attr = function(elem, name, value) {

		var set = value !== undefined;



		return (name == 'role'

			? (set

				? attr.call(this, elem, name, "wairole:" + value)

				: (attr.apply(this, arguments) || "").replace(ariaRole, ""))

			: (ariaState.test(name)

				? (set

					? elem.setAttributeNS(ariaNS,

						name.replace(ariaState, "aaa:"), value)

					: attr.call(this, elem, name.replace(ariaState, "aaa:")))

				: attr.apply(this, arguments)));

	};



	$.fn.removeAttr = function(name) {

		return (ariaState.test(name)

			? this.each(function() {

				this.removeAttributeNS(ariaNS, name.replace(ariaState, ""));

			}) : removeAttr.call(this, name));

	};

}



//jQuery plugins

$.fn.extend({

	remove: function() {

		// Safari has a native remove event which actually removes DOM elements,

		// so we have to use triggerHandler instead of trigger (#3037).

		$("*", this).add(this).each(function() {

			$(this).triggerHandler("remove");

		});

		return _remove.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 scrollParent;

		if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {

			scrollParent = this.parents().filter(function() {

				return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));

			}).eq(0);

		} else {

			scrollParent = this.parents().filter(function() {

				return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));

			}).eq(0);

		}



		return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;

	}

});





//Additional selectors

$.extend($.expr[':'], {

	data: function(elem, i, match) {

		return !!$.data(elem, match[3]);

	},



	focusable: function(element) {

		var nodeName = element.nodeName.toLowerCase(),

			tabIndex = $.attr(element, 'tabindex');

		return (/input|select|textarea|button|object/.test(nodeName)

			? !element.disabled

			: 'a' == nodeName || 'area' == nodeName

				? element.href || !isNaN(tabIndex)

				: !isNaN(tabIndex))

			// the element and all of its ancestors must be visible

			// the browser may report that the area is hidden

			&& !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;

	},



	tabbable: function(element) {

		var tabIndex = $.attr(element, 'tabindex');

		return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');

	}

});





// $.widget is a factory to create jQuery plugins

// taking some boilerplate code out of the plugin code

function getter(namespace, plugin, method, args) {

	function getMethods(type) {

		var methods = $[namespace][plugin][type] || [];

		return (typeof methods == 'string' ? methods.split(/,?\s+/) : methods);

	}



	var methods = getMethods('getter');

	if (args.length == 1 && typeof args[0] == 'string') {

		methods = methods.concat(getMethods('getterSetter'));

	}

	return ($.inArray(method, methods) != -1);

}



$.widget = function(name, prototype) {

	var namespace = name.split(".")[0];

	name = name.split(".")[1];



	// create plugin method

	$.fn[name] = function(options) {

		var isMethodCall = (typeof options == 'string'),

			args = Array.prototype.slice.call(arguments, 1);



		// prevent calls to internal methods

		if (isMethodCall && options.substring(0, 1) == '_') {

			return this;

		}



		// handle getter methods

		if (isMethodCall && getter(namespace, name, options, args)) {

			var instance = $.data(this[0], name);

			return (instance ? instance[options].apply(instance, args)

				: undefined);

		}



		// handle initialization and non-getter methods

		return this.each(function() {

			var instance = $.data(this, name);



			// constructor

			(!instance && !isMethodCall &&

				$.data(this, name, new $[namespace][name](this, options))._init());



			// method call

			(instance && isMethodCall && $.isFunction(instance[options]) &&

				instance[options].apply(instance, args));

		});

	};



	// create widget constructor

	$[namespace] = $[namespace] || {};

	$[namespace][name] = function(element, options) {

		var self = this;



		this.namespace = namespace;

		this.widgetName = name;

		this.widgetEventPrefix = $[namespace][name].eventPrefix || name;

		this.widgetBaseClass = namespace + '-' + name;



		this.options = $.extend({},

			$.widget.defaults,

			$[namespace][name].defaults,

			$.metadata && $.metadata.get(element)[name],

			options);



		this.element = $(element)

			.bind('setData.' + name, function(event, key, value) {

				if (event.target == element) {

					return self._setData(key, value);

				}

			})

			.bind('getData.' + name, function(event, key) {

				if (event.target == element) {

					return self._getData(key);

				}

			})

			.bind('remove', function() {

				return self.destroy();

			});

	};



	// add widget prototype

	$[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);



	// TODO: merge getter and getterSetter properties from widget prototype

	// and plugin prototype

	$[namespace][name].getterSetter = 'option';

};



$.widget.prototype = {

	_init: function() {},

	destroy: function() {

		this.element.removeData(this.widgetName)

			.removeClass(this.widgetBaseClass + '-disabled' + ' ' + this.namespace + '-state-disabled')

			.removeAttr('aria-disabled');

	},



	option: function(key, value) {

		var options = key,

			self = this;



		if (typeof key == "string") {

			if (value === undefined) {

				return this._getData(key);

			}

			options = {};

			options[key] = value;

		}



		$.each(options, function(key, value) {

			self._setData(key, value);

		});

	},

	_getData: function(key) {

		return this.options[key];

	},

	_setData: function(key, value) {

		this.options[key] = value;



		if (key == 'disabled') {

			this.element

				[value ? 'addClass' : 'removeClass'](

					this.widgetBaseClass + '-disabled' + ' ' +

					this.namespace + '-state-disabled')

				.attr("aria-disabled", value);

		}

	},



	enable: function() {

		this._setData('disabled', false);

	},

	disable: function() {

		this._setData('disabled', true);

	},



	_trigger: function(type, event, data) {

		var callback = this.options[type],

			eventName = (type == this.widgetEventPrefix

				? type : this.widgetEventPrefix + type);



		event = $.Event(event);

		event.type = eventName;



		// copy original event properties over to the new event

		// this would happen if we could call $.event.fix instead of $.Event

		// but we don't have a way to force an event to be fixed multiple times

		if (event.originalEvent) {

			for (var i = $.event.props.length, prop; i;) {

				prop = $.event.props[--i];

				event[prop] = event.originalEvent[prop];

			}

		}



		this.element.trigger(event, data);



		return !($.isFunction(callback) && callback.call(this.element[0], event, data) === false

			|| event.isDefaultPrevented());

	}

};



$.widget.defaults = {

	disabled: false

};





/** Mouse Interaction Plugin **/



$.ui.mouse = {

	_mouseInit: function() {

		var self = this;



		this.element

			.bind('mousedown.'+this.widgetName, function(event) {

				return self._mouseDown(event);

			})

			.bind('click.'+this.widgetName, function(event) {

				if(self._preventClickEvent) {

					self._preventClickEvent = false;

					event.stopImmediatePropagation();

					return false;

				}

			});



		// Prevent text selection in IE

		if ($.browser.msie) {

			this._mouseUnselectable = this.element.attr('unselectable');

			this.element.attr('unselectable', 'on');

		}



		this.started = false;

	},



	// TODO: make sure destroying one instance of mouse doesn't mess with

	// other instances of mouse

	_mouseDestroy: function() {

		this.element.unbind('.'+this.widgetName);



		// Restore text selection in IE

		($.browser.msie

			&& this.element.attr('unselectable', this._mouseUnselectable));

	},



	_mouseDown: function(event) {

		// don't let more than one widget handle mouseStart

		// TODO: figure out why we have to use originalEvent

		event.originalEvent = event.originalEvent || {};

		if (event.originalEvent.mouseHandled) { return; }



		// we may have missed mouseup (out of window)

		(this._mouseStarted && this._mouseUp(event));



		this._mouseDownEvent = event;



		var self = this,

			btnIsLeft = (event.which == 1),

			elIsCancel = (typeof this.options.cancel == "string" ? $(event.target).parents().add(event.target).filter(this.options.cancel).length : false);

		if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {

			return true;

		}



		this.mouseDelayMet = !this.options.delay;

		if (!this.mouseDelayMet) {

			this._mouseDelayTimer = setTimeout(function() {

				self.mouseDelayMet = true;

			}, this.options.delay);

		}



		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {

			this._mouseStarted = (this._mouseStart(event) !== false);

			if (!this._mouseStarted) {

				event.preventDefault();

				return true;

			}

		}



		// these delegates are required to keep context

		this._mouseMoveDelegate = function(event) {

			return self._mouseMove(event);

		};

		this._mouseUpDelegate = function(event) {

			return self._mouseUp(event);

		};

		$(document)

			.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)

			.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);



		// preventDefault() is used to prevent the selection of text here -

		// however, in Safari, this causes select boxes not to be selectable

		// anymore, so this fix is needed

		($.browser.safari || event.preventDefault());



		event.originalEvent.mouseHandled = true;

		return true;

	},



	_mouseMove: function(event) {

		// IE mouseup check - mouseup happened when mouse was out of window

		if ($.browser.msie && !event.button) {

			return this._mouseUp(event);

		}



		if (this._mouseStarted) {

			this._mouseDrag(event);

			return event.preventDefault();

		}



		if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {

			this._mouseStarted =

				(this._mouseStart(this._mouseDownEvent, event) !== false);

			(this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));

		}



		return !this._mouseStarted;

	},



	_mouseUp: function(event) {

		$(document)

			.unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)

			.unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);



		if (this._mouseStarted) {

			this._mouseStarted = false;

			this._preventClickEvent = (event.target == this._mouseDownEvent.target);

			this._mouseStop(event);

		}



		return false;

	},



	_mouseDistanceMet: function(event) {

		return (Math.max(

				Math.abs(this._mouseDownEvent.pageX - event.pageX),

				Math.abs(this._mouseDownEvent.pageY - event.pageY)

			) >= this.options.distance

		);

	},



	_mouseDelayMet: function(event) {

		return this.mouseDelayMet;

	},



	// These are placeholder methods, to be overriden by extending plugin

	_mouseStart: function(event) {},

	_mouseDrag: function(event) {},

	_mouseStop: function(event) {},

	_mouseCapture: function(event) { return true; }

};



$.ui.mouse.defaults = {

	cancel: null,

	distance: 1,

	delay: 0

};



})(jQuery);


/*

 * jQuery UI Draggable 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI/Draggables

 *

 * Depends:

 *	ui.core.js

 */

(function($) {



$.widget("ui.draggable", $.extend({}, $.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(event) {



		var o = this.options;



		if (this.helper || o.disabled || $(event.target).is('.ui-resizable-handle'))

			return false;



		//Quit if we're not on a valid handle

		this.handle = this._getHandle(event);

		if (!this.handle)

			return false;



		return true;



	},



	_mouseStart: function(event) {



		var o = this.options;



		//Create and append the visible helper

		this.helper = this._createHelper(event);



		//Cache the helper size

		this._cacheHelperProportions();



		//If ddmanager is used for droppables, set the global draggable

		if($.ui.ddmanager)

			$.ui.ddmanager.current = this;



		/*

		 * - Position generation -

		 * This block generates everything position related - it's the core of draggables.

		 */



		//Cache the margins of the original element

		this._cacheMargins();



		//Store the helper's css position

		this.cssPosition = this.helper.css("position");

		this.scrollParent = this.helper.scrollParent();



		//The element's absolute position on the page minus margins

		this.offset = this.element.offset();

		this.offset = {

			top: this.offset.top - this.margins.top,

			left: this.offset.left - this.margins.left

		};



		$.extend(this.offset, {

			click: { //Where the click happened, relative to the element

				left: event.pageX - this.offset.left,

				top: event.pageY - this.offset.top

			},

			parent: this._getParentOffset(),

			relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper

		});



		//Generate the original position

		this.originalPosition = this._generatePosition(event);

		this.originalPageX = event.pageX;

		this.originalPageY = event.pageY;



		//Adjust the mouse offset relative to the helper if 'cursorAt' is supplied

		if(o.cursorAt)

			this._adjustOffsetFromHelper(o.cursorAt);



		//Set a containment if given in the options

		if(o.containment)

			this._setContainment();



		//Call plugins and callbacks

		this._trigger("start", event);



		//Recache the helper size

		this._cacheHelperProportions();



		//Prepare the droppable offsets

		if ($.ui.ddmanager && !o.dropBehaviour)

			$.ui.ddmanager.prepareOffsets(this, event);



		this.helper.addClass("ui-draggable-dragging");

		this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position

		return true;

	},



	_mouseDrag: function(event, noPropagation) {



		//Compute the helpers position

		this.position = this._generatePosition(event);

		this.positionAbs = this._convertPositionTo("absolute");



		//Call plugins and callbacks and use the resulting position if something is returned

		if (!noPropagation) {

			var ui = this._uiHash();

			this._trigger('drag', event, ui);

			this.position = ui.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($.ui.ddmanager) $.ui.ddmanager.drag(this, event);



		return false;

	},



	_mouseStop: function(event) {



		//If we are using droppables, inform the manager about the drop

		var dropped = false;

		if ($.ui.ddmanager && !this.options.dropBehaviour)

			dropped = $.ui.ddmanager.drop(this, event);



		//if a drop comes from outside (a sortable)

		if(this.dropped) {

			dropped = this.dropped;

			this.dropped = false;

		}



		if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {

			var self = this;

			$(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {

				self._trigger("stop", event);

				self._clear();

			});

		} else {

			this._trigger("stop", event);

			this._clear();

		}



		return false;

	},



	_getHandle: function(event) {



		var handle = !this.options.handle || !$(this.options.handle, this.element).length ? true : false;

		$(this.options.handle, this.element)

			.find("*")

			.andSelf()

			.each(function() {

				if(this == event.target) handle = true;

			});



		return handle;



	},



	_createHelper: function(event) {



		var o = this.options;

		var helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : (o.helper == 'clone' ? this.element.clone() : this.element);



		if(!helper.parents('body').length)

			helper.appendTo((o.appendTo == 'parent' ? this.element[0].parentNode : o.appendTo));



		if(helper[0] != this.element[0] && !(/(fixed|absolute)/).test(helper.css("position")))

			helper.css("position", "absolute");



		return helper;



	},



	_adjustOffsetFromHelper: function(obj) {

		if(obj.left != undefined) this.offset.click.left = obj.left + this.margins.left;

		if(obj.right != undefined) this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;

		if(obj.top != undefined) this.offset.click.top = obj.top + this.margins.top;

		if(obj.bottom != undefined) this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;

	},



	_getParentOffset: function() {



		//Get the offsetParent and cache its position

		this.offsetParent = this.helper.offsetParent();

		var po = this.offsetParent.offset();



		// This is a special case where we need to modify a offset calculated on start, since the following happened:

		// 1. The position of the helper is absolute, so it's position is calculated based on the next positioned parent

		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't the document, which means that

		//    the scroll is included in the initial calculation of the offset of the parent, and never recalculated upon drag

		if(this.cssPosition == 'absolute' && this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) {

			po.left += this.scrollParent.scrollLeft();

			po.top += this.scrollParent.scrollTop();

		}



		if((this.offsetParent[0] == document.body) //This needs to be actually done for all browsers, since pageX/pageY includes this information

		|| (this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == 'html' && $.browser.msie)) //Ugly IE fix

			po = { top: 0, left: 0 };



		return {

			top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"),10) || 0),

			left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"),10) || 0)

		};



	},



	_getRelativeOffset: function() {



		if(this.cssPosition == "relative") {

			var p = this.element.position();

			return {

				top: p.top - (parseInt(this.helper.css("top"),10) || 0) + this.scrollParent.scrollTop(),

				left: p.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 o = this.options;

		if(o.containment == 'parent') o.containment = this.helper[0].parentNode;

		if(o.containment == 'document' || o.containment == 'window') this.containment = [

			0 - this.offset.relative.left - this.offset.parent.left,

			0 - this.offset.relative.top - this.offset.parent.top,

			$(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,

			($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top

		];



		if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {

			var ce = $(o.containment)[0]; if(!ce) return;

			var co = $(o.containment).offset();

			var over = ($(ce).css("overflow") != 'hidden');



			this.containment = [

				co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,

				co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,

				co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,

				co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top

			];

		} else if(o.containment.constructor == Array) {

			this.containment = o.containment;

		}



	},



	_convertPositionTo: function(d, pos) {



		if(!pos) pos = this.position;

		var mod = d == "absolute" ? 1 : -1;

		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);



		return {

			top: (

				pos.top																	// The absolute mouse position

				+ this.offset.relative.top * mod										// Only for relative positioned nodes: Relative offset from element to offset parent

				+ this.offset.parent.top * mod											// The offsetParent's offset without borders (offset + border)

				- ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod)

			),

			left: (

				pos.left																// The absolute mouse position

				+ this.offset.relative.left * mod										// Only for relative positioned nodes: Relative offset from element to offset parent

				+ this.offset.parent.left * mod											// The offsetParent's offset without borders (offset + border)

				- ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ) * mod)

			)

		};



	},



	_generatePosition: function(event) {



		var o = this.options, scroll = this.cssPosition == 'absolute' && !(this.scrollParent[0] != document && $.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent : this.scrollParent, scrollIsRootNode = (/(html|body)/i).test(scroll[0].tagName);



		// This is another very weird special case that only happens for relative elements:

		// 1. If the css position is relative

		// 2. and the scroll parent is the document or similar to the offset parent

		// we have to refresh the relative offset during the scroll so there are no jumps

		if(this.cssPosition == 'relative' && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) {

			this.offset.relative = this._getRelativeOffset();

		}



		var pageX = event.pageX;

		var pageY = event.pageY;



		/*

		 * - Position constraining -

		 * Constrain the position to a mix of grid, containment.

		 */



		if(this.originalPosition) { //If we are not dragging yet, we won't check for options



			if(this.containment) {

				if(event.pageX - this.offset.click.left < this.containment[0]) pageX = this.containment[0] + this.offset.click.left;

				if(event.pageY - this.offset.click.top < this.containment[1]) pageY = this.containment[1] + this.offset.click.top;

				if(event.pageX - this.offset.click.left > this.containment[2]) pageX = this.containment[2] + this.offset.click.left;

				if(event.pageY - this.offset.click.top > this.containment[3]) pageY = this.containment[3] + this.offset.click.top;

			}



			if(o.grid) {

				var top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1];

				pageY = this.containment ? (!(top - this.offset.click.top < this.containment[1] || top - this.offset.click.top > this.containment[3]) ? top : (!(top - this.offset.click.top < this.containment[1]) ? top - o.grid[1] : top + o.grid[1])) : top;



				var left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0];

				pageX = this.containment ? (!(left - this.offset.click.left < this.containment[0] || left - this.offset.click.left > this.containment[2]) ? left : (!(left - this.offset.click.left < this.containment[0]) ? left - o.grid[0] : left + o.grid[0])) : left;

			}



		}



		return {

			top: (

				pageY																// The absolute mouse position

				- this.offset.click.top													// Click offset (relative to the element)

				- this.offset.relative.top												// Only for relative positioned nodes: Relative offset from element to offset parent

				- this.offset.parent.top												// The offsetParent's offset without borders (offset + border)

				+ ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollTop() : ( scrollIsRootNode ? 0 : scroll.scrollTop() ) ))

			),

			left: (

				pageX																// The absolute mouse position

				- this.offset.click.left												// Click offset (relative to the element)

				- this.offset.relative.left												// Only for relative positioned nodes: Relative offset from element to offset parent

				- this.offset.parent.left												// The offsetParent's offset without borders (offset + border)

				+ ($.browser.safari && this.cssPosition == 'fixed' ? 0 : ( this.cssPosition == 'fixed' ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft() ))

			)

		};



	},



	_clear: function() {

		this.helper.removeClass("ui-draggable-dragging");

		if(this.helper[0] != this.element[0] && !this.cancelHelperRemoval) this.helper.remove();

		//if($.ui.ddmanager) $.ui.ddmanager.current = null;

		this.helper = null;

		this.cancelHelperRemoval = false;

	},



	// From now on bulk stuff - mainly helpers



	_trigger: function(type, event, ui) {

		ui = ui || this._uiHash();

		$.ui.plugin.call(this, type, [event, ui]);

		if(type == "drag") this.positionAbs = this._convertPositionTo("absolute"); //The absolute position has to be recalculated after plugins

		return $.widget.prototype._trigger.call(this, type, event, ui);

	},



	plugins: {},



	_uiHash: function(event) {

		return {

			helper: this.helper,

			position: this.position,

			absolutePosition: this.positionAbs, //deprecated

			offset: this.positionAbs

		};

	}



}));



$.extend($.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

	}

});



$.ui.plugin.add("draggable", "connectToSortable", {

	start: function(event, ui) {



		var inst = $(this).data("draggable"), o = inst.options,

			uiSortable = $.extend({}, ui, { item: inst.element });

		inst.sortables = [];

		$(o.connectToSortable).each(function() {

			var sortable = $.data(this, 'sortable');

			if (sortable && !sortable.options.disabled) {

				inst.sortables.push({

					instance: sortable,

					shouldRevert: sortable.options.revert

				});

				sortable._refreshItems();	//Do a one-time refresh at start to refresh the containerCache

				sortable._trigger("activate", event, uiSortable);

			}

		});



	},

	stop: function(event, ui) {



		//If we are still over the sortable, we fake the stop event of the sortable, but also remove helper

		var inst = $(this).data("draggable"),

			uiSortable = $.extend({}, ui, { item: inst.element });



		$.each(inst.sortables, function() {

			if(this.instance.isOver) {



				this.instance.isOver = 0;



				inst.cancelHelperRemoval = true; //Don't remove the helper in the draggable instance

				this.instance.cancelHelperRemoval = false; //Remove it in the sortable instance (so sortable plugins like revert still work)



				//The sortable revert is supported, and we have to set a temporary dropped variable on the draggable to support revert: 'valid/invalid'

				if(this.shouldRevert) this.instance.options.revert = true;



				//Trigger the stop of the sortable

				this.instance._mouseStop(event);



				this.instance.options.helper = this.instance.options._helper;



				//If the helper has been the original item, restore properties in the sortable

				if(inst.options.helper == 'original')

					this.instance.currentItem.css({ top: 'auto', left: 'auto' });



			} else {

				this.instance.cancelHelperRemoval = false; //Remove the helper in the sortable instance

				this.instance._trigger("deactivate", event, uiSortable);

			}



		});



	},

	drag: function(event, ui) {



		var inst = $(this).data("draggable"), self = this;



		var checkPos = function(o) {

			var dyClick = this.offset.click.top, dxClick = this.offset.click.left;

			var helperTop = this.positionAbs.top, helperLeft = this.positionAbs.left;

			var itemHeight = o.height, itemWidth = o.width;

			var itemTop = o.top, itemLeft = o.left;



			return $.ui.isOver(helperTop + dyClick, helperLeft + dxClick, itemTop, itemLeft, itemHeight, itemWidth);

		};



		$.each(inst.sortables, function(i) {

			

			//Copy over some variables to allow calling the sortable's native _intersectsWith

			this.instance.positionAbs = inst.positionAbs;

			this.instance.helperProportions = inst.helperProportions;

			this.instance.offset.click = inst.offset.click;

			

			if(this.instance._intersectsWith(this.instance.containerCache)) {



				//If it intersects, we use a little isOver variable and set it once, so our move-in stuff gets fired only once

				if(!this.instance.isOver) {



					this.instance.isOver = 1;

					//Now we fake the start of dragging for the sortable instance,

					//by cloning the list group item, appending it to the sortable and using it as inst.currentItem

					//We can then fire the start event of the sortable with our passed browser event, and our own helper (so it doesn't create a new one)

					this.instance.currentItem = $(self).clone().appendTo(this.instance.element).data("sortable-item", true);

					this.instance.options._helper = this.instance.options.helper; //Store helper option to later restore it

					this.instance.options.helper = function() { return ui.helper[0]; };



					event.target = this.instance.currentItem[0];

					this.instance._mouseCapture(event, true);

					this.instance._mouseStart(event, true, true);



					//Because the browser event is way off the new appended portlet, we modify a couple of variables to reflect the changes

					this.instance.offset.click.top = inst.offset.click.top;

					this.instance.offset.click.left = inst.offset.click.left;

					this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left;

					this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top;



					inst._trigger("toSortable", event);

					inst.dropped = this.instance.element; //draggable revert needs that

					//hack so receive/update callbacks work (mostly)

					inst.currentItem = inst.element;

					this.instance.fromOutside = inst;



				}



				//Provided we did all the previous steps, we can fire the drag event of the sortable on every draggable drag, when it intersects with the sortable

				if(this.instance.currentItem) this.instance._mouseDrag(event);



			} else {



				//If it doesn't intersect with the sortable, and it intersected before,

				//we fake the drag stop of the sortable, but make sure it doesn't remove the helper by using cancelHelperRemoval

				if(this.instance.isOver) {



					this.instance.isOver = 0;

					this.instance.cancelHelperRemoval = true;

					

					//Prevent reverting on this forced stop

					this.instance.options.revert = false;

					

					// The out event needs to be triggered independently

					this.instance._trigger('out', event, this.instance._uiHash(this.instance));

					

					this.instance._mouseStop(event, true);

					this.instance.options.helper = this.instance.options._helper;



					//Now we remove our currentItem, the list group clone again, and the placeholder, and animate the helper back to it's original size

					this.instance.currentItem.remove();

					if(this.instance.placeholder) this.instance.placeholder.remove();



					inst._trigger("fromSortable", event);

					inst.dropped = false; //draggable revert needs that

				}



			};



		});



	}

});



$.ui.plugin.add("draggable", "cursor", {

	start: function(event, ui) {

		var t = $('body'), o = $(this).data('draggable').options;

		if (t.css("cursor")) o._cursor = t.css("cursor");

		t.css("cursor", o.cursor);

	},

	stop: function(event, ui) {

		var o = $(this).data('draggable').options;

		if (o._cursor) $('body').css("cursor", o._cursor);

	}

});



$.ui.plugin.add("draggable", "iframeFix", {

	start: function(event, ui) {

		var o = $(this).data('draggable').options;

		$(o.iframeFix === true ? "iframe" : o.iframeFix).each(function() {

			$('<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($(this).offset())

			.appendTo("body");

		});

	},

	stop: function(event, ui) {

		$("div.ui-draggable-iframeFix").each(function() { this.parentNode.removeChild(this); }); //Remove frame helpers

	}

});



$.ui.plugin.add("draggable", "opacity", {

	start: function(event, ui) {

		var t = $(ui.helper), o = $(this).data('draggable').options;

		if(t.css("opacity")) o._opacity = t.css("opacity");

		t.css('opacity', o.opacity);

	},

	stop: function(event, ui) {

		var o = $(this).data('draggable').options;

		if(o._opacity) $(ui.helper).css('opacity', o._opacity);

	}

});



$.ui.plugin.add("draggable", "scroll", {

	start: function(event, ui) {

		var i = $(this).data("draggable");

		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') i.overflowOffset = i.scrollParent.offset();

	},

	drag: function(event, ui) {



		var i = $(this).data("draggable"), o = i.options, scrolled = false;



		if(i.scrollParent[0] != document && i.scrollParent[0].tagName != 'HTML') {



			if(!o.axis || o.axis != 'x') {

				if((i.overflowOffset.top + i.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity)

					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop + o.scrollSpeed;

				else if(event.pageY - i.overflowOffset.top < o.scrollSensitivity)

					i.scrollParent[0].scrollTop = scrolled = i.scrollParent[0].scrollTop - o.scrollSpeed;

			}



			if(!o.axis || o.axis != 'y') {

				if((i.overflowOffset.left + i.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity)

					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft + o.scrollSpeed;

				else if(event.pageX - i.overflowOffset.left < o.scrollSensitivity)

					i.scrollParent[0].scrollLeft = scrolled = i.scrollParent[0].scrollLeft - o.scrollSpeed;

			}



		} else {



			if(!o.axis || o.axis != 'x') {

				if(event.pageY - $(document).scrollTop() < o.scrollSensitivity)

					scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed);

				else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity)

					scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed);

			}



			if(!o.axis || o.axis != 'y') {

				if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity)

					scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed);

				else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity)

					scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed);

			}



		}



		if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour)

			$.ui.ddmanager.prepareOffsets(i, event);



	}

});



$.ui.plugin.add("draggable", "snap", {

	start: function(event, ui) {



		var i = $(this).data("draggable"), o = i.options;

		i.snapElements = [];



		$(o.snap.constructor != String ? ( o.snap.items || ':data(draggable)' ) : o.snap).each(function() {

			var $t = $(this); var $o = $t.offset();

			if(this != i.element[0]) i.snapElements.push({

				item: this,

				width: $t.outerWidth(), height: $t.outerHeight(),

				top: $o.top, left: $o.left

			});

		});



	},

	drag: function(event, ui) {



		var inst = $(this).data("draggable"), o = inst.options;

		var d = o.snapTolerance;



		var x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,

			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;



		for (var i = inst.snapElements.length - 1; i >= 0; i--){



			var l = inst.snapElements[i].left, r = l + inst.snapElements[i].width,

				t = inst.snapElements[i].top, b = t + inst.snapElements[i].height;



			//Yes, I know, this is insane ;)

			if(!((l-d < x1 && x1 < r+d && t-d < y1 && y1 < b+d) || (l-d < x1 && x1 < r+d && t-d < y2 && y2 < b+d) || (l-d < x2 && x2 < r+d && t-d < y1 && y1 < b+d) || (l-d < x2 && x2 < r+d && t-d < y2 && y2 < b+d))) {

				if(inst.snapElements[i].snapping) (inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));

				inst.snapElements[i].snapping = false;

				continue;

			}



			if(o.snapMode != 'inner') {

				var ts = Math.abs(t - y2) <= d;

				var bs = Math.abs(b - y1) <= d;

				var ls = Math.abs(l - x2) <= d;

				var rs = Math.abs(r - x1) <= d;

				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t - inst.helperProportions.height, left: 0 }).top - inst.margins.top;

				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b, left: 0 }).top - inst.margins.top;

				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l - inst.helperProportions.width }).left - inst.margins.left;

				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r }).left - inst.margins.left;

			}



			var first = (ts || bs || ls || rs);



			if(o.snapMode != 'outer') {

				var ts = Math.abs(t - y1) <= d;

				var bs = Math.abs(b - y2) <= d;

				var ls = Math.abs(l - x1) <= d;

				var rs = Math.abs(r - x2) <= d;

				if(ts) ui.position.top = inst._convertPositionTo("relative", { top: t, left: 0 }).top - inst.margins.top;

				if(bs) ui.position.top = inst._convertPositionTo("relative", { top: b - inst.helperProportions.height, left: 0 }).top - inst.margins.top;

				if(ls) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: l }).left - inst.margins.left;

				if(rs) ui.position.left = inst._convertPositionTo("relative", { top: 0, left: r - inst.helperProportions.width }).left - inst.margins.left;

			}



			if(!inst.snapElements[i].snapping && (ts || bs || ls || rs || first))

				(inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), { snapItem: inst.snapElements[i].item })));

			inst.snapElements[i].snapping = (ts || bs || ls || rs || first);



		};



	}

});



$.ui.plugin.add("draggable", "stack", {

	start: function(event, ui) {



		var o = $(this).data("draggable").options;



		var group = $.makeArray($(o.stack.group)).sort(function(a,b) {

			return (parseInt($(a).css("zIndex"),10) || o.stack.min) - (parseInt($(b).css("zIndex"),10) || o.stack.min);

		});



		$(group).each(function(i) {

			this.style.zIndex = o.stack.min + i;

		});



		this[0].style.zIndex = o.stack.min + group.length;



	}

});



$.ui.plugin.add("draggable", "zIndex", {

	start: function(event, ui) {

		var t = $(ui.helper), o = $(this).data("draggable").options;

		if(t.css("zIndex")) o._zIndex = t.css("zIndex");

		t.css('zIndex', o.zIndex);

	},

	stop: function(event, ui) {

		var o = $(this).data("draggable").options;

		if(o._zIndex) $(ui.helper).css('zIndex', o._zIndex);

	}

});



})(jQuery);


/*

 * jQuery UI Resizable 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI/Resizables

 *

 * Depends:

 *	ui.core.js

 */

(function($) {



$.widget("ui.resizable", $.extend({}, $.ui.mouse, {



	_init: function() {



		var self = this, o = this.options;

		this.element.addClass("ui-resizable");



		$.extend(this, {

			_aspectRatio: !!(o.aspectRatio),

			aspectRatio: o.aspectRatio,

			originalElement: this.element,

			_proportionallyResizeElements: [],

			_helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null

		});



		//Wrap the element if it cannot hold child nodes

		if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {



			//Opera fix for relative positioning

			if (/relative/.test(this.element.css('position')) && $.browser.opera)

				this.element.css({ position: 'relative', top: 'auto', left: 'auto' });



			//Create a wrapper element and set the wrapper to the new current internal element

			this.element.wrap(

				$('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({

					position: this.element.css('position'),

					width: this.element.outerWidth(),

					height: this.element.outerHeight(),

					top: this.element.css('top'),

					left: this.element.css('left')

				})

			);



			//Overwrite the original this.element

			this.element = this.element.parent().data(

				"resizable", this.element.data('resizable')

			);



			this.elementIsWrapper = true;



			//Move margins to the wrapper

			this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });

			this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});



			//Prevent Safari textarea resize

			this.originalResizeStyle = this.originalElement.css('resize');

			this.originalElement.css('resize', 'none');



			//Push the actual element to our proportionallyResize internal array

			this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));



			// avoid IE jump (hard set the margin)

			this.originalElement.css({ margin: this.originalElement.css('margin') });



			// fix handlers offset

			this._proportionallyResize();



		}



		this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });

		if(this.handles.constructor == String) {



			if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';

			var n = this.handles.split(","); this.handles = {};



			for(var i = 0; i < n.length; i++) {



				var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;

				var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');



				// increase zIndex of sw, se, ne, nw axis

				//TODO : this modifies original option

				if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });



				//TODO : What's going on here?

				if ('se' == handle) {

					axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');

				};



				//Insert into internal handles object and append to element

				this.handles[handle] = '.ui-resizable-'+handle;

				this.element.append(axis);

			}



		}



		this._renderAxis = function(target) {



			target = target || this.element;



			for(var i in this.handles) {



				if(this.handles[i].constructor == String)

					this.handles[i] = $(this.handles[i], this.element).show();



				//Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)

				if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {



					var axis = $(this.handles[i], this.element), padWrapper = 0;



					//Checking the correct pad and border

					padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();



					//The padding type i have to apply...

					var padPos = [ 'padding',

						/ne|nw|n/.test(i) ? 'Top' :

						/se|sw|s/.test(i) ? 'Bottom' :

						/^e$/.test(i) ? 'Right' : 'Left' ].join("");



					target.css(padPos, padWrapper);



					this._proportionallyResize();



				}



				//TODO: What's that good for? There's not anything to be executed left

				if(!$(this.handles[i]).length)

					continue;



			}

		};



		//TODO: make renderAxis a prototype function

		this._renderAxis(this.element);



		this._handles = $('.ui-resizable-handle', this.element)

			.disableSelection();



		//Matching axis name

		this._handles.mouseover(function() {

			if (!self.resizing) {

				if (this.className)

					var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);

				//Axis, default = se

				self.axis = axis && axis[1] ? axis[1] : 'se';

			}

		});



		//If we want to auto hide the elements

		if (o.autoHide) {

			this._handles.hide();

			$(this.element)

				.addClass("ui-resizable-autohide")

				.hover(function() {

					$(this).removeClass("ui-resizable-autohide");

					self._handles.show();

				},

				function(){

					if (!self.resizing) {

						$(this).addClass("ui-resizable-autohide");

						self._handles.hide();

					}

				});

		}



		//Initialize the mouse interaction

		this._mouseInit();



	},



	destroy: function() {



		this._mouseDestroy();



		var _destroy = function(exp) {

			$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")

				.removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();

		};



		//TODO: Unwrap at same DOM position

		if (this.elementIsWrapper) {

			_destroy(this.element);

			var wrapper = this.element;

			wrapper.parent().append(

				this.originalElement.css({

					position: wrapper.css('position'),

					width: wrapper.outerWidth(),

					height: wrapper.outerHeight(),

					top: wrapper.css('top'),

					left: wrapper.css('left')

				})

			).end().remove();

		}



		this.originalElement.css('resize', this.originalResizeStyle);

		_destroy(this.originalElement);



	},



	_mouseCapture: function(event) {



		var handle = false;

		for(var i in this.handles) {

			if($(this.handles[i])[0] == event.target) handle = true;

		}



		return this.options.disabled || !!handle;



	},



	_mouseStart: function(event) {



		var o = this.options, iniPos = this.element.position(), el = this.element;



		this.resizing = true;

		this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };



		// bugfix for http://dev.jquery.com/ticket/1749

		if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {

			el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });

		}



		//Opera fixing relative position

		if ($.browser.opera && (/relative/).test(el.css('position')))

			el.css({ position: 'relative', top: 'auto', left: 'auto' });



		this._renderProxy();



		var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));



		if (o.containment) {

			curleft += $(o.containment).scrollLeft() || 0;

			curtop += $(o.containment).scrollTop() || 0;

		}



		//Store needed variables

		this.offset = this.helper.offset();

		this.position = { left: curleft, top: curtop };

		this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };

		this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };

		this.originalPosition = { left: curleft, top: curtop };

		this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };

		this.originalMousePosition = { left: event.pageX, top: event.pageY };



		//Aspect Ratio

		this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);



	    var cursor = $('.ui-resizable-' + this.axis).css('cursor');

	    $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);



		el.addClass("ui-resizable-resizing");

		this._propagate("start", event);

		return true;

	},



	_mouseDrag: function(event) {



		//Increase performance, avoid regex

		var el = this.helper, o = this.options, props = {},

			self = this, smp = this.originalMousePosition, a = this.axis;



		var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;

		var trigger = this._change[a];

		if (!trigger) return false;



		// Calculate the attrs that will be change

		var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;



		if (this._aspectRatio || event.shiftKey)

			data = this._updateRatio(data, event);



		data = this._respectSize(data, event);



		// plugins callbacks need to be called first

		this._propagate("resize", event);



		el.css({

			top: this.position.top + "px", left: this.position.left + "px",

			width: this.size.width + "px", height: this.size.height + "px"

		});



		if (!this._helper && this._proportionallyResizeElements.length)

			this._proportionallyResize();



		this._updateCache(data);



		// calling the user callback at the end

		this._trigger('resize', event, this.ui());



		return false;

	},



	_mouseStop: function(event) {



		this.resizing = false;

		var o = this.options, self = this;



		if(this._helper) {

			var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),

						soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,

							soffsetw = ista ? 0 : self.sizeDiff.width;



			var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },

				left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,

				top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;



			if (!o.animate)

				this.element.css($.extend(s, { top: top, left: left }));



			self.helper.height(self.size.height);

			self.helper.width(self.size.width);



			if (this._helper && !o.animate) this._proportionallyResize();

		}



		$('body').css('cursor', 'auto');



		this.element.removeClass("ui-resizable-resizing");



		this._propagate("stop", event);



		if (this._helper) this.helper.remove();

		return false;



	},



	_updateCache: function(data) {

		var o = this.options;

		this.offset = this.helper.offset();

		if (isNumber(data.left)) this.position.left = data.left;

		if (isNumber(data.top)) this.position.top = data.top;

		if (isNumber(data.height)) this.size.height = data.height;

		if (isNumber(data.width)) this.size.width = data.width;

	},



	_updateRatio: function(data, event) {



		var o = this.options, cpos = this.position, csize = this.size, a = this.axis;



		if (data.height) data.width = (csize.height * this.aspectRatio);

		else if (data.width) data.height = (csize.width / this.aspectRatio);



		if (a == 'sw') {

			data.left = cpos.left + (csize.width - data.width);

			data.top = null;

		}

		if (a == 'nw') {

			data.top = cpos.top + (csize.height - data.height);

			data.left = cpos.left + (csize.width - data.width);

		}



		return data;

	},



	_respectSize: function(data, event) {



		var el = this.helper, o = this.options, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,

				ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),

					isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);



		if (isminw) data.width = o.minWidth;

		if (isminh) data.height = o.minHeight;

		if (ismaxw) data.width = o.maxWidth;

		if (ismaxh) data.height = o.maxHeight;



		var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;

		var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);



		if (isminw && cw) data.left = dw - o.minWidth;

		if (ismaxw && cw) data.left = dw - o.maxWidth;

		if (isminh && ch)	data.top = dh - o.minHeight;

		if (ismaxh && ch)	data.top = dh - o.maxHeight;



		// fixing jump error on top/left - bug #2330

		var isNotwh = !data.width && !data.height;

		if (isNotwh && !data.left && data.top) data.top = null;

		else if (isNotwh && !data.top && data.left) data.left = null;



		return data;

	},



	_proportionallyResize: function() {



		var o = this.options;

		if (!this._proportionallyResizeElements.length) return;

		var element = this.helper || this.element;



		for (var i=0; i < this._proportionallyResizeElements.length; i++) {



			var prel = this._proportionallyResizeElements[i];



			if (!this.borderDif) {

				var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],

					p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];



				this.borderDif = $.map(b, function(v, i) {

					var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;

					return border + padding;

				});

			}



			if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))

				continue;



			prel.css({

				height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,

				width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0

			});



		};



	},



	_renderProxy: function() {



		var el = this.element, o = this.options;

		this.elementOffset = el.offset();



		if(this._helper) {



			this.helper = this.helper || $('<div style="overflow:hidden;"></div>');



			// fix ie6 offset TODO: This seems broken

			var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),

			pxyoffset = ( ie6 ? 2 : -1 );



			this.helper.addClass(this._helper).css({

				width: this.element.outerWidth() + pxyoffset,

				height: this.element.outerHeight() + pxyoffset,

				position: 'absolute',

				left: this.elementOffset.left - ie6offset +'px',

				top: this.elementOffset.top - ie6offset +'px',

				zIndex: ++o.zIndex //TODO: Don't modify option

			});



			this.helper

				.appendTo("body")

				.disableSelection();



		} else {

			this.helper = this.element;

		}



	},



	_change: {

		e: function(event, dx, dy) {

			return { width: this.originalSize.width + dx };

		},

		w: function(event, dx, dy) {

			var o = this.options, cs = this.originalSize, sp = this.originalPosition;

			return { left: sp.left + dx, width: cs.width - dx };

		},

		n: function(event, dx, dy) {

			var o = this.options, cs = this.originalSize, sp = this.originalPosition;

			return { top: sp.top + dy, height: cs.height - dy };

		},

		s: function(event, dx, dy) {

			return { height: this.originalSize.height + dy };

		},

		se: function(event, dx, dy) {

			return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));

		},

		sw: function(event, dx, dy) {

			return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));

		},

		ne: function(event, dx, dy) {

			return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));

		},

		nw: function(event, dx, dy) {

			return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));

		}

	},



	_propagate: function(n, event) {

		$.ui.plugin.call(this, n, [event, this.ui()]);

		(n != "resize" && this._trigger(n, event, this.ui()));

	},



	plugins: {},



	ui: function() {

		return {

			originalElement: this.originalElement,

			element: this.element,

			helper: this.helper,

			position: this.position,

			size: this.size,

			originalSize: this.originalSize,

			originalPosition: this.originalPosition

		};

	}



}));



$.extend($.ui.resizable, {

	version: "1.7.2",

	eventPrefix: "resize",

	defaults: {

		alsoResize: false,

		animate: false,

		animateDuration: "slow",

		animateEasing: "swing",

		aspectRatio: false,

		autoHide: false,

		cancel: ":input,option",

		containment: false,

		delay: 0,

		distance: 1,

		ghost: false,

		grid: false,

		handles: "e,s,se",

		helper: false,

		maxHeight: null,

		maxWidth: null,

		minHeight: 10,

		minWidth: 10,

		zIndex: 1000

	}

});



/*

 * Resizable Extensions

 */



$.ui.plugin.add("resizable", "alsoResize", {



	start: function(event, ui) {



		var self = $(this).data("resizable"), o = self.options;



		_store = function(exp) {

			$(exp).each(function() {

				$(this).data("resizable-alsoresize", {

					width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),

					left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)

				});

			});

		};



		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {

			if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0];	_store(o.alsoResize); }

			else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }

		}else{

			_store(o.alsoResize);

		}

	},



	resize: function(event, ui){

		var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;



		var delta = {

			height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,

			top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0

		},



		_alsoResize = function(exp, c) {

			$(exp).each(function() {

				var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];



				$.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {

					var sum = (start[prop]||0) + (delta[prop]||0);

					if (sum && sum >= 0)

						style[prop] = sum || null;

				});



				//Opera fixing relative position

				if (/relative/.test(el.css('position')) && $.browser.opera) {

					self._revertToRelativePosition = true;

					el.css({ position: 'absolute', top: 'auto', left: 'auto' });

				}



				el.css(style);

			});

		};



		if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {

			$.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });

		}else{

			_alsoResize(o.alsoResize);

		}

	},



	stop: function(event, ui){

		var self = $(this).data("resizable");



		//Opera fixing relative position

		if (self._revertToRelativePosition && $.browser.opera) {

			self._revertToRelativePosition = false;

			el.css({ position: 'relative' });

		}



		$(this).removeData("resizable-alsoresize-start");

	}

});



$.ui.plugin.add("resizable", "animate", {



	stop: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options;



		var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),

					soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,

						soffsetw = ista ? 0 : self.sizeDiff.width;



		var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },

					left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,

						top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;



		self.element.animate(

			$.extend(style, top && left ? { top: top, left: left } : {}), {

				duration: o.animateDuration,

				easing: o.animateEasing,

				step: function() {



					var data = {

						width: parseInt(self.element.css('width'), 10),

						height: parseInt(self.element.css('height'), 10),

						top: parseInt(self.element.css('top'), 10),

						left: parseInt(self.element.css('left'), 10)

					};



					if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });



					// propagating resize, and updating values for each animation step

					self._updateCache(data);

					self._propagate("resize", event);



				}

			}

		);

	}



});



$.ui.plugin.add("resizable", "containment", {



	start: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options, el = self.element;

		var oc = o.containment,	ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;

		if (!ce) return;



		self.containerElement = $(ce);



		if (/document/.test(oc) || oc == document) {

			self.containerOffset = { left: 0, top: 0 };

			self.containerPosition = { left: 0, top: 0 };



			self.parentData = {

				element: $(document), left: 0, top: 0,

				width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight

			};

		}



		// i'm a node, so compute top, left, right, bottom

		else {

			var element = $(ce), p = [];

			$([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });



			self.containerOffset = element.offset();

			self.containerPosition = element.position();

			self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };



			var co = self.containerOffset, ch = self.containerSize.height,	cw = self.containerSize.width,

						width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);



			self.parentData = {

				element: ce, left: co.left, top: co.top, width: width, height: height

			};

		}

	},



	resize: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options,

				ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,

				pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;



		if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;



		if (cp.left < (self._helper ? co.left : 0)) {

			self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));

			if (pRatio) self.size.height = self.size.width / o.aspectRatio;

			self.position.left = o.helper ? co.left : 0;

		}



		if (cp.top < (self._helper ? co.top : 0)) {

			self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);

			if (pRatio) self.size.width = self.size.height * o.aspectRatio;

			self.position.top = self._helper ? co.top : 0;

		}



		self.offset.left = self.parentData.left+self.position.left;

		self.offset.top = self.parentData.top+self.position.top;



		var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),

					hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );



		var isParent = self.containerElement.get(0) == self.element.parent().get(0),

		    isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));



		if(isParent && isOffsetRelative) woset -= self.parentData.left;



		if (woset + self.size.width >= self.parentData.width) {

			self.size.width = self.parentData.width - woset;

			if (pRatio) self.size.height = self.size.width / self.aspectRatio;

		}



		if (hoset + self.size.height >= self.parentData.height) {

			self.size.height = self.parentData.height - hoset;

			if (pRatio) self.size.width = self.size.height * self.aspectRatio;

		}

	},



	stop: function(event, ui){

		var self = $(this).data("resizable"), o = self.options, cp = self.position,

				co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;



		var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;



		if (self._helper && !o.animate && (/relative/).test(ce.css('position')))

			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });



		if (self._helper && !o.animate && (/static/).test(ce.css('position')))

			$(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });



	}

});



$.ui.plugin.add("resizable", "ghost", {



	start: function(event, ui) {



		var self = $(this).data("resizable"), o = self.options, cs = self.size;



		self.ghost = self.originalElement.clone();

		self.ghost

			.css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })

			.addClass('ui-resizable-ghost')

			.addClass(typeof o.ghost == 'string' ? o.ghost : '');



		self.ghost.appendTo(self.helper);



	},



	resize: function(event, ui){

		var self = $(this).data("resizable"), o = self.options;

		if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });

	},



	stop: function(event, ui){

		var self = $(this).data("resizable"), o = self.options;

		if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));

	}



});



$.ui.plugin.add("resizable", "grid", {



	resize: function(event, ui) {

		var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;

		o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;

		var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);



		if (/^(se|s|e)$/.test(a)) {

			self.size.width = os.width + ox;

			self.size.height = os.height + oy;

		}

		else if (/^(ne)$/.test(a)) {

			self.size.width = os.width + ox;

			self.size.height = os.height + oy;

			self.position.top = op.top - oy;

		}

		else if (/^(sw)$/.test(a)) {

			self.size.width = os.width + ox;

			self.size.height = os.height + oy;

			self.position.left = op.left - ox;

		}

		else {

			self.size.width = os.width + ox;

			self.size.height = os.height + oy;

			self.position.top = op.top - oy;

			self.position.left = op.left - ox;

		}

	}



});



var num = function(v) {

	return parseInt(v, 10) || 0;

};



var isNumber = function(value) {

	return !isNaN(parseInt(value, 10));

};



})(jQuery);



/*

 * jQuery UI Dialog 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI/Dialog

 *

 * Depends:

 *	ui.core.js

 *	ui.draggable.js

 *	ui.resizable.js

 */

(function($) {



var setDataSwitch = {

		dragStart: "start.draggable",

		drag: "drag.draggable",

		dragStop: "stop.draggable",

		maxHeight: "maxHeight.resizable",

		minHeight: "minHeight.resizable",

		maxWidth: "maxWidth.resizable",

		minWidth: "minWidth.resizable",

		resizeStart: "start.resizable",

		resize: "drag.resizable",

		resizeStop: "stop.resizable"

	},

	

	uiDialogClasses =

		'ui-dialog ' +

		'ui-widget ' +

		'ui-widget-content ' +

		'ui-corner-all ';



$.widget("ui.dialog", {



	_init: function() {

		this.originalTitle = this.element.attr('title');



		var self = this,

			options = this.options,



			title = options.title || this.originalTitle || '&nbsp;',

			titleId = $.ui.dialog.getTitleId(this.element),



			uiDialog = (this.uiDialog = $('<div/>'))

				.appendTo(document.body)

				.hide()

				.addClass(uiDialogClasses + options.dialogClass)

				.css({

					position: 'absolute',

					overflow: 'hidden',

					zIndex: options.zIndex

				})

				// setting tabIndex makes the div focusable

				// setting outline to 0 prevents a border on focus in Mozilla

				.attr('tabIndex', -1).css('outline', 0).keydown(function(event) {

					(options.closeOnEscape && event.keyCode

						&& event.keyCode == $.ui.keyCode.ESCAPE && self.close(event));

				})

				.attr({

					role: 'dialog',

					'aria-labelledby': titleId

				})

				.mousedown(function(event) {

					self.moveToTop(false, event);

				}),



			uiDialogContent = this.element

				.show()

				.removeAttr('title')

				.addClass(

					'ui-dialog-content ' +

					'ui-widget-content')

				.appendTo(uiDialog),



			uiDialogTitlebar = (this.uiDialogTitlebar = $('<div></div>'))

				.addClass(

					'ui-dialog-titlebar ' +

					'ui-widget-header ' +

					'ui-corner-all ' +

					'ui-helper-clearfix'

				)

				.prependTo(uiDialog),



			uiDialogTitlebarClose = $('<a href="#"/>')

				.addClass(

					'ui-dialog-titlebar-close ' +

					'ui-corner-all'

				)

				.attr('role', 'button')

				.hover(

					function() {

						uiDialogTitlebarClose.addClass('ui-state-hover');

					},

					function() {

						uiDialogTitlebarClose.removeClass('ui-state-hover');

					}

				)

				.focus(function() {

					uiDialogTitlebarClose.addClass('ui-state-focus');

				})

				.blur(function() {

					uiDialogTitlebarClose.removeClass('ui-state-focus');

				})

				.mousedown(function(ev) {

					ev.stopPropagation();

				})

				.click(function(event) {

					self.close(event);

					return false;

				})

				.appendTo(uiDialogTitlebar),



			uiDialogTitlebarCloseText = (this.uiDialogTitlebarCloseText = $('<span/>'))

				.addClass(

					'ui-icon ' +

					'ui-icon-closethick'

				)

				.text(options.closeText)

				.appendTo(uiDialogTitlebarClose),



			uiDialogTitle = $('<span/>')

				.addClass('ui-dialog-title')

				.attr('id', titleId)

				.html(title)

				.prependTo(uiDialogTitlebar);



		uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection();



		(options.draggable && $.fn.draggable && this._makeDraggable());

		(options.resizable && $.fn.resizable && this._makeResizable());



		this._createButtons(options.buttons);

		this._isOpen = false;



		(options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe());

		(options.autoOpen && this.open());

		

	},



	destroy: function() {

		(this.overlay && this.overlay.destroy());

		this.uiDialog.hide();

		this.element

			.unbind('.dialog')

			.removeData('dialog')

			.removeClass('ui-dialog-content ui-widget-content')

			.hide().appendTo('body');

		this.uiDialog.remove();



		(this.originalTitle && this.element.attr('title', this.originalTitle));

	},



	close: function(event) {

		var self = this;

		

		if (false === self._trigger('beforeclose', event)) {

			return;

		}



		(self.overlay && self.overlay.destroy());

		self.uiDialog.unbind('keypress.ui-dialog');



		(self.options.hide

			? self.uiDialog.hide(self.options.hide, function() {

				self._trigger('close', event);

			})

			: self.uiDialog.hide() && self._trigger('close', event));



		$.ui.dialog.overlay.resize();



		self._isOpen = false;

		

		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)

		if (self.options.modal) {

			var maxZ = 0;

			$('.ui-dialog').each(function() {

				if (this != self.uiDialog[0]) {

					maxZ = Math.max(maxZ, $(this).css('z-index'));

				}

			});

			$.ui.dialog.maxZ = maxZ;

		}

	},



	isOpen: function() {

		return this._isOpen;

	},



	// the force parameter allows us to move modal dialogs to their correct

	// position on open

	moveToTop: function(force, event) {



		if ((this.options.modal && !force)

			|| (!this.options.stack && !this.options.modal)) {

			return this._trigger('focus', event);

		}

		

		if (this.options.zIndex > $.ui.dialog.maxZ) {

			$.ui.dialog.maxZ = this.options.zIndex;

		}

		(this.overlay && this.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = ++$.ui.dialog.maxZ));



		//Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed.

		//  http://ui.jquery.com/bugs/ticket/3193

		var saveScroll = { scrollTop: this.element.attr('scrollTop'), scrollLeft: this.element.attr('scrollLeft') };

		this.uiDialog.css('z-index', ++$.ui.dialog.maxZ);

		this.element.attr(saveScroll);

		this._trigger('focus', event);

	},



	open: function() {

		if (this._isOpen) { return; }



		var options = this.options,

			uiDialog = this.uiDialog;



		this.overlay = options.modal ? new $.ui.dialog.overlay(this) : null;

		(uiDialog.next().length && uiDialog.appendTo('body'));

		this._size();

		this._position(options.position);

		uiDialog.show(options.show);

		this.moveToTop(true);



		// prevent tabbing out of modal dialogs

		(options.modal && uiDialog.bind('keypress.ui-dialog', function(event) {

			if (event.keyCode != $.ui.keyCode.TAB) {

				return;

			}



			var tabbables = $(':tabbable', this),

				first = tabbables.filter(':first')[0],

				last  = tabbables.filter(':last')[0];



			if (event.target == last && !event.shiftKey) {

				setTimeout(function() {

					first.focus();

				}, 1);

			} else if (event.target == first && event.shiftKey) {

				setTimeout(function() {

					last.focus();

				}, 1);

			}

		}));



		// set focus to the first tabbable element in the content area or the first button

		// if there are no tabbable elements, set focus on the dialog itself

		$([])

			.add(uiDialog.find('.ui-dialog-content :tabbable:first'))

			.add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))

			.add(uiDialog)

			.filter(':first')

			.focus();



		this._trigger('open');

		this._isOpen = true;

	},



	_createButtons: function(buttons) {

		var self = this,

			hasButtons = false,

			uiDialogButtonPane = $('<div></div>')

				.addClass(

					'ui-dialog-buttonpane ' +

					'ui-widget-content ' +

					'ui-helper-clearfix'

				);



		// if we already have a button pane, remove it

		this.uiDialog.find('.ui-dialog-buttonpane').remove();



		(typeof buttons == 'object' && buttons !== null &&

			$.each(buttons, function() { return !(hasButtons = true); }));

		if (hasButtons) {

			$.each(buttons, function(name, fn) {

				$('<button type="button"></button>')

					.addClass(

						'ui-state-default ' +

						'ui-corner-all'

					)

					.text(name)

					.click(function() { fn.apply(self.element[0], arguments); })

					.hover(

						function() {

							$(this).addClass('ui-state-hover');

						},

						function() {

							$(this).removeClass('ui-state-hover');

						}

					)

					.focus(function() {

						$(this).addClass('ui-state-focus');

					})

					.blur(function() {

						$(this).removeClass('ui-state-focus');

					})

					.appendTo(uiDialogButtonPane);

			});

			uiDialogButtonPane.appendTo(this.uiDialog);

		}

	},



	_makeDraggable: function() {

		var self = this,

			options = this.options,

			heightBeforeDrag;



		this.uiDialog.draggable({

			cancel: '.ui-dialog-content',

			handle: '.ui-dialog-titlebar',

			containment: 'document',

			start: function() {

				heightBeforeDrag = options.height;

				$(this).height($(this).height()).addClass("ui-dialog-dragging");

				(options.dragStart && options.dragStart.apply(self.element[0], arguments));

			},

			drag: function() {

				(options.drag && options.drag.apply(self.element[0], arguments));

			},

			stop: function() {

				$(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag);

				(options.dragStop && options.dragStop.apply(self.element[0], arguments));

				$.ui.dialog.overlay.resize();

			}

		});

	},



	_makeResizable: function(handles) {

		handles = (handles === undefined ? this.options.resizable : handles);

		var self = this,

			options = this.options,

			resizeHandles = typeof handles == 'string'

				? handles

				: 'n,e,s,w,se,sw,ne,nw';



		this.uiDialog.resizable({

			cancel: '.ui-dialog-content',

			alsoResize: this.element,

			maxWidth: options.maxWidth,

			maxHeight: options.maxHeight,

			minWidth: options.minWidth,

			minHeight: options.minHeight,

			start: function() {

				$(this).addClass("ui-dialog-resizing");

				(options.resizeStart && options.resizeStart.apply(self.element[0], arguments));

			},

			resize: function() {

				(options.resize && options.resize.apply(self.element[0], arguments));

			},

			handles: resizeHandles,

			stop: function() {

				$(this).removeClass("ui-dialog-resizing");

				options.height = $(this).height();

				options.width = $(this).width();

				(options.resizeStop && options.resizeStop.apply(self.element[0], arguments));

				$.ui.dialog.overlay.resize();

			}

		})

		.find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se');

	},



	_position: function(pos) {

		var wnd = $(window), doc = $(document),

			pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),

			minTop = pTop;



		if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {

			pos = [

				pos == 'right' || pos == 'left' ? pos : 'center',

				pos == 'top' || pos == 'bottom' ? pos : 'middle'

			];

		}

		if (pos.constructor != Array) {

			pos = ['center', 'middle'];

		}

		if (pos[0].constructor == Number) {

			pLeft += pos[0];

		} else {

			switch (pos[0]) {

				case 'left':

					pLeft += 0;

					break;

				case 'right':

					pLeft += wnd.width() - this.uiDialog.outerWidth();

					break;

				default:

				case 'center':

					pLeft += (wnd.width() - this.uiDialog.outerWidth()) / 2;

			}

		}

		if (pos[1].constructor == Number) {

			pTop += pos[1];

		} else {

			switch (pos[1]) {

				case 'top':

					pTop += 0;

					break;

				case 'bottom':

					pTop += wnd.height() - this.uiDialog.outerHeight();

					break;

				default:

				case 'middle':

					pTop += (wnd.height() - this.uiDialog.outerHeight()) / 2;

			}

		}



		// prevent the dialog from being too high (make sure the titlebar

		// is accessible)

		pTop = Math.max(pTop, minTop);

		this.uiDialog.css({top: pTop, left: pLeft});

	},



	_setData: function(key, value){

		(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));

		switch (key) {

			case "buttons":

				this._createButtons(value);

				break;

			case "closeText":

				this.uiDialogTitlebarCloseText.text(value);

				break;

			case "dialogClass":

				this.uiDialog

					.removeClass(this.options.dialogClass)

					.addClass(uiDialogClasses + value);

				break;

			case "draggable":

				(value

					? this._makeDraggable()

					: this.uiDialog.draggable('destroy'));

				break;

			case "height":

				this.uiDialog.height(value);

				break;

			case "position":

				this._position(value);

				break;

			case "resizable":

				var uiDialog = this.uiDialog,

					isResizable = this.uiDialog.is(':data(resizable)');



				// currently resizable, becoming non-resizable

				(isResizable && !value && uiDialog.resizable('destroy'));



				// currently resizable, changing handles

				(isResizable && typeof value == 'string' &&

					uiDialog.resizable('option', 'handles', value));



				// currently non-resizable, becoming resizable

				(isResizable || this._makeResizable(value));

				break;

			case "title":

				$(".ui-dialog-title", this.uiDialogTitlebar).html(value || '&nbsp;');

				break;

			case "width":

				this.uiDialog.width(value);

				break;

		}



		$.widget.prototype._setData.apply(this, arguments);

	},



	_size: function() {

		/* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content

		 * divs will both have width and height set, so we need to reset them

		 */

		var options = this.options;



		// reset content sizing

		this.element.css({

			height: 0,

			minHeight: 0,

			width: 'auto'

		});



		// reset wrapper sizing

		// determine the height of all the non-content elements

		var nonContentHeight = this.uiDialog.css({

				height: 'auto',

				width: options.width

			})

			.height();



		this.element

			.css({

				minHeight: Math.max(options.minHeight - nonContentHeight, 0),

				height: options.height == 'auto'

					? 'auto'

					: Math.max(options.height - nonContentHeight, 0)

			});

	}

});



$.extend($.ui.dialog, {

	version: "1.7.2",

	defaults: {

		autoOpen: false,

		bgiframe: false,

		buttons: {},

		closeOnEscape: true,

		closeText: 'close',

		dialogClass: '',

		draggable: true,

		hide: null,

		height: 'auto',

		maxHeight: false,

		maxWidth: false,

		minHeight: 150,

		minWidth: 150,

		modal: false,

		position: 'center',

		resizable: true,

		show: null,

		stack: true,

		title: '',

		width: 300,

		zIndex: 1000

	},



	getter: 'isOpen',



	uuid: 0,

	maxZ: 0,



	getTitleId: function($el) {

		return 'ui-dialog-title-' + ($el.attr('id') || ++this.uuid);

	},



	overlay: function(dialog) {

		this.$el = $.ui.dialog.overlay.create(dialog);

	}

});




$.extend($.ui.dialog.overlay, {

	instances: [],

	maxZ: 0,

	events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

		function(event) { return event + '.dialog-overlay'; }).join(' '),

	create: function(dialog) {

		if (this.instances.length === 0) {

			// prevent use of anchors and inputs

			// we use a setTimeout in case the overlay is created from an

			// event that we're going to be cancelling (see #2804)

			setTimeout(function() {

				// handle $(el).dialog().dialog('close') (see #4065)

				if ($.ui.dialog.overlay.instances.length) {

					$(document).bind($.ui.dialog.overlay.events, function(event) {

						var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;

						return (dialogZ > $.ui.dialog.overlay.maxZ);

					});

				}

			}, 1);



			// allow closing by pressing the escape key

			$(document).bind('keydown.dialog-overlay', function(event) {

				(dialog.options.closeOnEscape && event.keyCode

						&& event.keyCode == $.ui.keyCode.ESCAPE && dialog.close(event));

			});



			// handle window resize

			$(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);

		}



		var $el = $('<div></div>').appendTo(document.body)

			.addClass('ui-widget-overlay').css({

				width: this.width(),

				height: this.height()

			});



		(dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe());



		this.instances.push($el);

		return $el;

	},



	destroy: function($el) {

		this.instances.splice($.inArray(this.instances, $el), 1);



		if (this.instances.length === 0) {

			$([document, window]).unbind('.dialog-overlay');

		}



		$el.remove();

		

		// adjust the maxZ to allow other modal dialogs to continue to work (see #4309)

		var maxZ = 0;

		$.each(this.instances, function() {

			maxZ = Math.max(maxZ, this.css('z-index'));

		});

		this.maxZ = maxZ;

	},



	height: function() {

		// handle IE 6

		if ($.browser.msie && $.browser.version < 7) {

			var scrollHeight = Math.max(

				document.documentElement.scrollHeight,

				document.body.scrollHeight

			);

			var offsetHeight = Math.max(

				document.documentElement.offsetHeight,

				document.body.offsetHeight

			);



			if (scrollHeight < offsetHeight) {

				return $(window).height() + 'px';

			} else {

				return scrollHeight + 'px';

			}

		// handle "good" browsers

		} else {

			return $(document).height() + 'px';

		}

	},



	width: function() {

		// handle IE 6

		if ($.browser.msie && $.browser.version < 7) {

			var scrollWidth = Math.max(

				document.documentElement.scrollWidth,

				document.body.scrollWidth

			);

			var offsetWidth = Math.max(

				document.documentElement.offsetWidth,

				document.body.offsetWidth

			);



			if (scrollWidth < offsetWidth) {

				return $(window).width() + 'px';

			} else {

				return scrollWidth + 'px';

			}

		// handle "good" browsers

		} else {

			return $(document).width() + 'px';

		}

	},



	resize: function() {

		/* If the dialog is draggable and the user drags it past the

		 * right edge of the window, the document becomes wider so we

		 * need to stretch the overlay. If the user then drags the

		 * dialog back to the left, the document will become narrower,

		 * so we need to shrink the overlay to the appropriate size.

		 * This is handled by shrinking the overlay before setting it

		 * to the full document size.

		 */

		var $overlays = $([]);

		$.each($.ui.dialog.overlay.instances, function() {

			$overlays = $overlays.add(this);

		});



		$overlays.css({

			width: 0,

			height: 0

		}).css({

			width: $.ui.dialog.overlay.width(),

			height: $.ui.dialog.overlay.height()

		});

	}

});



$.extend($.ui.dialog.overlay.prototype, {

	destroy: function() {

		$.ui.dialog.overlay.destroy(this.$el);

	}

});



})(jQuery);



/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)

2 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)

3 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.

4 *

5 * $LastChangedDate: 2007-07-22 01:45:56 +0200 (Son, 22 Jul 2007) $

6 * $Rev: 2447 $

7 *

8 * Version 2.1.1

9 */

(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);



/*

 * jQuery UI 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI

 */

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);;/*

 * jQuery UI Dialog 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI/Dialog

 *

 * Depends:

 *	ui.core.js

 *	ui.draggable.js

 *	ui.resizable.js

 */

(function(c){var b={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"},a="ui-dialog ui-widget ui-widget-content ui-corner-all ";c.widget("ui.dialog",{_init:function(){this.originalTitle=this.element.attr("title");var l=this,m=this.options,j=m.title||this.originalTitle||"&nbsp;",e=c.ui.dialog.getTitleId(this.element),k=(this.uiDialog=c("<div/>")).appendTo(document.body).hide().addClass(a+m.dialogClass).css({position:"absolute",overflow:"hidden",zIndex:m.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(n){(m.closeOnEscape&&n.keyCode&&n.keyCode==c.ui.keyCode.ESCAPE&&l.close(n))}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(n){l.moveToTop(false,n)}),g=this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(k),f=(this.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(k),i=c('<a href="#"/>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){i.addClass("ui-state-hover")},function(){i.removeClass("ui-state-hover")}).focus(function(){i.addClass("ui-state-focus")}).blur(function(){i.removeClass("ui-state-focus")}).mousedown(function(n){n.stopPropagation()}).click(function(n){l.close(n);return false}).appendTo(f),h=(this.uiDialogTitlebarCloseText=c("<span/>")).addClass("ui-icon ui-icon-closethick").text(m.closeText).appendTo(i),d=c("<span/>").addClass("ui-dialog-title").attr("id",e).html(j).prependTo(f);f.find("*").add(f).disableSelection();(m.draggable&&c.fn.draggable&&this._makeDraggable());(m.resizable&&c.fn.resizable&&this._makeResizable());this._createButtons(m.buttons);this._isOpen=false;(m.bgiframe&&c.fn.bgiframe&&k.bgiframe());(m.autoOpen&&this.open())},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");this.uiDialog.remove();(this.originalTitle&&this.element.attr("title",this.originalTitle))},close:function(f){var d=this;if(false===d._trigger("beforeclose",f)){return}(d.overlay&&d.overlay.destroy());d.uiDialog.unbind("keypress.ui-dialog");(d.options.hide?d.uiDialog.hide(d.options.hide,function(){d._trigger("close",f)}):d.uiDialog.hide()&&d._trigger("close",f));c.ui.dialog.overlay.resize();d._isOpen=false;if(d.options.modal){var e=0;c(".ui-dialog").each(function(){if(this!=d.uiDialog[0]){e=Math.max(e,c(this).css("z-index"))}});c.ui.dialog.maxZ=e}},isOpen:function(){return this._isOpen},moveToTop:function(f,e){if((this.options.modal&&!f)||(!this.options.stack&&!this.options.modal)){return this._trigger("focus",e)}if(this.options.zIndex>c.ui.dialog.maxZ){c.ui.dialog.maxZ=this.options.zIndex}(this.overlay&&this.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=++c.ui.dialog.maxZ));var d={scrollTop:this.element.attr("scrollTop"),scrollLeft:this.element.attr("scrollLeft")};this.uiDialog.css("z-index",++c.ui.dialog.maxZ);this.element.attr(d);this._trigger("focus",e)},open:function(){if(this._isOpen){return}var e=this.options,d=this.uiDialog;this.overlay=e.modal?new c.ui.dialog.overlay(this):null;(d.next().length&&d.appendTo("body"));this._size();this._position(e.position);d.show(e.show);this.moveToTop(true);(e.modal&&d.bind("keypress.ui-dialog",function(h){if(h.keyCode!=c.ui.keyCode.TAB){return}var g=c(":tabbable",this),i=g.filter(":first")[0],f=g.filter(":last")[0];if(h.target==f&&!h.shiftKey){setTimeout(function(){i.focus()},1)}else{if(h.target==i&&h.shiftKey){setTimeout(function(){f.focus()},1)}}}));c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();this._trigger("open");this._isOpen=true},_createButtons:function(g){var f=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");this.uiDialog.find(".ui-dialog-buttonpane").remove();(typeof g=="object"&&g!==null&&c.each(g,function(){return !(d=true)}));if(d){c.each(g,function(h,i){c('<button type="button"></button>').addClass("ui-state-default ui-corner-all").text(h).click(function(){i.apply(f.element[0],arguments)}).hover(function(){c(this).addClass("ui-state-hover")},function(){c(this).removeClass("ui-state-hover")}).focus(function(){c(this).addClass("ui-state-focus")}).blur(function(){c(this).removeClass("ui-state-focus")}).appendTo(e)});e.appendTo(this.uiDialog)}},_makeDraggable:function(){var d=this,f=this.options,e;this.uiDialog.draggable({cancel:".ui-dialog-content",handle:".ui-dialog-titlebar",containment:"document",start:function(){e=f.height;c(this).height(c(this).height()).addClass("ui-dialog-dragging");(f.dragStart&&f.dragStart.apply(d.element[0],arguments))},drag:function(){(f.drag&&f.drag.apply(d.element[0],arguments))},stop:function(){c(this).removeClass("ui-dialog-dragging").height(e);(f.dragStop&&f.dragStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}})},_makeResizable:function(g){g=(g===undefined?this.options.resizable:g);var d=this,f=this.options,e=typeof g=="string"?g:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",alsoResize:this.element,maxWidth:f.maxWidth,maxHeight:f.maxHeight,minWidth:f.minWidth,minHeight:f.minHeight,start:function(){c(this).addClass("ui-dialog-resizing");(f.resizeStart&&f.resizeStart.apply(d.element[0],arguments))},resize:function(){(f.resize&&f.resize.apply(d.element[0],arguments))},handles:e,stop:function(){c(this).removeClass("ui-dialog-resizing");f.height=c(this).height();f.width=c(this).width();(f.resizeStop&&f.resizeStop.apply(d.element[0],arguments));c.ui.dialog.overlay.resize()}}).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_position:function(i){var e=c(window),f=c(document),g=f.scrollTop(),d=f.scrollLeft(),h=g;if(c.inArray(i,["center","top","right","bottom","left"])>=0){i=[i=="right"||i=="left"?i:"center",i=="top"||i=="bottom"?i:"middle"]}if(i.constructor!=Array){i=["center","middle"]}if(i[0].constructor==Number){d+=i[0]}else{switch(i[0]){case"left":d+=0;break;case"right":d+=e.width()-this.uiDialog.outerWidth();break;default:case"center":d+=(e.width()-this.uiDialog.outerWidth())/2}}if(i[1].constructor==Number){g+=i[1]}else{switch(i[1]){case"top":g+=0;break;case"bottom":g+=e.height()-this.uiDialog.outerHeight();break;default:case"middle":g+=(e.height()-this.uiDialog.outerHeight())/2}}g=Math.max(g,h);this.uiDialog.css({top:g,left:d})},_setData:function(e,f){(b[e]&&this.uiDialog.data(b[e],f));switch(e){case"buttons":this._createButtons(f);break;case"closeText":this.uiDialogTitlebarCloseText.text(f);break;case"dialogClass":this.uiDialog.removeClass(this.options.dialogClass).addClass(a+f);break;case"draggable":(f?this._makeDraggable():this.uiDialog.draggable("destroy"));break;case"height":this.uiDialog.height(f);break;case"position":this._position(f);break;case"resizable":var d=this.uiDialog,g=this.uiDialog.is(":data(resizable)");(g&&!f&&d.resizable("destroy"));(g&&typeof f=="string"&&d.resizable("option","handles",f));(g||this._makeResizable(f));break;case"title":c(".ui-dialog-title",this.uiDialogTitlebar).html(f||"&nbsp;");break;case"width":this.uiDialog.width(f);break}c.widget.prototype._setData.apply(this,arguments)},_size:function(){var e=this.options;this.element.css({height:0,minHeight:0,width:"auto"});var d=this.uiDialog.css({height:"auto",width:e.width}).height();this.element.css({minHeight:Math.max(e.minHeight-d,0),height:e.height=="auto"?"auto":Math.max(e.height-d,0)})}});c.extend(c.ui.dialog,{version:"1.7.2",defaults:{autoOpen:true,bgiframe:false,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1000},getter:"isOpen",uuid:0,maxZ:0,getTitleId:function(d){return"ui-dialog-title-"+(d.attr("id")||++this.uuid)},overlay:function(d){this.$el=c.ui.dialog.overlay.create(d)}});c.extend(c.ui.dialog.overlay,{instances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(d){return d+".dialog-overlay"}).join(" "),create:function(e){if(this.instances.length===0){setTimeout(function(){if(c.ui.dialog.overlay.instances.length){c(document).bind(c.ui.dialog.overlay.events,function(f){var g=c(f.target).parents(".ui-dialog").css("zIndex")||0;return(g>c.ui.dialog.overlay.maxZ)})}},1);c(document).bind("keydown.dialog-overlay",function(f){(e.options.closeOnEscape&&f.keyCode&&f.keyCode==c.ui.keyCode.ESCAPE&&e.close(f))});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var d=c("<div></div>").appendTo(document.body).addClass("ui-widget-overlay").css({width:this.width(),height:this.height()});(e.options.bgiframe&&c.fn.bgiframe&&d.bgiframe());this.instances.push(d);return d},destroy:function(d){this.instances.splice(c.inArray(this.instances,d),1);if(this.instances.length===0){c([document,window]).unbind(".dialog-overlay")}d.remove();var e=0;c.each(this.instances,function(){e=Math.max(e,this.css("z-index"))});this.maxZ=e},height:function(){if(c.browser.msie&&c.browser.version<7){var e=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var d=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(e<d){return c(window).height()+"px"}else{return e+"px"}}else{return c(document).height()+"px"}},width:function(){if(c.browser.msie&&c.browser.version<7){var d=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);var e=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(d<e){return c(window).width()+"px"}else{return d+"px"}}else{return c(document).width()+"px"}},resize:function(){var d=c([]);c.each(c.ui.dialog.overlay.instances,function(){d=d.add(this)});d.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);;/*

 * jQuery UI Datepicker 1.7.2

 *

 * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)

 * Dual licensed under the MIT (MIT-LICENSE.txt)

 * and GPL (GPL-LICENSE.txt) licenses.

 *

 * http://docs.jquery.com/UI/Datepicker

 *

 * Depends:

 *	ui.core.js

 */

(function($){$.extend($.ui,{datepicker:{version:"1.7.2"}});var PROP_NAME="datepicker";function Datepicker(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._datepickerShowing=false;this._inDialog=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass="ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],dateFormat:"mm/dd/yy",firstDay:0,isRTL:false};this._defaults={showOn:"focus",showAnim:"show",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:false,hideIfNoPrevNext:false,navigationAsDateFormat:false,gotoCurrent:false,changeMonth:false,changeYear:false,showMonthAfterYear:false,yearRange:"-10:+10",showOtherMonths:false,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"normal",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:true,showButtonPanel:false};$.extend(this._defaults,this.regional[""]);this.dpDiv=$('<div id="'+this._mainDivId+'" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"></div>')}$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",log:function(){if(this.debug){console.log.apply("",arguments)}},setDefaults:function(settings){extendRemove(this._defaults,settings||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase();var inline=(nodeName=="div"||nodeName=="span");if(!target.id){target.id="dp"+(++this.uuid)}var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{});if(nodeName=="input"){this._connectDatepicker(target,inst)}else{if(inline){this._inlineDatepicker(target,inst)}}},_newInst:function(target,inline){var id=target[0].id.replace(/([:\[\]\.])/g,"\\\\$1");return{id:id,input:target,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:inline,dpDiv:(!inline?this.dpDiv:$('<div class="'+this._inlineClass+' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))}},_connectDatepicker:function(target,inst){var input=$(target);inst.append=$([]);inst.trigger=$([]);if(input.hasClass(this.markerClassName)){return}var appendText=this._get(inst,"appendText");var isRTL=this._get(inst,"isRTL");if(appendText){inst.append=$('<span class="'+this._appendClass+'">'+appendText+"</span>");input[isRTL?"before":"after"](inst.append)}var showOn=this._get(inst,"showOn");if(showOn=="focus"||showOn=="both"){input.focus(this._showDatepicker)}if(showOn=="button"||showOn=="both"){var buttonText=this._get(inst,"buttonText");var buttonImage=this._get(inst,"buttonImage");inst.trigger=$(this._get(inst,"buttonImageOnly")?$("<img/>").addClass(this._triggerClass).attr({src:buttonImage,alt:buttonText,title:buttonText}):$('<button type="button"></button>').addClass(this._triggerClass).html(buttonImage==""?buttonText:$("<img/>").attr({src:buttonImage,alt:buttonText,title:buttonText})));input[isRTL?"before":"after"](inst.trigger);inst.trigger.click(function(){if($.datepicker._datepickerShowing&&$.datepicker._lastInput==target){$.datepicker._hideDatepicker()}else{$.datepicker._showDatepicker(target)}return false})}input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst)},_inlineDatepicker:function(target,inst){var divSpan=$(target);if(divSpan.hasClass(this.markerClassName)){return}divSpan.addClass(this.markerClassName).append(inst.dpDiv).bind("setData.datepicker",function(event,key,value){inst.settings[key]=value}).bind("getData.datepicker",function(event,key){return this._get(inst,key)});$.data(target,PROP_NAME,inst);this._setDate(inst,this._getDefaultDate(inst));this._updateDatepicker(inst);this._updateAlternate(inst)},_dialogDatepicker:function(input,dateText,onSelect,settings,pos){var inst=this._dialogInst;if(!inst){var id="dp"+(++this.uuid);this._dialogInput=$('<input type="text" id="'+id+'" size="1" style="position: absolute; top: -100px;"/>');this._dialogInput.keydown(this._doKeyDown);$("body").append(this._dialogInput);inst=this._dialogInst=this._newInst(this._dialogInput,false);inst.settings={};$.data(this._dialogInput[0],PROP_NAME,inst)}extendRemove(inst.settings,settings||{});this._dialogInput.val(dateText);this._pos=(pos?(pos.length?pos:[pos.pageX,pos.pageY]):null);if(!this._pos){var browserWidth=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;var browserHeight=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;var scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;var scrollY=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[(browserWidth/2)-100+scrollX,(browserHeight/2)-150+scrollY]}this._dialogInput.css("left",this._pos[0]+"px").css("top",this._pos[1]+"px");inst.settings.onSelect=onSelect;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);if($.blockUI){$.blockUI(this.dpDiv)}$.data(this._dialogInput[0],PROP_NAME,inst);return this},_destroyDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();$.removeData(target,PROP_NAME);if(nodeName=="input"){inst.append.remove();inst.trigger.remove();$target.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress)}else{if(nodeName=="div"||nodeName=="span"){$target.removeClass(this.markerClassName).empty()}}},_enableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=false;inst.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().removeClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)})},_disableDatepicker:function(target){var $target=$(target);var inst=$.data(target,PROP_NAME);if(!$target.hasClass(this.markerClassName)){return}var nodeName=target.nodeName.toLowerCase();if(nodeName=="input"){target.disabled=true;inst.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else{if(nodeName=="div"||nodeName=="span"){var inline=$target.children("."+this._inlineClass);inline.children().addClass("ui-state-disabled")}}this._disabledInputs=$.map(this._disabledInputs,function(value){return(value==target?null:value)});this._disabledInputs[this._disabledInputs.length]=target},_isDisabledDatepicker:function(target){if(!target){return false}for(var i=0;i<this._disabledInputs.length;i++){if(this._disabledInputs[i]==target){return true}}return false},_getInst:function(target){try{return $.data(target,PROP_NAME)}catch(err){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(target,name,value){var inst=this._getInst(target);if(arguments.length==2&&typeof name=="string"){return(name=="defaults"?$.extend({},$.datepicker._defaults):(inst?(name=="all"?$.extend({},inst.settings):this._get(inst,name)):null))}var settings=name||{};if(typeof name=="string"){settings={};settings[name]=value}if(inst){if(this._curInst==inst){this._hideDatepicker(null)}var date=this._getDateDatepicker(target);extendRemove(inst.settings,settings);this._setDateDatepicker(target,date);this._updateDatepicker(inst)}},_changeDatepicker:function(target,name,value){this._optionDatepicker(target,name,value)},_refreshDatepicker:function(target){var inst=this._getInst(target);if(inst){this._updateDatepicker(inst)}},_setDateDatepicker:function(target,date,endDate){var inst=this._getInst(target);if(inst){this._setDate(inst,date,endDate);this._updateDatepicker(inst);this._updateAlternate(inst)}},_getDateDatepicker:function(target){var inst=this._getInst(target);if(inst&&!inst.inline){this._setDateFromField(inst)}return(inst?this._getDate(inst):null)},_doKeyDown:function(event){var inst=$.datepicker._getInst(event.target);var handled=true;var isRTL=inst.dpDiv.is(".ui-datepicker-rtl");inst._keyEvent=true;if($.datepicker._datepickerShowing){switch(event.keyCode){case 9:$.datepicker._hideDatepicker(null,"");break;case 13:var sel=$("td."+$.datepicker._dayOverClass+", td."+$.datepicker._currentClass,inst.dpDiv);if(sel[0]){$.datepicker._selectDay(event.target,inst.selectedMonth,inst.selectedYear,sel[0])}else{$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"))}return false;break;case 27:$.datepicker._hideDatepicker(null,$.datepicker._get(inst,"duration"));break;case 33:$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M");break;case 34:$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M");break;case 35:if(event.ctrlKey||event.metaKey){$.datepicker._clearDate(event.target)}handled=event.ctrlKey||event.metaKey;break;case 36:if(event.ctrlKey||event.metaKey){$.datepicker._gotoToday(event.target)}handled=event.ctrlKey||event.metaKey;break;case 37:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?+1:-1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?-$.datepicker._get(inst,"stepBigMonths"):-$.datepicker._get(inst,"stepMonths")),"M")}break;case 38:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,-7,"D")}handled=event.ctrlKey||event.metaKey;break;case 39:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,(isRTL?-1:+1),"D")}handled=event.ctrlKey||event.metaKey;if(event.originalEvent.altKey){$.datepicker._adjustDate(event.target,(event.ctrlKey?+$.datepicker._get(inst,"stepBigMonths"):+$.datepicker._get(inst,"stepMonths")),"M")}break;case 40:if(event.ctrlKey||event.metaKey){$.datepicker._adjustDate(event.target,+7,"D")}handled=event.ctrlKey||event.metaKey;break;default:handled=false}}else{if(event.keyCode==36&&event.ctrlKey){$.datepicker._showDatepicker(this)}else{handled=false}}if(handled){event.preventDefault();event.stopPropagation()}},_doKeyPress:function(event){var inst=$.datepicker._getInst(event.target);if($.datepicker._get(inst,"constrainInput")){var chars=$.datepicker._possibleChars($.datepicker._get(inst,"dateFormat"));var chr=String.fromCharCode(event.charCode==undefined?event.keyCode:event.charCode);return event.ctrlKey||(chr<" "||!chars||chars.indexOf(chr)>-1)}},_showDatepicker:function(input){input=input.target||input;if(input.nodeName.toLowerCase()!="input"){input=$("input",input.parentNode)[0]}if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput==input){return}var inst=$.datepicker._getInst(input);var beforeShow=$.datepicker._get(inst,"beforeShow");extendRemove(inst.settings,(beforeShow?beforeShow.apply(input,[input,inst]):{}));$.datepicker._hideDatepicker(null,"");$.datepicker._lastInput=input;$.datepicker._setDateFromField(inst);if($.datepicker._inDialog){input.value=""}if(!$.datepicker._pos){$.datepicker._pos=$.datepicker._findPos(input);$.datepicker._pos[1]+=input.offsetHeight}var isFixed=false;$(input).parents().each(function(){isFixed|=$(this).css("position")=="fixed";return !isFixed});if(isFixed&&$.browser.opera){$.datepicker._pos[0]-=document.documentElement.scrollLeft;$.datepicker._pos[1]-=document.documentElement.scrollTop}var offset={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null;inst.rangeStart=null;inst.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});$.datepicker._updateDatepicker(inst);offset=$.datepicker._checkOffset(inst,offset,isFixed);inst.dpDiv.css({position:($.datepicker._inDialog&&$.blockUI?"static":(isFixed?"fixed":"absolute")),display:"none",left:offset.left+"px",top:offset.top+"px"});if(!inst.inline){var showAnim=$.datepicker._get(inst,"showAnim")||"show";var duration=$.datepicker._get(inst,"duration");var postProcess=function(){$.datepicker._datepickerShowing=true;if($.browser.msie&&parseInt($.browser.version,10)<7){$("iframe.ui-datepicker-cover").css({width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4})}};if($.effects&&$.effects[showAnim]){inst.dpDiv.show(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[showAnim](duration,postProcess)}if(duration==""){postProcess()}if(inst.input[0].type!="hidden"){inst.input[0].focus()}$.datepicker._curInst=inst}},_updateDatepicker:function(inst){var dims={width:inst.dpDiv.width()+4,height:inst.dpDiv.height()+4};var self=this;inst.dpDiv.empty().append(this._generateHTML(inst)).find("iframe.ui-datepicker-cover").css({width:dims.width,height:dims.height}).end().find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout",function(){$(this).removeClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).removeClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).removeClass("ui-datepicker-next-hover")}}).bind("mouseover",function(){if(!self._isDisabledDatepicker(inst.inline?inst.dpDiv.parent()[0]:inst.input[0])){$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");$(this).addClass("ui-state-hover");if(this.className.indexOf("ui-datepicker-prev")!=-1){$(this).addClass("ui-datepicker-prev-hover")}if(this.className.indexOf("ui-datepicker-next")!=-1){$(this).addClass("ui-datepicker-next-hover")}}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();var numMonths=this._getNumberOfMonths(inst);var cols=numMonths[1];var width=17;if(cols>1){inst.dpDiv.addClass("ui-datepicker-multi-"+cols).css("width",(width*cols)+"em")}else{inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("")}inst.dpDiv[(numMonths[0]!=1||numMonths[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");inst.dpDiv[(this._get(inst,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");if(inst.input&&inst.input[0].type!="hidden"&&inst==$.datepicker._curInst){$(inst.input[0]).focus()}},_checkOffset:function(inst,offset,isFixed){var dpWidth=inst.dpDiv.outerWidth();var dpHeight=inst.dpDiv.outerHeight();var inputWidth=inst.input?inst.input.outerWidth():0;var inputHeight=inst.input?inst.input.outerHeight():0;var viewWidth=(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)+$(document).scrollLeft();var viewHeight=(window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight)+$(document).scrollTop();offset.left-=(this._get(inst,"isRTL")?(dpWidth-inputWidth):0);offset.left-=(isFixed&&offset.left==inst.input.offset().left)?$(document).scrollLeft():0;offset.top-=(isFixed&&offset.top==(inst.input.offset().top+inputHeight))?$(document).scrollTop():0;offset.left-=(offset.left+dpWidth>viewWidth&&viewWidth>dpWidth)?Math.abs(offset.left+dpWidth-viewWidth):0;offset.top-=(offset.top+dpHeight>viewHeight&&viewHeight>dpHeight)?Math.abs(offset.top+dpHeight+inputHeight*2-viewHeight):0;return offset},_findPos:function(obj){while(obj&&(obj.type=="hidden"||obj.nodeType!=1)){obj=obj.nextSibling}var position=$(obj).offset();return[position.left,position.top]},_hideDatepicker:function(input,duration){var inst=this._curInst;if(!inst||(input&&inst!=$.data(input,PROP_NAME))){return}if(inst.stayOpen){this._selectDate("#"+inst.id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear))}inst.stayOpen=false;if(this._datepickerShowing){duration=(duration!=null?duration:this._get(inst,"duration"));var showAnim=this._get(inst,"showAnim");var postProcess=function(){$.datepicker._tidyDialog(inst)};if(duration!=""&&$.effects&&$.effects[showAnim]){inst.dpDiv.hide(showAnim,$.datepicker._get(inst,"showOptions"),duration,postProcess)}else{inst.dpDiv[(duration==""?"hide":(showAnim=="slideDown"?"slideUp":(showAnim=="fadeIn"?"fadeOut":"hide")))](duration,postProcess)}if(duration==""){this._tidyDialog(inst)}var onClose=this._get(inst,"onClose");if(onClose){onClose.apply((inst.input?inst.input[0]:null),[(inst.input?inst.input.val():""),inst])}this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if($.blockUI){$.unblockUI();$("body").append(this.dpDiv)}}this._inDialog=false}this._curInst=null},_tidyDialog:function(inst){inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(event){if(!$.datepicker._curInst){return}var $target=$(event.target);if(($target.parents("#"+$.datepicker._mainDivId).length==0)&&!$target.hasClass($.datepicker.markerClassName)&&!$target.hasClass($.datepicker._triggerClass)&&$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI)){$.datepicker._hideDatepicker(null,"")}},_adjustDate:function(id,offset,period){var target=$(id);var inst=this._getInst(target[0]);if(this._isDisabledDatepicker(target[0])){return}this._adjustInstDate(inst,offset+(period=="M"?this._get(inst,"showCurrentAtPos"):0),period);this._updateDatepicker(inst)},_gotoToday:function(id){var target=$(id);var inst=this._getInst(target[0]);if(this._get(inst,"gotoCurrent")&&inst.currentDay){inst.selectedDay=inst.currentDay;inst.drawMonth=inst.selectedMonth=inst.currentMonth;inst.drawYear=inst.selectedYear=inst.currentYear}else{var date=new Date();inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear()}this._notifyChange(inst);this._adjustDate(target)},_selectMonthYear:function(id,select,period){var target=$(id);var inst=this._getInst(target[0]);inst._selectingMonthYear=false;inst["selected"+(period=="M"?"Month":"Year")]=inst["draw"+(period=="M"?"Month":"Year")]=parseInt(select.options[select.selectedIndex].value,10);this._notifyChange(inst);this._adjustDate(target)},_clickMonthYear:function(id){var target=$(id);var inst=this._getInst(target[0]);if(inst.input&&inst._selectingMonthYear&&!$.browser.msie){inst.input[0].focus()}inst._selectingMonthYear=!inst._selectingMonthYear},_selectDay:function(id,month,year,td){var target=$(id);if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[0])){return}var inst=this._getInst(target[0]);inst.selectedDay=inst.currentDay=$("a",td).html();inst.selectedMonth=inst.currentMonth=month;inst.selectedYear=inst.currentYear=year;if(inst.stayOpen){inst.endDay=inst.endMonth=inst.endYear=null}this._selectDate(id,this._formatDate(inst,inst.currentDay,inst.currentMonth,inst.currentYear));if(inst.stayOpen){inst.rangeStart=this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay));this._updateDatepicker(inst)}},_clearDate:function(id){var target=$(id);var inst=this._getInst(target[0]);inst.stayOpen=false;inst.endDay=inst.endMonth=inst.endYear=inst.rangeStart=null;this._selectDate(target,"")},_selectDate:function(id,dateStr){var target=$(id);var inst=this._getInst(target[0]);dateStr=(dateStr!=null?dateStr:this._formatDate(inst));if(inst.input){inst.input.val(dateStr)}this._updateAlternate(inst);var onSelect=this._get(inst,"onSelect");if(onSelect){onSelect.apply((inst.input?inst.input[0]:null),[dateStr,inst])}else{if(inst.input){inst.input.trigger("change")}}if(inst.inline){this._updateDatepicker(inst)}else{if(!inst.stayOpen){this._hideDatepicker(null,this._get(inst,"duration"));this._lastInput=inst.input[0];if(typeof(inst.input[0])!="object"){inst.input[0].focus()}this._lastInput=null}}},_updateAlternate:function(inst){var altField=this._get(inst,"altField");if(altField){var altFormat=this._get(inst,"altFormat")||this._get(inst,"dateFormat");var date=this._getDate(inst);dateStr=this.formatDate(altFormat,date,this._getFormatConfig(inst));$(altField).each(function(){$(this).val(dateStr)})}},noWeekends:function(date){var day=date.getDay();return[(day>0&&day<6),""]},iso8601Week:function(date){var checkDate=new Date(date.getFullYear(),date.getMonth(),date.getDate());var firstMon=new Date(checkDate.getFullYear(),1-1,4);var firstDay=firstMon.getDay()||7;firstMon.setDate(firstMon.getDate()+1-firstDay);if(firstDay<4&&checkDate<firstMon){checkDate.setDate(checkDate.getDate()-3);return $.datepicker.iso8601Week(checkDate)}else{if(checkDate>new Date(checkDate.getFullYear(),12-1,28)){firstDay=new Date(checkDate.getFullYear()+1,1-1,4).getDay()||7;if(firstDay>4&&(checkDate.getDay()||7)<firstDay-3){return 1}}}return Math.floor(((checkDate-firstMon)/86400000)/7)+1},parseDate:function(format,value,settings){if(format==null||value==null){throw"Invalid arguments"}value=(typeof value=="object"?value.toString():value+"");if(value==""){return null}var shortYearCutoff=(settings?settings.shortYearCutoff:null)||this._defaults.shortYearCutoff;var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var year=-1;var month=-1;var day=-1;var doy=-1;var literal=false;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var getNumber=function(match){lookAhead(match);var origSize=(match=="@"?14:(match=="y"?4:(match=="o"?3:2)));var size=origSize;var num=0;while(size>0&&iValue<value.length&&value.charAt(iValue)>="0"&&value.charAt(iValue)<="9"){num=num*10+parseInt(value.charAt(iValue++),10);size--}if(size==origSize){throw"Missing number at position "+iValue}return num};var getName=function(match,shortNames,longNames){var names=(lookAhead(match)?longNames:shortNames);var size=0;for(var j=0;j<names.length;j++){size=Math.max(size,names[j].length)}var name="";var iInit=iValue;while(size>0&&iValue<value.length){name+=value.charAt(iValue++);for(var i=0;i<names.length;i++){if(name==names[i]){return i+1}}size--}throw"Unknown name at position "+iInit};var checkLiteral=function(){if(value.charAt(iValue)!=format.charAt(iFormat)){throw"Unexpected literal at position "+iValue}iValue++};var iValue=0;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{checkLiteral()}}else{switch(format.charAt(iFormat)){case"d":day=getNumber("d");break;case"D":getName("D",dayNamesShort,dayNames);break;case"o":doy=getNumber("o");break;case"m":month=getNumber("m");break;case"M":month=getName("M",monthNamesShort,monthNames);break;case"y":year=getNumber("y");break;case"@":var date=new Date(getNumber("@"));year=date.getFullYear();month=date.getMonth()+1;day=date.getDate();break;case"'":if(lookAhead("'")){checkLiteral()}else{literal=true}break;default:checkLiteral()}}}if(year==-1){year=new Date().getFullYear()}else{if(year<100){year+=new Date().getFullYear()-new Date().getFullYear()%100+(year<=shortYearCutoff?0:-100)}}if(doy>-1){month=1;day=doy;do{var dim=this._getDaysInMonth(year,month-1);if(day<=dim){break}month++;day-=dim}while(true)}var date=this._daylightSavingAdjust(new Date(year,month-1,day));if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day){throw"Invalid date"}return date},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TIMESTAMP:"@",W3C:"yy-mm-dd",formatDate:function(format,date,settings){if(!date){return""}var dayNamesShort=(settings?settings.dayNamesShort:null)||this._defaults.dayNamesShort;var dayNames=(settings?settings.dayNames:null)||this._defaults.dayNames;var monthNamesShort=(settings?settings.monthNamesShort:null)||this._defaults.monthNamesShort;var monthNames=(settings?settings.monthNames:null)||this._defaults.monthNames;var lookAhead=function(match){var matches=(iFormat+1<format.length&&format.charAt(iFormat+1)==match);if(matches){iFormat++}return matches};var formatNumber=function(match,value,len){var num=""+value;if(lookAhead(match)){while(num.length<len){num="0"+num}}return num};var formatName=function(match,value,shortNames,longNames){return(lookAhead(match)?longNames[value]:shortNames[value])};var output="";var literal=false;if(date){for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{output+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":output+=formatNumber("d",date.getDate(),2);break;case"D":output+=formatName("D",date.getDay(),dayNamesShort,dayNames);break;case"o":var doy=date.getDate();for(var m=date.getMonth()-1;m>=0;m--){doy+=this._getDaysInMonth(date.getFullYear(),m)}output+=formatNumber("o",doy,3);break;case"m":output+=formatNumber("m",date.getMonth()+1,2);break;case"M":output+=formatName("M",date.getMonth(),monthNamesShort,monthNames);break;case"y":output+=(lookAhead("y")?date.getFullYear():(date.getYear()%100<10?"0":"")+date.getYear()%100);break;case"@":output+=date.getTime();break;case"'":if(lookAhead("'")){output+="'"}else{literal=true}break;default:output+=format.charAt(iFormat)}}}}return output},_possibleChars:function(format){var chars="";var literal=false;for(var iFormat=0;iFormat<format.length;iFormat++){if(literal){if(format.charAt(iFormat)=="'"&&!lookAhead("'")){literal=false}else{chars+=format.charAt(iFormat)}}else{switch(format.charAt(iFormat)){case"d":case"m":case"y":case"@":chars+="0123456789";break;case"D":case"M":return null;case"'":if(lookAhead("'")){chars+="'"}else{literal=true}break;default:chars+=format.charAt(iFormat)}}}return chars},_get:function(inst,name){return inst.settings[name]!==undefined?inst.settings[name]:this._defaults[name]},_setDateFromField:function(inst){var dateFormat=this._get(inst,"dateFormat");var dates=inst.input?inst.input.val():null;inst.endDay=inst.endMonth=inst.endYear=null;var date=defaultDate=this._getDefaultDate(inst);var settings=this._getFormatConfig(inst);try{date=this.parseDate(dateFormat,dates,settings)||defaultDate}catch(event){this.log(event);date=defaultDate}inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();inst.currentDay=(dates?date.getDate():0);inst.currentMonth=(dates?date.getMonth():0);inst.currentYear=(dates?date.getFullYear():0);this._adjustInstDate(inst)},_getDefaultDate:function(inst){var date=this._determineDate(this._get(inst,"defaultDate"),new Date());var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);return date},_determineDate:function(date,defaultDate){var offsetNumeric=function(offset){var date=new Date();date.setDate(date.getDate()+offset);return date};var offsetString=function(offset,getDaysInMonth){var date=new Date();var year=date.getFullYear();var month=date.getMonth();var day=date.getDate();var pattern=/([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g;var matches=pattern.exec(offset);while(matches){switch(matches[2]||"d"){case"d":case"D":day+=parseInt(matches[1],10);break;case"w":case"W":day+=parseInt(matches[1],10)*7;break;case"m":case"M":month+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break;case"y":case"Y":year+=parseInt(matches[1],10);day=Math.min(day,getDaysInMonth(year,month));break}matches=pattern.exec(offset)}return new Date(year,month,day)};date=(date==null?defaultDate:(typeof date=="string"?offsetString(date,this._getDaysInMonth):(typeof date=="number"?(isNaN(date)?defaultDate:offsetNumeric(date)):date)));date=(date&&date.toString()=="Invalid Date"?defaultDate:date);if(date){date.setHours(0);date.setMinutes(0);date.setSeconds(0);date.setMilliseconds(0)}return this._daylightSavingAdjust(date)},_daylightSavingAdjust:function(date){if(!date){return null}date.setHours(date.getHours()>12?date.getHours()+2:0);return date},_setDate:function(inst,date,endDate){var clear=!(date);var origMonth=inst.selectedMonth;var origYear=inst.selectedYear;date=this._determineDate(date,new Date());inst.selectedDay=inst.currentDay=date.getDate();inst.drawMonth=inst.selectedMonth=inst.currentMonth=date.getMonth();inst.drawYear=inst.selectedYear=inst.currentYear=date.getFullYear();if(origMonth!=inst.selectedMonth||origYear!=inst.selectedYear){this._notifyChange(inst)}this._adjustInstDate(inst);if(inst.input){inst.input.val(clear?"":this._formatDate(inst))}},_getDate:function(inst){var startDate=(!inst.currentYear||(inst.input&&inst.input.val()=="")?null:this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return startDate},_generateHTML:function(inst){var today=new Date();today=this._daylightSavingAdjust(new Date(today.getFullYear(),today.getMonth(),today.getDate()));var isRTL=this._get(inst,"isRTL");var showButtonPanel=this._get(inst,"showButtonPanel");var hideIfNoPrevNext=this._get(inst,"hideIfNoPrevNext");var navigationAsDateFormat=this._get(inst,"navigationAsDateFormat");var numMonths=this._getNumberOfMonths(inst);var showCurrentAtPos=this._get(inst,"showCurrentAtPos");var stepMonths=this._get(inst,"stepMonths");var stepBigMonths=this._get(inst,"stepBigMonths");var isMultiMonth=(numMonths[0]!=1||numMonths[1]!=1);var currentDate=this._daylightSavingAdjust((!inst.currentDay?new Date(9999,9,9):new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");var drawMonth=inst.drawMonth-showCurrentAtPos;var drawYear=inst.drawYear;if(drawMonth<0){drawMonth+=12;drawYear--}if(maxDate){var maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),maxDate.getMonth()-numMonths[1]+1,maxDate.getDate()));maxDraw=(minDate&&maxDraw<minDate?minDate:maxDraw);while(this._daylightSavingAdjust(new Date(drawYear,drawMonth,1))>maxDraw){drawMonth--;if(drawMonth<0){drawMonth=11;drawYear--}}}inst.drawMonth=drawMonth;inst.drawYear=drawYear;var prevText=this._get(inst,"prevText");prevText=(!navigationAsDateFormat?prevText:this.formatDate(prevText,this._daylightSavingAdjust(new Date(drawYear,drawMonth-stepMonths,1)),this._getFormatConfig(inst)));var prev=(this._canAdjustMonth(inst,-1,drawYear,drawMonth)?'<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', -"+stepMonths+", 'M');\" title=\""+prevText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title=""><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"e":"w")+'">'+prevText+"</span></a>"));var nextText=this._get(inst,"nextText");nextText=(!navigationAsDateFormat?nextText:this.formatDate(nextText,this._daylightSavingAdjust(new Date(drawYear,drawMonth+stepMonths,1)),this._getFormatConfig(inst)));var next=(this._canAdjustMonth(inst,+1,drawYear,drawMonth)?'<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery.datepicker._adjustDate(\'#'+inst.id+"', +"+stepMonths+", 'M');\" title=\""+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>":(hideIfNoPrevNext?"":'<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="'+nextText+'"><span class="ui-icon ui-icon-circle-triangle-'+(isRTL?"w":"e")+'">'+nextText+"</span></a>"));var currentText=this._get(inst,"currentText");var gotoDate=(this._get(inst,"gotoCurrent")&&inst.currentDay?currentDate:today);currentText=(!navigationAsDateFormat?currentText:this.formatDate(currentText,gotoDate,this._getFormatConfig(inst)));var controls=(!inst.inline?'<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery.datepicker._hideDatepicker();">'+this._get(inst,"closeText")+"</button>":"");var buttonPanel=(showButtonPanel)?'<div class="ui-datepicker-buttonpane ui-widget-content">'+(isRTL?controls:"")+(this._isInRange(inst,gotoDate)?'<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery.datepicker._gotoToday(\'#'+inst.id+"');\">"+currentText+"</button>":"")+(isRTL?"":controls)+"</div>":"";var firstDay=parseInt(this._get(inst,"firstDay"),10);firstDay=(isNaN(firstDay)?0:firstDay);var dayNames=this._get(inst,"dayNames");var dayNamesShort=this._get(inst,"dayNamesShort");var dayNamesMin=this._get(inst,"dayNamesMin");var monthNames=this._get(inst,"monthNames");var monthNamesShort=this._get(inst,"monthNamesShort");var beforeShowDay=this._get(inst,"beforeShowDay");var showOtherMonths=this._get(inst,"showOtherMonths");var calculateWeek=this._get(inst,"calculateWeek")||this.iso8601Week;var endDate=inst.endDay?this._daylightSavingAdjust(new Date(inst.endYear,inst.endMonth,inst.endDay)):currentDate;var defaultDate=this._getDefaultDate(inst);var html="";for(var row=0;row<numMonths[0];row++){var group="";for(var col=0;col<numMonths[1];col++){var selectedDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,inst.selectedDay));var cornerClass=" ui-corner-all";var calender="";if(isMultiMonth){calender+='<div class="ui-datepicker-group ui-datepicker-group-';switch(col){case 0:calender+="first";cornerClass=" ui-corner-"+(isRTL?"right":"left");break;case numMonths[1]-1:calender+="last";cornerClass=" ui-corner-"+(isRTL?"left":"right");break;default:calender+="middle";cornerClass="";break}calender+='">'}calender+='<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix'+cornerClass+'">'+(/all|left/.test(cornerClass)&&row==0?(isRTL?next:prev):"")+(/all|right/.test(cornerClass)&&row==0?(isRTL?prev:next):"")+this._generateMonthYearHeader(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,row>0||col>0,monthNames,monthNamesShort)+'</div><table class="ui-datepicker-calendar"><thead><tr>';var thead="";for(var dow=0;dow<7;dow++){var day=(dow+firstDay)%7;thead+="<th"+((dow+firstDay+6)%7>=5?' class="ui-datepicker-week-end"':"")+'><span title="">'+dayNamesMin[day]+"</span></th>"}calender+=thead+"</tr></thead><tbody>";var daysInMonth=this._getDaysInMonth(drawYear,drawMonth);if(drawYear==inst.selectedYear&&drawMonth==inst.selectedMonth){inst.selectedDay=Math.min(inst.selectedDay,daysInMonth)}var leadDays=(this._getFirstDayOfMonth(drawYear,drawMonth)-firstDay+7)%7;var numRows=(isMultiMonth?6:Math.ceil((leadDays+daysInMonth)/7));var printDate=this._daylightSavingAdjust(new Date(drawYear,drawMonth,1-leadDays));for(var dRow=0;dRow<numRows;dRow++){calender+="<tr>";var tbody="";for(var dow=0;dow<7;dow++){var daySettings=(beforeShowDay?beforeShowDay.apply((inst.input?inst.input[0]:null),[printDate]):[true,""]);var otherMonth=(printDate.getMonth()!=drawMonth);var unselectable=otherMonth||!daySettings[0]||(minDate&&printDate<minDate)||(maxDate&&printDate>maxDate);tbody+='<td class="'+((dow+firstDay+6)%7>=5?" ui-datepicker-week-end":"")+(otherMonth?" ui-datepicker-other-month":"")+((printDate.getTime()==selectedDate.getTime()&&drawMonth==inst.selectedMonth&&inst._keyEvent)||(defaultDate.getTime()==printDate.getTime()&&defaultDate.getTime()==selectedDate.getTime())?" "+this._dayOverClass:"")+(unselectable?" "+this._unselectableClass+" ui-state-disabled":"")+(otherMonth&&!showOtherMonths?"":" "+daySettings[1]+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" "+this._currentClass:"")+(printDate.getTime()==today.getTime()?" ui-datepicker-today":""))+'"'+((!otherMonth||showOtherMonths)&&daySettings[2]?' title="'+daySettings[2]+'"':"")+(unselectable?"":" onclick=\"DP_jQuery.datepicker._selectDay('#"+inst.id+"',"+drawMonth+","+drawYear+', this);return false;"')+">"+(otherMonth?(showOtherMonths?printDate.getDate():"&#xa0;"):(unselectable?'<span class="ui-state-default">'+printDate.getDate()+"</span>":'<a class="ui-state-default'+(printDate.getTime()==today.getTime()?" ui-state-highlight":"")+(printDate.getTime()>=currentDate.getTime()&&printDate.getTime()<=endDate.getTime()?" ui-state-active":"")+'" href="#">'+printDate.getDate()+"</a>"))+"</td>";printDate.setDate(printDate.getDate()+1);printDate=this._daylightSavingAdjust(printDate)}calender+=tbody+"</tr>"}drawMonth++;if(drawMonth>11){drawMonth=0;drawYear++}calender+="</tbody></table>"+(isMultiMonth?"</div>"+((numMonths[0]>0&&col==numMonths[1]-1)?'<div class="ui-datepicker-row-break"></div>':""):"");group+=calender}html+=group}html+=buttonPanel+($.browser.msie&&parseInt($.browser.version,10)<7&&!inst.inline?'<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>':"");inst._keyEvent=false;return html},_generateMonthYearHeader:function(inst,drawMonth,drawYear,minDate,maxDate,selectedDate,secondary,monthNames,monthNamesShort){minDate=(inst.rangeStart&&minDate&&selectedDate<minDate?selectedDate:minDate);var changeMonth=this._get(inst,"changeMonth");var changeYear=this._get(inst,"changeYear");var showMonthAfterYear=this._get(inst,"showMonthAfterYear");var html='<div class="ui-datepicker-title">';var monthHtml="";if(secondary||!changeMonth){monthHtml+='<span class="ui-datepicker-month">'+monthNames[drawMonth]+"</span> "}else{var inMinYear=(minDate&&minDate.getFullYear()==drawYear);var inMaxYear=(maxDate&&maxDate.getFullYear()==drawYear);monthHtml+='<select class="ui-datepicker-month" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'M');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(var month=0;month<12;month++){if((!inMinYear||month>=minDate.getMonth())&&(!inMaxYear||month<=maxDate.getMonth())){monthHtml+='<option value="'+month+'"'+(month==drawMonth?' selected="selected"':"")+">"+monthNamesShort[month]+"</option>"}}monthHtml+="</select>"}if(!showMonthAfterYear){html+=monthHtml+((secondary||changeMonth||changeYear)&&(!(changeMonth&&changeYear))?"&#xa0;":"")}if(secondary||!changeYear){html+='<span class="ui-datepicker-year">'+drawYear+"</span>"}else{var years=this._get(inst,"yearRange").split(":");var year=0;var endYear=0;if(years.length!=2){year=drawYear-10;endYear=drawYear+10}else{if(years[0].charAt(0)=="+"||years[0].charAt(0)=="-"){year=drawYear+parseInt(years[0],10);endYear=drawYear+parseInt(years[1],10)}else{year=parseInt(years[0],10);endYear=parseInt(years[1],10)}}year=(minDate?Math.max(year,minDate.getFullYear()):year);endYear=(maxDate?Math.min(endYear,maxDate.getFullYear()):endYear);html+='<select class="ui-datepicker-year" onchange="DP_jQuery.datepicker._selectMonthYear(\'#'+inst.id+"', this, 'Y');\" onclick=\"DP_jQuery.datepicker._clickMonthYear('#"+inst.id+"');\">";for(;year<=endYear;year++){html+='<option value="'+year+'"'+(year==drawYear?' selected="selected"':"")+">"+year+"</option>"}html+="</select>"}if(showMonthAfterYear){html+=(secondary||changeMonth||changeYear?"&#xa0;":"")+monthHtml}html+="</div>";return html},_adjustInstDate:function(inst,offset,period){var year=inst.drawYear+(period=="Y"?offset:0);var month=inst.drawMonth+(period=="M"?offset:0);var day=Math.min(inst.selectedDay,this._getDaysInMonth(year,month))+(period=="D"?offset:0);var date=this._daylightSavingAdjust(new Date(year,month,day));var minDate=this._getMinMaxDate(inst,"min",true);var maxDate=this._getMinMaxDate(inst,"max");date=(minDate&&date<minDate?minDate:date);date=(maxDate&&date>maxDate?maxDate:date);inst.selectedDay=date.getDate();inst.drawMonth=inst.selectedMonth=date.getMonth();inst.drawYear=inst.selectedYear=date.getFullYear();if(period=="M"||period=="Y"){this._notifyChange(inst)}},_notifyChange:function(inst){var onChange=this._get(inst,"onChangeMonthYear");if(onChange){onChange.apply((inst.input?inst.input[0]:null),[inst.selectedYear,inst.selectedMonth+1,inst])}},_getNumberOfMonths:function(inst){var numMonths=this._get(inst,"numberOfMonths");return(numMonths==null?[1,1]:(typeof numMonths=="number"?[1,numMonths]:numMonths))},_getMinMaxDate:function(inst,minMax,checkRange){var date=this._determineDate(this._get(inst,minMax+"Date"),null);return(!checkRange||!inst.rangeStart?date:(!date||inst.rangeStart>date?inst.rangeStart:date))},_getDaysInMonth:function(year,month){return 32-new Date(year,month,32).getDate()},_getFirstDayOfMonth:function(year,month){return new Date(year,month,1).getDay()},_canAdjustMonth:function(inst,offset,curYear,curMonth){var numMonths=this._getNumberOfMonths(inst);var date=this._daylightSavingAdjust(new Date(curYear,curMonth+(offset<0?offset:numMonths[1]),1));if(offset<0){date.setDate(this._getDaysInMonth(date.getFullYear(),date.getMonth()))}return this._isInRange(inst,date)},_isInRange:function(inst,date){var newMinDate=(!inst.rangeStart?null:this._daylightSavingAdjust(new Date(inst.selectedYear,inst.selectedMonth,inst.selectedDay)));newMinDate=(newMinDate&&inst.rangeStart<newMinDate?inst.rangeStart:newMinDate);var minDate=newMinDate||this._getMinMaxDate(inst,"min");var maxDate=this._getMinMaxDate(inst,"max");return((!minDate||date>=minDate)&&(!maxDate||date<=maxDate))},_getFormatConfig:function(inst){var shortYearCutoff=this._get(inst,"shortYearCutoff");shortYearCutoff=(typeof shortYearCutoff!="string"?shortYearCutoff:new Date().getFullYear()%100+parseInt(shortYearCutoff,10));return{shortYearCutoff:shortYearCutoff,dayNamesShort:this._get(inst,"dayNamesShort"),dayNames:this._get(inst,"dayNames"),monthNamesShort:this._get(inst,"monthNamesShort"),monthNames:this._get(inst,"monthNames")}},_formatDate:function(inst,day,month,year){if(!day){inst.currentDay=inst.selectedDay;inst.currentMonth=inst.selectedMonth;inst.currentYear=inst.selectedYear}var date=(day?(typeof day=="object"?day:this._daylightSavingAdjust(new Date(year,month,day))):this._daylightSavingAdjust(new Date(inst.currentYear,inst.currentMonth,inst.currentDay)));return this.formatDate(this._get(inst,"dateFormat"),date,this._getFormatConfig(inst))}});function extendRemove(target,props){$.extend(target,props);for(var name in props){if(props[name]==null||props[name]==undefined){target[name]=props[name]}}return target}function isArray(a){return(a&&(($.browser.safari&&typeof a=="object"&&a.length)||(a.constructor&&a.constructor.toString().match(/\Array\(\)/))))}$.fn.datepicker=function(options){if(!$.datepicker.initialized){$(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv);$.datepicker.initialized=true}var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"&&(options=="isDisabled"||options=="getDate")){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}if(options=="option"&&arguments.length==2&&typeof arguments[1]=="string"){return $.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this[0]].concat(otherArgs))}return this.each(function(){typeof options=="string"?$.datepicker["_"+options+"Datepicker"].apply($.datepicker,[this].concat(otherArgs)):$.datepicker._attachDatepicker(this,options)})};$.datepicker=new Datepicker();$.datepicker.initialized=false;$.datepicker.uuid=new Date().getTime();$.datepicker.version="1.7.2";window.DP_jQuery=$})(jQuery);;


/**

 * jQuery lightBox plugin

 * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)

 * and adapted to me for use like a plugin from jQuery.

 * @name jquery-lightbox-0.5.js

 * @author Leandro Vieira Pinho - http://leandrovieira.com

 * @version 0.5

 * @date April 11, 2008

 * @category jQuery plugin

 * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)

 * @license CC Attribution-No Derivative Works 2.5 Brazil - http://creativecommons.org/licenses/by-nd/2.5/br/deed.en_US

 * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin

 */



// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias

(function($) {

	/**

	 * $ is an alias to jQuery object

	 *

	 */

	$.fn.lightBox = function(settings) {

		// Settings to configure the jQuery lightBox plugin how you like

		settings = jQuery.extend({

			// Configuration related to overlay

			overlayBgColor: 		'#000',		// (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color.

			overlayOpacity:			0.8,		// (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9

			// Configuration related to navigation

			fixedNavigation:		false,		// (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface.

			// Configuration related to images

			imageLoading:			'images/lightbox-ico-loading.gif',		// (string) Path and the name of the loading icon

			imageBtnPrev:			'images/lightbox-btn-prev.gif',			// (string) Path and the name of the prev button image

			imageBtnNext:			'images/lightbox-btn-next.gif',			// (string) Path and the name of the next button image

			imageBtnClose:			'images/lightbox-btn-close.gif',		// (string) Path and the name of the close btn

			imageBlank:				'images/lightbox-blank.gif',			// (string) Path and the name of a blank image (one pixel)

			// Configuration related to container image box

			containerBorderSize:	10,			// (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value

			containerResizeSpeed:	400,		// (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default.

			// Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts.

			txtImage:				'Image',	// (string) Specify text "Image"

			txtOf:					'of',		// (string) Specify text "of"

			// Configuration related to keyboard navigation

			keyToClose:				'c',		// (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to.

			keyToPrev:				'p',		// (string) (p = previous) Letter to show the previous image

			keyToNext:				'n',		// (string) (n = next) Letter to show the next image.

			// Don´t alter these variables in any way

			imageArray:				[],

			activeImage:			0

		},settings);

		// Caching the jQuery object with all elements matched

		var jQueryMatchedObj = this; // This, in this context, refer to jQuery object

		/**

		 * Initializing the plugin calling the start function

		 *

		 * @return boolean false

		 */

		function _initialize() {

			_start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked

			return false; // Avoid the browser following the link

		}

		/**

		 * Start the jQuery lightBox plugin

		 *

		 * @param object objClicked The object (link) whick the user have clicked

		 * @param object jQueryMatchedObj The jQuery object with all elements matched

		 */

		function _start(objClicked,jQueryMatchedObj) {

			// Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay.

			$('embed, object, select').css({ 'visibility' : 'hidden' });

			// Call the function to create the markup structure; style some elements; assign events in some elements.

			_set_interface();

			// Unset total images in imageArray

			settings.imageArray.length = 0;

			// Unset image active information

			settings.activeImage = 0;

			// We have an image set? Or just an image? Let´s see it.

			if ( jQueryMatchedObj.length == 1 ) {

				settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));

			} else {

				// Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references		

				for ( var i = 0; i < jQueryMatchedObj.length; i++ ) {

					settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title')));

				}

			}

			while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) {

				settings.activeImage++;

			}

			// Call the function that prepares image exibition

			_set_image_to_view();

		}

		/**

		 * Create the jQuery lightBox plugin interface

		 *

		 * The HTML markup will be like that:

			<div id="jquery-overlay"></div>

			<div id="jquery-lightbox">

				<div id="lightbox-container-image-box">

					<div id="lightbox-container-image">

						<img src="../fotos/XX.jpg" id="lightbox-image">

						<div id="lightbox-nav">

							<a href="#" id="lightbox-nav-btnPrev"></a>

							<a href="#" id="lightbox-nav-btnNext"></a>

						</div>

						<div id="lightbox-loading">

							<a href="#" id="lightbox-loading-link">

								<img src="../images/lightbox-ico-loading.gif">

							</a>

						</div>

					</div>

				</div>

				<div id="lightbox-container-image-data-box">

					<div id="lightbox-container-image-data">

						<div id="lightbox-image-details">

							<span id="lightbox-image-details-caption"></span>

							<span id="lightbox-image-details-currentNumber"></span>

						</div>

						<div id="lightbox-secNav">

							<a href="#" id="lightbox-secNav-btnClose">

								<img src="../images/lightbox-btn-close.gif">

							</a>

						</div>

					</div>

				</div>

			</div>

		 *

		 */

		function _set_interface() {

			// Apply the HTML markup into body tag

			$('body').append('<div id="jquery-overlay"></div><div id="jquery-lightbox"><div id="lightbox-container-image-box"><div id="lightbox-container-image"><img id="lightbox-image"><div style="" id="lightbox-nav"><a href="#" id="lightbox-nav-btnPrev"></a><a href="#" id="lightbox-nav-btnNext"></a></div><div id="lightbox-loading"><a href="#" id="lightbox-loading-link"><img src="' + settings.imageLoading + '"></a></div></div></div><div id="lightbox-container-image-data-box"><div id="lightbox-container-image-data"><div id="lightbox-image-details"><span id="lightbox-image-details-caption"></span><span id="lightbox-image-details-currentNumber"></span></div><div id="lightbox-secNav"><a href="#" id="lightbox-secNav-btnClose"><img src="' + settings.imageBtnClose + '"></a></div></div></div></div>');	

			// Get page sizes

			var arrPageSizes = ___getPageSize();

			// Style overlay and show it

			$('#jquery-overlay').css({

				backgroundColor:	settings.overlayBgColor,

				opacity:			settings.overlayOpacity,

				width:				arrPageSizes[0],

				height:				arrPageSizes[1]

			}).fadeIn();

			// Get page scroll

			var arrPageScroll = ___getPageScroll();

			// Calculate top and left offset for the jquery-lightbox div object and show it

			$('#jquery-lightbox').css({

				top:	arrPageScroll[1] + (arrPageSizes[3] / 10),

				left:	arrPageScroll[0]

			}).show();

			// Assigning click events in elements to close overlay

			$('#jquery-overlay,#jquery-lightbox').click(function() {

				_finish();									

			});

			// Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects

			$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() {

				_finish();

				return false;

			});

			// If window was resized, calculate the new overlay dimensions

			$(window).resize(function() {

				// Get page sizes

				var arrPageSizes = ___getPageSize();

				// Style overlay and show it

				$('#jquery-overlay').css({

					width:		arrPageSizes[0],

					height:		arrPageSizes[1]

				});

				// Get page scroll

				var arrPageScroll = ___getPageScroll();

				// Calculate top and left offset for the jquery-lightbox div object and show it

				$('#jquery-lightbox').css({

					top:	arrPageScroll[1] + (arrPageSizes[3] / 10),

					left:	arrPageScroll[0]

				});

			});

		}

		/**

		 * Prepares image exibition; doing a image´s preloader to calculate it´s size

		 *

		 */

		function _set_image_to_view() { // show the loading

			// Show the loading

			$('#lightbox-loading').show();

			if ( settings.fixedNavigation ) {

				$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();

			} else {

				// Hide some elements

				$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();

			}

			// Image preload process

			var objImagePreloader = new Image();

			objImagePreloader.onload = function() {

				$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);

				// Perfomance an effect in the image container resizing it

				_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);

				//	clear onLoad, IE behaves irratically with animated gifs otherwise

				objImagePreloader.onload=function(){};

			};

			objImagePreloader.src = settings.imageArray[settings.activeImage][0];

		};

		/**

		 * Perfomance an effect in the image container resizing it

		 *

		 * @param integer intImageWidth The image´s width that will be showed

		 * @param integer intImageHeight The image´s height that will be showed

		 */

		function _resize_container_image_box(intImageWidth,intImageHeight) {

			// Get current width and height

			var intCurrentWidth = $('#lightbox-container-image-box').width();

			var intCurrentHeight = $('#lightbox-container-image-box').height();

			// Get the width and height of the selected image plus the padding

			var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the image´s width and the left and right padding value

			var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the image´s height and the left and right padding value

			// Diferences

			var intDiffW = intCurrentWidth - intWidth;

			var intDiffH = intCurrentHeight - intHeight;

			// Perfomance the effect

			$('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); });

			if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) {

				if ( $.browser.msie ) {

					___pause(250);

				} else {

					___pause(100);	

				}

			} 

			$('#lightbox-container-image-data-box').css({ width: intImageWidth });

			$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) });

		};

		/**

		 * Show the prepared image

		 *

		 */

		function _show_image() {

			$('#lightbox-loading').hide();

			$('#lightbox-image').fadeIn(function() {

				_show_image_data();

				_set_navigation();

			});

			_preload_neighbor_images();

		};

		/**

		 * Show the image information

		 *

		 */

		function _show_image_data() {

			$('#lightbox-container-image-data-box').slideDown('fast');

			$('#lightbox-image-details-caption').hide();

			if ( settings.imageArray[settings.activeImage][1] ) {

				$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();

			}

			// If we have a image set, display 'Image X of X'

			if ( settings.imageArray.length > 1 ) {

				$('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show();

			}		

		}

		/**

		 * Display the button navigations

		 *

		 */

		function _set_navigation() {

			$('#lightbox-nav').show();



			// Instead to define this configuration in CSS file, we define here. And it´s need to IE. Just.

			$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });

			

			// Show the prev button, if not the first image in set

			if ( settings.activeImage != 0 ) {

				if ( settings.fixedNavigation ) {

					$('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' })

						.unbind()

						.bind('click',function() {

							settings.activeImage = settings.activeImage - 1;

							_set_image_to_view();

							return false;

						});

				} else {

					// Show the images button for Next buttons

					$('#lightbox-nav-btnPrev').unbind().hover(function() {

						$(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' });

					},function() {

						$(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });

					}).show().bind('click',function() {

						settings.activeImage = settings.activeImage - 1;

						_set_image_to_view();

						return false;

					});

				}

			}

			

			// Show the next button, if not the last image in set

			if ( settings.activeImage != ( settings.imageArray.length -1 ) ) {

				if ( settings.fixedNavigation ) {

					$('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' })

						.unbind()

						.bind('click',function() {

							settings.activeImage = settings.activeImage + 1;

							_set_image_to_view();

							return false;

						});

				} else {

					// Show the images button for Next buttons

					$('#lightbox-nav-btnNext').unbind().hover(function() {

						$(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' });

					},function() {

						$(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' });

					}).show().bind('click',function() {

						settings.activeImage = settings.activeImage + 1;

						_set_image_to_view();

						return false;

					});

				}

			}

			// Enable keyboard navigation

			_enable_keyboard_navigation();

		}

		/**

		 * Enable a support to keyboard navigation

		 *

		 */

		function _enable_keyboard_navigation() {

			$(document).keydown(function(objEvent) {

				_keyboard_action(objEvent);

			});

		}

		/**

		 * Disable the support to keyboard navigation

		 *

		 */

		function _disable_keyboard_navigation() {

			$(document).unbind();

		}

		/**

		 * Perform the keyboard actions

		 *

		 */

		function _keyboard_action(objEvent) {

			// To ie

			if ( objEvent == null ) {

				keycode = event.keyCode;

				escapeKey = 27;

			// To Mozilla

			} else {

				keycode = objEvent.keyCode;

				escapeKey = objEvent.DOM_VK_ESCAPE;

			}

			// Get the key in lower case form

			key = String.fromCharCode(keycode).toLowerCase();

			// Verify the keys to close the ligthBox

			if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) {

				_finish();

			}

			// Verify the key to show the previous image

			if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) {

				// If we´re not showing the first image, call the previous

				if ( settings.activeImage != 0 ) {

					settings.activeImage = settings.activeImage - 1;

					_set_image_to_view();

					_disable_keyboard_navigation();

				}

			}

			// Verify the key to show the next image

			if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) {

				// If we´re not showing the last image, call the next

				if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) {

					settings.activeImage = settings.activeImage + 1;

					_set_image_to_view();

					_disable_keyboard_navigation();

				}

			}

		}

		/**

		 * Preload prev and next images being showed

		 *

		 */

		function _preload_neighbor_images() {

			if ( (settings.imageArray.length -1) > settings.activeImage ) {

				objNext = new Image();

				objNext.src = settings.imageArray[settings.activeImage + 1][0];

			}

			if ( settings.activeImage > 0 ) {

				objPrev = new Image();

				objPrev.src = settings.imageArray[settings.activeImage -1][0];

			}

		}

		/**

		 * Remove jQuery lightBox plugin HTML markup

		 *

		 */

		function _finish() {

			$('#jquery-lightbox').remove();

			$('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); });

			// Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay.

			$('embed, object, select').css({ 'visibility' : 'visible' });

		}

		/**

		 / THIRD FUNCTION

		 * getPageSize() by quirksmode.com

		 *

		 * @return Array Return an array with page width, height and window width, height

		 */

		function ___getPageSize() {

			var xScroll, yScroll;

			if (window.innerHeight && window.scrollMaxY) {	

				xScroll = window.innerWidth + window.scrollMaxX;

				yScroll = window.innerHeight + window.scrollMaxY;

			} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac

				xScroll = document.body.scrollWidth;

				yScroll = document.body.scrollHeight;

			} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari

				xScroll = document.body.offsetWidth;

				yScroll = document.body.offsetHeight;

			}

			var windowWidth, windowHeight;

			if (self.innerHeight) {	// all except Explorer

				if(document.documentElement.clientWidth){

					windowWidth = document.documentElement.clientWidth; 

				} else {

					windowWidth = self.innerWidth;

				}

				windowHeight = self.innerHeight;

			} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode

				windowWidth = document.documentElement.clientWidth;

				windowHeight = document.documentElement.clientHeight;

			} else if (document.body) { // other Explorers

				windowWidth = document.body.clientWidth;

				windowHeight = document.body.clientHeight;

			}	

			// for small pages with total height less then height of the viewport

			if(yScroll < windowHeight){

				pageHeight = windowHeight;

			} else { 

				pageHeight = yScroll;

			}

			// for small pages with total width less then width of the viewport

			if(xScroll < windowWidth){	

				pageWidth = xScroll;		

			} else {

				pageWidth = windowWidth;

			}

			arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);

			return arrayPageSize;

		};

		/**

		 / THIRD FUNCTION

		 * getPageScroll() by quirksmode.com

		 *

		 * @return Array Return an array with x,y page scroll values.

		 */

		function ___getPageScroll() {

			var xScroll, yScroll;

			if (self.pageYOffset) {

				yScroll = self.pageYOffset;

				xScroll = self.pageXOffset;

			} else if (document.documentElement && document.documentElement.scrollTop) {	 // Explorer 6 Strict

				yScroll = document.documentElement.scrollTop;

				xScroll = document.documentElement.scrollLeft;

			} else if (document.body) {// all other Explorers

				yScroll = document.body.scrollTop;

				xScroll = document.body.scrollLeft;	

			}

			arrayPageScroll = new Array(xScroll,yScroll);

			return arrayPageScroll;

		};

		 /**

		  * Stop the code execution from a escified time in milisecond

		  *

		  */

		 function ___pause(ms) {

			var date = new Date(); 

			curDate = null;

			do { var curDate = new Date(); }

			while ( curDate - date < ms);

		 };

		// Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once

		return this.unbind('click').click(_initialize);

	};

})(jQuery); // Call and execute the function immediately passing the jQuery object


/*

 * jQuery Form Plugin

 * version: 2.36 (07-NOV-2009)

 * @requires jQuery v1.2.6 or later

 *

 * Examples and documentation at: http://malsup.com/jquery/form/

 * Dual licensed under the MIT and GPL licenses:

 *   http://www.opensource.org/licenses/mit-license.php

 *   http://www.gnu.org/licenses/gpl.html

 */

;(function($) {



/*

	Usage Note:

	-----------

	Do not use both ajaxSubmit and ajaxForm on the same form.  These

	functions are intended to be exclusive.  Use ajaxSubmit if you want

	to bind your own submit handler to the form.  For example,



	$(document).ready(function() {

		$('#myForm').bind('submit', function() {

			$(this).ajaxSubmit({

				target: '#output'

			});

			return false; // <-- important!

		});

	});



	Use ajaxForm when you want the plugin to manage all the event binding

	for you.  For example,



	$(document).ready(function() {

		$('#myForm').ajaxForm({

			target: '#output'

		});

	});



	When using ajaxForm, the ajaxSubmit function will be invoked for you

	at the appropriate time.

*/



/**

 * ajaxSubmit() provides a mechanism for immediately submitting

 * an HTML form using AJAX.

 */

$.fn.ajaxSubmit = function(options) {

	// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)

	if (!this.length) {

		log('ajaxSubmit: skipping submit process - no element selected');

		return this;

	}



	if (typeof options == 'function')

		options = { success: options };



	var url = $.trim(this.attr('action'));

	if (url) {

		// clean url (don't include hash vaue)

		url = (url.match(/^([^#]+)/)||[])[1];

   	}

   	url = url || window.location.href || '';



	options = $.extend({

		url:  url,

		type: this.attr('method') || 'GET',

		iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'

	}, options || {});



	// hook for manipulating the form data before it is extracted;

	// convenient for use with rich editors like tinyMCE or FCKEditor

	var veto = {};

	this.trigger('form-pre-serialize', [this, options, veto]);

	if (veto.veto) {

		log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');

		return this;

	}



	// provide opportunity to alter form data before it is serialized

	if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {

		log('ajaxSubmit: submit aborted via beforeSerialize callback');

		return this;

	}



	var a = this.formToArray(options.semantic);

	if (options.data) {

		options.extraData = options.data;

		for (var n in options.data) {

		  if(options.data[n] instanceof Array) {

			for (var k in options.data[n])

			  a.push( { name: n, value: options.data[n][k] } );

		  }

		  else

			 a.push( { name: n, value: options.data[n] } );

		}

	}



	// give pre-submit callback an opportunity to abort the submit

	if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {

		log('ajaxSubmit: submit aborted via beforeSubmit callback');

		return this;

	}



	// fire vetoable 'validate' event

	this.trigger('form-submit-validate', [a, this, options, veto]);

	if (veto.veto) {

		log('ajaxSubmit: submit vetoed via form-submit-validate trigger');

		return this;

	}



	var q = $.param(a);



	if (options.type.toUpperCase() == 'GET') {

		options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;

		options.data = null;  // data is null for 'get'

	}

	else

		options.data = q; // data is the query string for 'post'



	var $form = this, callbacks = [];

	if (options.resetForm) callbacks.push(function() { $form.resetForm(); });

	if (options.clearForm) callbacks.push(function() { $form.clearForm(); });



	// perform a load on the target only if dataType is not provided

	if (!options.dataType && options.target) {

		var oldSuccess = options.success || function(){};

		callbacks.push(function(data) {

			$(options.target).html(data).each(oldSuccess, arguments);

		});

	}

	else if (options.success)

		callbacks.push(options.success);



	options.success = function(data, status) {

		for (var i=0, max=callbacks.length; i < max; i++)

			callbacks[i].apply(options, [data, status, $form]);

	};



	// are there files to upload?

	var files = $('input:file', this).fieldValue();

	var found = false;

	for (var j=0; j < files.length; j++)

		if (files[j])

			found = true;



	var multipart = false;

//	var mp = 'multipart/form-data';

//	multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);



	// options.iframe allows user to force iframe mode

	// 06-NOV-09: now defaulting to iframe mode if file input is detected

   if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {

	   // hack to fix Safari hang (thanks to Tim Molendijk for this)

	   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d

	   if (options.closeKeepAlive)

		   $.get(options.closeKeepAlive, fileUpload);

	   else

		   fileUpload();

	   }

   else

	   $.ajax(options);



	// fire 'notify' event

	this.trigger('form-submit-notify', [this, options]);

	return this;





	// private function for handling file uploads (hat tip to YAHOO!)

	function fileUpload() {

		var form = $form[0];



		if ($(':input[name=submit]', form).length) {

			alert('Error: Form elements must not be named "submit".');

			return;

		}



		var opts = $.extend({}, $.ajaxSettings, options);

		var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);



		var id = 'jqFormIO' + (new Date().getTime());

		var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');

		var io = $io[0];



		$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });



		var xhr = { // mock object

			aborted: 0,

			responseText: null,

			responseXML: null,

			status: 0,

			statusText: 'n/a',

			getAllResponseHeaders: function() {},

			getResponseHeader: function() {},

			setRequestHeader: function() {},

			abort: function() {

				this.aborted = 1;

				$io.attr('src', opts.iframeSrc); // abort op in progress

			}

		};



		var g = opts.global;

		// trigger ajax global events so that activity/block indicators work like normal

		if (g && ! $.active++) $.event.trigger("ajaxStart");

		if (g) $.event.trigger("ajaxSend", [xhr, opts]);



		if (s.beforeSend && s.beforeSend(xhr, s) === false) {

			s.global && $.active--;

			return;

		}

		if (xhr.aborted)

			return;



		var cbInvoked = 0;

		var timedOut = 0;



		// add submitting element to data if we know it

		var sub = form.clk;

		if (sub) {

			var n = sub.name;

			if (n && !sub.disabled) {

				options.extraData = options.extraData || {};

				options.extraData[n] = sub.value;

				if (sub.type == "image") {

					options.extraData[name+'.x'] = form.clk_x;

					options.extraData[name+'.y'] = form.clk_y;

				}

			}

		}



		// take a breath so that pending repaints get some cpu time before the upload starts

		setTimeout(function() {

			// make sure form attrs are set

			var t = $form.attr('target'), a = $form.attr('action');



			// update form attrs in IE friendly way

			form.setAttribute('target',id);

			if (form.getAttribute('method') != 'POST')

				form.setAttribute('method', 'POST');

			if (form.getAttribute('action') != opts.url)

				form.setAttribute('action', opts.url);



			// ie borks in some cases when setting encoding

			if (! options.skipEncodingOverride) {

				$form.attr({

					encoding: 'multipart/form-data',

					enctype:  'multipart/form-data'

				});

			}



			// support timout

			if (opts.timeout)

				setTimeout(function() { timedOut = true; cb(); }, opts.timeout);



			// add "extra" data to form if provided in options

			var extraInputs = [];

			try {

				if (options.extraData)

					for (var n in options.extraData)

						extraInputs.push(

							$('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')

								.appendTo(form)[0]);



				// add iframe to doc and submit the form

				$io.appendTo('body');

				io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);

				form.submit();

			}

			finally {

				// reset attrs and remove "extra" input elements

				form.setAttribute('action',a);

				t ? form.setAttribute('target', t) : $form.removeAttr('target');

				$(extraInputs).remove();

			}

		}, 10);



		var domCheckCount = 50;



		function cb() {

			if (cbInvoked++) return;



			io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);



			var ok = true;

			try {

				if (timedOut) throw 'timeout';

				// extract the server response from the iframe

				var data, doc;



				doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;

				

				var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);

				log('isXml='+isXml);

				if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {

				 	if (--domCheckCount) {

						// in some browsers (Opera) the iframe DOM is not always traversable when

						// the onload callback fires, so we loop a bit to accommodate

						cbInvoked = 0;

						setTimeout(cb, 100);

						return;

					}

					log('Could not access iframe DOM after 50 tries.');

					return;

				}



				xhr.responseText = doc.body ? doc.body.innerHTML : null;

				xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;

				xhr.getResponseHeader = function(header){

					var headers = {'content-type': opts.dataType};

					return headers[header];

				};



				if (opts.dataType == 'json' || opts.dataType == 'script') {

					// see if user embedded response in textarea

					var ta = doc.getElementsByTagName('textarea')[0];

					if (ta)

						xhr.responseText = ta.value;

					else {

						// account for browsers injecting pre around json response

						var pre = doc.getElementsByTagName('pre')[0];

						if (pre)

							xhr.responseText = pre.innerHTML;

					}			  

				}

				else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {

					xhr.responseXML = toXml(xhr.responseText);

				}

				data = $.httpData(xhr, opts.dataType);

			}

			catch(e){

				ok = false;

				$.handleError(opts, xhr, 'error', e);

			}



			// ordering of these callbacks/triggers is odd, but that's how $.ajax does it

			if (ok) {

				opts.success(data, 'success');

				if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);

			}

			if (g) $.event.trigger("ajaxComplete", [xhr, opts]);

			if (g && ! --$.active) $.event.trigger("ajaxStop");

			if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');



			// clean up

			setTimeout(function() {

				$io.remove();

				xhr.responseXML = null;

			}, 100);

		};



		function toXml(s, doc) {

			if (window.ActiveXObject) {

				doc = new ActiveXObject('Microsoft.XMLDOM');

				doc.async = 'false';

				doc.loadXML(s);

			}

			else

				doc = (new DOMParser()).parseFromString(s, 'text/xml');

			return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;

		};

	};

};



/**

 * ajaxForm() provides a mechanism for fully automating form submission.

 *

 * The advantages of using this method instead of ajaxSubmit() are:

 *

 * 1: This method will include coordinates for <input type="image" /> elements (if the element

 *	is used to submit the form).

 * 2. This method will include the submit element's name/value data (for the element that was

 *	used to submit the form).

 * 3. This method binds the submit() method to the form for you.

 *

 * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely

 * passes the options argument along after properly binding events for submit elements and

 * the form itself.

 */

$.fn.ajaxForm = function(options) {

	return this.ajaxFormUnbind().bind('submit.form-plugin', function() {

		$(this).ajaxSubmit(options);

		return false;

	}).bind('click.form-plugin', function(e) {

		var target = e.target;

		var $el = $(target);

		if (!($el.is(":submit,input:image"))) {

			// is this a child element of the submit el?  (ex: a span within a button)

			var t = $el.closest(':submit');

			if (t.length == 0)

				return;

			target = t[0];

		}

		var form = this;

		form.clk = target;

		if (target.type == 'image') {

			if (e.offsetX != undefined) {

				form.clk_x = e.offsetX;

				form.clk_y = e.offsetY;

			} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin

				var offset = $el.offset();

				form.clk_x = e.pageX - offset.left;

				form.clk_y = e.pageY - offset.top;

			} else {

				form.clk_x = e.pageX - target.offsetLeft;

				form.clk_y = e.pageY - target.offsetTop;

			}

		}

		// clear form vars

		setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);

	});

};



// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm

$.fn.ajaxFormUnbind = function() {

	return this.unbind('submit.form-plugin click.form-plugin');

};



/**

 * formToArray() gathers form element data into an array of objects that can

 * be passed to any of the following ajax functions: $.get, $.post, or load.

 * Each object in the array has both a 'name' and 'value' property.  An example of

 * an array for a simple login form might be:

 *

 * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]

 *

 * It is this array that is passed to pre-submit callback functions provided to the

 * ajaxSubmit() and ajaxForm() methods.

 */

$.fn.formToArray = function(semantic) {

	var a = [];

	if (this.length == 0) return a;



	var form = this[0];

	var els = semantic ? form.getElementsByTagName('*') : form.elements;

	if (!els) return a;

	for(var i=0, max=els.length; i < max; i++) {

		var el = els[i];

		var n = el.name;

		if (!n) continue;



		if (semantic && form.clk && el.type == "image") {

			// handle image inputs on the fly when semantic == true

			if(!el.disabled && form.clk == el) {

				a.push({name: n, value: $(el).val()});

				a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});

			}

			continue;

		}



		var v = $.fieldValue(el, true);

		if (v && v.constructor == Array) {

			for(var j=0, jmax=v.length; j < jmax; j++)

				a.push({name: n, value: v[j]});

		}

		else if (v !== null && typeof v != 'undefined')

			a.push({name: n, value: v});

	}



	if (!semantic && form.clk) {

		// input type=='image' are not found in elements array! handle it here

		var $input = $(form.clk), input = $input[0], n = input.name;

		if (n && !input.disabled && input.type == 'image') {

			a.push({name: n, value: $input.val()});

			a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});

		}

	}

	return a;

};



/**

 * Serializes form data into a 'submittable' string. This method will return a string

 * in the format: name1=value1&amp;name2=value2

 */

$.fn.formSerialize = function(semantic) {

	//hand off to jQuery.param for proper encoding

	return $.param(this.formToArray(semantic));

};



/**

 * Serializes all field elements in the jQuery object into a query string.

 * This method will return a string in the format: name1=value1&amp;name2=value2

 */

$.fn.fieldSerialize = function(successful) {

	var a = [];

	this.each(function() {

		var n = this.name;

		if (!n) return;

		var v = $.fieldValue(this, successful);

		if (v && v.constructor == Array) {

			for (var i=0,max=v.length; i < max; i++)

				a.push({name: n, value: v[i]});

		}

		else if (v !== null && typeof v != 'undefined')

			a.push({name: this.name, value: v});

	});

	//hand off to jQuery.param for proper encoding

	return $.param(a);

};



/**

 * Returns the value(s) of the element in the matched set.  For example, consider the following form:

 *

 *  <form><fieldset>

 *	  <input name="A" type="text" />

 *	  <input name="A" type="text" />

 *	  <input name="B" type="checkbox" value="B1" />

 *	  <input name="B" type="checkbox" value="B2"/>

 *	  <input name="C" type="radio" value="C1" />

 *	  <input name="C" type="radio" value="C2" />

 *  </fieldset></form>

 *

 *  var v = $(':text').fieldValue();

 *  // if no values are entered into the text inputs

 *  v == ['','']

 *  // if values entered into the text inputs are 'foo' and 'bar'

 *  v == ['foo','bar']

 *

 *  var v = $(':checkbox').fieldValue();

 *  // if neither checkbox is checked

 *  v === undefined

 *  // if both checkboxes are checked

 *  v == ['B1', 'B2']

 *

 *  var v = $(':radio').fieldValue();

 *  // if neither radio is checked

 *  v === undefined

 *  // if first radio is checked

 *  v == ['C1']

 *

 * The successful argument controls whether or not the field element must be 'successful'

 * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).

 * The default value of the successful argument is true.  If this value is false the value(s)

 * for each element is returned.

 *

 * Note: This method *always* returns an array.  If no valid value can be determined the

 *	   array will be empty, otherwise it will contain one or more values.

 */

$.fn.fieldValue = function(successful) {

	for (var val=[], i=0, max=this.length; i < max; i++) {

		var el = this[i];

		var v = $.fieldValue(el, successful);

		if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))

			continue;

		v.constructor == Array ? $.merge(val, v) : val.push(v);

	}

	return val;

};



/**

 * Returns the value of the field element.

 */

$.fieldValue = function(el, successful) {

	var n = el.name, t = el.type, tag = el.tagName.toLowerCase();

	if (typeof successful == 'undefined') successful = true;



	if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||

		(t == 'checkbox' || t == 'radio') && !el.checked ||

		(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||

		tag == 'select' && el.selectedIndex == -1))

			return null;



	if (tag == 'select') {

		var index = el.selectedIndex;

		if (index < 0) return null;

		var a = [], ops = el.options;

		var one = (t == 'select-one');

		var max = (one ? index+1 : ops.length);

		for(var i=(one ? index : 0); i < max; i++) {

			var op = ops[i];

			if (op.selected) {

				var v = op.value;

				if (!v) // extra pain for IE...

					v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;

				if (one) return v;

				a.push(v);

			}

		}

		return a;

	}

	return el.value;

};



/**

 * Clears the form data.  Takes the following actions on the form's input fields:

 *  - input text fields will have their 'value' property set to the empty string

 *  - select elements will have their 'selectedIndex' property set to -1

 *  - checkbox and radio inputs will have their 'checked' property set to false

 *  - inputs of type submit, button, reset, and hidden will *not* be effected

 *  - button elements will *not* be effected

 */

$.fn.clearForm = function() {

	return this.each(function() {

		$('input,select,textarea', this).clearFields();

	});

};



/**

 * Clears the selected form elements.

 */

$.fn.clearFields = $.fn.clearInputs = function() {

	return this.each(function() {

		var t = this.type, tag = this.tagName.toLowerCase();

		if (t == 'text' || t == 'password' || tag == 'textarea')

			this.value = '';

		else if (t == 'checkbox' || t == 'radio')

			this.checked = false;

		else if (tag == 'select')

			this.selectedIndex = -1;

	});

};



/**

 * Resets the form data.  Causes all form elements to be reset to their original value.

 */

$.fn.resetForm = function() {

	return this.each(function() {

		// guard against an input with the name of 'reset'

		// note that IE reports the reset function as an 'object'

		if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))

			this.reset();

	});

};



/**

 * Enables or disables any matching elements.

 */

$.fn.enable = function(b) {

	if (b == undefined) b = true;

	return this.each(function() {

		this.disabled = !b;

	});

};



/**

 * Checks/unchecks any matching checkboxes or radio buttons and

 * selects/deselects and matching option elements.

 */

$.fn.selected = function(select) {

	if (select == undefined) select = true;

	return this.each(function() {

		var t = this.type;

		if (t == 'checkbox' || t == 'radio')

			this.checked = select;

		else if (this.tagName.toLowerCase() == 'option') {

			var $sel = $(this).parent('select');

			if (select && $sel[0] && $sel[0].type == 'select-one') {

				// deselect all other options

				$sel.find('option').selected(false);

			}

			this.selected = select;

		}

	});

};



// helper fn for console logging

// set $.fn.ajaxSubmit.debug to true to enable debug logging

function log() {

	if ($.fn.ajaxSubmit.debug && window.console && window.console.log)

		window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));

};



})(jQuery);



/*

 * Metadata - jQuery plugin for parsing metadata from elements

 *

 * Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan

 *

 * Dual licensed under the MIT and GPL licenses:

 *   http://www.opensource.org/licenses/mit-license.php

 *   http://www.gnu.org/licenses/gpl.html

 *

 * Revision: $Id$

 *

 */



/**

 * Sets the type of metadata to use. Metadata is encoded in JSON, and each property

 * in the JSON will become a property of the element itself.

 *

 * There are three supported types of metadata storage:

 *

 *   attr:  Inside an attribute. The name parameter indicates *which* attribute.

 *          

 *   class: Inside the class attribute, wrapped in curly braces: { }

 *   

 *   elem:  Inside a child element (e.g. a script tag). The

 *          name parameter indicates *which* element.

 *          

 * The metadata for an element is loaded the first time the element is accessed via jQuery.

 *

 * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements

 * matched by expr, then redefine the metadata type and run another $(expr) for other elements.

 * 

 * @name $.metadata.setType

 *

 * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>

 * @before $.metadata.setType("class")

 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"

 * @desc Reads metadata from the class attribute

 * 

 * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>

 * @before $.metadata.setType("attr", "data")

 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"

 * @desc Reads metadata from a "data" attribute

 * 

 * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>

 * @before $.metadata.setType("elem", "script")

 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"

 * @desc Reads metadata from a nested script element

 * 

 * @param String type The encoding type

 * @param String name The name of the attribute to be used to get metadata (optional)

 * @cat Plugins/Metadata

 * @descr Sets the type of encoding to be used when loading metadata for the first time

 * @type undefined

 * @see metadata()

 */



(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);

			// check for empty string in single property

			if ( !settings.single.length ) settings.single = 'metadata';

			

			var data = $.data(elem, settings.single);

			// returned cached data if it already exists

			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;

		}

	}

});



/**

 * Returns the metadata object for the first member of the jQuery object.

 *

 * @name metadata

 * @descr Returns element's metadata object

 * @param Object opts An object contianing settings to override the defaults

 * @type jQuery

 * @cat Plugins/Metadata

 */

$.fn.metadata = function( opts ){

	return $.metadata.get( this[0], opts );

};



})(jQuery);


/*

 ### jQuery Star Rating Plugin v3.12 - 2009-04-16 ###

 * Home: http://www.fyneworks.com/jquery/star-rating/

 * Code: http://code.google.com/p/jquery-star-rating-plugin/

 *

	* Dual licensed under the MIT and GPL licenses:

 *   http://www.opensource.org/licenses/mit-license.php

 *   http://www.gnu.org/licenses/gpl.html

 ###

*/



/*# AVOID COLLISIONS #*/

;if(window.jQuery) (function($){

/*# AVOID COLLISIONS #*/

	

	// IE6 Background Image Fix

	if ($.browser.msie) try { document.execCommand("BackgroundImageCache", false, true)} catch(e) { };

	// Thanks to http://www.visualjquery.com/rating/rating_redux.html

	

	// plugin initialization

	$.fn.rating = function(options){

		if(this.length==0) return this; // quick fail

		

		// Handle API methods

		if(typeof arguments[0]=='string'){

			// Perform API methods on individual elements

			if(this.length>1){

				var args = arguments;

				return this.each(function(){

					$.fn.rating.apply($(this), args);

    });

			};

			// Invoke API method handler

			$.fn.rating[arguments[0]].apply(this, $.makeArray(arguments).slice(1) || []);

			// Quick exit...

			return this;

		};

		

		// Initialize options for this call

		var options = $.extend(

			{}/* new object */,

			$.fn.rating.options/* default options */,

			options || {} /* just-in-time options */

		);

		

		// Allow multiple controls with the same name by making each call unique

		$.fn.rating.calls++;

		

		// loop through each matched element

		this

		 .not('.star-rating-applied')

			.addClass('star-rating-applied')

		.each(function(){

			

			// Load control parameters / find context / etc

			var control, input = $(this);

			var eid = (this.name || 'unnamed-rating').replace(/\[|\]/g, '_').replace(/^\_+|\_+$/g,'');

			var context = $(this.form || document.body);

			

			// FIX: http://code.google.com/p/jquery-star-rating-plugin/issues/detail?id=23

			var raters = context.data('rating');

			if(!raters || raters.call!=$.fn.rating.calls) raters = { count:0, call:$.fn.rating.calls };

			var rater = raters[eid];

			

			// if rater is available, verify that the control still exists

			if(rater) control = rater.data('rating');

			

			if(rater && control)//{// save a byte!

				// add star to control if rater is available and the same control still exists

				control.count++;

				

			//}// save a byte!

			else{

				// create new control if first star or control element was removed/replaced

				

				// Initialize options for this raters

				control = $.extend(

					{}/* new object */,

					options || {} /* current call options */,

					($.metadata? input.metadata(): ($.meta?input.data():null)) || {}, /* metadata options */

					{ count:0, stars: [], inputs: [] }

				);

				

				// increment number of rating controls

				control.serial = raters.count++;

				

				// create rating element

				rater = $('<span class="star-rating-control"/>');

				input.before(rater);

				

				// Mark element for initialization (once all stars are ready)

				rater.addClass('rating-to-be-drawn');

				

				// Accept readOnly setting from 'disabled' property

				if(input.attr('disabled')) control.readOnly = true;

				

				// Create 'cancel' button

				rater.append(

					control.cancel = $('<div class="rating-cancel"><a title="' + control.cancel + '">' + control.cancelValue + '</a></div>')

					.mouseover(function(){

						$(this).rating('drain');

						$(this).addClass('star-rating-hover');

						//$(this).rating('focus');

					})

					.mouseout(function(){

						$(this).rating('draw');

						$(this).removeClass('star-rating-hover');

						//$(this).rating('blur');

					})

					.click(function(){

					 $(this).rating('select');

					})

					.data('rating', control)

				);

				

			}; // first element of group

			

			// insert rating star

			var star = $('<div class="star-rating rater-'+ control.serial +'"><a title="' + (this.title || this.value) + '">' + this.value + '</a></div>');

			rater.append(star);

			

			// inherit attributes from input element

			if(this.id) star.attr('id', this.id);

			if(this.className) star.addClass(this.className);

			

			// Half-stars?

			if(control.half) control.split = 2;

			

			// Prepare division control

			if(typeof control.split=='number' && control.split>0){

				var stw = ($.fn.width ? star.width() : 0) || control.starWidth;

				var spi = (control.count % control.split), spw = Math.floor(stw/control.split);

				star

				// restrict star's width and hide overflow (already in CSS)

				.width(spw)

				// move the star left by using a negative margin

				// this is work-around to IE's stupid box model (position:relative doesn't work)

				.find('a').css({ 'margin-left':'-'+ (spi*spw) +'px' })

			};

			

			// readOnly?

			if(control.readOnly)//{ //save a byte!

				// Mark star as readOnly so user can customize display

				star.addClass('star-rating-readonly');

			//}  //save a byte!

			else//{ //save a byte!

			 // Enable hover css effects

				star.addClass('star-rating-live')

				 // Attach mouse events

					.mouseover(function(){

						$(this).rating('fill');

						$(this).rating('focus');

					})

					.mouseout(function(){

						$(this).rating('draw');

						$(this).rating('blur');

					})

					.click(function(){

						$(this).rating('select');

					})

				;

			//}; //save a byte!

			

			// set current selection

			if(this.checked)	control.current = star;

			

			// hide input element

			input.hide();

			

			// backward compatibility, form element to plugin

			input.change(function(){

    $(this).rating('select');

   });

			

			// attach reference to star to input element and vice-versa

			star.data('rating.input', input.data('rating.star', star));

			

			// store control information in form (or body when form not available)

			control.stars[control.stars.length] = star[0];

			control.inputs[control.inputs.length] = input[0];

			control.rater = raters[eid] = rater;

			control.context = context;

			

			input.data('rating', control);

			rater.data('rating', control);

			star.data('rating', control);

			context.data('rating', raters);

  }); // each element

		

		// Initialize ratings (first draw)

		$('.rating-to-be-drawn').rating('draw').removeClass('rating-to-be-drawn');

		

		return this; // don't break the chain...

	};

	

	/*--------------------------------------------------------*/

	

	/*

		### Core functionality and API ###

	*/

	$.extend($.fn.rating, {

		// Used to append a unique serial number to internal control ID

		// each time the plugin is invoked so same name controls can co-exist

		calls: 0,

		

		focus: function(){

			var control = this.data('rating'); if(!control) return this;

			if(!control.focus) return this; // quick fail if not required

			// find data for event

			var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );

   // focus handler, as requested by focusdigital.co.uk

			if(control.focus) control.focus.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);

		}, // $.fn.rating.focus

		

		blur: function(){

			var control = this.data('rating'); if(!control) return this;

			if(!control.blur) return this; // quick fail if not required

			// find data for event

			var input = $(this).data('rating.input') || $( this.tagName=='INPUT' ? this : null );

   // blur handler, as requested by focusdigital.co.uk

			if(control.blur) control.blur.apply(input[0], [input.val(), $('a', input.data('rating.star'))[0]]);

		}, // $.fn.rating.blur

		

		fill: function(){ // fill to the current mouse position.

			var control = this.data('rating'); if(!control) return this;

			// do not execute when control is in read-only mode

			if(control.readOnly) return;

			// Reset all stars and highlight them up to this element

			this.rating('drain');

			this.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-hover');

		},// $.fn.rating.fill

		

		drain: function() { // drain all the stars.

			var control = this.data('rating'); if(!control) return this;

			// do not execute when control is in read-only mode

			if(control.readOnly) return;

			// Reset all stars

			control.rater.children().filter('.rater-'+ control.serial).removeClass('star-rating-on').removeClass('star-rating-hover');

		},// $.fn.rating.drain

		

		draw: function(){ // set value and stars to reflect current selection

			var control = this.data('rating'); if(!control) return this;

			// Clear all stars

			this.rating('drain');

			// Set control value

			if(control.current){

				control.current.data('rating.input').attr('checked','checked');

				control.current.prevAll().andSelf().filter('.rater-'+ control.serial).addClass('star-rating-on');

			}

			else

			 $(control.inputs).removeAttr('checked');

			// Show/hide 'cancel' button

			control.cancel[control.readOnly || control.required?'hide':'show']();

			// Add/remove read-only classes to remove hand pointer

			this.siblings()[control.readOnly?'addClass':'removeClass']('star-rating-readonly');

		},// $.fn.rating.draw

		

		select: function(value){ // select a value

			var control = this.data('rating'); if(!control) return this;

			// do not execute when control is in read-only mode

			if(control.readOnly) return;

			// clear selection

			control.current = null;

			// programmatically (based on user input)

			if(typeof value!='undefined'){

			 // select by index (0 based)

				if(typeof value=='number')

 			 return $(control.stars[value]).rating('select');

				// select by literal value (must be passed as a string

				if(typeof value=='string')

					//return 

					$.each(control.stars, function(){

						if($(this).data('rating.input').val()==value) $(this).rating('select');

					});

			}

			else

				control.current = this[0].tagName=='INPUT' ? 

				 this.data('rating.star') : 

					(this.is('.rater-'+ control.serial) ? this : null);

			

			// Update rating control state

			this.data('rating', control);

			// Update display

			this.rating('draw');

			// find data for event

			var input = $( control.current ? control.current.data('rating.input') : null );

			// click callback, as requested here: http://plugins.jquery.com/node/1655

			if(control.callback) control.callback.apply(input[0], [input.val(), $('a', control.current)[0]]);// callback event

		},// $.fn.rating.select

		

		readOnly: function(toggle, disable){ // make the control read-only (still submits value)

			var control = this.data('rating'); if(!control) return this;

			// setread-only status

			control.readOnly = toggle || toggle==undefined ? true : false;

			// enable/disable control value submission

			if(disable) $(control.inputs).attr("disabled", "disabled");

			else     			$(control.inputs).removeAttr("disabled");

			// Update rating control state

			this.data('rating', control);

			// Update display

			this.rating('draw');

		},// $.fn.rating.readOnly

		

		disable: function(){ // make read-only and never submit value

			this.rating('readOnly', true, true);

		},// $.fn.rating.disable

		

		enable: function(){ // make read/write and submit value

			this.rating('readOnly', false, false);

		}// $.fn.rating.select

		

 });

	

	/*--------------------------------------------------------*/

	

	/*

		### Default Settings ###

		eg.: You can override default control like this:

		$.fn.rating.options.cancel = 'Clear';

	*/

	$.fn.rating.options = { //$.extend($.fn.rating, { options: {

			cancel: 'Cancel Rating',   // advisory title for the 'cancel' link

			cancelValue: '',           // value to submit when user click the 'cancel' link

			split: 0,                  // split the star into how many parts?

			

			// Width of star image in case the plugin can't work it out. This can happen if

			// the jQuery.dimensions plugin is not available OR the image is hidden at installation

			starWidth: 16//,

			

			//NB.: These don't need to be pre-defined (can be undefined/null) so let's save some code!

			//half:     false,         // just a shortcut to control.split = 2

			//required: false,         // disables the 'cancel' button so user can only select one of the specified values

			//readOnly: false,         // disable rating plugin interaction/ values cannot be changed

			//focus:    function(){},  // executed when stars are focused

			//blur:     function(){},  // executed when stars are focused

			//callback: function(){},  // executed when a star is clicked

 }; //} });

	

	/*--------------------------------------------------------*/

	

	/*

		### Default implementation ###

		The plugin will attach itself to file inputs

		with the class 'multi' when the page loads

	*/

	$(function(){

	 $('input[type=radio].star').rating();

	});

	

	

	

/*# AVOID COLLISIONS #*/

})(jQuery);

/*# AVOID COLLISIONS #*/



// chili-1.7.packed.ks

eval(function(p,a,c,k,e,d){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--)d[e(c)]=k[c]||e(c);k=[function(e){return d[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;}('8={3b:"1.6",2o:"1B.1Y,1B.23,1B.2e",2i:"",2H:1a,12:"",2C:1a,Z:"",2a:\'<H V="$0">$$</H>\',R:"&#F;",1j:"&#F;&#F;&#F;&#F;",1f:"&#F;<1W/>",3c:5(){9 $(y).39("1k")[0]},I:{},N:{}};(5($){$(5(){5 1J(l,a){5 2I(A,h){4 3=(1v h.3=="1h")?h.3:h.3.1w;k.1m({A:A,3:"("+3+")",u:1+(3.c(/\\\\./g,"%").c(/\\[.*?\\]/g,"%").3a(/\\((?!\\?)/g)||[]).u,z:(h.z)?h.z:8.2a})}5 2z(){4 1E=0;4 1x=x 2A;Q(4 i=0;i<k.u;i++){4 3=k[i].3;3=3.c(/\\\\\\\\|\\\\(\\d+)/g,5(m,1F){9!1F?m:"\\\\"+(1E+1+1t(1F))});1x.1m(3);1E+=k[i].u}4 1w=1x.3d("|");9 x 1u(1w,(a.3g)?"2j":"g")}5 1S(o){9 o.c(/&/g,"&3h;").c(/</g,"&3e;")}5 1R(o){9 o.c(/ +/g,5(1X){9 1X.c(/ /g,R)})}5 G(o){o=1S(o);7(R){o=1R(o)}9 o}5 2m(2E){4 i=0;4 j=1;4 h;19(h=k[i++]){4 1b=D;7(1b[j]){4 1U=/(\\\\\\$)|(?:\\$\\$)|(?:\\$(\\d+))/g;4 z=h.z.c(1U,5(m,1V,K){4 3f=\'\';7(1V){9"$"}v 7(!K){9 G(1b[j])}v 7(K=="0"){9 h.A}v{9 G(1b[j+1t(K,10)])}});4 1A=D[D.u-2];4 2h=D[D.u-1];4 2G=2h.2v(11,1A);11=1A+2E.u;14+=G(2G)+z;9 z}v{j+=h.u}}}4 R=8.R;4 k=x 2A;Q(4 A 2r a.k){2I(A,a.k[A])}4 14="";4 11=0;l.c(2z(),2m);4 2y=l.2v(11,l.u);14+=G(2y);9 14}5 2B(X){7(!8.N[X]){4 Y=\'<Y 32="1p" 33="p/2u"\'+\' 30="\'+X+\'">\';8.N[X]=1H;7($.31.34){4 W=J.1L(Y);4 $W=$(W);$("2d").1O($W)}v{$("2d").1O(Y)}}}5 1q(e,a){4 l=e&&e.1g&&e.1g[0]&&e.1g[0].37;7(!l)l="";l=l.c(/\\r\\n?/g,"\\n");4 C=1J(l,a);7(8.1j){C=C.c(/\\t/g,8.1j)}7(8.1f){C=C.c(/\\n/g,8.1f)}$(e).38(c)}5 1o(q,13){4 1l={12:8.12,2x:q+".1d",Z:8.Z,2w:q+".2u"};4 B;7(13&&1v 13=="2l")B=$.35(1l,13);v B=1l;9{a:B.12+B.2x,1p:B.Z+B.2w}}7($.2q)$.2q({36:"2l.15"});4 2n=x 1u("\\\\b"+8.2i+"\\\\b","2j");4 1e=[];$(8.2o).2D(5(){4 e=y;4 1n=$(e).3i("V");7(!1n){9}4 q=$.3u(1n.c(2n,""));7(\'\'!=q){1e.1m(e);4 f=1o(q,e.15);7(8.2H||e.15){7(!8.N[f.a]){1D{8.N[f.a]=1H;$.3v(f.a,5(M){M.f=f.a;8.I[f.a]=M;7(8.2C){2B(f.1p)}$("."+q).2D(5(){4 f=1o(q,y.15);7(M.f==f.a){1q(y,M)}})})}1I(3s){3t("a 3w Q: "+q+\'@\'+3z)}}}v{4 a=8.I[f.a];7(a){1q(e,a)}}}});7(J.1i&&J.1i.29){5 22(p){7(\'\'==p){9""}1z{4 16=(x 3A()).2k()}19(p.3x(16)>-1);p=p.c(/\\<1W[^>]*?\\>/3y,16);4 e=J.1L(\'<1k>\');e.3l=p;p=e.3m.c(x 1u(16,"g"),\'\\r\\n\');9 p}4 T="";4 18=1G;$(1e).3j().G("1k").U("2c",5(){18=y}).U("1M",5(){7(18==y)T=J.1i.29().3k});$("3n").U("3q",5(){7(\'\'!=T){2p.3r.3o(\'3p\',22(T));2V.2R=1a}}).U("2c",5(){T=""}).U("1M",5(){18=1G})}})})(1Z);8.I["1Y.1d"]={k:{2M:{3:/\\/\\*[^*]*\\*+(?:[^\\/][^*]*\\*+)*\\//},25:{3:/\\<!--(?:.|\\n)*?--\\>/},2f:{3:/\\/\\/.*/},2P:{3:/2L|2T|2J|2O|2N|2X|2K|2Z|2U|2S|2W|2Y|2Q|51|c-50/},53:{3:/\\/[^\\/\\\\\\n]*(?:\\\\.[^\\/\\\\\\n]*)*\\/[52]*/},1h:{3:/(?:\\\'[^\\\'\\\\\\n]*(?:\\\\.[^\\\'\\\\\\n]*)*\\\')|(?:\\"[^\\"\\\\\\n]*(?:\\\\.[^\\"\\\\\\n]*)*\\")/},27:{3:/\\b[+-]?(?:\\d*\\.?\\d+|\\d+\\.?\\d*)(?:[1r][+-]?\\d+)?\\b/},4X:{3:/\\b(D|1N|1K|1I|2t|2s|4W|1z|v|1a|Q|5|7|2r|4Z|x|1G|9|1Q|y|1H|1D|1v|4|4Y|19|59)\\b/},1y:{3:/\\b(58|2k|2p|5b|5a|55|J|54|57|1t|56|4L|4K|4N|4M|4H|4G|4J)\\b/},1C:{3:/(?:\\<\\w+)|(?:\\>)|(?:\\<\\/\\w+\\>)|(?:\\/\\>)/},26:{3:/\\s+\\w+(?=\\s*=)/},20:{3:/([\\"\\\'])(?:(?:[^\\1\\\\\\r\\n]*?(?:\\1\\1|\\\\.))*[^\\1\\\\\\r\\n]*?)\\1/},21:{3:/&[\\w#]+?;/},4I:{3:/(\\$|1Z)/}}};8.I["23.1d"]={k:{25:{3:/\\<!--(?:.|\\n)*?--\\>/},1h:{3:/(?:\\\'[^\\\'\\\\\\n]*(?:\\\\.[^\\\'\\\\\\n]*)*\\\')|(?:\\"[^\\"\\\\\\n]*(?:\\\\.[^\\"\\\\\\n]*)*\\")/},27:{3:/\\b[+-]?(?:\\d*\\.?\\d+|\\d+\\.?\\d*)(?:[1r][+-]?\\d+)?\\b/},1C:{3:/(?:\\<\\w+)|(?:\\>)|(?:\\<\\/\\w+\\>)|(?:\\/\\>)/},26:{3:/\\s+\\w+(?=\\s*=)/},20:{3:/([\\"\\\'])(?:(?:[^\\1\\\\\\r\\n]*?(?:\\1\\1|\\\\.))*[^\\1\\\\\\r\\n]*?)\\1/},21:{3:/&[\\w#]+?;/}}};8.I["2e.1d"]={k:{4S:{3:/\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\//},2f:{3:/(?:\\/\\/.*)|(?:[^\\\\]\\#.*)/},4V:{3:/\\\'[^\\\'\\\\]*(?:\\\\.[^\\\'\\\\]*)*\\\'/},4U:{3:/\\"[^\\"\\\\]*(?:\\\\.[^\\"\\\\]*)*\\"/},4P:{3:/\\b(?:[4O][2b][1s][1s]|[4R][4Q][2b][1P]|[5c][5v][1s][5u][1P])\\b/},5x:{3:/\\b[+-]?(\\d*\\.?\\d+|\\d+\\.?\\d*)([1r][+-]?\\d+)?\\b/},5y:{3:/\\b(?:5z|5w(?:5A|5E(?:5F(?:17|1c)|5G(?:17|1c))|17|1T|5B|5C|5D(?:17|1T|1c)|1c)|P(?:5h(?:5k|5j)|5e(?:5d|5g(?:5f|5l)|5r|E(?:5t|5s)|5n(?:5m|5p)|L(?:3X|3W)|O(?:S|3Y(?:3T|3S|3V))|3U|S(?:44|47|46)|41))|40)\\b/},1y:{3:/(?:\\$43|\\$42|\\$3R|\\$3G|\\$3F|\\$3I|\\$3H|\\$3C|\\$3B|\\$3D)\\b/},28:{3:/\\b(?:3O|3N|3P|3K|3J|3M|3L|48|4v|1N|1K|1I|4u|V|4x|4w|2t|4r|2s|4q|1z|4t|v|4s|4D|4C|4F|4E|4z|4y|4B|4A|4p|4d|2F|2F|4g|Q|4f|5|1y|7|4a|4m|4l|4o|4i|4k|x|4j|4h|4n|4b|4c|49|4e|3Q|3E|9|45|1Q|y|3Z|1D|5o|5q|4|19|5i)\\b/},2g:{3:/\\$(\\w+)/,z:\'<H V="28">$</H><H V="2g">$1</H>\'},1C:{3:/(?:\\<\\?[24][4T][24])|(?:\\<\\?)|(?:\\?\\>)/}}}',62,353,'|||exp|var|function||if|ChiliBook|return|recipe||replace||el|path||step|||steps|ingredients|||str|text|recipeName||||length|else||new|this|replacement|stepName|settings|dish|arguments||160|filter|span|recipes|document|||recipeLoaded|required|||for|replaceSpace||insidePRE|bind|class|domLink|stylesheetPath|link|stylesheetFolder||lastIndex|recipeFolder|options|perfect|chili|newline|ERROR|downPRE|while|false|aux|WARNING|js|codes|replaceNewLine|childNodes|string|selection|replaceTab|pre|settingsDef|push|elClass|getPath|stylesheet|makeDish|eE|Ll|parseInt|RegExp|typeof|source|exps|global|do|offset|code|tag|try|prevLength|aNum|null|true|catch|cook|case|createElement|mouseup|break|append|Ee|switch|replaceSpaces|escapeHTML|NOTICE|pattern|escaped|br|spaces|mix|jQuery|avalue|entity|preformatted|xml|Pp|htcom|aname|numbers|keyword|createRange|defaultReplacement|Uu|mousedown|head|php|com|variable|input|elementClass|gi|valueOf|object|chef|selectClass|elementPath|window|metaobjects|in|default|continue|css|substring|stylesheetFile|recipeFile|lastUnmatched|knowHow|Array|checkCSS|stylesheetLoading|each|matched|extends|unmatched|recipeLoading|prepareStep|unblockUI|ajaxSubmit|silverlight|jscom|unblock|block|plugin|clearFields|returnValue|fieldValue|blockUI|formSerialize|event|resetForm|ajaxForm|clearForm|fieldSerialize|href|browser|rel|type|msie|extend|selector|data|html|next|match|version|getPRE|join|lt|bit|ignoreCase|amp|attr|parents|htmlText|innerHTML|innerText|body|setData|Text|copy|clipboardData|recipeNotAvailable|alert|trim|getJSON|unavailable|indexOf|ig|recipePath|Date|_SESSION|_SERVER|php_errormsg|require_once|_GET|_FILES|_REQUEST|_POST|__METHOD__|__LINE__|and|abstract|__FILE__|__CLASS__|__FUNCTION__|require|_ENV|END|CONT|PREFIX|START|OCALSTATEDIR|IBDIR|UTPUT_HANDLER_|throw|__COMPILER_HALT_OFFSET__|VERSION|_COOKIE|GLOBALS|API|static|YSCONFDIR|HLIB_SUFFIX|array|protected|implements|print|private|exit|public|foreach|final|or|isset|old_function|list|include_once|include|php_user_filter|interface|exception|die|declare|elseif|echo|cfunction|as|const|clone|endswitch|endif|eval|endwhile|enddeclare|empty|endforeach|endfor|isNaN|NaN|jquery|Infinity|clearTimeout|setTimeout|clearInterval|setInterval|Nn|value|Rr|Tt|mlcom|Hh|string2|string1|delete|keywords|void|instanceof|content|taconite|gim|regexp|escape|constructor|parseFloat|unescape|toString|with|prototype|element|Ff|BINDIR|HP_|PATH|CONFIG_FILE_|EAR_|xor|INSTALL_DIR|EXTENSION_DIR|SCAN_DIR|MAX|INT_|unset|SIZE|use|DATADIR|XTENSION_DIR|OL|Ss|Aa|E_|number|const1|DEFAULT_INCLUDE_PATH|ALL|PARSE|STRICT|USER_|CO|MPILE_|RE_'.split('|'),0,{}))



// jQuery.tabs.packed.js

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}('(4($){$.2l({z:{2k:0}});$.1P.z=4(x,w){3(O x==\'2Y\')w=x;w=$.2l({K:(x&&O x==\'1Z\'&&x>0)?--x:0,12:C,J:$.1f?2h:T,18:T,1r:\'2X&#2Q;\',21:\'18-2F-\',1m:C,1u:C,1l:C,1F:C,1x:\'2u\',2r:C,2p:C,2m:T,2i:C,1d:C,1c:C,1j:\'z-1M\',H:\'z-2b\',14:\'z-12\',16:\'z-26\',1q:\'z-1H\',1L:\'z-2L\',2j:\'10\'},w||{});$.8.1D=$.8.U&&($.8.1Y&&$.8.1Y<7||/2A 6.0/.2y(2x.2w));4 1w(){1V(0,0)}F 5.Y(4(){2 p=5;2 r=$(\'13.\'+w.1j,p);r=r.V()&&r||$(\'>13:9(0)\',p);2 j=$(\'a\',r);3(w.18){j.Y(4(){2 c=w.21+(++$.z.2k),B=\'#\'+c,2f=5.1O;5.1O=B;$(\'<10 S="\'+c+\'" 34="\'+w.16+\'"></10>\').2c(p);$(5).19(\'1B\',4(e,a){2 b=$(5).I(w.1L),X=$(\'X\',5)[0],27=X.1J;3(w.1r){X.1J=\'<24>\'+w.1r+\'</24>\'}1p(4(){$(B).2T(2f,4(){3(w.1r){X.1J=27}b.17(w.1L);a&&a()})},0)})})}2 n=$(\'10.\'+w.16,p);n=n.V()&&n||$(\'>\'+w.2j,p);r.P(\'.\'+w.1j)||r.I(w.1j);n.Y(4(){2 a=$(5);a.P(\'.\'+w.16)||a.I(w.16)});2 s=$(\'A\',r).20($(\'A.\'+w.H,r)[0]);3(s>=0){w.K=s}3(1e.B){j.Y(4(i){3(5.B==1e.B){w.K=i;3(($.8.U||$.8.2E)&&!w.18){2 a=$(1e.B);2 b=a.15(\'S\');a.15(\'S\',\'\');1p(4(){a.15(\'S\',b)},2D)}1w();F T}})}3($.8.U){1w()}n.1a(\':9(\'+w.K+\')\').1C().1n().2C(\':9(\'+w.K+\')\').I(w.1q);$(\'A\',r).17(w.H).9(w.K).I(w.H);j.9(w.K).N(\'1B\').1n();3(w.2m){2 l=4(d){2 c=$.2B(n.1t(),4(a){2 h,1A=$(a);3(d){3($.8.1D){a.Z.2z(\'1X\');a.Z.G=\'\';a.1k=C}h=1A.L({\'1h-G\':\'\'}).G()}E{h=1A.G()}F h}).2v(4(a,b){F b-a});3($.8.1D){n.Y(4(){5.1k=c[0]+\'1W\';5.Z.2t(\'1X\',\'5.Z.G = 5.1k ? 5.1k : "2s"\')})}E{n.L({\'1h-G\':c[0]+\'1W\'})}};l();2 q=p.1U;2 m=p.1v;2 v=$(\'#z-2q-2o-V\').1t(0)||$(\'<X S="z-2q-2o-V">M</X>\').L({1T:\'2n\',3a:\'39\',38:\'37\'}).2c(Q.1S).1t(0);2 o=v.1v;36(4(){2 b=p.1U;2 a=p.1v;2 c=v.1v;3(a>m||b!=q||c!=o){l((b>q||c<o));q=b;m=a;o=c}},35)}2 u={},11={},1R=w.2r||w.1x,1Q=w.2p||w.1x;3(w.1u||w.1m){3(w.1u){u[\'G\']=\'1C\';11[\'G\']=\'1H\'}3(w.1m){u[\'W\']=\'1C\';11[\'W\']=\'1H\'}}E{3(w.1l){u=w.1l}E{u[\'1h-2g\']=0;1R=1}3(w.1F){11=w.1F}E{11[\'1h-2g\']=0;1Q=1}}2 t=w.2i,1d=w.1d,1c=w.1c;j.19(\'2e\',4(){2 c=$(5).1g(\'A:9(0)\');3(p.1i||c.P(\'.\'+w.H)||c.P(\'.\'+w.14)){F T}2 a=5.B;3($.8.U){$(5).N(\'1b\');3(w.J){$.1f.1N(a);1e.B=a.1z(\'#\',\'\')}}E 3($.8.1y){2 b=$(\'<2d 33="\'+a+\'"><10><32 31="2a" 30="h" /></10></2d>\').1t(0);b.2a();$(5).N(\'1b\');3(w.J){$.1f.1N(a)}}E{3(w.J){1e.B=a.1z(\'#\',\'\')}E{$(5).N(\'1b\')}}});j.19(\'1E\',4(){2 a=$(5).1g(\'A:9(0)\');3($.8.1y){a.1o({W:0},1,4(){a.L({W:\'\'})})}a.I(w.14)});3(w.12&&w.12.1K){29(2 i=0,k=w.12.1K;i<k;i++){j.9(--w.12[i]).N(\'1E\').1n()}};j.19(\'28\',4(){2 a=$(5).1g(\'A:9(0)\');a.17(w.14);3($.8.1y){a.1o({W:1},1,4(){a.L({W:\'\'})})}});j.19(\'1b\',4(e){2 g=e.2Z;2 d=5,A=$(5).1g(\'A:9(0)\'),D=$(5.B),R=n.1a(\':2W\');3(p[\'1i\']||A.P(\'.\'+w.H)||A.P(\'.\'+w.14)||O t==\'4\'&&t(5,D[0],R[0])===T){5.25();F T}p[\'1i\']=2h;3(D.V()){3($.8.U&&w.J){2 c=5.B.1z(\'#\',\'\');D.15(\'S\',\'\');1p(4(){D.15(\'S\',c)},0)}2 f={1T:\'\',2V:\'\',G:\'\'};3(!$.8.U){f[\'W\']=\'\'}4 1I(){3(w.J&&g){$.1f.1N(d.B)}R.1o(11,1Q,4(){$(d).1g(\'A:9(0)\').I(w.H).2U().17(w.H);R.I(w.1q).L(f);3(O 1d==\'4\'){1d(d,D[0],R[0])}3(!(w.1u||w.1m||w.1l)){D.L(\'1T\',\'2n\')}D.1o(u,1R,4(){D.17(w.1q).L(f);3($.8.U){R[0].Z.1a=\'\';D[0].Z.1a=\'\'}3(O 1c==\'4\'){1c(d,D[0],R[0])}p[\'1i\']=C})})}3(!w.18){1I()}E{$(d).N(\'1B\',[1I])}}E{2S(\'2R P 2P 2O 26.\')}2 a=1G.2N||Q.1s&&Q.1s.23||Q.1S.23||0;2 b=1G.2M||Q.1s&&Q.1s.22||Q.1S.22||0;1p(4(){1G.1V(a,b)},0);5.25();F w.J&&!!g});3(w.J){$.1f.2K(4(){j.9(w.K).N(\'1b\').1n()})}})};2 y=[\'2e\',\'1E\',\'28\'];29(2 i=0;i<y.1K;i++){$.1P[y[i]]=(4(d){F 4(c){F 5.Y(4(){2 b=$(\'13.z-1M\',5);b=b.V()&&b||$(\'>13:9(0)\',5);2 a;3(!c||O c==\'1Z\'){a=$(\'A a\',b).9((c&&c>0&&c-1||0))}E 3(O c==\'2J\'){a=$(\'A a[1O$="#\'+c+\'"]\',b)}a.N(d)})}})(y[i])}$.1P.2I=4(){2 c=[];5.Y(4(){2 a=$(\'13.z-1M\',5);a=a.V()&&a||$(\'>13:9(0)\',5);2 b=$(\'A\',a);c.2H(b.20(b.1a(\'.z-2b\')[0])+1)});F c[0]}})(2G);',62,197,'||var|if|function|this|||browser|eq||||||||||||||||||||||||||tabs|li|hash|null|toShow|else|return|height|selectedClass|addClass|bookmarkable|initial|css||trigger|typeof|is|document|toHide|id|false|msie|size|opacity|span|each|style|div|hideAnim|disabled|ul|disabledClass|attr|containerClass|removeClass|remote|bind|filter|click|onShow|onHide|location|ajaxHistory|parents|min|locked|navClass|minHeight|fxShow|fxFade|end|animate|setTimeout|hideClass|spinner|documentElement|get|fxSlide|offsetHeight|unFocus|fxSpeed|safari|replace|jq|loadRemoteTab|show|msie6|disableTab|fxHide|window|hide|switchTab|innerHTML|length|loadingClass|nav|update|href|fn|hideSpeed|showSpeed|body|display|offsetWidth|scrollTo|px|behaviour|version|number|index|hashPrefix|scrollTop|scrollLeft|em|blur|container|tabTitle|enableTab|for|submit|selected|appendTo|form|triggerTab|url|width|true|onClick|tabStruct|remoteCount|extend|fxAutoHeight|block|font|fxHideSpeed|watch|fxShowSpeed|1px|setExpression|normal|sort|userAgent|navigator|test|removeExpression|MSIE|map|not|500|opera|tab|jQuery|push|activeTab|string|initialize|loading|pageYOffset|pageXOffset|such|no|8230|There|alert|load|siblings|overflow|visible|Loading|object|clientX|value|type|input|action|class|50|setInterval|hidden|visibility|absolute|position'.split('|'),0,{}));



// jQuery.history.packed.js

eval(function(p,a,c,k,e,d){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--)d[e(c)]=k[c]||e(c);k=[function(e){return d[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;}('(4($){$.x=16 4(){3 g=\'17\';3 6=8.2;3 A=T;3 m;c.n=4(){};3 w=4(){3 d=$(\'.s-d\');5(d.15().Q()>0){d.13()}};$(b).U(g,w);5($.v.14){3 r;$(4(){r=$(\'<7 1b="1c: 1a;"></7>\').X(b.W).18(0);3 7=r.D.b;7.F();7.I();7.8.2=6.G(\'#\',\'\')});c.n=4(2){6=2;3 7=r.D.b;7.F();7.I();7.8.2=2.G(\'#\',\'\')};m=4(){3 7=r.D.b;3 l=7.8.2;5(l!=6){6=l;5(l!=\'#\'){$(\'a[f$="\'+l+\'"]\').k();8.2=l}j{8.2=\'\';$(b).y(g)}}}}j 5($.v.11||$.v.Y){c.n=4(2){6=2};m=4(){5(8.2){5(6!=8.2){6=8.2;$(\'a[f$="\'+6+\'"]\').k()}}j 5(6){6=\'\';$(b).y(g)}}}j 5($.v.1o){3 9,q,t;$(4(){9=[];9.h=B.h;q=[]});3 o=C;t=4(2){9.M(2);q.h=0;o=C};c.n=4(2){6=2;t(6)};m=4(){3 p=B.h-9.h;5(p){o=C;5(p<0){H(3 i=0;i<1p.1k(p);i++)q.1m(9.1l())}j{H(3 i=0;i<p;i++)9.M(q.1e())}3 J=9[9.h-1];$(\'a[f$="\'+J+\'"]\').k();6=8.2}j 5(9[9.h-1]==O&&!o){5(b.L.1d(\'#\')>=0){$(\'a[f$="\'+\'#\'+b.L.1g(\'#\')[1]+\'"]\').k()}j{$(b).y(g)}o=1i}}}c.1h=4(z){5(P z==\'4\'){$(b).1j(g,w).U(g,z)}5(8.2&&P t==\'O\'){$(\'a.s[f$="\'+8.2+\'"]\').k()}5(m&&A==T){A=1f(m,1n);}}};$.R.s=4(d){3 E=$(d).Q()&&$(d)||$(\'<N></N>\').X(\'W\');E.Z(\'s-d\');V c.12(4(i){3 S=c.f;3 2=\'#s-\'+ ++i;c.f=2;$(c).k(4(e){3 u=e.K;E.19(S,4(){5(u){$.x.n(2);}})})})};$.R.B=4(){V c.k(4(e){3 u=e.K;5(u){$.x.n(c.2)}})}})(10);',62,88,'||hash|var|function|if|_currentHash|iframe|location|_backStack||document|this|output||href|RESET_EVENT|length||else|click|iframeHash|_observeHistory|update|isFirst|historyDelta|_forwardStack|_historyIframe|remote|_addHistory|trueClick|browser|_defaultReset|ajaxHistory|trigger|callback|_intervalId|history|false|contentWindow|target|open|replace|for|close|cachedHash|clientX|URL|push|div|undefined|typeof|size|fn|remoteURL|null|bind|return|body|appendTo|opera|addClass|jQuery|mozilla|each|empty|msie|children|new|historyReset|get|load|none|style|display|indexOf|shift|setInterval|split|initialize|true|unbind|abs|pop|unshift|200|safari|Math'.split('|'),0,{}))



// Implementation

;if(window.jQuery) (function($){ $(function(){



$('.tabs').addClass('Clear').tabs();



}) })(jQuery);



$(document).ready(function() {

   

         var $dialog = $('#dialog')

      		.dialog({

      			autoOpen: false,

      			title: '',

      			closeText: 'X',

      			draggable: true,

      			hide: 'slide',

      			modal: true,

            position: ['right','top'],

            resizable: false ,

            width: 320,

            show:'slide'		

      		});

		




});


 $(document).ready(function() { });

$(document).ready(function() {

  

  $("[name=u_tel]").keypress(function (e)

    {

      //if the letter is not digit then display error and don't type anything

      if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57))

      {

        //display error message

        alert("In questo campo puoi inserire soltanto numeri.");

        return false;

      }

    });

  

  $('form[name=registrazione_user]').submit(function(){



  $("[name=u_nome]").removeClass('input2');

  $("[name=u_cognome]").removeClass('input2');

  $("[name=u_email]").removeClass('input2');

  $("[name=u_prov]").removeClass('input2');

  

  if($("[name=u_nome]").val()     == ""  || 

           $("[name=u_cognome]").val()  == "" ||

           $("[name=u_prov]").val()     == "null" ||

           $("[name=u_email]").val()    == "" ||

           $("[name=u_tel]").val()    == ""

           ){

           

 //alert($("[name=u_nome]").val());

      if($("[name=u_nome]").val() == ""){

        $("[name=u_nome]").addClass('input2');

      }

      

      if($("[name=u_cognome]").val() == ""){

        $("[name=u_cognome]").addClass('input2');

      }

      

     if($("[name=u_email]").val() == ""){

        $("[name=u_email]").addClass('input2');

      }

      

      if($("[name=u_prov]").val() == "null"){

        $("[name=u_prov]").addClass('input2');

      }

      

      if($("[name=u_tel]").val() == ""){

        $("[name=u_tel]").addClass('input2');

      }      

      

      

    $( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );



     alert("Completare i campi in rosso");

     



  }

  else if($("[name=u_nome]").val().length  < 3  || 

           $("[name=u_cognome]").val().length  < 3 ||

           $("[name=u_email]").val().length  < 3){

           

      if($("[name=u_nome]").val().length  < 3){

        $("[name=u_nome]").addClass('input2');

      }

      

      if($("[name=u_cognome]").val().length  < 3){

        $("[name=u_cognome]").addClass('input2');

      }

      

     if( $("[name=u_email]").val().length  < 3){

        $("[name=u_email]").addClass('input2');

      }

      



    $( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );



     alert("I campi in rosso devono devono contenere minimo 3 lettere.");

           

  

  }

   else if(isValidEmailAddress( $("[name=u_email]").val())==false){

           



    $("[name=u_email]").addClass('input2');

    $( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );



     alert("Indirizzo email non valido.");

           

  

  }

 else if($("[name=accett_discl1]:checked").val() == "no" || 

     $("[name=accett_discl2]:checked").val() == "no" ||

     $("[name=accett_discl3]:checked").val() == "no"){

     

     

     

     /* 

     $("#messaggio").empty();

      $("#messaggio").append("Non &egrave; possibile proseguire senza il consenso.");           

      $("#messaggio").show();

      $("#loggati").hide();

      $("#registrati").hide();

      $("#paga").hide();

    */

    

    $( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );

    alert("Non " + html_entity_decode("&egrave;") +" possibile proseguire senza il consenso.");

    



  }

  else{



    $.post('./inc/registra.php' , { user_nome  : $("[name=u_nome]").val(),

                                    user_cognome   : $("[name=u_cognome]").val(),                                    

                                    user_email: $("[name=u_email]").val(),

                                    user_tel  : $("[name=u_tel]").val(),

                                    user_prov : $("[name=u_prov]").val()}, function(data){

                                    

                                    $("#messaggio").empty();

                                    $("#messaggio").append("Grazie per esserti registrato. Riceverai a breve una mail con i dettagli per concludere la registrazione.");           

                                    $("#messaggio").show();

                                    $("#loggati").hide();

                                    $("#registrati").hide();

                                    $("#paga").hide();

                                    }, 'json');

   }                         

   return false;



  });

});



function isValidEmailAddress(emailAddress) {

	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

	return pattern.test(emailAddress);

}



function html_entity_decode( string ) {

    // Convert all HTML entities to their applicable characters



    var ret, tarea = document.createElement('textarea');

    tarea.innerHTML = string;

    ret = tarea.value;

    return ret;

}


$(document).ready(function() {

  

    $("[name=user_tel]").keypress(function (e)

    {

      //if the letter is not digit then display error and don't type anything

      if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57))

      {

        //display error message

        alert("In questo campo puoi inserire soltanto numeri.");

        return false;

      }

    });

  



  $('form[name=modifica_user]').submit(function(){



  

    



    $.post('./inc/modifica_user.php' , {  

                                         

                                          user_nome  : $("[name=user_nome]").val(),

                                          user_cognome   : $("[name=user_cognome]").val(), 

                                          user_email: $("[name=user_email]").val(),

                                          user_tel  : $("[name=user_tel]").val(),

                                          user_prov : $("[name=user_prov]").val()}, function(data){

                                        

                                          if(data.success){

                                            $("#messaggio").empty();

                                            $("#messaggio").append("Dati modificati.");           

                                            $("#messaggio").show();

                                            $("#mod_dati_box").hide();

                                            $("#riep-account").empty();

                                            $("#riep-account").load("./inc/dati_user.php", function(){

                                            

                                             $("#mod_dati_user").click(function(){

                                              //alert("d");

                                              dialog_visibility("mod_dati_user");

                                            });  

                                            

                                            });

                                           }else{

                                            $("#messaggio").empty();

                                            $("#messaggio").append("Riprova pi&ugrave; tardi.");           

                                            $("#messaggio").show();

                                            $("#mod_dati_box").hide();

                                           }

                                           

                                     

                                                                               

                                          }, 'json');

                                          



                            

   return false;



  });

});


 $(document).ready(function() {

$("#selector_prov").hide();

//  $("[name=ricerca_provincia]").change(function(){

  var sPath = window.location.pathname;

  if(sPath.substring(sPath.lastIndexOf('/') + 1) == "vetrina.php"){

    

    $("#front_gallery").hide();

    var prov          = $('[name=ricerca_provincia]').val(); 

    var count         = 0;

    var floater       = "left";

    

      $.post("./inc/ajax_parser.php", { operazione      : "carica_vetrina",

                                        provincia       : prov}, function(data){

    

      $("#cont_offerte").empty();

      

      if(data.err){

        $("#cont_offerte").append("Non ci sono campi in offerta con i criteri selezionati.");

      }

      

      else{

        $.each(data.arr_centri, function(i , item){

       

        switch(floater){

         case "left":

          floater = "right";         

         break;

         case "right":

          floater = "left";

          $("#cont_offerte").append('<div id="riga_cont_off">');

         break;

         }

       

        //alert(floater);

         var id_img = item.immagine_centro.split("___");  

       //  var nomecs = searchval.text(item.cs_nome).replace(' ','-');        
 
         $("#cont_offerte").append('<span style="float:'+floater+'" class="cont_centro"><span style="float:left;width:120px;">'

         +         item.cs_prov   +"<br />"

         +         item.city      +"<br />"
 
         + "<a href='/centro-sportivo/"+item.id_centro+"/"+item.cs_url+ "'><b>" + item.cs_nome   + "</b></a></span><span style='float:right' ><a href='/centro-sportivo/"+item.id_centro+"/"+item.cs_url+ "'><img style='vertical-align:super' src="+item.immagine_centro+"></a></span>"                                       

         +'</span>');

         

        // if(count > 0 )  

         switch(floater){

         case "left":

          floater = "right";

          $("#cont_offerte").append('</div>');         

         break;

         case "right":

          floater = "left";          

         break;

         }



         

          });

      }

      

  

        $(".nome_centro").click(function(){

        

            //  alert("ole");                  

            //  carica_dettaglio_cs($(this).attr("id"));

            window.location = "vetrina_dettaglio.php?id_centro=" + $(this).attr("id");

        

          

              

        });

      

    } , "json");

  }  

  //});

});







$(document).ready(function() {



if(doc_name_extract() =="vetrina_dettaglio"){

  //controlla_cookie();

  //alert(getParameterByName("id_centro"));

  carica_dettaglio_cs(getParameterByName("id_centro"));

}

});





function getParameterByName( name )

{

  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");

  var regexS = "[\\?&]"+name+"=([^&#]*)";

  var regex = new RegExp( regexS );

  var results = regex.exec( window.location.href );

  if( results == null )

    return "";

  else

    return results[1];

}



function doc_name_extract(){

  

  //alert("df");

   wholeurl = window.location.href;

   x = wholeurl.length;

   while((wholeurl.substring(x,x-1)) != "."){ x--; } clipend = x;

   while((wholeurl.substring(x,x-1)) != "/"){ x--; } clipstart = x;

   return wholeurl.substring(clipend-1,clipstart);

}


 $(document).ready(function() {



  $("[name=cerca_last_minute]").click(function(){

   

  //  alert("go");

    

    var prov          = $('[name=ricerca_provincia]').val(); 

    var tipo_c        = $('[name=last_minute_tipo_campo]').val();

    var floater       = "left";

        

      $.post("./inc/ajax_parser.php", { operazione      : "carica_slot_lastminute_da_provincia",

                                        provincia       : prov,                                     

                                        tipo_campo      : tipo_c}, function(data){

    

      $("#cont_offerte").empty();

     

      if(data.err){

        $("#cont_offerte").append("Non ci sono campi in offerta con i criteri selezionati.");

      }

      

      else{

      

     

     

      var id_campo        = "";

      var count           = 0;

      

            $.each(data, function(i , item){

            floater = "left";

            

            

              if(count > 0){                

                

                count = 0;

                

                

              }

            

             if(item.id_campo != id_campo){

             var id_img = item.immagine_campo.split("___");           

             $("#cont_offerte").append('<span style="float:'+floater+';" class="cont_campo">'

                                       + '<span style="float:left;  width:160px;">'   +     item.city      

                                       + "<br /><b>" + item.cs_nome   + "</b><br />"

                                       +  item.nome_campo   + "<br />"

                                       +  converti_tipo(tipo_c) + " " + item.copertura                                    

                                       + "<br /><img alt='pic' src='images/more.gif' style='vertical-align:middle;'' class='pictures'> da " + item.prezzo_minore + " &euro;, <a href='last_minute_dettaglio.php?id_c="+item.id_campo+"&id_img="+id_img[1]+"'>vedi dettaglio</a>"

                                       + "</span><span style='float:right'><img src="+item.immagine_campo+"></span></span></span>");

                                         

               count++;

              

               if(floater == "right"){          

               // $("#cont_offerte").append("<br />");

                floater = "left";

               // count = 0;

              }else floater == "right";

                

              }

              

              id_campo = item.id_campo;

             

              

            });

                

      

      

      }

    

    } , "json");

  });

});





function converti_tipo(tipo){

  switch(tipo){

    case "a5":

      return "Calcetto a 5";

    break;

    case "a7":

      return "Calcetto a 7";

    break;

    case "a11":

      return "Calcetto a 11";

    break;

  }

}





 var options   = { path: '/' , expires: 1};



$(document).ready(function() {



controlla_cookie();



$('.carrello_btn').click(function(){



   var id       = $(this).attr('id');

   var  valore  = $(this).attr('name');

   aggiungi_prodotto(id , valore);



 });

});





function aggiungi_prodotto(id, valore){

  

   $.post("./inc/ajax_parser.php", {operazione : "get_session_vars"},

                                  function(data){
									     
 

      temp = $("#" + id).find(".check").length;

    // alert(temp);

      switch(temp){

        case 1:

      //  alert("1")

         $('#' + id).children().remove(".check");

            



            $.cookie("prodotto_"+id ,  "");

           // alert($.cookie("prodotto_"+id+"", null));

        //    alert("1")

            $.post("./inc/ajax_parser.php", { operazione  : "libera_disp", id_disp: id}, function(data){});
			  appari_notifica("Prodotto rimosso dal carrello");
			

        break;        

        case 0:

        //  alert("2")

          //alert("2");

		  if($("a").hasClass("lg"))
		  {
		  	$(".lg").trigger('click');
		  } else {
	          $.post("./inc/ajax_parser.php", { operazione  : "occupa_disp", elenco_disp: id}, function(){
		          $.cookie("prodotto_"+id, valore, options);
		          dialog_visibility("prodotto_nel_carrello");
		          $('#' + id).append("<span class='check'><img src='images/check.png'></span>");
		          appari_notifica("Prodotto aggiunto nel carrello");
	          });
          }
          

          break;

          }
          
          }, "json"); 

    

}





var id_settimana = 0;



$(document).ready(function() {



  var str = doc_name_extract();

  if( str.search("hot_list") > -1 ){

   

 



  var giorni = intervallo(id_settimana);

  var params = estrai_querystr_vars();

 // alert(params);

  

      $("#cont_offerte").empty();

      $("#cont_offerte").load("./inc/tab_hot_list.php?id_campo="+params[0]+"&time_start="+giorni[0]+"&time_end="+giorni[1]+"", 

                              function(data){



              

             controlla_cookie();

              

         

               $(".next-week").click(function(){

                 id_settimana++; 

                  date = intervallo(id_settimana);

                 // alert(date);

                  $("#cont_offerte").empty();

                  $("#cont_offerte").load("./inc/tab_hot_list.php?id_campo="+params[0]+"&id_img="+params[1]+"&time_start="+date[0]+"&time_end="+date[1]+"", 

                                  function(){

                                      

                                      $('.carrello_btn').click(function(){

                                          aggiungi_prodotto($(this).attr('id') , $(this).attr('name'));

                                       });

                                        controlla_cookie();           

                                  });

                  

                });

            

                $(".past-week").click(function(){

                  id_settimana--;

                  date = intervallo(id_settimana);

                  $("#cont_offerte").empty();

                  $("#cont_offerte").load("./inc/tab_hot_list.php?id_campo="+params[0]+"&id_img="+params[1]+"&time_start="+date[0]+"&time_end="+date[1]+"", 

                                   function(){

                                   

                                      

                                      $('.carrello_btn').click(function(){

                                          aggiungi_prodotto($(this).attr('id') , $(this).attr('name'));

                                       });

                                      controlla_cookie();

                                   

                                   });

                  

                });

  

               $('.carrello_btn').click(function(){

                  aggiungi_prodotto($(this).attr('id') , $(this).attr('name'));

               });

               

      });

       

    }  



  

});





function controlla_cookie(){

 

  $(".carrello_btn").each(

    function() {

      var id = $(this).attr('id');

      // alert($.cookie("prodotto_"+id+""));

      if($.cookie("prodotto_"+id) != null && $.cookie("prodotto_"+id)!=''){

      

      if($('#' + id).find('.check').length  < 1){

        $('#' + id).append("<span class='check'><img src='images/check.png'></span>");

       }

      }

      else{

        if($('#' + id).find('.check').length  > 0){

          $('#' + id).children().remove(".check");

       }

       }

      

  });

}



//setInterval( "controlla_cookie()", 20000 );



function doc_name_extract()

{

   wholeurl = window.location.href;

   x = wholeurl.length;

   while((wholeurl.substring(x,x-1)) != "."){ x--; } clipend = x;

   while((wholeurl.substring(x,x-1)) != "/"){ x--; } clipstart = x;

   return wholeurl.substring(clipend-1,clipstart);

}





function intervallo(add){

  

 var lunedi   = getMonday(add);

 var domenica = getSunday(add);

 return [lunedi , domenica];

//  alert(lunedi  + " " + domenica);

}



function getMonday(add)

{

    var today  = new Date();

    var date1 =  new Date();

    

    date1.setDate((today.getDate() - (today.getDay()- 1) + (7*add)));

   

    return formatDate(date1);

}



function getSunday(add)

{

    var today  = new Date();

    var date1 =  new Date();

    

    date1.setDate((today.getDate() - (today.getDay()-1) + 7 + (7*add)));

   

    return formatDate(date1);

}



function formatDate(date1) {



  return date1.getFullYear()  + '-' + (date1.getMonth()  < 9 ? '0' : '')   + 

         (date1.getMonth()+1) + '-' + (date1.getDate()   < 10 ? '0' : '')  + 

          date1.getDate()     + '%2000:00:00';

        

}



function estrai_querystr_vars(){

  

   var wholeurl = window.location.href;

   var temp = wholeurl.split("?");

   var temp2 = temp[1].split("&");

   var id_campo = temp2[0].split("=");



   

   return [id_campo[1]];

  

    

}



$(document).ready(function() {

  

   $.datepicker.regional['it'] = {

		closeText: 'Chiudi',

		prevText: '&#x3c;Prec',

		nextText: 'Succ&#x3e;',

		currentText: 'Oggi',

		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',

			'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],

		monthNamesShort: ['Gen','Feb','Mar','Apr','Mag','Giu',

			'Lug','Ago','Set','Ott','Nov','Dic'],

		dayNames: ['Domenica','Luned&#236','Marted&#236','Mercoled&#236','Gioved&#236','Venerd&#236','Sabato'],

		dayNamesShort: ['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],

		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa'],

		weekHeader: 'Sm',

		dateFormat: 'yy-mm-dd',

		firstDay: 1,

		isRTL: false,

		showMonthAfterYear: false,

		yearSuffix: ''};



	$.datepicker.setDefaults($.datepicker.regional['it']);







   $("#datepicker").datepicker(

    {

      onSelect: function(dateText, inst) { 

        

        

        $.cookie("giorno_prenotazione" , '');

        $.cookie("giorno_prenotazione" , dateText);

        

        // SE SIAMO GIA NELLA PAGINA DI PRENOTAZIONE

        if(doc_name_extract()=="prenotazioni"){

          $("#elenco_slot").empty();

          $("#intestazione_ricerca").empty();

          $("#ric_campo_dalle").empty();

          $("#ric_campo_dalle").append(sistema_data($.cookie("giorno_prenotazione")));

        }

        else{

          window.location.href = "http://lastminutesoccer.com/prenotazioni.php";          

          $("#elenco_slot").empty();

          $("#intestazione_ricerca").empty();

          $("#ric_campo_dalle").empty();

          $("#ric_campo_dalle").append(sistema_data($.cookie("giorno_prenotazione")));

        }

        

        //ELSE

                        

      }



    }

   );

   

   

  

});





function doc_name_extract()

{

  
 
   wholeurl = window.location.href;

   

   x = wholeurl.length;

   while((wholeurl.substring(x,x-1)) != "."){ x--; } clipend = x;

   while((wholeurl.substring(x,x-1)) != "/"){ x--; } clipstart = x;

   return wholeurl.substring(clipend-1,clipstart);

}





function sistema_data(data){

  var1 = data.split("-");

  return togli_zero(var1[2]) + " " + traduci_mese(var1[1]) + " " + var1[0];

}



function traduci_mese(month){

  switch(month){

    case "01":

      return "Gennaio";

    break;

    case "02":

      return "Febbraio";

    break;

    case "03":

      return "Marzo";

    break;

    case "04":

      return "Aprile";

    break;

    case "05":

      return "Maggio";

    break;

    case "06":

      return "Giugno";

    break;

    case "07":

      return "Luglio";

    break;

    case "08":

      return "Agosto";

    break;

    case "09":

      return "Settembre";

    break;

    case "10":

      return "Ottobre";

    break;

    case "11":

      return "Novembre";

    break;

    case "12":

      return "Dicembre";

    break;

    default:

      return "";

    break;

    }

}


var province_aperto           = false;

var comuni_aperto             = false;

var carrello                  = "";



var bottoni_carr              = false;

var flag                      = true; 

var options   = { path: '/' };



$.cookie("totale_iw", '', options);



$(document).ready(function() {
						   
						   

   

  // alert(window.location.host);



   

 // $("#dialog").dialog();   

  $('#aspetta').hide();

  $('#front_gallery').hide();

  //$('#dettaglio_centro').hide();

  $("#cont_prov").hide();

  $("#gmap").empty();

  $("#gmap").hide();

  $(".paga_carrello_btn").hide();



      if( $("#cont_riep").find(".elimina_acq").length > 0 ){

        $("#chiudi-acquisto").show();

      }

      else{

       $("#chiudi-acquisto").hide();

      }





   $('#aspetta')

   .ajaxStart(function(){ $('#aspetta').show();})

   .ajaxStop(function(){ $('#aspetta').hide();});    

 
        

   // $("#gallery").hide();

  

    

    $('.star').click(function(){

      

      // ricevo idcampo_iduser_idprenotazione_[campo|spogliatoio|centro]_voto

      

      var arr               = $(this).find('a').attr("title").split("_");

      var id_campo          = arr[0];

      var id_user           = arr[1];

      var id_prenotazione   = arr[2];

      var tipo              = arr[3];

      var voto              = arr[4];

      

    // alert(id_campo+" "+id_user+" "+id_prenotazione+" "+tipo+" "+voto);

      

     $.post("./inc/ajax_parser.php", { operazione     : "vota", 

                                      id_campo        : id_campo,

                                      id_user         : id_user,

                                      id_prenotazione : id_prenotazione,

                                      tipo            : tipo,

                                      voto            : voto}, function(data){

                                      

       

                  

      });

      

      //var valore  = $('input').attr("name");

    

    });

    



    $("#mod_dati_user").click(function(){

     dialog_visibility("mod_dati_user");

    });

    

   

          $("[name=recupera_submit]").click(function(){

      

  

      

      if(isValidEmailAddress( $("[name=recupera_da_email]").val())==false){

           

      

          $("[name=recupera_da_email]").addClass('input2');

          $( 'html, body' ).animate( { scrollTop: 0 }, 'slow' );

      

           alert("Indirizzo email non valido.");

                 

        

        }

      

      else{

      

      $("[name=recupera_da_email]").removeClass('input2');

       $.post("./inc/ajax_parser.php", {operazione : "recupera_pswd", 

                                        mail       : $("[name=recupera_da_email]").val()},

                                          function(data){

         if(data.success)

          dialog_visibility("password_inviata_correttamente");

         else

          dialog_visibility("password_non_inviata");  

            

      },"json");

    }

    });



    $("#forgot").click(function(){

      dialog_visibility("forgot");

    });



    $(":input[name=paga_carrello]").click(function () {

        check_auth();   

      });

    

    $("#vai_al_carrello").click(function(){

      //alert("uaz"); 

      check_auth();     

    });

    

    $(':input[name=cerca_campo]').click(function(){

      

      if($(':input[name=ricerca_provincia]').is(':visible')){

    

        carica_slot_province();

      }

      else{

      var time_start  = $.cookie("giorno_prenotazione")             +" "  +           

                        $(':input[name=pren_start_ora]')    . val() +":"+

                        $(':input[name=pren_start_minuto]') . val() +":00";

      

      var time_end    = $.cookie("giorno_prenotazione") +" 23:59:59";

        

      var tipo_c        = $(':input[name=tipo_campo]')      .val();                

      //                  alert(time_start +""+time_end);

      



      



      $("#cont_prov").hide();

      $("#elenco_slot").empty();      

      $("#intestazione_ricerca").empty();



      $(':input[name=ricerca_provincia]').val(null);



      $.post("./inc/ajax_parser.php", { operazione      : "carica_elenco_slot_da_ip", 

                                        time_start      : time_start,

                                        time_end        : time_end,

                                        tipo_campo      : tipo_c}, function(data){

        

     $("#intestazione_ricerca").empty(); 

                                   

         

     if(data.err){ 

      $("#intestazione_ricerca").append("<div><br> Non ci sono campi disponibili nella tua zona. Prova selezionando una provincia</div>");

      $("#cont_prov").show();

      }

     else{

         var temp = "";

         var prov = "";

         var id_centro = "";  

         temp +=  "<ul>";

        $.each(data, function(i,item){

              

            if(item.id_centro != id_centro && id_centro != "")

              temp += "</li></ul>";

              

             if(item.id_centro != id_centro) 

              temp +="<li id='"+item.id_centro+"'><span class='nome_centro' id='"+item.id_centro+"'><b>"+item.cs_nome+"</b></span>("+item.city+")<ul>";

              

             if(prov == "") prov = item.cs_prov; 

              if(item.prezzo_lms){

                prezzo = "<strike>"+ item.prezzo +"</strike><span class='offerta_lms'> <b>"+item.prezzo_lms+" Last Minute</b></span>";

                prezzo_carr = item.prezzo_lms

                }

               else{

                prezzo = item.prezzo;

                prezzo_carr = item.prezzo;;

                }       

             temp += "<li><span class='slot'>"+func_dalle_alle(item.ts, item.te)+" <span class='' id='"+item.id_campo+"'><i>"+item.nome_campo+"</i></span> " +item.copertura+" &euro; "+ prezzo +" <a href='#"+item.disp_id+"' class='carrello_btn' id='"+item.disp_id+"' name='"+prezzo_carr+"' ><img src='images/carrello.gif' alt='acquista'></a></span></li>";

           

            id_centro = item.id_centro;

           

          });

           $("#intestazione_ricerca").append("<br /> Elenco delle ore disponibili nella provincia di "+prov);           

           $("#elenco_slot").append(temp); 

            

           $('.carrello_btn').mousedown(function(){

           

               var id       = $(this).attr('id');

               var  valore  = $(this).attr('name');

               aggiungi_prodotto(id , valore);

            

             });



               

      }

      

      





                        

      }, "json");

      }

    });


  $(".elimina_acq").click(function (){

      

    //  alert($(this).attr('name'));

      

      $("tr[name="+$(this).attr('name')+"]").hide('slow');

      

      

      var prezzo_prod = $(".tot_prod[name="+$(this).attr('name')+"]").text().replace("," , ".");      

      var prezzo_tot  = $("#importo_pagamento").text().replace("," , "."); 
       
      var prezzo_tot_acconto  = $("#importo_totale").text().replace("," , ".");      

      var prezzo_acconto = $(".tot_prod_acconto[name="+$(this).attr('name')+"]").text().replace(",","."); 

   
     //alert(prezzo_prod +" "+prezzo_tot);

      

      $.cookie("prodotto_"+$(this).attr('name'), "", options);

      

      $.post("./inc/ajax_parser.php", { operazione  : "libera_disp", id_disp: $(this).attr('name')}, function(data){});

      

     // alert($.cookie("prodotto_"+$(this).attr('name')+""))

      

      $.cookie("totale_iw", "");

      $.cookie("totale_iw", Number(prezzo_tot - prezzo_prod).toFixed(2));

     // alert($.cookie("totale_iw"))

      var prezzo_finale = String(Number(prezzo_tot - prezzo_prod).toFixed(2)).replace("." , ",");

      var prezzo_finale_acconto = String(Number(prezzo_tot_acconto - prezzo_acconto).toFixed(2)).replace("." , ",");
 
      $("#importo_pagamento").empty();
      
      $("#importo_pagamento").append(prezzo_finale);

      $("#importo_totale").empty();

      $("#importo_totale").append(prezzo_finale_acconto);

     // alert($("#cont_riep").find(".elimina_acq").length);

     $("tr[name="+$(this).attr('name')+"]").empty();

      if( $("#cont_riep").find(".elimina_acq").length > 0 ){

        $("#chiudi-acquisto").show();

      }

      else{

       $("#chiudi-acquisto").hide();

      }



  });






						   
						   });











/**

 **

 **  FUNZIONI  

 **

 ** 





$(document).ready(function() {

   



      if( $("#cont_riep").find(".elimina_acq").length > 0 ){

        $("#chiudi-acquisto").show();

      }

      else{

       $("#chiudi-acquisto").hide();

      }
});***/
 



function check_auth(){



 $.post("./inc/ajax_parser.php", {operazione : "get_session_vars"},

                                  function(data){

                         

    if(data.auth){

        

        dialog_visibility("paga");

     }     


 },"json");          



}



function conta_check(){

  $.post("./inc/ajax_parser.php", {operazione : "get_session_vars"},

                                  function(data){   

                                  

  

    

  if(data.auth == false){

    dialog_visibility("loggati");

  }   

  else if($('.carrello_btn span').size() < 1)

  {

    $(".paga_carrello_btn").hide();

      

  }else{



    var totale = "";

    var elenco_disp = "";

    $('#tot').empty();

    

    $.each($('.carrello_btn span'), function(i,item){

        elenco_disp   += $(this).parent().attr("id") + "|";

        totale        += parseFloat($(this).parent().attr("name")) + "|";

    });

    

  $('#tot').append(totale);

  $.post("./inc/ajax_parser.php", { 

                                    operazione  : "occupa_disp", 

                                    elenco_disp: elenco_disp}, function(data){});

  add_carrello( elenco_disp , totale); 

    

  }                                 

  }, "json"); 

}



function add_map(lat , lon, nome, comune, indirizzo, tel){





 if (GBrowserIsCompatible()) { // if the browser is compatible with Google Map's  

     

     var m = new GMap2(document.getElementById("gmap")); // new instance of the GMap2 class and pass in our div location.  

     m.setCenter(new GLatLng(lat, lon), 13); // pass in latitude, longitude, and zoom level.

     

     m.addControl(new GLargeMapControl());

     

     var c = new GMapTypeControl(); // switch map modes  

     m.addControl(c);

     m.setMapType(G_NORMAL_MAP); // G_SATELLITE_MAP | G_HYBRID_MAP

     

     m.openInfoWindowHtml(m.getCenter(),"<h1 style='font-size:16px; margin:0;'>"+nome+"</h1><br><h2 style='font-size:12px; margin:0'>"

                                             +indirizzo+", "

                                             +comune)+"</h2>";   



  }  

 else {alert("Your browser is not worthy.");} 

}



    function  carica_dettaglio_cs(id_cs){
		
		
		  $.post("./inc/ajax_parser.php", { operazione      : "carica_dettaglio_cs",

                                    id_cs           : id_cs}, 

                                  function(data){
		
		
          $("#gmap").show();

          add_map(data.lat , data.lon, data.nome, data.comune, data.indirizzo, data.tel);
		
		}, "json"); }

	

		  








function carica_cop(cop,misto){

                                          

       // alert(cop);

                 

        if(cop > 0){

       // alert("rfdf");

          if(misto == "ok")return "coperto/scoperto";

          else return "coperto";

        }

        else{

          if(misto == "ok")return "coperto/scoperto";

          else return "scoperto";

        }  

}



function add_gallery(id_cs){

var flag = false;

$("#front_gallery").empty();



$.post("./inc/ajax_parser.php", { operazione      : "carica_gallery_cs",

                                    id_cs         : id_cs}, 

                                  function(data){

                                  

      var arr_img = data.gallery.split("|");



      $.each(arr_img, function(i,item){

       if(item != ""){

         flag = true;

         temp = item.split("/");

         $("#front_gallery").append("<a href='"+item+"'><img src='"+temp[0]+"/"+temp[1]+"/"+temp[2]+"/"+temp[3]+"/thumb___"+temp[4]+"'  alt='LastMinuteSoccer.com | Gallery' /></a> &nbsp;");

       }

      });      

     

      $('#front_gallery a').lightBox();

        

       if(flag){

       $("#front_gallery").show();

       }else{

       $("#front_gallery").hide();

       }

                

  }, "json");



}



function carica_slot_province(){

  

    



      $("#elenco_slot").empty();

      $("#intestazione_ricerca").empty();   

                

       var time_start  = $.cookie("giorno_prenotazione")             +" " +            

                        $(':input[name=pren_start_ora]')    . val() +":"+

                        $(':input[name=pren_start_minuto]') . val() +":00";

      

      var time_end    = $.cookie("giorno_prenotazione") +" 23:59:59";

        

      var tipo_c        = $(':input[name=tipo_campo]')      .val();

      var prov          = $(':input[name=ricerca_provincia]').val();

    



      $.post("./inc/ajax_parser.php", { operazione      : "carica_elenco_slot_da_provincia",

                                        provincia       : prov,

                                        time_start      : time_start,

                                        time_end        : time_end,

                                        tipo_campo      : tipo_c}, function(data){

                                        

        $("#intestazione_ricerca").empty();                                   

             

         if(data.err){ 

           $("#intestazione_ricerca").append("<div><br> Non ci sono campi disponibili in questa provincia.</div>");

           $("#cont_prov").show();

          }

         else{

             var temp = "";

             var prov = "";

             var id_centro = "";  

             temp +=  "<ul>";

              $.each(data, function(i,item){

                  

              if(item.id_centro != id_centro && id_centro != "")

              temp += "</li></ul>";

              

             if(item.id_centro != id_centro) 

              temp +="<li id='"+item.id_centro+"'><span class='nome_centro' id='"+item.id_centro+"'><b>"+item.cs_nome+"</b></span> ("+item.city+")<ul>";

              

             if(prov == "") prov = item.cs_prov; 

              if(item.prezzo_lms){

                prezzo = "<strike>"+ item.prezzo +"</strike><span class='offerta_lms'> <b>"+item.prezzo_lms+" Last Minute</b></span>";

                prezzo_carr = item.prezzo_lms

                }

               else{

                prezzo = item.prezzo;

                prezzo_carr = item.prezzo;

                }    

             temp += "<li><span class='slot'>"+func_dalle_alle(item.ts, item.te)+" <span class='nome_campo' id='"+item.id_campo+"'><i>"+item.nome_campo+"</i></span> " +item.copertura+" &euro; "+ prezzo +" <a href='#' class='carrello_btn' id='"+item.disp_id+"' name='"+prezzo_carr+"'><img  src='images/carrello.gif'></a></span></li>";

           

            id_centro = item.id_centro;

               

                });

              $("#elenco_slot").append(temp); 

         

                         

              $('.carrello_btn').click(function(){

                 aggiungi_prodotto($(this).attr('id') , $(this).attr('name'));

               });

                  

           }

      },"json");

}





function func_dalle_alle(time_start , time_end){

  

  var temp_dalle = time_start.split(" ");

  var temp_alle  = time_end.split(" ");

  

  var dalle = temp_dalle[1].split(":");

  var alle = temp_alle[1].split(":");

  

  

  

  return togli_zero(dalle[0])+":"+dalle[1]+"-"+togli_zero(alle[0])+":"+alle[1];

} 





function parsa(str){

return unescape(str);



}



/*

function add_carrello(prod, tot){

//  alert(prod + " " + tot);

  $.cookie("ordine", null);

  $.cookie("totale", null);

  $.cookie("ordine", prod, options);

  $.cookie("totale", tot, options);

}

*/



function empty_cookie_sessione(){



var arr_cookie = document.cookie.split(";");  

 // alert(document.cookie);

  for(i = 0;i<arr_cookie.length;i++){

    nome_cookie =  arr_cookie[i].split("=");

    $.cookie(nome_cookie[0] , null);

  }

  

  $.post("./inc/ajax_parser.php", { operazione      : "chiudi_sessione"}, 

                                    function(data){

    

    if(data.success){

     

         var prod = data.arr_cookie;



        $.each(prod, function(i,item){

          $.cookie(item , "", options);

        });

       window.location = "./index.php";  

    }



  

  },"json");

  

  //alert("--->" + document.cookie);



}



function togli_zero(str){

  if( str.charAt(0) != "0") return str

  else return str.substring(1);

}



function dialog_visibility(tipo){

  switch(tipo){

    case 'loggati':

    case 'registrati':



      $("#messaggio").empty();

      $("#loggati").show();

      $("#registrati").show();

      $("#paga").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").hide();

      $("#mod_dati_box").hide();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');

      

      $("[name=u_nome]").val("");

      $("[name=u_cognome]").val("");

      $("[name=u_email]").val("");

      $("[name=u_prov]").val("null");

      

      $("[name=username]").val("");

      $("[name=password]").val("");

      

      $("[name=u_nome]").removeClass('input2');

      $("[name=u_cognome]").removeClass('input2');

      $("[name=u_email]").removeClass('input2');

      $("[name=u_prov]").removeClass('input2');

      

      $("[name=username]").removeClass('input2');

      $("[name=password]").removeClass('input2');

      

    break;

    case 'sloggati':

   // alert("dsds");

      $("#messaggio").empty();

      $("#messaggio").append("Grazie per la visita. Alla prossima ! ");

      $("#lg").empty();

      $("#lg").append("Login");

      $("#menu_account").hide();

      $("#menu_carrello").hide();

      $("#messaggio").show();

      $("#loggati").hide();

      $("#registrati").hide();

      $("#paga").hide();

      $("#mod_dati_box").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").hide();

      $("#mod_dati_box").hide();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');



    break;

        case 'non_sloggato':

   // alert("dsds");

      $("#messaggio").empty();

      $("#messaggio").append("Non &egrave; stato possibile effettuare il logout. Riprova pi&ugrave; tardi. ");

      $("#messaggio").show();

      $("#loggati").hide();

      $("#registrati").hide();

      $("#paga").hide();

      $("#mod_dati_box").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").hide();

      $("#mod_dati_box").hide();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');



    break;

    case 'paga':

 //   alert("flkjdf");

       $("#messaggio").empty();

       window.location = "./riepilogo_carrello.php";  

    break;

    case 'forgot':

    

      $("[name=recupera_da_email]").val("");

      $("[name=recupera_da_email]").removeClass('input2');

        

      $("#messaggio").empty();

      $("#messaggio").append("Inserisci il tuo indirizzo mail per recuperare la password.");           

      $("#messaggio").show();

      $("#loggati").hide();

      $("#registrati").hide();

       $("#mod_dati_box").hide();

      $("#paga").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").show();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');

    break;

    case 'password_inviata_correttamente':

      $("#messaggio").empty();

      $("#messaggio").append("Ti &egrave; stata inviata la password all'indirizzo richiesto.");           

      $("#messaggio").show();

            $("#mod_dati_box").hide();

      $("#loggati").hide();

      $("#registrati").hide();

      $("#paga").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").hide();



    break;

    case "password_non_inviata":

      $("#messaggio").empty();

      $("#messaggio").append("Verifica di aver digitato correttamente il tuo indirizzo email.");           

      $("#messaggio").show();

      $("#loggati").hide();

            $("#mod_dati_box").hide();

      $("#registrati").hide();

      $("#paga").hide();

      $("#prodotto_inserito").hide();

      $("#recupera_pswd").show();

    break;

    case "prodotto_nel_carrello":

 //   alert("sdk");

      $("#prodotto_inserito").show();

      $("#messaggio").hide();

      $("#loggati").hide();

      $("#registrati").hide();

            $("#mod_dati_box").hide();

      $("#paga").hide();

      $("#recupera_pswd").hide();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');

    break;

    case "mod_dati_user":

      $("#mod_dati_box").show();

      $("#prodotto_inserito").hide();

      $("#messaggio").hide();

      $("#loggati").hide();

      $("#registrati").hide();

      $("#paga").hide();

      $("#recupera_pswd").hide();

      $("#dialog").dialog('open');

      $("#dialog").dialog('moveToTop');

    break;

  }

}







////////////// OLD //////////////////////



/*



    $(".singola_regione").click(function () {

       

       var id_regione = $(this).attr("name");

       $.post("./inc/ajax_parser.php", {operazione : "load_province" , id_regione : id_regione}, function(data){

       presenta("province", data);         

        

        $(".singola_provincia").click(function () {         

          

          var id_provincia = $(this).attr("name");

          $.post("./inc/ajax_parser.php", {operazione : "load_comuni" , id_provincia : id_provincia}, function(data){      

          presenta("comuni", data); 

           

            $(".singolo_comune").click(function () {

            

              var id_comune = $(this).attr("name");

              $.post("./inc/ajax_parser.php", {operazione : "load_campi" , id_comune : id_comune}, function(data){

              presenta("campi", data);

              

                $(".singolo_campo").click(function () {

            

                  var id_campo = $(this).attr("name");

                  $.post("./inc/ajax_parser.php", {operazione : "load_dettaglio_campo" , id_campo : id_campo}, function(data){

                  presenta("campo", data);                  

                   

                    // bisognerÃ  attivare quando IW BANK risponde

                    // cambiare il calendario

                    $(".ora > a").click(function () {

                       var id_prenotazione = $(this).parent().attr("name");

                       if(bottoni_carr == false)svuota_carrello();

                       

                       $("#carrello_lista_prod").append("<div id="+id_prenotazione+">ora id. "+id_prenotazione+"</div>");

                       

                       $("#svuota_carrello").click(function () {

                        bottoni_carr = true;

                        svuota_carrello();

                       });

                       

                       add_carrello(id_prenotazione);



                       $("#paga_carrello").click(function () {

                       if(flag){

                        $.post("./inc/ajax_parser.php", { operazione  : "paga_carrello", id_user: 1}, function(data){

                          //window.location = "iw_response.php?resp=ok&id_user="+data.id_user+"&id_carrello="+data.id_carrello+"&id_campo="+id_campo;

                          window.open.self(parsa(data.urlIW));    

                          //alert(parsa(data.urlIW));

                          }, "json");

                       flag = false;

                      }  

                       

                    });



                  });                   

                });            

              });                

            });            

          });          

        }); 

      });                

    }); 

  }); 

  

  function svuota_carrello(){

  $.cookie("ordine", null);

  

  if(bottoni_carr == false ){

    $("#carrello").append("<div id='carrello_bottoni'><span id='svuota_carrello'><a href='#'>svuota</a></span>&nbsp;"+

                                                                        "<span id='paga_carrello'><a href='#'>paga</a></span></div>");

    bottoni_carr = true;

  }

  else{

    $("#carrello_lista_prod").empty();

    $("#carrello_bottoni").remove();

    bottoni_carr = false;

  }

}







function presenta(nome, data){

  switch(nome){

    case 'province' :

      $("#cont_prov").empty();

      $("#cont_comuni").empty();

      $("#cont_lista_campi").empty();

      $("#cont_campo").empty();

      $("#gallery").hide();

      $("#cont_prov").append(data);



 

    break;

    case 'comuni' :



      $("#cont_comuni").empty();

      $("#cont_lista_campi").empty();

      $("#cont_campo").empty();

     $("#gallery").hide();

      $("#cont_comuni").append(data);



    break;

    

    case 'campi' :



      $("#cont_lista_campi").empty();

      $("#cont_campo").empty();

      $("#gallery").hide();

      $("#cont_lista_campi").append(data);



    break;

    

    case 'campo' :

      $("#cont_campo").empty();

      $("#cont_campo").append(data);

      $("#gallery").show();

    break;

  }

}

  */


<!--
function SetToFirstControl()
{
  var bFound = false;  

  //for each form
  for (f=0; f < document.forms.length; f++) 
  { 
    //for each element in each form
    for(i=0; i < document.forms[f].length; i++) 
    { 
      //if it's not a hidden element
      if (document.forms[f][i].type != "hidden") 
      { 
        //and it's not disabled
        if (document.forms[f][i].disabled != true) 
        {
          try {
             //set the focus to it
             document.forms[f][i].focus();
             var bFound = true;
          }
          catch(er) {
          }
        }
      }
      //if found in this element, stop looking
      if (bFound == true)
        break;
    }
    //if found in this form, stop looking
    if (bFound == true)
      break;
  }
}
SetToFirstControl();
//-->

 		$(document).ready(function(){
				
				
				$(".lg").colorbox({width:"510px", inline:true, href:"#inline_example1"});
			  
			
				$("#click").click(function(){ 
					$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
					return false;
				});
			});
		
		
		
		$(document).ready(function(){
				
				  $(".elimina_acq").click(function (){

      

    //  alert($(this).attr('name'));

      

      $("tr[name="+$(this).attr('name')+"]").hide('slow');

      

      

      var prezzo_prod = $(".tot_prod[name="+$(this).attr('name')+"]").text().replace("," , "."); 
	 
	  var prezzo_prod_acconto = $(".tot_prod_acconto[name="+$(this).attr('name')+"]").text().replace("," , ".");  
 
      var prezzo_tot  = $("#importo_pagamento").text().replace("," , ".");      
	  
	  var acconto  = $("#importo_totale").text().replace("," , ".");    
 
      

     // alert(prezzo_prod +" "+prezzo_tot);

      

      $.cookie("prodotto_"+$(this).attr('name'), "", options);

      

      $.post("./inc/ajax_parser.php", { operazione  : "libera_disp", id_disp: $(this).attr('name')}, function(data){});

      

     //alert($.cookie("prodotto_"+$(this).attr('name')+""))

      

      $.cookie("totale_iw", "");

      $.cookie("totale_iw", Number(prezzo_tot - prezzo_prod).toFixed(2));

     // alert($.cookie("totale_iw"))

      

      var prezzo_finale = String(Number(prezzo_tot - prezzo_prod).toFixed(2)).replace("." , ",");

  var prezzo_finale_acconto = String(Number(acconto - prezzo_prod_acconto).toFixed(2)).replace("." , ",");
      

      $("#importo_pagamento").empty();
	  
	  $("#importo_totale").empty();
      
	  $("#importo_pagamento").append(prezzo_finale);
	  
	  $("#importo_totale").append(prezzo_finale_acconto);

     // alert($("#cont_riep").find(".elimina_acq").length);

     $("tr[name="+$(this).attr('name')+"]").empty();

      if( $("#cont_riep").find(".elimina_acq").length > 0 ){

        $("#chiudi-acquisto").show();

      }

      else{

       $("#chiudi-acquisto").hide();

      }



		  });
								   
});
		
		
	$(document).ready(function(){		

  $("#concludi_ordine").click(function (){

    

  //    $.cookie("ordine", null);

  //    $.cookie("totale", null);



      

     var prezzo_prod = $(".tot_prod[name="+$(this).attr('name')+"]").text().replace("," , ".");      

     var prezzo_tot  = $("#importo_totale").text().replace("," , ".");      

      

     $.cookie("totale_iw", null);

     $.cookie("totale_iw", Number(prezzo_tot - prezzo_prod).toFixed(2), options);

      

     $.post("./inc/ajax_parser.php", { operazione  : "paga_carrello", 
									   nc  : $("#nc").val(),
                                       id_user     : $.cookie("id_user")}, function(data){

                                     

           window.location = parsa(data.urlIW);

          

      }, "json");

      
   });
});
	
	/*
 * 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);

$('#acconto').tooltip({ 
    track: true, 
    delay: 0, 
    showURL: false, 
    showBody: " - ", 
    fade: 250 
});

function appari_notifica(messaggio) {
var timeout = setTimeout('scompari_notifica()',5000);
var message_span = $(document.createElement('span')).addClass('jbar-content').html(messaggio);
wrap_bar	  = $(document.createElement('div')).addClass('jbar jbar-top') ;
wrap_bar.append(message_span).slideDown('fast').insertAfter($('body'));
}
var timeout;
function scompari_notifica() {
		if($('.jbar').length){
			clearTimeout(timeout);
			$('.jbar').slideUp('fast',function(){
				$(this).remove();
			});
		}	

}
	
