/*
 * 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")}})})();;// $Id: drupal.js,v 1.41.2.4 2009/07/21 08:59:10 goba Exp $

var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'themes': {}, 'locale': {} };

/**
 * Set the variable that indicates if JavaScript behaviors should be applied
 */
Drupal.jsEnabled = document.getElementsByTagName && document.createElement && document.createTextNode && document.documentElement && document.getElementById;

/**
 * Attach all registered behaviors to a page element.
 *
 * Behaviors are event-triggered actions that attach to page elements, enhancing
 * default non-Javascript UIs. Behaviors are registered in the Drupal.behaviors
 * object as follows:
 * @code
 *    Drupal.behaviors.behaviorName = function () {
 *      ...
 *    };
 * @endcode
 *
 * Drupal.attachBehaviors is added below to the jQuery ready event and so
 * runs on initial page load. Developers implementing AHAH/AJAX in their
 * solutions should also call this function after new page content has been
 * loaded, feeding in an element to be processed, in order to attach all
 * behaviors to the new content.
 *
 * Behaviors should use a class in the form behaviorName-processed to ensure
 * the behavior is attached only once to a given element. (Doing so enables
 * the reprocessing of given elements, which may be needed on occasion despite
 * the ability to limit behavior attachment to a particular element.)
 *
 * @param context
 *   An element to attach behaviors to. If none is given, the document element
 *   is used.
 */
Drupal.attachBehaviors = function(context) {
  context = context || document;
  if (Drupal.jsEnabled) {
    // Execute all of them.
    jQuery.each(Drupal.behaviors, function() {
      this(context);
    });
  }
};

/**
 * Encode special characters in a plain-text string for display as HTML.
 */
Drupal.checkPlain = function(str) {
  str = String(str);
  var replace = { '&': '&amp;', '"': '&quot;', '<': '&lt;', '>': '&gt;' };
  for (var character in replace) {
    var regex = new RegExp(character, 'g');
    str = str.replace(regex, replace[character]);
  }
  return str;
};

/**
 * Translate strings to the page language or a given language.
 *
 * See the documentation of the server-side t() function for further details.
 *
 * @param str
 *   A string containing the English string to translate.
 * @param args
 *   An object of replacements pairs to make after translation. Incidences
 *   of any key in this array are replaced with the corresponding value.
 *   Based on the first character of the key, the value is escaped and/or themed:
 *    - !variable: inserted as is
 *    - @variable: escape plain text to HTML (Drupal.checkPlain)
 *    - %variable: escape text and theme as a placeholder for user-submitted
 *      content (checkPlain + Drupal.theme('placeholder'))
 * @return
 *   The translated string.
 */
Drupal.t = function(str, args) {
  // Fetch the localized version of the string.
  if (Drupal.locale.strings && Drupal.locale.strings[str]) {
    str = Drupal.locale.strings[str];
  }

  if (args) {
    // Transform arguments before inserting them
    for (var key in args) {
      switch (key.charAt(0)) {
        // Escaped only
        case '@':
          args[key] = Drupal.checkPlain(args[key]);
        break;
        // Pass-through
        case '!':
          break;
        // Escaped and placeholder
        case '%':
        default:
          args[key] = Drupal.theme('placeholder', args[key]);
          break;
      }
      str = str.replace(key, args[key]);
    }
  }
  return str;
};

/**
 * Format a string containing a count of items.
 *
 * This function ensures that the string is pluralized correctly. Since Drupal.t() is
 * called by this function, make sure not to pass already-localized strings to it.
 *
 * See the documentation of the server-side format_plural() function for further details.
 *
 * @param count
 *   The item count to display.
 * @param singular
 *   The string for the singular case. Please make sure it is clear this is
 *   singular, to ease translation (e.g. use "1 new comment" instead of "1 new").
 *   Do not use @count in the singular string.
 * @param plural
 *   The string for the plural case. Please make sure it is clear this is plural,
 *   to ease translation. Use @count in place of the item count, as in "@count
 *   new comments".
 * @param args
 *   An object of replacements pairs to make after translation. Incidences
 *   of any key in this array are replaced with the corresponding value.
 *   Based on the first character of the key, the value is escaped and/or themed:
 *    - !variable: inserted as is
 *    - @variable: escape plain text to HTML (Drupal.checkPlain)
 *    - %variable: escape text and theme as a placeholder for user-submitted
 *      content (checkPlain + Drupal.theme('placeholder'))
 *   Note that you do not need to include @count in this array.
 *   This replacement is done automatically for the plural case.
 * @return
 *   A translated string.
 */
Drupal.formatPlural = function(count, singular, plural, args) {
  var args = args || {};
  args['@count'] = count;
  // Determine the index of the plural form.
  var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1);

  if (index == 0) {
    return Drupal.t(singular, args);
  }
  else if (index == 1) {
    return Drupal.t(plural, args);
  }
  else {
    args['@count['+ index +']'] = args['@count'];
    delete args['@count'];
    return Drupal.t(plural.replace('@count', '@count['+ index +']'));
  }
};

/**
 * Generate the themed representation of a Drupal object.
 *
 * All requests for themed output must go through this function. It examines
 * the request and routes it to the appropriate theme function. If the current
 * theme does not provide an override function, the generic theme function is
 * called.
 *
 * For example, to retrieve the HTML that is output by theme_placeholder(text),
 * call Drupal.theme('placeholder', text).
 *
 * @param func
 *   The name of the theme function to call.
 * @param ...
 *   Additional arguments to pass along to the theme function.
 * @return
 *   Any data the theme function returns. This could be a plain HTML string,
 *   but also a complex object.
 */
Drupal.theme = function(func) {
  for (var i = 1, args = []; i < arguments.length; i++) {
    args.push(arguments[i]);
  }

  return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args);
};

/**
 * Parse a JSON response.
 *
 * The result is either the JSON object, or an object with 'status' 0 and 'data' an error message.
 */
Drupal.parseJson = function (data) {
  if ((data.substring(0, 1) != '{') && (data.substring(0, 1) != '[')) {
    return { status: 0, data: data.length ? data : Drupal.t('Unspecified error') };
  }
  return eval('(' + data + ');');
};

/**
 * Freeze the current body height (as minimum height). Used to prevent
 * unnecessary upwards scrolling when doing DOM manipulations.
 */
Drupal.freezeHeight = function () {
  Drupal.unfreezeHeight();
  var div = document.createElement('div');
  $(div).css({
    position: 'absolute',
    top: '0px',
    left: '0px',
    width: '1px',
    height: $('body').css('height')
  }).attr('id', 'freeze-height');
  $('body').append(div);
};

/**
 * Unfreeze the body height
 */
Drupal.unfreezeHeight = function () {
  $('#freeze-height').remove();
};

/**
 * Wrapper around encodeURIComponent() which avoids Apache quirks (equivalent of
 * drupal_urlencode() in PHP). This function should only be used on paths, not
 * on query string arguments.
 */
