/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();

var zl = [];

function Browser() {
   var ua, s, i;
   this.isIE    = false;  // Internet Explorer
   this.isNS    = false;  // Netscape
   this.isMac   = false;  // Macintosh
   this.version = null;
   ua = navigator.userAgent;
   if ((i = ua.indexOf("Mac")) >= 0) {
     this.isMac = true;
   }
   s = "MSIE";
   if ((i = ua.indexOf(s)) >= 0) {
     this.isIE = true;
     this.version = parseFloat(ua.substr(i + s.length));
     return;
   }
   s = "Netscape6/";
   if ((i = ua.indexOf(s)) >= 0) {
     this.isNS = true;
     this.version = parseFloat(ua.substr(i + s.length));
     return;
   }
   // Treat any other "Gecko" browser as NS 6.1.
   s = "Gecko";
   if ((i = ua.indexOf(s)) >= 0) {
     this.isNS = true;
     this.version = parseFloat(ua.substr(i + s.length));
     return;
   }
   // Treat any other "Gecko" browser as NS 6.1.
   s = "Gecko";
   if ((i = ua.indexOf(s)) >= 0) {
     this.isNS = true;
     this.version = 6.1;
     return;
   }
 }
var browser = new Browser();

function popupshow(popper, content) {

	var leftOffset=25, topOffset=11, availWidth=0, availHeight=0, scrOfX=0, scrOfY=0;
	var p = { 
		contenttype:"", width:"200", height:"", direction:"", popid:"", classname:"section", loc:"nyc2", url:0, nolink:0,
		reposition:1, stayopen:0, call_event:"mouseover", title:"", arg1:"", arg2:"", center:0, margin:0, align:false, valign:false, popup_drag:0,
		enable_polygon:false, obj_name:false, focusarea_radius:0, backlight:0
	};
	if (typeof(popper) == "string"){
		popper = document.getElementById(popper);
	}

	var args = [popper, content];
	for (var i=2; i<arguments.length; i++){
		if (!arguments[i]) continue;
		args.push(arguments[i]);

		var arr_arg = arguments[i].split("=");
		var key = arr_arg[0];
		if (key == "type") key = "contenttype";
		if (key == "class") key = "classname";
		var val = arr_arg[1] || 1;
		p[key] = val;
	}
	
	if (!popper) return;
	if (window.options_no_tips && p.contenttype == "tip" && p.popid) return;
	
	if (!popper.getAttribute("id")){
		popper.setAttribute("id",'popup'+Math.round(Math.random()*999999));
	}

	popperid = popper.getAttribute("id");
	leftOffset = popper.offsetWidth+2;

	if (p.contenttype == "tip" && !document.getElementById(content) && !p.width){
		var txt = document.createElement("span");
		txt.style.font = "10px verdana";
		txt.innerHTML = content;
		document.body.appendChild(txt);
		p.width = txt.offsetWidth.toString();
		document.body.removeChild(txt);
	}
	
	if (p.height.indexOf('%')>0){
 		p.height = parseInt(p.height,10)*_UTIL_getAvailHeight()/100-22;
	}
	if (p.width.indexOf('%')>0){
 		p.width = parseInt(p.width,10)*_UTIL_getAvailWidth()/100-24;
	}

	if (p.center){
		var centerObj = document.getElementById(content);
		p.width = centerObj.clientWidth;
		p.height = centerObj.style.height;
	}
	if (p.margin){
		p.width = p.width - 2*p.margin;
		p.height = p.height - 2*p.margin;
	}
	
	var poppeeid = (p.popid!='') ? p.popid : popperid+"pop";
	var poppee = document.getElementById(poppeeid);

	if (!poppee){ // create poppee
	
		poppee = document.createElement("div");
		poppee.id = poppeeid;
		addClass(poppee, 'popup_outer');
		if (p.backlight){
			addClass(poppee, 'transparent');
		}
		
		poppee.style.top = 0;
		poppee.style.left = "-1000px";
		poppee.style.display = "none";

//		poppee.style.width = (parseInt(p.width)+24)+"px";
//		poppee.style.height = (p.height!='') ? (parseInt(p.height)+22)+"px" : "auto";

		
		poppee_inner = document.createElement("div");
		addClass(poppee_inner, "popup_inner");
//		poppee_inner.style.width = (parseInt(p.width))+"px";
//		poppee_inner.style.height = (p.height!='') ? (parseInt(p.height))+"px" : "auto";

		poppee.appendChild(poppee_inner);
		
		if (p.call_event=="click"){
		
	//		poppee.style.width = (parseInt(p.width)+20)+"px";
	//		poppee.style.height = (p.height!='') ? (parseInt(p.height)+30)+"px" : "auto";
		
			var h = document.createElement("h3");
			h.style.width = (parseInt(p.width)+4)+"px";
			addClass(h,"popup_header");
			h.innerHTML = unescape(p.title);
			
			if (p.popup_drag == 1) {
				h.onmouseover=function(){
					registerDrag(poppeeid);
				}	
				h.style.cursor="move";
			}
			
			var close = document.createElement("a");
			close.href="#";
			close.innerHTML="Close";
			close.style.width = "30px";
			addClass(close,"popup_close");
			close.onclick = function(){
				instant_popuphide(poppeeid);
				return false;
			}
			h.appendChild(close);
				
			poppee_inner.appendChild(h);
		}
			
		var c = document.createElement("div");
		addClass(c,"popup_content");
		c.id = poppeeid+"_content";
		c.style.width = (parseInt(p.width))+"px";
		c.style.height = (p.height!='') ? (parseInt(p.height))+"px" : "auto";
		c.style.padding = (p.call_event=="click") ? "7px" : "10px";
		poppee_inner.appendChild(c);

		popup_content(popper,poppee,c,content,p,args);
	}

	if (p.call_event != "click"){
		poppee.onmouseover = function(){
			popuppreserve(poppeeid);
			if (p.url){
				poppee.style.cursor = 'pointer';
				window.status = p.url;
			}
		}
		poppee.onmouseout = function(){
			if (!p.stayopen)
				popuphide(popper,poppeeid);
		}
	}
	
	if (p.url){
		poppee.onclick = function(){
			location.href = p.url;
			return false;
		}
	}

	if (!p.stayopen){
		instant_popuphide(current_popup_id);
		current_popup_id = poppeeid;
	}

	poppee.style.display = "block";
	poppee.style.visibility = "visible";

	if (!p.height)
		p.height = poppee.clientHeight;

	var offsetheight = poppee.offsetHeight+22;
	var offsetwidth = poppee.offsetWidth;

	availWidth = _UTIL_getAvailWidth();
	availHeight = _UTIL_getAvailHeight();
	scrOfX = _UTIL_getScrollLeft();
	scrOfY = _UTIL_getScrollTop();

	var left = _UTIL_getPosleft(popper);
	var top = _UTIL_getPostop(popper);
	
	if (p.ancestorID){
		var ancestor = document.getElementById(p.ancestorID);
		if (ancestor){
			left -= _UTIL_getPosleft(ancestor);
			top -= _UTIL_getPostop(ancestor);
		}
	}

	if (p.reposition==1){
		if ((left+offsetwidth+leftOffset)<(availWidth+scrOfX) && p.direction!='left'){
			poppee.style.left = (left + leftOffset) + "px";
		}else{
			poppee.style.left = Math.max(scrOfX,(left - offsetwidth-4)) + "px";
		}
	
		if ((top+offsetheight+topOffset)<(availHeight+scrOfY)){
			poppee.style.top = (top+topOffset) + "px";
		}else{
			poppee.style.top = Math.max(scrOfY,(availHeight+scrOfY+topOffset - offsetheight)) + "px";
		}
	}
	if (p.center){
		poppee.style.top = "0px";
		poppee.style.left = (availWidth-p.width)/2 + "px";
	}
	if (p.align){
		switch(p.align) {
			case "left": poppee.style.left = "0px"; break;
			case "center": poppee.style.left = scrOfX + (availWidth-p.width)/2 + "px"; break;
			case "right": poppee.style.left = (availWidth-p.width) + "px"; break;
		}
	}		
	if (p.valign){
		switch(p.valign) {
			case "top": poppee.style.top = scrOfY+"px"; break;
			case "middle": poppee.style.top = (availHeight > p.height) ? scrOfY+(availHeight-p.height)/2 + "px" : scrOfY+"px"; break;
			case "bottom": poppee.style.top = scrOfY+(availHeight-p.height) + "px"; break;
		}
	}
	if (p.margin){
	//	poppee.style.left = parseInt(poppee.style.left,10)+p.margin + "px";
	//	poppee.style.top = parseInt(poppee.style.top,10)+p.margin + "px";
	}

	if (!window.XMLHttpRequest) {
		_UTIL_setIFrameBackground(poppeeid);
	}
	
	if (p.backlight){
		_UTIL_setBacklight(poppeeid);
	}
}

function popup_content(popper,poppee,c,content,p,args){
	switch(p.contenttype) {
		case "photo":
			c.style.textAlign = "center";
			c.innerHTML = "<img src=\"" + content + "\" style=\"border: 1px solid #333;\" />";
			break;
		case "tip":
			c.style.fontSize = "10px";
			c.style.borderColor = "#555";
			c.style.background = "#FFFDEA none";
			c.style.paddingTop = "5px";
			c.style.paddingBottom = "5px";
			c.style.textAlign = "left";
			var o = document.getElementById(content);
			if (o) content = o.innerHTML;
			c.innerHTML = content;
			break;
		case "map":
			c.style.fontSize = "10px";
			include_script('/mason/Maps/MAP/'+p.loc+'.js?v=2','dynincl');
			c.innerHTML = drawMap(content, p.width, p.width);
			break;
		case "ajaxmap":
			include_script('/mason/Maps/MAP/'+p.loc+'.js?v=2','dynincl');
			break;
		case "psharkmap":
			c.innerHTML = "<img src='/img/spacer.gif' width='"+p.width+"' height='"+p.height+"' />";
			break;
		case "contentLoader":
			var contentObj = document.getElementById(content);
			contentObj.style.display = "block";
			c.appendChild(contentObj);
			break;
		case "ajaxLoader":
			if (p.loc) include_script('/mason/Maps/MAP/'+p.loc+'.js?v=2','dynincl');
			popup_loading(c);
			break;
		default:
			c.innerHTML = content;
			c.style.fontSize = "10px";
			break;
	}

	if (p.appendAsSibling){
		popper.parentNode.appendChild(poppee);
	}else{
		document.body.appendChild(poppee);
	}

	if (p.contenttype == "ajaxmap")
		getRemoteContent(content,c.id,p.width,p.loc,0,p.nolink);
	if (p.contenttype == "psharkmap"){
		if (p.enable_polygon)
			loadAJAXPSharkMap(content,c.id,p.width,p.height-17,false,false,p);
		else
			loadAJAXPSharkMap(content,c.id,p.width,p.height,false,true,p);
	}
	if (p.contenttype == "ajaxLoader")
		ajaxLoader(content, c.id, p.delegate,args);
}

