



/* start jquery */

/*
 * jQuery JavaScript Library v1.3.1
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009)
 * Revision: 6158
 */
(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.makeArray(E))},selector:"",jquery:"1.3.1",size:function(){return this.length},get:function(E){return E===g?o.makeArray(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,find:function(E){if(this.length===1&&!/,/.test(E)){var G=this.pushStack([],"find",E);G.length=0;o.find(E,this[0],G);return G}else{var F=o.map(this,function(H){return o.find(E,H)});return this.pushStack(/[^+>] [^+>]/.test(E)?o.unique(F):F,"find",E)}},clone:function(F){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.cloneNode(true),H=document.createElement("div");H.appendChild(I);return o.clean([H.innerHTML])[0]}else{return this.cloneNode(true)}});var G=E.find("*").andSelf().each(function(){if(this[h]!==g){this[h]=null}});if(F===true){this.find("*").andSelf().each(-function(I){if(this.nodeType==3){return}var H=o.data(this,"events");for(var K in H){for(var J in H[K]){o.event.add(G[I],K,H[K][J],H[K][J].data)}}})}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 F=o.expr.match.POS.test(E)?o(E):null;return this.map(function(){var G=this;while(G&&G.ownerDocument){if(F?F.index(G)>-1:o(G).is(E)){return G}G=G.parentNode}})},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: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(K,N,M){if(this[0]){var J=(this[0].ownerDocument||this[0]).createDocumentFragment(),G=o.clean(K,(this[0].ownerDocument||this[0]),J),I=J.firstChild,E=this.length>1?J.cloneNode(true):J;if(I){for(var H=0,F=this.length;H<F;H++){M.call(L(this[H],I),H>0?E.cloneNode(true):J)}}if(G){o.each(G,z)}}return this;function L(O,P){return N&&o.nodeName(O,"table")&&o.nodeName(P,"tr")?(O.getElementsByTagName("tbody")[0]||O.appendChild(O.ownerDocument.createElement("tbody"))):O}}};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){G=o.trim(G);if(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(G,E,I){if(E=="width"||E=="height"){var K,F={position:"absolute",visibility:"hidden",display:"block"},J=E=="width"?["Left","Right"]:["Top","Bottom"];function H(){K=E=="width"?G.offsetWidth:G.offsetHeight;var M=0,L=0;o.each(J,function(){M+=parseFloat(o.curCSS(G,"padding"+this,true))||0;L+=parseFloat(o.curCSS(G,"border"+this+"Width",true))||0});K-=Math.round(M+L)}if(o(G).is(":visible")){H()}else{o.swap(G,F,H)}return Math.max(0,K)}return o.curCSS(G,E,I)},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,R){if(typeof R==="number"){R+=""}if(!R){return}if(typeof R==="string"){R=R.replace(/(<(\w+)[^>]*?)\/>/g,function(T,U,S){return S.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?T:U+"></"+S+">"});var O=o.trim(R).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]+R+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var N=!O.indexOf("<table")&&O.indexOf("<tbody")<0?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&O.indexOf("<tbody")<0?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(R)){L.insertBefore(K.createTextNode(R.match(/^\s*/)[0]),L.firstChild)}R=o.makeArray(L.childNodes)}if(R.nodeType){G.push(R)}else{G=o.merge(G,R)}});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(){var G=arguments;return this.each(function(){for(var H=0,I=G.length;H<I;H++){o(G[H])[F](this)}})}});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).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 Q=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,K=0,G=Object.prototype.toString;var F=function(X,T,aa,ab){aa=aa||[];T=T||document;if(T.nodeType!==1&&T.nodeType!==9){return[]}if(!X||typeof X!=="string"){return aa}var Y=[],V,ae,ah,S,ac,U,W=true;Q.lastIndex=0;while((V=Q.exec(X))!==null){Y.push(V[1]);if(V[2]){U=RegExp.rightContext;break}}if(Y.length>1&&L.exec(X)){if(Y.length===2&&H.relative[Y[0]]){ae=I(Y[0]+Y[1],T)}else{ae=H.relative[Y[0]]?[T]:F(Y.shift(),T);while(Y.length){X=Y.shift();if(H.relative[X]){X+=Y.shift()}ae=I(X,ae)}}}else{var ad=ab?{expr:Y.pop(),set:E(ab)}:F.find(Y.pop(),Y.length===1&&T.parentNode?T.parentNode:T,P(T));ae=F.filter(ad.expr,ad.set);if(Y.length>0){ah=E(ae)}else{W=false}while(Y.length){var ag=Y.pop(),af=ag;if(!H.relative[ag]){ag=""}else{af=Y.pop()}if(af==null){af=T}H.relative[ag](ah,af,P(T))}}if(!ah){ah=ae}if(!ah){throw"Syntax error, unrecognized expression: "+(ag||X)}if(G.call(ah)==="[object Array]"){if(!W){aa.push.apply(aa,ah)}else{if(T.nodeType===1){for(var Z=0;ah[Z]!=null;Z++){if(ah[Z]&&(ah[Z]===true||ah[Z].nodeType===1&&J(T,ah[Z]))){aa.push(ae[Z])}}}else{for(var Z=0;ah[Z]!=null;Z++){if(ah[Z]&&ah[Z].nodeType===1){aa.push(ae[Z])}}}}}else{E(ah,aa)}if(U){F(U,T,aa,ab)}return aa};F.matches=function(S,T){return F(S,null,null,T)};F.find=function(Z,S,aa){var Y,W;if(!Z){return[]}for(var V=0,U=H.order.length;V<U;V++){var X=H.order[V],W;if((W=H.match[X].exec(Z))){var T=RegExp.leftContext;if(T.substr(T.length-1)!=="\\"){W[1]=(W[1]||"").replace(/\\/g,"");Y=H.find[X](W,S,aa);if(Y!=null){Z=Z.replace(H.match[X],"");break}}}}if(!Y){Y=S.getElementsByTagName("*")}return{set:Y,expr:Z}};F.filter=function(ab,aa,ae,V){var U=ab,ag=[],Y=aa,X,S;while(ab&&aa.length){for(var Z in H.filter){if((X=H.match[Z].exec(ab))!=null){var T=H.filter[Z],af,ad;S=false;if(Y==ag){ag=[]}if(H.preFilter[Z]){X=H.preFilter[Z](X,Y,ae,ag,V);if(!X){S=af=true}else{if(X===true){continue}}}if(X){for(var W=0;(ad=Y[W])!=null;W++){if(ad){af=T(ad,X,W,Y);var ac=V^!!af;if(ae&&af!=null){if(ac){S=true}else{Y[W]=false}}else{if(ac){ag.push(ad);S=true}}}}}if(af!==g){if(!ae){Y=ag}ab=ab.replace(H.match[Z],"");if(!S){return[]}break}}}ab=ab.replace(/\s*,\s*/,"");if(ab==U){if(S==null){throw"Syntax error, unrecognized expression: "+ab}else{break}}U=ab}return Y};var H=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(S){return S.getAttribute("href")}},relative:{"+":function(W,T){for(var U=0,S=W.length;U<S;U++){var V=W[U];if(V){var X=V.previousSibling;while(X&&X.nodeType!==1){X=X.previousSibling}W[U]=typeof T==="string"?X||false:X===T}}if(typeof T==="string"){F.filter(T,W,true)}},">":function(X,T,Y){if(typeof T==="string"&&!/\W/.test(T)){T=Y?T:T.toUpperCase();for(var U=0,S=X.length;U<S;U++){var W=X[U];if(W){var V=W.parentNode;X[U]=V.nodeName===T?V:false}}}else{for(var U=0,S=X.length;U<S;U++){var W=X[U];if(W){X[U]=typeof T==="string"?W.parentNode:W.parentNode===T}}if(typeof T==="string"){F.filter(T,X,true)}}},"":function(V,T,X){var U="done"+(K++),S=R;if(!T.match(/\W/)){var W=T=X?T:T.toUpperCase();S=O}S("parentNode",T,U,V,W,X)},"~":function(V,T,X){var U="done"+(K++),S=R;if(typeof T==="string"&&!T.match(/\W/)){var W=T=X?T:T.toUpperCase();S=O}S("previousSibling",T,U,V,W,X)}},find:{ID:function(T,U,V){if(typeof U.getElementById!=="undefined"&&!V){var S=U.getElementById(T[1]);return S?[S]:[]}},NAME:function(S,T,U){if(typeof T.getElementsByName!=="undefined"&&!U){return T.getElementsByName(S[1])}},TAG:function(S,T){return T.getElementsByTagName(S[1])}},preFilter:{CLASS:function(V,T,U,S,Y){V=" "+V[1].replace(/\\/g,"")+" ";var X;for(var W=0;(X=T[W])!=null;W++){if(X){if(Y^(" "+X.className+" ").indexOf(V)>=0){if(!U){S.push(X)}}else{if(U){T[W]=false}}}}return false},ID:function(S){return S[1].replace(/\\/g,"")},TAG:function(T,S){for(var U=0;S[U]===false;U++){}return S[U]&&P(S[U])?T[1]:T[1].toUpperCase()},CHILD:function(S){if(S[1]=="nth"){var T=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(S[2]=="even"&&"2n"||S[2]=="odd"&&"2n+1"||!/\D/.test(S[2])&&"0n+"+S[2]||S[2]);S[2]=(T[1]+(T[2]||1))-0;S[3]=T[3]-0}S[0]="done"+(K++);return S},ATTR:function(T){var S=T[1].replace(/\\/g,"");if(H.attrMap[S]){T[1]=H.attrMap[S]}if(T[2]==="~="){T[4]=" "+T[4]+" "}return T},PSEUDO:function(W,T,U,S,X){if(W[1]==="not"){if(W[3].match(Q).length>1){W[3]=F(W[3],null,null,T)}else{var V=F.filter(W[3],T,U,true^X);if(!U){S.push.apply(S,V)}return false}}else{if(H.match.POS.test(W[0])){return true}}return W},POS:function(S){S.unshift(true);return S}},filters:{enabled:function(S){return S.disabled===false&&S.type!=="hidden"},disabled:function(S){return S.disabled===true},checked:function(S){return S.checked===true},selected:function(S){S.parentNode.selectedIndex;return S.selected===true},parent:function(S){return !!S.firstChild},empty:function(S){return !S.firstChild},has:function(U,T,S){return !!F(S[3],U).length},header:function(S){return/h\d/i.test(S.nodeName)},text:function(S){return"text"===S.type},radio:function(S){return"radio"===S.type},checkbox:function(S){return"checkbox"===S.type},file:function(S){return"file"===S.type},password:function(S){return"password"===S.type},submit:function(S){return"submit"===S.type},image:function(S){return"image"===S.type},reset:function(S){return"reset"===S.type},button:function(S){return"button"===S.type||S.nodeName.toUpperCase()==="BUTTON"},input:function(S){return/input|select|textarea|button/i.test(S.nodeName)}},setFilters:{first:function(T,S){return S===0},last:function(U,T,S,V){return T===V.length-1},even:function(T,S){return S%2===0},odd:function(T,S){return S%2===1},lt:function(U,T,S){return T<S[3]-0},gt:function(U,T,S){return T>S[3]-0},nth:function(U,T,S){return S[3]-0==T},eq:function(U,T,S){return S[3]-0==T}},filter:{CHILD:function(S,V){var Y=V[1],Z=S.parentNode;var X=V[0];if(Z&&(!Z[X]||!S.nodeIndex)){var W=1;for(var T=Z.firstChild;T;T=T.nextSibling){if(T.nodeType==1){T.nodeIndex=W++}}Z[X]=W-1}if(Y=="first"){return S.nodeIndex==1}else{if(Y=="last"){return S.nodeIndex==Z[X]}else{if(Y=="only"){return Z[X]==1}else{if(Y=="nth"){var ab=false,U=V[2],aa=V[3];if(U==1&&aa==0){return true}if(U==0){if(S.nodeIndex==aa){ab=true}}else{if((S.nodeIndex-aa)%U==0&&(S.nodeIndex-aa)/U>=0){ab=true}}return ab}}}}},PSEUDO:function(Y,U,V,Z){var T=U[1],W=H.filters[T];if(W){return W(Y,V,U,Z)}else{if(T==="contains"){return(Y.textContent||Y.innerText||"").indexOf(U[3])>=0}else{if(T==="not"){var X=U[3];for(var V=0,S=X.length;V<S;V++){if(X[V]===Y){return false}}return true}}}},ID:function(T,S){return T.nodeType===1&&T.getAttribute("id")===S},TAG:function(T,S){return(S==="*"&&T.nodeType===1)||T.nodeName===S},CLASS:function(T,S){return S.test(T.className)},ATTR:function(W,U){var S=H.attrHandle[U[1]]?H.attrHandle[U[1]](W):W[U[1]]||W.getAttribute(U[1]),X=S+"",V=U[2],T=U[4];return S==null?V==="!=":V==="="?X===T:V==="*="?X.indexOf(T)>=0:V==="~="?(" "+X+" ").indexOf(T)>=0:!U[4]?S:V==="!="?X!=T:V==="^="?X.indexOf(T)===0:V==="$="?X.substr(X.length-T.length)===T:V==="|="?X===T||X.substr(0,T.length+1)===T+"-":false},POS:function(W,T,U,X){var S=T[2],V=H.setFilters[S];if(V){return V(W,U,T,X)}}}};var L=H.match.POS;for(var N in H.match){H.match[N]=RegExp(H.match[N].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(T,S){T=Array.prototype.slice.call(T);if(S){S.push.apply(S,T);return S}return T};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(M){E=function(W,V){var T=V||[];if(G.call(W)==="[object Array]"){Array.prototype.push.apply(T,W)}else{if(typeof W.length==="number"){for(var U=0,S=W.length;U<S;U++){T.push(W[U])}}else{for(var U=0;W[U];U++){T.push(W[U])}}}return T}}(function(){var T=document.createElement("form"),U="script"+(new Date).getTime();T.innerHTML="<input name='"+U+"'/>";var S=document.documentElement;S.insertBefore(T,S.firstChild);if(!!document.getElementById(U)){H.find.ID=function(W,X,Y){if(typeof X.getElementById!=="undefined"&&!Y){var V=X.getElementById(W[1]);return V?V.id===W[1]||typeof V.getAttributeNode!=="undefined"&&V.getAttributeNode("id").nodeValue===W[1]?[V]:g:[]}};H.filter.ID=function(X,V){var W=typeof X.getAttributeNode!=="undefined"&&X.getAttributeNode("id");return X.nodeType===1&&W&&W.nodeValue===V}}S.removeChild(T)})();(function(){var S=document.createElement("div");S.appendChild(document.createComment(""));if(S.getElementsByTagName("*").length>0){H.find.TAG=function(T,X){var W=X.getElementsByTagName(T[1]);if(T[1]==="*"){var V=[];for(var U=0;W[U];U++){if(W[U].nodeType===1){V.push(W[U])}}W=V}return W}}S.innerHTML="<a href='#'></a>";if(S.firstChild&&S.firstChild.getAttribute("href")!=="#"){H.attrHandle.href=function(T){return T.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var S=F,T=document.createElement("div");T.innerHTML="<p class='TEST'></p>";if(T.querySelectorAll&&T.querySelectorAll(".TEST").length===0){return}F=function(X,W,U,V){W=W||document;if(!V&&W.nodeType===9&&!P(W)){try{return E(W.querySelectorAll(X),U)}catch(Y){}}return S(X,W,U,V)};F.find=S.find;F.filter=S.filter;F.selectors=S.selectors;F.matches=S.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){H.order.splice(1,0,"CLASS");H.find.CLASS=function(S,T){return T.getElementsByClassName(S[1])}}function O(T,Z,Y,ac,aa,ab){for(var W=0,U=ac.length;W<U;W++){var S=ac[W];if(S){S=S[T];var X=false;while(S&&S.nodeType){var V=S[Y];if(V){X=ac[V];break}if(S.nodeType===1&&!ab){S[Y]=W}if(S.nodeName===Z){X=S;break}S=S[T]}ac[W]=X}}}function R(T,Y,X,ab,Z,aa){for(var V=0,U=ab.length;V<U;V++){var S=ab[V];if(S){S=S[T];var W=false;while(S&&S.nodeType){if(S[X]){W=ab[S[X]];break}if(S.nodeType===1){if(!aa){S[X]=V}if(typeof Y!=="string"){if(S===Y){W=true;break}}else{if(F.filter(Y,[S]).length>0){W=S;break}}}S=S[T]}ab[V]=W}}}var J=document.compareDocumentPosition?function(T,S){return T.compareDocumentPosition(S)&16}:function(T,S){return T!==S&&(T.contains?T.contains(S):true)};var P=function(S){return S.nodeType===9&&S.documentElement.nodeName!=="HTML"||!!S.ownerDocument&&P(S.ownerDocument)};var I=function(S,Z){var V=[],W="",X,U=Z.nodeType?[Z]:Z;while((X=H.match.PSEUDO.exec(S))){W+=X[0];S=S.replace(H.match.PSEUDO,"")}S=H.relative[S]?S+"*":S;for(var Y=0,T=U.length;Y<T;Y++){F(S,U[Y],V)}return F.filter(W,V)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(S){return"hidden"===S.type||o.css(S,"display")==="none"||o.css(S,"visibility")==="hidden"};F.selectors.filters.visible=function(S){return"hidden"!==S.type&&o.css(S,"display")!=="none"&&o.css(S,"visibility")!=="hidden"};F.selectors.filters.animated=function(S){return o.grep(o.timers,function(T){return S===T.elem}).length};o.multiFilter=function(U,S,T){if(T){U=":not("+U+")"}return F.matches(U,S)};o.dir=function(U,T){var S=[],V=U[T];while(V&&V!=document){if(V.nodeType==1){S.push(V)}V=V[T]}return S};o.nth=function(W,S,U,V){S=S||1;var T=0;for(;W;W=W[U]){if(W.nodeType==1&&++T==S){break}}return W};o.sibling=function(U,T){var S=[];for(;U;U=U.nextSibling){if(U.nodeType==1&&U!=T){S.push(U)}}return S};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);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})}}});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){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&&typeof l.frameElement==="undefined"){(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="1px";L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L)})})();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/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();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}this[H].style.display=o.data(this[H],"olddisplay",K)}}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"))}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)==1){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)}},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(H,F){var E=H?"Left":"Top",G=H?"Right":"Bottom";o.fn["inner"+F]=function(){return this[F.toLowerCase()]()+j(this,"padding"+E)+j(this,"padding"+G)};o.fn["outer"+F]=function(J){return this["inner"+F]()+j(this,"border"+E+"Width")+j(this,"border"+G+"Width")+(J?j(this,"margin"+E)+j(this,"margin"+G):0)};var I=F.toLowerCase();o.fn[I]=function(J){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+F]||document.body["client"+F]:this[0]==document?Math.max(document.documentElement["client"+F],document.body["scroll"+F],document.documentElement["scroll"+F],document.body["offset"+F],document.documentElement["offset"+F]):J===g?(this.length?o.css(this[0],I):null):this.css(I,typeof J==="string"?J:J+"px")}})})();

/* end jquery */

/* start jquery scrollto */

;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);




/* start jquery.json */