Drupal.encodeURIComponent = function (item, uri) {
  uri = uri || location.href;
  item = encodeURIComponent(item).replace(/%2F/g, '/');
  return (uri.indexOf('?q=') != -1) ? item : item.replace(/%26/g, '%2526').replace(/%23/g, '%2523').replace(/\/\//g, '/%252F');
};

/**
 * Get the text selection in a textarea.
 */
Drupal.getSelection = function (element) {
  if (typeof(element.selectionStart) != 'number' && document.selection) {
    // The current selection
    var range1 = document.selection.createRange();
    var range2 = range1.duplicate();
    // Select all text.
    range2.moveToElementText(element);
    // Now move 'dummy' end point to end point of original range.
    range2.setEndPoint('EndToEnd', range1);
    // Now we can calculate start and end points.
    var start = range2.text.length - range1.text.length;
    var end = start + range1.text.length;
    return { 'start': start, 'end': end };
  }
  return { 'start': element.selectionStart, 'end': element.selectionEnd };
};

/**
 * Build an error message from ahah response.
 */
Drupal.ahahError = function(xmlhttp, uri) {
  if (xmlhttp.status == 200) {
    if (jQuery.trim($(xmlhttp.responseText).text())) {
      var message = Drupal.t("An error occurred. \n@uri\n@text", {'@uri': uri, '@text': xmlhttp.responseText });
    }
    else {
      var message = Drupal.t("An error occurred. \n@uri\n(no information available).", {'@uri': uri, '@text': xmlhttp.responseText });
    }
  }
  else {
    var message = Drupal.t("An HTTP error @status occurred. \n@uri", {'@uri': uri, '@status': xmlhttp.status });
  }
  return message;
}

// Global Killswitch on the <html> element
if (Drupal.jsEnabled) {
  // Global Killswitch on the <html> element
  $(document.documentElement).addClass('js');
  // 'js enabled' cookie
  document.cookie = 'has_js=1; path=/';
  // Attach all behaviors.
  $(document).ready(function() {
    Drupal.attachBehaviors(this);
  });
}

/**
 * The default themes.
 */
Drupal.theme.prototype = {

  /**
   * Formats text for emphasized display in a placeholder inside a sentence.
   *
   * @param str
   *   The text to format (plain-text).
   * @return
   *   The formatted text (html).
   */
  placeholder: function(str) {
    return '<em>' + Drupal.checkPlain(str) + '</em>';
  }
};
;/**
 * @file
 * Core JS functions that need to be available on all sites
 */

if (typeof gcui_google_event != 'function') {
    
    // track an event
    function gcui_google_event(category, event, label, value) {
    
        if (label) {
            gcui_log('Google analytics event: ' + category + ' | ' + event + ' | ' + label);
        } else {
            gcui_log('Google analytics event: ' + category + ' | ' + event);
        }
    
        // make sure that pageTracker is defined
        _gcui_google_get_pageTracker();
    
        // call trackEvent with the correct amount of parameters
        try{
            if (typeof label == 'undefined') {
                pageTracker._trackEvent(category, event + '');
            } else {
                if (typeof value == 'undefined') {
                    pageTracker._trackEvent(category, event + '', label + '');
                } else {
                    pageTracker._trackEvent(category, event + '', label + '', value);
                }
            }
        } catch(e) {
            gcui_log('Google analytics event failed: ' + category + ' | ' + event + ' | ' + label);
        }
    }
}

// track a link and redirect    
function gcui_google_ajax_link(link) {
    
    if (link.match(/^tel/)) {
        // don't track click-to-call links - it breaks them
        window.location = link;
        return;
    }

    // make sure that pageTracker is defined
    _gcui_google_get_pageTracker();
    
    // see http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html, bottom of the page, section 'Cookies'
    pageTracker._setDomainName(_gcui_my_base_domain);
    pageTracker._setAllowLinker(true);
    pageTracker._setAllowHash(false);
    pageTracker._link(link);
    
    // fall-back (in case it doesn't redirect)
    setTimeout(function() {
        window.location = link;
    }, 2000);
    
}

// track a form submission and redirect
function gcui_google_ajax_submit(form) {
    
    // make sure that pageTracker is defined
    _gcui_google_get_pageTracker();
    
    // see http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html, bottom of the page, section 'Cookies'
    pageTracker._setDomainName(_gcui_my_base_domain);
    pageTracker._setAllowLinker(true);
    pageTracker._setAllowHash(false);
    pageTracker._linkByPost(form, false);
    
    // fall-back (in case it doesn't redirect)
    setTimeout(function() {
        form.submit();
    }, 2000);
    
}

// get the pageTracker global object in place
function _gcui_google_get_pageTracker() {
    if (typeof pageTracker == 'undefined') {
        if (typeof _gat == 'undefined') {
            // too early
            gcui_log('Google Event too early - not tracking!!!');
            return;
        }
        if (typeof _gcui_google_analytics_acc == 'undefined') {
            gcui_log('using default account: ' + _gcui_google_analytics_acc_def);
            pageTracker = _gat._getTracker(_gcui_google_analytics_acc_def);
        } else {
            gcui_log('using account: ' + _gcui_google_analytics_acc);
            pageTracker = _gat._getTracker(_gcui_google_analytics_acc);
        }
    }
}    

if (typeof gcui_in_array == 'undefined') {
    // from: http://phpjs.org/functions/in_array
    function gcui_in_array(needle, haystack, argStrict) {
        // Checks if the given value exists in the array  
        // 
        // version: 1103.1210
        // discuss at: http://phpjs.org/functions/in_array
        // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
        // +   improved by: vlado houba
        // +   input by: Billy
        // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
        // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
        // *     returns 1: true
        // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
        // *     returns 2: false
        // *     example 3: in_array(1, ['1', '2', '3']);
        // *     returns 3: true
        // *     example 3: in_array(1, ['1', '2', '3'], false);
        // *     returns 3: true
        // *     example 4: in_array(1, ['1', '2', '3'], true);
        // *     returns 4: false
        var key = '',
            strict = !! argStrict;
    
        if (strict) {
            for (key in haystack) {
                if (haystack[key] === needle) {
                    return true;
                }
            }
        } else {
            for (key in haystack) {
                if (haystack[key] == needle) {
                    return true;
                }
            }
        }
    
        return false;
    }
}
;// $Id: block_edit.js,v 1.1.2.14 2010/02/17 18:24:24 psynaptic Exp $

Drupal.behaviors.block_edit = function (context) {
  if (Drupal.settings.block_edit.hover_links) {
    $('.node-edit-link, .block-edit-link').hide();
    $('div.block, div.node').mouseover(function() {
      $(this).find('.node-edit-link, .block-edit-link').css('display', 'block');
    });

    $('div.block, div.node').mouseout(function() {
      $(this).find('.node-edit-link, .block-edit-link').css('display', 'none');
    });
  };
};
;// $Id: dhtml_menu.js,v 1.18.2.10 2009/01/12 10:13:30 arancaytar Exp $

/**
 * @file dhtml_menu.js
 * The Javascript code for DHTML Menu
 */
 
Drupal.dhtmlMenu = {};

/**
 * Initialize the module's JS functions
 */
Drupal.behaviors.dhtmlMenu = function() {
  // Do not run this function more than once.
  if (Drupal.dhtmlMenu.init) {
    return;
  }
  else {
    Drupal.dhtmlMenu.init = true;
  }

  // Get the settings.
  var effects = Drupal.settings.dhtmlMenu;

  $('.collapsed').removeClass('expanded');

  // Get cookie
  if (!effects.siblings) {
    var cookie = Drupal.dhtmlMenu.cookieGet();
    for (var i in cookie) {
      // If the cookie was not applied to the HTML code yet, do so now.
      var li = $('#dhtml_menu-' + cookie[i]).parents('li:first');
      if ($(li).hasClass('collapsed')) {
        Drupal.dhtmlMenu.toggleMenu(li);
      }
    }
  }

  /* Add jQuery effects and listeners to all menu items.
   * The ~ (sibling) selector is unidirectional and selects 
   * only the latter element, so we must use siblings() to get 
   * back to the link element.
   */
   $('ul.menu li.dhtml-menu:not(.leaf,.no-dhtml)').each(function() {
    var li = this;
    if (effects.clone) {
      var ul = $(li).find('ul:first');
      if (ul.length) {
        $(li).find('a:first').clone().prependTo(ul).wrap('<li class="leaf fake-leaf"></li>');
      }
    }

    if (effects.doubleclick) {
      $(li).find('a:first').dblclick(function(e) {
        window.location = this.href;
      });
    }

    $(li).find('a:first').click(function(e) {
      Drupal.dhtmlMenu.toggleMenu($(li));
      return false;
    });
  });
}

/**
 * Toggles the menu's state between open and closed.
 *
 * @param li
 *   Object. The <li> element that will be expanded or collapsed.
 */
Drupal.dhtmlMenu.toggleMenu = function(li) {
  var effects = Drupal.settings.dhtmlMenu;

  // If the menu is expanded, collapse it.
  if($(li).hasClass('expanded')) {
    if (effects.slide) {
      $(li).find('ul:first').animate({height: 'hide', opacity: 'hide'}, '1000');
    }
    else $(li).find('ul:first').css('display', 'none');

    // If children are closed automatically, find and close them now.
    if (effects.children) {
      if (effects.slide) {
        $(li).find('li.expanded').find('ul:first').animate({height: 'hide', opacity: 'hide'}, '1000');
      }
      else $(li).find('li.expanded').find('ul:first').css('display', 'none');

      $(li).find('li.expanded').removeClass('expanded').addClass('collapsed')
    }

    $(li).removeClass('expanded').addClass('collapsed');
  }

  // Otherwise, expand it.
  else {
    if (effects.slide) {
      $(li).find('ul:first').animate({height: 'show', opacity: 'show'}, '1000');
    }
    else $(li).find('ul:first').css('display', 'block');
    $(li).removeClass('collapsed').addClass('expanded');

    // If the siblings effect is on, close all sibling menus.
    if (effects.siblings) {
      var id = $(li).find('a:first').attr('id');

      // Siblings are all open menus that are neither parents nor children of this menu.
      $(li).find('li').addClass('own-children-temp');
	  
      // If the relativity option is on, select only the siblings that have the same parent
      if (effects.relativity) {
        var siblings = $(li).parent().find('li.expanded').not('.own-children-temp').not(':has(#' + id + ')');
      }
      // Otherwise, select all menus of the same level
      else {
        var siblings = $('ul.menu li.expanded').not('.own-children-temp').not(':has(#' + id + ')');
      }

      // If children should not get closed automatically...
      if (!effects.children) {
        // Remove items that are currently hidden from view (do not close these).
        $('li.collapsed li.expanded').addClass('sibling-children-temp');
        // Only close the top-most open sibling, not its children.
        $(siblings).find('li.expanded').addClass('sibling-children-temp');
        siblings = $(siblings).not('.sibling-children-temp');
      }

      $('.own-children-temp, .sibling-children-temp').removeClass('own-children-temp').removeClass('sibling-children-temp');

      if (effects.slide) {
        $(siblings).find('ul:first').animate({height: 'hide', opacity: 'hide'}, '1000');
      }
      else $(siblings).find('ul:first').css('display', 'none');

      $(siblings).removeClass('expanded').addClass('collapsed');
    }
  }

  // Save the current state of the menus in the cookie.
  Drupal.dhtmlMenu.cookieSet();
}

/**
 * Reads the dhtml_menu cookie.
 */
Drupal.dhtmlMenu.cookieGet = function() {
  var c = /dhtml_menu=(.*?)(;|$)/.exec(document.cookie);
  if (c) {
    return c[1];
  }
  else return '';
}

/**
 * Saves the dhtml_menu cooki.
 */
Drupal.dhtmlMenu.cookieSet = function() {
  var expanded = new Array();
  $('li.expanded').each(function() {
    expanded.push($(this).find('a:first').attr('id').substr(5));
  });
  document.cookie = 'dhtml_menu=' + expanded.join(',') + ';path=/';
}

;function extlinkAttach(context) {
  // Strip the host name down, removing subdomains or www.
  var host = window.location.host.replace(/^(([^\/]+?\.)*)([^\.]{4,})((\.[a-z]{1,4})*)$/, '$3$4');
  var subdomain = window.location.host.replace(/^(([^\/]+?\.)*)([^\.]{4,})((\.[a-z]{1,4})*)$/, '$1');

  // Determine what subdomains are considered internal.
  if (Drupal.settings.extlink.extSubdomains) {
    var subdomains = "([^/]*)?";
  }
  else if (subdomain == 'www.' || subdomain == '') {
    var subdomains = "(www\.)?";
  }
  else {
    var subdomains = subdomain.replace(".", "\.");
  }

  // Build regular expressions that define an internal link.
  var internal_link = new RegExp("^https?://" + subdomains + host, "i");

  // Extra internal link matching.
  var extInclude = false;
  if (Drupal.settings.extlink.extInclude) {
    extInclude = new RegExp(Drupal.settings.extlink.extInclude.replace(/\\/, '\\'));
  }

  // Extra external link matching.
  var extExclude = false;
  if (Drupal.settings.extlink.extExclude) {
    extExclude = new RegExp(Drupal.settings.extlink.extExclude.replace(/\\/, '\\'));
  }

  // Find all links which are NOT internal and begin with http (as opposed
  // to ftp://, javascript:, etc. other kinds of links.
  // When operating on the 'this' variable, the host has been appended to
  // all links by the browser, even local ones.
  // In jQuery 1.1 and higher, we'd use a filter method here, but it is not
  // available in jQuery 1.0 (Drupal 5 default).
  var external_links = new Array();
  var mailto_links = new Array();
  $("a", context).each(function(el) {
    try {
      var url = this.href.toLowerCase();
      if (url.indexOf('http') == 0 && (!url.match(internal_link) || (extInclude && url.match(extInclude))) && !(extExclude && url.match(extExclude))) {
        external_links.push(this);
      }
      else if (url.indexOf('mailto:') == 0) {
        mailto_links.push(this);
      }
    }
    // IE7 throws errors often when dealing with irregular links, such as:
    // <a href="node/10"></a> Empty tags.
    // <a href="http://user:pass@example.com">example</a> User:pass syntax.
    catch(error) {
      return false;
    }
  });

  if (Drupal.settings.extlink.extClass) {
    // Apply the "ext" class to all links not containing images.
    if (parseFloat($().jquery) < 1.2) {
      $(external_links).not('[img]').addClass(Drupal.settings.extlink.extClass).each(function() { if ($(this).css('display') == 'inline') $(this).after('<span class=' + Drupal.settings.extlink.extClass + '></span>'); });
    }
    else {
      $(external_links).not($(external_links).find('img').parents('a')).addClass(Drupal.settings.extlink.extClass).each(function() { if ($(this).css('display') == 'inline') $(this).after('<span class=' + Drupal.settings.extlink.extClass + '></span>'); });
    }
  }

  if (Drupal.settings.extlink.mailtoClass) {
    // Apply the "mailto" class to all mailto links not containing images.
    if (parseFloat($().jquery) < 1.2) {
      $(mailto_links).not('[img]').addClass(Drupal.settings.extlink.mailtoClass).each(function() { if ($(this).css('display') == 'inline') $(this).after('<span class=' + Drupal.settings.extlink.mailtoClass + '></span>'); });
    }
    else {
      $(mailto_links).not($(mailto_links).find('img').parents('a')).addClass(Drupal.settings.extlink.mailtoClass).each(function() { if ($(this).css('display') == 'inline') $(this).after('<span class=' + Drupal.settings.extlink.mailtoClass + '></span>'); });
    }
  }

  if (Drupal.settings.extlink.extTarget) {
    // Apply the target attribute to all links.
    $(external_links).attr('target', Drupal.settings.extlink.extTarget);
  }

  if (Drupal.settings.extlink.extAlert) {
    // Add pop-up click-through dialog.
    $(external_links).click(function(e) {
     return confirm(Drupal.settings.extlink.extAlertText);
    });
  }

}

Drupal.behaviors.extlink = function(context){
  extlinkAttach(context);
};/* $Id: lightbox.js,v 1.5.2.6.2.120 2009/09/13 23:27:32 snpower Exp $ */

/**
 * jQuery Lightbox
 * @author
 *   Stella Power, <http://drupal.org/user/66894>
 *
 * Based on Lightbox v2.03.3 by Lokesh Dhakar
 * <http://www.huddletogether.com/projects/lightbox2/>
 * Also partially based on the jQuery Lightbox by Warren Krewenki
 *   <http://warren.mesozen.com>
 *
 * Permission has been granted to Mark Ashmead & other Drupal Lightbox2 module
 * maintainers to distribute this file via Drupal.org
 * Under GPL license.
 *
 * Slideshow, iframe and video functionality added by Stella Power.
 */

var Lightbox = {
  auto_modal : false,
  overlayOpacity : 0.8, // Controls transparency of shadow overlay.
  overlayColor : '000', // Controls colour of shadow overlay.
  disableCloseClick : true,
  // Controls the order of the lightbox resizing animation sequence.
  resizeSequence: 0, // 0: simultaneous, 1: width then height, 2: height then width.
  resizeSpeed: 'normal', // Controls the speed of the lightbox resizing animation.
  fadeInSpeed: 'normal', // Controls the speed of the image appearance.
  slideDownSpeed: 'slow', // Controls the speed of the image details appearance.
  minWidth: 240,
  borderSize : 10,
  boxColor : 'fff',
  fontColor : '000',
  topPosition : '',
  infoHeight: 20,
  alternative_layout : false,
  imageArray : [],
  imageNum : null,
  total : 0,
  activeImage : null,
  inprogress : false,
  disableResize : false,
  disableZoom : false,
  isZoomedIn : false,
  rtl : false,
  loopItems : false,
  keysClose : ['c', 'x', 27],
  keysPrevious : ['p', 37],
  keysNext : ['n', 39],
  keysZoom : ['z'],
  keysPlayPause : [32],

  // Slideshow options.
  slideInterval : 5000, // In milliseconds.
  showPlayPause : true,
  autoStart : true,
  autoExit : true,
  pauseOnNextClick : false, // True to pause the slideshow when the "Next" button is clicked.
  pauseOnPrevClick : true, // True to pause the slideshow when the "Prev" button is clicked.
  slideIdArray : [],
  slideIdCount : 0,
  isSlideshow : false,
  isPaused : false,
  loopSlides : false,

  // Iframe options.
  isLightframe : false,
  iframe_width : 600,
  iframe_height : 400,
  iframe_border : 1,

  // Video and modal options.
  enableVideo : false,
  flvPlayer : '/flvplayer.swf',
  flvFlashvars : '',
  isModal : false,
  isVideo : false,
  videoId : false,
  modalWidth : 400,
  modalHeight : 400,
  modalHTML : null,


  // initialize()
  // Constructor runs on completion of the DOM loading.
  // The function inserts html at the bottom of the page which is used
  // to display the shadow overlay and the image container.
  initialize: function() {

    var s = Drupal.settings.lightbox2;
    Lightbox.overlayOpacity = s.overlay_opacity;
    Lightbox.overlayColor = s.overlay_color;
    Lightbox.disableCloseClick = s.disable_close_click;
    Lightbox.resizeSequence = s.resize_sequence;
    Lightbox.resizeSpeed = s.resize_speed;
    Lightbox.fadeInSpeed = s.fade_in_speed;
    Lightbox.slideDownSpeed = s.slide_down_speed;
    Lightbox.borderSize = s.border_size;
    Lightbox.boxColor = s.box_color;
    Lightbox.fontColor = s.font_color;
    Lightbox.topPosition = s.top_position;
    Lightbox.rtl = s.rtl;
    Lightbox.loopItems = s.loop_items;
    Lightbox.keysClose = s.keys_close.split(" ");
    Lightbox.keysPrevious = s.keys_previous.split(" ");
    Lightbox.keysNext = s.keys_next.split(" ");
    Lightbox.keysZoom = s.keys_zoom.split(" ");
    Lightbox.keysPlayPause = s.keys_play_pause.split(" ");
    Lightbox.disableResize = s.disable_resize;
    Lightbox.disableZoom = s.disable_zoom;
    Lightbox.slideInterval = s.slideshow_interval;
    Lightbox.showPlayPause = s.show_play_pause;
    Lightbox.autoStart = s.slideshow_automatic_start;
    Lightbox.autoExit = s.slideshow_automatic_exit;
    Lightbox.pauseOnNextClick = s.pause_on_next_click;
    Lightbox.pauseOnPrevClick = s.pause_on_previous_click;
    Lightbox.loopSlides = s.loop_slides;
    Lightbox.alternative_layout = s.use_alt_layout;
    Lightbox.iframe_width = s.iframe_width;
    Lightbox.iframe_height = s.iframe_height;
    Lightbox.iframe_border = s.iframe_border;
    Lightbox.enableVideo = s.enable_video;
    if (s.enable_video) {
      Lightbox.flvPlayer = s.flvPlayer;
      Lightbox.flvFlashvars = s.flvFlashvars;
    }

    // Make the lightbox divs.
    var output = '<div id="overlay" style="display: none;"></div>\
      <div id="lightbox" style="display: none;">\
        <div id="outerImageContainer"></div>\
        <div id="imageDataContainer" class="clearfix">\
          <div id="imageData"></div>\
        </div>\
      </div>';
    var loading = '<div id="loading"><a href="#" id="loadingLink"></a></div>';
    var modal = '<div id="modalContainer" style="display: none;"></div>';
    var frame = '<div id="frameContainer" style="display: none;"></div>';
    var imageContainer = '<div id="imageContainer" style="display: none;"></div>';
    var details = '<div id="imageDetails"></div>';
    var bottomNav = '<div id="bottomNav"></div>';
    var image = '<img id="lightboxImage" />';
    var hoverNav = '<div id="hoverNav"><a id="prevLink" href="#"></a><a id="nextLink" href="#"></a></div>';
    var frameNav = '<div id="frameHoverNav"><a id="framePrevLink" href="#"></a><a id="frameNextLink" href="#"></a></div>';
    var caption = '<span id="caption"></span>';
    var numberDisplay = '<span id="numberDisplay"></span>';
    var close = '<a id="bottomNavClose" href="#"></a>';
    var zoom = '<a id="bottomNavZoom" href="#"></a>';
    var zoomOut = '<a id="bottomNavZoomOut" href="#"></a>';
    var pause = '<a id="lightshowPause" href="#" style="display: none;"></a>';
    var play = '<a id="lightshowPlay" href="#" style="display: none;"></a>';

    $("body").append(output);
    $('#outerImageContainer').append(modal + frame + imageContainer + loading);
    if (!s.use_alt_layout) {
      $('#imageContainer').append(image + hoverNav);
      $('#imageData').append(frameNav + details + bottomNav);
      $('#imageDetails').append(caption + numberDisplay);
      $('#bottomNav').append(close + zoom + zoomOut + pause + play);
    }
    else {
      $('#outerImageContainer').append(bottomNav);
      $('#imageContainer').append(image);
      $('#bottomNav').append(close + zoom + zoomOut);
      $('#imageData').append(hoverNav + details);
      $('#imageDetails').append(caption + numberDisplay + pause + play);
    }

    // Setup onclick handlers.
    if (Lightbox.disableCloseClick) {
      $('#overlay').click(function() { Lightbox.end(); return false; } ).hide();
    }
    $('#loadingLink, #bottomNavClose').click(function() { Lightbox.end('forceClose'); return false; } );
    $('#prevLink, #framePrevLink').click(function() { Lightbox.changeData(Lightbox.activeImage - 1); return false; } );
    $('#nextLink, #frameNextLink').click(function() { Lightbox.changeData(Lightbox.activeImage + 1); return false; } );
    $('#bottomNavZoom').click(function() { Lightbox.changeData(Lightbox.activeImage, true); return false; } );
    $('#bottomNavZoomOut').click(function() { Lightbox.changeData(Lightbox.activeImage, false); return false; } );
    $('#lightshowPause').click(function() { Lightbox.togglePlayPause("lightshowPause", "lightshowPlay"); return false; } );
    $('#lightshowPlay').click(function() { Lightbox.togglePlayPause("lightshowPlay", "lightshowPause"); return false; } );

    // Fix positioning.
    $('#prevLink, #nextLink, #framePrevLink, #frameNextLink').css({ 'paddingTop': Lightbox.borderSize + 'px'});
    $('#imageContainer, #frameContainer, #modalContainer').css({ 'padding': Lightbox.borderSize + 'px'});
    $('#outerImageContainer, #imageDataContainer, #bottomNavClose').css({'backgroundColor': '#' + Lightbox.boxColor, 'color': '#'+Lightbox.fontColor});
    if (Lightbox.alternative_layout) {
      $('#bottomNavZoom, #bottomNavZoomOut').css({'bottom': Lightbox.borderSize + 'px', 'right': Lightbox.borderSize + 'px'});
    }
    else if (Lightbox.rtl == 1 && $.browser.msie) {
      $('#bottomNavZoom, #bottomNavZoomOut').css({'left': '0px'});
    }

    // Force navigation links to always be displayed
    if (s.force_show_nav) {
      $('#prevLink, #nextLink').addClass("force_show_nav");
    }

  },

  // initList()
  // Loops through anchor tags looking for 'lightbox', 'lightshow' and
  // 'lightframe', etc, references and applies onclick events to appropriate
  // links. You can rerun after dynamically adding images w/ajax.
  initList : function(context) {

    if (context == undefined || context == null) {
      context = document;
    }

    // Attach lightbox to any links with rel 'lightbox', 'lightshow' or
    // 'lightframe', etc.
    $("a[rel^='lightbox']:not(.lightbox-processed), area[rel^='lightbox']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, false, false, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("a[rel^='lightshow']:not(.lightbox-processed), area[rel^='lightshow']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, true, false, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("a[rel^='lightframe']:not(.lightbox-processed), area[rel^='lightframe']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      if (Lightbox.disableCloseClick) {
        $('#lightbox').unbind('click');
        $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
      }
      Lightbox.start(this, false, true, false, false);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    if (Lightbox.enableVideo) {
      $("a[rel^='lightvideo']:not(.lightbox-processed), area[rel^='lightvideo']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
        if (Lightbox.disableCloseClick) {
          $('#lightbox').unbind('click');
          $('#lightbox').click(function() { Lightbox.end('forceClose'); } );
        }
        Lightbox.start(this, false, false, true, false);
        if (e.preventDefault) { e.preventDefault(); }
        return false;
      });
    }
    $("a[rel^='lightmodal']:not(.lightbox-processed), area[rel^='lightmodal']:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      $('#lightbox').unbind('click');
      Lightbox.start(this, false, false, false, true);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
    $("#lightboxAutoModal:not(.lightbox-processed)", context).addClass('lightbox-processed').click(function(e) {
      Lightbox.auto_modal = true;
      $('#lightbox').unbind('click');
      Lightbox.start(this, false, false, false, true);
      if (e.preventDefault) { e.preventDefault(); }
      return false;
    });
  },

  // start()
  // Display overlay and lightbox. If image is part of a set, add siblings to
  // imageArray.
  start: function(imageLink, slideshow, lightframe, lightvideo, lightmodal) {

    Lightbox.isPaused = !Lightbox.autoStart;

    // Replaces hideSelectBoxes() and hideFlash() calls in original lightbox2.
    Lightbox.toggleSelectsFlash('hide');

    // Stretch overlay to fill page and fade in.
    var arrayPageSize = Lightbox.getPageSize();
    $("#overlay").hide().css({
      'width': '100%',
      'zIndex': '10090',
      'height': arrayPageSize[1] + 'px',
      'backgroundColor' : '#' + Lightbox.overlayColor
    });
    // Detect OS X FF2 opacity + flash issue.
    if (lightvideo && this.detectMacFF2()) {
      $("#overlay").removeClass("overlay_default");
      $("#overlay").addClass("overlay_macff2");
      $("#overlay").css({'opacity' : null});
    }
    else {
      $("#overlay").removeClass("overlay_macff2");
      $("#overlay").addClass("overlay_default");
      $("#overlay").css({'opacity' : Lightbox.overlayOpacity});
    }
    $("#overlay").fadeIn(Lightbox.fadeInSpeed);


    Lightbox.isSlideshow = slideshow;
    Lightbox.isLightframe = lightframe;
    Lightbox.isVideo = lightvideo;
    Lightbox.isModal = lightmodal;
    Lightbox.imageArray = [];
    Lightbox.imageNum = 0;

    var anchors = $(imageLink.tagName);
    var anchor = null;
    var rel_parts = Lightbox.parseRel(imageLink);
    var rel = rel_parts["rel"];
    var rel_group = rel_parts["group"];
    var title = (rel_parts["title"] ? rel_parts["title"] : imageLink.title);
    var rel_style = null;
    var i = 0;


    // Set the title for image alternative text.
    var alt = imageLink.title;
    if (!alt) {
      var img = $(imageLink).find("img");
      if (img && $(img).attr("alt")) {
        alt = $(img).attr("alt");
      }
      else {
        alt = title;
      }
    }

    if ($(imageLink).attr('id') == 'lightboxAutoModal') {
      rel_style = rel_parts["style"];
      Lightbox.imageArray.push(['#lightboxAutoModal > *', title, alt, rel_style, 1]);
    }
    else {
      // Handle lightbox images with no grouping.
      if ((rel == 'lightbox' || rel == 'lightshow') && !rel_group) {
        Lightbox.imageArray.push([imageLink.href, title, alt]);
      }

      // Handle other items with no grouping.
      else if (!rel_group) {
        rel_style = rel_parts["style"];
        Lightbox.imageArray.push([imageLink.href, title, alt, rel_style]);
      }

      // Handle grouped items.
      else {

        // Loop through anchors and add them to imageArray.
        for (i = 0; i < anchors.length; i++) {
          anchor = anchors[i];
          if (anchor.href && typeof(anchor.href) == "string" && $(anchor).attr('rel')) {
            var rel_data = Lightbox.parseRel(anchor);
            var anchor_title = (rel_data["title"] ? rel_data["title"] : anchor.title);
            img_alt = anchor.title;
            if (!img_alt) {
              var anchor_img = $(anchor).find("img");
              if (anchor_img && $(anchor_img).attr("alt")) {
                img_alt = $(anchor_img).attr("alt");
              }
              else {
                img_alt = title;
              }
            }
            if (rel_data["rel"] == rel) {
              if (rel_data["group"] == rel_group) {
                if (Lightbox.isLightframe || Lightbox.isModal) {
                  rel_style = rel_data["style"];
                }
                Lightbox.imageArray.push([anchor.href, anchor_title, img_alt, rel_style]);
              }
            }
          }
        }

        // Remove duplicates.
        for (i = 0; i < Lightbox.imageArray.length; i++) {
          for (j = Lightbox.imageArray.length-1; j > i; j--) {
            if (Lightbox.imageArray[i][0] == Lightbox.imageArray[j][0]) {
              Lightbox.imageArray.splice(j,1);
            }
          }
        }
        while (Lightbox.imageArray[Lightbox.imageNum][0] != imageLink.href) {
          Lightbox.imageNum++;
        }
      }
    }

    if (Lightbox.isSlideshow && Lightbox.showPlayPause && Lightbox.isPaused) {
      $('#lightshowPlay').show();
      $('#lightshowPause').hide();
    }

    // Calculate top and left offset for the lightbox.
    var arrayPageScroll = Lightbox.getPageScroll();
    var lightboxTop = arrayPageScroll[1] + (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1;
    var lightboxLeft = arrayPageScroll[0];
    $('#frameContainer, #modalContainer, #lightboxImage').hide();
    $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide();
    $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide();
    $('#outerImageContainer').css({'width': '250px', 'height': '250px'});
    $('#lightbox').css({
      'zIndex': '10500',
      'top': lightboxTop + 'px',
      'left': lightboxLeft + 'px'
    }).show();

    Lightbox.total = Lightbox.imageArray.length;
    Lightbox.changeData(Lightbox.imageNum);
  },

  // changeData()
  // Hide most elements and preload image in preparation for resizing image
  // container.
  changeData: function(imageNum, zoomIn) {

    if (Lightbox.inprogress === false) {
      if (Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) {
        if (imageNum >= Lightbox.total) imageNum = 0;
        if (imageNum < 0) imageNum = Lightbox.total - 1;
      }

      if (Lightbox.isSlideshow) {
        for (var i = 0; i < Lightbox.slideIdCount; i++) {
          window.clearTimeout(Lightbox.slideIdArray[i]);
        }
      }
      Lightbox.inprogress = true;
      Lightbox.activeImage = imageNum;

      if (Lightbox.disableResize && !Lightbox.isSlideshow) {
        zoomIn = true;
      }
      Lightbox.isZoomedIn = zoomIn;


      // Hide elements during transition.
      $('#loading').css({'zIndex': '10500'}).show();
      if (!Lightbox.alternative_layout) {
        $('#imageContainer').hide();
      }
      $('#frameContainer, #modalContainer, #lightboxImage').hide();
      $('#hoverNav, #prevLink, #nextLink, #frameHoverNav, #framePrevLink, #frameNextLink').hide();
      $('#imageDataContainer, #numberDisplay, #bottomNavZoom, #bottomNavZoomOut').hide();

      // Preload image content, but not iframe pages.
      if (!Lightbox.isLightframe && !Lightbox.isVideo && !Lightbox.isModal) {
        imgPreloader = new Image();
        imgPreloader.onerror = function() { Lightbox.imgNodeLoadingError(this); };

        imgPreloader.onload = function() {
          var photo = document.getElementById('lightboxImage');
          photo.src = Lightbox.imageArray[Lightbox.activeImage][0];
          photo.alt = Lightbox.imageArray[Lightbox.activeImage][2];

          var imageWidth = imgPreloader.width;
          var imageHeight = imgPreloader.height;

          // Resize code.
          var arrayPageSize = Lightbox.getPageSize();
          var targ = { w:arrayPageSize[2] - (Lightbox.borderSize * 2), h:arrayPageSize[3] - (Lightbox.borderSize * 6) - (Lightbox.infoHeight * 4) - (arrayPageSize[3] / 10) };
          var orig = { w:imgPreloader.width, h:imgPreloader.height };

          // Image is very large, so show a smaller version of the larger image
          // with zoom button.
          if (zoomIn !== true) {
            var ratio = 1.0; // Shrink image with the same aspect.
            $('#bottomNavZoomOut, #bottomNavZoom').hide();
            if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) {
              ratio = ((targ.w / orig.w) < (targ.h / orig.h)) ? targ.w / orig.w : targ.h / orig.h;
              if (!Lightbox.disableZoom && !Lightbox.isSlideshow) {
                $('#bottomNavZoom').css({'zIndex': '10500'}).show();
              }
            }

            imageWidth  = Math.floor(orig.w * ratio);
            imageHeight = Math.floor(orig.h * ratio);
          }

          else {
            $('#bottomNavZoom').hide();
            // Only display zoom out button if the image is zoomed in already.
            if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w) {
              // Only display zoom out button if not a slideshow and if the
              // buttons aren't disabled.
              if (!Lightbox.disableResize && Lightbox.isSlideshow === false && !Lightbox.disableZoom) {
                $('#bottomNavZoomOut').css({'zIndex': '10500'}).show();
              }
            }
          }

          photo.style.width = (imageWidth) + 'px';
          photo.style.height = (imageHeight) + 'px';
          Lightbox.resizeContainer(imageWidth, imageHeight);

          // Clear onLoad, IE behaves irratically with animated gifs otherwise.
          imgPreloader.onload = function() {};
        };

        imgPreloader.src = Lightbox.imageArray[Lightbox.activeImage][0];
        imgPreloader.alt = Lightbox.imageArray[Lightbox.activeImage][2];
      }

      // Set up frame size, etc.
      else if (Lightbox.isLightframe) {
        var src = Lightbox.imageArray[Lightbox.activeImage][0];
        $('#frameContainer').html('<iframe id="lightboxFrame" style="display: none;" src="'+src+'"></iframe>');

        // Enable swf support in Gecko browsers.
        if ($.browser.mozilla && src.indexOf('.swf') != -1) {
          setTimeout(function () {
            document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0];
          }, 1000);
        }

        if (!Lightbox.iframe_border) {
          $('#lightboxFrame').css({'border': 'none'});
          $('#lightboxFrame').attr('frameborder', '0');
        }
        var iframe = document.getElementById('lightboxFrame');
        var iframeStyles = Lightbox.imageArray[Lightbox.activeImage][3];
        iframe = Lightbox.setStyles(iframe, iframeStyles);
        Lightbox.resizeContainer(parseInt(iframe.width, 10), parseInt(iframe.height, 10));
      }
      else if (Lightbox.isVideo || Lightbox.isModal) {
        var container = document.getElementById('modalContainer');
        var modalStyles = Lightbox.imageArray[Lightbox.activeImage][3];
        container = Lightbox.setStyles(container, modalStyles);
        if (Lightbox.isVideo) {
          Lightbox.modalHeight =  parseInt(container.height, 10);
          Lightbox.modalWidth =  parseInt(container.width, 10);
          Lightvideo.startVideo(Lightbox.imageArray[Lightbox.activeImage][0]);
        }
        Lightbox.resizeContainer(parseInt(container.width, 10), parseInt(container.height, 10));
      }
    }
  },

  // imgNodeLoadingError()
  imgNodeLoadingError: function(image) {
    var s = Drupal.settings.lightbox2;
    var original_image = Lightbox.imageArray[Lightbox.activeImage][0];
    if (s.display_image_size !== "") {
      original_image = original_image.replace(new RegExp("."+s.display_image_size), "");
    }
    Lightbox.imageArray[Lightbox.activeImage][0] = original_image;
    image.onerror = function() { Lightbox.imgLoadingError(image); };
    image.src = original_image;
  },

  // imgLoadingError()
  imgLoadingError: function(image) {
    var s = Drupal.settings.lightbox2;
    Lightbox.imageArray[Lightbox.activeImage][0] = s.default_image;
    image.src = s.default_image;
  },

  // resizeContainer()
  resizeContainer: function(imgWidth, imgHeight) {

    imgWidth = (imgWidth < Lightbox.minWidth ? Lightbox.minWidth : imgWidth);

    this.widthCurrent = $('#outerImageContainer').width();
    this.heightCurrent = $('#outerImageContainer').height();

    var widthNew = (imgWidth  + (Lightbox.borderSize * 2));
    var heightNew = (imgHeight  + (Lightbox.borderSize * 2));

    // Scalars based on change from old to new.
    this.xScale = ( widthNew / this.widthCurrent) * 100;
    this.yScale = ( heightNew / this.heightCurrent) * 100;

    // Calculate size difference between new and old image, and resize if
    // necessary.
    wDiff = this.widthCurrent - widthNew;
    hDiff = this.heightCurrent - heightNew;

    $('#modalContainer').css({'width': imgWidth, 'height': imgHeight});
    // Detect animation sequence.
    if (Lightbox.resizeSequence) {
      var animate1 = {width: widthNew};
      var animate2 = {height: heightNew};
      if (Lightbox.resizeSequence == 2) {
        animate1 = {height: heightNew};
        animate2 = {width: widthNew};
      }
      $('#outerImageContainer').animate(animate1, Lightbox.resizeSpeed).animate(animate2, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); });
    }
    // Simultaneous.
    else {
      $('#outerImageContainer').animate({'width': widthNew, 'height': heightNew}, Lightbox.resizeSpeed, 'linear', function() { Lightbox.showData(); });
    }

    // If new and old image are same size and no scaling transition is necessary
    // do a quick pause to prevent image flicker.
    if ((hDiff === 0) && (wDiff === 0)) {
      if ($.browser.msie) {
        Lightbox.pause(250);
      }
      else {
        Lightbox.pause(100);
      }
    }

    var s = Drupal.settings.lightbox2;
    if (!s.use_alt_layout) {
      $('#prevLink, #nextLink').css({'height': imgHeight + 'px'});
    }
    $('#imageDataContainer').css({'width': widthNew + 'px'});
  },

  // showData()
  // Display image and begin preloading neighbors.
  showData: function() {
    $('#loading').hide();

    if (Lightbox.isLightframe || Lightbox.isVideo || Lightbox.isModal) {
      Lightbox.updateDetails();
      if (Lightbox.isLightframe) {
        $('#frameContainer').show();
        if ($.browser.safari) {
          $('#lightboxFrame').css({'zIndex': '10500'}).show();
        }
        else {
          $('#lightboxFrame').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed);
        }
      }
      else {
        if (Lightbox.isVideo) {
          $("#modalContainer").html(Lightbox.modalHTML);
          $("#modalContainer").click(function() { return false; } );
        }
        else {
          var src = unescape(Lightbox.imageArray[Lightbox.activeImage][0]);
          if (Lightbox.imageArray[Lightbox.activeImage][4]) {
            $(src).appendTo("#modalContainer");
          }
          else {
            $("#modalContainer").load(src);
          }
          $('#modalContainer').unbind('click');
        }
        $('#modalContainer').css({'zIndex': '10500'}).show();
      }
    }

    // Handle display of image content.
    else {
      $('#imageContainer').show();
      if ($.browser.safari) {
        $('#lightboxImage').css({'zIndex': '10500'}).show();
      }
      else {
        $('#lightboxImage').css({'zIndex': '10500'}).fadeIn(Lightbox.fadeInSpeed);
      }
      Lightbox.updateDetails();
      this.preloadNeighborImages();
    }
    Lightbox.inprogress = false;

    // Slideshow specific stuff.
    if (Lightbox.isSlideshow) {
      if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) {
        if (Lightbox.autoExit) {
          Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.end('slideshow');}, Lightbox.slideInterval);
        }
      }
      else {
        if (!Lightbox.isPaused && Lightbox.total > 1) {
          Lightbox.slideIdArray[Lightbox.slideIdCount++] = setTimeout(function () {Lightbox.changeData(Lightbox.activeImage + 1);}, Lightbox.slideInterval);
        }
      }
      if (Lightbox.showPlayPause && Lightbox.total > 1 && !Lightbox.isPaused) {
        $('#lightshowPause').show();
        $('#lightshowPlay').hide();
      }
      else if (Lightbox.showPlayPause && Lightbox.total > 1) {
        $('#lightshowPause').hide();
        $('#lightshowPlay').show();
      }
    }

    // Adjust the page overlay size.
    var arrayPageSize = Lightbox.getPageSize();
    var arrayPageScroll = Lightbox.getPageScroll();
    var pageHeight = arrayPageSize[1];
    if (Lightbox.isZoomedIn && arrayPageSize[1] > arrayPageSize[3]) {
      var lightboxTop = (Lightbox.topPosition == '' ? (arrayPageSize[3] / 10) : Lightbox.topPosition) * 1;
      pageHeight = pageHeight + arrayPageScroll[1] + lightboxTop;
    }
    $('#overlay').css({'height': pageHeight + 'px', 'width': arrayPageSize[0] + 'px'});

    // Gecko browsers (e.g. Firefox, SeaMonkey, etc) don't handle pdfs as
    // expected.
    if ($.browser.mozilla) {
      if (Lightbox.imageArray[Lightbox.activeImage][0].indexOf(".pdf") != -1) {
        setTimeout(function () {
          document.getElementById("lightboxFrame").src = Lightbox.imageArray[Lightbox.activeImage][0];
        }, 1000);
      }
    }
  },

  // updateDetails()
  // Display caption, image number, and bottom nav.
  updateDetails: function() {

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

    var caption = Lightbox.imageArray[Lightbox.activeImage][1];
    if (!caption) caption = '&nbsp;';
    $('#caption').html(caption).css({'zIndex': '10500'}).show();

    // If image is part of set display 'Image x of x'.
    var s = Drupal.settings.lightbox2;
    var numberDisplay = null;
    if (Lightbox.total > 1) {
      var currentImage = Lightbox.activeImage + 1;
      if (!Lightbox.isLightframe && !Lightbox.isModal && !Lightbox.isVideo) {
        numberDisplay = s.image_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      else if (Lightbox.isVideo) {
        numberDisplay = s.video_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      else {
        numberDisplay = s.page_count.replace(/\!current/, currentImage).replace(/\!total/, Lightbox.total);
      }
      $('#numberDisplay').html(numberDisplay).css({'zIndex': '10500'}).show();
    }

    $("#imageDataContainer").hide().slideDown(Lightbox.slideDownSpeed, function() {
      $("#bottomNav").show();
    });
    if (Lightbox.rtl == 1) {
      $("#bottomNav").css({'float': 'left'});
    }
    Lightbox.updateNav();
  },

  // updateNav()
  // Display appropriate previous and next hover navigation.
  updateNav: function() {

    $('#hoverNav').css({'zIndex': '10500'}).show();
    var prevLink = '#prevLink';
    var nextLink = '#nextLink';

    // Slideshow is separated as we need to show play / pause button.
    if (Lightbox.isSlideshow) {
      if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage !== 0) {
        $(prevLink).css({'zIndex': '10500'}).show().click(function() {
          if (Lightbox.pauseOnPrevClick) {
            Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
          }
          Lightbox.changeData(Lightbox.activeImage - 1); return false;
        });
      }
      else {
        $(prevLink).hide();
      }

      // If not last image in set, display next image button.
      if ((Lightbox.total > 1 && Lightbox.loopSlides) || Lightbox.activeImage != (Lightbox.total - 1)) {
        $(nextLink).css({'zIndex': '10500'}).show().click(function() {
          if (Lightbox.pauseOnNextClick) {
            Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
          }
          Lightbox.changeData(Lightbox.activeImage + 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(nextLink).hide();
      }
    }

    // All other types of content.
    else {

      if ((Lightbox.isLightframe || Lightbox.isModal || Lightbox.isVideo) && !Lightbox.alternative_layout) {
        $('#frameHoverNav').css({'zIndex': '10500'}).show();
        $('#hoverNav').css({'zIndex': '10500'}).hide();
        prevLink = '#framePrevLink';
        nextLink = '#frameNextLink';
      }

      // If not first image in set, display prev image button.
      if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage !== 0) {
        $(prevLink).css({'zIndex': '10500'}).show().click(function() {
          Lightbox.changeData(Lightbox.activeImage - 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(prevLink).hide();
      }

      // If not last image in set, display next image button.
      if ((Lightbox.total > 1 && Lightbox.loopItems) || Lightbox.activeImage != (Lightbox.total - 1)) {
        $(nextLink).css({'zIndex': '10500'}).show().click(function() {
          Lightbox.changeData(Lightbox.activeImage + 1); return false;
        });
      }
      // Safari browsers need to have hide() called again.
      else {
        $(nextLink).hide();
      }
    }

    // Don't enable keyboard shortcuts so forms will work.
    if (!Lightbox.isModal) {
      this.enableKeyboardNav();
    }
  },


  // enableKeyboardNav()
  enableKeyboardNav: function() {
    $(document).bind("keydown", this.keyboardAction);
  },

  // disableKeyboardNav()
  disableKeyboardNav: function() {
    $(document).unbind("keydown", this.keyboardAction);
  },

  // keyboardAction()
  keyboardAction: function(e) {
    if (e === null) { // IE.
      keycode = event.keyCode;
      escapeKey = 27;
    }
    else { // Mozilla.
      keycode = e.keyCode;
      escapeKey = e.DOM_VK_ESCAPE;
    }

    key = String.fromCharCode(keycode).toLowerCase();

    // Close lightbox.
    if (Lightbox.checkKey(Lightbox.keysClose, key, keycode)) {
      Lightbox.end('forceClose');
    }
    // Display previous image (p, <-).
    else if (Lightbox.checkKey(Lightbox.keysPrevious, key, keycode)) {
      if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage !== 0) {
        Lightbox.changeData(Lightbox.activeImage - 1);
      }

    }
    // Display next image (n, ->).
    else if (Lightbox.checkKey(Lightbox.keysNext, key, keycode)) {
      if ((Lightbox.total > 1 && ((Lightbox.isSlideshow && Lightbox.loopSlides) || (!Lightbox.isSlideshow && Lightbox.loopItems))) || Lightbox.activeImage != (Lightbox.total - 1)) {
        Lightbox.changeData(Lightbox.activeImage + 1);
      }
    }
    // Zoom in.
    else if (Lightbox.checkKey(Lightbox.keysZoom, key, keycode) && !Lightbox.disableResize && !Lightbox.disableZoom && !Lightbox.isSlideshow && !Lightbox.isLightframe) {
      if (Lightbox.isZoomedIn) {
        Lightbox.changeData(Lightbox.activeImage, false);
      }
      else if (!Lightbox.isZoomedIn) {
        Lightbox.changeData(Lightbox.activeImage, true);
      }
      return false;
    }
    // Toggle play / pause (space).
    else if (Lightbox.checkKey(Lightbox.keysPlayPause, key, keycode) && Lightbox.isSlideshow) {

      if (Lightbox.isPaused) {
        Lightbox.togglePlayPause("lightshowPlay", "lightshowPause");
      }
      else {
        Lightbox.togglePlayPause("lightshowPause", "lightshowPlay");
      }
      return false;
    }
  },

  preloadNeighborImages: function() {

    if ((Lightbox.total - 1) > Lightbox.activeImage) {
      preloadNextImage = new Image();
      preloadNextImage.src = Lightbox.imageArray[Lightbox.activeImage + 1][0];
    }
    if (Lightbox.activeImage > 0) {
      preloadPrevImage = new Image();
      preloadPrevImage.src = Lightbox.imageArray[Lightbox.activeImage - 1][0];
    }

  },

  end: function(caller) {
    var closeClick = (caller == 'slideshow' ? false : true);
    if (Lightbox.isSlideshow && Lightbox.isPaused && !closeClick) {
      return;
    }
    // To prevent double clicks on navigation links.
    if (Lightbox.inprogress === true && caller != 'forceClose') {
      return;
    }
    Lightbox.disableKeyboardNav();
    $('#lightbox').hide();
    $("#overlay").fadeOut();
    Lightbox.isPaused = true;
    Lightbox.inprogress = false;
    // Replaces calls to showSelectBoxes() and showFlash() in original
    // lightbox2.
    Lightbox.toggleSelectsFlash('visible');
    if (Lightbox.isSlideshow) {
      for (var i = 0; i < Lightbox.slideIdCount; i++) {
        window.clearTimeout(Lightbox.slideIdArray[i]);
      }
      $('#lightshowPause, #lightshowPlay').hide();
    }
    else if (Lightbox.isLightframe) {
      $('#frameContainer').empty().hide();
    }
    else if (Lightbox.isVideo || Lightbox.isModal) {
      if (!Lightbox.auto_modal) {
        $('#modalContainer').hide().html("");
      }
      Lightbox.auto_modal = false;
    }
  },


  // getPageScroll()
  // Returns array with x,y page scroll values.
  // Core code from - quirksmode.com.
  getPageScroll : function() {

    var xScroll, yScroll;

    if (self.pageYOffset) {
      yScroll = self.pageYOffset;
      xScroll = self.pageXOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {  // Explorer 6 Strict.
      yScroll = document.documentElement.scrollTop;
      xScroll = document.documentElement.scrollLeft;
    }
    else if (document.body) {// All other Explorers.
      yScroll = document.body.scrollTop;
      xScroll = document.body.scrollLeft;
    }

    arrayPageScroll = [xScroll,yScroll];
    return arrayPageScroll;
  },

  // getPageSize()
  // Returns array with page width, height and window width, height.
  // Core code from - quirksmode.com.
  // Edit for Firefox by pHaez.

  getPageSize : function() {

    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
      xScroll = window.innerWidth + window.scrollMaxX;
      yScroll = window.innerHeight + window.scrollMaxY;
    }
    else if (document.body.scrollHeight > document.body.offsetHeight) { // All but Explorer Mac.
      xScroll = document.body.scrollWidth;
      yScroll = document.body.scrollHeight;
    }
    else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari.
      xScroll = document.body.offsetWidth;
      yScroll = document.body.offsetHeight;
    }

    var windowWidth, windowHeight;

    if (self.innerHeight) { // All except Explorer.
      if (document.documentElement.clientWidth) {
        windowWidth = document.documentElement.clientWidth;
      }
      else {
        windowWidth = self.innerWidth;
      }
      windowHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode.
      windowWidth = document.documentElement.clientWidth;
      windowHeight = document.documentElement.clientHeight;
    }
    else if (document.body) { // Other Explorers.
      windowWidth = document.body.clientWidth;
      windowHeight = document.body.clientHeight;
    }
    // For small pages with total height less than height of the viewport.
    if (yScroll < windowHeight) {
      pageHeight = windowHeight;
    }
    else {
      pageHeight = yScroll;
    }
    // For small pages with total width less than width of the viewport.
    if (xScroll < windowWidth) {
      pageWidth = xScroll;
    }
    else {
      pageWidth = windowWidth;
    }
    arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
    return arrayPageSize;
  },


  // pause(numberMillis)
  pause : function(ms) {
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while (curDate - date < ms);
  },


  // toggleSelectsFlash()
  // Hide / unhide select lists and flash objects as they appear above the
  // lightbox in some browsers.
  toggleSelectsFlash: function (state) {
    if (state == 'visible') {
      $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").show();
    }
    else if (state == 'hide') {
      $("select:visible, embed:visible, object:visible").addClass("lightbox_hidden");
      $("select.lightbox_hidden, embed.lightbox_hidden, object.lightbox_hidden").hide();
    }
  },


  // parseRel()
  parseRel: function (link) {
    var parts = [];
    parts["rel"] = parts["title"] = parts["group"] = parts["style"] = null;
    if (!$(link).attr('rel')) return parts;
    parts["rel"] = $(link).attr('rel').match(/\w+/)[0];

    if ($(link).attr('rel').match(/\[(.*)\]/)) {
      var info = $(link).attr('rel').match(/\[(.*?)\]/)[1].split('|');
      parts["group"] = info[0];
      parts["style"] = info[1];
    }
    if ($(link).attr('rel').match(/\[.*\]\[(.*)\]/)) {
      parts["title"] = $(link).attr('rel').match(/\[.*\]\[(.*)\]/)[1];
    }
    return parts;
  },

  // setStyles()
  setStyles: function(item, styles) {
    item.width = Lightbox.iframe_width;
    item.height = Lightbox.iframe_height;
    item.scrolling = "auto";

    if (!styles) return item;
    var stylesArray = styles.split(';');
    for (var i = 0; i< stylesArray.length; i++) {
      if (stylesArray[i].indexOf('width:') >= 0) {
        var w = stylesArray[i].replace('width:', '');
        item.width = jQuery.trim(w);
      }
      else if (stylesArray[i].indexOf('height:') >= 0) {
        var h = stylesArray[i].replace('height:', '');
        item.height = jQuery.trim(h);
      }
      else if (stylesArray[i].indexOf('scrolling:') >= 0) {
        var scrolling = stylesArray[i].replace('scrolling:', '');
        item.scrolling = jQuery.trim(scrolling);
      }
      else if (stylesArray[i].indexOf('overflow:') >= 0) {
        var overflow = stylesArray[i].replace('overflow:', '');
        item.overflow = jQuery.trim(overflow);
      }
    }
    return item;
  },


  // togglePlayPause()
  // Hide the pause / play button as appropriate.  If pausing the slideshow also
  // clear the timers, otherwise move onto the next image.
  togglePlayPause: function(hideId, showId) {
    if (Lightbox.isSlideshow && hideId == "lightshowPause") {
      for (var i = 0; i < Lightbox.slideIdCount; i++) {
        window.clearTimeout(Lightbox.slideIdArray[i]);
      }
    }
    $('#' + hideId).hide();
    $('#' + showId).show();

    if (hideId == "lightshowPlay") {
      Lightbox.isPaused = false;
      if (!Lightbox.loopSlides && Lightbox.activeImage == (Lightbox.total - 1)) {
        Lightbox.end();
      }
      else if (Lightbox.total > 1) {
        Lightbox.changeData(Lightbox.activeImage + 1);
      }
    }
    else {
      Lightbox.isPaused = true;
    }
  },

  triggerLightbox: function (rel_type, rel_group) {
    if (rel_type.length) {
      if (rel_group && rel_group.length) {
        $("a[rel^='" + rel_type +"\[" + rel_group + "\]'], area[rel^='" + rel_type +"\[" + rel_group + "\]']").eq(0).trigger("click");
      }
      else {
        $("a[rel^='" + rel_type +"'], area[rel^='" + rel_type +"']").eq(0).trigger("click");
      }
    }
  },

  detectMacFF2: function() {
    var ua = navigator.userAgent.toLowerCase();
    if (/firefox[\/\s](\d+\.\d+)/.test(ua)) {
      var ffversion = new Number(RegExp.$1);
      if (ffversion < 3 && ua.indexOf('mac') != -1) {
        return true;
      }
    }
    return false;
  },

  checkKey: function(keys, key, code) {
    return (jQuery.inArray(key, keys) != -1 || jQuery.inArray(String(code), keys) != -1);
  }


};

// Initialize the lightbox.
Drupal.behaviors.initLightbox = function (context) {
  $('body:not(.lightbox-processed)', context).addClass('lightbox-processed').each(function() {
    Lightbox.initialize();
    return false; // Break the each loop.
  });

  // Attach lightbox to any links with lightbox rels.
  Lightbox.initList(context);
  $('#lightboxAutoModal', context).triggerHandler('click');
};

;/* if we are being viewed on an iphone, find a tags that have iphonehref=
   on them and make that the main href */
$.gcuiIPhoneLinks = function() {
    if (/iPhone/.test(navigator.userAgent)) {
        $('a[iphonehref]').each(function(){
                var myNewHref = $(this).attr('iphonehref');
                $(this).attr('href', myNewHref);
        });
    }
}

;//Sets up sharing when using  the mouse over/out menu popup. See setup in Scientology for example.
function doShare(){
	return addthis_sendto();
};
//Function called when mousing over the button (shows little menu popup).
function doShareOver(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, '', url, title);
};
//Function called when clicking the button (loads lightbox popup).
function doShareClick(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, 'more', url, title)
};
//Function called when mousing off the button (closes the little menu popup).
function doShareOut(){
	addthis_close();
};
//Function called when wanting to map a button to ONE service. ie: twitter
function doShareService(url, title, service){


	url = encodeURIComponent(url);
	if(title){
		title = encodeURIComponent(title);
	}else{
		title = url;
	}
	var addThisUrl = "http://www.addthis.com/bookmark.php?v=250&winname=addthis&pub=officialCSI&source=men-250&lng=&s="+service+"&url="+url+"&title="+title;
	
	var agent = navigator.userAgent.toLowerCase();
	var is_safari = ((agent.indexOf('safari')!=-1));
	//if(service == "email"){
	//	doShareClick(url, title);
	//}else{
		if (is_safari) {
			window.location = addThisUrl;
		}else{
			window.open(addThisUrl, "_blank");
		}
	//}	
}
//Function called when wanting email service ONLY in PopUp
function doEmail(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, 'email', url, title)
};