function popup_loading(c){
	c.innerHTML = "<div class='ajaxLoading'>Loading ...</div>";
	c.style.fontSize = "10px";
	c.style.textAlign = "left";
}

function popuphide(popper,poppeeid){
	if (!poppeeid)
		poppeeid = popperid+"pop";
	else{
		if (poppeeid.split("=").length == 2)
			poppeeid = poppeeid.split("=")[1];
	}
	current_popup_timer = setTimeout("instant_popuphide('"+poppeeid+"')",100);
}

function popuppreserve(poppeeid){
	if (poppeeid == current_popup_id){
		clearTimeout(current_popup_timer);
	}
}

function instant_popuphide(poppeeid){
	clearTimeout(current_popup_timer);
	poppee = document.getElementById(poppeeid)
	if (poppee){
		poppee.style.display = "none";
		poppee.style.visibility = "hidden";
		_UTIL_hideIFrameBackground(poppeeid);
		_UTIL_hideBacklight();
		
	}
}

function general_popuphide(el){
	while (!el.id.match(/^popup[0-9]+pop$/)){
		el = el.parentNode;
	}
	el.style.display = "none";
	el.style.visibility = "hidden";
	_UTIL_hideIFrameBackground(el.id);
	_UTIL_hideBacklight();
}

var current_popup_id;
var current_popup_timer;

function loadAJAXPSharkMap(content,poppeeid,width,height,display_legend,link_to_main_map,p){
	var args = [];
	for(var i=0;i<arguments.length;i++){
		args.push(arguments[i]);
	}
	if (window.psharkmap_loader){
		var load = psharkmap_loader(p.loc, function(){ loadAJAXPSharkMap(args[0],args[1],args[2],args[3],args[4],args[5],args[6]) });
		if (load) return;
	}

	if (content.indexOf("propkey")>=0){
		var url = "/mason/Maps/mapparams.html?"+content+"&loc="+p.loc+"&display_legend=check";
		_UTIL_simpleAJAX(url,null,'GET',drawAJAXPSharkMap,poppeeid,width,height,display_legend,link_to_main_map,p);
	}else{
		drawAJAXPSharkMap(content,poppeeid,width,height,display_legend,link_to_main_map,p);
	}
}

function drawAJAXPSharkMap(arg,id,width,height,display_legend,link_to_main_map,p){
	if (display_legend=="false"){
		display_legend = false;
	}

	var obj = document.getElementById(id)
	if (!obj) return;
	obj.innerHTML = "";
	obj.align="left";
	var pairs = arg.split("&");
	var zoom = 3;
	var theme = "default";
	var overlay = "";
//	var display_legend = true;
	var propkey = false;
	
	for(var j=0;j<pairs.length;j++) {
		var key = pairs[j].split("=")[0];
		var val = pairs[j].split("=")[1];
		switch(key) {
			case "x": x = val;break;
			case "y": y = val;break;
			case "map" : mapname = val; break;
			case "theme": theme = val;break;
			case "propkey": propkey = val;break;
			case "zoom":
				var temp_zoom=parseInt(val);
				if (!isNaN(temp_zoom)){
					zoom = temp_zoom;
				}
			break;
			case "overlay": overlay = val;break;
			case "display_legend": display_legend = (val=="false")?false:val;break;
			case "mapid": mapid = " id=\"" + val + "\"";break
			
		}
	}
	
	var url = "/mason/Maps/?map="+mapname+"&x="+x+"&y="+y+"&zoom="+(zoom+1)+"&basemap="+theme+"&overlay="+overlay+"&star=1&report=1";
	
	//alert("here!");
	//window.open(url);
	
	var current_loc=window.location;
	var url_track = "/mason/tracker/map_track.html?map="+mapname+"/"+theme+"&popup=ajaxmap"+"&source="+current_loc;
	ajaxLoader(url_track);

	var map_obj = document.createElement("div")
	map_obj.className = "psharkmap";
	map_obj.style.width = width+"px";
	map_obj.style.height = (height-16)+"px";
	map_obj.style.padding = "0px";
	map_obj.style.margin = "0px";
	map_obj.style.position = "absolute";
	
//	map_obj.style.paddingTop = "7px";
//	map_obj.style.top = "7px";
	
	obj.appendChild(map_obj);
	if (map_obj){
		var map = new psharkmap(map_obj,psharkmapLocale(mapname));
		if (theme){
			map.setBasemap(theme);
		}
		if (overlay){
			map.setOverlays(overlay);
		}
		map.setMapCenter(x,y);
		if (p.arg1){
			map.createPOI(p.arg1,x,y,"<a href='"+url+"'>View full size map</a>");
		}
		map.setMapZoom(zoom);
		map.disableReports();
		map.setKeymap(100,100);
		if(!p.enable_polygon){
			map.legendDropdown(display_legend);
		}
		if (p.enable_polygon){
			map.enablePolygon(showpoints);
		}
		if (p.focusarea_radius){
			map.setFocusAreaType("circle", p.focusarea_radius);
			map.setFocusArea(x,y);
		}
		map.displayMap();

		if (p.obj_name) eval(p.obj_name + " = map");
	}
	if(link_to_main_map){
		var link_obj = document.createElement("div");
		link_obj.style.position = "absolute";
		link_obj.style.height = "16px";
		link_obj.style.width = width+"px";
		link_obj.style.top = (height-6)+"px";
		link_obj.style.textAlign = "right";
		link_obj.innerHTML = "<a href=\""+url+"\">View full size map</a>";
		obj.appendChild(link_obj);
	}
}
	
function showpoints(){
}

function getRemoteContent(propkey,poppeeid,width,loc,c,nolink){
	if (zl.length>0){
		var url = "/mason/Maps/mapparams.html?"+propkey+"&loc="+loc;
		_UTIL_simpleAJAX(url,poppeeid,'GET',drawMap,width,width,nolink,poppeeid);
	}else{
		if (c++<10)
			setTimeout("getRemoteContent('"+propkey+"','"+poppeeid+"',"+width+",'"+loc+"',"+c+","+nolink+")",200);
		else
			document.getElementById(poppeeid).innerHTML = "<p style='font-size:10px'>Error drawing map "+propkey+"</p>";
	}				
}

function include_script(scriptname,id) {
	var js = document.getElementById(id);
	if (js){
		if (js.getAttribute('src') != scriptname){
			js.parentNode.removeChild(js);
		}
	}
	if (!document.getElementById(id)){
		zl = new Array();
		var html_doc = document.getElementsByTagName('head').item(0);
		js = document.createElement('script');
		js.setAttribute('type', 'text/javascript');
		js.setAttribute('src', scriptname);
		js.setAttribute('id', id);
		html_doc.appendChild(js);
	}
	return false;
}

function include_css(filename,id,media) {
	if (!document.getElementById(id)){
		var html_doc = document.getElementsByTagName('head').item(0);
		css = document.createElement('link');
		css.setAttribute('rel', 'stylesheet');
		css.setAttribute('type', 'text/css');
		css.setAttribute('id', id);
		css.setAttribute('href', filename);
		if (media) css.setAttribute('media', media);
		html_doc.appendChild(css);
	}
}

function include_style(str,id,media){
	var style = document.createElement("style");
	style.setAttribute("type", "text/css");
	style.setAttribute("id", id);
	if (media) style.setAttribute("media", media);
	if(style.styleSheet){ // IE
		style.styleSheet.cssText = str;
	} else { //w3c
		var cssText = document.createTextNode(str);
		style.appendChild(cssText);
	}
	document.getElementsByTagName('head').item(0).appendChild(style);
}

function popWin(url,name,args) {
	var newWindow;
	newWindow = window.open(url,name,args);
	newWindow.focus();
	return false;
}

function searchDropdown(searchStr,ddObj) {
	var index = ddObj.getElementsByTagName("option");
	for (var i = 0; i < index.length; i++) {
		if(index[i].firstChild.nodeValue.toLowerCase().substring(0,searchStr.length) == searchStr.toLowerCase()) {
			index[i].selected = true;
			break;
		}
	}
}

function menuGo(menuObj) {
	destination = menuObj.options[menuObj.selectedIndex].value;
	if (destination) location.href = destination;
}

//*************************
//
//  Show & Hide sections

var ShowHideStates = new Object;

function showSection(id) {
	var section = document.getElementById(id);
	var span = document.getElementById('verb_'+id);
	if (ShowHideStates[id] == 0 || !ShowHideStates[id]) {
		section.style.display = "block";
		span.innerHTML = 'Hide';
		ShowHideStates[id] = 1;
	} else {
		section.style.display = "none";
		span.innerHTML = 'Show';
		ShowHideStates[id] = 0;
	}
}

//*************************
//
//  Show & Hide psuedo-popups

var current_pseudo_popup_id = '';
function showPopup (id) {
	if (current_pseudo_popup_id != ''){
		hidePopup(current_pseudo_popup_id);
	}
	var obj = document.getElementById(id);
	if (obj){
		obj.style.top = (_UTIL_getScrollTop() + 100)+"px";
		_UTIL_setIFrameBackground(id)
		obj.style.visibility = "visible";
		current_pseudo_popup_id = id;
	}
}
function hidePopup (id) {
	var obj = document.getElementById(id);
	if (obj){
		_UTIL_hideIFrameBackground(id)
		obj.style.visibility = "hidden";
	}
}

var currentPopup = "";
function showPopupSimple (id) {
	if (currentPopup){
		var cur = document.getElementById(currentPopup);
		cur.style.display = "none";
		cur.style.visibility = "hidden";
	}
	var obj = document.getElementById(id);
	if (currentPopup == id){
		obj.style.display = "none";
		obj.style.visibility = "hidden";
		currentPopup = "";
	}else{
		obj.style.display = "block";
		obj.style.visibility = "visible";
		currentPopup = id;
	}
}
function hidePopupSimple (id) {
	showPopupSimple(id);
}