(function($){function toIntegersAtLease(n)
{return n<10?'0'+n:n;}
Date.prototype.toJSON=function(date)
{return this.getUTCFullYear()+'-'+
toIntegersAtLease(this.getUTCMonth())+'-'+
toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
{if(escapeable.test(string))
{return'"'+string.replace(escapeable,function(a)
{var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};$.toJSON=function(o,compact)
{var type=typeof(o);if(type=="undefined")
return"undefined";else if(type=="number"||type=="boolean")
return o+"";else if(o===null)
return"null";if(type=="string")
{return $.quoteString(o);}
if(type=="object"&&typeof o.toJSON=="function")
return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
if(compact)
return"["+ret.join(",")+"]";else
return"["+ret.join(", ")+"]";}
if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
if(compact)
ret.push(name+":"+val);else
ret.push(name+": "+val);}
return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
{return $.toJSON(o,true);};$.evalJSON=function(src)
{return eval("("+src+")");};$.secureEvalJSON=function(src)
{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);
/* END JQUERY.JSON */

/* jquery preload images - my tweak */






/* START JQUERY.IMPROMPTU */

/*

 * jQuery Impromptu

 * By: Trent Richardson [http://trentrichardson.com]

 * Version 2.5

 * Last Modified: 3/30/2009

 * 

 * Copyright 2009 Trent Richardson

 * Dual licensed under the MIT and GPL licenses.

 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt

 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt

 * 

 */

(function($){$.prompt=function(message,options){if($.browser.msie){$('body').scrollTo('0px');}options=$.extend({},$.prompt.defaults,options);$.prompt.currentPrefix=options.prefix;var ie6=($.browser.msie&&$.browser.version<7);var $body=$(document.body);var $window=$(window);var msgbox='<div class="'+options.prefix+'box" id="'+options.prefix+'box">';if(options.useiframe&&(($('object, applet').length>0)||ie6)){msgbox+='<iframe src="javascript:;" class="'+options.prefix+'fade" id="'+options.prefix+'fade"></iframe>';}else{if(ie6){$('select').css('visibility','hidden');}msgbox+='<div class="'+options.prefix+'fade" id="'+options.prefix+'fade"></div>';}msgbox+='<div class="'+options.prefix+'" id="'+options.prefix+'"><div class="'+options.prefix+'container"><div class="';msgbox+=options.prefix+'close">X</div><div id="'+options.prefix+'states"></div>';msgbox+='</div></div></div>';var $jqib=$(msgbox).appendTo($body);var $jqi=$jqib.children('#'+options.prefix);var $jqif=$jqib.children('#'+options.prefix+'fade');if(message.constructor==String){message={state0:{html:message,buttons:options.buttons,focus:options.focus,submit:options.submit}};}var states="";$.each(message,function(statename,stateobj){stateobj=$.extend({},$.prompt.defaults.state,stateobj);message[statename]=stateobj;states+='<div id="'+options.prefix+'_state_'+statename+'" class="'+options.prefix+'_state" style="display:none;"><div class="'+options.prefix+'message">'+stateobj.html+'</div><div class="'+options.prefix+'buttons">';$.each(stateobj.buttons,function(k,v){states+='<button name="'+options.prefix+'_'+statename+'_button'+k+'" id="'+options.prefix+'_'+statename+'_button'+k+'" value="'+v+'">'+k+'</button>';});states+='</div></div>';});$jqi.find('#'+options.prefix+'states').html(states).children('.'+options.prefix+'_state:first').css('display','block');$jqi.find('.'+options.prefix+'buttons:empty').css('display','none');$.each(message,function(statename,stateobj){var $state=$jqi.find('#'+options.prefix+'_state_'+statename);$state.children('.'+options.prefix+'buttons').children('button').click(function(){var msg=$state.children('.'+options.prefix+'message');var clicked=stateobj.buttons[$(this).text()];var forminputs={};$.each($jqi.find('#'+options.prefix+'states :input').serializeArray(),function(i,obj){if(forminputs[obj.name]===undefined){forminputs[obj.name]=obj.value;}else if(typeof forminputs[obj.name]==Array){forminputs[obj.name].push(obj.value);}else{forminputs[obj.name]=[forminputs[obj.name],obj.value];}});var close=stateobj.submit(clicked,msg,forminputs);if(close===undefined||close){removePrompt(true,clicked,msg,forminputs);}});$state.find('.'+options.prefix+'buttons button:eq('+stateobj.focus+')').addClass(options.prefix+'defaultbutton');});var ie6scroll=function(){$jqib.css({top:$window.scrollTop()});};var fadeClicked=function(){if(options.persistent){var i=0;$jqib.addClass(options.prefix+'warning');var intervalid=setInterval(function(){$jqib.toggleClass(options.prefix+'warning');if(i++>1){clearInterval(intervalid);$jqib.removeClass(options.prefix+'warning');}},100);}else{removePrompt();}};var escapeKeyClosePrompt=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27){removePrompt();}};var positionPrompt=function(){$jqib.css({position:(ie6)?"absolute":"fixed",height:$window.height(),width:"100%",top:(ie6)?$window.scrollTop():0,left:0,right:0,bottom:0});$jqif.css({position:"absolute",height:$window.height(),width:"100%",top:0,left:0,right:0,bottom:0});$jqi.css({position:"absolute",top:options.top,left:"50%",marginLeft:(($jqi.outerWidth()/2)*-1)});};var stylePrompt=function(){$jqif.css({zIndex:options.zIndex,display:"none",opacity:options.opacity});$jqi.css({zIndex:options.zIndex+1,display:"none"});$jqib.css({zIndex:options.zIndex});};var removePrompt=function(callCallback,clicked,msg,formvals){$jqi.remove();if(ie6){$body.unbind('scroll',ie6scroll);}$window.unbind('resize',positionPrompt);$jqif.fadeOut(options.overlayspeed,function(){$jqif.unbind('click',fadeClicked);$jqif.remove();if(callCallback){options.callback(clicked,msg,formvals);}$jqib.unbind('keypress',escapeKeyClosePrompt);$jqib.remove();if(ie6&&!options.useiframe){$('select').css('visibility','visible');}});};positionPrompt();stylePrompt();if(ie6){$window.scroll(ie6scroll);}$jqif.click(fadeClicked);$window.resize(positionPrompt);$jqib.keypress(escapeKeyClosePrompt);$jqi.find('.'+options.prefix+'close').click(removePrompt);$jqif.fadeIn(options.overlayspeed);$jqi[options.show](options.promptspeed,options.loaded);$jqi.find('#'+options.prefix+'states .'+options.prefix+'_state:first .'+options.prefix+'defaultbutton').focus();return $jqib;};$.prompt.defaults={prefix:'jqi',buttons:{Ok:true},loaded:function(){},submit:function(){return true;},callback:function(){},opacity:0.6,zIndex:999,overlayspeed:'slow',promptspeed:'fast',show:'fadeIn',focus:0,useiframe:false,top:"15%",persistent:true,state:{html:'',buttons:{Ok:true},focus:0,submit:function(){return true;}}};$.prompt.currentPrefix=$.prompt.defaults.prefix;$.prompt.setDefaults=function(o){$.prompt.defaults=$.extend({},$.prompt.defaults,o);};$.prompt.setStateDefaults=function(o){$.prompt.defaults.state=$.extend({},$.prompt.defaults.state,o);};$.prompt.getStateContent=function(state){return $('#'+$.prompt.currentPrefix+'_state_'+state);};$.prompt.goToState=function(state){$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$('#'+$.prompt.currentPrefix+'_state_'+state).slideDown('slow',function(){$(this).find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.nextState=function(){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').next();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.prevState=function(){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').prev();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.close=function(){$('#'+$.prompt.currentPrefix+'box').fadeOut('fast',function(){$(this).remove();});};})(jQuery);


/* END JQUERY.IMPROMPTU */

/* START UI.CORE */

/*
 * jQuery UI @VERSION
 *
 * 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: "@VERSION",

	// $.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],
		fullName;
	name = name.split(".")[1];
	fullName = namespace + '-' + name;

	// create selector for plugin
	$.expr[':'][fullName] = function(elem) {
		return !!$.data(elem, name);
	};
	
	// 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 = fullName;

		this.options = $.extend(true, {},
			$.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);

/* END UI.CORE */

/* START UI.SLIDER */

/*
 * jQuery UI Slider 1.7.1
 *
 * 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/Slider
 *
 * Depends:
 *	ui.core.js
 */

(function($) {

$.widget("ui.slider", $.extend({}, $.ui.mouse, {

	_init: function() {

		var self = this, o = this.options;
		this._keySliding = false;
		this._handleIndex = null;
		this._detectOrientation();
		this._mouseInit();

		this.element
			.addClass("ui-slider"
				+ " ui-slider-" + this.orientation
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all");

		this.range = $([]);

		if (o.range) {

			if (o.range === true) {
				this.range = $('<div></div>');
				if (!o.values) o.values = [this._valueMin(), this._valueMin()];
				if (o.values.length && o.values.length != 2) {
					o.values = [o.values[0], o.values[0]];
				}
			} else {
				this.range = $('<div></div>');
			}

			this.range
				.appendTo(this.element)
				.addClass("ui-slider-range");

			if (o.range == "min" || o.range == "max") {
				this.range.addClass("ui-slider-range-" + o.range);
			}

			// note: this isn't the most fittingly semantic framework class for this element,
			// but worked best visually with a variety of themes
			this.range.addClass("ui-widget-header");

		}

		if ($(".ui-slider-handle", this.element).length == 0)
			$('<a href="#"></a>')
				.appendTo(this.element)
				.addClass("ui-slider-handle");

		if (o.values && o.values.length) {
			while ($(".ui-slider-handle", this.element).length < o.values.length)
				$('<a href="#"></a>')
					.appendTo(this.element)
					.addClass("ui-slider-handle");
		}

		this.handles = $(".ui-slider-handle", this.element)
			.addClass("ui-state-default"
				+ " ui-corner-all");

		this.handle = this.handles.eq(0);

		this.handles.add(this.range).filter("a")
			.click(function(event) { event.preventDefault(); })
			.hover(function() { $(this).addClass('ui-state-hover'); }, function() { $(this).removeClass('ui-state-hover'); })
			.focus(function() { $(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus'); })
			.blur(function() { $(this).removeClass('ui-state-focus'); });

		this.handles.each(function(i) {
			$(this).data("index.ui-slider-handle", i);
		});

		this.handles.keydown(function(event) {

			var ret = true;

			var index = $(this).data("index.ui-slider-handle");

			if (self.options.disabled)
				return;

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
				case $.ui.keyCode.END:
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					ret = false;
					if (!self._keySliding) {
						self._keySliding = true;
						$(this).addClass("ui-state-active");
						self._start(event, index);
					}
					break;
			}

			var curVal, newVal, step = self._step();
			if (self.options.values && self.options.values.length) {
				curVal = newVal = self.values(index);
			} else {
				curVal = newVal = self.value();
			}

			switch (event.keyCode) {
				case $.ui.keyCode.HOME:
					newVal = self._valueMin();
					break;
				case $.ui.keyCode.END:
					newVal = self._valueMax();
					break;
				case $.ui.keyCode.UP:
				case $.ui.keyCode.RIGHT:
					if(curVal == self._valueMax()) return;
					newVal = curVal + step;
					break;
				case $.ui.keyCode.DOWN:
				case $.ui.keyCode.LEFT:
					if(curVal == self._valueMin()) return;
					newVal = curVal - step;
					break;
			}

			self._slide(event, index, newVal);

			return ret;

		}).keyup(function(event) {

			var index = $(this).data("index.ui-slider-handle");

			if (self._keySliding) {
				self._stop(event, index);
				self._change(event, index);
				self._keySliding = false;
				$(this).removeClass("ui-state-active");
			}

		});

		this._refreshValue();

	},

	destroy: function() {

		this.handles.remove();
		this.range.remove();

		this.element
			.removeClass("ui-slider"
				+ " ui-slider-horizontal"
				+ " ui-slider-vertical"
				+ " ui-slider-disabled"
				+ " ui-widget"
				+ " ui-widget-content"
				+ " ui-corner-all")
			.removeData("slider")
			.unbind(".slider");

		this._mouseDestroy();

	},

	_mouseCapture: function(event) {

		var o = this.options;

		if (o.disabled)
			return false;

		this.elementSize = {
			width: this.element.outerWidth(),
			height: this.element.outerHeight()
		};
		this.elementOffset = this.element.offset();

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);

		var distance = this._valueMax() - this._valueMin() + 1, closestHandle;
		var self = this, index;
		this.handles.each(function(i) {
			var thisDistance = Math.abs(normValue - self.values(i));
			if (distance > thisDistance) {
				distance = thisDistance;
				closestHandle = $(this);
				index = i;
			}
		});

		// workaround for bug #3736 (if both handles of a range are at 0,
		// the first is always used as the one with least distance,
		// and moving it is obviously prevented by preventing negative ranges)
		if(o.range == true && this.values(1) == o.min) {
			closestHandle = $(this.handles[++index]);
		}

		this._start(event, index);

		self._handleIndex = index;

		closestHandle
			.addClass("ui-state-active")
			.focus();
		
		var offset = closestHandle.offset();
		var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle');
		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
			left: event.pageX - offset.left - (closestHandle.width() / 2),
			top: event.pageY - offset.top
				- (closestHandle.height() / 2)
				- (parseInt(closestHandle.css('borderTopWidth'),10) || 0)
				- (parseInt(closestHandle.css('borderBottomWidth'),10) || 0)
				+ (parseInt(closestHandle.css('marginTop'),10) || 0)
		};

		normValue = this._normValueFromMouse(position);
		this._slide(event, index, normValue);
		return true;

	},

	_mouseStart: function(event) {
		return true;
	},

	_mouseDrag: function(event) {

		var position = { x: event.pageX, y: event.pageY };
		var normValue = this._normValueFromMouse(position);
		
		this._slide(event, this._handleIndex, normValue);

		return false;

	},

	_mouseStop: function(event) {

		this.handles.removeClass("ui-state-active");
		this._stop(event, this._handleIndex);
		this._change(event, this._handleIndex);
		this._handleIndex = null;
		this._clickOffset = null;

		return false;

	},
	
	_detectOrientation: function() {
		this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal';
	},

	_normValueFromMouse: function(position) {

		var pixelTotal, pixelMouse;
		if ('horizontal' == this.orientation) {
			pixelTotal = this.elementSize.width;
			pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);
		} else {
			pixelTotal = this.elementSize.height;
			pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);
		}

		var percentMouse = (pixelMouse / pixelTotal);
		if (percentMouse > 1) percentMouse = 1;
		if (percentMouse < 0) percentMouse = 0;
		if ('vertical' == this.orientation)
			percentMouse = 1 - percentMouse;

		var valueTotal = this._valueMax() - this._valueMin(),
			valueMouse = percentMouse * valueTotal,
			valueMouseModStep = valueMouse % this.options.step,
			normValue = this._valueMin() + valueMouse - valueMouseModStep;

		if (valueMouseModStep > (this.options.step / 2))
			normValue += this.options.step;

		// Since JavaScript has problems with large floats, round
		// the final value to 5 digits after the decimal point (see #4124)
		return parseFloat(normValue.toFixed(5));

	},

	_start: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index)
			uiHash.values = this.values()
		}
		this._trigger("start", event, uiHash);
	},

	_slide: function(event, index, newVal) {

		var handle = this.handles[index];

		if (this.options.values && this.options.values.length) {

			var otherVal = this.values(index ? 0 : 1);

			if ((index == 0 && newVal >= otherVal) || (index == 1 && newVal <= otherVal))
				newVal = otherVal;

			if (newVal != this.values(index)) {
				var newValues = this.values();
				newValues[index] = newVal;
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal,
					values: newValues
				});
				var otherVal = this.values(index ? 0 : 1);
				if (allowed !== false) {
					this.values(index, newVal, ( event.type == 'mousedown' && this.options.animate ), true);
				}
			}

		} else {

			if (newVal != this.value()) {
				// A slide can be canceled by returning false from the slide callback
				var allowed = this._trigger("slide", event, {
					handle: this.handles[index],
					value: newVal
				});
				if (allowed !== false) {
					this._setData('value', newVal, ( event.type == 'mousedown' && this.options.animate ));
				}
					
			}

		}

	},

	_stop: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index)
			uiHash.values = this.values()
		}
		this._trigger("stop", event, uiHash);
	},

	_change: function(event, index) {
		var uiHash = {
			handle: this.handles[index],
			value: this.value()
		};
		if (this.options.values && this.options.values.length) {
			uiHash.value = this.values(index)
			uiHash.values = this.values()
		}
		this._trigger("change", event, uiHash);
	},

	value: function(newValue) {

		if (arguments.length) {
			this._setData("value", newValue);
			this._change(null, 0);
		}

		return this._value();

	},

	values: function(index, newValue, animated, noPropagation) {

		if (arguments.length > 1) {
			this.options.values[index] = newValue;
			this._refreshValue(animated);
			if(!noPropagation) this._change(null, index);
		}

		if (arguments.length) {
			if (this.options.values && this.options.values.length) {
				return this._values(index);
			} else {
				return this.value();
			}
		} else {
			return this._values();
		}

	},

	_setData: function(key, value, animated) {

		$.widget.prototype._setData.apply(this, arguments);

		switch (key) {
			case 'orientation':

				this._detectOrientation();
				
				this.element
					.removeClass("ui-slider-horizontal ui-slider-vertical")
					.addClass("ui-slider-" + this.orientation);
				this._refreshValue(animated);
				break;
			case 'value':
				this._refreshValue(animated);
				break;
		}

	},

	_step: function() {
		var step = this.options.step;
		return step;
	},

	_value: function() {

		var val = this.options.value;
		if (val < this._valueMin()) val = this._valueMin();
		if (val > this._valueMax()) val = this._valueMax();

		return val;

	},

	_values: function(index) {

		if (arguments.length) {
			var val = this.options.values[index];
			if (val < this._valueMin()) val = this._valueMin();
			if (val > this._valueMax()) val = this._valueMax();

			return val;
		} else {
			return this.options.values;
		}

	},

	_valueMin: function() {
		var valueMin = this.options.min;
		return valueMin;
	},

	_valueMax: function() {
		var valueMax = this.options.max;
		return valueMax;
	},

	_refreshValue: function(animate) {

		var oRange = this.options.range, o = this.options, self = this;

		if (this.options.values && this.options.values.length) {
			var vp0, vp1;
			this.handles.each(function(i, j) {
				var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100;
				var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
				$(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);
				if (self.options.range === true) {
					if (self.orientation == 'horizontal') {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					} else {
						(i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate);
						(i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate });
					}
				}
				lastValPercent = valPercent;
			});
		} else {
			var value = this.value(),
				valueMin = this._valueMin(),
				valueMax = this._valueMax(),
				valPercent = valueMax != valueMin
					? (value - valueMin) / (valueMax - valueMin) * 100
					: 0;
			var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%';
			this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate);

			(oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
			(oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate);
			(oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate });
		}

	}
	
}));

$.extend($.ui.slider, {
	getter: "value values",
	version: "1.7.1",
	eventPrefix: "slide",
	defaults: {
		animate: false,
		delay: 0,
		distance: 0,
		max: 100,
		min: 0,
		orientation: 'horizontal',
		range: false,
		step: 1,
		value: 0,
		values: null
	}
});

})(jQuery);

/* END UI.SLIDER */

/* START JQUERY.JGROWL */

(function($){$.jGrowl=function(m,o){if($("#jGrowl").size()==0){$("<div id=\"jGrowl\"></div>").addClass($.jGrowl.defaults.position).appendTo("body");}
$("#jGrowl").jGrowl(m,o);};$.fn.jGrowl=function(m,o){if($.isFunction(this.each)){var _6=arguments;return this.each(function(){var _7=this;if($(this).data("jGrowl.instance")==undefined){$(this).data("jGrowl.instance",new $.fn.jGrowl());$(this).data("jGrowl.instance").startup(this);}
if($.isFunction($(this).data("jGrowl.instance")[m])){$(this).data("jGrowl.instance")[m].apply($(this).data("jGrowl.instance"),$.makeArray(_6).slice(1));}else{$(this).data("jGrowl.instance").notification(m,o);}});}};$.extend($.fn.jGrowl.prototype,{defaults:{header:"",sticky:false,position:"top-right",glue:"after",theme:"default",corners:"10px",check:500,life:3000,speed:"normal",easing:"swing",closer:true,closerTemplate:"<div>[ close all ]</div>",log:function(e,m,o){},beforeOpen:function(e,m,o){},open:function(e,m,o){},beforeClose:function(e,m,o){},close:function(e,m,o){},animateOpen:{opacity:"show"},animateClose:{opacity:"hide"}},element:null,interval:null,notification:function(_17,o){var _19=this;var o=$.extend({},this.defaults,o);o.log.apply(this.element,[this.element,_17,o]);var _1a=$("<div class=\"jGrowl-notification\"><div class=\"close\">&times;</div><div class=\"header\">"+o.header+"</div><div class=\"message\">"+_17+"</div></div>").data("jGrowl",o).addClass(o.theme).children("div.close").bind("click.jGrowl",function(){$(this).unbind("click.jGrowl").parent().trigger("jGrowl.beforeClose").animate(o.animateClose,o.speed,o.easing,function(){$(this).trigger("jGrowl.close").remove();});}).parent();(o.glue=="after")?$("div.jGrowl-notification:last",this.element).after(_1a):$("div.jGrowl-notification:first",this.element).before(_1a);$(_1a).bind("mouseover.jGrowl",function(){$(this).data("jGrowl").pause=true;}).bind("mouseout.jGrowl",function(){$(this).data("jGrowl").pause=false;}).bind("jGrowl.beforeOpen",function(){o.beforeOpen.apply(_19.element,[_19.element,_17,o]);}).bind("jGrowl.open",function(){o.open.apply(_19.element,[_19.element,_17,o]);}).bind("jGrowl.beforeClose",function(){o.beforeClose.apply(_19.element,[_19.element,_17,o]);}).bind("jGrowl.close",function(){o.close.apply(_19.element,[_19.element,_17,o]);}).trigger("jGrowl.beforeOpen").animate(o.animateOpen,o.speed,o.easing,function(){$(this).data("jGrowl").created=new Date();}).trigger("jGrowl.open");if($.fn.corner!=undefined){$(_1a).corner(o.corners);}
if($("div.jGrowl-notification:parent",this.element).size()>1&&$("div.jGrowl-closer",this.element).size()==0&&this.defaults.closer!=false){$(this.defaults.closerTemplate).addClass("jGrowl-closer").addClass(this.defaults.theme).appendTo(this.element).animate(this.defaults.animateOpen,this.defaults.speed,this.defaults.easing).bind("click.jGrowl",function(){$(this).siblings().children("div.close").trigger("click.jGrowl");if($.isFunction(_19.defaults.closer)){_19.defaults.closer.apply($(this).parent()[0],[$(this).parent()[0]]);}});}},update:function(){$(this.element).find("div.jGrowl-notification:parent").each(function(){if($(this).data("jGrowl")!=undefined&&$(this).data("jGrowl").created!=undefined&&($(this).data("jGrowl").created.getTime()+$(this).data("jGrowl").life)<(new Date()).getTime()&&$(this).data("jGrowl").sticky!=true&&($(this).data("jGrowl").pause==undefined||$(this).data("jGrowl").pause!=true)){$(this).children("div.close").trigger("click.jGrowl");}});if($(this.element).find("div.jGrowl-notification:parent").size()<2){$(this.element).find("div.jGrowl-closer").animate(this.defaults.animateClose,this.defaults.speed,this.defaults.easing,function(){$(this).remove();});}},startup:function(e){this.element=$(e).addClass("jGrowl").append("<div class=\"jGrowl-notification\"></div>");this.interval=setInterval(function(){jQuery(e).data("jGrowl.instance").update();},this.defaults.check);if($.browser.msie&&parseInt($.browser.version)<7){$(this.element).addClass("ie6");}},shutdown:function(){$(this.element).removeClass("jGrowl").find("div.jGrowl-notification").remove();clearInterval(this.interval);}});$.jGrowl.defaults=$.fn.jGrowl.prototype.defaults;})(jQuery);