;(function($) {

jQuery.fn.pngFix = function(settings) {

	// Settings
	settings = jQuery.extend({
		blankgif: 'blank.gif'
	}, settings);

	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

	if (jQuery.browser.msie && (ie55 || ie6)) {

		//fix images with png-source
		jQuery(this).find("img[src$=.png]").each(function() {

			jQuery(this).attr('width',jQuery(this).width());
			jQuery(this).attr('height',jQuery(this).height());

			var prevStyle = '';
			var strNewHTML = '';
			var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';
			var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';
			var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';
			var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';
			var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';
			var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';
			if (this.style.border) {
				prevStyle += 'border:'+this.style.border+';';
				this.style.border = '';
			}
			if (this.style.padding) {
				prevStyle += 'padding:'+this.style.padding+';';
				this.style.padding = '';
			}
			if (this.style.margin) {
				prevStyle += 'margin:'+this.style.margin+';';
				this.style.margin = '';
			}
			var imgStyle = (this.style.cssText);

			strNewHTML += '<span '+imgId+imgClass+imgTitle+imgAlt;
			strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;
			strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';
			strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';
			strNewHTML += imgStyle+'"></span>';
			if (prevStyle != ''){
				strNewHTML = '<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'+'">' + strNewHTML + '</span>';
			}

			jQuery(this).hide();
			jQuery(this).after(strNewHTML);

		});

		// fix css background pngs
		jQuery(this).find("*").each(function(){
			var bgIMG = jQuery(this).css('background-image');
			if(bgIMG.indexOf(".png")!=-1){
				var iebg = bgIMG.split('url("')[1].split('")')[0];
				jQuery(this).css('background-image', 'none');
				jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";
			}
		});
		
		//fix input with png-source
		jQuery(this).find("input[src$=.png]").each(function() {
			var bgIMG = jQuery(this).attr('src');
			jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';
   		jQuery(this).attr('src', settings.blankgif)
		});
	
	}
	
	return jQuery;

};

})(jQuery);
    $(document).ready(function(){         $(document).pngFix();     }); ;/*
    http://www.JSON.org/json2.js
    2011-02-23

    Public Domain.

    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

    See http://www.JSON.org/js.html


    This code should be minified before deployment.
    See http://javascript.crockford.com/jsmin.html

    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
    NOT CONTROL.


    This file creates a global JSON object containing two methods: stringify
    and parse.

        JSON.stringify(value, replacer, space)
            value       any JavaScript value, usually an object or array.

            replacer    an optional parameter that determines how object
                        values are stringified for objects. It can be a
                        function or an array of strings.

            space       an optional parameter that specifies the indentation
                        of nested structures. If it is omitted, the text will
                        be packed without extra whitespace. If it is a number,
                        it will specify the number of spaces to indent at each
                        level. If it is a string (such as '\t' or '&nbsp;'),
                        it contains the characters used to indent at each level.

            This method produces a JSON text from a JavaScript value.

            When an object value is found, if the object contains a toJSON
            method, its toJSON method will be called and the result will be
            stringified. A toJSON method does not serialize: it returns the
            value represented by the name/value pair that should be serialized,
            or undefined if nothing should be serialized. The toJSON method
            will be passed the key associated with the value, and this will be
            bound to the value

            For example, this would serialize Dates as ISO strings.

                Date.prototype.toJSON = function (key) {
                    function f(n) {
                        // Format integers to have at least two digits.
                        return n < 10 ? '0' + n : n;
                    }

                    return this.getUTCFullYear()   + '-' +
                         f(this.getUTCMonth() + 1) + '-' +
                         f(this.getUTCDate())      + 'T' +
                         f(this.getUTCHours())     + ':' +
                         f(this.getUTCMinutes())   + ':' +
                         f(this.getUTCSeconds())   + 'Z';
                };

            You can provide an optional replacer method. It will be passed the
            key and value of each member, with this bound to the containing
            object. The value that is returned from your method will be
            serialized. If your method returns undefined, then the member will
            be excluded from the serialization.

            If the replacer parameter is an array of strings, then it will be
            used to select the members to be serialized. It filters the results
            such that only members with keys listed in the replacer array are
            stringified.

            Values that do not have JSON representations, such as undefined or
            functions, will not be serialized. Such values in objects will be
            dropped; in arrays they will be replaced with null. You can use
            a replacer function to replace those with JSON values.
            JSON.stringify(undefined) returns undefined.

            The optional space parameter produces a stringification of the
            value that is filled with line breaks and indentation to make it
            easier to read.

            If the space parameter is a non-empty string, then that string will
            be used for indentation. If the space parameter is a number, then
            the indentation will be that many spaces.

            Example:

            text = JSON.stringify(['e', {pluribus: 'unum'}]);
            // text is '["e",{"pluribus":"unum"}]'


            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

            text = JSON.stringify([new Date()], function (key, value) {
                return this[key] instanceof Date ?
                    'Date(' + this[key] + ')' : value;
            });
            // text is '["Date(---current time---)"]'


        JSON.parse(text, reviver)
            This method parses a JSON text to produce an object or array.
            It can throw a SyntaxError exception.

            The optional reviver parameter is a function that can filter and
            transform the results. It receives each of the keys and values,
            and its return value is used instead of the original value.
            If it returns what it received, then the structure is not modified.
            If it returns undefined then the member is deleted.

            Example:

            // Parse the text. Values that look like ISO date strings will
            // be converted to Date objects.

            myData = JSON.parse(text, function (key, value) {
                var a;
                if (typeof value === 'string') {
                    a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                    if (a) {
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
                    }
                }
                return value;
            });

            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                var d;
                if (typeof value === 'string' &&
                        value.slice(0, 5) === 'Date(' &&
                        value.slice(-1) === ')') {
                    d = new Date(value.slice(5, -1));
                    if (d) {
                        return d;
                    }
                }
                return value;
            });


    This is a reference implementation. You are free to copy, modify, or
    redistribute.
*/