// Radio Buttons select div's to display
function radioShowHideByName(name) {
	var radio_buttons = document.getElementsByName(name);
	for (var rs_idx=0; rs_idx<radio_buttons.length; rs_idx++) {
		var rbtn = radio_buttons[rs_idx];
		if (rbtn.getAttribute) {
			var controlledDiv = rbtn.getAttribute("controls");
			var childDiv = document.getElementById(controlledDiv);
			childDiv.style.display = rbtn.checked ? "block" : "none";
		}
	}
}

function radioShowHide(self) {
	radioShowHideByName(self.name);
}

//********************************************************************************************
//  code related to mini maps - used to be in /maps/js/minimaps.js
//********************************************************************************************
var	mapfolder = "http://maps.psrk.com/maptiles";

function usenewxml(map){
	if (
		map=='boston' ||
		map=='florida' ||
		map=='fl_miamidade' ||
		map=='pa_pittsburgh' ||
		map=='tx_tarrant'
	){
		return false;
	}else{
		return true;
	}
}

function getPathToImg(locale,path,zoomlevel,x,y,source){
	return source+"/map_"+locale+"_"+path.replace('/','_')+zoomlevel+"_"+x+"_"+y+".png";
}

function getPathToLayer(path,zoomlevel,x,y,source){
	return source+"/map_"+path.replace('/','_')+"_"+zoomlevel+"_"+x+"_"+y+".png";
}

function drawMap(arg,box_width,box_height,nolink){

	var str,mapstr,n;
	var pairs = arg.split("&");
	var x,y,mapname,zoomarg,theme,overlay,layers,mapid,source;
	n=21;
	mapid = "";

	zoomarg=zl.length-1;

	for(var j=0;j<pairs.length;j++) {
		var key = pairs[j].split("=")[0];
		var val = pairs[j].split("=")[1];
		switch(key) {
			case "x": x = val;break;
			case "y": y = val;break;
			case "map" : mapname = val; break;
			case "theme": theme = val;break;
			case "zoom":
				var temp_zoomarg=parseInt(val);
				if (!isNaN(temp_zoomarg)){
					zoomarg = temp_zoomarg;
				}
			break;
			case "overlay": overlay = val;break;
			case "mapid": mapid = " id=\"" + val + "\"";break
			case "source": source = val;break;
		}
	}
	
	if (!source){
		return "Error drawing map. No source specified.";
	}

	var str = "";

	x_tile_size=zl[zoomarg].x_tile_size;
	y_tile_size=zl[zoomarg].y_tile_size;
	x_tiles=zl[zoomarg].x_tiles;
	y_tiles=zl[zoomarg].y_tiles;
	folder = zl[zoomarg].folder;

	if (theme){
		folder = theme + "/" + folder;
	}else{
		theme = "default";
	}
	
	overlay = (overlay)?overlay:false;

	if (!mapname) mapname = "nyc2";

	var url = "";
	if (nolink){
		url = "javascript:void(0)";
	}else{
		url = "/mason/Maps/?map="+mapname+"&x="+x+"&y="+y+"&zoom="+(zoomarg+1)+"&basemap="+theme;
		if (overlay){
			url += "&overlay="+overlay;
		}
		url += "&star=1&report=1";
	}

	click_action = "document.location.href="+url;

	// new algorithm (don't use 3x3 tiles but detect which tiles should be displayed)
	box_width = parseInt(box_width);
	box_height = parseInt(box_height);
	var all_map_offset_x = x_tile_size * x_tiles * x - box_width/2;
	var all_map_offset_y = y_tile_size * y_tiles * y - box_height/2;
	var first_tile_x = parseInt(all_map_offset_x / x_tile_size);
	var first_tile_y = parseInt(all_map_offset_y / y_tile_size);
	var last_tile_x = parseInt((all_map_offset_x + box_width) / x_tile_size);
	var last_tile_y = parseInt((all_map_offset_y + box_height) / y_tile_size);
	var map_offset_x = all_map_offset_x - (x_tile_size * first_tile_x);
	var map_offset_y = all_map_offset_y - (y_tile_size * first_tile_y);
	var map_size_x = (last_tile_x - first_tile_x + 1) * x_tile_size;
	var map_size_y = (last_tile_y - first_tile_y + 1) * y_tile_size;

	// basemap
	mapstr = "";
	for (var i = first_tile_y; i <= last_tile_y; i++){
		if (i<zl[zoomarg].y_tiles){
			mapstr += "<nobr>";
			for (var j = first_tile_x; j <= last_tile_x; j++) {
				if (j<zl[zoomarg].x_tiles) {
					mapstr += "<img src=\"" + getPathToImg(mapname,theme+"/",zoomarg,j,i,source)+"\" border=\"0\" galleryimg=\"no\">";
				}
			}
			mapstr += "</nobr><br>";
		}
	}
	
	str += "<div style=\"position: absolute; z-index: 10; left: " + (-1*parseInt(map_offset_x)) + "px; top: " + (-1*parseInt(map_offset_y)) + "px; width: " + map_size_x + "px; height: " + map_size_y + "px;";
	if (!nolink) str += "cursor:pointer;";
	str += "\">";
	str += "<a href=\""+url+"\"";
	if (nolink) str += " style=\"cursor:default;\"";
	str += ">";
	str += mapstr;
	str += "</a></div>";

	// overlays
	if (overlay){
		var layers = overlay.split(",");
		for (var ol=0; ol<layers.length; ol++){
			mapstr = "";
			for (var i = first_tile_y; i <= last_tile_y; i++){
				if (i<zl[zoomarg].y_tiles){
					mapstr += "<nobr>";
					for (var j = first_tile_x; j <= last_tile_x; j++){
						if (j<zl[zoomarg].x_tiles){
							var laysrc = getPathToLayer(mapname+"/"+layers[ol],zoomarg,j,i,source);
							if (document.all){
								mapstr += "<img src=\"/maps/images/spacer.gif\" border=\"0\"  galleryimg=\"no\" style=\"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+laysrc+"', sizingMethod='scale');\" height=\"" + y_tile_size + "\" width=\"" + x_tile_size + "\">";
							}else{
								mapstr += "<img src=\""+laysrc+"\" border=\"0\" galleryimg=\"no\">";
							}
						}
					}
					mapstr += "</nobr><br>";
				}
			}
			str += "<div style=\"position: absolute; z-index: " + (11+ol) + "; left: " + (-1*parseInt(map_offset_x)) + "px; top: " + (-1*parseInt(map_offset_y)) + "px; width: " + map_size_x + "px; height: " + map_size_y + "px;cursor:pointer;\">";
			str += "<a href=\""+url+"\"";
			if (nolink) str += " style=\"cursor:default;\"";
			str += ">";
			str += mapstr;
			str += "</a></div>";
		}
		n += layers.length;
	}
	
	str = "<div style=\"width: " + box_width + "px; height: " + box_height + "px; overflow: hidden;position: relative; border: 1px solid #000;\"" + mapid + ">" + str;

	str += "<div style=\"position: absolute;";
	str += " z-index: " + n + ";";
	str += " top: " + parseInt((box_height-24)/2) + "px;";
	str += " left: " + parseInt((box_width-24)/2) + "px;";
	str += " padding: 0; margin: 0; width: 24px;\"";
	str += " >";
	str += "<a href=\""+url+"\"";
	if (nolink) str += " style=\"cursor:default;\"";
	str += ">";
	str += "<img src=\"/maps/images/asterisk.gif\" border=\"0\">";
	str += "</a>";
	str += " </div>";

	str += "</div>";
	
	return str;
}

function isArray(a) { return isObject(a) && a.constructor == Array; }
function isObject(o) { return (o && typeof o == 'object') || isFunction(o); }
function isFunction(f) { return typeof f == 'function'; }

//********************************************************************************************
//  functions starting with _UTIL_ are possibly used by functions outside of this file
//********************************************************************************************

function _UTIL_getAvailWidth(){
	return $(window).width();
}

function _UTIL_getAvailHeight(){
	return $(window).height();
}

var scrollbar_width = 0;
function _UTIL_getScrollBarWidth(){
	if(scrollbar_width) return scrollbar_width;
	var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div>');
	$('body').append(div);
	var w1 = $('div', div).innerWidth();
	div.css('overflow-y', 'scroll');
	var w2 = $('div', div).innerWidth();
	$(div).remove();
	return (w1 - w2);
}

function _UTIL_getScrollLeft(){
	return $(window).scrollLeft();
}

function _UTIL_getScrollTop(){
	return $(window).scrollTop();
}

function _UTIL_getPosleft(elm) {
	return $(elm).offset().left;
}

function _UTIL_getPostop(elm) {
	return $(elm).offset().top;
}

function _UTIL_setIFrameBackground(objid){
	var objbackid = objid + "-back";
	if (document.all){
		var obj = document.getElementById(objid);
		var objback = document.getElementById(objbackid);
		if (!objback){
		    obj.insertAdjacentHTML("afterEnd", "<iframe id=\"" + objbackid + "\" style=\"display:none; position:absolute;\" src=\"javascript:false;\" frameBorder=\"0\" scrolling=\"no\"></iframe>");
			objback = document.getElementById(objbackid);
		}
		if (objback){
			objback.style.height = obj.offsetHeight;
			objback.style.width = obj.offsetWidth;

			if (obj.currentStyle.position == "absolute"){
				objback.style.right = obj.currentStyle.right;
				objback.style.left = obj.currentStyle.left;
				objback.style.top = obj.currentStyle.top;
				objback.style.margin = obj.currentStyle.margin;		
			}else{
				objback.style.left = _UTIL_getPosleft(obj);
				objback.style.top = _UTIL_getPostop(obj);
			}

			var obj_zIndex = _UTIL_getStyle(obj,"zIndex");

			if(!obj_zIndex)obj.style.zIndex = "1000";
			
			objback.style.zIndex = obj_zIndex-1;
			objback.style.display = "block";
		}
	}
}
function _UTIL_hideIFrameBackground(objid){
	if (document.all){
		var objbackid = objid + "-back";
		var objback = document.getElementById(objbackid);
		if (objback){
			objback.style.display = "none";
		}
	}
}

function _UTIL_setBacklight(objid){
	if (window.XMLHttpRequest) {
		var obj = document.getElementById(objid);
		var objback = document.getElementById("backlight");
	
		if (!objback){
			 objback = document.createElement("DIV");
			 objback.id = "backlight";
			 document.body.appendChild(objback);
		}
		
		var page_size = getPageSize();
		addClass(objback,"backlight");
		objback.style.display = "block";
		objback.style.height = page_size[1] + "px";
		objback.style.width = page_size[0] + "px"
		objback.style.zIndex = _UTIL_getStyle(obj,"zIndex")-1;
	}
}