/* END JQUERY.JGROWL */

/* START DATEPICKER */


/**

 *

 * Date picker

 * Author: Stefan Petre www.eyecon.ro

 * 

 */

(function ($) {

	var DatePicker = function () {

		var	ids = {},

			tpl = {

				wrapper: '<div class="datepicker"><div class="datepickerBorderT" /><div class="datepickerBorderB" /><div class="datepickerBorderL" /><div class="datepickerBorderR" /><div class="datepickerBorderTL" /><div class="datepickerBorderTR" /><div class="datepickerBorderBL" /><div class="datepickerBorderBR" /><div class="datepickerContainer"><table cellspacing="0" cellpadding="0"><tbody><tr></tr></tbody></table></div></div>',

				head: [

					'<td>',

					'<table cellspacing="0" cellpadding="0">',

						'<thead>',

							'<tr>',

								'<th class="datepickerGoPrev"><a href="#"><span><%=prev%></span></a></th>',

								'<th colspan="5" class="datepickerMonth"><a href="#"><span></span></a></th>',

								'<th class="datepickerGoNext"><a href="#"><span><%=next%></span></a></th>',

							'</tr>',

							'<tr class="datepickerDoW">',

			

								'<th><span><%=day1%></span></th>',

								'<th><span><%=day2%></span></th>',

								'<th><span><%=day3%></span></th>',

								'<th><span><%=day4%></span></th>',

								'<th><span><%=day5%></span></th>',

								'<th><span><%=day6%></span></th>',

								'<th><span><%=day7%></span></th>',

							'</tr>',

						'</thead>',

					'</table></td>'

				],

				space : '<td class="datepickerSpace"><div></div></td>',

				days: [

					'<tbody class="datepickerDays">',

						'<tr>',

							'<td class="<%=weeks[0].days[0].classname%>"><a href="#"><span><%=weeks[0].days[0].text%></span></a></td>',

							'<td class="<%=weeks[0].days[1].classname%>"><a href="#"><span><%=weeks[0].days[1].text%></span></a></td>',

							'<td class="<%=weeks[0].days[2].classname%>"><a href="#"><span><%=weeks[0].days[2].text%></span></a></td>',

							'<td class="<%=weeks[0].days[3].classname%>"><a href="#"><span><%=weeks[0].days[3].text%></span></a></td>',

							'<td class="<%=weeks[0].days[4].classname%>"><a href="#"><span><%=weeks[0].days[4].text%></span></a></td>',

							'<td class="<%=weeks[0].days[5].classname%>"><a href="#"><span><%=weeks[0].days[5].text%></span></a></td>',

							'<td class="<%=weeks[0].days[6].classname%>"><a href="#"><span><%=weeks[0].days[6].text%></span></a></td>',

						'</tr>',

						'<tr>',


							'<td class="<%=weeks[1].days[0].classname%>"><a href="#"><span><%=weeks[1].days[0].text%></span></a></td>',

							'<td class="<%=weeks[1].days[1].classname%>"><a href="#"><span><%=weeks[1].days[1].text%></span></a></td>',

							'<td class="<%=weeks[1].days[2].classname%>"><a href="#"><span><%=weeks[1].days[2].text%></span></a></td>',

							'<td class="<%=weeks[1].days[3].classname%>"><a href="#"><span><%=weeks[1].days[3].text%></span></a></td>',

							'<td class="<%=weeks[1].days[4].classname%>"><a href="#"><span><%=weeks[1].days[4].text%></span></a></td>',

							'<td class="<%=weeks[1].days[5].classname%>"><a href="#"><span><%=weeks[1].days[5].text%></span></a></td>',

							'<td class="<%=weeks[1].days[6].classname%>"><a href="#"><span><%=weeks[1].days[6].text%></span></a></td>',

						'</tr>',

						'<tr>',

							'<td class="<%=weeks[2].days[0].classname%>"><a href="#"><span><%=weeks[2].days[0].text%></span></a></td>',

							'<td class="<%=weeks[2].days[1].classname%>"><a href="#"><span><%=weeks[2].days[1].text%></span></a></td>',

							'<td class="<%=weeks[2].days[2].classname%>"><a href="#"><span><%=weeks[2].days[2].text%></span></a></td>',

							'<td class="<%=weeks[2].days[3].classname%>"><a href="#"><span><%=weeks[2].days[3].text%></span></a></td>',

							'<td class="<%=weeks[2].days[4].classname%>"><a href="#"><span><%=weeks[2].days[4].text%></span></a></td>',

							'<td class="<%=weeks[2].days[5].classname%>"><a href="#"><span><%=weeks[2].days[5].text%></span></a></td>',

							'<td class="<%=weeks[2].days[6].classname%>"><a href="#"><span><%=weeks[2].days[6].text%></span></a></td>',

						'</tr>',

						'<tr>',


							'<td class="<%=weeks[3].days[0].classname%>"><a href="#"><span><%=weeks[3].days[0].text%></span></a></td>',

							'<td class="<%=weeks[3].days[1].classname%>"><a href="#"><span><%=weeks[3].days[1].text%></span></a></td>',

							'<td class="<%=weeks[3].days[2].classname%>"><a href="#"><span><%=weeks[3].days[2].text%></span></a></td>',

							'<td class="<%=weeks[3].days[3].classname%>"><a href="#"><span><%=weeks[3].days[3].text%></span></a></td>',

							'<td class="<%=weeks[3].days[4].classname%>"><a href="#"><span><%=weeks[3].days[4].text%></span></a></td>',

							'<td class="<%=weeks[3].days[5].classname%>"><a href="#"><span><%=weeks[3].days[5].text%></span></a></td>',

							'<td class="<%=weeks[3].days[6].classname%>"><a href="#"><span><%=weeks[3].days[6].text%></span></a></td>',

						'</tr>',

						'<tr>',


							'<td class="<%=weeks[4].days[0].classname%>"><a href="#"><span><%=weeks[4].days[0].text%></span></a></td>',

							'<td class="<%=weeks[4].days[1].classname%>"><a href="#"><span><%=weeks[4].days[1].text%></span></a></td>',

							'<td class="<%=weeks[4].days[2].classname%>"><a href="#"><span><%=weeks[4].days[2].text%></span></a></td>',

							'<td class="<%=weeks[4].days[3].classname%>"><a href="#"><span><%=weeks[4].days[3].text%></span></a></td>',

							'<td class="<%=weeks[4].days[4].classname%>"><a href="#"><span><%=weeks[4].days[4].text%></span></a></td>',

							'<td class="<%=weeks[4].days[5].classname%>"><a href="#"><span><%=weeks[4].days[5].text%></span></a></td>',

							'<td class="<%=weeks[4].days[6].classname%>"><a href="#"><span><%=weeks[4].days[6].text%></span></a></td>',

						'</tr>',

						'<tr>',

					

							'<td class="<%=weeks[5].days[0].classname%>"><a href="#"><span><%=weeks[5].days[0].text%></span></a></td>',

							'<td class="<%=weeks[5].days[1].classname%>"><a href="#"><span><%=weeks[5].days[1].text%></span></a></td>',

							'<td class="<%=weeks[5].days[2].classname%>"><a href="#"><span><%=weeks[5].days[2].text%></span></a></td>',

							'<td class="<%=weeks[5].days[3].classname%>"><a href="#"><span><%=weeks[5].days[3].text%></span></a></td>',

							'<td class="<%=weeks[5].days[4].classname%>"><a href="#"><span><%=weeks[5].days[4].text%></span></a></td>',

							'<td class="<%=weeks[5].days[5].classname%>"><a href="#"><span><%=weeks[5].days[5].text%></span></a></td>',

							'<td class="<%=weeks[5].days[6].classname%>"><a href="#"><span><%=weeks[5].days[6].text%></span></a></td>',

						'</tr>',

					'</tbody>'

				],

				months: [

					'<tbody class="<%=className%>">',

						'<tr>',

							'<td colspan="1"><a href="#"><span><%=data[0]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[1]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[2]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[3]%></span></a></td>',

						'</tr>',

						'<tr>',

							'<td colspan="1"><a href="#"><span><%=data[4]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[5]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[6]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[7]%></span></a></td>',

						'</tr>',

						'<tr>',

							'<td colspan="1"><a href="#"><span><%=data[8]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[9]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[10]%></span></a></td>',

							'<td colspan="1"><a href="#"><span><%=data[11]%></span></a></td>',

						'</tr>',

					'</tbody>'

				]

			},

			defaults = {

				flat: false,

				starts: 1,

				//prev: '&#9664;',
				
				//next: '&#9654;',

				prev: '<<',
				next: '>>',
				
				lastSel: false,

				mode: 'single',

				calendars: 1,

				format: 'Y-m-d',

				position: 'bottom',

				eventName: 'click',

				onRender: function(){return {};},

				onChange: function(){return true;},

				onShow: function(){return true;},

				onBeforeShow: function(){return true;},

				onHide: function(){return true;},

				locale: {

					days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],

					daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],

					daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"],

					months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],

					monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],

					weekMin: 'wk'

				}

			},

			fill = function(el) {

				var options = $(el).data('datepicker');

				var cal = $(el);

				var currentCal = Math.floor(options.calendars/2), date, data, dow, month, cnt = 0, week, days, indic, indic2, html, tblCal;

				cal.find('td>table tbody').remove();

				for (var i = 0; i < options.calendars; i++) {

					date = new Date(options.current);

					date.addMonths(-currentCal + i);

					tblCal = cal.find('table').eq(i+1);

					switch (tblCal[0].className) {

						case 'datepickerViewDays':

							dow = formatDate(date, 'B, Y');

							break;

						case 'datepickerViewMonths':

							dow = date.getFullYear();

							break;

						case 'datepickerViewYears':

							dow = (date.getFullYear()-6) + ' - ' + (date.getFullYear()+5);

							break;

					} 

					tblCal.find('thead tr:first th:eq(1) span').text(dow);

					dow = date.getFullYear()-6;

					data = {

						data: [],

						className: 'datepickerYears'

					}

					for ( var j = 0; j < 12; j++) {

						data.data.push(dow + j);

					}

					html = tmpl(tpl.months.join(''), data);

					date.setDate(1);

					data = {weeks:[], test: 10};

					month = date.getMonth();

					var dow = (date.getDay() - options.starts) % 7;

					date.addDays(-(dow + (dow < 0 ? 7 : 0)));

					week = -1;

					cnt = 0;

					while (cnt < 42) {

						indic = parseInt(cnt/7,10);

						indic2 = cnt%7;

						if (!data.weeks[indic]) {

							week = date.getWeekNumber();

							data.weeks[indic] = {

								week: week,

								days: []

							};

						}

						data.weeks[indic].days[indic2] = {

							text: date.getDate(),

							classname: []

						};

						if (month != date.getMonth()) {

							data.weeks[indic].days[indic2].classname.push('datepickerNotInMonth');

						}

						if (date.getDay() == 0) {

							data.weeks[indic].days[indic2].classname.push('datepickerSunday');

						}

						if (date.getDay() == 6) {

							data.weeks[indic].days[indic2].classname.push('datepickerSaturday');

						}

						var fromUser = options.onRender(date);

						var val = date.valueOf();

						if (fromUser.selected || options.date == val || $.inArray(val, options.date) > -1 || (options.mode == 'range' && val >= options.date[0] && val <= options.date[1])) {

							data.weeks[indic].days[indic2].classname.push('datepickerSelected');

						}

						if (fromUser.disabled) {

							data.weeks[indic].days[indic2].classname.push('datepickerDisabled');

						}

						if (fromUser.className) {

							data.weeks[indic].days[indic2].classname.push(fromUser.className);

						}

						data.weeks[indic].days[indic2].classname = data.weeks[indic].days[indic2].classname.join(' ');

						cnt++;

						date.addDays(1);

					}

					html = tmpl(tpl.days.join(''), data) + html;

					data = {

						data: options.locale.monthsShort,

						className: 'datepickerMonths'

					};

					html = tmpl(tpl.months.join(''), data) + html;

					tblCal.append(html);

				}

			},

			parseDate = function (date, format) {

				if (date.constructor == Date) {

					return new Date(date);

				}

				var parts = date.split(/\W+/);

				var against = format.split(/\W+/), d, m, y, h, min, now = new Date();

				for (var i = 0; i < parts.length; i++) {

					switch (against[i]) {

						case 'd':

						case 'e':

							d = parseInt(parts[i],10);

							break;

						case 'm':

							m = parseInt(parts[i], 10) - 1;

							break;

						case 'Y':

						case 'y':

							y = parseInt(parts[i], 10);

							y += y > 100 ? 0 : (y < 29 ? 2000 : 1900);

							break;

						case 'H':

						case 'I':

						case 'k':

						case 'l':

							h = parseInt(parts[i], 10);

							break;

						case 'P':

						case 'p':

							if (/pm/i.test(parts[i]) && h < 12) {

								h += 12;

							} else if (/am/i.test(parts[i]) && h >= 12) {

								h -= 12;

							}

							break;

						case 'M':

							min = parseInt(parts[i], 10);

							break;

					}

				}

				
				if(isNaN(m)){m=now.getMonth()} //catches m if it's not a number, and feeds it the current month

				return new Date(

					y||now.getFullYear(),

					m,//now.getMonth(),

					d||now.getDate(),

					h||now.getHours(),

					min||now.getMinutes(),

					0

				);

			},

			formatDate = function(date, format) {

				var m = date.getMonth();

				var d = date.getDate();

				var y = date.getFullYear();

				var wn = date.getWeekNumber();

				var w = date.getDay();

				var s = {};

				var hr = date.getHours();

				var pm = (hr >= 12);

				var ir = (pm) ? (hr - 12) : hr;

				var dy = date.getDayOfYear();

				if (ir == 0) {

					ir = 12;

				}

				var min = date.getMinutes();

				var sec = date.getSeconds();

				var parts = format.split(''), part;

				for ( var i = 0; i < parts.length; i++ ) {

					part = parts[i];

					switch (parts[i]) {

						case 'a':

							part = date.getDayName();

							break;

						case 'A':

							part = date.getDayName(true);

							break;

						case 'b':

							part = date.getMonthName();

							break;

						case 'B':

							part = date.getMonthName(true);

							break;

						case 'C':

							part = 1 + Math.floor(y / 100);

							break;

						case 'd':

							part = (d < 10) ? ("0" + d) : d;

							break;

						case 'e':

							part = d;

							break;

						case 'H':

							part = (hr < 10) ? ("0" + hr) : hr;

							break;

						case 'I':

							part = (ir < 10) ? ("0" + ir) : ir;

							break;

						case 'j':

							part = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy;

							break;

						case 'k':

							part = hr;

							break;

						case 'l':

							part = ir;

							break;

						case 'm':

							part = (m < 9) ? ("0" + (1+m)) : (1+m);

							break;

						case 'M':

							part = (min < 10) ? ("0" + min) : min;

							break;

						case 'p':

						case 'P':

							part = pm ? "PM" : "AM";

							break;

						case 's':

							part = Math.floor(date.getTime() / 1000);

							break;

						case 'S':

							part = (sec < 10) ? ("0" + sec) : sec;

							break;

						case 'u':

							part = w + 1;

							break;

						case 'w':

							part = w;

							break;

						case 'y':

							part = ('' + y).substr(2, 2);

							break;

						case 'Y':

							part = y;

							break;

					}

					parts[i] = part;

				}

				return parts.join('');

			},

			extendDate = function(options) {

				if (Date.prototype.tempDate) {

					return;

				}

				Date.prototype.tempDate = null;

				Date.prototype.months = options.months;

				Date.prototype.monthsShort = options.monthsShort;

				Date.prototype.days = options.days;

				Date.prototype.daysShort = options.daysShort;

				Date.prototype.getMonthName = function(fullName) {

					return this[fullName ? 'months' : 'monthsShort'][this.getMonth()];

				};

				Date.prototype.getDayName = function(fullName) {

					return this[fullName ? 'days' : 'daysShort'][this.getDay()];

				};

				Date.prototype.addDays = function (n) {

					this.setDate(this.getDate() + n);

					this.tempDate = this.getDate();

				};

				Date.prototype.addMonths = function (n) {

					if (this.tempDate == null) {

						this.tempDate = this.getDate();

					}

					this.setDate(1);

					this.setMonth(this.getMonth() + n);

					this.setDate(Math.min(this.tempDate, this.getMaxDays()));

				};

				Date.prototype.addYears = function (n) {

					if (this.tempDate == null) {

						this.tempDate = this.getDate();

					}

					this.setDate(1);

					this.setFullYear(this.getFullYear() + n);

					this.setDate(Math.min(this.tempDate, this.getMaxDays()));

				};

				Date.prototype.getMaxDays = function() {

					var tmpDate = new Date(Date.parse(this)),

						d = 28, m;

					m = tmpDate.getMonth();

					d = 28;

					while (tmpDate.getMonth() == m) {

						d ++;

						tmpDate.setDate(d);

					}

					return d - 1;

				};

				Date.prototype.getFirstDay = function() {

					var tmpDate = new Date(Date.parse(this));

					tmpDate.setDate(1);

					return tmpDate.getDay();

				};

				Date.prototype.getWeekNumber = function() {

					var tempDate = new Date(this);

					tempDate.setDate(tempDate.getDate() - (tempDate.getDay() + 6) % 7 + 3);

					var dms = tempDate.valueOf();

					tempDate.setMonth(0);

					tempDate.setDate(4);

					return Math.round((dms - tempDate.valueOf()) / (604800000)) + 1;

				};

				Date.prototype.getDayOfYear = function() {

					var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);

					var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);

					var time = now - then;

					return Math.floor(time / 24*60*60*1000);

				};

			},

			layout = function (el) {

				var options = $(el).data('datepicker');

				var cal = $('#' + options.id);

				if (!options.extraHeight) {

					var divs = $(el).find('div');

					options.extraHeight = divs.get(0).offsetHeight + divs.get(1).offsetHeight;

					options.extraWidth = divs.get(2).offsetWidth + divs.get(3).offsetWidth;

				}

				var tbl = cal.find('table:first').get(0);

				var width = tbl.offsetWidth;

				var height = tbl.offsetHeight;

				cal.css({

					width: width + options.extraWidth + 'px',

					height: height + options.extraHeight + 'px'

				}).find('div.datepickerContainer').css({

					width: width + 'px',

					height: height + 'px'

				});

			},

			click = function(ev) {

				if ($(ev.target).is('span')) {

					ev.target = ev.target.parentNode;

				}

				var el = $(ev.target);

				if (el.is('a')) {

					ev.target.blur();

					if (el.hasClass('datepickerDisabled')) {

						return false;

					}

					var options = $(this).data('datepicker');

					var parentEl = el.parent();

					var tblEl = parentEl.parent().parent().parent();

					var tblIndex = $('table', this).index(tblEl.get(0)) - 1;

					var tmp = new Date(options.current);

					var changed = false;

					var fillIt = false;

					if (parentEl.is('th')) {

						if (parentEl.hasClass('datepickerWeek') && options.mode == 'range' && !parentEl.next().hasClass('datepickerDisabled')) {

							var val = parseInt(parentEl.next().text(), 10);

							tmp.addMonths(tblIndex - Math.floor(options.calendars/2));

							if (parentEl.next().hasClass('datepickerNotInMonth')) {

								tmp.addMonths(val > 15 ? -1 : 1);

							}

							tmp.setDate(val);

							options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();

							tmp.setHours(23,59,59,0);

							tmp.addDays(6);

							options.date[1] = tmp.valueOf();

							fillIt = true;

							changed = true;

							options.lastSel = false;

						} else if (parentEl.hasClass('datepickerMonth')) {
							return false;
							//disabled because table is narrower	
							tmp.addMonths(tblIndex - Math.floor(options.calendars/2));

							switch (tblEl.get(0).className) {

								case 'datepickerViewDays':

									tblEl.get(0).className = 'datepickerViewMonths';

									el.find('span').text(tmp.getFullYear());

									break;

								case 'datepickerViewMonths':

									tblEl.get(0).className = 'datepickerViewYears';

									el.find('span').text((tmp.getFullYear()-6) + ' - ' + (tmp.getFullYear()+5));

									break;

								case 'datepickerViewYears':

									tblEl.get(0).className = 'datepickerViewDays';

									el.find('span').text(formatDate(tmp, 'B, Y'));

									break;

							}

						} else if (parentEl.parent().parent().is('thead')) {

							switch (tblEl.get(0).className) {

								case 'datepickerViewDays':

									options.current.addMonths(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);

									break;

								case 'datepickerViewMonths':

									options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -1 : 1);

									break;

								case 'datepickerViewYears':

									options.current.addYears(parentEl.hasClass('datepickerGoPrev') ? -12 : 12);

									break;

							}

							fillIt = true;

						}

					} else if (parentEl.is('td') && !parentEl.hasClass('datepickerDisabled')) {

						switch (tblEl.get(0).className) {

							case 'datepickerViewMonths':

								options.current.setMonth(tblEl.find('tbody.datepickerMonths td').index(parentEl));

								options.current.setFullYear(parseInt(tblEl.find('thead th.datepickerMonth span').text(), 10));

								options.current.addMonths(Math.floor(options.calendars/2) - tblIndex);

								tblEl.get(0).className = 'datepickerViewDays';

								break;

							case 'datepickerViewYears':

								options.current.setFullYear(parseInt(el.text(), 10));

								tblEl.get(0).className = 'datepickerViewMonths';

								break;

							default:

								var val = parseInt(el.text(), 10);

								tmp.addMonths(tblIndex - Math.floor(options.calendars/2));

								if (parentEl.hasClass('datepickerNotInMonth')) {

									tmp.addMonths(val > 15 ? -1 : 1);

								}

								tmp.setDate(val);

								switch (options.mode) {

									case 'multiple':

										val = (tmp.setHours(0,0,0,0)).valueOf();

										if ($.inArray(val, options.date) > -1) {

											$.each(options.date, function(nr, dat){

												if (dat == val) {

													delete options.date[nr];

													return false;

												}

											});

										} else {

											options.date.push(val);

										}

										break;

									case 'range':

										if (!options.lastSel) {

											options.date[0] = (tmp.setHours(0,0,0,0)).valueOf();

										}

										val = (tmp.setHours(23,59,59,0)).valueOf();

										if (val < options.date[0]) {

											options.date[1] = options.date[0] + 86399000;

											options.date[0] = val - 86399000;

										} else {

											options.date[1] = val;

										}

										options.lastSel = !options.lastSel;

										break;

									default:

										options.date = tmp.valueOf();

										break;

								}

								break;

						}

						fillIt = true;

						changed = true;

					}

					if (fillIt) {

						fill(this);

					}

					if (changed) {

						options.onChange.apply(this, prepareDate(options));

					}

				}

				return false;

			},

			prepareDate = function (options) {

				var tmp;

				if (options.mode == 'single') {

					tmp = new Date(options.date);

					return [formatDate(tmp, options.format), tmp];

				} else {

					tmp = [[],[]];

					$.each(options.date, function(nr, val){

						var date = new Date(val);

						tmp[0].push(formatDate(date, options.format));

						tmp[1].push(date);

					});

					return tmp;

				}

			},

			getViewport = function () {

				var m = document.compatMode == 'CSS1Compat';

				return {

					l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),

					t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),

					w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),

					h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)

				};

			},

			isChildOf = function(parentEl, el, container) {

				if (parentEl == el) {

					return true;

				}

				if (parentEl.contains) {

					return parentEl.contains(el);

				}

				if ( parentEl.compareDocumentPosition ) {

					return !!(parentEl.compareDocumentPosition(el) & 16);

				}

				var prEl = el.parentNode;

				while(prEl && prEl != container) {

					if (prEl == parentEl)

						return true;

					prEl = prEl.parentNode;

				}

				return false;

			},

			show = function (ev) {

				var cal = $('#' + $(this).data('datepickerId'));

				if (!cal.is(':visible')) {

					var calEl = cal.get(0);

					var options = cal.data('datepicker');

					options.onBeforeShow.apply(this, [cal.get(0)]);

					var pos = $(this).offset();

					var viewPort = getViewport();

					var top = pos.top;

					var left = pos.left;

					var oldDisplay = $.curCSS(calEl, 'display');

					cal.css({

						visibility: 'hidden',

						display: 'block'

					});

					layout(calEl);

					switch (options.position){

						case 'top':

							top -= calEl.offsetHeight;

							break;

						case 'left':

							left -= calEl.offsetWidth;

							break;

						case 'right':

							left += this.offsetWidth;

							break;

						case 'bottom':

							top += this.offsetHeight;

							break;

					}

					if (top + calEl.offsetHeight > viewPort.t + viewPort.h) {

						top = pos.top  - calEl.offsetHeight;

					}

					if (top < viewPort.t) {

						top = pos.top + this.offsetHeight + calEl.offsetHeight;

					}

					if (left + calEl.offsetWidth > viewPort.l + viewPort.w) {

						left = pos.left - calEl.offsetWidth;

					}

					if (left < viewPort.l) {

						left = pos.left + this.offsetWidth

					}

					cal.css({

						visibility: 'visible',

						display: 'block',

						top: top + 'px',

						left: left + 'px'

					});

					if (options.onShow.apply(this, [cal.get(0)]) != false) {

						cal.show();

					}

					$(document).bind('mousedown', {cal: cal, trigger: this}, hide);

				}

				return false;

			},

			hide = function (ev) {

				if (ev.target != ev.data.trigger && !isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {

					if (ev.data.cal.data('datepicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {

						ev.data.cal.hide();

					}

					$(document).unbind('mousedown', hide);

				}

			};

		return {

			init: function(options){

				options = $.extend({}, defaults, options||{});

				extendDate(options.locale);

				options.calendars = Math.max(1, parseInt(options.calendars,10)||1);

				options.mode = /single|multiple|range/.test(options.mode) ? options.mode : 'single';

				return this.each(function(){

					if (!$(this).data('datepicker')) {

						if (options.date.constructor == String) {

							options.date = parseDate(options.date, options.format);

							options.date.setHours(0,0,0,0);

						}

						if (options.mode != 'single') {

							if (options.date.constructor != Array) {

								options.date = [options.date.valueOf()];

								if (options.mode == 'range') {

									options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());

								}

							} else {

								for (var i = 0; i < options.date.length; i++) {

									options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();

								}

								if (options.mode == 'range') {

									options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();

								}

							}

						} else {

							options.date = options.date.valueOf();

						}

						if (!options.current) {

							options.current = new Date();

						} else {

							options.current = parseDate(options.current, options.format);

						} 

						options.current.setDate(1);

						options.current.setHours(0,0,0,0);

						var id = 'datepicker_' + parseInt(Math.random() * 1000), cnt;

						options.id = id;

						$(this).data('datepickerId', options.id);

						var cal = $(tpl.wrapper).attr('id', id).bind('click', click).data('datepicker', options);

						if (options.className) {

							cal.addClass(options.className);

						}

						for (var i = 0; i < options.calendars; i++) {

							cnt = options.starts;

							cal.find('tr:first').append(

								i > 0 ?  tpl.space: '',

								tmpl(tpl.head.join(''), {

									week: options.locale.weekMin,

									prev: options.prev,

									next: options.next,

									day1: options.locale.daysMin[(cnt++)%7],

									day2: options.locale.daysMin[(cnt++)%7],

									day3: options.locale.daysMin[(cnt++)%7],

									day4: options.locale.daysMin[(cnt++)%7],

									day5: options.locale.daysMin[(cnt++)%7],

									day6: options.locale.daysMin[(cnt++)%7],

									day7: options.locale.daysMin[(cnt++)%7]

								})

							);

						}

						cal.find('tr:first table').addClass('datepickerViewDays');

						fill(cal.get(0));

						if (options.flat) {

							cal.appendTo(this).show().css('position', 'relative');

							layout(cal.get(0));

						} else {

							cal.appendTo(document.body);

							$(this).bind(options.eventName, show);

						}

					}

				});

			},

			showPicker: function() {

				return this.each( function () {

					if ($(this).data('datepickerId')) {

						show.apply(this);

					}

				});

			},

			hidePicker: function() {

				return this.each( function () {

					if ($(this).data('datepickerId')) {

						$('#' + $(this).data('datepickerId')).hide();

					}

				});

			},

			setDate: function(date, shiftTo){

				
			
				return this.each(function(){

					if ($(this).data('datepickerId')) {

						var cal = $('#' + $(this).data('datepickerId'));

						var options = cal.data('datepicker');

						options.date = date;

						if (options.date.constructor == String) {

							options.date = parseDate(options.date, options.format);

							options.date.setHours(0,0,0,0);

						}

						if (options.mode != 'single') {

							if (options.date.constructor != Array) {

								options.date = [options.date.valueOf()];

								if (options.mode == 'range') {

									options.date.push(((new Date(options.date[0])).setHours(23,59,59,0)).valueOf());

								}

							} else {

								for (var i = 0; i < options.date.length; i++) {

									options.date[i] = (parseDate(options.date[i], options.format).setHours(0,0,0,0)).valueOf();

								}

								if (options.mode == 'range') {

									options.date[1] = ((new Date(options.date[1])).setHours(23,59,59,0)).valueOf();

								}

							}

						} else {

							options.date = options.date.valueOf();

						}

						if (shiftTo) {

							options.current = new Date (options.mode != 'single' ? options.date[0] : options.date);

						}

						fill(cal.get(0));

					}

				});

			},

			getDate: function(formated) {

				if (this.size() > 0) {

					return prepareDate($('#' + $(this).data('datepickerId')).data('datepicker'))[formated ? 0 : 1];

				}

			}

		};

	}();

	$.fn.extend({

		DatePicker: DatePicker.init,

		DatePickerHide: DatePicker.hide,

		DatePickerShow: DatePicker.show,

		DatePickerSetDate: DatePicker.setDate,

		DatePickerGetDate: DatePicker.getDate

	});

})(jQuery);