/*jslint evil: true, strict: false, regexp: false */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
    lastIndex, length, parse, prototype, push, replace, slice, stringify,
    test, toJSON, toString, valueOf
*/


// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

var JSON;
if (!JSON) {
    JSON = {};
}

(function () {
    "use strict";

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf()) ?
                this.getUTCFullYear()     + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate())      + 'T' +
                f(this.getUTCHours())     + ':' +
                f(this.getUTCMinutes())   + ':' +
                f(this.getUTCSeconds())   + 'Z' : null;
        };

        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {
                return this.valueOf();
            };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string' ? c :
                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0 ? '[]' : gap ?
                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
                    '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    if (typeof rep[i] === 'string') {
                        k = rep[i];
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.prototype.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0 ? '{}' : gap ?
                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
                '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.prototype.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());
;(function($) {
    $.fn.gcuiSwfObjEmbed = function(aSwf,aSettings) {
        if (aSwf) {
            var myConfig = {};
            $.each($.fn.gcuiSwfObjEmbed.defaults,function(k,v) {
                // NOTE: jQuery.extend() doesn't copy properties,
                // may work in jQuery 1.4, but we're on 1.3.2
                // copy default
                // http://jquery14.com/day-01/jquery-14
                var mySub = {};
                for (var p in v) {
                    mySub[p] = v[p];
                }
                // on the copy overwrite the defaults with the specific settings
                for (var p in aSettings[k]) {
                    mySub[p] = aSettings[k][p];
                }
                // assign to myConfig
                myConfig[k] = mySub;
            });
            this.each(function() {
                myConfig.attributes.id = $(this).attr('id');
                if (myConfig.attributes.id == '') {
                  gcui_log('ID of div missing, cannot embed video');
                }
                swfobject.embedSWF(
                    aSwf, myConfig.attributes.id, myConfig.config.width,
                    myConfig.config.height, myConfig.config.requiredVersion,
                    myConfig.config.alternativeSwf,
                    myConfig.flashvars, myConfig.params, myConfig.attributes
                    );
            });
        } else {
          console.log('aSwf not passed in');
        }
        return this;
    };
    $.fn.gcuiSwfObjEmbed.defaults = {
        config : {
            height : '360',
            width: '640',
            requiredVersion :  '8.0.0',
            alternativeSwf : 'expressInstall.swf'
        },
        params :{
            quality: "high",
            scale: "noscale",
            wmode: "transparent",
            allowscriptaccess: "always",
            allowFullScreen: "true",
            bgcolor: "#000000"
        },
        flashvars : {
            fullLocale:"en_US",
            locale:"en",
            cdnPath:"",
            localPath:"",
            trackerCode:"",
            configuration:"production",
            sharedAssetPath:"/assets/",
            siteAssetPath: "/assets/",
            sharedDataPath: "/en/sdata/",
            siteDataPath: "/data/",
            siteStylesPath: "/data/styles/",
            siteRootPath: "/",
            infoRequestUrl: "http://contact2.firechrome.org/inquiry.action",
            siteXML:"/site.xml",
            localePostfix: "",
            region: "US",
            autoplay: "true"
        },
        attributes : {}
    };

    $.createElement = function(aEl,innerHtml,aClose,attrs) {
        var r = ['<', aEl,' '];
        for(var k in attrs) {
            r.push(k);
            r.push('="');
            r.push($.isArray(attrs[k]) ? attrs[k].join(' ') : attrs[k]);
            r.push('" ');

        }
        r.push('>');
        r.push(innerHtml);
        if(aClose) {
            r.push('</');
            r.push(aEl);
            r.push('>');
        }
        return r.join('');
    };

    $.fn.gcuiSlideShow = function(aId,aImages,aSettings) {
        var config = {};
        if (settings) $.extend(config, settings);
        this.each(function() {});
        return this;
    };

    $.gcuiDataClone = function(aTarget,aSources) {
        // NOTE: jQuery.extend() doesn't copy properties we're on 1.3.2
        // http://jquery14.com/day-01/jquery-14
        var mySources = $.makeArray(aSources)
        $.each(mySources,function(i,v) {
            for (var p in v) {
                aTarget[p] = v[p];
            }
        });
        return aTarget;
    };
    $.intRange = function(aFrom,aTo,aMin,aMax,aDir) {
        var myF = parseInt(aFrom);
        var myT = parseInt(aTo);
        var myMin = parseInt(aMin);
        var myMax = parseInt(aMax);
        if(myF==myT) return [];
        var r = [myF];
        var myInc = aDir==null?myF < myT:aDir;
        var i = myF;
        while(i!=myT) {
            r.push(i = $.increment(i,myMin,myMax,myInc));
            //if(i) {break;}//Avoid infinite loops
        }
        return r;
    };
    $.increment = function(aFrom,aMin,aMax,aDir) {
        var i = aDir ? ++aFrom : --aFrom;
        if(i > aMax) return aMin;
        if(i < aMin) return aMax;
        return i;
    };
    $.getAt = function(aObj,aParams) {
    	    var r = null;
    	    $.each(aParams,function(){
		    if(aObj[this]) r=aObj[this];
    	    });
    	    return r; 
    };
    
	$.fn.customFadeIn = function(speed, callback) {
		return $(this).fadeIn($.support.opacity ? speed : 1,callback);
	};
	$.fn.customFadeOut = function(speed, callback) {
		return $(this).fadeOut($.support.opacity ? speed : 1,callback);
	};
	
	$.getHost = function() {
		var h = new String(document.location);
		return h.replace(/http:\/\/([^\/]*)\/.*/,'$1');
	};

	/**
	 * Find out if certain support exists
	 */
	$.gcuiSupports = function(features) {
	    var ret = true;
	    if (features.canvas) {
	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
	    }
		if (features.basic_html5) {
	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
 			if (/Version\/3\.[0-9. ]+ Safari\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/3\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Firefox\/[1-2]\.[0-9]/.test(navigator.userAgent)) {
				return false;
	        }
			if (/Firefox\/3\.0/.test(navigator.userAgent)) {
				return false;
	        }
			if (/iPad/.test(navigator.userAgent)) {
				return false;
			}
			if (/iPhone/.test(navigator.userAgent)) {
				return false;
			}
			/*if (/Version\/4\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        } */
	    }
	    return ret;
	};
	$.gcuiSupportsNativeCanvasText = function(supports) {
		var ret = true;
		if (supports.supportsCanvasText) {
 	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
			if (/Version\/3\.[0-9. ]+ Safari\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/3\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/4\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        } 
	    }
		return ret;
	}
	

})(jQuery);

if(!console) {
    var console = {log : function(){}};
}

if (typeof $.fn.delay != 'function') {
    $.fn.delay = function(time, callback){
        jQuery.fx.step.delay = function(){};
        return this.animate({delay:1}, time, callback);
    }
}




;/**
 * jquery.gcui-html5.js - Gold Common UI HTML5/ish functionality.
 */