function _UTIL_hideBacklight(objid){

	var objback = document.getElementById("backlight");

	if (objback){
		 objback.style.display = "none";
	}
}

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}


	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function _UTIL_getStyle(obj,cssprop){
	if (obj.currentStyle){ // IE
		return obj.currentStyle[cssprop];
	}else if (document.defaultView && document.defaultView.getComputedStyle){ // DOM
		return document.defaultView.getComputedStyle(obj, "")[cssprop];
	}else{ // get inline style
		return obj.style[cssprop];
	}
}

function _UTIL_setPageMsg(str,noclose){
	var objid = "pagemsg";
	var pagemsgobj = document.getElementById(objid);
	if (!pagemsgobj){
		if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null)){
			var pagemsgobj = document.createElement("div");
			pagemsgobj.setAttribute("id",objid);
			pagemsgobj.className="hide";
			document.body.appendChild(pagemsgobj);
		}
	}
	if (pagemsgobj){
		pagemsgobj.style.top = (_UTIL_getScrollTop() + _UTIL_getAvailHeight()/3)+"px";
		pagemsgobj.className = (str != "") ? "show" : "hide";
			
		if (noclose){
			pagemsgobj.innerHTML = str;
		}else{
			pagemsgobj.innerHTML = str + "<br /><br /><input type=\"button\" onclick=\"_UTIL_setPageMsg('')\" value=\"OK\" />";
		}
		
		if (str!=""){
			_UTIL_setIFrameBackground(objid);
		}else{
			_UTIL_hideIFrameBackground(objid);
		}
	}
}

function _UTIL_addEvent( obj, type, fn ) {
	if ( obj.attachEvent ){
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}else{
		obj.addEventListener( type, fn, false );
	}
}
function _UTIL_removeEvent( obj, type, fn ){
	if ( obj.detachEvent ) {
		obj.detachEvent( "on"+type, obj[type+fn] );
		obj[type+fn] = null;
	}else{
		obj.removeEventListener( type, fn, false );
	}
}

function _UTIL_addDOMLoadEvent(f){
	$(document).ready(f);
}

// AJAX Events

function _UTIL_simpleAJAX(){
	var url = arguments[0];
	var obj_id = arguments[1];
	var method = (arguments[2]) ? arguments[2] : "GET";
	var fn = arguments[3];
	
	var arg1 = arguments[4];
	var arg2 = arguments[5];
	var arg3 = arguments[6];
	var arg4 = arguments[7];
	var arg5 = arguments[8];
	var arg6 = arguments[9];
	var arg7 = arguments[10];
	var arg8 = arguments[11];
	var arg9 = arguments[12];
	var arg10 = arguments[13];
	var arg11 = arguments[14];
	var arg12 = arguments[15];

	var obj = document.getElementById(obj_id);

	var xmlhttp=false;
	/* for Internet Explorer */
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (E) {
			xmlhttp = false;
		}
	}
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		xmlhttp = new XMLHttpRequest();
	}

	var callback = "<img src=\"#\" onerror=\"_UTIL_AJAXEvent('"+obj_id+"','load','"+url+"');this.parentNode.removeChild(this);\" style=\"width:1px;height:1px;\" />";
	
	xmlhttp.open(method, url);
	_UTIL_AJAXEvent(obj_id,"request",url);
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
			if (obj){
				if (fn){
					var newDiv = document.createElement("div");
					newDiv.innerHTML = fn(xmlhttp.responseText,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) + callback;
					obj.appendChild(newDiv);
				}else{
					obj.innerHTML = xmlhttp.responseText + callback;
				}
			}else{
				if (fn){
					fn(xmlhttp.responseText,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12);
				}
			}
			_UTIL_AJAXEvent(obj_id,"response",url);
		}
	}
	xmlhttp.send(null);
}

function _UTIL_AJAXEvent(){
	var obj_id = arguments[0];
	var type = arguments[1];
	var url = arguments[2];

	var arr = window._arr_addAJAXEvent;
	if (arr){
		for (var i=0; i<arr.length; i++){
			if (arr[i][1]==type){
				var ok = false;
				
				if ((arr[i][0]==window || arr[i][0]==obj_id)){
					ok = true;
				}
				
				if (!ok && arr[i][0]){
					if (arr[i][0].id == obj_id){
						ok = true;
					}
				}
				
				if (ok){
					arr[i][2](arr[i][3],arr[i][4],arr[i][5],arr[i][6],arr[i][7],arr[i][8]);
				}
			}
		}
	}
}

function _UTIL_addAJAXEvent(){
	if (arguments.length<3) return;
	if (arguments[1]=="request" || arguments[1]=="response" || arguments[1]=="load"){
		if (!window._arr_addAJAXEvent) window._arr_addAJAXEvent = new Array();
		window._arr_addAJAXEvent.push(arguments);
	}
}

function _UTIL_inArray(arr,val){
	for (var i=0,n=arr.length;i<n;i++)
		if (arr[i]==val)
			return(i+1);
	return(false);
}

function _UTIL_submitFormOnEnter(){
	 _UTIL_addEvent(document, 'keyup', function(e){
		if (!e) var e = window.event;
		if (e.target) var targ = e.target;
		if (e.srcElement) var targ = e.srcElement;
		if (e.keyCode==13 && targ.nodeName=="SELECT"){
			var el = targ;
			while (el.nodeName!="FORM" && el.nodeName!="BODY") el = el.parentNode;
			if (el.nodeName=="FORM"){
				if (el.onsubmit){
					el.onsubmit();
				}else if (el.onSubmit){
					el.onSubmit();
				}else{
					el.submit();
				}
			}
		}
	});
}

function ajaxLoader(url,div,delegate,args){
	var s = new AjaxService();
	s.setURL(url);
	s.setDelegate(function (r, forwardParams){
		var rr = r;
		if (delegate)
			eval("rr="+delegate+"(r)");

		var o = document.getElementById(forwardParams['div']);
		if (o) o.innerHTML = rr;
		
		if (args)
			popupshow.apply(null, args);
	});
	s._forwardParams = "div="+div;
	s.callService();
}

//********************************************************************************************
//  Some extra functions usefull in lots of pages
//********************************************************************************************
function showHistory(o) {
	var obj = document.getElementById(o);
	if (obj.style.display == "") {
		obj.style.display = "none";
	} else {
		obj.style.display = "";
	}
}

function Dumper(txt) {
	var Dumper = window.open("", "Window_" + Math.floor(Math.random() * 10000000), "toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width="+screen.availWidth+",height="+screen.availHeight);
	Dumper.document.write(txt);
}

function navigateTable(id, rows_first, rows_next, operation){
	var obj = document.getElementById("tbody"+id);
	obj.parentNode.scrollIntoView();
	
	var start = stop = -1;
	for (var i=0;i<obj.rows.length;i++){
		var classname = obj.rows[i].className;
		if (!classname.match(/hide/)){
			if (start == -1){
				if (operation=="+"){
					if (i==0){
						start = rows_first;
						stop = start + rows_next - 1;
					}else{
						start = i + rows_next;
						stop = start + rows_next - 1;
					}
				}
				if (operation=="-"){
					if (i < rows_next){
						start = 0;
						stop = rows_first - 1;
					}else{
						start = i - rows_next;
						stop = start + rows_next - 1;
					}
				}
			}
			obj.rows[i].className = classname + " hide";
		}
	}
	for (var i=0;i<obj.rows.length;i++){
		var classname = obj.rows[i].className;
		if (i>=start && i<=stop){
			obj.rows[i].className = classname.replace(/\shide/, "");
		}
	}

	if (start>rows_first-1)
		var currentPage = Math.floor((start+rows_next-2)/rows_next)+1;
	else
		var currentPage = 1;
	
	var prev = document.getElementById("navPrev"+id);
	var next = document.getElementById("navNext"+id);
	if (start == 0){
		prev.className = "hide";
		next.className = "";
	}else if (!obj.rows[obj.rows.length-1].className.match(/hide/)){
		prev.className = "";
		next.className = "hide";
	}else{
		prev.className = "";
		next.className = "";
	}

	var current = document.getElementById("currentPage"+id);
	current.innerHTML = currentPage;
}

function navigateTableFull(id){
	var obj = document.getElementById("tbody"+id);
	obj.parentNode.scrollIntoView();
	
	for (var i=0;i<obj.rows.length;i++){
		var classname = obj.rows[i].className;
		obj.rows[i].className = classname.replace(/\shide/, "");
	}
	
	var current = document.getElementById("currentPage"+id);
	current.innerHTML = "all";
	
	document.getElementById("pager"+id).style.display = "none";
}

function navigateTableSetState(id, report_section, table_name){
	if (!report_section){ return; }
	
	var current = document.getElementById("currentPage"+id);
	var page = current.innerHTML;
	var rs_state_obj = document.getElementById(report_section+"_view_params");
	if (rs_state_obj){
		var val_arr = (rs_state_obj.value) ? rs_state_obj.value.split(",") : [];
		var set = false;
		for (var i=0; i<val_arr.length; i++){
			var pairs = val_arr[i].split(":");
			if (pairs[0] == table_name){
				val_arr[i] = table_name+":"+page;
				set = true;
			}
		}
		if (!set){
			val_arr.push(table_name+":"+page);
		}
		rs_state_obj.value=val_arr.join(",");
	}
}

function toggleExpand(id){
	var section = document.getElementById(id);
	var span = document.getElementById('verb_'+id);
	if (section.style.display=="none") {
		section.style.display = "";
		span.innerHTML = "Hide details";
	} else {
		section.style.display = "none";
		span.innerHTML = "Show details";
	}
}

function toggleExpandAll(txt){
	txt.innerHTML = ((txt.innerHTML == "Show details") ? "Hide" : "Show")+" details";
	var obj = txt;
	while (obj.nodeName != "TABLE")
		obj = obj.parentNode;
	for (var i=0;i<obj.rows.length;i++){
		if (!obj.rows[i].id.match(/^expanded/)) continue;
		obj.rows[i].style.display = (txt.innerHTML == "Show details") ? "none" : "";
	}
	var a = obj.getElementsByTagName("a");
	for (var i=0;i<a.length;i++)
		if (a[i].className == "verb")
			a[i].innerHTML = txt.innerHTML;
}