(function(){

  var cache = {};

 

  this.tmpl = function tmpl(str, data){

    // Figure out if we're getting a template, or if we need to

    // load the template - and be sure to cache the result.

    var fn = !/\W/.test(str) ?

      cache[str] = cache[str] ||

        tmpl(document.getElementById(str).innerHTML) :

     

      // Generate a reusable function that will serve as a template

      // generator (and which will be cached).

      new Function("obj",

        "var p=[],print=function(){p.push.apply(p,arguments);};" +

       

        // Introduce the data as local variables using with(){}

        "with(obj){p.push('" +

       

        // Convert the template into pure JavaScript

        str

          .replace(/[\r\t\n]/g, " ")

          .split("<%").join("\t")

          .replace(/((^|%>)[^\t]*)'/g, "$1\r")

          .replace(/\t=(.*?)%>/g, "',$1,'")

          .split("\t").join("');")

          .split("%>").join("p.push('")

          .split("\r").join("\\'")

      + "');}return p.join('');");

   

    // Provide some basic currying to the user

    return data ? fn( data ) : fn;

  };

})();

/* END DATEPICKER*/

/* START AJAX FILE UPLOAD */



jQuery.extend({

	



    createUploadIframe: function(id, uri)

	{

			//create frame

            var frameId = 'jUploadFrame' + id;

            

            if(window.ActiveXObject) {

                var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');

                if(typeof uri== 'boolean'){

                    io.src = 'javascript:false';

                }

                else if(typeof uri== 'string'){

                    io.src = uri;

                }

            }

            else {

                var io = document.createElement('iframe');

                io.id = frameId;

                io.name = frameId;

            }

            io.style.position = 'absolute';

            io.style.top = '-1000px';

            io.style.left = '-1000px';



            document.body.appendChild(io);



            return io			

    },

    createUploadForm: function(id, fileElementId)

	{

		//create form	

		var formId = 'jUploadForm' + id;

		var fileId = 'jUploadFile' + id;

		var form = $('<form  action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>');	

		var oldElement = $('#' + fileElementId);

		var newElement = $(oldElement).clone();

		$(oldElement).attr('id', fileId);

		$(oldElement).before(newElement);

		$(oldElement).appendTo(form);

		//set attributes

		$(form).css('position', 'absolute');

		$(form).css('top', '-1200px');

		$(form).css('left', '-1200px');

		$(form).appendTo('body');		

		return form;

    },



    ajaxFileUpload: function(s) {

        // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout		

        s = jQuery.extend({}, jQuery.ajaxSettings, s);

        var id = new Date().getTime()        

		var form = jQuery.createUploadForm(id, s.fileElementId);

		var io = jQuery.createUploadIframe(id, s.secureuri);

		var frameId = 'jUploadFrame' + id;

		var formId = 'jUploadForm' + id;		

        // Watch for a new set of requests

        if ( s.global && ! jQuery.active++ )

		{

			jQuery.event.trigger( "ajaxStart" );

		}            

        var requestDone = false;

        // Create the request object

        var xml = {}   

        if ( s.global )

            jQuery.event.trigger("ajaxSend", [xml, s]);

        // Wait for a response to come back

        var uploadCallback = function(isTimeout)

		{			

			var io = document.getElementById(frameId);

            try 

			{				

				if(io.contentWindow)

				{

					 xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;

                	 xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;

					 

				}else if(io.contentDocument)

				{

					 xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null;

                	xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;

				}						

            }catch(e)

			{

				jQuery.handleError(s, xml, null, e);

			}

            if ( xml || isTimeout == "timeout") 

			{				

                requestDone = true;

                var status;

                try {

                    status = isTimeout != "timeout" ? "success" : "error";

                    // Make sure that the request was successful or notmodified

                    if ( status != "error" )

					{

                        // process the data (runs the xml through httpData regardless of callback)

                        var data = jQuery.uploadHttpData( xml, s.dataType );    

                        // If a local callback was specified, fire it and pass it the data

                        if ( s.success )

                            s.success( data, status );

    

                        // Fire the global callback

                        if( s.global )

                            jQuery.event.trigger( "ajaxSuccess", [xml, s] );

                    } else

                        jQuery.handleError(s, xml, status);

                } catch(e) 

				{

                    status = "error";

                    jQuery.handleError(s, xml, status, e);

                }



                // The request was completed

                if( s.global )

                    jQuery.event.trigger( "ajaxComplete", [xml, s] );



                // Handle the global AJAX counter

                if ( s.global && ! --jQuery.active )

                    jQuery.event.trigger( "ajaxStop" );



                // Process result

                if ( s.complete )

                    s.complete(xml, status);



                jQuery(io).unbind()



                setTimeout(function()

									{	try 

										{

											$(io).remove();

											$(form).remove();	

											

										} catch(e) 

										{

											jQuery.handleError(s, xml, null, e);

										}									



									}, 100)



                xml = null



            }

        }

        // Timeout checker

        if ( s.timeout > 0 ) 

		{

            setTimeout(function(){

                // Check to see if the request is still happening

                if( !requestDone ) uploadCallback( "timeout" );

            }, s.timeout);

        }

        try 

		{

           // var io = $('#' + frameId);

			var form = $('#' + formId);

			$(form).attr('action', s.url);

			$(form).attr('method', 'POST');

			$(form).attr('target', frameId);

            if(form.encoding)

			{

                form.encoding = 'multipart/form-data';				

            }

            else

			{				

                form.enctype = 'multipart/form-data';

            }			

            $(form).submit();



        } catch(e) 

		{			

            jQuery.handleError(s, xml, null, e);

        }

        if(window.attachEvent){

            document.getElementById(frameId).attachEvent('onload', uploadCallback);

        }

        else{

            document.getElementById(frameId).addEventListener('load', uploadCallback, false);

        } 		

        return {abort: function () {}};	



    },



    uploadHttpData: function( r, type ) {

        var data = !type;

        data = type == "xml" || data ? r.responseXML : r.responseText;

        // If the type is "script", eval it in global context

        if ( type == "script" )

            jQuery.globalEval( data );

        // Get the JavaScript object, if JSON is used.

        if ( type == "json" )

            eval( "data = " + data );

        // evaluate scripts within html

        if ( type == "html" )

            jQuery("<div>").html(data).evalScripts();

			//alert($('param', data).each(function(){alert($(this).attr('value'));}));

        return data;

    }

})

/* END AJAX FILE UPLOAD */

/*
 *
 *
 *
 * START PRX.LIB.JS
 *
 *
 *
 *
 */
 
function markerCollideCheck(coords) {

	delta = -2;

	pixelCoords = coords;
	for(i=1;i<pixelCoords.length;i++){
					for(j=0;j<i;j++){
						if(pixelCoords[j].equals(pixelCoords[i])){
							pixelCoords[j].x+=delta;
							
							pixelCoords = markerCollideCheck(pixelCoords);
							return pixelCoords;
						}
					}
				}
	return pixelCoords;
}

function initialize() {
	window.map = new google.maps.Map2(document.getElementById("map"));
	window.map.setCenter(new google.maps.LatLng(40.7561, -73.9870), 13); // set center to NYC
	//window.map.setUIToDefault();
	ui=new GMapUIOptions();

	ui.maptypes = {normal:true}
	ui.zoom = {};
	ui.controls = {largemapcontrol3d:false, smallzoomcontrol3d:true, scalecontrol:false, maptypecontrol:false};
	ui.keyboard = false;

	window.map.setUI(ui);

	window.geoCoder=new GClientGeocoder;
	window.alphaString="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}

function addDefaultText(field,text){

	$(field).focus(function(){
			if($(this).val()==text)
			{
				$(this).val('');
				$(this).addClass('active');
			}	
	})
	
	$(field).blur(function(){
		if(trim($(this).val())=="")
		{
			$(this).val(text);
			$(this).removeClass('active');
		}
	})

}


function zInd(marker,b){
	return 1000000000; // zindex for center marker
	}

function addProximity(v,m,f){

	$.post("/index.php/user/newProximity",
	
	{'name':f.prxName,'radius':f.prxRadius,'address':f.prxAddress,'id':f.id},
	function(data){

		
		data=$.evalJSON(data);
		
		if(data.status==0){
		$('.jqi .error').html(data.error);
		} else {
		
	
		initDate=new Date('m/d/Y');
		initDateString=(initDate.getMonth()+1)+"/"+initDate.getDate()+"/"+initDate.getYear()

		window.location.reload();
		return true;

		if(data.isNew==1){
	
			$("#yourProximities .alertFlat").hide('slow');
			

			
			if($('.proximity').size()>0){
				$('.proximity:last').after(data.proximity)
				} else {$("#yourProximities > h3").after(data.proximity)}
			
			$('.proximity:last').hide().show('slow');
			
			$.jGrowl("Your new prximity was successfully added.")
			
			$('.proximity:last .dateField').DatePicker({
				flat:true,
				mode:'multiple',
				format: 'm/d/Y',
				date: initDateString,
				current: initDateString,
				calendars:1,
				starts:1,
				onChange: function(formated, dates){
					var form=$(this).closest('form');
					search(form)
				}
			})
			$.prompt.close();
		} else {
			$('.idRef[innerHTML="'+data.id+'"]').closest('.proximity').replaceWith(data.proximity);

			$.jGrowl("Update was successful.")

			$('.idRef[innerHTML="'+data.id+'"]').closest('.proximity').find('.dateField').DatePicker({
				flat:true,
				mode:'multiple',
				format: 'm/d/Y',
				date: initDateString,
				current: initDateString,
				calendars:1,
				starts:1,
				onChange: function(formated, dates){
					var form=$(this).closest('form');
					search(form)
				}
			})
			$.prompt.close();
		}
		}
	}
	)

return false;

}

function deleteProximity(prxId){

	$("#workingNote").show();

	$.post('/index.php/user/deleteProximity',{'id':prxId},
		function(data)
			{
				data=$.evalJSON(data);
				if(data.error!="")
				{
					$("#workingNote").hide();
					$.prompt(data.error);
				} else
				{
					$("#workingNote").hide();
					
					$('.idRef[innerHTML='+prxId+']').closest('.proximity').hide('fast');
				}
			
			}
	)
}


function updateProfile(v,m,f){

	var formData = $.toJSON(f);
	var hoodsData = new Array();
	$("input[name='favNeighborhoods']:checked").each(function(){hoodsData.push($(this).val())});
	hoodsData=$.toJSON(hoodsData);
	
	
	$.post
	(
		
	
		"/index.php/user/updateProfile_ajx", {"formData":formData,"hoodsData":hoodsData} , function(data)
		{
			data=$.evalJSON(data);
			if(data.status==1){$("#contentMain_inner").html(data.HTML);}

		}
	)

}

function tabTo(el){
	
	if($(el).hasClass("tabCurr")){return false;}
	
	var ind = $(el).closest('div').find('.tab').index(el)
	
	var parent=$(el).closest('div')

	//parent.find('.tabCurr').removeClass('tabCurr').addClass('tab');
	parent.find('.tab').removeClass('tabCurr');
	
	$(el).addClass('tabCurr');
	
	parent.find('fieldset').hide();
	parent.find('fieldset').eq(ind).show()
}

//begin search function
function search(form)
{
	
	if($("input:checked[name='neighborhood[]']").size()>0 && $('.datePresets a.curr').size()==0 ){
		$('#datePre_next7days').click()
		return false;
	}
	
	if(form.html()==null){form=$('.form').eq(0);} // hack attack, if "form" wasn't set, set it to the first ".form" element on the page
	$('#workingNote').show();
	
	
	var dates = form.find('.dateField').DatePickerGetDate(true);

	
	dateArray = new Array();
	
	for(i=0,n=dates.length;i<n;i++){
	if(!(dates[i]=="NaN/NaN/NaN")){dateArray[dateArray.length]=dates[i]}
	}
	

	
	sbrToggle=form.find('input[name="searchByRadiusToggle"]').val(); // are we searching by Radius?

	
	
	var formJSON = new Object;
	
	if(form.find('input[name="freeOnly"]').is(":checked")){formJSON.freeOnly=1;} else {formJSON.freeOnly=0;}
	if(form.find('input[name="featuredOnly"]').is(":checked")){formJSON.featuredOnly=1;} else {formJSON.featuredOnly=0;}
	
	if($(".liveSearch").size()>0){
	formJSON.mainPageSearch = 1;
	} else {formJSON.mainPageSearch = 0;}
	
	if(form.find('select[name="proximitySelection"]').size()>0){
	
		formJSON.proximitySelection = form.find('select[name="proximitySelection"]').eq(0).val();
	
	}

	dateString = dateArray.join(", ");
	
	$('form input[name="dateString"]').val(dateString);
	
	formJSON.dateString=dateString;
	formJSON.date=new Array;
	
	//parse date field

	var date=new Array();

	formJSON.noDate=form.find("input[name='noDate']").val();
	

	
	
	if(dateString == window.datePresets['datePre_next14days']){
		formJSON.featuredEventsToggle=1;
	} else {
		formJSON.featuredEventsToggle=0;
	}
	
	
	if(dateArray.length==0){ // default to next 14 days, if no dates selected
		var fateArray = new Array();
		var today = new Date();	
		for(var i=0;i<14;i++) 
		{
			var day = new Date();
			day.setDate(today.getDate()+i);
			var dayString=(day.getMonth()+1)+"/"+day.getDate()+"/"+day.getFullYear();
			fateArray[fateArray.length]=dayString;
		}
	} else {
		fateArray = dateArray
	}	
	
	
	
	for(var i=0;i<fateArray.length;i++){
		
		dateFields=fateArray[i].split('/')
		
		dateMonth=dateFields[0]-1;
		dateDay=dateFields[1];
		dateYear=dateFields[2];

		//create info out of date;
		dateSel=new Date(dateYear,dateMonth,dateDay); 
		formJSON.date[i]=new Object;
		formJSON.date[i].dayOfWeek=dateSel.getDay(); // Sunday=0
		formJSON.date[i].month=dateSel.getMonth(); // January=0
		formJSON.date[i].dayOfMonth=dateSel.getDate();
		formJSON.date[i].weekOfMonth = Math.ceil((formJSON.date[i].dayOfMonth)/7)
		
		formJSON.date[i].year=dateSel.getFullYear();
	}
	
	
	
	formJSON.noDate=form.find("input[name='noDate']").val();
	formJSON.daysSinceAdded=form.find("input[name='daysSinceAdded']").val();

	//do we search by radius?
	if(sbrToggle==1)
	{
		
		formJSON.searchByRadius=true;
		formJSON.lat=form.find("input[name='lat']").val() //window.lat;
		formJSON.lng=form.find("input[name='lng']").val() //window.lng;
		formJSON.searchRadius=form.find("input[name='searchRadius']").val() //window.searchRadius;
		formJSON.userAddress = form.find(".userAddress").val();
	
	
	} else {formJSON.searchByRadius=false;}

	formJSON.daysSinceAdded=form.find("input[name='daysSinceAdded']").val();

	//populate neighborhood from form
	formJSON.neighborhood=new Array;
	form.find("input:checked[name='neighborhood[]']").each(function()
	{
		formJSON.neighborhood.push($(this).val());
	})

	//populate typeOfActivity from form
	formJSON.typeOfActivity = new Array;
	form.find("input:checked[name='typeOfActivity[]']").each(function()
	{
		formJSON.typeOfActivity.push($(this).val());
	})

	
	
	//populate typeOfActivity from form
	formJSON.areasOfInterest = new Array;
	form.find("input:checked[name='areasOfInterest[]']").each(function()
	{
		formJSON.areasOfInterest.push($(this).val());
	})
	
	//populate groupSizes from foem
	formJSON.groupSizes = new Array;
	form.find("input:checked[name='groupSizes[]']").each(function()
	{
		formJSON.groupSizes.push($(this).val());
	})	
	
	//populate priceLevel from form
	formJSON.priceLevel = new Array;
	form.find("input:checked[name='priceLevel[]']").each(function()
	{
		formJSON.priceLevel.push($(this).val());
	})
	
	//populate timeOfDay from form
	formJSON.timeOfDay = new Array;
	form.find("input:checked[name='timeOfDay[]']").each(function()
	{
		formJSON.timeOfDay.push($(this).val());
	})

	
	formString=$.toJSON(formJSON);
	
	
	
	$.post
	(
		"/index.php/main/getEvents",
		{'formData':formString},
		function(data)
		{
			
			displayEventsOnMap(data)
			
		}

	)

}
//end search function


function pageTo(pageNum,itemNum){

	

	if(window.isZoomedIn==true){$('.zoomout').eq(0).click();}
	
	var itemNum = (itemNum == null) ? 0 : itemNum;
	
	resultsJSON=window.resJSON[0];
	
	$("#searchResultsListing").html("");

	var first=(pageNum-1)*window.pagesize;
	var last=Math.min(first+window.pagesize,resultsJSON.length);
	
	displayFirst = first+1;
	displayLast  = last;
	total        = resultsJSON.length;
	
	if(pageNum==1){$("#prevPage").addClass("greyout")} else {$("#prevPage").removeClass("greyout")}
	if(displayLast==total){$("#nextPage").addClass("greyout")} else {$("#nextPage").removeClass("greyout")}
	
	report = displayFirst+" - "+displayLast+" of "+total;
	$("#resultsPagination .report").html(report);
	
	if(window.currPage!=undefined)
	{
		var oldpage = window.currPage;
		for(j=(oldpage-1)*(window.pagesize);j<(oldpage-1)*(window.pagesize)+window.pagesize;j++)
		{
			if(window.markerCurr[j]){window.map.removeOverlay(window.markerCurr[j]);}
			if(window.marker[j]){window.map.addOverlay(window.marker[j]);}
		}
	}
	
	
	
	window.currPage=pageNum;
	window.currItem=itemNum;
	


	for(i=first;i<last;i++)
	{
		if(i!=first){style=" style='display:none'"} else {style=''}
		letter=window.alphaString.charAt(i);
		var info=resultsJSON[i].mapListing;
		$("#searchResultsListing").append(info);

		window.map.addOverlay(window.markerCurr[i]);
		window.map.removeOverlay(window.marker[i]);
		
		
	}
	if($('.liveSearch').size()==0)
	{
		$("#searchResultsListing .cont").eq(itemNum).show();
	} else {
		$('#searchResultsListing h4').eq(0).css('border-top','none')
		
	}
	
	
	form.find('input[name="savedPage"]').val(window.currPage); // reset default page to 1 until page reload
	form.find('input[name="savedItem"]').val(0); // reset default item to 0 until page reload
	if($(".liveSearch").size()>0){$.post("/index.php/event/saveResultsPagination",{"page":window.currPage,"item":"0"})}
	
	
	
	return false;
}


function displayEventsOnMap(jsonData){
			
		
			var resJSON = $.evalJSON(jsonData);
			
			if(resJSON.error){
			$('#workingNote').hide();
			alert(resJSON.error)
			return;
			}
			
			window.resJSON=resJSON; // make resJSON available globally
			var resultsJSON=resJSON[0];

			//resJSON:
			// 0 = results
			// 1 = top right latlong
			// 2 = bottom left latlong
			// 3 = center 
			
			
			$("#searchResultsListing").html("");
			window.map.clearOverlays()

			window.marker=new Array();
			window.markerCurr=new Array();
			window.markerHighlight = new Array();
			
			if(resJSON[5]){


			centerIcon=new GIcon(G_DEFAULT_ICON);
			centerIcon.image="/images/markers/custom/marker_flag.png";
			centerIcon.iconSize = new GSize(32,32);
			centerIcon.shadow="/images/markers/custom/marker_flag_shadow.png";
			centerIcon.iconAnchor = new GPoint(32,30);
			centerIcon.shadowSize = new GSize(48,32);
			window.marker['center']=new GMarker(new GLatLng(resJSON[5]['lat'], resJSON[5]['lng']),{icon:centerIcon}/*,{zIndexProcess:zInd, icon:centerIcon}*/);
			
			GEvent.addListener(window.marker['center'],"click", function(latlong)
			{	if(!window.isZoomedIn){	
				zoomInOn('center',false);
				}
			})
			
			window.map.addOverlay(window.marker['center']);
			centerToggle = true;
			}
			
			if(resultsJSON.length>0)
			{
			window.pagesize= $('.liveSearch').size()>0 ? 10 : 5 // page size is 10 if this is the front page, else 5
			window.currPage=1;
			window.totalPages=Math.ceil(resultsJSON.length/window.pagesize);

			

			
				for(i=resultsJSON.length-1;i>-1;i--)
				{

					$("#resultsPagination").show()
					
					//make the icon lettered

					letteredIcon=new GIcon(G_DEFAULT_ICON);
					letteredIcon.image="/images/markers/custom/dotmarker.png";
					letteredIcon.shadow="";
					letteredIcon.iconAnchor=new GPoint(4,8);
					letteredIcon.iconSize=new GSize(8,8);
					
					currIcon = new GIcon(G_DEFAULT_ICON);
					if(i<100){
					currIcon.image=		"/images/markers/custom/markers_dark"+(i+1)+".png";
					} else {
					currIcon.image=		"/images/markers/custom/markers_dark_shapes1.png";
					}
					currIcon.shadow =	"/images/markers/custom/marker_shadow.png";
					currIcon.shadowSize = new GSize(36,24)
					currIcon.iconAnchor=new GPoint(12,24);
					currIcon.iconSize = new GSize(24,24)
					
					highlightIcon = new GIcon(G_DEFAULT_ICON);
					if(i<100){
					highlightIcon.image="/images/markers/custom/markers_light"+(i+1)+".png";
					} else {
					highlightIcon.image="/images/markers/blue/markers_light_shapes1.png";
					}
					highlightIcon.shadow =	"/images/markers/custom/marker_shadow.png";
					highlightIcon.shadowSize = new GSize(36,24)
					highlightIcon.iconAnchor=new GPoint(12,24);
					highlightIcon.iconSize = new GSize(24,24)
					
					// potential problem -- what if they're in the same place? you only see one marker...
					window.marker[i]=new GMarker(new GLatLng(resultsJSON[i].gLat, resultsJSON[i].gLong),{icon:letteredIcon})
					
					window.markerCurr[i]=new GMarker(new GLatLng(resultsJSON[i].gLat, resultsJSON[i].gLong),{icon:currIcon})
					window.markerHighlight[i]=new GMarker(new GLatLng(resultsJSON[i].gLat, resultsJSON[i].gLong),{icon:highlightIcon, zIndexProcess:zInd})
					
					GEvent.addListener(window.marker[i],"click", function(latlong){
						var itemIndex = ($(window.marker).index(this))*1;
						
						var page = Math.ceil((itemIndex+1)/window.pagesize);
						var item = (itemIndex%(window.pagesize))*1; // *1 gets IE to recognize this as a number
						if(page!=window.currPage){						
							pageTo(page,item);
							}
							$('#searchResultsListing h4').eq(item).click();
						})

		
					GEvent.addListener(window.markerCurr[i],"click", function(latlong){		
						var itemIndex = $(window.markerCurr).index(this);
						var page = Math.ceil((itemIndex+1)/window.pagesize);
						var item =(itemIndex%window.pagesize)*1; // *1 gets IE to recognize this as a number
						
						if(item!=window.currItem){$("#searchResultsListing h4").eq(item).click();}
						if(!window.isZoomedIn){zoomInOn(itemIndex);}
								
						})
					
					GEvent.addListener(window.markerCurr[i],"mouseover", function(){	
						
						var itemIndex = $(window.markerCurr).index(this);
						window.markerCurr[itemIndex].setImage('/images/markers/custom/markers_light'+(itemIndex+1)+'.png')
						//window.map.addOverlay(window.markerHighlight[itemIndex])
					})
					
					GEvent.addListener(window.markerCurr[i],"mouseout", function(){	
						var itemIndex = $(window.markerCurr).index(this);
						window.markerCurr[itemIndex].setImage('/images/markers/custom/markers_dark'+(itemIndex+1)+'.png')
					})
					
					window.map.addOverlay(window.marker[i]);
					
					
				}
				
				

				
				
				var x=Math.min( // zoom level
					window.map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(resJSON[2][0],resJSON[2][1]),new GLatLng(resJSON[1][0],resJSON[1][1])),new GSize(300,200)),
					15
					);

				window.map.setZoom(x)
				window.savedZoom=x;
				
				window.savedCenter=new GLatLng(resJSON[3][0],resJSON[3][1]);
				window.map.panTo(new GLatLng(resJSON[3][0],resJSON[3][1]));

					pixelCoords=new Array();
			
					for(i=0;i<resultsJSON.length;i++){
						pixelCoords[i]=new GLatLng(resultsJSON[i].gLat, resultsJSON[i].gLong);
						pixelCoords[i]=window.map.fromLatLngToContainerPixel(pixelCoords[i]);
					
					}
				
					//offset markers that are in the same place	
					//pixelCoords = markerCollideCheck(pixelCoords)	

					form=$('.form').eq(0);
					if($('.liveSearch').size()>0){
							pageTo(window.savedPage,window.savedItem); // use last saved page
						} else {
							pageTo(1,0)
							}
							
						
						if($('.liveSearch').size()>0){
							$('#searchResultsListing h4').eq(window.savedItem).click()
						}
						
						
						window.savedPage=1; // reset default page to 1 until page reload
						window.savedItem=0;; // reset default page to 0 until page reload
				
					
					for(i=0;i<window.marker.length;i++){
						
						//window.marker[i].setLatLng(window.map.fromContainerPixelToLatLng(pixelCoords[i]))
					}
				
				if(resJSON[4]==null){
					if($('.liveSearch').size()==0){
					$("#searchResultsAlert").hide().html('');
					} else {
					
					}
				} else {
					if($('.liveSearch').size()==0){
					$("#searchResultsAlert").show().html("<p>"+resJSON[4]+"</p>")
					} else {
					
					}
				}
			} else {

				$("#resultsPagination").hide();				
				if($('.liveSearch').size()==0){
					$("#searchResultsAlert").show().html("<p>"+resJSON[4]+"</p>")
					} else {
					$('#searchResultsListing').html('<div class="alertFlat">'+resJSON[4]+'</div>')
					$("#summaryReadout").html('<div class="alertFlat">'+resJSON[4]+'</div>')
					}
				
	
				if(resJSON[3][0]!=0){
					var x=Math.min(
						window.map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(resJSON[2][0],resJSON[2][1]),new GLatLng(resJSON[1][0],resJSON[1][1])),new GSize(300,200)),15
					);
					window.map.panTo(new GLatLng(resJSON[3][0],resJSON[3][1]));
					}
					else {
					window.map.panTo(new GLatLng(40.7561, -73.9870))
					}
				}

		$('#workingNote').hide();
}