(function($) {
    /**
     * Gets or sets the "mobile" flag, indicating if we are on a mobile device,
     * and thus need to change the way our hover/click events work to make sense
     * on touch devices.
     */
    $.gcuiMobile = function(aMobileMode) {
        
        /*
        
        // if they didn't provide a value
        if (typeof aMobileMode == 'undefined' || typeof aMobileMode == null) {
            return $.gcuiIsMobile;
        }
        
        if (aMobileMode == 'auto') {
            // do detection
            aMobileMode = true;
            aMobileMode = false;
        }
         
        */
        
        // TODO: add user agent detection
        
        return true;
        
    }
    
    /**
     * Create a "Canvas Button".  Call this on a <canvas> element to give it
     * the appropriate states, drawing function, etc.
     */
    $.fn.gcuiCanvasButton = function(aDrawFunc) {
        this.data('__drawFunc', aDrawFunc);
        return this.each(function() {
			if ($.gcuiSupports({basic_html5:true})) {
				$(this).addClass('gcuiAnimated');
				
				// create animator div
				var myDiv = $("<div class='dfwHeaderButtonAnimator'></div>").appendTo("body");
				myDiv.css("opacity", 0);
				myDiv.css("display", "none");
				$(this).data('__animatorDiv', myDiv);
				if (!document.gcuiAnimationInterval) {
					document.gcuiAnimationInterval = setInterval(function() {
						$(".gcuiAnimated").gcuiDrawCanvas();
					},25);
				}
			} else {
				$(this).addClass('gcuiAlt');
			}
        });
    };

    /**
     * Begin animating "in" (move toward the "over" state).
     * @param aDuration - how many milliseconds should it take
     * @param aEasing - the easing function to use - see jQuery.animate()
     * and if undefined, set to default of 200 milliseconds and ease of "swing"
     */
    $.fn.gcuiAnimateIn = function(aDuration, aEasing) {
		return this.each(function() {
			if ($.gcuiSupports({basic_html5:true})) {
				if (aDuration == "undefined" || aDuration == null) { aDuration = 200 };
				if (aEasing == "undefined" || aEasing == null) { aEasing = "swing" };
				
				
				var myDiv = $(this).data('__animatorDiv');
				myDiv.stop().animate({"opacity":1},aDuration,aEasing,null);
			}
			if ($.gcuiSupportsNativeCanvasText({supportsCanvasText:true})) {
			
			}
        });
    };

    /**
     * Begin animating "out" (move toward the default state - away from "over").
     * @param aDuration - how many milliseconds should it take
     * @param aEasing - the easing function to use - see jQuery.animate()
     * and if undefined, set to default of 200 milliseconds and ease of "swing"
     */
    $.fn.gcuiAnimateOut = function(aDuration, aEasing) {
        return this.each(function() {
			if ($.gcuiSupports({basic_html5:true})) {
				if (aDuration == "undefined" || aDuration == null) { aDuration = 200 };
				if (aEasing == "undefined" || aEasing == null) { aEasing = "swing" };
				
				var myDiv = $(this).data('__animatorDiv');
				myDiv.stop().animate({"opacity":0},aDuration,aEasing,null);
			}
        });
    };

  /**
     * Begin animating "in" (move toward the "over" state).
     * @param aDuration - how many milliseconds should it take
     * @param aEasing - the easing function to use - see jQuery.animate()
     * and if undefined, set to default of 200 milliseconds and ease of "swing"
     */
	
    $.fn.gcuiFlyoutAnimateIn = function(aDuration, aEasing, aImageDim) {
		return this.each(function() {
			if (swfobject.hasFlashPlayerVersion('9.0.115.0') == false) {
				$("#gcui-header-player-wrapper #main_player").gcuiStopVideo(aImageDim);
			}
			if (aDuration == "undefined" || aDuration == null) { aDuration = 200 };
			if (aEasing == "undefined" || aEasing == null) { aEasing = "swing" };
			var myAltFlyoutArray = $(this).attr("id").split('-');
			var itemClicked = myAltFlyoutArray[0];
			
			var myButton = $(this).attr("id");
			//alert("myButton is "+$(this).attr("id"));
			var myButtonsChildren = $(this).children();
			//alert("myButtonsChildren is "+myButtonsChildren);

			//$("#gcui-header-player-wrapper #main_player").gcuiStopVideo(aImageDim);
			var myDeactivatedFlyouts = $($(this).data('__groupSelector') + ':not(#'+$(this).attr("id")+')');
			$(myDeactivatedFlyouts).each(function() {
				var myAltFlyoutArray2 = $(this).attr("id").split('-');
				var itemClicked2 = myAltFlyoutArray2[0];

				$('.'+itemClicked2).gcuiAnimateOut();
				$('.'+itemClicked2+ '-flyout').stop().animate({"opacity":0},aDuration,aEasing,null);
				$('.'+itemClicked2+ '-flyout').css("display", "none");
			})
			
			var myFlyout = $('.'+itemClicked+'-flyout');
			myFlyout.stop().animate({"opacity":1},aDuration,aEasing,null);
			myFlyout.css("display", "block");
			var timer;
			
			$("div#gcui-header-player-wrapper > div."+itemClicked+"-flyout, #"+myButton).mouseenter(function(){
				clearTimeout(timer);
			}).mouseleave(function(){
				timer = setTimeout(function() { myFlyout.gcuiClearThisFlyout(); $('#'+myButton).gcuiAnimateOut(); },100);
			});

		});
    };

    /**
     * Begin animating "out" (move toward the default state - away from "over").
     * @param aDuration - how many milliseconds should it take
     * @param aEasing - the easing function to use - see jQuery.animate()
     * and if undefined, set to default of 200 milliseconds and ease of "swing"
     */
    $.fn.gcuiFlyoutAnimateOut = function(aDuration, aEasing) {
        return this.each(function() {
				if (aDuration == "undefined" || aDuration == null) { aDuration = 200 };
				if (aEasing == "undefined" || aEasing == null) { aEasing = "swing" };
				
				var myAltFlyoutArray = $(this).attr("id").split('-');
				var itemClicked = myAltFlyoutArray[0];

				var myFlyout = $('.'+itemClicked+'-flyout');
				myFlyout.stop().animate({"opacity":0},aDuration,aEasing, function () {$(this).css({display: "none"})});
				//alert(myFlyout.attr("id"));
        });
    };

    /**
     * Draw the canvas - does some setup and then calls the drawing function
     * provided to gcuiCanvasButton()
     */
    $.fn.gcuiDrawCanvas = function(aForce) {
        return this.each(function() {
                var myAnimator = $(this).data('__animatorDiv').css('opacity');
				
				var lastanimator = $(this).data('__lastanimator');
				if (!aForce && lastanimator == myAnimator && lastanimator) {
					return;
				}
				
				$(this).data('__lastanimator', myAnimator);
				
				var myDrawFunc = $(this).data('__drawFunc');
				var ctx = this.getContext('2d');
                ctx.save();
                myDrawFunc.call(this, ctx, myAnimator);
                ctx.restore();
        });
    };
    
    /**
     * Wire up "activation" events that correspond to mouse over, mouse out,
     * click or have different behavior on mobile devices.
     */
    $.fn.gcuiActivate = function(aGroupSelector, aSelectFunc, aInFunc, aOutFunc, aExpandFunc, aCollapseFunc) {
        this.data('__groupSelector', aGroupSelector);
        this.data('__selectFunc', aSelectFunc);
        this.data('__inFunc', aInFunc);
        this.data('__outFunc', aOutFunc);
        this.data('__expandFunc', aExpandFunc);
        this.data('__collapseFunc', aCollapseFunc);
		
        this.hover(
            function() {
				//Animate button in
				$(this).data('__inFunc').call(this);
				if (rollOverActivated) {
					var myAltFlyoutArray = $(this).attr("id").split('-');
					var itemClicked = myAltFlyoutArray[0];
					
					// if the button has a flyout under it...
					if (this.id && $('.'+itemClicked+'-flyout').size()) {
						//If its visible, then do nothing
						if ($('.'+itemClicked+'-flyout').css("opacity") != 0 && $('.'+itemClicked+'-flyout').css("display") != "none") {
							//and its not is visible, then show it!
						} else {
							$(this).data('__expandFunc').call(this);
							//if ($.gcuiMobile()) {
								//$(this).data('__inFunc').call(this);
							//}
						}
					// And if it has no flyout, then clear all flyouts on roll over
					} else {
						if ($(this).hasClass('header-menu-button')) {
							$.gcuiClearAllFlyouts();
						}
					}
				}
				
				//Call gcuiAnimateOut on all header menu buttons to animate them out - this is so that the user can fly over the buttons and have them stay activated
				//while still browsing through that specific flyout
				if ($(this).hasClass('header-menu-button')) {
					var myDeactivatedMenuButtons = $($(this).data('__groupSelector') + ':not(#'+$(this).attr("id")+')');
					$(myDeactivatedMenuButtons).each(function() {
						var myDeactivatedBtn = $(this).attr("id").split('-');
						var itemDeactivated = myDeactivatedBtn[0];
						//alert(itemDeactivated);
						//alert("#"+itemDeactivated);
						$("#"+itemDeactivated).gcuiAnimateOut();
					})
				}
            },
            function() {
				var myAltFlyoutArray = $(this).attr("id").split('-');
				var itemClicked = myAltFlyoutArray[0];
                //If it is a flyout, act normally and call animate outFunc
				if ($(this).hasClass('flyout-button')) {
					$(this).data('__outFunc').call(this);
				}
				
				// if the button has a flyout under it...
				if (this.id && $('.'+itemClicked+'-flyout').size()) {
					//Dont animate it out
				} else {
					//Animate it out
					$(this).data('__outFunc').call(this);
				}
            }
        );
        this.click(function() {
				var myAltFlyoutArray = $(this).attr("id").split('-');
				var itemClicked = myAltFlyoutArray[0];
				
                // if the button has a flyout under it...
                if (this.id && $('.'+itemClicked+'-flyout').size()) {
					//And it is visible then hide it!
					if ($('.'+itemClicked+'-flyout').css("opacity") > 0) {
						$(this).data('__collapseFunc').call(this);
						if ($.gcuiMobile()) {
							$(this).data('__outFunc').call(this);
						}
					//If not, then show it!
					} else {
						$(this).data('__expandFunc').call(this);
						if ($.gcuiMobile()) {
							$(this).data('__inFunc').call(this);
						}
					}
                // And if it has no flyout, then select it and clear all flyouts
				} else {
					if ($.gcuiMobile()) {
						$(this).data('__inFunc').call(this);
					}
					$(this).data('__selectFunc').call(this);
                }
				//Call gcuiAnimateOut on all header menu buttons to animate them out - this is so that the user can fly over the buttons and have them stay activated
				//while still browsing through that specific flyout
				if ($(this).hasClass('header-menu-button')) {
					var myDeactivatedMenuButtons = $($(this).data('__groupSelector') + ':not(#'+$(this).attr("id")+')');
					$(myDeactivatedMenuButtons).each(function() {
						var myDeactivatedBtn = $(this).attr("id").split('-');
						var itemDeactivated = myDeactivatedBtn[0];

						//alert("#"+itemDeactivated);
						$("#"+itemDeactivated).gcuiAnimateOut();
					})
				}
        });
        return this;
    };

	$.gcuiClearAllFlyouts = function () {
		//Hides all flyouts
		$('.flyout').stop().animate({"opacity":0},200,"swing", function () {$(this).css({display: "none"})});
		$("#defaultimagediv").animate({"opacity":1},400,"swing",null);
	}

	$.gcuiAnimateOutAll = function() {
		//Animates out every button
		$('.header-menu-button').gcuiAnimateOut();
	}
	
	$.fn.gcuiVideoPlayer = function(aSiteId, aPlayVidId, aPlaylistId, aVideoWidth, aVideoHeight, aAutoPlay, aThumb, aFullLocale, aLocale) {
		//This function is called at the bottom of each local site TPL file, and it passes the variables specific to that page
		//in order to play the video, and they are all listed below
		
		this.data('__aSiteId', aSiteId);
		this.data('__aPlayVidId', aPlayVidId);
		this.data('__aPlaylistId', aPlaylistId);
		this.data('__aVideoWidth', aVideoWidth);
		this.data('__aVideoHeight', aVideoHeight);
		this.data('__aThumb', aThumb);
		this.data('__aFullLocale', aFullLocale);
		this.data('__aLocale', aLocale);

		
		if (aAutoPlay == true) {
			$("#gcui-header-player-wrapper #main_player").css("display", "block");
			$("#gcui-header-player-wrapper #main_player").gcuiPlayVideo(aPlayVidId, aPlaylistId, aFullLocale, aLocale);
		} else {
			if (foBarActive) {
				var foBarMessage = "press_play_to_watch";
				// var foBarMessage = "gcui_common_strings:common_playing_video_ellipsis";
				$("#gcui-header-player-wrapper #main_player").css("display", "none");
				if (!aThumb) {
					$("#defaultimagediv").html(
					'<img id="defaultimage" width="576" height="324" src="/sassets/videos/640_thumbs/'+aPlayVidId+'_'+aLocale+'.jpg"><div id="autoplayFoBar"><?php print t1k("'+foBarMessage+'"); ?></div>');
					//console.log('/assets/videos/640_thumbs/'+aPlayVidId+'.jpg');
				} else {
					$("#defaultimagediv").html(
					'<img id="defaultimage" width="576" height="324" src="'+aThumb+'"><div id="autoplayFoBar"><?php print t1k("'+foBarMessage+'"); ?></div>');
				}
				
				$("#autoplayFoBar").click(function() {
					/* $("#gcui-header-player-wrapper #main_player").gcuiVideoPlayer(aSiteId, aPlayVidId, aPlaylistId, aVideoWidth, aVideoHeight, true); */
					$("#gcui-header-player-wrapper #main_player").css("display", "block");
					$("#gcui-header-player-wrapper #main_player").gcuiPlayVideo(aPlayVidId, aPlaylistId, aFullLocale, aLocale);
				});
			} else {
				if (!aThumb) {
					$("#defaultimagediv").html(
					'<img id="defaultimage" width="576" height="324" src="/sassets/videos/640_thumbs/'+aPlayVidId+'_'+aLocale+'.jpg">');
				} else {
					$("#defaultimagediv").html(
					'<img id="defaultimage" width="576" height="324" src="'+aThumb+'">');
				}
			}
		}
  };
	
  $.fn.gcuiPlayVideo = function(aVideoId, aPlaylistId, aFullLocale, aLocale) {
    //Switch out to the new image based on video Id selected no matter which video player is selected
    
    $.gcuiSwapVideoImage(aVideoId);
    
    var videoHeight = $(this).data('__aVideoHeight');
    var videoWidth = $(this).data('__aVideoWidth');
    var siteId = $(this).data('__aSiteId');

    // provide sensible defaults if not specified
    if (!videoHeight) { videoHeight = 324; }
    if (!videoWidth) { videoWidth = 576; }
    if (!siteId) { siteId = $.urlParser.host; }

    //alert(siteId);
        
    return this.each(function() {
      // detect if flash is supported/should be used
      // output player - flash or html5 or quicktime fallback
      $(this).css("opacity", 0);
      $(this).animate({"opacity":1},300,"swing",null);
      //alert("HI2");
      if (swfobject.hasFlashPlayerVersion('9.0.115.0')) {
        //console.log(aVideoId);
        //console.log(aPlaylistId);
        //console.log($.urlParser.host);
        //console.log(videoHeight);
        //console.log(videoWidth);
        
        var aSharedDataPath = "/"+aLocale+"/sdata/";
        
        if (aLocale == undefined) {
          aFullLocale = 'en_EN';
          aLocale = 'en';
          aSharedDataPath = '/en/sdata/';
        }
        //console.log(aFullLocale);
        //console.log(aLocale);
        //console.log(aSharedDataPath);
        
        //Has Flash Player, so show flash player
        //alert("HERE1:"+$(this).children(":first").attr('id'));
        //alert(videoWidth);
        
        $(this).children(":first").gcuiSwfObjEmbed("/assets/shared-assets/video-player_sa_"+videoWidth+".swf",
        {
          flashvars : {
            configuration:"development",
            siteName: $.urlParser.host,
            videoID: aVideoId,
            playlistID: aPlaylistId,
            fullLocale : aFullLocale,
            locale: aLocale,
            sharedDataPath: aSharedDataPath,
            enableVidTracker: true
          },
          config : {
            height : videoHeight,
            width : videoWidth
          },
          params : {
						scale: "default"
					}
        })
      } else {
        //Does not support Flash, show html5 player

        var video_id_path;
        if (aLocale == 'en') {
          video_id_path = '/getvideo2/'+aVideoId+'?quality=std';
        } else {
          video_id_path = '/'+aLocale+'/getvideo2/'+aVideoId+'?quality=std';
        }

        $(this).children(":first").html(
          '<video id="video_player" src="' +
            /*$.urlParser.parse('/en/getvideo2/'+aVideoId+'?quality=std').assemble()*/
            $.urlParser.parse(video_id_path).assemble() +
            '" preload autoplay controls height="324" width="576" poster="' +
            $.urlParser.parse('/sassets/videos/640_thumbs/'+aVideoId+'_'+aLocale+'.jpg').assemble() + '">' +
          '</video>'
        );
      };
    });
    return this;
  };
	
	$.gcuiSwapVideoImage = function (aVideoId) {
		var img = new Image();
		img.src = "/sassets/videos/640_thumbs/"+aVideoId+"_"+_gcui_get_lang()+".jpg";
		$(img).bind('load readystatechange', function(e) {
			if (this.complete || (this.readyState == 'complete' && e.type == 'readystatechange')) { 
				$("#defaultimagediv").css("opacity", 0);
				//$("#defaultimagediv").animate({"opacity":0},400,"swing", null);
				$("#defaultimagediv").html(
				'<img id="defaultimage" width="576" height="324" src="/sassets/videos/640_thumbs/'+aVideoId+'_'+_gcui_get_lang()+'.jpg">');
			}
		});
	};
	
	$.fn.gcuiStopVideo = function(aImageDim) {
		if (!aImageDim) {aImageDim = 1;};
		$("#defaultimagediv").animate({"opacity":aImageDim},400,"swing",null);
		if (swfobject.hasFlashPlayerVersion('9.0.115.0')) {
			$('#main_player').fadeOut('fast');
			//$(this).children(":first").fadeOut('fast');
			$('#main_player').html('<div id="player_holder"></div>');
		} else {
			$(this).children(":first").html('');
		}
	}
	
	/**
	* Utility function to get the current page's langauge from JS, using the lang-[language_code] class from the <body> tag.
	* @TODO: extract this into some common JS module
	*/
	function _gcui_get_lang() {

		var body_classes = $('body').attr('class');
		var class_parts = body_classes.split(' ');
		var lang = '';
		for (var j in class_parts) {
			if ((class_parts[j]+'').indexOf('lang-') != -1) {
			// this is the part
				lang = class_parts[j].substr(5);
			}
		}

		// fallback
		if (lang == '') {
			gcui_log('body class lang-[language_code] is not set');
			lang = 'en';
		}

		return lang;

	}
	$.gcuiFlyoutTimeout = function(autoHideFlyout) {
		var timer;
		if (autoHideFlyout || autoHideFlyout == undefined) {
			$("#gcui-header-player-wrapper").mouseenter(function(){
				clearTimeout(timer);
			}).mouseleave(function(){
				timer = setTimeout(function() { $.gcuiClearAllFlyouts(); $.gcuiAnimateOutAll(); },10);
			});
			/*$("#button-bottom").mouseenter(function(){
				timer = setTimeout(function() { $.gcuiFlyoutTimeoutComplete(); },10);
			});
			$(".gcuihpw-menu").mouseenter(function(){
				timer = setTimeout(function() { $.gcuiClearAllFlyouts(); },10);
			});*/
		}
	}

	$.fn.gcuiFlyoutTimeoutComplete = function() {
		return this.each(function() {
			alert("flyingout");
			$(this).gcuiAnimateOut();
			$(this).gcuiClearThisFlyout();
		});
	}
	
	$.fn.gcuiClearThisFlyout = function () {
		return this.each(function() {
			$(this).stop().animate({"opacity":0},200,"swing", function () {$(this).css({display: "none"})});
			$("#defaultimagediv").animate({"opacity":1},400,"swing",null);
		});
	}

	var rollOverActivated;
	$.gcuiFlyoutOnRollOver = function(rollOver) {
		if (rollOver == true) {
			rollOverActivated = true;
		} else {
			rollOverActivated = false;
		}
		
	}
	
	var foBarActive = false;
	$.gcuiAutoPlayFoBar = function(showFoBar) {
		//console.log(showFoBar);
		if (showFoBar == true) {
			foBarActive = true;
		} else {
			foBarActive = false
		}
	}
	
})(jQuery);



///////////////////////////////////////////////////////////////////////////////////
// Newer video playback stuff