function toggleExpandSetState(n, link, report_section, table_name, base){
	if (!report_section){ return; }
	
	var is_open = (link.innerHTML == "Hide details");

	var rs_state_obj = document.getElementById(report_section+"_view_params");
	if (rs_state_obj){
		var val_arr = (rs_state_obj.value) ? rs_state_obj.value.split(",") : [];
		var set = false;
		for (var i=0; i<val_arr.length; i++){
			var pairs = val_arr[i].split(":");
			if (pairs[0] == table_name){
				var o_rows = pairs[1].split("-");
				if (n == "all"){
					o_rows = [];
				}else{
					if (pairs[1] == "all"){
						// all are open, close one
						o_rows = [];
						var c = 1;
						var misses = 0;
						var obj = document.getElementById(base + "-" + c);
						while (misses < 3 && c < 500){
							if (obj){
								if (c != n){
									o_rows.push(c);
								}
							}else{
								misses++;
							}
							c++;
							obj = document.getElementById(base + "-" + c);
						}
					}else{
						for (var j=0; j<o_rows.length; j++){
							if (o_rows[j] == n || o_rows[j] == ''){
								o_rows.splice(j,1);
							}
						}
					}
				}
				if (is_open){
					o_rows.push(n);
				}
				if (o_rows.length > 0){
					o_rows.sort();
					val_arr[i] = table_name+":"+o_rows.join("-");
				}else{
					val_arr.splice(i,1);
				}
				set = true;
			}
		}
		if (!set && is_open){
			val_arr.push(table_name+":"+n);
		}
		rs_state_obj.value=val_arr.join(",");
	}
}

function updateStats(what, propkey){
	ajaxLoader("/mason/components/save_stats.html?what="+what+"&propkey="+propkey);
}

function selectTab(id, parent){
	var menuPanel = document.getElementById(parent);
	var menu = document.getElementById(id);
	if (!menuPanel || !menu) return;
	var status = (menu.className=="selected")?true:false;
	
	var menus = menuPanel.getElementsByTagName('div');
	for (var i=0;i<menus.length;i++){
		menus[i].className = "unselected";
	}
	menu.className = (status)?"unselected":"selected";
}

function generalSelector(o, token){
	for (var i=2; i<arguments.length; i++){
		var div = document.getElementById("selector_"+token+"_"+arguments[i]);
		div.style.display = (arguments[i]==o.value) ? "block":"none";
	}
}

function postForm(query, action) {
	var tmp = query.split("&");

	var f = document.createElement("form");
	f.action = action;
	f.target = "_blank";
	f.method = "POST";

	for (var i=0;i<tmp.length;i++) {
		if (tmp[i]=='') continue;
		var tmp2 = tmp[i].split("=");
		var elem = "";
		elem = document.createElement("input");
		elem.setAttribute("name",tmp2[0]);
		elem.setAttribute("value",tmp2[1]);
		f.appendChild(elem);
	}

	document.body.appendChild(f);
	f.submit();
	
	document.body.removeChild(f);
}

function printVersion(nohistory){
	/*	Look through stylesheets and set change media types from print to all,
		to give us a print preview of the page.
		Assign a 'media_was_print' class to	each stylesheet for easy reversal.
		Create a print preview header to explain what's going on.
	*/

	var back = nohistory ? "screenVersion()" : "history.go(-1)";

	var tags = ["link","style"];
	for (var j=0; j<tags.length; j++){
		var css = document.getElementsByTagName(tags[j]);
		for (var i=0; i<css.length; i++){
			if (css[i].getAttribute("media")=="print"){
				if (tags[j]=="link"){
					var url = css[i].getAttribute("href");
					include_css(url,"print_version_css_"+j+"_"+i, "all");
				}else{
					css[i].media = "all";
					css[i].className = "media_was_print";
				}
			}
		}
	}

	var print_version_header = document.getElementById("print_version");
	if (print_version_header){
		print_version_header.style.display = "block";
	}else{
		include_style("#print_version {display:none}","print_version_css","print");
		print_version_header = document.createElement("div");
		print_version_header.setAttribute("id","print_version");
		print_version_header.innerHTML = "This is the printable version of the current page <div><a href='javascript:void(0)' onClick='javascript:window.print()'><b>Print page</b></a> &nbsp;-&nbsp; <a href='javascript:void(0)' onClick='" + back + "'><b>Back to original page</b></a></div>";
		document.body.insertBefore(print_version_header, document.body.firstChild);
	}
	
	scroll(0,0);
}

function screenVersion(){
	/*	Clean up after printVersion()
		Look through stylesheets and set all with class = 'media_was_print' to print.
		Hide print preview header 
	*/

	var tags = ["link","style"];
	var elements_to_remove = [];
	for (var j=0; j<tags.length; j++){
		var css = document.getElementsByTagName(tags[j]);
		for (var i=css.length-1; i>=0; i--){
			
			if (tags[j]=="link"){
				if (css[i].id.indexOf("print_version_css") == 0){
					css[i].media = "print"; // for Safari
					css[i].parentNode.removeChild(css[i]);
				}
			}else{
				if (css[i].className=="media_was_print"){
					css[i].media = "print";
					css[i].className = "";
				}
			}
		}
	}
	var print_version_header = document.getElementById("print_version");
	if (print_version_header){
		print_version_header.style.display = "none";
	}
	var custom_header = document.getElementById("custom_print_header");
	if (custom_header){
		custom_header.style.display = "none";
	}
}
	
function printVersionWithHeader(header){
	if (header){
		var content_area = document.getElementById("report_content_area");
		if (content_area) {
			var custom_header = document.getElementById("custom_print_header");
			if (!custom_header){
				custom_header = document.createElement("div");
				custom_header.id = "custom_print_header";
				custom_header.className = "print_only";
				custom_header.innerHTML = "Custom Print Header";
				content_area.insertBefore(custom_header,content_area.firstChild);
			
			
				_UTIL_simpleAJAX("/mason/components/branding/dialog.html","custom_print_header");
			}
			custom_header.style.display = "block";
		}
	}
	var hash = location.hash;
	if (hash.indexOf("view=print")<0){
		if (hash){
			hash.replace("#","");
			hash += "&";
		}
		hash += "view=print";
		if (historyTracker){
				historyTracker.addState(hash);
		}
	}
}




function loading_msg_s(obj,txt){
	if (!txt){
		txt = "loading";
	}
	if (typeof obj== 'string'){
		obj = document.getElementById(obj);
		if (!obj){
			return false;
		}
	}
	obj.innerHTML = "<div style='background:url(/img/jk/msg_load_s.gif) 0 0 no-repeat; padding-left: 24px;line-height:16px;margin: 20px 0 24px 20px;'> " + txt + "</div>";
}

function setInnerHTML(id,txt){
	var obj = document.getElementById(id);
	if (obj){
		obj.innerHTML = txt;
	}
}