function parseDate(d){

	//turns a date in format mm/dd/yyyy into a javascript date object

	date=new Object;
	
	dateArray=d.split('/');
	date.Month=dateArray[0]-1;// -1 because January = 0
	date.Day=dateArray[1];
	date.Year=dateArray[2];
	date.Week=Math.ceil(date.Day/7);
	
	tmpDate=new Date(date.Year,date.Month,date.Day);
	
	date.dayOfWeek=tmpDate.getDay();	
	
	monthArray=Array("January","February","March","April","May","June","July","August","September","October","November","December");
	dayArray=Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
	
	date.Month=monthArray[date.Month];
	date.dayOfWeek=dayArray[date.dayOfWeek];
	date.Day=tmpDate.getDate();
	
	return date;
}

function invalidDateStripper(dates){
	returnArray = new Array();
	for(x in dates){
		
		if(dates[x]!='Invalid Date'){
		returnArray[returnArray.length]=dates[x]
		
		} else {
		
		}
	}
	return returnArray;
}

function convertToIndex(num){
	
	//converts 3 to 3rd, for example
	
	var units=num%10;
	var tens=(num%100-units)/10;

	switch (units){
		case 1:
			switch (tens){
				case 1: return num+"th";
				default: return num+"st";
				}
		case 2:
			switch (tens){
				case 1: return num+"th";
				default: return num+"nd";
			}
		case 3:
			switch (tens){
				case 1: return num+"th";
				default: return num+"rd";
			}
		default:
			return num+"th";
		}
	}

function addslashes(str) {
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\0/g,'\\0');
	return str;
	}

function htmlentities_single(str) {
	str=str.replace(/\'/g,'&#039;');
	return str;
	}


function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
	}

function zoomout(){
	
	for(k=0;k<window.marker.length;k++){
		window.marker[k].show();
		window.markerCurr[k].show();
		}
	window.map.setCenter(window.savedCenter);
	window.map.setZoom(window.savedZoom);
	$("#map .zoomout").remove();
	$("#searchResultsListing .zoomout").hide();
	$("#searchResultsListing .zoomin").show();
	window.isZoomedIn = false;
	
	}
	
function zoomInOn(index,isSearchResult){
	var isSearchResult = (isSearchResult == null) ? true : isSearchResult;

	for(j=0;j<window.marker.length;j++){
		if(j!=index){
			window.markerCurr[j].hide()
			}
		window.marker[j].hide()
		}
	
	window.savedCenter = window.map.getCenter();
	window.savedZoom = window.map.getZoom();
	
	window.map.setZoom(15);
	
	if(isSearchResult==true){
		window.map.setCenter(window.markerCurr[index].getLatLng());
		$("#searchResultsListing .zoomin").eq(index%window.pagesize).hide()
		$("#searchResultsListing .zoomout").eq(index%window.pagesize).show()
	} else {
		window.map.setCenter(window.marker[index].getLatLng());
	}
	
	$("#map").append("<div class='zoomout' style='cursor:pointer;color:#ffffff;position:absolute;bottom:10px;right:10px;z-index:10000000;background-color:#333333;padding:5px'>Return to All Events</div>")
	window.isZoomedIn = true;
	}

function addressSelect(address, coords, shortAddress){
	$('input[name="confirmedAddress"]').val(address);
	$('input[name="confirmedLat"]').val(coords[1]);
	$('input[name="confirmedLng"]').val(coords[0]);
	$('input[name="shortAddress"]').val(shortAddress);
	$("#addressOptions").remove()
	$("#eventField_address input[name='address']").val(address);
	
		addressIcon=new GIcon(G_DEFAULT_ICON);
		addressIcon.image=	"/images/markers/custom/markers_dark_shapes1.png";
		addressIcon.shadow =	"/images/markers/custom/marker_shadow.png";
		addressIcon.shadowSize = new GSize(36,24)
		addressIcon.iconAnchor=new GPoint(12,24);
		addressIcon.iconSize = new GSize(24,24)
	
	window.map.clearOverlays();
	window.map.addOverlay(new GMarker(new GLatLng(coords[1],coords[0]),{icon:addressIcon}))
	window.map.setCenter(new GLatLng(coords[1],coords[0]));
	window.map.setZoom(16);
	$('#checkAddressWrapper').remove();
	}
	
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
	}

	