(function($) {

	/**
	 * Static set of video sizes
	 */
	$.gcuiVideoSizes = {
		undefined:	{ width: 432,  height: 243 },
		odd: 		{ width: 432,  height: 243 },
		low: 		{ width: 320,  height: 180 },
		reg: 		{ width: 480,  height: 270 },
		std:		{ width: 480,  height: 270 },
		med: 		{ width: 576,  height: 324 },
		hi:  		{ width: 640,  height: 360 },
		stddef: { width: 864,  height: 486 },
		hd:  		{ width: 1280, height: 720 },
		hd1920: { width: 1920, height: 1080 }
	};



	/**
	 * Play a video, with appropriate fallbacks.
	 * The paramter provided is an object which can contain these properties:
	 * {
	 *	videoId: 'lrh_bio', // (required) the video id
	 *  quality: 'med',     // (recommended) the size/quality to show, default is "med" - 576/324
	 *  locale: 'fr',       // (recommended) the locale of the video to play, defaults to 'en'
	 *	playlistId: 'main', // (optional) the playlist id to pass to the Flash player (no effect on alternate video output)
	 *  mechanisms: ['flash', 'html5', 'qt'],     // (optional) the sequence of video playback mechanisms to attempt, the example shown is the default - the first acceptable mechanism is used
	 *  preferFlv: false,    // (optional) prefer FLV format files when using Flash video player
	 *  flashVersionRequired: '9.0.115.0',        // (optional) the flash version required to use the flash mechanism for video playback, normally you don't want to change this
     *  enableVidTracker: true                    // (optional) whether or not to use the vid_tracker ??? 
     *  fallbackToDownload: true                  // (optional) whether to send the user to a download link if fails on all fronts
	 * }
	 */
  $.fn.gcuiInitVideo = function(options) {

    // default options
    var aOptions = {
      quality: 'med',
      locale: 'en',
      //playlistId: 'main',
      mechanisms: ['flash', 'html5', 'qt'],
      preferFlv: false,
      flashVersionRequired: '9.0.115.0',
      enableVidTracker: true,
      fallbackToDownload: true,
      autoplay: true
    };
    
    if (options) { 
      $.extend(aOptions, options);
    }
    
    // @HACK: fullLocale is gonna be the same
    aOptions.fullLocale = aOptions.locale;
    
    // @HACK: playlist ID
    aOptions.playlistId = aOptions.videoId;

    // sanity check
    if ($(this).children().length == 0) {
        gcui_log('ERROR: video wrapper div needs to have an inner div (with an ID on the inner div)');
    }

    //Switch out to the new image based on video Id selected no matter which video player is selected
    $.gcuiSwapVideoImage(aOptions.videoId);

		for (i in aOptions.mechanisms) {
			var myMech = aOptions.mechanisms[i];
			// flash detection
			if (myMech == 'flash') {
				// if required flash version is supported
				if (swfobject.hasFlashPlayerVersion(aOptions.flashVersionRequired)) {
					return this.gcuiInitVideoFlash(aOptions);
				}
			}
			// is HTML appropriate?
			else if (myMech == 'html5') {
				// for now, we only do HTML5 in Safari/iWhatever...
				var ua = navigator.userAgent+"";
				if (ua.indexOf('Safari') >= 0 || ua.indexOf('iPad') >= 0 || ua.indexOf('iPhone') >= 0 || ua.indexOf('iPod') >= 0) {
					return this.gcuiInitVideoHtml5(aOptions);
				}
			}
			// detect QuickTime
			else if (myMech == 'qt') {
        // load in the apple detection script and ask it...
        var caller = this;
        if (typeof detectPlugin == 'undefined') {
	  // don't have function yet, load in JS
          $.ajax({
            url: '/sites/all/modules/gold_common_ui/js/detect_apple_plugins.js',
            dataType: 'script',
            async: false
          });
	}

        if (detectPlugin && detectPlugin('QuickTime')) {
          return caller.gcuiInitVideoQuickTime(aOptions);
        }
			}
		}

    // if no video can be played (neither Flash nor HTML5 nor QuickTime), redirect to the video file so
    //   the user can at least download the file
    if (aOptions.fallbackToDownload) {
      if (aOptions.locale == 'en') {
        window.location = $.urlParser.parse('/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality).assemble();
      } else {
        window.location = $.urlParser.parse('/' + aOptions.locale + '/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality).assemble();
      }
    }
    return null;
	};

	$.fn.gcuiInitVideoFlash = function(aOptions) {
    return this.each(function() {

      //$('.breadcrumb-section .breadcrumb').html('Playing Flash...');

      // some intro animation
      $(this).css("opacity", 0);
      $(this).animate({"opacity":1},300,"swing",null);
      
      // get the data together
      var aSharedDataPath = "/" + aOptions.locale + "/sdata/";
      var aVideoSize = $.gcuiVideoSizes[aOptions.quality];

	  var isRtl = "";
	  
	  if (aOptions.locale == 'he') {
		var isRtl = "_rtl";
	  }
	  
      // embed the Flash player
      $(this).children(":first").gcuiSwfObjEmbed("/assets/shared-assets/video-player_sa_" + aVideoSize.width + isRtl + ".swf", {
        flashvars : {
          configuration:"development",
          siteName: $.urlParser.host,
          videoID: aOptions.videoId,
          playlistID: aOptions.playlistId,
          fullLocale : aOptions.fullLocale,
          locale: aOptions.locale,
          sharedDataPath: aSharedDataPath,
          preferFlv: aOptions.preferFlv,
          enableVidTracker: aOptions.enableVidTracker
        },
        config : {
          height : aVideoSize.height,
          width : aVideoSize.width
        },
        params : {
					scale: "default"
				}
      });
      
		});
	};
	
	$.fn.gcuiInitVideoHtml5 = function(aOptions) {
		return this.each(function() {

      //$('.breadcrumb-section .breadcrumb').html('Playing HTML5...');

      // get the data together
      var aVideoSize = $.gcuiVideoSizes[aOptions.quality];

      // get assembled video ID URL
      var video_id_path;
      if (aOptions.locale == 'en') {
        video_id_path = '/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality;
      } else { 
        video_id_path = '/' + aOptions.locale + '/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality;
      }

      // handle autoplay
      var autoplay_string = '';
      if (aOptions.autoplay) {
        autoplay_string = ' autoplay ';
      }

      // embed html5 player
      $(this).children(":first").html(
        '<video id="video_player" src="' +
          /*$.urlParser.parse('/en/getvideo2/'+aVideoId+'?quality=std').assemble()*/
          $.urlParser.parse(video_id_path).assemble() +
          '" preload ' + autoplay_string + ' controls height="' + aVideoSize.height + '" width="' + aVideoSize.width + '" poster="' +
          $.urlParser.parse('/sassets/videos/640_thumbs/' + aOptions.videoId + '_'+_gcui_get_lang+'.jpg').assemble() +
          '">' +
        '</video>'
      );
      
    });
	};

	$.fn.gcuiInitVideoQuickTime = function(aOptions) {
    return this.each(function() {
      
      //$('.breadcrumb-section .breadcrumb').html('Playing QuickTime...');
      
      // get the data together
      var aVideoSize = $.gcuiVideoSizes[aOptions.quality];
      
      var video_id_path;
      if (aOptions.locale == 'en') {
        video_id_path = '/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality;
      } else { 
        video_id_path = '/' + aOptions.locale + '/getvideo2/' + aOptions.videoId + '?quality=' + aOptions.quality;
      }

      // embed quicktime player
      $(this).children(":first").html(
        '<object width="' + aVideoSize.width + '" height="' + (aVideoSize.height+16) + '" ' +
          ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab"> ' +
          ' <param name="src" value="' +
            $.urlParser.parse(video_id_path).assemble() +
            '"> ' +
          ' <param name="autoplay" value="true"> ' +
          ' <param name="controller" value="true"> ' +
          ' <embed src="' +
            $.urlParser.parse(video_id_path).assemble() +
            '" width="' + aVideoSize.width + '" height="' + (aVideoSize.height+16) + '" autoplay="true" controller="true" ' +
            ' pluginspage="http://www.apple.com/quicktime/download/"> ' +
          ' </embed> ' +
        '</object>'
      );
    });
  };

})(jQuery);

;
/* function loadThumbnails(event) {

	// I assign this in the onload (the jquery attached onload) as data from the calling div, the div that is clicked that is.  It's a list of the images to be loaded.  
	var flyoutVideoCaptions = $(this).data('__flyoutVideoCaptions');
	var flyOutVideoIds = $(this).data('__flyoutVideoIds');
	var myDefaultImage = $(this).data('__defaultimage');
	var myMenuDiv = $('#flyout');
	myMenuDiv.html('<table width="576" height="324" class="newTable"><tr><td class="box box-1"></td><td class="box box-2"></td><td class="box box-3"></td><td class="box box-4"></td></tr><tr><td class="box box-5"></td><td class="box box-6"></td><td class="box box-7"></td><td class="box box-8"></td></tr><tr><td class="box box-9"></td><td class="box box-10"></td><td class="box box-11"></td><td class="box box-12"></td></tr><tr><td class="box box-13"></td><td class="box box-14"></td><td class="box box-15"></td><td class="box box-16"></td></tr></table>');
	
	myMenuDiv.css("display", "block");
	var myThumbNails = flyOutVideoIds.split(",");
	var myCaptions = flyoutVideoCaptions.split(",");
	
	for (var string in myCaptions) {
		myCaptions[string] = $("<div>" + myCaptions[string] + "</div>").text();
		//alert(myCaptions[string]);
	}
	
	for (var i = 0; i < myThumbNails.length;i++) {
		var myBoxes = $(".box-"+i);

		
		
		myBoxes.html(
		'<canvas class="flyoutImg" __img="(/assets/videos/medium_thumbs/'+myThumbNails[i-1]+'.jpg) top center" __caption="'+myCaptions[i-1]+'" onclick="playVideo(\''+myThumbNails[i-1]+'\')" __videoid="'+myThumbNails[i-1]+'"></canvas>');

		$('myBox'+i).dfwSetupFlyoutButton({
			"__img" :  '/assets/videos/medium_thumbs/'+myThumbNails[i-1]+'.jpg',
			
			"__caption" : myCaptions[i-1],
		
		});
		
		$("#myBox"+i).hover(function() {
			$(this).css("cursor", "pointer");
			$(this).dfwAnimateInHeaderButton();
		}, function() {
			$(this).dfwAnimateOutHeaderButton();
		});
		var myBoxImage = $("#myBox"+i);
		myBoxImage.css("margin-bottom", 0);
		myBoxes.css("text-align", "center");
	}
	myMenuDiv.css("opacity", 0);

	myMenuDiv.animate({"opacity":.9},500,"swing",null);
} */

function playVideo(passedVideo) {
	var myMenuDiv = $('#gcui-header-player-wrapper #flyout');
	myMenuDiv.stop().animate({"opacity":0},200,"swing",null);
	
	var myDefaultImageDiv = $('#gcui-header-player-wrapper #defaultimagediv');
	myDefaultImageDiv.css("opacity", 0);
	setTimeout(function() {
		myDefaultImageDiv.html ('<img id="defaultimage" width="576" height="324" src="/assets/videos/640_thumbs/'+passedVideo+'.jpg">');
	},2000);
	
	var myPlayerDiv = $('#main_player');
	myPlayerDiv.animate({"opacity":1},500,"swing",null);

	if (passedVideo) {
		// set the source
		$('#gcui-header-player-wrapper #main_player').gcuiSwfObjEmbed("/assets/shared-assets/video-player_sa_576.swf",
		{
			flashvars : {
				configuration:"development",
				siteName:$.urlParser.host,
				videoID: passedVideo,
				playlistID: passedVideo
			},
			config : {
				height : '324',
				width : '576'
			}
		})
	}
	myMenuDiv.css("display", "none");
}

$.fn.dfwSetupFlyoutButton = function(aButtonConfig) {
	this.data('__buttonConfig', aButtonConfig);
	return this.each(function() {
		// add class to canvas so we can find it later
		$(this).addClass('dfwFlyoutButton');
		
		// create div which we will animate the opacity of using jquery and which will be our animation state
		var myDiv = $("<div class='dfwHeaderButtonAnimator'></div>").appendTo("body");
		myDiv.css("opacity", 0);
		myDiv.css("display", "none");
		$(this).data('__animatorDiv', myDiv);
		
		if (!document.dfwFlyoutButtonInterval) {
			document.dfwFlyoutButtonInterval = setInterval(function() {
				$(".dfwFlyoutButton").dfwDrawFlyoutButton();
			},0);
		}
	})
};

$.fn.dfwSetupHeaderButton = function(aButtonConfig) {
	
	//Because canvas cannot do line breaks, we have to split the caption into individual lines
	var myCaption = $(this).attr('__caption');
	
	//Split at the line break in the XML
	myCaptionArray = myCaption.split('<br/>');
	
	//Go through each split line and strip the html and assign it to the array
	for (var string in myCaptionArray) {
		myCaptionArray[string] = $("<div>" + myCaptionArray[string] + "</div>").text();
	}
	
	aButtonConfig.caption = myCaptionArray;
	
	this.data('__buttonConfig', aButtonConfig);
	return this.each(function() {
	
		// add class to canvas so we can find it later
		$(this).addClass('dfwHeaderButton');
		
		// create div which we will animate the opacity of using jquery and which will be our animation state
		var myDiv = $("<div class='dfwHeaderButtonAnimator'></div>").appendTo("body");
		myDiv.css("opacity", 0);
		myDiv.css("display", "none");
		$(this).data('__animatorDiv', myDiv);
		
		// start the interval which does the animation - if not already done
		if (!document.dfwHeaderButtonInterval) {
			document.dfwHeaderButtonInterval = setInterval(function() {
				$(".dfwHeaderButton").dfwDrawHeaderButton();
			},25);
		}
	})
}


$.fn.dfwDrawFlyoutButton = function() {
	return this.each(function() {
		var animator = $(this).data('__animatorDiv').css('opacity');
		alert(animator);
		var lastanimator = $(this).data('__lastanimator');
		if (lastanimator == animator && lastanimator) {
			return;
		}
		
		var myButtonConfig = $(this).data('__buttonConfig');
		var myCaption = myButtonConfig.caption;
		var myImg = myButtonConfig.caption;
		var flag = new Image();
		flag.src = '/arrow.png';
		$(this).data('__lastanimator', animator);
		ctx.drawImage(flag, 10, 20);
		ctx.stroke();
		ctx.font = '600 17px/2 "Trebuchet MS",Helvetica,sans-serif';
		ctx.fillStyle = "rgba(44, 167, 170, 1)";
		ctx.textBaseline = "middle";
		ctx.fillText(myCaption, 40*animator/10+32, this.height/2-10);
		
})
}
		
$.fn.dfwDrawHeaderButton = function() {
	return this.each(function() {
		var animator = $(this).data('__animatorDiv').css('opacity');
		var lastanimator = $(this).data('__lastanimator');
		if (lastanimator == animator && lastanimator) {
			return;
		}
		$(this).data('__lastanimator', animator);
		
		var myButtonConfig = $(this).data('__buttonConfig');
		var myButtonShape = myButtonConfig.box_coords;
		var myArrowPosition = myButtonConfig.arrow_position;
		var myCaption = myButtonConfig.caption;
		
		var animatorSmall = animator/50;
		var animateOpacity = animator/3+.5;
		var flag = new Image();
		flag.src = '/arrow.png';
		var ctx = this.getContext('2d');
		
		ctx.save();
			ctx.clearRect(0,0,300,110);
			ctx.setTransform(1+animatorSmall,0,0,1+animatorSmall,-7*animator,-8*animator);
			ctx.rotate(animatorSmall);
			ctx.beginPath();
			ctx.fillStyle="rgba(0, 0, 0, "+animateOpacity+")";
			ctx.strokeStyle="rgba(0, 0, 0, "+animateOpacity+")";
			ctx.scale(1+animatorSmall*2.7,1+animatorSmall*3);
			for (var i in myButtonShape) {
				var myCoords = myButtonShape[i];
				// if first one..
				if (i==0) {
					ctx.moveTo(myCoords[0],myCoords[1]);
				} else {
					ctx.lineTo(myCoords[0],myCoords[1]);
				}
			}
			ctx.fill();
			ctx.beginPath();
			ctx.restore();
			ctx.fillStyle="rgba(0, 0, 0, 1)";
			ctx.strokeStyle="rgba(0, 0, 0, 1)";
			
			// Load an image
			ctx.drawImage(flag, myArrowPosition[0]*animator/16+220, myArrowPosition[1]);
			
			ctx.restore();
			
			if (myCaption.length == 2) {
				ctx.stroke();
				ctx.font = '600 17px/2 "Trebuchet MS",Helvetica,sans-serif';
				ctx.fillStyle = "rgba(44, 167, 170, 1)";
				ctx.textBaseline = "middle";
				ctx.fillText(myCaption[0], 40*animator/10+32, this.height/2-10);
				ctx.font = '600 14px/2 "Trebuchet MS",Helvetica,sans-serif';
				ctx.fillStyle = "rgba(255, 255, 255, 1)";
				ctx.textBaseline = "middle";
				ctx.fillText(myCaption[1], 40*animator/10+32, this.height/2+10);
			} else if (myCaption.length == 3) {
				ctx.stroke();
				ctx.font = '600 17px/2 "Trebuchet MS",Helvetica,sans-serif';
				ctx.fillStyle = "rgba(44, 167, 170, 1)";
				ctx.textBaseline = "middle";
				ctx.fillText(myCaption[0], 40*animator/10+32, this.height/2-17);
				ctx.font = '600 17px/2 "Trebuchet MS",Helvetica,sans-serif';
				ctx.fillStyle = "rgba(44, 167, 170, 1)";
				ctx.textBaseline = "middle";
				ctx.fillText(myCaption[1], 40*animator/10+32, this.height/2);
				ctx.font = '600 14px/2 "Trebuchet MS",Helvetica,sans-serif';
				ctx.fillStyle = "rgba(255, 255, 255, 1)";
				ctx.textBaseline = "middle";
				ctx.fillText(myCaption[2], 40*animator/10+32, this.height/2+17);
			}
		ctx.restore();
	})
};

$.fn.dfwAnimateInHeaderButton = function() {
	return this.each(function() {
		var myDiv = $(this).data('__animatorDiv');
		myDiv.stop().animate({"opacity":1},200,"swing",null);
	})
};

$.fn.dfwAnimateOutHeaderButton = function() {
	return this.each(function() {
		var myDiv = $(this).data('__animatorDiv');
		myDiv.stop().animate({"opacity":0},200,"swing",null);
	})
};
	
$.fn.dfwRunClickEvent = function(e) {
	return this.each(function() {		
		// if it's an actual link then just let it link
		var myHref = $(this).attr('href');
		var myTarget = $(this).attr('target');
		if (myHref && myHref.length > 1) {
			var myPlayerDiv = $('#main_player');
			$('#main_player').fadeOut('fast');
			if (myTarget == "_blank") {
				window.open(myHref);
			} else {
				document.location(myHref);
			}
			return true;
		}
		
		// hide the flyout if there.
		var myMenuDiv = $('#gcui-header-player-wrapper #flyout');
		myMenuDiv.css("display", "none");

		var myVideoId = $(this).attr('__videoid');
		var flyOutVideoIds = $(this).attr('__flyoutVideoIds');
		var flyOutVideoCaptions = $(this).attr('__flyoutVideoCaptions');

		if (myVideoId && flyOutVideoIds.length==0) {

			// set the source
			$('#gcui-header-player-wrapper #player').animate({"opacity":0, "visibility":"hidden"},500,"swing",null);
			var myPlayerDiv = $('#gcui-header-player-wrapper #main_player');
			myPlayerDiv.animate({"opacity":1},500,"swing",null);
			myPlayerDiv.fadeOut('fast');

			if (swfobject.hasFlashPlayerVersion('9.0.115.0')) {
				myPlayerDiv.gcuiSwfObjEmbed("/assets/shared-assets/video-player_sa_576.swf",
				{
					flashvars : {
						configuration:"development",
						siteName: $.urlParser.host,
						videoID: myVideoId,
						playlistID: myVideoId

					},
					config : {
						height : '324',
						width : '576'
					}
				})
			} else {
			myPlayerDiv.html(
				'<video id="video_player" autoplay controls height="324" width="576" poster="' +
				$.urlParser.parse("/assets/videos/640_thumbs/"+myVideoId+".jpg").assemble()
				 +
				'">' +
				'<source src="' +
				$.urlParser.parse("/en/getvideo/"+myVideoId+"?quality=std").assemble()
				 +
				'" />' +
				'</video>');
			}


		}
		// no video ID, assume it's a submenu
		else {
			var myPlayerDiv = $('#gcui-header-player-wrapper #main_player');
			$('#gcui-header-player-wrapper #main_player').fadeOut('fast');
			myPlayerDiv.data("__flyoutVideoIds", flyOutVideoIds);
			myPlayerDiv.data("__flyoutVideoCaptions", flyOutVideoCaptions);
			myPlayerDiv.animate({"opacity":100},200,"swing",loadThumbnails);
			var myDefaultImageDiv = $('#gcui-header-player-wrapper #defaultimagediv');
			myDefaultImageDiv.stop().animate({"opacity":100},200,"swing",null);
			return false;
		}
	})
};
/*
$(document).ready(function() {
	$("#button1").dfwSetupHeaderButton({
		"box_coords" : [
							[12,12],
							[255,15],
							[257,60],
							[222,60],
							[224,75],
							[28,83],
							[26,53],
							[12,53]
						],
		"arrow_position" :  [220,25],							

		});
	if ($("#button2").css("width") != undefined) {
	$("#button2").dfwSetupHeaderButton({
		"box_coords" : [
							[18,15],
							[255,7],
							[257,45],
							[268,45],
							[266,80],
							[27,78],
							[27,63],
							[18,63]
					   ],
		"arrow_position" :  [220,45],
		
		});
		}
	if ($("#button3").css("width") != undefined) {
	$("#button3").dfwSetupHeaderButton({
		"box_coords" : [
							[12,12],
							[255,15],
							[257,60],
							[222,60],
							[224,75],
							[28,83],
							[26,53],
							[12,53]
						],
		"arrow_position" :  [220,25],
		});
	}
		
	$("#button1").click(function() {
		$(this).dfwRunClickEvent();
	});
	$("#button2").click(function() {
		$(this).dfwRunClickEvent();
	});
	$("#button3").click(function() {
		$(this).dfwRunClickEvent();
	});
	
	$("#button1").hover(function() {
		$(this).css("cursor", "pointer");
		$(this).dfwAnimateInHeaderButton();
	}, function() {
		$(this).dfwAnimateOutHeaderButton();
	});
	$("#button2").hover(function() {
		$(this).css("cursor", "pointer");
		$(this).dfwAnimateInHeaderButton();
	}, function() {
		$(this).dfwAnimateOutHeaderButton();
	});
	$("#button3").hover(function() {
		$(this).css("cursor", "pointer");
		$(this).dfwAnimateInHeaderButton();
	}, function() {
		$(this).dfwAnimateOutHeaderButton();
	});
});*/;	function urlParser(url)
	{
		if(url != undefined) this.parse(url);
	}

	urlParser.prototype.protocol = window.location.protocol;
	urlParser.prototype.host = window.location.host;
	urlParser.prototype.path = window.location.pathname;
	urlParser.prototype.parameters = {};
	urlParser.prototype.anchor = '';
	
	urlParser.prototype.baseUrl;

	urlParser.prototype.setBaseUrl = function(url)
	{
		this.baseUrl = new urlParser(url);
		this.parse();
		return this;
	}

	urlParser.prototype.resetBaseUrl = function()
	{
		this.baseUrl = undefined;	
	}

	urlParser.prototype.reset = function()
	{
		
		if(this.baseUrl != undefined)
		{
			this.protocol = this.baseUrl.protocol;
			this.host = this.baseUrl.host;
			this.path = this.baseUrl.path;
		}
		else
		{
			this.protocol = window.location.protocol;
			this.host = window.location.host;
			this.path = window.location.pathname;
		}

		this.parameters = {};
		this.anchor = '';
	}
	
	urlParser.prototype.parse = function(ref)
	{
		if(ref == undefined) ref = '';
		
		this.reset();

		var pos;

		if((pos = ref.search(/\:/)) >= 0)
		{
			this.protocol = ref.substring(0, pos + 1);
			ref = ref.substring(pos + 1);
		}

		if((pos = ref.search(/\#/)) >= 0)
		{
			this.anchor = ref.substring(pos + 1);
			ref = ref.substring(0, pos);
		}

		if((pos = ref.search(/\?/)) >= 0)
		{
			var paramsStr = ref.substring(pos + 1) + '&amp;';
			ref = ref.substring(0, pos);
			while((pos = paramsStr.search(/\&amp;/)) >= 0)
			{
				var paramStr = paramsStr.substring(0, pos);
				paramsStr = paramsStr.substring(pos + 1);

				if(paramStr.length)
				{
					var equPos = paramStr.search(/\=/);
					if(equPos < 0) this.parameters[paramStr] = '';
					else this.parameters[paramStr.substring(0, equPos)] = decodeURIComponent(paramStr.substring(equPos + 1));
				}
			}
		}

		if(ref.search(/\/\//) == 0) // absolute
		{
			ref = ref.substring(2);
			if((pos = ref.search(/\//)) >= 0)
			{
				this.host = ref.substring(0, pos);
				this.path = ref.substring(pos);
			}
			else
			{
				this.host = ref;
				this.path = '/';
			}
		}
		else if(ref.search(/\//) == 0) // relative to host
		{
			this.path = ref;
		}
		
		else // relative to directory
		{
			var p = this.path.lastIndexOf('/');
			if(p < 0) this.path = '/';
			else if(p < this.path.length - 1) this.path = this.path.substring(0, p + 1);
			
			while(ref.search(/\.\.\//) == 0)
			{
				var p = this.path.lastIndexOf('/', this.path.lastIndexOf('/') - 1);
				if(p >= 0) this.path = this.path.substring(0, p + 1);
				ref = ref.substring(3); // removing '../' from begining
			}
			this.path = this.path + ref;
		}

		return this;
	}

	urlParser.prototype.assemble = function()
	{
		var ref = this.protocol + '//' + this.host + this.path;
		var div = '?';
		for(var key in this.parameters)
		{
			ref += div + key + '=' + encodeURIComponent(this.parameters[key]);
			div = '&amp;';
		}
		return ref;
	}

	jQuery.urlParser = new urlParser();
;/*	SWFObject v2.2 <http://code.google.com/p/swfobject/> 
	is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();;// JavaScript Document
// Handles lightbox resizing when window is resized


// Storing final sizes.
var finalHeight = 0;
var finalWidth = 0;
var lastResizedHeight = 0;
var lastResizedWidth = 0;

// Storing current the timeoutID.
var timeoutID = 0;

// Storing the IDs (in case we need them for resizing).
var scribd_book_id = "";
var scribd_doc_id = "";
var scribd_doc_key = "";
var scribd_page_num = "1";

$(window).resize(function() {
		// IE fix
		if(document.all) {
			window.resizeEnd = (window.resizeEnd==null)?(new Object()):window.resizeEnd;
			clearTimeout(window.resizeEnd);
			window.resizeEnd = setTimeout(gcui_lightboxResize,1);
		} else {
			// Store the current sizes.
			
			finalHeight = document.documentElement.clientHeight;
			finalWidth = document.documentElement.clientWidth;
			
			// If there's no timeout going on, get it scheduled.
			if (timeoutID == 0) {
				//timeoutID = setTimeout(gcui_lightboxResize, 5);
			}
		}
});
	
function gcui_lightboxResize() {
	
	// Check if this is the same size
	if (Math.abs(lastResizedHeight-document.documentElement.clientHeight) > 5 || Math.abs(lastResizedWidth-document.documentElement.clientWidth) > 5) {
	
	// Check if the lightbox is on.
	//if (document.getElementById('lightbox').style.display == 'block') {

		// Refresh the embedded viewer
		if (scribd_book_id != "") {
			$('#modalContainer').load('/gcui_book_viewer_scribd_viewer?' + gcui_getLightboxSizes_for_reader() + '&book_id=' + scribd_book_id + '&page_num=' + scribd_page_num);
		} else {
			$('#modalContainer').load('/gcui_book_viewer_scribd_viewer?' + gcui_getLightboxSizes_for_reader() + '&doc_id=' + scribd_doc_id + '&doc_key=' + scribd_doc_key + '&page_num=' + scribd_page_num);
		}

		// Figure out the new measurements.
		baseWidth = Math.round(document.documentElement.clientWidth * 0.8);
		baseHeight = Math.round(document.documentElement.clientHeight * 0.8) - 66;
		if (baseWidth < 200) baseWidth = 200;
		if (baseHeight < 200) baseHeight = 200;
	
		// Center the box vertically.
		$('#lightbox').css('top', Math.round(baseHeight * 0.1) + "px");
	
		// Apply the new measurements.
		$('#overlay').css('width', (document.documentElement.clientWidth)+ "px");
		$('#outerImageContainer').css('width', (baseWidth+25)+ "px");
		$('#outerImageContainer').css('height', (baseHeight+25) + "px");
		//$('#frameContainer').css('width', (baseWidth+10)+ "px");
		//$('#frameContainer').css('height', (baseHeight+10) + "px");
		//$('#lightboxFrame').css('width', baseWidth + "px");
		//$('#lightboxFrame').css('height', baseHeight + "px");
		$('#imageDataContainer').css('width', (baseWidth+25) + "px");
		$('#imageData').css('width', (baseWidth+25) + "px");
		$('#bottomNav').css('width', (baseWidth+10) + "px");

		$('#modalContainer').css('width', (baseWidth+10)+ "px");
		$('#modalContainer').css('height', (baseHeight+10) + "px");
		
		lastResizedHeight = document.documentElement.clientHeight;
		lastResizedWidth = document.documentElement.clientWidth;
	//}
	}
	
	timeoutID = 0;
}

function gcui_getLightboxSizes() {
	return('width:' + (Math.round(document.documentElement.clientWidth * 0.8)+10) + 'px; height:' + (Math.round(document.documentElement.clientHeight * 0.8)-56) + 'px');
}

function gcui_getLightboxSizes_for_reader() {
	return('width=' + Math.round(document.documentElement.clientWidth * 0.8) + '&height=' + (Math.round(document.documentElement.clientHeight * 0.8)-66));
}

function gcui_embedScribdReader(book_id, page_num, title, link_text) {
	scribd_page_num = page_num;
	scribd_book_id = book_id;
	document.writeln('<a rel="lightmodal[|' + gcui_getLightboxSizes() + '; scrolling: auto;][' + title + ']" href="/gcui_book_viewer_scribd_viewer?' + gcui_getLightboxSizes_for_reader() + '&book_id=' + scribd_book_id + '&page_num=' + scribd_page_num +'">');
	document.writeln(link_text);
	document.writeln('</a>');
}

function gcui_embedScribdReader_lang(book_id, page_num, title, link_text, lang) {
	scribd_page_num = page_num;
	scribd_book_id = book_id;
    var lang_prefix = lang;
    if (lang_prefix == '' || lang_prefix == 'en') {
        lang_prefix = '';
    } else {
        lang_prefix = '/' + lang_prefix;
    }

	document.writeln('<a rel="lightmodal[|' + gcui_getLightboxSizes() + '; scrolling: auto;][' + title + ']" href="' + lang_prefix + '/gcui_book_viewer_scribd_viewer?' + gcui_getLightboxSizes_for_reader() + '&book_id=' + scribd_book_id + '&page_num=' + scribd_page_num +'">');
	document.writeln(link_text);
	document.writeln('</a>');
}

function gcui_embedGoogleReader(book_id, page_num, title, link_text, lang, nid) {
	scribd_page_num = page_num;
	scribd_book_id = book_id;
    var lang_prefix = lang;
    if (lang_prefix == '' || lang_prefix == 'en') {
        lang_prefix = '';
    } else {
        lang_prefix = '/' + lang_prefix;
    }
	document.writeln('<a rel="lightframe[|' + gcui_getLightboxSizes() + '; scrolling: auto;][' + title + ']" href="/gcui-google-doc-viewer.action?url=/sites/default/files/booklets/split/' + scribd_book_id + '_' + nid + '-' + lang + '.pdf&embedded=true">');

	document.writeln(link_text);
	document.writeln('</a>');
}

function gcui_embed_custom_reader(book_id, page_num, title, link_text, lang, nid) {
	scribd_page_num = page_num;
	scribd_book_id = book_id;
    var lang_prefix = lang;
    if (lang_prefix == '' || lang_prefix == 'en') {
        lang_prefix = '';
    } else {
        lang_prefix = '/' + lang_prefix;
    }

    var window_height = $(window).height();
    var window_width = $(window).width();

    // [|' + gcui_getLightboxSizes() + '; scrolling: auto;][' + title + ']
    // gcui_getLightboxSizes_for_reader()
    var custom_html = '<a rel="gcui_custom_frame" href="' + lang_prefix + '/gcui_book_viewer_scribd_viewer?height=' + (window_height-120) +
        '&width=' + (window_width-120) + '&book_id=' + scribd_book_id + '&page_num=' + scribd_page_num +'">';
	custom_html += link_text;
	custom_html += '</a>';
    
    return custom_html;
}


/**
 * Our very own lightbox-like popup widget. To use it, define elements like this:
 *
 * <a rel="gcui_custom_frame" href="[URL_goes_here]">
 *
 * and call the init function in document.ready, like:
 *
 * $(document).ready(function() {
 *     gcui_custom_frame_init();
 * });
 * 
 */
function gcui_custom_frame_init() {
		
    $('a[rel="gcui_custom_frame"]').each(function() {
        
        $(this).click(function(e) {
            e.preventDefault();
            
            // remove any leftover frames still around
            $('#gcui_custom_frame_overlay').remove();
            $('#gcui_custom_frame').remove();
            
            if ($.browser.msie) {
                if ($.browser.version.indexOf('8.') > -1) {
                    // IE 8
                } else {
                    if ($.browser.version.indexOf('7.') > -1) {
                        // IE 7
                        $("html").css("overflow", "hidden");
                    } else {
                        $("body").css("overflow", "hidden");
                    }
                }
            } else {
                $("body").css("overflow", "hidden");
            }
            
            var window_height = $(window).height();
            var window_width = $(window).width();
            var document_height = $(document).height();
            var document_width = $(document).width();
            
            // get the overlay there
            $('body').prepend('<div id="gcui_custom_frame_overlay"></div>');
            $('#gcui_custom_frame_overlay').css('position', 'absolute').css('width', document_width + 'px').css('height', document_height + 'px');
            $('#gcui_custom_frame_overlay').css('z-index', 20000).css('opacity', 0).css('background-color', 'black');
            $('#gcui_custom_frame_overlay').animate({opacity: 0.7});
            
            // get the container box there
            $('body').prepend('<div id="gcui_custom_frame"></div>');
            $('#gcui_custom_frame').css('position', 'fixed').css('top', 50).css('left', 50).css('width', (window_width-100) + 'px');
            $('#gcui_custom_frame').css('height', (window_height-100) + 'px').css('z-index', 20001).css('background-color', 'white');
            
            // put an iframe in the box with the contents
            $('#gcui_custom_frame').append('<div id="gcui_custom_frame_iframe"><iframe width="100%" height="100%" ' +
                '  src="' + $(this).attr('href') + '">');
            $('#gcui_custom_frame_iframe').css('width', (window_width-100) + 'px');
            $('#gcui_custom_frame_iframe').css('height', (window_height-100) + 'px');
            
            // add close button
            $('#gcui_custom_frame').append('<div id="gcui_custom_frame_close"><a href="#">CLOSE</a></div>');
            $('#gcui_custom_frame_close a').css('position', 'fixed').css('right', '50px').css('top', '30px').css('color', 'white')
            
            // onclick for the overlay
            $('#gcui_custom_frame_close a').click(function(e) {
                e.preventDefault();
                gcui_custom_frame_close();
                return false;
            });
            
            return false;
        });
    });
    
    $(window).resize(function() {

        // only do something if we've got a lightbox
        var is_lightbox = $('#gcui_custom_frame_overlay').length;
        if (is_lightbox == 0) {
            // no lightbox
            return;
        }

        var window_height = $(window).height();
        var window_width = $(window).width();
        var document_height = $(document).height();
        var document_width = $(document).width();
        
        // resize the container and the overlay
        $('#gcui_custom_frame_overlay').css('width', document_width + 'px').css('height', document_height + + 'px');
        $('#gcui_custom_frame').css('height', (window_height-100) + 'px').css('width', (window_width-100) + 'px');
        
        // remove the iframe
        $('#gcui_custom_frame_iframe').remove();
        
        // @HACK: call again the original link generating function, have it output a fake link and use the href from it
        var my_new_a_tag = gcui_crs_get_reader();
        $('body').append('<div id="gcui_custom_frame_iframe_temp">' + my_new_a_tag + '</div>');
        var my_link = $('#gcui_custom_frame_iframe_temp a').attr('href');
        $('#gcui_custom_frame_iframe_temp').remove();

        // make the new iframe			
        $('#gcui_custom_frame').append('<div id="gcui_custom_frame_iframe"><iframe width="100%" height="100%" ' +
                '  src="' + my_link + '">');
        $('#gcui_custom_frame_iframe').css('width', (window_width-100) + 'px');
        $('#gcui_custom_frame_iframe').css('height', (window_height-100) + 'px');
    });
    
    
}

function gcui_custom_frame_close() {
    $('#gcui_custom_frame_iframe').remove();
    $('#gcui_custom_frame').fadeOut(200, function() {
        $('#gcui_custom_frame_overlay').fadeOut(200, function() {
            // get the browser scrollbars back on
            // for some unknown reason, this (jQuery) errors on IEs, but does recover the scrollbar,
            //   so an elegant handling is to swallow the error
            if ($.browser.msie) {
                if ($.browser.version.indexOf('8.') > -1) {
                    // IE 8
                } else {
                    if ($.browser.version.indexOf('7.') > -1) {
                        // IE 7
                        $("html").css("overflow", "auto");
                    } else {
                        $("body").css("overflow", "auto");
                    }
                }
            } else {
                $("body").css("overflow", "auto");
            }
            
        });
    });
}
;// JavaScript Document

function gcui_displayfact_init(n) {
    $('.gcui-displayfact-container-'+n+' .gcui-displayfact-item').hide();
    $('.gcui-displayfact-container-'+n+' .gcui-displayfact-item:first').addClass('active').show();

    var myContainer = $('.gcui-displayfact-container-'+n);
    myContainer.hover(function() {
        gcui_displayfact_pause_auto(n);
        $('.gcui-displayfact-container-'+n+' .gcui-displayfact-controls').fadeIn(250);
    },function() {
        gcui_displayfact_unpause_auto(n);
        $('.gcui-displayfact-container-'+n+' .gcui-displayfact-controls').fadeOut(250);
    });

    // attach click events
    $('.gcui-displayfact-container-'+n+' .prev').click(function() {
        gcui_displayfact_prev(n, true);
    });
    $('.gcui-displayfact-container-'+n+' .next').click(function() {
        gcui_displayfact_next(n, true);
    });
}

function gcui_displayfact_next(n, noAnim) {

    // get current item
    var myCurrentItem = $('.gcui-displayfact-container-'+n+' .active');

    // get next item
    var myNextItem = $('.gcui-displayfact-container-'+n+' .active + .gcui-displayfact-item');
    // if this is the last, loop around to first
    if (!myNextItem.length) {
        myNextItem = $('.gcui-displayfact-container-'+n+' .gcui-displayfact-item:first');
    }

    _gcui_displayfact_swap(n, myCurrentItem, myNextItem, noAnim);
}

function gcui_displayfact_prev(n, noAnim) {

    // get current item
    var myCurrentItem = $('.gcui-displayfact-container-'+n+' .active');

    // get previous item
    var myPrevItem = $('.gcui-displayfact-container-'+n+' .active').prev();
    if (!(myPrevItem && myPrevItem.hasClass('gcui-displayfact-item'))) {
        myPrevItem = $('.gcui-displayfact-container-'+n+' .gcui-displayfact-item:last');
    }

    _gcui_displayfact_swap(n, myCurrentItem, myPrevItem, noAnim);
}

function _gcui_displayfact_swap(n, oldItem, newItem, noAnim) {
    // remove active flag and stop all animations
    $('.gcui-displayfact-container-'+n+' .gcui-displayfact-item')
        .removeClass('active')
        .stop()
        .dequeue();

    // set correct active flag
    newItem.addClass('active');

    if (noAnim) {
        oldItem.hide();
        newItem.show();
    }
    else {
        // do animation
        oldItem.fadeOut(300, function() {
            newItem.fadeIn(300);
        });
    }
}

/** enables automatic rotation */
function gcui_displayfact_set_auto(n) {
    var myTimeout = Drupal.settings.gcui_displayfact_timeout;
    if (!myTimeout) { myTimeout = 5000; }
    var i = setInterval(function() {
        gcui_displayfact_next(n);
    }, myTimeout);
    $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid', i);
    $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid_saved', null);
}

/** disables automatic rotation */
function gcui_displayfact_unset_auto(n) {
    var i = $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid');
    if (i) {clearInterval(i);}
    $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid', null);
    $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid_saved', null);
}

/** temporarily suspends automatic rotation */
function gcui_displayfact_pause_auto(n) {

    var i = $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid');

    // if set, then cancel the interval and save the id so we know it was running
    if (i) {
        clearInterval(i);
        // save interval id
        $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid_saved', i);
        // nuke the id
        $('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid', null);
    }
}

/** resumes automatic rotation, if it was previously suspended */
function gcui_displayfact_unpause_auto(n) {
    // if there was a saved ID, then call gcui_displayfact_set_auto again to start over
    if ($('.gcui-displayfact-container-'+n).data('gcui_displayfact_intervalid_saved')) {
        gcui_displayfact_set_auto(n);
    }
}
;(function($) {
    $.fn.gcuiSwfObjEmbed = function(aSwf,aSettings) {
        if (aSwf) {
            var myConfig = {};
            $.each($.fn.gcuiSwfObjEmbed.defaults,function(k,v) {
                // NOTE: jQuery.extend() doesn't copy properties,
                // may work in jQuery 1.4, but we're on 1.3.2
                // copy default
                // http://jquery14.com/day-01/jquery-14
                var mySub = {};
                for (var p in v) {
                    mySub[p] = v[p];
                }
                // on the copy overwrite the defaults with the specific settings
                for (var p in aSettings[k]) {
                    mySub[p] = aSettings[k][p];
                }
                // assign to myConfig
                myConfig[k] = mySub;
            });
            this.each(function() {
                myConfig.attributes.id = $(this).attr('id');
                if (myConfig.attributes.id == '') {
                  gcui_log('ID of div missing, cannot embed video');
                }
                swfobject.embedSWF(
                    aSwf, myConfig.attributes.id, myConfig.config.width,
                    myConfig.config.height, myConfig.config.requiredVersion,
                    myConfig.config.alternativeSwf,
                    myConfig.flashvars, myConfig.params, myConfig.attributes
                    );
            });
        } else {
          console.log('aSwf not passed in');
        }
        return this;
    };
    $.fn.gcuiSwfObjEmbed.defaults = {
        config : {
            height : '360',
            width: '640',
            requiredVersion :  '8.0.0',
            alternativeSwf : 'expressInstall.swf'
        },
        params :{
            quality: "high",
            scale: "noscale",
            wmode: "transparent",
            allowscriptaccess: "always",
            allowFullScreen: "true",
            bgcolor: "#000000"
        },
        flashvars : {
            fullLocale:"en_US",
            locale:"en",
            cdnPath:"",
            localPath:"",
            trackerCode:"",
            configuration:"production",
            sharedAssetPath:"/assets/",
            siteAssetPath: "/assets/",
            sharedDataPath: "/en/sdata/",
            siteDataPath: "/data/",
            siteStylesPath: "/data/styles/",
            siteRootPath: "/",
            infoRequestUrl: "http://contact2.firechrome.org/inquiry.action",
            siteXML:"/site.xml",
            localePostfix: "",
            region: "US",
            autoplay: "true"
        },
        attributes : {}
    };

    $.createElement = function(aEl,innerHtml,aClose,attrs) {
        var r = ['<', aEl,' '];
        for(var k in attrs) {
            r.push(k);
            r.push('="');
            r.push($.isArray(attrs[k]) ? attrs[k].join(' ') : attrs[k]);
            r.push('" ');

        }
        r.push('>');
        r.push(innerHtml);
        if(aClose) {
            r.push('</');
            r.push(aEl);
            r.push('>');
        }
        return r.join('');
    };

    $.fn.gcuiSlideShow = function(aId,aImages,aSettings) {
        var config = {};
        if (settings) $.extend(config, settings);
        this.each(function() {});
        return this;
    };

    $.gcuiDataClone = function(aTarget,aSources) {
        // NOTE: jQuery.extend() doesn't copy properties we're on 1.3.2
        // http://jquery14.com/day-01/jquery-14
        var mySources = $.makeArray(aSources)
        $.each(mySources,function(i,v) {
            for (var p in v) {
                aTarget[p] = v[p];
            }
        });
        return aTarget;
    };
    $.intRange = function(aFrom,aTo,aMin,aMax,aDir) {
        var myF = parseInt(aFrom);
        var myT = parseInt(aTo);
        var myMin = parseInt(aMin);
        var myMax = parseInt(aMax);
        if(myF==myT) return [];
        var r = [myF];
        var myInc = aDir==null?myF < myT:aDir;
        var i = myF;
        while(i!=myT) {
            r.push(i = $.increment(i,myMin,myMax,myInc));
            //if(i) {break;}//Avoid infinite loops
        }
        return r;
    };
    $.increment = function(aFrom,aMin,aMax,aDir) {
        var i = aDir ? ++aFrom : --aFrom;
        if(i > aMax) return aMin;
        if(i < aMin) return aMax;
        return i;
    };
    $.getAt = function(aObj,aParams) {
    	    var r = null;
    	    $.each(aParams,function(){
		    if(aObj[this]) r=aObj[this];
    	    });
    	    return r; 
    };
    
	$.fn.customFadeIn = function(speed, callback) {
		return $(this).fadeIn($.support.opacity ? speed : 1,callback);
	};
	$.fn.customFadeOut = function(speed, callback) {
		return $(this).fadeOut($.support.opacity ? speed : 1,callback);
	};
	
	$.getHost = function() {
		var h = new String(document.location);
		return h.replace(/http:\/\/([^\/]*)\/.*/,'$1');
	};

	/**
	 * Find out if certain support exists
	 */
	$.gcuiSupports = function(features) {
	    var ret = true;
	    if (features.canvas) {
	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
	    }
		if (features.basic_html5) {
	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
 			if (/Version\/3\.[0-9. ]+ Safari\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/3\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Firefox\/[1-2]\.[0-9]/.test(navigator.userAgent)) {
				return false;
	        }
			if (/Firefox\/3\.0/.test(navigator.userAgent)) {
				return false;
	        }
			if (/iPad/.test(navigator.userAgent)) {
				return false;
			}
			if (/iPhone/.test(navigator.userAgent)) {
				return false;
			}
			/*if (/Version\/4\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        } */
	    }
	    return ret;
	};
	$.gcuiSupportsNativeCanvasText = function(supports) {
		var ret = true;
		if (supports.supportsCanvasText) {
 	        if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
	            return false;
	        }
			if (/Version\/3\.[0-9. ]+ Safari\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/3\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        }
			if (/Version\/4\.[0-9. ]+ Mobile\//.test(navigator.userAgent)) {
				return false;
	        } 
	    }
		return ret;
	}
	

})(jQuery);

if(!console) {
    var console = {log : function(){}};
}

if (typeof $.fn.delay != 'function') {
    $.fn.delay = function(time, callback){
        jQuery.fx.step.delay = function(){};
        return this.animate({delay:1}, time, callback);
    }
}




;//Sets up sharing when using  the mouse over/out menu popup. See setup in Scientology for example.
function doShare(){
	return addthis_sendto();
};
//Function called when mousing over the button (shows little menu popup).
function doShareOver(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, '', url, title);
};
//Function called when clicking the button (loads lightbox popup).
function doShareClick(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, 'more', url, title)
};
//Function called when mousing off the button (closes the little menu popup).
function doShareOut(){
	addthis_close();
};
//Function called when wanting to map a button to ONE service. ie: twitter
function doShareService(url, title, service){


	url = encodeURIComponent(url);
	if(title){
		title = encodeURIComponent(title);
	}else{
		title = url;
	}
	var addThisUrl = "http://www.addthis.com/bookmark.php?v=250&winname=addthis&pub=officialCSI&source=men-250&lng=&s="+service+"&url="+url+"&title="+title;
	
	var agent = navigator.userAgent.toLowerCase();
	var is_safari = ((agent.indexOf('safari')!=-1));
	//if(service == "email"){
	//	doShareClick(url, title);
	//}else{
		if (is_safari) {
			window.location = addThisUrl;
		}else{
			window.open(addThisUrl, "_blank");
		}
	//}	
}
//Function called when wanting email service ONLY in PopUp
function doEmail(url, title){
	var z = document.getElementById("addthis");
	return addthis_open(z, 'email', url, title)
};


;function wheel(event) {
	if( document.getElementById("flashcontent").mouseWheelEvent ) {
		var delta = 0;

		if (!event)
			event = window.event;

		if (event.wheelDelta) {
			delta = event.wheelDelta/120;

			if (window.opera)
				delta = -delta;
		} else if (event.detail) {
			delta = -event.detail/3;
		}

		if(delta) {
			document.getElementById("flashcontent").mouseWheelEvent(delta);
			//document.getElementById("map").mouseWheelEvent(delta);
		}
	}
}

if (window.addEventListener)
{
	window.addEventListener('DOMMouseScroll', wheel, false);
}

window.onmousewheel = document.onmousewheel = wheel;

function scrollE(event) {
	if( document.getElementById("flashcontent").scrollEvent ) {
		document.getElementById("flashcontent").scrollEvent( f_clientWidth(), f_clientHeight(), f_scrollLeft(), f_scrollTop() );
	}
}

if(window.addEventListener) // Firefox 1+, Opera 9, Safari 3+, etc.
{
	window.addEventListener("scroll", scrollE, false);
}
else if(document.addEventListener) // Opera 7, Opera 8
{
	document.addEventListener("scroll", scrollE, false);
}
else if("onscroll" in self) // MSIE 6, 7 and MSIE 8
{
	self.onscroll = scrollE;
}


function f_clientWidth() {
	return f_filterResults (
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
	);
}
function f_clientHeight() {
	return f_filterResults (
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
	);
}
function f_scrollLeft() {
	return f_filterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function f_scrollTop() {
	return f_filterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function f_filterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

;/** * SWFAddress 2.4: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/> * * SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> * */if(typeof asual=="undefined"){var asual={}}if(typeof asual.util=="undefined"){asual.util={}}asual.util.Browser=new function(){var b=navigator.userAgent.toLowerCase(),a=/webkit/.test(b),e=/opera/.test(b),c=/msie/.test(b)&&!/opera/.test(b),d=/mozilla/.test(b)&&!/(compatible|webkit)/.test(b),f=parseFloat(c?b.substr(b.indexOf("msie")+4):(b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]);this.toString=function(){return"[class Browser]"};this.getVersion=function(){return f};this.isMSIE=function(){return c};this.isSafari=function(){return a};this.isOpera=function(){return e};this.isMozilla=function(){return d}};asual.util.Events=new function(){var c="DOMContentLoaded",j="onstop",k=window,h=document,b=[],a=asual.util,e=a.Browser,d=e.isMSIE(),g=e.isSafari();this.toString=function(){return"[class Events]"};this.addListener=function(n,l,m){b.push({o:n,t:l,l:m});if(!(l==c&&(d||g))){if(n.addEventListener){n.addEventListener(l,m,false)}else{if(n.attachEvent){n.attachEvent("on"+l,m)}}}};this.removeListener=function(p,m,n){for(var l=0,o;o=b[l];l++){if(o.o==p&&o.t==m&&o.l==n){b.splice(l,1);break}}if(!(m==c&&(d||g))){if(p.removeEventListener){p.removeEventListener(m,n,false)}else{if(p.detachEvent){p.detachEvent("on"+m,n)}}}};var i=function(){for(var m=0,l;l=b[m];m++){if(l.t!=c){a.Events.removeListener(l.o,l.t,l.l)}}};var f=function(){if(h.readyState=="interactive"){function l(){h.detachEvent(j,l);i()}h.attachEvent(j,l);k.setTimeout(function(){h.detachEvent(j,l)},0)}};if(d||g){(function(){try{if((d&&h.body)||!/loaded|complete/.test(h.readyState)){h.documentElement.doScroll("left")}}catch(m){return setTimeout(arguments.callee,0)}for(var l=0,m;m=b[l];l++){if(m.t==c){m.l.call(null)}}})()}if(d){k.attachEvent("onbeforeunload",f)}this.addListener(k,"unload",i)};asual.util.Functions=new function(){this.toString=function(){return"[class Functions]"};this.bind=function(f,b,e){for(var c=2,d,a=[];d=arguments[c];c++){a.push(d)}return function(){return f.apply(b,a)}}};var SWFAddressEvent=function(d){this.toString=function(){return"[object SWFAddressEvent]"};this.type=d;this.target=[SWFAddress][0];this.value=SWFAddress.getValue();this.path=SWFAddress.getPath();this.pathNames=SWFAddress.getPathNames();this.parameters={};var c=SWFAddress.getParameterNames();for(var b=0,a=c.length;b<a;b++){this.parameters[c[b]]=SWFAddress.getParameter(c[b])}this.parameterNames=c};SWFAddressEvent.INIT="init";SWFAddressEvent.CHANGE="change";SWFAddressEvent.INTERNAL_CHANGE="internalChange";SWFAddressEvent.EXTERNAL_CHANGE="externalChange";var SWFAddress=new function(){var _getHash=function(){var index=_l.href.indexOf("#");return index!=-1?_ec(_dc(_l.href.substr(index+1))):""};var _getWindow=function(){try{top.document;return top}catch(e){return window}};var _strictCheck=function(value,force){if(_opts.strict){value=force?(value.substr(0,1)!="/"?"/"+value:value):(value==""?"/":value)}return value};var _ieLocal=function(value,direction){return(_msie&&_l.protocol=="file:")?(direction?_value.replace(/\?/,"%3F"):_value.replace(/%253F/,"?")):value};var _searchScript=function(el){if(el.childNodes){for(var i=0,l=el.childNodes.length,s;i<l;i++){if(el.childNodes[i].src){_url=String(el.childNodes[i].src)}if(s=_searchScript(el.childNodes[i])){return s}}}};var _titleCheck=function(){if(_d.title!=_title&&_d.title.indexOf("#")!=-1){_d.title=_title}};var _listen=function(){if(!_silent){var hash=_getHash();var diff=!(_value==hash);if(_safari&&_version<523){if(_length!=_h.length){_length=_h.length;if(typeof _stack[_length-1]!=UNDEFINED){_value=_stack[_length-1]}_update.call(this,false)}}else{if(_msie&&diff){if(_version<7){_l.reload()}else{this.setValue(hash)}}else{if(diff){_value=hash;_update.call(this,false)}}}if(_msie){_titleCheck.call(this)}}};var _bodyClick=function(e){if(_popup.length>0){var popup=window.open(_popup[0],_popup[1],eval(_popup[2]));if(typeof _popup[3]!=UNDEFINED){eval(_popup[3])}}_popup=[]};var _swfChange=function(){for(var i=0,id,obj,value=SWFAddress.getValue(),setter="setSWFAddressValue";id=_ids[i];i++){obj=document.getElementById(id);if(obj){if(obj.parentNode&&typeof obj.parentNode.so!=UNDEFINED){obj.parentNode.so.call(setter,value)}else{if(!(obj&&typeof obj[setter]!=UNDEFINED)){var objects=obj.getElementsByTagName("object");var embeds=obj.getElementsByTagName("embed");obj=((objects[0]&&typeof objects[0][setter]!=UNDEFINED)?objects[0]:((embeds[0]&&typeof embeds[0][setter]!=UNDEFINED)?embeds[0]:null))}if(obj){obj[setter](value)}}}else{if(obj=document[id]){if(typeof obj[setter]!=UNDEFINED){obj[setter](value)}}}}};var _jsDispatch=function(type){this.dispatchEvent(new SWFAddressEvent(type));type=type.substr(0,1).toUpperCase()+type.substr(1);if(typeof this["on"+type]==FUNCTION){this["on"+type]()}};var _jsInit=function(){if(_util.Browser.isSafari()){_d.body.addEventListener("click",_bodyClick)}_jsDispatch.call(this,"init")};var _jsChange=function(){_swfChange();_jsDispatch.call(this,"change")};var _update=function(internal){_jsChange.call(this);if(internal){_jsDispatch.call(this,"internalChange")}else{_jsDispatch.call(this,"externalChange")}_st(_functions.bind(_track,this),10)};var _track=function(){var value=(_l.pathname+(/\/$/.test(_l.pathname)?"":"/")+this.getValue()).replace(/\/\//,"/").replace(/^\/$/,"");var fn=_t[_opts.tracker];if(typeof fn==FUNCTION){fn(value)}else{if(typeof _t.pageTracker!=UNDEFINED&&typeof _t.pageTracker._trackPageview==FUNCTION){_t.pageTracker._trackPageview(value)}else{if(typeof _t.urchinTracker==FUNCTION){_t.urchinTracker(value)}}}};var _htmlWrite=function(){var doc=_frame.contentWindow.document;doc.open();doc.write("<html><head><title>"+_d.title+"</title><script>var "+ID+' = "'+_getHash()+'";<\/script></head></html>');doc.close()};var _htmlLoad=function(){var win=_frame.contentWindow;var src=win.location.href;_value=(typeof win[ID]!=UNDEFINED?win[ID]:"");if(_value!=_getHash()){_update.call(SWFAddress,false);_l.hash=_ieLocal(_value,TRUE)}};var _load=function(){if(!_loaded){_loaded=TRUE;if(_msie&&_version<8){var frameset=_d.getElementsByTagName("frameset")[0];_frame=_d.createElement((frameset?"":"i")+"frame");if(frameset){frameset.insertAdjacentElement("beforeEnd",_frame);frameset[frameset.cols?"cols":"rows"]+=",0";_frame.src="javascript:false";_frame.noResize=true;_frame.frameBorder=_frame.frameSpacing=0}else{_frame.src="javascript:false";_frame.style.display="none";_d.body.insertAdjacentElement("afterBegin",_frame)}_st(function(){_events.addListener(_frame,"load",_htmlLoad);if(typeof _frame.contentWindow[ID]==UNDEFINED){_htmlWrite()}},50)}else{if(_safari){if(_version<418){_d.body.innerHTML+='<form id="'+ID+'" style="position:absolute;top:-9999px;" method="get"></form>';_form=_d.getElementById(ID)}if(typeof _l[ID]==UNDEFINED){_l[ID]={}}if(typeof _l[ID][_l.pathname]!=UNDEFINED){_stack=_l[ID][_l.pathname].split(",")}}}_st(_functions.bind(function(){_jsInit.call(this);_jsChange.call(this);_track.call(this)},this),1);if(_msie&&_version>=8){_d.body.onhashchange=_functions.bind(_listen,this);_si(_functions.bind(_titleCheck,this),50)}else{_si(_functions.bind(_listen,this),50)}}};var ID="swfaddress",FUNCTION="function",UNDEFINED="undefined",TRUE=true,FALSE=false,_util=asual.util,_browser=_util.Browser,_events=_util.Events,_functions=_util.Functions,_version=_browser.getVersion(),_msie=_browser.isMSIE(),_mozilla=_browser.isMozilla(),_opera=_browser.isOpera(),_safari=_browser.isSafari(),_supported=FALSE,_t=_getWindow(),_d=_t.document,_h=_t.history,_l=_t.location,_si=setInterval,_st=setTimeout,_dc=decodeURI,_ec=encodeURI,_frame,_form,_url,_title=_d.title,_length=_h.length,_silent=FALSE,_loaded=FALSE,_justset=TRUE,_juststart=TRUE,_ref=this,_stack=[],_ids=[],_popup=[],_listeners={},_value=_getHash(),_opts={history:TRUE,strict:TRUE};if(_msie&&_d.documentMode&&_d.documentMode!=_version){_version=_d.documentMode!=8?7:8}_supported=(_mozilla&&_version>=1)||(_msie&&_version>=6)||(_opera&&_version>=9.5)||(_safari&&_version>=312);if(_supported){if(_opera){history.navigationMode="compatible"}for(var i=1;i<_length;i++){_stack.push("")}_stack.push(_getHash());if(_msie&&_l.hash!=_getHash()){_l.hash="#"+_ieLocal(_getHash(),TRUE)}_searchScript(document);var _qi=_url?_url.indexOf("?"):-1;if(_qi!=-1){var param,params=_url.substr(_qi+1).split("&");for(var i=0,p;p=params[i];i++){param=p.split("=");if(/^(history|strict)$/.test(param[0])){_opts[param[0]]=(isNaN(param[1])?/^(true|yes)$/i.test(param[1]):(parseInt(param[1])!=0))}if(/^tracker$/.test(param[0])){_opts[param[0]]=param[1]}}}if(_msie){_titleCheck.call(this)}if(window==_t){_events.addListener(document,"DOMContentLoaded",_functions.bind(_load,this))}_events.addListener(_t,"load",_functions.bind(_load,this))}else{if((!_supported&&_l.href.indexOf("#")!=-1)||(_safari&&_version<418&&_l.href.indexOf("#")!=-1&&_l.search!="")){_d.open();_d.write('<html><head><meta http-equiv="refresh" content="0;url='+_l.href.substr(0,_l.href.indexOf("#"))+'" /></head></html>');_d.close()}else{_track()}}this.toString=function(){return"[class SWFAddress]"};this.back=function(){_h.back()};this.forward=function(){_h.forward()};this.up=function(){var path=this.getPath();this.setValue(path.substr(0,path.lastIndexOf("/",path.length-2)+(path.substr(path.length-1)=="/"?1:0)))};this.go=function(delta){_h.go(delta)};this.href=function(url,target){target=typeof target!=UNDEFINED?target:"_self";if(target=="_self"){self.location.href=url}else{if(target=="_top"){_l.href=url}else{if(target=="_blank"){window.open(url)}else{_t.frames[target].location.href=url}}}};this.popup=function(url,name,options,handler){try{var popup=window.open(url,name,eval(options));if(typeof handler!=UNDEFINED){eval(handler)}}catch(ex){}_popup=arguments};this.getIds=function(){return _ids};this.getId=function(index){return _ids[0]};this.setId=function(id){_ids[0]=id};this.addId=function(id){this.removeId(id);_ids.push(id)};this.removeId=function(id){for(var i=0;i<_ids.length;i++){if(id==_ids[i]){_ids.splice(i,1);break}}};this.addEventListener=function(type,listener){if(typeof _listeners[type]==UNDEFINED){_listeners[type]=[]}_listeners[type].push(listener)};this.removeEventListener=function(type,listener){if(typeof _listeners[type]!=UNDEFINED){for(var i=0,l;l=_listeners[type][i];i++){if(l==listener){break}}_listeners[type].splice(i,1)}};this.dispatchEvent=function(event){if(this.hasEventListener(event.type)){event.target=this;for(var i=0,l;l=_listeners[event.type][i];i++){l(event)}return TRUE}return FALSE};this.hasEventListener=function(type){return(typeof _listeners[type]!=UNDEFINED&&_listeners[type].length>0)};this.getBaseURL=function(){var url=_l.href;if(url.indexOf("#")!=-1){url=url.substr(0,url.indexOf("#"))}if(url.substr(url.length-1)=="/"){url=url.substr(0,url.length-1)}return url};this.getStrict=function(){return _opts.strict};this.setStrict=function(strict){_opts.strict=strict};this.getHistory=function(){return _opts.history};this.setHistory=function(history){_opts.history=history};this.getTracker=function(){return _opts.tracker};this.setTracker=function(tracker){_opts.tracker=tracker};this.getTitle=function(){return _d.title};this.setTitle=function(title){if(!_supported){return null}if(typeof title==UNDEFINED){return}if(title=="null"){title=""}title=_dc(title);_st(function(){_title=_d.title=title;if(_juststart&&_frame&&_frame.contentWindow&&_frame.contentWindow.document){_frame.contentWindow.document.title=title;_juststart=FALSE}if(!_justset&&_mozilla){_l.replace(_l.href.indexOf("#")!=-1?_l.href:_l.href+"#")}_justset=FALSE},10)};this.getStatus=function(){return _t.status};this.setStatus=function(status){if(!_supported){return null}if(typeof status==UNDEFINED){return}if(status=="null"){status=""}status=_dc(status);if(!_safari){status=_strictCheck((status!="null")?status:"",TRUE);if(status=="/"){status=""}if(!(/http(s)?:\/\//.test(status))){var index=_l.href.indexOf("#");status=(index==-1?_l.href:_l.href.substr(0,index))+"#"+status}_t.status=status}};this.resetStatus=function(){_t.status=""};this.getValue=function(){if(!_supported){return null}return _dc(_strictCheck(_ieLocal(_value,FALSE),FALSE))};this.setValue=function(value){if(!_supported){return null}if(typeof value==UNDEFINED){return}if(value=="null"){value=""}value=_ec(_dc(_strictCheck(value,TRUE)));if(value=="/"){value=""}if(_value==value){return}_justset=TRUE;_value=value;_silent=TRUE;_update.call(SWFAddress,true);_stack[_h.length]=_value;if(_safari){if(_opts.history){_l[ID][_l.pathname]=_stack.toString();_length=_h.length+1;if(_version<418){if(_l.search==""){_form.action="#"+_value;_form.submit()}}else{if(_version<523||_value==""){var evt=_d.createEvent("MouseEvents");evt.initEvent("click",TRUE,TRUE);var anchor=_d.createElement("a");anchor.href="#"+_value;anchor.dispatchEvent(evt)}else{_l.hash="#"+_value}}}else{_l.replace("#"+_value)}}else{if(_value!=_getHash()){if(_opts.history){_l.hash="#"+_dc(_ieLocal(_value,TRUE))}else{_l.replace("#"+_dc(_value))}}}if((_msie&&_version<8)&&_opts.history){_st(_htmlWrite,50)}if(_safari){_st(function(){_silent=FALSE},1)}else{_silent=FALSE}};this.getPath=function(){var value=this.getValue();if(value.indexOf("?")!=-1){return value.split("?")[0]}else{if(value.indexOf("#")!=-1){return value.split("#")[0]}else{return value}}};this.getPathNames=function(){var path=this.getPath(),names=path.split("/");if(path.substr(0,1)=="/"||path.length==0){names.splice(0,1)}if(path.substr(path.length-1,1)=="/"){names.splice(names.length-1,1)}return names};this.getQueryString=function(){var value=this.getValue(),index=value.indexOf("?");if(index!=-1&&index<value.length){return value.substr(index+1)}};this.getParameter=function(param){var value=this.getValue();var index=value.indexOf("?");if(index!=-1){value=value.substr(index+1);var p,params=value.split("&"),i=params.length,r=[];while(i--){p=params[i].split("=");if(p[0]==param){r.push(p[1])}}if(r.length!=0){return r.length!=1?r:r[0]}}};this.getParameterNames=function(){var value=this.getValue();var index=value.indexOf("?");var names=[];if(index!=-1){value=value.substr(index+1);if(value!=""&&value.indexOf("=")!=-1){var params=value.split("&"),i=0;while(i<params.length){names.push(params[i].split("=")[0]);i++}}}return names};this.onInit=null;this.onChange=null;this.onInternalChange=null;this.onExternalChange=null;(function(){var _args;if(typeof FlashObject!=UNDEFINED){SWFObject=FlashObject}if(typeof SWFObject!=UNDEFINED&&SWFObject.prototype&&SWFObject.prototype.write){var _s1=SWFObject.prototype.write;SWFObject.prototype.write=function(){_args=arguments;if(this.getAttribute("version").major<8){this.addVariable("$swfaddress",SWFAddress.getValue());((typeof _args[0]=="string")?document.getElementById(_args[0]):_args[0]).so=this}var success;if(success=_s1.apply(this,_args)){_ref.addId(this.getAttribute("id"))}return success}}if(typeof swfobject!=UNDEFINED){var _s2r=swfobject.registerObject;swfobject.registerObject=function(){_args=arguments;_s2r.apply(this,_args);_ref.addId(_args[0])};var _s2c=swfobject.createSWF;swfobject.createSWF=function(){_args=arguments;var swf=_s2c.apply(this,_args);if(swf){_ref.addId(_args[0].id)}return swf};var _s2e=swfobject.embedSWF;swfobject.embedSWF=function(){_args=arguments;if(typeof _args[8]==UNDEFINED){_args[8]={}}if(typeof _args[8].id==UNDEFINED){_args[8].id=_args[1]}_s2e.apply(this,_args);_ref.addId(_args[8].id)}}if(typeof UFO!=UNDEFINED){var _u=UFO.create;UFO.create=function(){_args=arguments;_u.apply(this,_args);_ref.addId(_args[0].id)}}if(typeof AC_FL_RunContent!=UNDEFINED){var _a=AC_FL_RunContent;AC_FL_RunContent=function(){_args=arguments;_a.apply(this,_args);for(var i=0,l=_args.length;i<l;i++){if(_args[i]=="id"){_ref.addId(_args[i+1])}}}}})()};;
// Fixes padding in the top menus.
$(document).ready(function() {
  $("#nice-menu-1 span li a").each(function(){
    var h = $(this).height();
    var p = $(this).parent("li").height() - h;
    $(this).css({paddingTop: parseInt(p/2), paddingBottom: parseInt(p/2)});
  });
});
;