//******************************************************************************
// Code for dragging stuff
//******************************************************************************
function registerDrag(obj){
	if (!window.dragObj){
		window.dragObj = {};
	}
	var evt = window.event || arguments.callee.caller.arguments[0];
	var o = evt.target || evt.srcElement;
	if (o.nodeType == 3){ o = o.parentNode; }
	if (!obj){ obj = o; }
	if (typeof(obj)!="object"){ obj = document.getElementById(obj); }
	
	o.onmousedown = function(){ dragInit(arguments[0],obj)};
	o.onmouseover = function(){};
	o.onmouseup = dragRelease;
	o.onselectstart = function(){};
}
var dragInit = function(e,obj){
	if(!e) e = window.event;
	if (window.dragObj.obj){
		window.dragObj.obj.style.zIndex = window.dragObj.z;
	}
	window.dragObj.obj = obj;
	window.dragObj.z = obj.style.zIndex;
	obj.style.zIndex = 1000;
	// get click position
	window.dragObj.click_position_obj = getEventPosObj(e);
	// get element position
	window.dragObj.el_position_obj = getElementPosObj(window.dragObj.obj);
	// attach move event
	if (document.attachEvent) {
    	document.attachEvent("onmousemove",drag);
    	document.attachEvent("onmouseup",dragRelease);
    	document.attachEvent("onselectstart",dragNull);
    	e.cancelBubble = true;
    	e.returnValue = false;
  	}
  	if (document.addEventListener) {
    	document.addEventListener("mousemove",drag,true);
    	document.addEventListener("onmouseup",dragRelease,true);
    	document.addEventListener("onselectstart",dragNull,true);
    	e.preventDefault();
  	}
};
var drag = function(e){
	if(!e) e = window.event;
	window.dragObj.mouse_position_obj = getEventPosObj(e);
	window.dragObj.obj.style.left = (window.dragObj.el_position_obj.x + window.dragObj.mouse_position_obj.x - window.dragObj.click_position_obj.x) + "px";
	window.dragObj.obj.style.top = (window.dragObj.el_position_obj.y + window.dragObj.mouse_position_obj.y - window.dragObj.click_position_obj.y) + "px";
	_UTIL_setIFrameBackground(window.dragObj.obj.id);
}
var dragRelease = function(){
	// detach move event
  if (document.detachEvent) {
    document.detachEvent("onmousemove",drag);
    document.detachEvent("onmouseup",dragRelease);
    document.detachEvent("onselectstart",dragNull);
  }
  if (document.removeEventListener) {
    document.removeEventListener("mousemove",drag,true);
    document.removeEventListener("onmouseup",dragRelease,true);
    document.removeEventListener("onselectstart",dragNull,true);
  }
};
var dragNull = function(){return false};
var getEventPosObj = function(e){
	if(!e) e = window.event;
	var p = {"x":0,"y":0};
	if (e.pageX || e.pageY){
		p.x = e.pageX;
		p.y = e.pageY;
	}else if (e.clientX || e.clientY){
		p.x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		p.y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
	return p;
}
var getElementPosObj = function(obj){
	// function not accurate in Safari, if HTML has margin or padding, or if BODY has margin.
	var p = {"x":obj.offsetLeft,"y":obj.offsetTop};
	while((obj = obj.offsetParent) != null){
		p.x += obj.offsetLeft;
		p.y += obj.offsetTop;
	}
	return p;
}

//******************************************************************************
// Ajax Service
//******************************************************************************
function AjaxService() {
	this._url;
	this._async = true;
	this._retryNumber = 1;	
	this._debug = false;
	this._evalResult = false;
	this._method = "POST";
	this._forwardParams = "";
	this._delegate = function (){};
	this._beforeLoad = function (){};
	this._afterLoad = function (){};

	this._retryCurrent = 1;
	this._error = false;
	
	this.getURL = function() {
		return this._url;
	}
	
	this.setURL = function(url) {
		this._url = url;
	}
	
	this.getDelegate = function() {
		return this._delegate;
	}
	
	this.setDelegate = function(delegate) {
		this._delegate = delegate;
	}

	this.setRetry = function(n) {
		this._retryNumber = n;
	}
	
	this._createInstance = function() {
		var obj = null;
		
		try {
			obj = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				obj = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				obj = null;
			}
		}
		
		if((obj == null) && window.XMLHttpRequest) {
			obj = new XMLHttpRequest();
		}
		
		return obj;
	}
	
	this.callService = function() {
		with(this) {
			var obj = _createInstance();
			if(!obj) {
				alert("Cannot create AJAX object !");
				return;
			}
			
			try {

				var tmp = _url.split("?");
				if (tmp[1]) {
					var URL = tmp[0];
					var PARAMS = tmp[1];
				} else {
					var URL = _url;
					var PARAMS = "";
				}

				var forwardParams = new Array();
				if (_forwardParams != "") {
					var tmp2 = _forwardParams.split("&");
					for (var i=0;i<tmp2.length;i++) {
						forwardParams[tmp2[i].split("=")[0]] = tmp2[i].split("=")[1];
					}
				}
				
				obj.onreadystatechange = function() {
					if(obj.readyState == 4) {
						if(obj.status == 200) {
							var response = obj.responseText;
							if (_debug)	Dumper(response);

							if (_evalResult) {
								if (!response.match(/^\s*\{/)) {
									if (_retryCurrent < _retryNumber){
										_retryCurrent++;
										callService();
										return;
									}
									_error = "Server error !";
								} else {
									try { 
										var r = eval("(" + response + ")");
										if (r.error_id != 0) {
											_error = "Proxy error !";
										}
									} catch(e) {
										_error = "Incorrect server response !";
									}								
								}
							} else {
								var r = new Object();
								r.content = response;
							}
							
							if (_error) {
								if (_delegate)	_delegate(false, forwardParams, _error, PARAMS);
							} else {
								if (_beforeLoad)	_beforeLoad();
								if (_delegate)	_delegate(r.content, forwardParams);
								if (_afterLoad)	_afterLoad();
							}
						} else {
							_error = "Bad server response ("+ obj.status +") !";
						}
						delete obj;
					}
				}

				if (_method=="POST") {				
					obj.open("POST", URL, _async);
					obj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					obj.setRequestHeader('Content-length', PARAMS.length);
					obj.send(PARAMS);
				} else {
					obj.open("GET", _url, _async);
					obj.send(null);
				}

			} catch(e) {
				_error = "Can't make request " + e;
			}
		}
	}
}

//**************************************************************************
// deal with classes
//**************************************************************************

function addClass(obj, class_name){
	if ( !hasClass(obj, class_name) ){
		var arr_classes = obj.className.split(" ");
		arr_classes.push(class_name);
		obj.className = arr_classes.join(" ");
	}
}

function removeClass(obj, class_name){
	if (obj && obj.className){
		var arr_classes = obj.className.split(" ");
		for (var i=0; i<arr_classes.length; i++){
			if (class_name == arr_classes[i]){
				arr_classes.splice(i,1);
			}
		}
		obj.className = arr_classes.join(" ");
	}
}

function hasClass(obj, class_name){
	if (obj && obj.className){
		var arr_classes = obj.className.split(" ");
		for (var i=0; i<arr_classes.length; i++){
			if (class_name == arr_classes[i]){
				return true;
			}
		}
	}
	return false;
}


function toggleClass(id,class_name){
	var obj = document.getElementById(id);
	if(obj){
		if ( hasClass(obj, class_name) ){
			removeClass(obj, class_name);
		}else{
			addClass(obj, class_name);
		}
	}
}
function toggleClassMultiID(id_arr,class_name){
	// check if all ids are valid
	for (var i=0; i<id_arr.length; i++){
		if (!document.getElementById(id_arr[i])){
			return false;
		}
	}
	// toggle all
	for (var i=0; i<id_arr.length; i++){
		toggleClass(id_arr[i],class_name)
	}
}

function setAsCurrentSibling(obj){
	// remove class "cur" from all siblings and add to obj
	for (var i=0; i<obj.parentNode.childNodes.length; i++){
		removeClass(obj.parentNode.childNodes[i],"cur");
	}
	addClass(obj,"cur");
	obj.blur();
}


//***************************************************************************
// history tracker
//***************************************************************************
	var historyTracker = (function(){
		/*	historyTracker is used to keep track
			of a user's javascript activity history within
			a single page, and to let users use the browser's
			back and forward buttons to go back and forward in
			this history.

			For most browsers this is acchieved by monitoring
			the hash portion of the url, which can be set by
			javascript, and which is kept in the browser's history.

			Note that IE does not add changes in the url hash to
			the browser history, so an alternate method using iframes
			with generated content for each hash change is used.
			
		
			To update hash and register it with historyTracker, use:
			historyTracker.addState(hash);
			
			
			historyTracker let's you register a function
			with a key in the hash:
			
			historyTracker.registerKey(fn,"key");
			
			Whenever "key" is in the hash, (http://somesite.com/index.html#key=value), fn(key,value) will be called
			
			You can also register a function with a key/value pair, which will
			only be called it "key=value" is in the url:
			
			historyTracker.registerKey(fn,"key","value");
			
			Whenever "key=value" is in the hash, (http://somesite.com/index.html#key=value), fn(key,value) will be called
			
			
			A special case it the initial screen when there may not be
			a hash in the url. To register a function to fire whenever
			the user uses the browser's back button to return to this
			state, use:
			
			historyTracker.registerInit(fn);
		
		*/
		
		/*	We try not to pollute a the global namespace,
			so we use a closure.
			historyTracker returns an instance of the Tracker object,
			making it possible to access it at any time from
			outside the closure:
			historyTracker.member_function()
		*/
		function Tracker() {
		
			// set up some local variables
			this.history_length = 0;
			this.history_current_position = 0;
			this.history_previous_position = 0;
			this.history_stack = [];
			this.hash_actions = [];
			this.initialized = false;
			this.history_token = "sA3nqW";
			var _this = this;
			
			// get the current hash
			this.active_hash = (window.location.hash.length > 1) ? window.location.hash.substring(1, window.location.hash.length) : null;
			this.start_listening = function(){
				if (!document.all){
					// non-IE: let's check every 100ms to see if the hash has changed
					var interval_name = setInterval(function(){
						var current_hash = (window.location.hash.length > 1) ? window.location.hash.substring(1, window.location.hash.length) : null;
						if (current_hash != _this.active_hash){
							_this.active_hash = current_hash;
							_this.activateHash(_this.active_hash);
						}
					}, 100);
				}
			};
			this.start_listening();
					
			this.initialize = function() {
				var hash = (window.location.hash.length > 1) ? window.location.hash.substring(1, window.location.hash.length) : null;
				if (hash){
					this.addState(hash);
				}
				if (!document.all){
					this.initialized = true;
				}
			};
			
			this.start_listening = function(){
				if (!document.all){
					// non-IE: let's check every 100ms to see if the hash has changed
					var interval_name = setInterval(function(){
						var current_hash = (window.location.hash.length > 1) ? window.location.hash.substring(1, window.location.hash.length) : null;
						if (current_hash != _this.active_hash){
							_this.active_hash = current_hash;
							_this.activateHash(_this.active_hash);
						}
					}, 100);
				}
			};

			this.registerKey = function(fn,key,value) {
				var obj = [];
				obj.fn = fn;
				obj.key = key;
				obj.value = value;
				this.hash_actions.push(obj);
			};
			
			this.registerInit = function(fn){
				this.init_function = fn;
			};
		
			this.addState = function(hash) {
				if (!this.initialized){
					this.initialized = true;
					if (document.all && window.location.hash.length <= 1){
						this.addState(this.history_token+'1');
					}
				}
				
				this.history_length++;
				var has_history = false;

				if (hash){
					var pairs = hash.split("&");
					for(var i=0; i<pairs.length;i++) {
						if (pairs[i].indexOf(this.history_token) == 0){
							has_history = true;
							//pairs[i] = this.history_token+''+this.history_length;
						}
					}
					hash = pairs.join("&");
				}
				if ( !has_history ){
					hash = (hash) ? hash + "&" + this.history_token + this.history_length : this.history_token + '' + this.history_length;
				}
			
				while (this.history_stack.length >= this.history_length){
					this.history_stack.pop();
				}
			
				this.history_stack.push(hash);
				this.freeze_init = true;

				this.setHistory(hash,this.history_length);

				this.freeze_init = false;


			};
			
			this.setHistory = function(hash,n){
				window.location.hash = hash;
				this.active_hash = hash;
				if (document.all){
					var frame_id = "history_tracker_frame";
					var frame = document.getElementById(frame_id);
					if (!frame){
						frame = document.createElement("iframe");
						frame.id = frame_id;
						frame.style.display = "none";
						document.body.appendChild(frame);
					}
					frame.contentWindow.document.open();
					frame.contentWindow.document.write("<script>window.parent.historyTracker.activateHash('" + hash + "');<\/script>");
					frame.contentWindow.document.close();
				}else{
					this.activateHash(hash);
				}
			};
			
			this.activateHash = function(hash,n){
				if (!n){
					n=0;
					if (hash){
						var pairs = hash.split("&");
						for(var i=0; i<pairs.length;i++) {
							if (pairs[i].indexOf(this.history_token) == 0){
								n = pairs[i].substring(this.history_token.length);
							}
						}
					}
				}
				
				if (hash){
					if (hash == this.history_token+"1" && !this.freeze_init){
						this.init_function();
					}else{
						var pairs = hash.split("&");
						for(var j=0; j<pairs.length;j++) {
							var key = pairs[j].split("=")[0];
							var value = pairs[j].split("=")[1];
							for(var i=0; i<this.hash_actions.length; i++){
								if (key == this.hash_actions[i].key){
									if ( this.hash_actions[i].value ){
										if (value == this.hash_actions[i].value){
											this.hash_actions[i].fn(key,value);
										}
									}else{
										this.hash_actions[i].fn(key,value);
									}
								}

							}
						}
					}
				}else{
					if (n==0 && this.history_stack.length>0){
						if (this.init_function){
							this.init_function();
						}
					}
				}
		
				if (this.history_stack.length > n) {
					// we got here by clicking the browser's back or forward buttons
					if (document.all){
						// IE needs help updating the hash, as it is not part of the browser history
						window.location.hash = hash;
					}
				}
				
				this.history_length = n;
			};
		}
		return new Tracker();
	})(); 

function showTab(objid){
	if (document.getElementById){
		var pNode = document.getElementById(objid).parentNode;
		var search = true;
	
		while (search){
			var pNode = pNode.parentNode;
			var objClass = pNode.getAttribute("className") || pNode.getAttribute("class");
			if (pNode.tagName == "BODY" || objClass == "tabbox"){
				search=false;
				cookname = pNode.id;
				SetCookie(cookname,objid);
			}
		}

		hideDivs(objid,cookname);
		return false;
	}else{
		return true;
	}
}

function showCookie(){
	//alert(GetCookie("findproperty"));
}

function hideDivs(except,currenttabsid){
	if (!document.getElementsByTagName){
		return null;
	}
	
	var divs = document.getElementsByTagName("div");
	var setNextTab = false;
	var tabSelected = 0;
	var tabCounter = 0;
	for(var i=0; i < divs.length; i++){
		var div = divs[i];
		var id = div.id;
		var objClass = div.className;
		
		if (objClass == "tabbox"){
			except = GetCookie(id);
		}
		
		if (except){
			if (id == except+"content"){
				setNextTab = true;
			}
		}else{
			if (objClass == "tabbox"){
				// we're in a tab box
				setNextTab = true;
			}
		}
		if (objClass == "tabboxcontent"){
			if (tabCounter == 0){
				tabCounter = 1;
				var firstDiv = div;
				var firstDivId = id.substring(0,(id.length-7));
			}
			if (setNextTab){
				div.style.display = 'block';
				var myTabID = id.substring(0,(id.length-7));
				//alert(myTabID);
				setTab(myTabID,true);
				setNextTab = false;
				tabSelected = 1;
			}else{
				div.style.display = 'none';
				var myTabID = id.substring(0,(id.length-7));
				setTab(myTabID,false);
			}
		}
	}

	if (tabSelected == 0){
		if (firstDiv) {
			firstDiv.style.display = 'block';
			setTab(firstDivId,true);
		}
	}
	
}

if (document.getElementsByTagName){
	document.write("<style>\n.tabboxcontent{display:none;}\n</style>");
}

function setTab(whichLink,hilight){
	if (document.getElementById(whichLink)){
		var obj = document.getElementById(whichLink).parentNode;
		var new_class_name = obj.className.replace(" cur","");
		new_class_name = (hilight) ? new_class_name + " cur" : new_class_name;
		obj.className = new_class_name; 
		
	}
} 


//*********************** accepting cookies? ***************************


function SetCookie (name,value,expires,path,domain,secure){
	document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? ";secure" : "")
}