function initializeEventBuilderDatePicker(){
	var initDates = new Array();
	$("#eventBuilderFilter li a").each(function(){
		initDates.push($(this).attr('rel').replace("-","/"))
	})
	
	
	if(initDates.length==0){
		initDate=new Date('m/d/Y');
		initDates.push((initDate.getMonth()+1)+"/"+initDate.getDate()+"/"+initDate.getYear())
		}
	
	
	
	$("#eventBuilderDatePicker")
		.DatePicker({
			flat:true,
			mode:'multiple',
			format: 'm/d/Y',
			date: initDates,
			//current: initDateString,
			calendars:1,
			starts:1,
			onChange: function(formated, dates){
				eventBuilderDatePicker_update(formated,dates)
				}
			})
			
		
	eventBuilderDatePicker_update($("#eventBuilderDatePicker").DatePickerGetDate(false),null);
	}



	
function eventBuilderDatePicker_update(formated,dates)
{	
	eventDatesArray = new Array();
	eventUTCArray = new Array();
	dashDate = new Array();
	
	for(x in formated)
	{
		if(formated[x]!="NaN/NaN/NaN")
		{
			var tmpDate = new Date(formated[x]);
			eventUTCArray.push(Date.UTC(tmpDate.getFullYear(),tmpDate.getMonth(),tmpDate.getDate()+1));
		}
	}
	eventUTCArray.sort();
	
	var lastLI=0;
	
	
	//insert an added date
	for(x in eventUTCArray)
	{	
		thisDate = new Date(eventUTCArray[x]);
		eventDatesArray[x] = (thisDate.getMonth()+1)+"/"+(thisDate.getDate())+"/"+thisDate.getFullYear(); 
		dashDate[x] = (thisDate.getMonth()+1)+"-"+(thisDate.getDate())+"-"+thisDate.getFullYear(); 
		
		if($("#eventDateBuilder_"+dashDate[x]).size()<1)
		{
			if(lastLI==0)
			{
				
				$("#eventBuilderFilter ul").prepend("<li id='eventDateBuilder_"+dashDate[x]+"'>"+eventDatesArray[x]+" <a rel='"+dashDate[x]+"' href='' class='edit'>Add / edit info</a></li>")
			} else {
				lastLI.after("<li id='eventDateBuilder_"+dashDate[x]+"'>"+eventDatesArray[x]+" <a rel='"+dashDate[x]+"' href='' class='edit'>Add / edit info</a></li>")
			}
		}
		
		lastLI = $("#eventBuilderFilter ul li").eq(x);
	}
	
	//remove a removed date
	$("#eventBuilderFilter li a").each(
		function(){
			var deleteIt = 1;
			for(var v in dashDate){
				if(dashDate[v] == $(this).attr('rel')){
					deleteIt = 0;
					}
				}
			if(deleteIt){$(this).closest('li').remove()}
			//if(dashDate.indexOf( $(this).attr('rel') ) ==-1 ){$(this).closest('li').remove()}

			})
	

	$("input[name='multiDates']").val(dashDate.join(":::"));
	
}

function getInRadius(radius,days)
{

	var lat = $('#contentMain').find('.latRef').html();
	var lng = $('#contentMain').find('.lngRef').html();
	var id = $('#contentMain').find('.idRef').html();	
	
	$.post("/index.php/event/getInRadius",
		{
		'lat':lat,
		'lng':lng,
		'id':id,
		'radius':radius,
		'days':days
		},
		function(data){
			displayEventsOnMap(data);
		}
	);
}

/*
 *
 *
 *
 * START PRX.ALL.JS
 *
 *
 *
 *
 */
 
 $(document).ready(function(){

	
 
 
 
 
 $("#seriesHelp").click(function(){
	$.prompt("<p>Creating an event series allows you to group together two or more events that are related but occur as different times and in different locations. If your event always takes place at the same location, you should instead use the option 'Select two or more specific days' in the field 'Is this a repeating event?'</p>")
	return false;
 })
 
 $("#navMain_Suggest_an_Event").click(function()
{
	$.post
	(
		'/index.php/main/suggestAnEvent',
		{},
		function(data)
		{
			$.prompt
			(
				data,
				{
					loaded:function(){
						addDefaultText("#suggest_location",'location');
						addDefaultText("#suggest_date",'date(s)');
						addDefaultText("#suggest_description",'event description');
						addDefaultText("#suggest_url",'website URL');
						addDefaultText("#suggest_email",'your email (if we need more information)');
					},
					buttons:{Submit:true,Cancel:false},
					submit:function(v,m,f)
					{
						if(v==false){return true;}
						if(
							(trim(f.suggest_location)=="" || 
							trim(f.suggest_location)=="location") &&
							(trim(f.suggest_date)=="" ||
							trim(f.suggest_date)=="date(s)") &&
							(trim(f.suggest_description)=="" || 
							trim(f.suggest_description)=="event description") &&
							(trim(f.suggest_url)=="" || 
							trim(f.suggest_url)=="website URL") &&
							(trim(f.suggest_email)=="" || 
							trim(f.suggest_email)=="your email (if we need more information)")						
							)
						{
							
							$.prompt.close()
						} else {
							$("div.jqi .error").html('')
							var formData = $.toJSON(f);
							$.post(
								'/index.php/event/suggest',
								{'formData':formData},
								function(data){
									data = $.evalJSON(data);
									if(data.status==0){$("div.jqi .error").html(data.errorMessage);return false}
									if(data.status==1){$.prompt.close();$.jGrowl(data.successMessage)}
									
								}
							)
						
						}
					return false;
					}
					
					
				}
			)
		}
			
	)

	

	return false;
})
 
 
 
 $("input[name='seriesToggle']").click(function(){
	if($(this).is(":checked")){
	$("#seriesField").show('fast')
	} else {$("#seriesField").hide('fast')}
	})
 
 $("input[name='seriesToggle']").each(function(){
	if($(this).is(":checked")){
	$("#seriesField").show()
	} else {$("#seriesField").hide()}
	
 })
 

if($("#eventBuilderFilter").size()>0){
	initializeEventBuilderDatePicker()
	}
 
$('#eventBuilderFilter .edit').live("click",function()
{
	var utc = $(this).attr('rel');
		
	$(this).closest('li').find('.dateSuppSummary').remove();
	if($(this).closest('li').find('.dateSupp').size()==0){
	var datesSupp = "<div class='dateSupp'>";
	datesSupp += "<input class='dateSuppHeader greyout' name='suppHeader_"+utc+"' value='Supplemental Header'/>";
	datesSupp += "<textarea name='suppContent_"+utc+"' class='dateSuppContent greyout' style='width:250px;height:130px;'>Enter any additional information here.</textarea>";
	datesSupp += "<input class='cancel' type='button' value='cancel' name='cancel' /> <input class='ok' type='button' value='ok' name='ok' />";
	datesSupp += "</div>";
	$(this).after(datesSupp);
	} else {
		$(this).closest('li').find('.dateSupp').show();
	}
	
	$('.dateSuppContent, .dateSuppHeader').unbind('focus').unbind('blur')

	$('.dateSuppHeader')
		.bind('focus',function()
		{
			if($(this).val()=="Supplemental Header")
			{
				$(this).val("");
				$(this).removeClass('greyout')
			}
		})
		.bind('blur',function(){
			var cont = $(this).val();
			if(trim(cont)=="")
			{
				$(this).val("Supplemental Header")
				$(this).addClass('greyout');
			}
		})
		
	$('.dateSuppContent')
		.bind('focus',function()
		{
			if($(this).val()=="Enter any additional information here.")
			{
				$(this).val("");
				$(this).removeClass('greyout')
			}
		})
		.bind('blur',function(){
			var cont = $(this).val();
			if(trim(cont)=="")
			{
				$(this).val("Enter any additional information here.")
				$(this).addClass('greyout');
			}
		})
	
	
	return false;
})

/*$('.dateSuppContent').live("click",function()
{
	alert('diag');
	//if($(this).val() == "Enter any supplemental information here.")
	//{
		$(this).html("")
	//}
})*/

$('.dateSupp .ok').live("click", function()
{
	var dateSuppHeader = trim($(this).closest('.dateSupp').find('.dateSuppHeader').val());
	if(dateSuppHeader == "Supplemental Header"){dateSuppHeader="";}
	
	if(dateSuppHeader=="" && dateSuppContent==""){
		$(this).closest('.dateSuppSummary').remove();
		$(this).closest('.dateSupp').remove();
		return false;
	}
	
	
	var dateSuppContent = trim($(this).closest('.dateSupp').find('.dateSuppContent').val());
	if(dateSuppContent=="Enter any additional information here."){dateSuppContent="";}
	
	if(dateSuppHeader=="" && dateSuppContent==""){
		$(this).closest('.dateSuppSummary').remove();
		$(this).closest('.dateSupp').remove();
	}
	
	if(dateSuppContent.length > 50)
	{
		var dateSuppSummaryContent = dateSuppContent.substring(0,50)+"...";
	} else {
		var dateSuppSummaryContent = dateSuppContent;
	}
	
	var dateSuppSummary = "<div class='dateSuppSummary'>";
	if(dateSuppHeader!=$("input[name='name']").val()){dateSuppSummary+="<h5>"+dateSuppHeader+"</h5>";}
	if(dateSuppContent!=""){dateSuppSummary+="<div>"+dateSuppSummaryContent+"</div>";}
	$(this).closest('.dateSupp').before(dateSuppSummary);
	$(this).closest('.dateSupp').hide();
	})

$('.dateSupp .cancel').live("click", function()
{
	$(this).closest('.dateSuppSummary').remove();
	$(this).closest('.dateSupp').remove();
})
 

if($(".liveSearch").size()>0){
	window.savedPage = $("form input[name='savedPage']").val();
	window.savedItem = $("form input[name='savedItem']").val();
	}


function anyCheck(parent){
	if(parent.find('input[type="checkbox"]').eq(0).is(":checked")){
		parent.find('input[type="checkbox"]').each(function(){
			if(parent.find("input[type='checkbox']").index(this)!=0){$(this).attr("disabled",true)}
			})
		} else {
			parent.find('input[type="checkbox"]').each(function(){
			if(parent.find("input[type='checkbox']").index(this)!=0){$(this).removeAttr("disabled")}
			})
		}
	}

// activate disabling other options when "any" is clicked for the pertinent fields
$("#eventField_groupSizes, #eventField_timeOfDay")
	.each(function(){anyCheck($(this))})
	.click(function(){anyCheck($(this))})


$("#login_form #user_name").val("username");
$("#login_form #password").val("password"); // populate username and password

// clear username / password on focus
$("#login_form #username").focus(function(){
	if($(this).val() == "username"){$(this).val("")}
	})

$("#login_form #password").focus(function(){
	if($(this).val() == "password"){$(this).val("")}
	})


if($('#map').size()>0){
	initialize();
	}

$('input[name="userAddress"]')
	.focus(function(){
		$(this).addClass('focused')
		})
	.blur(function(){
		$(this).removeClass('focused')
		})
	
$('.searchForm form').submit(function(){
	if($(this).find('input[name="userAddress"]').hasClass('focused')){$(this).find('input[name="userAddress"]').change()}
	return false; // stop the form from submitting
	})



window.datePresets = new Array();


//set datearray to default (current week)

var dateArray = new Array();
var today = new Date();	
for(var i=0;i<14;i++) 
{
	var day = new Date();
	day.setDate(today.getDate()+i);
	var dayString=(day.getMonth() < 9 ? ("0"+(day.getMonth()+1)) : day.getMonth()+1)+"/"+(day.getDate() < 10 ? "0"+day.getDate() : day.getDate())+"/"+day.getFullYear();
	if(i==0){window.datePresets['datePre_today']=new Array(dayString)} // set preset date array for today
	
	dateArray[dateArray.length]=dayString;
	
	if(i==6){window.datePresets['datePre_next7days']=dateArray.join(', ')}
}

window.datePresets['datePre_next14days']=dateArray.join(', ') // set preset array for next 14 days


dateArray = new Array();
var currDay = today.getDay();
var weekendDays = Array(5,6,0);loopCount=7;
if(currDay == 6){weekendDays=Array(6,0);}
if(currDay == 0){weekendDays=Array(1);weekendDays[0]=0;}

for(var i=0;i<loopCount;i++)
	{
		var day = new Date();
		day.setDate(today.getDate()+i);
		dayOfWeek=day.getDay();

		for(j=0;j<weekendDays.length;j++){
			if(weekendDays[j]==dayOfWeek){
				var dayString=(day.getMonth() < 9 ? ("0"+(day.getMonth()+1)) : day.getMonth()+1)+"/"+(day.getDate() < 10 ? "0"+day.getDate() : day.getDate())+"/"+day.getFullYear();
				dateArray[dateArray.length]=dayString;
			}
		}
	}

window.datePresets['datePre_thisWeekend']=dateArray.join(', ');

// set date preset array for the next month
dateArray = new Array();
for(var i=0;i<40;i++)
	{
		var day = new Date();
		day.setDate(today.getDate()+i);
		
		var dayString=(day.getMonth() < 9 ? ("0"+(day.getMonth()+1)) : day.getMonth()+1)+"/"+(day.getDate() < 10 ? "0"+day.getDate() : day.getDate())+"/"+day.getFullYear();
		dateArray[dateArray.length]=dayString;
		if(day.getDate()==today.getDate()-1){break;}
	}
window.datePresets['datePre_nextMonth']=dateArray.join(', ');


initDate=new Date('m/d/Y');
initDateString=(initDate.getMonth()+1)+"/"+initDate.getDate()+"/"+initDate.getYear()

if($('.proximity').size()>0){dateArray = initDateString} // set initial selected date to 'today' if in a proximity context



$('.dateField').each(function()
{
	//override the default date if a saved date is set
	var dateString=$(this).closest('form').find('input[name="dateString"]').val();
	if(dateString!=0){
	var savedDates = dateString.split(", ");
	dateArray=savedDates;
	}
	
	
	
	$(this).DatePicker
	({
		flat:true,
		mode:'multiple',
		format: 'm/d/Y',
		date: window.datePresets['datePre_next7days'],
		current: initDateString,
		calendars:1,
		starts:1,
		onChange: function(formated, dates)
		{
			var form=$(this).closest('form');
			//if($(".borough").size()>0)
			//{
				/*if(form.find('input[name="searchByRadiusToggle"]').val()!=1 && $(".borough input[type='checkbox']:checked").size()==0)
				{
					$.prompt('Oops - please select your neighborhood(s)!');
					return false;
				}
				if(form.find('input[name="searchByRadiusToggle"]').val()==1 && $('form').find(".userAddress").val()=="")
				{
					$.prompt('Oops - you must enter an address!')
					return false;
				}*/
			//}
			search($('form'))
		}
	})


})



$('.datePresets a').click(function(){


	$('#searchAdvancedOptions fieldset').hide('fast');
	$('#searchAdvancedOptions h3').removeClass('hover');

	cal = $(this).closest('.fsField').find('.dateField');

	form = $(this).closest('form');

	var dateArray = new Array();

	var today = new Date();	


	preset = $(this).attr('id');
	switch(preset){
		case "datePre_next7days":
			for(var i=0;i<7;i++)
				{
					var day = new Date();
					day.setDate(today.getDate()+i);
					var dayString=(day.getMonth()+1)+"/"+day.getDate()+"/"+day.getFullYear();
					dateArray[dateArray.length]=dayString;
				}
			cal.DatePickerSetDate(dateArray,true);
			break;
		case "datePre_today":
			var dayString=(today.getMonth()+1)+"/"+today.getDate()+"/"+today.getFullYear();
			dateArray[dateArray.length]=dayString;
			cal.DatePickerSetDate(dateArray,true);
			break;
		case "datePre_tomorrow":
			today.setDate(today.getDate()+1);
			var dayString=(today.getMonth()+1)+"/"+today.getDate()+"/"+today.getFullYear();
			dateArray[dateArray.length]=dayString;
			cal.DatePickerSetDate(dateArray,true);
			break;
		case "datePre_thisWeekend":

			currDay = today.getDay();
			

			weekendDays = Array(5,6,0);loopCount=7;
			if(currDay == 6){weekendDays=Array(6,0);}
			if(currDay == 0){weekendDays=Array(1);weekendDays[0]=0;}

			for(var i=0;i<loopCount;i++)
				{
					var day = new Date();
					day.setDate(today.getDate()+i);
					dayOfWeek=day.getDay();

					for(j=0;j<weekendDays.length;j++){
						if(weekendDays[j]==dayOfWeek){
							var dayString=(day.getMonth()+1)+"/"+day.getDate()+"/"+day.getFullYear();
							dateArray[dateArray.length]=dayString;
						}
					}
				}

			cal.DatePickerSetDate(dateArray,true);
			break;
		case "datePre_nextMonth":
			for(var i=0;i<40;i++)
				{
					var day = new Date();
					day.setDate(today.getDate()+i);

					var dayString=(day.getMonth()+1)+"/"+day.getDate()+"/"+day.getFullYear();
					dateArray[dateArray.length]=dayString;
					if(day.getDate()==today.getDate()-1){break;}
				}
			cal.DatePickerSetDate(dateArray,true);
			break;
		case "datePre_calendar":
			if(!$("#date").hasClass('visible'))
			{
				if(!$(this).hasClass('curr')){
					window.dateSaver = $(this).closest('form').find('.dateField').DatePickerGetDate(true);
					window.dateHighlight = $(this).closest('form').find('.datePresets a.curr').attr('id');
					$(this).closest('form').find('.dateField').DatePickerSetDate(new Array());
					}
				
				$('.datePresets a').removeClass('curr');
				$(this).addClass('curr');
				
				$("#date").addClass('visible')
			} else {
				$('body').click();
			}

			return false;
			break;
		default:
			break;
	}

	$('.datePresets a').removeClass('curr');
	$(this).addClass('curr');
	$('#date').removeClass('visible')
	
	
	var form=$(this).closest('form');
			/*if($(".borough").size()>0)
			{
				if(form.find('input[name="searchByRadiusToggle"]').val()!=1 && $(".borough input[type='checkbox']:checked").size()==0)
				{
					$.prompt('Oops - please select your neighborhood(s)!');
					return false;
				}
				if(form.find('input[name="searchByRadiusToggle"]').val()==1 && $('form').find(".userAddress").val()=="")
				{
					$.prompt('Oops - you must enter an address!')
					return false;
				}
			}*/
	search(form)
	return false;
})



$('.proximitySelection').change(function(){
	
	form = $(this).closest('form');
	
	prxData = $(this).val();
	prxData = prxData.split("/_/");

	form.find('input[name="lat"]').val(prxData[2]);
	form.find('input[name="lng"]').val(prxData[3]);
	form.find('.userAddress').val(prxData[0]);
	form.find('input[name="searchRadius"]').val(prxData[1]);
	form.find('.slider').slider('value',prxData[1]);
	form.find('.readout').html(prxData[1]+" mile(s)");
	
})

$('.searchBtn').click(function(){
search($(this).closest('form'))
})


if($(".seriesDetails").size()>0)
{
	var seriesId = $('.seriesDetails').find("#seriesId").html();

	$("#workingNote").show();
	
	$.post
	(
		"/index.php/series/getSeries/"+seriesId,
		{},
		function(data)
		{
			
			displayEventsOnMap(data)
		}
	)
	
}

if($(".showAllSeriesByUser").size()>0)
{ 
	var seriesCreatorId = $(".seriesCreatorId").html();

	$("#workingNote").show();
	
	$.post
	(
		"/index.php/series/getSeriesByUserId/"+seriesCreatorId,
		{},
		function(data)
		{
			displayEventsOnMap(data)
		}
	)
	
}




$('#submittedBy').click(function()
{
	$(this).hide()
	
	$("#contentSecondary h3").html("Submitted by this user")
	
	$("#workingNote").show();
	$.post
	(	$(this).attr('href'),
		{},
		function(data)
		{
			displayEventsOnMap(data);
			
		}
	)
	$("#reviewedBy").show()
	return false;
})

$('#reviewedBy').click(function()
{
	$(this).hide()
	$("#contentSecondary h3").html("Reviewed by this user")
	$("#workingNote").show();
	$.post
	(	$(this).attr('href'),
		{},
		function(data)
		{
			displayEventsOnMap(data);
		}
	)
	$("#submittedBy").show()
	return false;
})



$('.profileItem').find('.btn').live("click",function(){
	var itemId=$(this).closest('.profileItem').attr('id');
	$.post
	(
		"/index.php/user/getProfile_ajx", {"fieldCode":itemId} , function(data)
		{
			data = $.evalJSON(data);
			$.prompt(data.form,
				{submit:updateProfile}
				);
			}
		)
	})






$('.btnHappeningToday').live("click",function(){
	$('.btnHappeningToday, .btnAddedToday').removeClass("curr");
	$(this).addClass("curr"); // label this as currently selected

	var form=$(this).closest('.proximity').find('.form');

	//form.find('.dateField').DatePickerSetDate('5/29/2009')
	
	form.find('input[name="searchRadius"]').val($(this).closest('.proximity').find('.radRef').html()); // set search radius
	form.find('input[name="lat"]').val($(this).closest('.proximity').find('.latRef').html()); // set lat
	form.find('input[name="lng"]').val($(this).closest('.proximity').find('.lngRef').html()); // set lng

	form.find('input[name="searchByRadiusToggle"]').val(1); // turn on searchByRadius
	form.find('input[name="noDate"]').val(0); // disable "include any dates"
	form.find('input[name="daysSinceAdded"]').val(0); // unset searching by how recently the event was added
	
	search(form);
	return false;
	})

$('.btnAddedToday').live("click",function(){
	$('.btnHappeningToday, .btnAddedToday').removeClass("curr");
	$(this).addClass("curr");
	
	var form=$(this).closest('.proximity').find('.form');
	form.find('input[name="searchRadius"]').val($(this).closest('.proximity').find('.radRef').html());

	form.find('input[name="lat"]').val($(this).closest('.proximity').find('.latRef').html());
	form.find('input[name="lng"]').val($(this).closest('.proximity').find('.lngRef').html());

	form.find('input[name="searchByRadiusToggle"]').val(1);
	form.find('input[name="noDate"]').val(1);
	form.find('input[name="daysSinceAdded"]').val(1);

	search(form);

	return false;
	})


$('.btnNewProximity').live("click",function(){
	prxFormPrompt("",0,"",.2)

	return false;
	})

$(".btnEditProximity").live("click",function(){
	currPrx = $(this).closest('.proximity');
	prxId = currPrx.find('.idRef').html();
	prxAddr = currPrx.find('.addrRef').html();
	prxRad = currPrx.find('.radRef').html();
	prxName = currPrx.find('h4').html();

	prxFormPrompt(prxAddr,prxId,prxName,prxRad);

	return false;
	})


$(".btnDeleteProximity").live("click",function(){
	currPrx = $(this).closest('.proximity');
	prxId = currPrx.find('.idRef').html();
	deleteProximity(prxId);
	return false;
	})

function highlightCorrectDatePreset(dates){



}
	
function prxFormPrompt(prxAddr, prxId,prxName,prxRad){
prxName=htmlentities_single(prxName);
newProximityForm="<h3>New Prximity</h3>";
newProximityForm+="<p class='error'></p>";
newProximityForm+="Prximity Name:<br/>";
newProximityForm+="<input name='prxName' value='"+prxName+"'/><br/>";
newProximityForm+="<input type='hidden' name='id' value="+prxId+">";
newProximityForm+="Address or Intersection in NYC:<br/>";
newProximityForm+="<input name='prxAddress' value='"+prxAddr+"'/><br/>";
newProximityForm+="Search Radius (number between .2 and 2):<br/>";
newProximityForm+="<p style='width:200px' id='prxRadius'/></p>";
newProximityForm+="<p class='readout'>"+prxRad+" mile(s)</p>";
newProximityForm+="<input type='hidden' name='prxRadius' value="+prxRad+"/>";

	$.prompt(newProximityForm,{
	submit: addProximity,
	loaded: function()
		{
			$('#prxRadius').slider
			({
				value:+prxRad,
				min:.2,
				max:3.5,
				step:.1,
				slide:function(event, ui)
				{
					$("#jqi").find('.readout').html(ui.value+" mile(s)");
					$("#jqi").find('input[name="prxRadius"]').val(ui.value);
				}
			});
	
		},
	buttons: {Submit:"Submit"}
	}
	);
}



if($('.liveSearch').size()==0){ 	// if this is NOT the front page


$('#searchResultsListing').find('h4').live("click",function(){
	

	//simple accordion functionality
	
	var checkElement=$(this).closest('div').find('.cont');
	if(checkElement.is(":visible")){
		var linkURL = checkElement.find(".full_listing").attr("href");
		window.location=linkURL;
	} else {
	$('#searchResultsListing').find('.cont:visible').slideUp('fast');
	checkElement.slideDown('fast')
	}
	//save item and page to a post variable
	if($(".liveSearch").size()>0){
	
		$.post("/index.php/event/saveResultsPagination",{"page":window.currPage,"item":$('#searchResultsListing').find('h4').index(this)})
		$('form').find('input[name="savedPage"]').val(window.currPage); // reset default page to 1 until page reload
		$('form').find('input[name="savedItem"]').val($('#searchResultsListing').find('h4').index(this)); // reset default page to 1 until page reload
		
		window.savedItem = $('#searchResultsListing').find('h4').index(this);
		
		}
		
	window.currItem = $('#searchResultsListing').find('h4').index(this);
	
	zoomout();
	
	})
} else { //this IS the front page
$('#searchResultsListing').find('h4').live("click",function(evt){
	
	$('#searchResultsListing').find('h4').removeClass('curr');
	$(this).addClass('curr');
	var checkElement=$(this).closest('div').find('.cont');
	$("#summaryReadout").html("<h5>"+$(this).find('.mapListingHeaderText').html()+"</h5>"+$(checkElement).find('div').html())
	$("#summaryReadout h5").clone().prependTo("#summaryReadout .scrollable");
	$("#summaryReadout > h5").remove();
	$("#summaryReadout .summary_postedBy").clone().prependTo('#summaryReadout .summaryBottom');
	$("#summaryReadout .scrollable .summary_postedBy").remove();
	$("#summaryReadout .scrollable .full_listing").clone().prependTo('#summaryReadout .summaryBottom');
	$("#summaryReadout .scrollable .full_listing").remove();
	//$('.fpEventPopout').remove();
	//$(this).closest('.mapList').prepend('<div class="fpEventPopout"><div class="fpEventPopoutInner">'+$(checkElement).find('div').html()+'</div></div>')
	/*$('.fpEventPopoutInner')
		.click(function(evt){evt.stopPropagation()})
		.hover(
			function(){
			$(this).find('.popoutCloser').show()
			}, function(){
			$(this).find('.popoutCloser').hide();
			}
			)*/

		if($(".liveSearch").size()>0){
	
		$.post("/index.php/event/saveResultsPagination",{"page":window.currPage,"item":$('#searchResultsListing').find('h4').index(this)})
		$('form').find('input[name="savedPage"]').val(window.currPage); // reset default page to 1 until page reload
		$('form').find('input[name="savedItem"]').val($('#searchResultsListing').find('h4').index(this)); // reset default page to 1 until page reload
		
		window.savedItem = $('#searchResultsListing').find('h4').index(this);
	
		}
		
	window.currItem = $('#searchResultsListing').find('h4').index(this);
	
	zoomout();
	
	})
}

$('body').click(function(evt){
	var tget = evt.target;
	
	if($('#date').hasClass('visible')){
		var dp = invalidDateStripper($('#date').DatePickerGetDate())
		if(dp.length==0){
			if(window.dateHighlight==undefined){
			$('#datePre_next7days').click();
			} else {
			$('#'+window.dateHighlight).click();
			} 
		}
		
		if(!$(tget).hasClass('.searchResultsH4')){$('#date').removeClass('visible');}
		
	}
	$('#searchAdvancedOptions h3').removeClass('hover');
})
	
function eventDetailsUpdate(rData){
	if(rData.newReview){
		$('#reviews').find("#addReviewBtn").after(rData.newReview);
		$('.review').eq(0).hide().show('slow');
		}
	if(rData.vote){
		$("#voteButtons").replaceWith(rData.vote);
	}
	$.jGrowl('Your review was successfully added.');
}


function addReview(v,m,f){

	$("#jqi_state0_buttonOk").hide(); 
	$("#jqi_state0_buttonOk").before("<button class='jqidefaultbutton' id='buttonWorking'>submitting...</button>");

	//if vote isn't set, it wasn't on the form, which means the user already voted
	if(f.vote){var postvars={'reviewContent':f.reviewContent,'vote':f.vote}}
	else {var postvars={'reviewContent':f.reviewContent}}

	$.post(
		"/index.php/event/addReview",
		postvars,
		function(data){
			data=$.evalJSON(data);
			if(data.status==1){
			
			eventDetailsUpdate(data);

			
			} else {$.prompt(data.errorMessage);}
		}
	)
}


	//begin code for adding reviews
$("#addReviewBtn").click(function(){

		$.post("/index.php/event/checkForVote/",{},
		function(data){
		data=$.evalJSON(data);
		var addReviewTxt="";

		if(data.checkVote=="not found"){addReviewTxt+="Like it?<br/><input name='vote' type='radio' value='1'/> Yes<br/><input name='vote' type='radio' value='0'/> No<br/>";}
		else {
			addReviewTxt+="Like it?<br/>You said: ";
			if(data.checkVote==0){addReviewTxt+="<img src='/images/thumbsDown.png' alt='[thumbs down]' /><br/>";}
			else {addReviewTxt+="<img src='/images/thumbsUp.png' alt='[thumbs up]' /><br/>"}
		}
		
		addReviewTxt+="Enter your feedback:<br/><textarea name='reviewContent' /></textarea>";

			$.prompt(addReviewTxt,{
			submit: addReview,
			buttons: {Submit:"Submit"}
			}
			);
		})		
		
		return false;
	})
	
$("#prevPage").click(function(){

	if(window.currPage>1){
	pageTo(+window.currPage-1);
	}
	
	return false;

})

$("#nextPage").click(function(){

	
	if(window.currPage<window.totalPages){
	pageTo(+window.currPage+1);
	}
	
	return false;
})
	

	
$('#voteButtons #voteThumbsUp').click(function(){
	$.post("/index.php/event/addVote/1",{},
		function(data){
			data=$.evalJSON(data);
			if(data.status==1){
			
			eventDetailsUpdate(data);
			$.jGrowl("Thanks. Your vote was recorded.")
			} else {$.prompt(data.errorMessage);}
		})
	return false;
})

$('#voteButtons #voteThumbsDown').click(function(){
	$.post("/index.php/event/addVote/0",{},
		function(data){
			data=$.evalJSON(data);
			if(data.status==1){
			
			eventDetailsUpdate(data);
			$.jGrowl("Thanks. Your vote was recorded.")			
			} else {$.prompt(data.errorMessage);}
		})
	return false;
})

$('#btnLogin').click(function(){
	$("#loginForm_ajx").slideDown();
	$('body').click(function(){
		$("#loginForm_ajx").slideUp();
		})
	$("#loginForm_ajx").click(function(evt){evt.stopPropagation()})
return false;
})

function avatarUpload(){

	$("#newAvatarWorking").html("Uploading your file...")

        $.ajaxFileUpload
        (
            {
                url:'/index.php/user/addChangeAvatar',
                secureuri:false,
                fileElementId:'fileToUpload',
                dataType: 'json',
                success: function (data, status)
                {
                    if(typeof(data.error) != 'undefined')
                    {
                        if(data.error != '')
                        {
				$("#newAvatarWorking").html("");
				$("#newAvatarError").html(data.error);
				return false
			
                        }else
                        {
				$('#profileItem_about .avatarLarge img').remove();
				$('#profileItem_about .avatarLarge').prepend(data.image);
				var newAvatarWidth = $('#profileItem_about .avatarLarge').find('img').width();
				
				$('#profileItem_about .avatarLarge').css('width',newAvatarWidth+"px");
				$.prompt.close();
                        }
                    }
                },
                error: function (data, status, e)
                {
                    alert(e);
                }
            }
         )
         return false;
}


$('#btnAddChangeAvatar').click(function(){
$.prompt('<form name="form" action="" method="POST" enctype="multipart/form-data"><h3>Choose an image to represent you</h3><p class="note">Note: You may need refresh the page after uploading to see your new avatar.</p><p id="newAvatarError" class="error"></p><input type="file" name="fileToUpload" id="fileToUpload"><p id="newAvatarWorking" class="workingNote"></p></form>',
	{
	submit:avatarUpload
	}
)
})

$("#addCommentBtn").live("click",function(){

var newCommentForm="<h3>Say your piece...</h3>";
newCommentForm+="<p id='jqiError' class='error'></p>";
newCommentForm+="<textarea name='comment'></textarea>";

$.prompt(newCommentForm,{submit:addComment});
return false;
})

function addComment(v,m,f){

	// hide submit button, insert "working" note (prevent double posts)
	$("#jqi_state0_buttonOk").hide(); 
	$("#jqi_state0_buttonOk").before("<button class='jqidefaultbutton' id='buttonWorking'>submitting...</button>");


	$.post('/index.php/user/comment',
		{
			username:$("#profileUsernameRef").html(),
			comment:f.comment
		},
		function(data)
		{
			data=$.evalJSON(data);
			if(data.error!=""){
			$("#jqiError").html(data.error);
			$("#jqi_state0_buttonOk").show(); 
			$("#buttonWorking").remove(); 
			
			} else {
			$.prompt.close()
			$('#comments #addCommentBtn').after(data.comment);
			$('.comment').eq(0).hide().show('slow');
			$("#comments .alertFlat").hide('slow');
			$.jGrowl("Your comment was added successfully.")
			}
		}
	)

return false
}


$("#submittedBy").click()

alertTimeout=setTimeout(
	function(){
	$("#alert").fadeOut(2500);
	}, 750
)




if($(".eventDetails").size()==1 && $("#addedByInfo").size()==1){


	var lat = $('#contentMain').find('.latRef').html();
	var lng = $('#contentMain').find('.lngRef').html();
	var id = $('#contentMain').find('.idRef').html();	
	
	$.post("/index.php/event/getInRadius",
		{
		'lat':lat,
		'lng':lng,
		'id':id,
		'radius':.5,
		'days':7
		},
		function(data){
			displayEventsOnMap(data);
		}
	);
}





function createPagination(wrapper,items,numPerPage,currPage){

// kickass all purpose pagination! feed it an identifier 
// for the wrapper and for the items to be paginated, currPage
// should default to 1, and numPerPage is the number of results 
// per page

totalItems=$(wrapper).find(items).size();
totalPages=Math.ceil(totalItems/numPerPage);

if(totalItems>numPerPage){

firstItem=(currPage-1)*numPerPage;
lastItem=Math.min(currPage*numPerPage,totalItems);

paginationHTML="<div class='mPagination'><a class='btn mPagLeft' href=''>< Previous page |</a><span class='mReadout'>"+(firstItem+1)+" - "+(lastItem)+" of "+totalItems+"</span><a href='' class='btn mPagRight'>| Next page ></a></div>"

if($(wrapper+" .mPagination").size() > 0)
	{
		$(wrapper+" .mPagination").replaceWith(paginationHTML)
	} else {
		$(wrapper).append(paginationHTML);
	}

$(wrapper).find(items).hide();
for(var i=(currPage-1)*numPerPage; i<currPage*numPerPage; i++){
$(wrapper+" "+items).eq(i).show();
}


$(wrapper+" .mPagination .mPagLeft")
	.unbind()
	.bind("click",function()
	{
		newPage=Math.max(currPage-1,1);
		createPagination(wrapper,items,numPerPage,newPage)
		return false;
	})

$(wrapper+" .mPagination .mPagRight")
	.unbind()
	.bind("click",function()
	{
		newPage=Math.min(currPage+1,totalPages);
		createPagination(wrapper,items,numPerPage,newPage)
		return false;
	})
}

return false;
}

createPagination("#comments",".comment",5,1)

if($(".eventDetails.listing").size()>0){
	
	//show user submissions on map
	
	window.marker=new Array();

	var minLat=5000;
	var maxLat=-5000;
	var minLng=5000;
	var maxLng=-5000;

	for(var i=0;i<$(".eventDetails").size();i++)
	{

		cLat = $(".eventDetails .latRef").eq(i).html()
		cLng = $(".eventDetails .lngRef").eq(i).html()
		
		if(cLat<minLat){minLat=cLat}
		if(cLng<minLng){minLng=cLng}
		if(cLat>maxLat){maxLat=cLat}
		if(cLng>maxLng){maxLng=cLng}
		
		//make the icon lettered



		letteredIcon=new GIcon(G_DEFAULT_ICON);
		if(i<99){
		letteredIcon.image="/images/markers/custom/markers_dark"+(i+1)+".png";
		} else {
		letteredIcon.image=	"/images/markers/custom/markers_dark_shapes1.png";
		}
		letteredIcon.shadow =	"/images/markers/custom/marker_shadow.png";
		letteredIcon.shadowSize = new GSize(36,24)
		letteredIcon.iconAnchor=new GPoint(12,24);
		letteredIcon.iconSize = new GSize(24,24)
		
		

		// potential problem -- what if they're in the same place? you only see one marker...
		window.marker[i]=new GMarker(new GLatLng($(".eventDetails .latRef").eq(i).html(), $(".eventDetails .lngRef").eq(i).html()),{icon:letteredIcon})
		window.map.addOverlay(window.marker[i]);
		
	}

	midLat=(maxLat*1+minLat*1)/2
	midLng=(maxLng*1+minLng*1)/2

	var x=Math.min(
	window.map.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(maxLat,maxLng),new GLatLng(minLat,minLng)),new GSize(300,200)),
	15
	);

	window.map.setZoom(x)


	window.map.panTo(new GLatLng(midLat,midLng)); //pan to center

}

if($('.eventDetails .cell').size()>0){
$('.eventDetails').each(function(){$(this).find('.cell:even').addClass("zebra");})
}


/*if($("#searchAdvancedOptions input:checked").size()<1){
	$("#searchAdvancedOptions").hide();
	}
*/	
$("#advancedOptionsToggle").toggle(
	function(){
		$(this).addClass('exp').html('Hide More Search Options');
		
		$("#searchAdvancedOptions").slideDown('slow')
		return false;
		},
	function(){
		$(this).removeClass('exp').html('Show More Search Options');
		$("#searchAdvancedOptions").slideUp('slow')
		return false;
		}
)

$("input[name='fDate']").mouseup(function(){

	//populate advanced date selection

	var fD = $(this).val();
	var el = $(this);
	el.closest('.field').next('div').hide();
	el.closest('.field').append("<div style='width:16px;height:16px;background-image:url(/images/ajax-loader-small.gif);margin:10px 0;' class='working'></div>");

		$.post
		(
			"/index.php/event/getDateDetails", {"fDate":fD} , function(data)
			{
				el.closest('.field').find('.working').remove();
				el.closest('.field').next('div').replaceWith(data);
				el.closest('.field').next('div').hide().show('fast');
				
				if($("#eventBuilderDatePicker").size()>0){
					initializeEventBuilderDatePicker();
					}
			}
		)
	})


$(".nSelectAll").click(function(){
	
	$(this).closest("div").find("input[type='checkbox']").attr("checked",true);
	search($(this).closest("form"))
	return false;
})

$(".nDeselectAll").click(function(){
	$(this).closest("div").find("input[type='checkbox']").attr("checked",false);
	search($(this).closest("form"))
	return false;
})

$(".boroughSelectAll").click(function(){
	$(this).closest(".borough").find("input[type='checkbox']").attr("checked",true);
	$(this).closest(".borough").find('.areas').show();
	search($(this).closest("form"))
	
	return false;
})

$(".boroughSelectNone").click(function(){
	$(this).closest(".borough").find("input[type='checkbox']").attr("checked",false);
	search($(this).closest("form"))
	return false;
})

$("#searchResultsListing .zoomin").live("click",function(){
	var currItem = $("#searchResultsListing .zoomin").index(this);
	zoomInOn((window.currPage-1)*(window.pagesize)+currItem);
	$(this).hide();
	$(this).closest('div').find('.zoomout').show();
	return false;
	})

$("#searchResultsListing .zoomout").live("click",function(){
	zoomout();
	return false;
	})

$("#eventField_address input[name='address']").keyup(function(){
$("#checkAddressWrapper").remove();
$("#addressOptions").remove();
if(trim($(this).val())!=""){$(this).after("<div id='checkAddressWrapper' style='text-align:right;font-size:9px'><a id='checkAddress' href=''>Check Address</a></div>")}
})

$('#checkAddress').click(function(){
return false;
})

$("#eventField_eventRepeat").hide();

/*
$("#eventField_address").bind("keypress", function(e) {
  if (e.keyCode == 34){alert('enter'); return false;}
});
*/

$("#eventField_address input[name='address']").keypress(function (event){if(event.keyCode==13){$(this).blur();return false} else {return true}});