function getCookieVal(offset){
	var endstr = document.cookie.indexOf(";", offset)
	if (endstr == -1)
		endstr = document.cookie.length
	return unescape(document.cookie.substring(offset, endstr))
}

function GetCookie(name){
	var arg = name + "="
	var alen = arg.length
	var clen = document.cookie.length
	var i = 0
	while (i < clen){
		var j = i + alen
		if (document.cookie.substring(i,j) == arg)
			return getCookieVal(j)
		i = document.cookie.indexOf(" ", i) + 1
		if (i==0) break
	}
	return null
}
  
  
  
  
function initTabs(){
	hideDivs(null);
}  
_UTIL_addDOMLoadEvent(initTabs);
//_UTIL_addEvent(window,"load",initTabs);

// DF1.1 :: domFunction 
// *****************************************************
// DOM scripting by brothercake -- http://www.brothercake.com/
// GNU Lesser General Public License -- http://www.gnu.org/licenses/lgpl.html
//******************************************************

//DOM-ready watcher
function domFunction(f, a)
{
	//initialise the counter
	var n = 0;
	
	//start the timer
	var t = setInterval(function()
	{
		//continue flag indicates whether to continue to the next iteration
		//assume that we are going unless specified otherwise
		var c = true;

		//increase the counter
		n++;
	
		//if DOM methods are supported, and the body element exists
		//(using a double-check including document.body, for the benefit of older moz builds [eg ns7.1] 
		//in which getElementsByTagName('body')[0] is undefined, unless this script is in the body section)
		if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null))
		{
			//set the continue flag to false
			//because other things being equal, we're not going to continue
			c = false;

			//but ... if the arguments object is there
			if(typeof a == 'object')
			{
				//iterate through the object
				for(var i in a)
				{
					//if its value is "id" and the element with the given ID doesn't exist 
					//or its value is "tag" and the specified collection has no members
					if
					(
						(a[i] == 'id' && document.getElementById(i) == null)
						||
						(a[i] == 'tag' && document.getElementsByTagName(i).length < 1)
					) 
					{ 
						//set the continue flag back to true
						//because a specific element or collection doesn't exist
						c = true; 

						//no need to finish this loop
						break; 
					}
				}
			}

			//if we're not continuing
			//we can call the argument function and clear the timer
			if(!c) { f(); clearInterval(t); }
		}
		
		//if the timer has reached 60 (so timeout after 15 seconds)
		//in practise, I've never seen this take longer than 7 iterations [in kde 3 
		//in second place was IE6, which takes 2 or 3 iterations roughly 5% of the time]
		if(n >= 60)
		{
			//clear the timer
			clearInterval(t);
		}
		
	}, 250);
};

var user = null;
var session = null;

function getLinks (parent_id) {
	var anchors = document.getElementsByTagName("a");
	var parent = null;
	if (parent_id) {
		parent = document.getElementById(parent_id);
		anchors = parent.getElementsByTagName("a");
	}
	var re = new RegExp('#(.)*');
	for (var i=0; i < anchors.length; i++) {
		if (!anchors[i].href.match(re)) {
			_UTIL_addEvent( anchors[i], "click", send_link_data );
		}
	}
	return true;
}
	
function pausecomp(millis) {
	var date = new Date();
	var curDate = null;
	do { 
		curDate = new Date(); 
	}
	while(curDate-date < millis);
} 

function get_form_elements (event) {
        var form = event ? event.target : this;
        var result = "";
        for (var i=0; i<form.length;i++) {
                var current = form.elements[i];
                var name = current.name || current.id || 'undefined';
                var type = current.type || 'undefined';
		var value = current.value || 'undefined';

		result+="type="+type+";";
                result+="name="+name+";";
                if ((type == "checkbox") || (type == "radio"))  {
			value = current.checked;
			//result+="checked="+current.checked+";"; 
		}
		if (current.type == "select") {
			value = current.options[current.options.selectedIndex].text;
			//result+="text"+current.options[current.options.selectedIndex].text+";";
		}
                
		result+="value="+value+"*";
	}
	user = encodeURIComponent(user);
	session = encodeURIComponent(session);
	//alert(result);
	result=encodeURIComponent(result);
	var target="/mason/Admin/usertracker.html?user="+user+"&session_id="+session+"&action=submit&location="+window.location+"&params="+result;
	
	_UTIL_simpleAJAX(target,null,'POST');
	alert(target);
	setTimeout("form._submit();",250);
}

function handle_click(uid,sid,parent_id) {
	user = uid;
	session = sid;
	getLinks(parent_id);
	return true;
}

function send_link_data(event) {
	try {
		var targetUrl = "/mason/Admin/linktracker.html";
		var params = '';

		user = encodeURIComponent(user);
		session = encodeURIComponent(session);

		var current = new String(window.location);
		current = get_location(current);
		current = encodeURIComponent(current);

		var text,value = '';
		if (navigator.appName == "Netscape") {
			text = this.text || this.name || this.id;
		}else text = this.firstChild.data || this.name || this.id;
		//alert("text=("+this.text+")\n"+"name=("+this.name+")\n"+"id=("+this.id+")");
		var word = new RegExp("\\W*\\w+\\W*","g");
		if (!text.match(word)) {
			if (this.childNodes.length > 0) {
				for (var i=0;i<this.childNodes.length;i++) {
					if (this.childNodes[i].tagName == "IMG") {
						text = this.childNodes[i].tagName;
						var src = this.childNodes[i].getAttribute("src");
						var re = new RegExp(".*pic_view.*","g");
						if (src.match(re)) {
							var unique_img = new RegExp(".*\\.(.*)\\.[^\\.]*","g");
							var match = unique_img.exec(src);
							text += "_"+match[1];
						}else text += ": "+src;
						break;	
					}else {
						if (navigator.appName == "Netscape") {
							text = this.childNodes[i].text || this.childNodes[i].name || this.childNodes[i].id;
						}
						else {
							if (this.childNodes[i].firstChild) {
								text = this.childNodes[i].firstChild.data || this.childNodes[i].name || this.childNodes[i].id;
							}else {
								text = this.childNodes[i].name || this.childNodes[i].id;
							}
						}
					}
				}
			}
			
		}
		
		text = resolve_basic_links(this)+text;
		text = encodeURIComponent(text);
		value = this.href;
		value = get_location(value);
		if (!check_location(value)) {
			return;
		}
		value = encodeURIComponent(value);

		coordinates = get_coordinates(this);
		//alert("text="+text+"\n"+"coordinates="+coordinates);
		coordinates = encodeURIComponent(coordinates);


		
		params ='&coordinates='+coordinates+'&text='+text+'&value='+value;
		targetUrl +="?user="+user+"&session_id="+session+"&location="+current+params;
//		_UTIL_simpleAJAX(targetUrl,null,'POST');
		var service = new AjaxService();
	 	service.setURL(targeturl);
		service._method = "POST";
	 	service.callService();
		return true;
	} catch(e) {}
}

function get_coordinates(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
	}
	while (obj = obj.offsetParent) {
		curleft += obj.offsetLeft;
		curtop += obj.offsetTop;
	}
	var document_size = document.getElementById("wrap");
	curleft = curleft-document_size.offsetLeft;
	curtop = curtop-document_size.offsetTop;
	var x = document_size.clientWidth;
	var y = document_size.clientHeight;
	percent_left = Math.round((curleft*100)/x);
	percent_top = Math.round((curtop*100)/y);
	var result = "("+percent_left+","+percent_top+") of "+x+"x"+y;
	return result;
}

function get_location(url) {
	var expression = new RegExp("(^.*//[^/]*)", "g");
	url = url.replace(expression,"");
	var html_only = new RegExp("\\?.*","g");
	url = url.replace(html_only,"");
	return url;
}

function check_location(value) {
	var filter = new RegExp(".*javascript.*","g");
	if (value.match(filter)) {
		return false;
	}else {
		return true;
	}
}

function resolve_basic_links(obj) {
	while (obj = obj.parentNode) {
		switch (obj.id) {
			case "region_selector" : return "<b>Region Selector:</b> ";
			case "mainnav" : return "<b>Main Navigation:</b> ";
			case "util" : return "<b>Header:</b> ";
			case "subscribe_button" : return "<b>Header subscribe:</b> ";
			case "content" : return "<b>Content:</b> "
			default: if (obj.hasAttributes){
					if (obj.getAttribute("class") == "footer") {
						return "<b>Footer:</b> ";
					}
				}
		}
		if (obj.nodeName == "BODY")
			return "<b>Content:</b> ";
	} 
	return "";
}

function map_track(uid,sid,subscribed) {
	uid = encodeURIComponent(uid);
	sid = encodeURIComponent(sid);
	var map = this.value;
	map = encodeURIComponent(map);
	var target_url = "/mason/Admin/track_maps.html?uid="+uid+"&sid="+sid+"&subscribed="+subscribed+"&map="+map;
	_UTIL_simpleAJAX(target_url,null,'POST');
	pausecomp(250);
	return true;
}

function record_outcome(user_type, event_id, variant_id, outcome, unique_id) {
	var trackUrl = "/mason/tracker/outcome_track.html?user_type="+user_type+"&event_id="+event_id+"&variant_id="+variant_id+"&outcome="+outcome+"&unique_id="+unique_id;
	_UTIL_simpleAJAX(trackUrl,null,'POST');
	return true;
}

var prefix = "ps_drop";
var ps_drop_is_map = false;
var ps_drop_timer;
var ps_drop_cur = "";
var ps_locale = '';
var ps_map_focus_lock = false;
var ps_drop_timer_delay = 200;

var ps_drop_map_id = "ps_drop_map";
var ps_drop_map_id_forcs = "ps_drop_map_forcs";

var ps_drop_list_id = "ps_drop_list"
var ps_drop_current_select_id = "current_select";
var ps_drop_imagemap_id = "ps_drop_usamap";

var ps_list_visible = false;

//_UTIL_addEvent(window,"load",ps_drop_init);


	
function ps_drop_init(){



	obj = document.getElementById(ps_drop_imagemap_id);
	if (obj){
		prefix = "ps_map";
		ps_drop_list_id = "ps_map_list"
		_UTIL_addEvent(obj,'click',psd_locale_click);
		ps_drop_is_map = true;
		
		if (!document.getElementById(prefix+"_list")){
			var region = document.getElementById("region")
			var select_region_from_map = document.getElementById("select_region_from_map")
			if (select_region_from_map){
				select_region_from_map.appendChild(region)
			}
		}
	}


	obj = document.getElementById(ps_drop_current_select_id);

	if (obj){
		obj.setAttribute("href","javascript:void(0)");
	}
	
	var ul = document.getElementById(ps_drop_list_id);
	if (ul){
		psd_setUpSelectUl(ul);
	}
	
	if (obj){
		_UTIL_addEvent(obj,'click',psd_showMenu);
		_UTIL_addEvent(obj,'mouseover',psd_showMenu);
		_UTIL_addEvent(obj,'mouseout',psd_hideThis);
	}
	
	

}
	

function psd_toggleselect(force){
	var obj = document.getElementById(ps_drop_list_id);
	if (obj){
		if (force){
			obj.className = force;
		}else{
			obj.className = (obj.className=="hide") ? "show" : "hide";
		}
		if (obj.className == "show"){
			if (document.all) _UTIL_setIFrameBackground(prefix+"_list");
			ps_list_visible = true;
			
		}else{
			if (document.all) _UTIL_hideIFrameBackground(prefix+"_list");
			ps_list_visible = false;
			
				
			if (ps_drop_is_map){
				ps_map_focus_lock = false;

				if (!force){
					ps_locale = '';
				psd_mapfocus('');

				}
			}
		}
	}
	return false;
}



function psd_mapfocus(locale){
	var obj = document.getElementById(ps_drop_map_id);

	if (ps_locale!='' && locale!='' && locale != ps_locale && !ps_list_visible){
		psd_toggleselect('hide');
	}

	if (obj && !ps_map_focus_lock){
		if (locale != ''){
			obj.src = "/img/jk/usa_map_"+locale+".gif"
		}else{
			if (ps_list_visible && ps_locale != ''){
				obj.src = "/img/jk/usa_map_"+ps_locale+".gif"
			}else{
				obj.src = "/img/spacer.gif";
			}
		}
		ps_locale = locale;

	}
}

function psd_mapfocus_forcs(locale){
	var obj = document.getElementById(ps_drop_map_id_forcs);

	if (ps_locale!='' && locale!='' && locale != ps_locale && !ps_list_visible){
		psd_toggleselect('hide');
	}

	if (obj && !ps_map_focus_lock){
		if (locale != ''){
			obj.src = "/img/jk/usa_map_"+locale+".gif"
		}else{
			if (ps_list_visible && ps_locale != ''){
				obj.src = "/img/jk/usa_map_"+ps_locale+".gif"
			}else{
				obj.src = "/img/spacer.gif";
			}
		}
		ps_locale = locale;

	}
}


	function psd_togglesection(){
		var obj = this.parentNode;
		if (obj){
			obj.className = (obj.className=="cur") ? "" : "cur";
		}
		obj = getFirstSiblingByTagName(this,"ul");
		
		if (obj){
			obj.className = (obj.className=="hide") ? "show" : "hide";
		}
		if (document.all) _UTIL_setIFrameBackground(prefix+"_list");
		return false;
	}
	
	function _UTIL_addEvent( obj, type, fn ) {
		if ( obj.attachEvent ){
			obj["e"+type+fn] = fn;
			obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}else{
			obj.addEventListener( type, fn, false );
		}
	}
	
	function _UTIL_removeEvent( obj, type, fn ){
		if ( obj.detachEvent ) {
			obj.detachEvent( "on"+type, obj[type+fn] );
			obj[type+fn] = null;
		}else{
			obj.removeEventListener( type, fn, false );
		}
	}

	function psd_showMenu(){
		psd_toggleselect("show");
		psd_dontHideThis();
	}
	
	
	function getFirstSiblingByTagName(obj,type){

		var a = obj.parentNode.getElementsByTagName(type);
		for (var i=0; i<a.length; i++){
			if (obj.parentNode == a[i].parentNode){
				return a[i];
			}
		}
		for (var i=0; i<a.length; i++){
			if (obj.parentNode == a[i].parentNode.parentNode){
		//		return a[i];
			}
		}
	}
	
	function psd_hideThis(){
		obj = document.getElementById("current_select");
		var ul = document.getElementById(ps_drop_list_id);
		
		if (ps_drop_is_map){
			ps_map_focus_lock = false;
		}
		ps_drop_timer = setTimeout("psd_toggleselect('hide')",ps_drop_timer_delay);
	}
	
	function psd_dontHideThis(){
		clearTimeout(ps_drop_timer);
	}
	
	function psd_Hide(objid){
		psd_toggleselect(force);
	}
	
	var debug = true;
	
	function psd_setUpSelectUl(obj){
		var x = obj.childNodes;
		
		var liChildren = obj.getElementsByTagName("li");

		for (var i=0;i<liChildren.length;i++){							
			if(liChildren[i].parentNode == obj){
				var aChildren = liChildren[i].getElementsByTagName("h4");
				for (var j=0;j<aChildren.length;j++){
					if(aChildren[j].parentNode == liChildren[i]){
						var h4 = aChildren[j];
						_UTIL_addEvent(h4,"click",psd_togglesection);
						h4.onmouseover = function(){ this.className = "hover" };
						h4.onmouseout = function(){ this.className = "" };			
					}
				}
				var ulChildren = liChildren[i].getElementsByTagName("ul");
				for (var j=0;j<ulChildren.length;j++){
					if(ulChildren[j].parentNode == liChildren[i]){
						var u = ulChildren[j];
						var expand = false;
						var lis = u.getElementsByTagName('li');
						for (var k=0; k<lis.length; k++){
							if (prefix+"_"+ps_drop_cur == lis[k].getAttribute("id")){
								expand = true;
							}
						}
						
						if (expand){
							liChildren[i].className = "cur";
						}else{
							u.className = "hide";
						}
					}
						
				}
			}
		}
		_UTIL_addEvent(obj,"mouseover",psd_dontHideThis);
		_UTIL_addEvent(obj,"mouseout",psd_hideThis);
		
		var region = document.getElementById("region")
		if (region){
			region.className = "show";
		}
	}
	
	


function psd_locale_click(e){
	if(!e) e = window.event;

	ps_map_focus_lock = true;
	if(!document.all)psd_dontHideThis();
	
	var map = document.getElementById(ps_drop_map_id);

	var map_x = e.clientX+_UTIL_getScrollLeft()-6;
	var map_y = e.clientY+_UTIL_getScrollTop()-6;
	
	var obj = document.getElementById(ps_drop_list_id);
	obj.className="show";
	
	var d = obj.getElementsByTagName('li');

	for (var i=0; i<d.length; i++){
		if (obj == d[i].parentNode){
			d[i].className="hide";
		}
	}
	
	if (ps_locale != ''){
		document.getElementById(prefix+"_"+ps_locale).className="cur";
		var x = document.getElementById(prefix+"_"+ps_locale).childNodes;
			
		for (var i=0;i<x.length;i++){
			if (x[i].nodeType == 1){
	
					var a = x[i].getElementsByTagName('a');
	
					var lis = x[i].getElementsByTagName('li');
					for (var j=0; j<lis.length; j++){
						lis[j].className = "show";
					}
					x[i].className = "show";
			}
		}
		
		if (_UTIL_getScrollTop()+_UTIL_getAvailHeight()<map_y+obj.offsetHeight+20)
			map_y = _UTIL_getScrollTop()+_UTIL_getAvailHeight()-obj.offsetHeight-20;
		
		obj.style.top = map_y+"px";
		obj.style.left = map_x+"px";
		obj.style.border = "1px solid #666";
		ps_map_focus_lock = true;
	}else{
		obj.className="hide";
	}
	return false;
}

function psd_maptextswitch(type){
	var map = document.getElementById(ps_drop_map_id);
	var list = document.getElementById("locale_section");
	if (type=="map"){
		map.className = "show";
		list.className="hide";
	}else{
		map.className = "hide";
		list.className="show";
	}
}

//_UTIL_addDOMLoadEvent(ps_drop_init);