$("#eventField_address input[name='address']").blur(function(){
	var address = trim($(this).val());
	
	if($("#checkAddress").size()==0){return false}
	$("#checkAddressWrapper").html("checking...");
	$("#checkAddressWrapper").after("<div style='width:16px;height:16px;background-image:url(/images/ajax-loader-small.gif);margin:10px 0;' class='working'></div>");
	
	addressField = $(this)
	$('#addressOptions').remove();
	
	$.post('/index.php/event/checkAddress',
		{"address":address},
		function(data){
			
			data=$.evalJSON(data);
			
			var status = data.Status.code;
			if(status==200){
				//query was success
				resultCount = data.Placemark.length;
				
				if(resultCount > 1){
					$('#addressOptions').remove();
					//multiple results were returned
					
					window.map.clearOverlays();
					window.addressListMarkers = Array();
					window.highlightMarkers = Array();
					
					var addressList="";
					
					window.map.setCenter(new GLatLng(0,0),0);
					var bounds = new GLatLngBounds();
					for(i=0;i<resultCount;i++){
						
						var lat = data.Placemark[i].Point.coordinates[0];
						var lng = data.Placemark[i].Point.coordinates[1];
						
						addressList+="<li>"+(i+1)+". <a rel='"+lat+",,,"+lng+",,,"+data.Placemark[i].shortAddress+"' href='' class='addressOption'>"+data.Placemark[i].address+"</a></li>";
						addressIcon=new GIcon(G_DEFAULT_ICON);
						addressIcon.image = "/images/markers/custom/markers_dark"+(i+1)+".png";
						
						addressIcon.shadow =	"/images/markers/custom/marker_shadow.png";
						addressIcon.shadowSize = new GSize(36,24)
						addressIcon.iconAnchor=new GPoint(12,24);
						addressIcon.iconSize = new GSize(24,24)
						
						window.addressListMarkers[i]=new GMarker(new GLatLng(lat, lng));
						

						
						thisLatLng = new GLatLng(data.Placemark[i].Point.coordinates[1], data.Placemark[i].Point.coordinates[0])
						window.addressListMarkers[i]=new GMarker(thisLatLng,{icon:addressIcon});
						GEvent.addListener(window.addressListMarkers[i],"click", function(latlong){
							var itemIndex = ($(window.addressListMarkers).index(this))*1;
							$(".addressOption").eq(itemIndex).click();
							})
						bounds.extend(thisLatLng);
						window.map.addOverlay(window.addressListMarkers[i]);
						}
					window.map.setZoom(map.getBoundsZoomLevel(bounds));
					window.map.setCenter(bounds.getCenter());
					
					addressField.closest('div').append("<ol id='addressOptions'>The address provided matches multiple locations. Please pick from the list below, or try entering a more specific address."+addressList+"</ol>");
					
					$("#checkAddressWrapper").remove();
					} else { // one event returned
						addressSelect(data.Placemark[0].address,data.Placemark[0].Point.coordinates,data.Placemark[0].shortAddress);
						}
			} else {
				addressField.closest('div').append("<ol id='addressOptions' class='error'>No matches found for that address</ol>");
				$("#checkAddressWrapper").remove();
			}
			
			addressField.closest('div').find('.working').remove();
			
	}
	
	)
	
	})
	
$('.addressOption').live("click",function(){
	var coords = $(this).attr("rel").split(",,,")

	var coordinates=Array(coords[0],coords[1]);
	var shortAdd = coords[2];
	
	addressSelect($(this).html(),coordinates,shortAdd);
	return false;
	
	})
	
if($("input[name='address']").size()>0 && trim($("input[name='address']").val())!=""){
	$("#checkAddressWrapper").remove();
	$("input[name='address']").after("<div id='checkAddressWrapper' style='text-align:right;font-size:9px'><a id='checkAddress' href=''>Check Address</a></div>")
	$("input[name='address']").trigger('blur');
	}
	
if($("#eventField_address").size()>0){
	$("#eventField_address h3").after("<div style='position:absolute;margin:0;top:4px;right:0;font-size:9px;text-align:right' id='bugReport_Address'>Having trouble providing an address? <a href=''>Click Here</a></div>")
}

$("#bugReport_Address a").click(function(){
	$.prompt(
		"<p>We're sorry you're having trouble. Please tell us anything you can about the problem, and we'll get it fixed as soon as possible.</p><textarea name='bugReport'></textarea>",
		{

			submit:function(v,m,f){
				var addressSearched = $("#newEventForm input[name='address']").val();
				f.bugReport += "\n\nAddress searched for: "+addressSearched;
				
				$.post('/index.php/event/bugReport',{"bugReport":f.bugReport},function(data){
					//$.jGrowl(data)
					alert(data);
					
				})
				}
			
		}
	
	)
	
	return false;
})

$(".zoomout").live("click",function(){
	zoomout();
	})
	
$(".boroughSelectAll, .boroughSelectNone, #fsFilters p, .advOption, #userPrefsToggle, #contentSecondaryUtils > span").hover(
	function(){
	$(this).addClass('hover');
	
	},
	function(){
	$(this).removeClass('hover');
	}
	
	)
$('#searchAdvancedOptions h3').hover(
	function(){
		$(this).addClass('hover');
	},
	function(){
		if(!$(this).closest('.fsField').find('fieldset').is(':visible')){
		$(this).removeClass('hover');
		}
	}
	)

$(".boroughShowHide").click(function(){
	var target = $(this).closest(".borough").find('.areas');
	
	if(target.is(":visible")){
		target.hide();
		} else {
		target.show();
		}
	
	var boroughs = new Array();
	$(this).closest("form").find('.areas').each(function(){
		if($(this).is(":visible")){
		boroughs.push($(this).closest('form').find('.areas').index($(this)))
		}
	})
	boroughs=boroughs.join(",");
	
	$(this).closest('form').find("input[name='savedBoroughs']").val(boroughs);
	$(this).closest('form').find("input[name='savedBoroughs']").val(boroughs);
	
	$.post(
		"/index.php/event/saveResultsPagination",
		{"boroughs":boroughs}
		)

	return false;
})


$('#fsFilters p').click(function(){

	

	var chbox = $(this).find('input[type="checkbox"]')
	
	if($(chbox).is(':checked')){
		if($(chbox).attr('name')=='featuredOnly'){
		$('#mapTag_Filters___featuredOnly').remove();
		}
		if($(chbox).attr('name')=='freeOnly'){
		$('#mapTag_Filters___freeOnly').remove();
		}
		
		$(chbox).attr('checked',false);
		$(this).removeClass('checked');
	} else {
		if($(chbox).attr('name')=='featuredOnly'){
		$("#mapTagWrapper").append("<li id='mapTag_Filters___featuredOnly' class='mapTag'><a class='mapTagRemover' href=''>X</a> <span class='advValue'>true</span><span class='advText'>Prximity Picks</span></li>");
		}
		if($(chbox).attr('name')=='freeOnly'){
		$("#mapTagWrapper").append("<li id='mapTag_Filters___freeOnly' class='mapTag'><a class='mapTagRemover' href=''>X</a> <span class='advValue'>true</span><span class='advText'>Free Only</span></li>");
		}
		$(chbox).attr('checked',true);
		$(this).addClass('checked');
	}
	
	search($(this).closest('form'));
})


$('.liveSearch').find('input[name="savedBoroughs"]').each(function(){
	
	var boroughs = $(this).val().split(",");
	
	for(x in boroughs){
		$(this).closest('form').find('.areas').eq(boroughs[x]*1).show();
		}
	
	
	})

	
})
 
 
/*
 *
 *
 *
 * START PRX.LIVESEARCH.JS
 *
 *
 *
 *
 */
 
$(document).ready(function(){
	
	
	

	
	//$.preloadImages(preloadimages)
	
	
	
	
	
	
	$('.slider').each(function(){
		var searchRadius = $(this).closest('.form').find('input[name="searchRadius"]').val()
		$(this).slider(
		{
			stop: function(event, ui)
			{
				$(this).closest('.form').find('input[name="searchRadius"]').val(ui.value);
				if($(this).closest('.form').find('input[name="searchRadius"]').val()!=0){search($(this).closest('.form'))} // is lat and lng are set, run a search
			},
			slide: function(event, ui)
			{
				$(this).closest('.form').find(".readout").html(ui.value+" miles");

			},
		min:.2,
		max:3.5,
		step:.1,
		value:searchRadius
		})
	$(this).closest('.form').find('.readout').html(searchRadius+" mile(s)");
	})
	
	//simple tabbing feature,
	$('.tab').live("click",function(){
		tabTo(this);
	})

	//toggle between searching by radius and searching by neighborhood;
	$('.searchByRadius').click(function(){
		$(this).closest('.form').find('input[name="searchByRadiusToggle"]').val(1);
		if($(this).closest('.form').find('input[name="searchRadius"]').val()!=0){search($(this).closest('.form'));}
		})
	$(".searchByNeighborhood").click(function(){
		$(this).closest('.form').find('input[name="searchByRadiusToggle"]').val(0);

		search($(this).closest('.form'))
		})

	$(".dateField").change(function(){
		search($(this).closest('.form'));
		})

	
		
	$('.searchForm form input[type="checkbox"]').click(function(){
		search($(this).closest('.form'));
		})

		
	$('.userAddress').change(function()
	{ 		
		window.currForm=$(this).closest('.form');

		var userAddress=$(this).val();
		
		if(userAddress==""){return false;}
		
		
		window.geoCoder.getLocations(userAddress+", New York City, NY", function(data)
		{

			if(data.Placemark){
							
				//if(data.Placemark[0].AddressDetails.Country.AdministrativeArea)
				//{
				//if(isset(data.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.LocalityName)){var borough = ", "+data.Placemark[0].AddressDetails.Country.AdministrativeArea.Locality.LocalityName;} else {var borough = "";}
				//if(borough == ", New York"){borough = ""} // don't show locality if it's "new york"
				
				var address=data.Placemark[0].address.split(", ");
					var address1 = address[0];

					window.currForm.find(".userAddress")
						.val
						(
							address1

						)
					
				window.currForm.find("input[name='lng']").val(data.Placemark[0].Point.coordinates[0]);
				window.currForm.find("input[name='lat']").val(data.Placemark[0].Point.coordinates[1]);
				search($(this).closest('.form'))
			} else {
				$.jGrowl("The specified address could not be found.")

				}
				
		})
	})

	
	
	if($('.liveSearch').size()>0){

		var dString = $('input[name="dateString"]').val();
		if(dString==0){dString = window.datePresets['datePre_next14days'];$('input[name="dateString"]').val(dString)}
		
		if(dString == window.datePresets['datePre_next7days']){
			$("#datePre_next7days").addClass('curr');
		} else if (dString == window.datePresets['datePre_thisWeekend']) {
			$("#datePre_thisWeekend").addClass('curr');
		} else if (dString == window.datePresets['datePre_nextMonth']) {
			$("#datePre_nextMonth").addClass('curr');
		} else if(dString == window.datePresets['datePre_today']){
			$("#datePre_today").addClass('curr');
		} else if(dString == window.datePresets['datePre_next14days']){
			// do nothing
			} else {
			$('#datePre_calendar').addClass('curr')
			}
		
		$('.dateField').DatePickerSetDate(dString.split(', '))
		
		search($('.form').eq(0));
		}
	
	if($('.btnHappeningToday').size()>0){
		$('.btnHappeningToday').eq(0).click()
		}

	$('.delete').click(function()
	{
		if
		(
			
			confirm("Are you sure you want to delete this event? The event will be deleted permanently.")
		)
		{
			return true
		} else {
			return false
		}
		return false;
	})
	
	
		$('.seriesDelete').click(function()
	{
		if
		(
			//$.prompt('hi',{ buttons: { Ok: true, Cancel: false } })
			confirm("Are you sure you want to delete this series? The series and all its events will be deleted permanently.")
		)
		{
			return true
		} else {
			return false
		}
		return false;
	})
	
	
	$('.newsletterSignup').click(function(){

var newCommentForm="<h3>Enter your email</h3>";
newCommentForm+="<p id='jqiError' class='error'></p>";
newCommentForm+="<p>Our newsletter contains featured events from our listings.</p>"
newCommentForm+="<input name='email'>";
//$.prompt("hi");
$.prompt(newCommentForm,{submit:addNewsletterRecipient});
return false;
})

function addNewsletterRecipient(v,m,f)
{

	$.post('/index.php/user/addNewsletterRecipient',
		{email:f.email},
		function(data)
		{
			data=$.evalJSON(data);
			if(data.error!="")
			{
				$("#jqiError").html(data.error);				
			} else {
				$.prompt.close()
				$.jGrowl("Thanks! Your email was added successfully.")				
			}
		}
		
	)
	
	return false;
}

$("#searchResultsListing h4").live("mouseover",function()
	{
	
	$(this).addClass("hover");
	window.map.addOverlay(window.markerHighlight[(window.currPage-1)*window.pagesize+$('#searchResultsListing h4').index(this)]);
	}
)

$("#searchResultsListing h4").live("mouseout",function()
	{
	
	$(this).removeClass("hover");
	window.map.removeOverlay(window.markerHighlight[(window.currPage-1)*window.pagesize+$('#searchResultsListing h4').index(this)]);
	}
)

$(".toggleView_supp").live("click",function()
{
	var toggleButton = $(this).closest(".eventSupp").find('.toggleView_supp.texted')
	var suppcont = $(this).closest(".eventSupp").find('.suppContent');
	var suppcont_prev = $(this).closest(".eventSupp").find('.suppContent_preview');
	if($(suppcont).is(":visible"))
	{
		$(toggleButton).html('more info');
		//$(this).closest('p').css('font-weight','normal')
		$(suppcont).hide()
		$(suppcont_prev).show()
	} else {
		$(toggleButton).html('less info')
		//$(this).closest('p').css('font-weight','bold')
		$(suppcont).show()
		$(suppcont_prev).hide();
	}
	return false;
})

$(".toggleView_supp_pastEvents").live("click",function(){
	if($('#pastDates_suppinfo').is(":visible")){$('#pastDates_suppinfo').hide('fast')}
	if(!$('#pastDates_suppinfo').is(":visible")){$('#pastDates_suppinfo').show('fast')}
return false
})

$('.neighborhood label').hover(
	function()
	{
		$(this).css('text-decoration','underline')
	},
	function()
	{
		$(this).css('text-decoration','none')
	}
	)

$('#nav li').hover(
	function()
	{
		$(this).addClass('navHover')
	},
	function()
	{
		$(this).removeClass('navHover')
	}
	)
	
$('.neighborhood label').click(function(){
	var box = $(this).closest(".neighborhood").find("input[type='checkbox']")
	if($(box).is(":checked")){
	$(box).attr("checked",false)
	} else {
	$(box).attr("checked",true)
	}
	search($(this).closest('form'))
	})

$('#contentSecondary span').click(function()
{

	if($(this).hasClass('current'))
	{
		return false
	}


	$('#workingNote').show();
	


	switch($(this).attr('rel')){
		case "thisMonth":
			var d = new Date();
			var month = d.getMonth();
			var year = d.getYear();
			var days = 32 - new Date(year,month,32).getDate();
			break;
		default:
			var days = 7;
	}
	$(this).closest("#contentSecondaryUtils").find('span').removeClass('current');
	$(this).addClass('current');

	getInRadius(.5,days);
	
	return false;
})

$("#userPrefs input[name='userPrefsApply']").live("click",function()
{
	var prefsForm = $(this).closest('form')
	
	prefsJSON = new Object;
	prefsJSON.oldPassword = prefsForm.find('input[name="oldpassword"]').val();
	prefsJSON.newPassword = prefsForm.find('input[name="newpassword"]').val();
	prefsJSON.newPasswordConfirm = prefsForm.find('input[name="newpasswordconfirm"]').val();
	prefsJSON.newDefaultHood = prefsForm.find('select[name="defaultArea"]').val()
	prefsJSON.emailMe = prefsForm.find('input[name="emailMe"]:checked').val();
	
	
	
	prefsJSON = $.toJSON(prefsJSON);
	
	$.post('/index.php/user/prefsUpdate',
	
		{'inputData':prefsJSON},
		function(data){
				
				data=$.evalJSON(data);
				if(data.status==1)
				{
					
					$("#userPrefs").hide()
					$("#userPrefs").replaceWith(data.html);
					
					$.jGrowl("Your changes were made successfully.");
				} else {
					
					$("#userPrefs .error").html(data.error);
					
				}
			
			}
	)
	
	
	
	
})



$('#searchAdvancedOptions h3').
	click(function(e){
		
		if($(e.target).closest('#searchAdvancedOptions').size()>0){
		$("#searchAdvancedOptions h3").removeClass('hover');
		$(this).addClass('hover');
		$("#searchAdvancedOptions .fsField fieldset").hide('fast') // if this is an advanced filter button, close any open adv filter windows
		}
		
		var fs = $(this).closest('.fsField').find('fieldset');
		if($(fs).is(':visible')){
			$(fs).hide('fast');
		} else {
		$(fs).show('fast');
		$('body').bind('click',function(){
			$(fs).hide('fast')
			
		})

		}
		})
	.click(function(evt){evt.stopPropagation()})

$(".searchResultsH4, #searchAdvancedOptions fieldset, .fpEventPopout, #date").live("click",function(evt){evt.stopPropagation()})



$('.advOption').click(function()
{
	var button = $(this).closest('.fsField').find('h3');
	var filterCat = $(button).html();
	
	var chbox = $(this).find('input');
	var text = $(this).find('.advText').html();
	var val = $(chbox).val();
	
	var advId = "mapTag_"+filterCat.replace(/ /g,'_')+"___"+val.replace(/ /g,'_');

	var cat = $(this).closest('.fsField').find('h3').html();
		
	if($(this).hasClass('checked')){
		$(this).removeClass('checked');
		$(chbox).attr('checked',false);
		
		$('#'+advId).remove();
	} else {
		
		
		var tagHTML = "<li id='"+advId+"' class='mapTag'><a class='mapTagRemover' href=''>X</a> <span class='advValue'>"+val+"</span><span class='advText'>"+text+"</span></li>";
		
		$("#mapTagWrapper").append(tagHTML);
		$(this).addClass('checked');
		$(chbox).attr('checked',true);
	}
	
	var count = $(this).closest('fieldset').find('input:checked').size();
	if(count==0){$(button).removeClass('curr')} else {$(button).addClass('curr')}
	search($(this).closest('form'));
	
})

$('.mapTagRemover').live('click',function()
{
	var mapTag = $(this).closest('.mapTag');
	
	var advData = $(mapTag).attr('id').substring(7);
	advData = advData.split('___');
	
	var filterCat = advData[0].replace(/_/g,' ');
	var val = advData[1].replace(/_/g,' ');
	
	if(filterCat=='Filters'){
		
		$('input[name="'+val+'"]').closest('p').click()
		$(mapTag).remove()
		
	} else {
	
		var button = $('#searchAdvancedOptions h3:contains("'+filterCat+'")');
		
		/*var advValue = $(mapTag).find('.advValue').html();
		var advText = $(mapTag).find('advTxt').html();
		alert(advValue+" | "+advText);
		*/
		$(button).closest('.fsField').find('input').each(function()
		{
			//alert($(this).val())
			if($(this).val()==val){
				$(this).attr('checked',false);
				$(this).closest('.advOption').removeClass('checked')
			}
		})
		
		var count = $(button).closest('.fsField').find('input:checked').size();
		
		if(count == 0){
			$(button).removeClass('curr')
		}
		
		$(mapTag).remove();
		
		search($("#searchAdvancedOptions").closest('form'));
	}
	return false;
	});
	




$("#userPrefs input[name='userPrefsCancel']").live("click",function(){
	$("#userPrefs").hide();
	$('#userPrefs form').each(function(){
	        this.reset();
	});
	

})
	
$("#userPrefsToggle").click(function()
{
	if($("#userPrefs").is(":visible"))
	{
		$("#userPrefs").hide();
	} else {
		$("#userPrefs").find('input[type="password"]').val("");
		$("#userPrefs").show();
	}
	
})



	$('.aboutPage_contact').click(function(){
		$('body').scrollTo('0px',800);
		$("#contactForm input[name='emailAddress']").trigger('focus');
		return false;
	})
	
		$('#contactForm textarea, #contactForm input[type="text"]')
		.focus(function(){
			$(this).addClass('focus')
			})
		.blur(function(){
			$(this).removeClass('focus')
			})

	
	//preload markers
	$("<img>").attr("src", '/images/markers/marker.png');
		$("<img>").attr("src", '/images/markers/blue/marker.png');

		for(var i=1;i<100;i++)
		{
			$("<img>").attr("src", '/images/markers/custom/markers_dark'+i+'.png');
			$("<img>").attr("src", '/images/markers/custom/markers_light'+i+'.png');
		}
			
})

