/****** jquery/jquery-1.3.2.min.js ******/

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

/****** /jquery/jquery.common.js ******/

/*
 * $Id: jquery.common.js 21795 2010-02-25 23:40:59Z mking $
 * Here go custom or open source functions that extend jquery, common to the site. Only light stuff should be put in here.
 */

jQuery.getScript = function(url, callbackFn, cache)
{
    jQuery.ajax({
        type: 'GET',
        url: url,
        success: callbackFn,
        dataType: 'script',
        cache: !!cache
    });
};

jQuery.preloadImages = function()
{
  for(var i = 0; i<arguments.length; i++)
  {
    jQuery("<img>").attr("src", arguments[i]);
  }
};

jQuery.empty = function(mixed_var) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philippe Baumann
    // +      input by: Onno Marsman
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: LH
    // +   improved by: Onno Marsman
    // +   improved by: Francesco
    // *     example 1: empty(null);
    // *     returns 1: true
    // *     example 2: empty(undefined);
    // *     returns 2: true
    // *     example 3: empty([]);
    // *     returns 3: true
    // *     example 4: empty({});
    // *     returns 4: true
    
    var key;
    
    if (mixed_var === ""
        || mixed_var === 0
        || mixed_var === "0"
        || mixed_var === null
        || mixed_var === false
        || mixed_var === undefined
    ){
        return true;
    }
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            if (typeof mixed_var[key] !== 'function' ) {
              return false;
            }
        }
        return true;
    }
    return false;
}

jQuery.fn.extend({
  scrollTo : function(speed, easing) {
    return this.each(function() {
      var targetOffset = $(this).offset().top;
      $('html,body').animate({scrollTop: targetOffset}, speed, easing);
    });
  }
});

/* ===========================================================================
 *
 * JQuery URL Parser
 * Version 1.0
 * Parses URLs and provides easy access to information within them.
 *
 * Author: Mark Perkins
 * Author email: mark@allmarkedup.com
 *
 * For full documentation and more go to http://projects.allmarkedup.com/jquery_url_parser/
 *
 * ---------------------------------------------------------------------------
 *
 * CREDITS:
 *
 * Parser based on the Regex-based URI parser by Stephen Levithian.
 * For more information (including a detailed explaination of the differences
 * between the 'loose' and 'strict' pasing modes) visit http://blog.stevenlevithan.com/archives/parseuri
 *
 * ---------------------------------------------------------------------------
 *
 * LICENCE:
 *
 * Released under a MIT Licence. See licence.txt that should have been supplied with this file,
 * or visit http://projects.allmarkedup.com/jquery_url_parser/licence.txt
 *
 * ---------------------------------------------------------------------------
 * 
 * EXAMPLES OF USE:
 *
 * Get the domain name (host) from the current page URL
 * jQuery.url.attr("host")
 *
 * Get the query string value for 'item' for the current page
 * jQuery.url.param("item") // null if it doesn't exist
 *
 * Get the second segment of the URI of the current page
 * jQuery.url.segment(2) // null if it doesn't exist
 *
 * Get the protocol of a manually passed in URL
 * jQuery.url.setUrl("http://allmarkedup.com/").attr("protocol") // returns 'http'
 *
 */
jQuery.url=function(){var segments={};var parsed={};var options={url:window.location,strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};var parseUri=function(){str=decodeURI(options.url);var m=options.parser[options.strictMode?"strict":"loose"].exec(str);var uri={};var i=14;while(i--){uri[options.key[i]]=m[i]||"";}uri[options.q.name]={};uri[options.key[12]].replace(options.q.parser,function($0,$1,$2){if($1){uri[options.q.name][$1]=$2;}});return uri;};var key=function(key){if(!parsed.length){setUp();}if(key=="base"){if(parsed.port!==null&&parsed.port!==""){return parsed.protocol+"://"+parsed.host+":"+parsed.port+"/";}else
{return parsed.protocol+"://"+parsed.host+"/";}}return(parsed[key]==="")?null:parsed[key];};var param=function(item){if(!parsed.length){setUp();}return(parsed.queryKey[item]===null)?null:parsed.queryKey[item];};var setUp=function(){parsed=parseUri();getSegments();};var getSegments=function(){var p=parsed.path;segments=[];segments=parsed.path.length==1?{}:(p.charAt(p.length-1)=="/"?p.substring(1,p.length-1):path=p.substring(1)).split("/");};return{setMode:function(mode){strictMode=mode=="strict"?true:false;return this;},setUrl:function(newUri){options.url=newUri===undefined?window.location:newUri;setUp();return this;},segment:function(pos){if(!parsed.length){setUp();}if(pos===undefined){return segments.length;}return(segments[pos]===""||segments[pos]===undefined)?null:segments[pos];},attr:key,param:param};}();

/**
 * jQuery-Plugin "preloadCssImages"
 * by Scott Jehl, scott@filamentgroup.com
 * http://www.filamentgroup.com
 * reference article: http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/
 * demo page: http://www.filamentgroup.com/examples/preloadImages/index_v2.php
 * 
 * Copyright (c) 2008 Filament Group, Inc
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 *
 * Version: 5.0, 10.31.2008 / MODIFIED BY ADAM LEVASSEUR @ EXPOTV.COM
 * Changelog:
 *  02.20.2008 initial Version 1.0
 *    06.04.2008 Version 2.0 : removed need for any passed arguments. Images load from any and all directories.
 *    06.21.2008 Version 3.0 : Added options for loading status. Fixed IE abs image path bug (thanks Sam Pohlenz).
 *    07.24.2008 Version 4.0 : Added support for @imported CSS (credit: http://marcarea.com/). Fixed support in Opera as well. 
 *    10.31.2008 Version: 5.0 : Many feature and performance enhancements from trixta
 * --------------------------------------------------------------------
 */


$.preloadCssImages = function(settings){
    settings = jQuery.extend({
        statusTextEl: null,
        statusBarEl: null,
        errorDelay: 999, // handles 404-Errors in IE
        simultaneousCacheLoading: 2
    }, settings);
    
    var allImgs = [],
        loaded = 0,
        imgUrls = [],
        thisSheetRules, 
        errorTimer;
    
    function onImgComplete(){
        clearTimeout(errorTimer);
        if (imgUrls && imgUrls.length && imgUrls[loaded]) {
            loaded++;
            if (settings.statusTextEl) {
                var nowloading = (imgUrls[loaded]) ? 
                    'Now Loading: <span>' + imgUrls[loaded].split('/')[imgUrls[loaded].split('/').length - 1] : 
                    'Loading complete'; // wrong status-text bug fixed
                jQuery(settings.statusTextEl).html('<span class="numLoaded">' + loaded + '</span> of <span class="numTotal">' + imgUrls.length + '</span> loaded (<span class="percentLoaded">' + (loaded / imgUrls.length * 100).toFixed(0) + '%</span>) <span class="currentImg">' + nowloading + '</span></span>');
            }
            if (settings.statusBarEl) {
                var barWidth = jQuery(settings.statusBarEl).width();
                jQuery(settings.statusBarEl).css('background-position', -(barWidth - (barWidth * loaded / imgUrls.length).toFixed(0)) + 'px 50%');
            }
            loadImgs();
        }
    }
    
    function loadImgs(){
        //only load 1 image at the same time / most browsers can only handle 2 http requests, 1 should remain for user-interaction (Ajax, other images, normal page requests...)
        // otherwise set simultaneousCacheLoading to a higher number for simultaneous downloads
        if(imgUrls && imgUrls.length && imgUrls[loaded]){
            var img = new Image(); //new img obj
            img.src = imgUrls[loaded];  //set src either absolute or rel to css dir
            if(!img.complete){
                jQuery(img).bind('error load onreadystatechange', onImgComplete);
            } else {
                onImgComplete();
            }
            errorTimer = setTimeout(onImgComplete, settings.errorDelay); // handles 404-Errors in IE
        }
    }
    
    function parseCSS(sheets, urls) {
        var w3cImport = false,
            imported = [],
            importedSrc = [],
            baseURL;
        var sheetIndex = sheets.length;
        while(sheetIndex--){//loop through each stylesheet
            
            var cssPile = '';//create large string of all css rules in sheet
            
            if(urls && urls[sheetIndex]){
                baseURL = urls[sheetIndex];
            } else {
                var csshref = (sheets[sheetIndex].href) ? sheets[sheetIndex].href : 'window.location.href';
                if (csshref.match(/^https?:\/\//)) continue;
                var baseURLarr = csshref.split('/');//split href at / to make array
                baseURLarr.pop();//remove file path from baseURL array
                baseURL = baseURLarr.join('/');//create base url for the images in this sheet (css file's dir)
                if (baseURL) {
                    baseURL += '/'; //tack on a / if needed
                }
            }
            if(sheets[sheetIndex].cssRules || sheets[sheetIndex].rules){
                thisSheetRules = (sheets[sheetIndex].cssRules) ? //->>> http://www.quirksmode.org/dom/w3c_css.html
                    sheets[sheetIndex].cssRules : //w3
                    sheets[sheetIndex].rules; //ie 
                var ruleIndex = thisSheetRules.length;
                while(ruleIndex--){
                    if(thisSheetRules[ruleIndex].style && thisSheetRules[ruleIndex].style.cssText){
                        var text = thisSheetRules[ruleIndex].style.cssText;
                        if(text.toLowerCase().indexOf('url') != -1){ // only add rules to the string if you can assume, to find an image, speed improvement
                            cssPile += text; // thisSheetRules[ruleIndex].style.cssText instead of thisSheetRules[ruleIndex].cssText is a huge speed improvement
                        }
                    } else if(thisSheetRules[ruleIndex].styleSheet) {
                        imported.push(thisSheetRules[ruleIndex].styleSheet);
                        w3cImport = true;
                    }
                    
                }
            }
            //parse cssPile for image urls
            var tmpImage = cssPile.match(/[^\("]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename" / '"' for opera-bugfix
            if(tmpImage){
                var i = tmpImage.length;
                while(i--){ // handle baseUrl here for multiple stylesheets in different folders bug
                    var imgSrc = (tmpImage[i].charAt(0) == '/' || tmpImage[i].match('://')) ? // protocol-bug fixed
                        tmpImage[i] : 
                        baseURL + tmpImage[i];
                    
                    if(jQuery.inArray(imgSrc, imgUrls) == -1){
                        imgUrls.push(imgSrc);
                    }
                }
            }
            
            if(!w3cImport && sheets[sheetIndex].imports && sheets[sheetIndex].imports.length) {
                for(var iImport = 0, importLen = sheets[sheetIndex].imports.length; iImport < importLen; iImport++){
                    var iHref = sheets[sheetIndex].imports[iImport].href;
                    iHref = iHref.split('/');
                    iHref.pop();
                    iHref = iHref.join('/');
                    if (iHref) {
                        iHref += '/'; //tack on a / if needed
                    }
                    var iSrc = (iHref.charAt(0) == '/' || iHref.match('://')) ? // protocol-bug fixed
                        iHref : 
                        baseURL + iHref;
                    
                    importedSrc.push(iSrc);
                    imported.push(sheets[sheetIndex].imports[iImport]);
                }
                
                
            }
        }//loop
        if(imported.length){
            parseCSS(imported, importedSrc);
            return false;
        }
        var downloads = settings.simultaneousCacheLoading;
        while( downloads--){
            setTimeout(loadImgs, downloads);
        }
    }
    parseCSS(document.styleSheets);
    return imgUrls;
};

/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *

 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 *

 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options.expires = -1;
        }
        var expires = '';
        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
            var date;
            if (typeof options.expires == 'number') {
                date = new Date();
                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
            } else {
                date = options.expires;
            }
            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
        }
        // CAUTION: Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};

(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return $.quoteString(o);if(type=='object')
{if(typeof o.toJSON=="function")
return $.toJSON(o.toJSON());if(o.constructor===Date)
{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array)
{var ret=[];for(var i=0;i<o.length;i++)
ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);return eval("("+src+")");};$.secureEvalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
{if(string.match(_escapeable))
{return'"'+string.replace(_escapeable,function(a)
{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);

/*  
    Watermark plugin for jQuery
    Version: 3.0.1
    http://jquery-watermark.googlecode.com/

    Copyright (c) 2009 Todd Northrop
    http://www.speednet.biz/
    
    September 11, 2009

    Requires:  jQuery 1.2.3+
    
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be
    included in all copies or substantial portions of the Software.
    
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
------------------------------------------------------*/

(function ($) {
var
    // Will speed up references to undefined
    undefined,

    // String constants for data names
    dataFlag = "watermark",
    dataClass = "watermarkClass",
    dataFocus = "watermarkFocus",
    dataFormSubmit = "watermarkSubmit",
    dataMaxLen = "watermarkMaxLength",
    dataPassword = "watermarkPassword",
    dataText = "watermarkText",
    
    // Includes only elements with watermark defined
    selWatermarkDefined = ":data(" + dataFlag + ")",

    // Includes only elements capable of having watermark
    selWatermarkAble = ":text,:password,textarea";

	$.extend($.expr[":"], {
    "data": function (element, index, matches, set) {
        var data, parts = /^((?:[^=!^$*]|[!^$*](?!=))+)(?:([!^$*]?=)(.*))?$/.exec(matches[3]);
        if (parts) {
            data = $(element).data(parts[1]);
            
            if (data !== undefined) {

                if (parts[2]) {
                    data = "" + data;
                
                    switch (parts[2]) {
                        case "=":
                            return (data == parts[3]);
                        case "!=":
                            return (data != parts[3]);
                        case "^=":
                            return (data.slice(0, parts[3].length) == parts[3]);
                        case "$=":
                            return (data.slice(-parts[3].length) == parts[3]);
                        case "*=":
                            return (data.indexOf(parts[3]) !== -1);
                    }
                }

                return true;
            }
        }
        
        return false;
    }
});

$.watermark = {

    // Current version number of the plugin
    version: "3.0",

    // Default options used when watermarks are instantiated.
    // Can be changed to affect the default behavior for all
    // new or updated watermarks.
    // BREAKING CHANGE:  The $.watermark.className
    // property that is present in all previous versions must now
    // be referenced as $.watermark.options.className
    options: {
        
        // Default class name for all watermarks
        className: "watermark",
        
        // If true, plugin will detect and use native browser support for
        // watermarks, if available. (e.g., WebKit's placeholder attribute.)
        useNative: true
    },
    
    // Hide one or more watermarks by specifying any selector type
    // i.e., DOM element, string selector, jQuery matched set, etc.
    hide: function (selector) {
        $(selector).filter(selWatermarkDefined).each(
            function () {
                $.watermark._hide($(this));
            }
        );
    },
    
    // Internal use only.
    _hide: function ($input, focus) {
    
        if ($input.val() == $input.data(dataText)) {
            $input.val("");
            
            // Password type?
            if ($input.data(dataPassword)) {
                
                if ($input.attr("type") === "text") {
                    var $pwd = $input.data(dataPassword), 
                        $wrap = $input.parent();
                        
                    $wrap[0].removeChild($input[0]); // Can't use jQuery methods, because they destroy data
                    $wrap[0].appendChild($pwd[0]);
                    $input = $pwd;
                }
            }
            
            if ($input.data(dataMaxLen)) {
                $input.attr("maxLength", $input.data(dataMaxLen));
                $input.removeData(dataMaxLen);
            }
        
            if (focus) {
                $input.attr("autocomplete", "off");  // Avoid NS_ERROR_XPC_JS_THREW_STRING error in Firefox
                window.setTimeout(
                    function () {
                        $input.select();  // Fix missing cursor in IE
                    }
                , 0);
            }
        }
        
        $input.removeClass($input.data(dataClass));
    },
    
    // Display one or more watermarks by specifying any selector type
    // i.e., DOM element, string selector, jQuery matched set, etc.
    // If conditions are not right for displaying a watermark, ensures that watermark is not shown.
    show: function (selector) {
        $(selector).filter(selWatermarkDefined).each(
            function () {
                $.watermark._show($(this));
            }
        );
    },
    
    // Internal use only.
    _show: function ($input) {
        var val = $input.val(), text = $input.data(dataText), type = $input.attr("type");

        if (((val.length == 0) || (val == text)) && (!$input.data(dataFocus))) {
        
            // Password type?
            if ($input.data(dataPassword)) {
                
                if (type === "password") {
                    var $wm = $input.data(dataPassword),
                        $wrap = $input.parent();
                        
                    $wrap[0].removeChild($input[0]); // Can't use jQuery methods, because they destroy data
                    $wrap[0].appendChild($wm[0]);
                    $input = $wm;
                    $input.attr("maxLength", text.length);
                }
            }
        
            // Ensure maxLength big enough to hold watermark (input of type="text" or type="search" only)
            if ((type === "text") || (type === "search")) {
                var maxLen = $input.attr("maxLength");
                
                if ((maxLen > 0) && (text.length > maxLen)) {
                    $input.data(dataMaxLen, maxLen);
                    $input.attr("maxLength", text.length);
                }
            }
            
            $input.addClass($input.data(dataClass));
            $input.val(text);
        }
        else {
            $.watermark._hide($input);
        }
    },
    
    // Hides all watermarks on the current page.
    hideAll: function () {
        $.watermark.hide(selWatermarkAble);
    },
    
    // Displays all watermarks on the current page.
    showAll: function () {
        $.watermark.show(selWatermarkAble);
    }
};

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

// MODDED: fixed IE7 bug in the override submit function.
$.fn.watermark = function (text, options) {
    /// <summary>
    ///     Set watermark text and class name on all input elements of type="text/password/search" and
    ///     textareas within the matched set. If className is not specified in options, the default is
    ///     "watermark". Within the matched set, only input elements with type="text/password/search"
    ///     and textareas are affected; all other elements are ignored.
    /// </summary>
    /// <returns type="jQuery">
    ///     Returns the original jQuery matched set (not just the input and texarea elements).
    /// </returns>
    /// <param name="text" type="String">
    ///     Text to display as a watermark when the input or textarea element has an empty value and does not
    ///     have focus. The first time watermark() is called on an element, if this argument is empty (or not
    ///     a String type), then the watermark will have the net effect of only changing the class name when
    ///     the input or textarea element's value is empty and it does not have focus.
    /// </param>
    /// <param name="options" type="Object" optional="true">
    ///     Provides the ability to override the default watermark options ($.watermark.options). For backward
    ///     compatibility, if a string value is supplied, it is used as the class name that overrides the class
    ///     name in $.watermark.options.className. Properties include:
    ///         className: When the watermark is visible, the element will be styled using this class name.
    ///         useNative (Boolean or Function): Specifies if native browser support for watermarks will supersede
    ///             plugin functionality. If useNative is a function, the return value from the function will
    ///             determine if native support is used. The function is passed one argument -- a jQuery object
    ///             containing the element being tested as the only element in its matched set -- and the DOM
    ///             element being tested is the object on which the function is invoked (the value of "this").
    /// </param>
    /// <remarks>
    ///     The effect of changing the text and class name on an input element is called a watermark because
    ///     typically light gray text is used to provide a hint as to what type of input is required. However,
    ///     the appearance of the watermark can be something completely different: simply change the CSS style
    ///     pertaining to the supplied class name.
    ///     
    ///     The first time watermark() is called on an element, the watermark text and class name are initialized,
    ///     and the focus and blur events are hooked in order to control the display of the watermark.  Also, as
    ///     of version 3.0, drag and drop events are hooked to guard against dropped text being appended to the
    ///     watermark.  If native watermark support is provided by the browser, it is detected and used, unless
    ///     the useNative option is set to false.
    ///     
    ///     Subsequently, watermark() can be called again on an element in order to change the watermark text
    ///     and/or class name, and it can also be called without any arguments in order to refresh the display.
    ///     
    ///     For example, after changing the value of the input or textarea element programmatically, watermark()
    ///     should be called without any arguments to refresh the display, because the change event is only
    ///     triggered by user actions, not by programmatic changes to an input or textarea element's value.
    ///     
    ///     The one exception to programmatic updates is for password input elements:  you are strongly cautioned
    ///     against changing the value of a password input element programmatically (after the page loads).
    ///     The reason is that some fairly hairy code is required behind the scenes to make the watermarks bypass
    ///     IE security and switch back and forth between clear text (for watermarks) and obscured text (for
    ///     passwords).  It is *possible* to make programmatic changes, but it must be done in a certain way, and
    ///     overall it is not recommended.
    /// </remarks>
    
    var hasText = (typeof(text) === "string"), hasClass;
    
    if (typeof(options) === "object") {
        hasClass = (typeof(options.className) === "string");
        options = $.extend({}, $.watermark.options, options);
    }
    else if (typeof(options) === "string") {
        hasClass = true;
        options = $.extend({}, $.watermark.options, {className: options});
    }
    else {
        options = $.watermark.options;
    }
    
    if (typeof(options.useNative) !== "function") {
        options.useNative = options.useNative? function () { return true; } : function () { return false; };
    }
    
    return this.each(
        function () {
            var $input = $(this);
            
            if (!$input.is(selWatermarkAble)) {
                return;
            }
            
            // Watermark already initialized?
            if ($input.data(dataFlag)) {
            
                // If re-defining text or class, first remove existing watermark, then make changes
                if (hasText || hasClass) {
                    $.watermark._hide($input);
            
                    if (hasText) {
                        $input.data(dataText, text);
                    }
                    
                    if (hasClass) {
                        $input.data(dataClass, options.className);
                    }
                }
            }
            else {
            
                // Detect and use native browser support, if enabled in options
                if (options.useNative.call(this, $input)) {
                    
                    // Placeholder attribute (WebKit)
                    // Big thanks to Opera for the wacky test required
                    if ((("" + $input.css("-webkit-appearance")).replace("undefined", "") !== "") && ($input.attr("tagName") !== "TEXTAREA")) {
                        
                        // className is not set because WebKit doesn't appear to have
                        // a separate class name property for placeholders (watermarks).
                        if (hasText) {
                            $input.attr("placeholder", text);
                        }
                        
                        // Only set data flag for non-native watermarks (purposely commented-out)
                        // $input.data(dataFlag, 1);
                        return;
                    }
                }
                
                $input.data(dataText, hasText? text : "");
                $input.data(dataClass, options.className);
                $input.data(dataFlag, 1); // Flag indicates watermark was initialized
                
                // Special processing for password type
                if ($input.attr("type") === "password") {
                    var $wrap = $input.wrap("<span>").parent();
                    var $wm = $($wrap.html().replace(/type=["']?password["']?/i, 'type="text"'));
                    
                    $wm.data(dataText, $input.data(dataText));
                    $wm.data(dataClass, $input.data(dataClass));
                    $wm.data(dataFlag, 1);
                    $wm.attr("maxLength", text.length);
                    
                    $wm.focus(
                        function () {
                            $.watermark._hide($wm, true);
                        }
                    ).bind("dragenter",
                        function () {
                            $.watermark._hide($wm);
                        }
                    ).bind("dragend",
                        function () {
                            window.setTimeout(function () { $wm.blur(); }, 1);
                        }
                    );
                    $input.blur(
                        function () {
                            $.watermark._show($input);
                        }
                    ).bind("dragleave",
                        function () {
                            $.watermark._show($input);
                        }
                    );
                    
                    $wm.data(dataPassword, $input);
                    $input.data(dataPassword, $wm);
                }
                else {
                    
                    $input.focus(
                        function () {
                            $input.data(dataFocus, 1);
                            $.watermark._hide($input, true);
                        }
                    ).blur(
                        function () {
                            $input.data(dataFocus, 0);
                            $.watermark._show($input);
                        }
                    ).bind("dragenter",
                        function () {
                            $.watermark._hide($input);
                        }
                    ).bind("dragleave",
                        function () {
                            $.watermark._show($input);
                        }
                    ).bind("dragend",
                        function () {
                            window.setTimeout(function () { $.watermark._show($input); }, 1);
                        }
                    ).bind("drop",
                        // Firefox makes this lovely function necessary because the dropped text
                        // is merged with the watermark before the drop event is called.
                        function (evt) {
                            var dropText = evt.originalEvent.dataTransfer.getData("Text");
                            
                            if ($input.val().replace(dropText, "") === $input.data(dataText)) {
                                $input.val(dropText);
                            }
                            
                            $input.focus();
                        }
                    );
                }
                
                // In order to reliably clear all watermarks before form submission,
                // we need to replace the form's submit function with our own
                // function.  Otherwise watermarks won't be cleared when the form
                // is submitted programmatically.
                
                var $form = $(this.form);
                
                if (!$form.data(dataFormSubmit)) {
                    $form.data(dataFormSubmit, this.form.submit);
                    $form.submit($.watermark.hideAll);
                    
                    /*this.form.submit = function () {
                        var nativeSubmit = $form.data(dataFormSubmit);
                        
                        
                        if (nativeSubmit.apply) {
                            nativeSubmit.apply($form[0], arguments);
                        }
                        else {
                            nativeSubmit();
                        }
                    };*/
                    
                    $form.bindIntoStack(0, 'submit', function()
                    {
                        $.watermark.hideAll();
                    });
                    
                }
            }
            
            $.watermark._show($input);
        }
    ).end();
};

})(jQuery);


/*!
 * jStack - jQuery Event Stack Management
 * by Eric Garside (http://eric.garside.name) FROM: http://snipplr.com/view/13515/jstack--jquery-event-stack-management/
 * 
 * Dual licensed under:
 *  MIT: http://www.opensource.org/licenses/mit-license.php
 *  GPLv3: http://www.opensource.org/licenses/gpl-3.0.html
 */
(function($){$.extend($.fn,{cachePosition:function(){return $.data(this[0]);},bindIntoStack:function(pos,type,func){return this.each(function(){var namespaces=type.split("."),evType=namespaces.shift(),el=$(this),position=el.cachePosition();if(!position)return;var cache=$.cache[position];el.bind(type,func);if(!cache||!cache.events||!cache.events[evType])return;var events=cache.events[evType],fromExpando=[],toReplace=null,i=0;$.each(events,function(k){fromExpando.push(k);if(i==pos)toReplace=this;++i;})
if(!toReplace)return;var newPos=fromExpando.pop();$.cache[position].events[evType][fromExpando[pos]]=$.cache[position].events[evType][newPos];$.cache[position].events[evType][newPos]=toReplace;})
return this;}});})(jQuery);;

/****** /utils/common.js ******/

/**
 * $Id: common.js 21265 2010-01-28 17:16:31Z mking $
 * @author alevasseur-arribas
 */
if (typeof console == "undefined") { var console = {}; console.log = function(){}; } //fail silently in IE         
if (typeof EXPOTV == "undefined") { var EXPOTV = {}; }

$U = EXPOTV.utils = new function()
{
	var self = this;
	
	this.init = function()
	{
		/* IE6 background-image cache fix: force background-image cache*/
		try {
		  document.execCommand("BackgroundImageCache", false, true);
		} catch(err) {}
		
		self.initNavbar();
		self.initSearchBox();
		self.initShrinkByWidth();
		self.initWatermarks();
		//$.preloadCssImages();
	};
	
	/*
	 * Pre-init functions:
	 *  These are to be called from the html as soon as that section of the html is loaded.
	 */
	     
    this.preInitQuickLogin = function()
    {
        var $quickLoginWrap = $('.quick-login-wrap');
        var $loginText = $('.login-text');
        
        $quickLoginWrap.find('input[name=username]').watermark('Username');
        $quickLoginWrap.find('input[name=password]').watermark('Password');
            
        $('#loginBar a.loginLink').one('click', function(e)
        {
            e.preventDefault();
            $loginText.css('display', 'none');
            $quickLoginWrap
                .css('display', 'inline')
                .find('input:first').focus();
            
            $(this).click(function(e)
            {
                e.preventDefault();
                $quickLoginWrap.find('form').submit();
            });
        });
    };
    
    this.preInitSearch = function()
    {
    	var $search = $('.search');
    	$search.find('input[name=query]').watermark('Search by product name or brand...');
    }
	
	/////////////////////////
	
	this.initShrinkByWidth = function()
	{
        $(".shrinkByWidth").each(function() {
            var targetWidth = $(this).parent(':first').width();
            
            if (isNaN(parseInt($(this).css("font-size"))))
                $(this).css("font-size", '24px');
    
            while ($(this).width() > targetWidth) 
            {
                $(this).css("font-size", (parseInt($(this).css("font-size")) - 1) + 'px');
            }
        }); 
	};
	
    /* function to insert style sheet directly after title tag
     * the style sheet can then hide those elements that need to have events attached with js
     * Those elements can then be exposed using js after events are attached. */
	this.addHasJSStyleSheet = function(strUrl)
    {
        var strCssUrl = strUrl;
        var tempLink = document.createElement("link");
        tempLink.setAttribute("rel", "stylesheet");
        tempLink.setAttribute("type", "text/css");
        tempLink.setAttribute("href", strCssUrl);
        var titleEl = document.getElementsByTagName("title")[0];
        $('title:first').after(tempLink)
        //YAHOO.util.Dom.insertAfter(tempLink, titleEl);
    };
    
    /* function used for quick selectbox navigation */
    this.selectNavigationHandler = function()
    {
        var selectEl = this;
        var selectValueStr = selectEl.options[selectEl.selectedIndex].value;
        if (selectValueStr !== "null")
        {
            window.location.href = selectValueStr;
            return true;
        }
        return false;
    };
    
    this.rand = function()
    {
    	return Math.ceil(Math.random()*10000000000001);
    };
    
	this.isEventSupported = (function()
	{
		var TAGNAMES = 
		{
		    'select':'input','change':'input',
		    'submit':'form','reset':'form',
		    'error':'img','load':'img','abort':'img'
		}, 
        cache = { };
        
        function isEventSupported(eventName, element) 
        {
		    var canCache = (arguments.length == 1);
		    
		    if (eventName == 'beforeunload')
		    {
		    	element = typeof window.onbeforeunload != 'undefined' ? window : void 0;
		    }
		
		    // only return cached result when no element is given
		    if (canCache && cache[eventName]) {
		        return cache[eventName];
		    }
		
		    element = element || document.createElement(TAGNAMES[eventName] || 'div');
		    eventName = 'on' + eventName;
		
		    // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize"
		    // `in` "catches" those
		    var isSupported = (eventName in element);
		
		    if (!isSupported && element.setAttribute) {
		        element.setAttribute(eventName, 'return;');
		        isSupported = typeof element[eventName] == 'function';
		    }
		
		    element = null;
		    return canCache ? (cache[eventName] = isSupported) : isSupported;
        }
        return isEventSupported;
	})();
    
    this.getFormValues = function(form)
    {
    	var $form = (typeof(form) == 'string') ? $("#" + form) : form;
        var $fields = $form.find("input:not(:checkbox, :radio), input:checkbox:checked, " +
                                 "input:radio:checked, select, textarea");
        var formValuesObj = {};

        $fields.each(function()
        {
            var fieldName =  $(this).attr("name");
            var fieldValue = $(this).val();

            formValuesObj[fieldName] = fieldValue;
        });

        return formValuesObj;
    };
    
    this.getParam = function(param) // for when $.url doesn't work..
    {
        param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+param+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
        
        if( results == null )
          return null;
        else
            return results[1];
    }
    
    this.getPageSizeArray = function()
    {
        var xScroll, yScroll;
        
        if (window.innerHeight && window.scrollMaxY) 
        {  
            xScroll = document.body.scrollWidth;
            yScroll = window.innerHeight + window.scrollMaxY;
        } 
        else if (document.body.scrollHeight > document.body.offsetHeight) // all but Explorer Mac
        { 
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
        } 
        else // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari 
        { 
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
        }
        
        var windowWidth, windowHeight;
        if (self.innerHeight) // all except Explorer 
        { 
            windowWidth = self.innerWidth;
            windowHeight = self.innerHeight;
        } 
        else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode 
        { 
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
        } 
        else if (document.body) // other Explorers 
        {
            windowWidth = document.body.clientWidth;
            windowHeight = document.body.clientHeight;
        }   
        
        // for small pages with total height less then height of the viewport
        if(yScroll < windowHeight)
        {
            pageHeight = windowHeight;
        } 
        else 
        { 
            pageHeight = yScroll;
        }
    
        // for small pages with total width less then width of the viewport
        if(xScroll < windowWidth)
        {  
            pageWidth = windowWidth;
        }
        else 
        {
            pageWidth = xScroll;
        }
    
        arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
        return arrayPageSize;
    };
    
    this.getPageScrollArray = function()
    {
        var yScroll;
    
        if (self.pageYOffset) 
        {
            yScroll = self.pageYOffset;
        } 
        else if (document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict
        {  
            yScroll = document.documentElement.scrollTop;
        } 
        else if (document.body) // all other Explorers 
        {
            yScroll = document.body.scrollTop;
        }
    
        arrayPageScroll = new Array('',yScroll);
        return arrayPageScroll;
    };
	
	/* for top navbar dropdowns and selected states */
	this.initNavbar = function()
    {
		/* add rounded corners to first and last tab*/
		$('.menu-wrapper li').each(function(i){
			if($(this).is(':first-child')) $(this).find('a').addClass("top_left_round_5");
			if($(this).is(':last-child')) $(this).find('a').addClass("top_right_round_5");
		});
		
		
		/* find selected state*/
		var urlString = document.URL.split('.com')[1];
		$('.menu-wrapper li a').each(function(i)
		{
			var linkStr = $(this).attr("href");
			if(urlString.length == 1 && linkStr.length == 1){
				$(this).addClass("selected");
			}
			else if (urlString.match(linkStr) && linkStr.length > 1){
				$(this).addClass("selected");
			}
		});
				
		/* explore tab drop down */
        $(".explore").toggle(function()
        {
        	
        	$('.menu-wrapper').addClass("drop-down-active");
        	//$('.drop-down').css("display", 'block');
        	$(this).addClass('on');
        	$('.drop-down').hide().fadeIn('fast');
            
        },function()
        {
        	$('.menu-wrapper').removeClass("drop-down-active");
        	$('.drop-down').fadeOut('fast');
        	$(this).removeClass('on');
        });

        $(".close-dd").click(function()
		{
        	$('.menu-wrapper').removeClass("drop-down-active");
        	$('.drop-down').fadeOut('fast');
        	$(this).removeClass('on');
		});
    };
    
    this.initSearchBox = function()
    {
        var $searchBox = $('#txtHeaderSearchBox');
        var $extranet_srch = $('#SearchBox');
        
        if (!$searchBox.val())
        {
            //$searchBox.focus();
        }
        else
        {
        	$('#txtHeaderSearchBox').one('focus', function()
        	{
        		this.select();
        	});
        }
        /*
        if (!$extranet_srch.val())
        {
        }
        else
        {
        	$('#SearchBox').one('focus', function()
        	{
        		this.select();
        	});
        }*/
    };
    
    this.initWatermarks = function()
    {
        $('input.watermark').each(function(i)
        {
            var watermarkStr = $(this).attr('class').match(/watermark:'(.*)'/);
            
            if (watermarkStr && watermarkStr[1])
            {
                $(this).watermark(watermarkStr[1]);
            }
        });
    };
    
    this.showLoading = function()
    {
    	$('#pleaseWait').fadeIn('fast');
    };
    
    this.hideLoading = function()
    {
    	$('#pleaseWait').fadeOut('fast');
    };
    
	$(window).bind('ajaxError', function(ajaxError, xhr, etc)
	{
		self.hideLoading();
		console.log(ajaxError);
		console.log(xhr);
		console.log(etc);
	});
}

// Misc prototypes:
String.prototype.format = function()
{
    var txt = this;
    for (var i=0;i<arguments.length;i++)
    {
        var exp = new RegExp('\\{' + (i) + '\\}','gm');
        txt = txt.replace(exp,arguments[i]);
    }
    return txt;
};

Array.prototype.remove = function(from, to) 
{
    var rest = this.slice((to || from) + 1 || this.length);
    this.length = from < 0 ? this.length + from : from;
    return this.push.apply(this, rest);
};

Array.prototype.removeVal = function(val)
{
    for ( var i = 0, length = this.length; i < length; i++ )
    {
        // Use === because on IE, window == document
        if ( this[ i ] === val )
        {
            this.remove(i);  
            return true;
        }
    }
    
    return false;
};

// Shortcuts:
$E = EXPOTV;
log = console.log;

///////////

$(EXPOTV.utils.init);


/* IE ROUNDED CORNERS HACK */
var DD_roundies={ns:'DD_roundies',IE6:false,IE7:false,IE8:false,IEversion:function(){if(document.documentMode!=8&&document.namespaces&&!document.namespaces[this.ns]){this.IE6=true;this.IE7=true;}else if(document.documentMode==8){this.IE8=true;}},querySelector:document.querySelectorAll,selectorsToProcess:[],imgSize:{},createVmlNameSpace:function(){if(this.IE6||this.IE7){document.namespaces.add(this.ns,'urn:schemas-microsoft-com:vml');}if(this.IE8){document.writeln('<?import namespace="'+this.ns+'" implementation="#default#VML" ?>');}},createVmlStyleSheet:function(){var style=document.createElement('style');document.documentElement.firstChild.insertBefore(style,document.documentElement.firstChild.firstChild);if(style.styleSheet){try{var styleSheet=style.styleSheet;styleSheet.addRule(this.ns+'\\:*','{behavior:url(#default#VML)}');this.styleSheet=styleSheet;}catch(err){}}else{this.styleSheet=style;}},addRule:function(selector,rad,standards){if(typeof rad=='undefined'||rad===null){rad=0;}if(rad.constructor.toString().search('Array')==-1){rad=rad.toString().replace(/[^0-9 ]/g,'').split(' ');}for(var i=0;i<4;i++){rad[i]=(!rad[i]&&rad[i]!==0)?rad[Math.max((i-2),0)]:rad[i];}if(this.styleSheet){if(this.styleSheet.addRule){var selectors=selector.split(',');for(var i=0;i<selectors.length;i++){this.styleSheet.addRule(selectors[i],'behavior:expression(DD_roundies.roundify.call(this, ['+rad.join(',')+']))');}}else if(standards){var moz_implementation=rad.join('px ')+'px';this.styleSheet.appendChild(document.createTextNode(selector+' {border-radius:'+moz_implementation+'; -moz-border-radius:'+moz_implementation+';}'));this.styleSheet.appendChild(document.createTextNode(selector+' {-webkit-border-top-left-radius:'+rad[0]+'px '+rad[0]+'px; -webkit-border-top-right-radius:'+rad[1]+'px '+rad[1]+'px; -webkit-border-bottom-right-radius:'+rad[2]+'px '+rad[2]+'px; -webkit-border-bottom-left-radius:'+rad[3]+'px '+rad[3]+'px;}'));}}else if(this.IE8){this.selectorsToProcess.push({'selector':selector,'radii':rad});}},readPropertyChanges:function(el){switch(event.propertyName){case'style.border':case'style.borderWidth':case'style.padding':this.applyVML(el);break;case'style.borderColor':this.vmlStrokeColor(el);break;case'style.backgroundColor':case'style.backgroundPosition':case'style.backgroundRepeat':this.applyVML(el);break;case'style.display':el.vmlBox.style.display=(el.style.display=='none')?'none':'block';break;case'style.filter':this.vmlOpacity(el);break;case'style.zIndex':el.vmlBox.style.zIndex=el.style.zIndex;break;}},applyVML:function(el){el.runtimeStyle.cssText='';this.vmlFill(el);this.vmlStrokeColor(el);this.vmlStrokeWeight(el);this.vmlOffsets(el);this.vmlPath(el);this.nixBorder(el);this.vmlOpacity(el);},vmlOpacity:function(el){if(el.currentStyle.filter.search('lpha')!=-1){var trans=el.currentStyle.filter;trans=parseInt(trans.substring(trans.lastIndexOf('=')+1,trans.lastIndexOf(')')),10)/100;for(var v in el.vml){el.vml[v].filler.opacity=trans;}}},vmlFill:function(el){if(!el.currentStyle){return;}else{var elStyle=el.currentStyle;}el.runtimeStyle.backgroundColor='';el.runtimeStyle.backgroundImage='';var noColor=(elStyle.backgroundColor=='transparent');var noImg=true;if(elStyle.backgroundImage!='none'||el.isImg){if(!el.isImg){el.vmlBg=elStyle.backgroundImage;el.vmlBg=el.vmlBg.substr(5,el.vmlBg.lastIndexOf('")')-5);}else{el.vmlBg=el.src;}var lib=this;if(!lib.imgSize[el.vmlBg]){var img=document.createElement('img');img.attachEvent('onload',function(){this.width=this.offsetWidth;this.height=this.offsetHeight;lib.vmlOffsets(el);});img.className=lib.ns+'_sizeFinder';img.runtimeStyle.cssText='behavior:none; position:absolute; top:-10000px; left:-10000px; border:none;';img.src=el.vmlBg;img.removeAttribute('width');img.removeAttribute('height');document.body.insertBefore(img,document.body.firstChild);lib.imgSize[el.vmlBg]=img;}el.vml.image.filler.src=el.vmlBg;noImg=false;}el.vml.image.filled=!noImg;el.vml.image.fillcolor='none';el.vml.color.filled=!noColor;el.vml.color.fillcolor=elStyle.backgroundColor;el.runtimeStyle.backgroundImage='none';el.runtimeStyle.backgroundColor='transparent';},vmlStrokeColor:function(el){el.vml.stroke.fillcolor=el.currentStyle.borderColor;},vmlStrokeWeight:function(el){var borders=['Top','Right','Bottom','Left'];el.bW={};for(var b=0;b<4;b++){el.bW[borders[b]]=parseInt(el.currentStyle['border'+borders[b]+'Width'],10)||0;}},vmlOffsets:function(el){var dims=['Left','Top','Width','Height'];for(var d=0;d<4;d++){el.dim[dims[d]]=el['offset'+dims[d]];}var assign=function(obj,topLeft){obj.style.left=(topLeft?0:el.dim.Left)+'px';obj.style.top=(topLeft?0:el.dim.Top)+'px';obj.style.width=el.dim.Width+'px';obj.style.height=el.dim.Height+'px';};for(var v in el.vml){var mult=(v=='image')?1:2;el.vml[v].coordsize=(el.dim.Width*mult)+', '+(el.dim.Height*mult);assign(el.vml[v],true);}assign(el.vmlBox,false);if(DD_roundies.IE8){el.vml.stroke.style.margin='-1px';if(typeof el.bW=='undefined'){this.vmlStrokeWeight(el);}el.vml.color.style.margin=(el.bW.Top-1)+'px '+(el.bW.Left-1)+'px';}},vmlPath:function(el){var coords=function(direction,w,h,r,aL,aT,mult){var cmd=direction?['m','qy','l','qx','l','qy','l','qx','l']:['qx','l','qy','l','qx','l','qy','l','m'];aL*=mult;aT*=mult;w*=mult;h*=mult;var R=r.slice();for(var i=0;i<4;i++){R[i]*=mult;R[i]=Math.min(w/2,h/2,R[i]);}var coords=[cmd[0]+Math.floor(0+aL)+','+Math.floor(R[0]+aT),cmd[1]+Math.floor(R[0]+aL)+','+Math.floor(0+aT),cmd[2]+Math.ceil(w-R[1]+aL)+','+Math.floor(0+aT),cmd[3]+Math.ceil(w+aL)+','+Math.floor(R[1]+aT),cmd[4]+Math.ceil(w+aL)+','+Math.ceil(h-R[2]+aT),cmd[5]+Math.ceil(w-R[2]+aL)+','+Math.ceil(h+aT),cmd[6]+Math.floor(R[3]+aL)+','+Math.ceil(h+aT),cmd[7]+Math.floor(0+aL)+','+Math.ceil(h-R[3]+aT),cmd[8]+Math.floor(0+aL)+','+Math.floor(R[0]+aT)];if(!direction){coords.reverse();}var path=coords.join('');return path;};if(typeof el.bW=='undefined'){this.vmlStrokeWeight(el);}var bW=el.bW;var rad=el.DD_radii.slice();var outer=coords(true,el.dim.Width,el.dim.Height,rad,0,0,2);rad[0]-=Math.max(bW.Left,bW.Top);rad[1]-=Math.max(bW.Top,bW.Right);rad[2]-=Math.max(bW.Right,bW.Bottom);rad[3]-=Math.max(bW.Bottom,bW.Left);for(var i=0;i<4;i++){rad[i]=Math.max(rad[i],0);}var inner=coords(false,el.dim.Width-bW.Left-bW.Right,el.dim.Height-bW.Top-bW.Bottom,rad,bW.Left,bW.Top,2);var image=coords(true,el.dim.Width-bW.Left-bW.Right+1,el.dim.Height-bW.Top-bW.Bottom+1,rad,bW.Left,bW.Top,1);el.vml.color.path=inner;el.vml.image.path=image;el.vml.stroke.path=outer+inner;this.clipImage(el);},nixBorder:function(el){var s=el.currentStyle;var sides=['Top','Left','Right','Bottom'];for(var i=0;i<4;i++){el.runtimeStyle['padding'+sides[i]]=(parseInt(s['padding'+sides[i]],10)||0)+(parseInt(s['border'+sides[i]+'Width'],10)||0)+'px';}el.runtimeStyle.border='none';},clipImage:function(el){var lib=DD_roundies;if(!el.vmlBg||!lib.imgSize[el.vmlBg]){return;}var thisStyle=el.currentStyle;var bg={'X':0,'Y':0};var figurePercentage=function(axis,position){var fraction=true;switch(position){case'left':case'top':bg[axis]=0;break;case'center':bg[axis]=0.5;break;case'right':case'bottom':bg[axis]=1;break;default:if(position.search('%')!=-1){bg[axis]=parseInt(position,10)*0.01;}else{fraction=false;}}var horz=(axis=='X');bg[axis]=Math.ceil(fraction?((el.dim[horz?'Width':'Height']-(el.bW[horz?'Left':'Top']+el.bW[horz?'Right':'Bottom']))*bg[axis])-(lib.imgSize[el.vmlBg][horz?'width':'height']*bg[axis]):parseInt(position,10));bg[axis]+=1;};for(var b in bg){figurePercentage(b,thisStyle['backgroundPosition'+b]);}el.vml.image.filler.position=(bg.X/(el.dim.Width-el.bW.Left-el.bW.Right+1))+','+(bg.Y/(el.dim.Height-el.bW.Top-el.bW.Bottom+1));var bgR=thisStyle.backgroundRepeat;var c={'T':1,'R':el.dim.Width+1,'B':el.dim.Height+1,'L':1};var altC={'X':{'b1':'L','b2':'R','d':'Width'},'Y':{'b1':'T','b2':'B','d':'Height'}};if(bgR!='repeat'){c={'T':(bg.Y),'R':(bg.X+lib.imgSize[el.vmlBg].width),'B':(bg.Y+lib.imgSize[el.vmlBg].height),'L':(bg.X)};if(bgR.search('repeat-')!=-1){var v=bgR.split('repeat-')[1].toUpperCase();c[altC[v].b1]=1;c[altC[v].b2]=el.dim[altC[v].d]+1;}if(c.B>el.dim.Height){c.B=el.dim.Height+1;}}el.vml.image.style.clip='rect('+c.T+'px '+c.R+'px '+c.B+'px '+c.L+'px)';},pseudoClass:function(el){var self=this;setTimeout(function(){self.applyVML(el);},1);},reposition:function(el){this.vmlOffsets(el);this.vmlPath(el);},roundify:function(rad){this.style.behavior='none';if(!this.currentStyle){return;}else{var thisStyle=this.currentStyle;}var allowed={BODY:false,TABLE:false,TR:false,TD:false,SELECT:false,OPTION:false,TEXTAREA:false};if(allowed[this.nodeName]===false){return;}var self=this;var lib=DD_roundies;this.DD_radii=rad;this.dim={};var handlers={resize:'reposition',move:'reposition'};if(this.nodeName=='A'){var moreForAs={mouseleave:'pseudoClass',mouseenter:'pseudoClass',focus:'pseudoClass',blur:'pseudoClass'};for(var a in moreForAs){handlers[a]=moreForAs[a];}}for(var h in handlers){this.attachEvent('on'+h,function(){lib[handlers[h]](self);});}this.attachEvent('onpropertychange',function(){lib.readPropertyChanges(self);});var giveLayout=function(el){el.style.zoom=1;if(el.currentStyle.position=='static'){el.style.position='relative';}};giveLayout(this.offsetParent);giveLayout(this);this.vmlBox=document.createElement('ignore');this.vmlBox.runtimeStyle.cssText='behavior:none; position:absolute; margin:0; padding:0; border:0; background:none;';this.vmlBox.style.zIndex=thisStyle.zIndex;this.vml={'color':true,'image':true,'stroke':true};for(var v in this.vml){this.vml[v]=document.createElement(lib.ns+':shape');this.vml[v].filler=document.createElement(lib.ns+':fill');this.vml[v].appendChild(this.vml[v].filler);this.vml[v].stroked=false;this.vml[v].style.position='absolute';this.vml[v].style.zIndex=thisStyle.zIndex;this.vml[v].coordorigin='1,1';this.vmlBox.appendChild(this.vml[v]);}this.vml.image.fillcolor='none';this.vml.image.filler.type='tile';this.parentNode.insertBefore(this.vmlBox,this);this.isImg=false;if(this.nodeName=='IMG'){this.isImg=true;this.style.visibility='hidden';}setTimeout(function(){lib.applyVML(self);},1);}};try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}DD_roundies.IEversion();DD_roundies.createVmlNameSpace();DD_roundies.createVmlStyleSheet();if(DD_roundies.IE8&&document.attachEvent&&DD_roundies.querySelector){document.attachEvent('onreadystatechange',function(){if(document.readyState=='complete'){var selectors=DD_roundies.selectorsToProcess;var length=selectors.length;var delayedCall=function(node,radii,index){setTimeout(function(){DD_roundies.roundify.call(node,radii);},index*100);};for(var i=0;i<length;i++){var results=document.querySelectorAll(selectors[i].selector);var rLength=results.length;for(var r=0;r<rLength;r++){if(results[r].nodeName!='INPUT'){delayedCall(results[r],selectors[i].radii,r);}}}}});};
	DD_roundies.addRule('.round_5', '5px');
	DD_roundies.addRule('.round_10', '10px');
	DD_roundies.addRule('.top_right_round_5', '0 10px 0 0');
	DD_roundies.addRule('.top_left_round_5', '10px 0 0 0');
	DD_roundies.addRule('.top_round_5', '10px 10px 0 0');
	DD_roundies.addRule('.top_round_10', '10px 10px 0 0');
	DD_roundies.addRule('.bottom_round_10', '0 0 10px 10px');
	DD_roundies.addRule('.round_15', '15px');;

/****** /external/Facebook.js ******/

/**
 * $Id: Facebook.js 19631 2009-10-14 18:40:09Z ajl $
 * @author ajl
 */
EXPOTV.Facebook = new function()
{
	var self = this;
	
    this.init = function()
    {
    	self.attachLoginHandlers();
    }
    
    this.attachLoginHandlers = function()
    {
        $('a.facebook-login, a.facebookDoLogin').click(function(e)
        {
            e.preventDefault();
            
            // See if link has special post-FB-login return url options.
            var returnUrlAnchor = $(this).attr('rel').match(/^fb_return_url_anchor=(\w+)$/);
            if (returnUrlAnchor && returnUrlAnchor[1])
                returnUrlAnchor = returnUrlAnchor[1];
            
            FB.Connect.ifUserConnected(function()
            {
				$.cookie('check_fb_login', '1', { path: '/', domain: 'jabba.expotv.com'});
				window.location.href = window.location.pathname + ((returnUrlAnchor) ? '#' + returnUrlAnchor : '');
				window.location.reload();
            	
            }, function()
            {
	            FB.Connect.requireSession(function()
	            { 
	            	window.location.href = window.location.pathname + ((returnUrlAnchor) ? '#' + returnUrlAnchor : ''); 
					window.location.reload();
	            }, true);
            });
        });    
    }
    
    //
    
    this.parseDomTree = function()
	{
    	FB.XFBML.Host.parseDomTree();
	}
	
	this.showFeedDialog = function(templateBundleId, templateDataObj)
	{
        FB.Connect.showFeedDialog(templateBundleId, templateDataObj/*, null, null, null, FB.RequireConnect.require, callback, user_message_prompt, user_message*/);
	}
}

$(EXPOTV.Facebook.init);;

/****** /jquery/jquery.nyroModal.js ******/

/*
 * nyroModal - jQuery Plugin
 * http://nyromodal.nyrodev.com
 *
 * Copyright (c) 2008 Cedric Nirousset (nyrodev.com)
 * Licensed under the MIT license
 *
 * $Date: 2009-08-14 (Fri, 14 Aug 2009) $
 * $version: 1.5.2
 */
 
// [ajl] DO NOT REPLACE THIS FILE WITH A REGULAR VANILLA NYROMODAL. MANY MODS HAVE BEEN MADE.

jQuery(function($) {

    // -------------------------------------------------------
    // Private Variables
    // -------------------------------------------------------

    var userAgent = navigator.userAgent.toLowerCase();
    var browserVersion = (userAgent.match(/.+(?:rv|webkit|khtml|opera|msie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];

    var isIE6 = (/msie/.test(userAgent) && !/opera/.test(userAgent) && parseInt(browserVersion) < 7 && !window.XMLHttpRequest);
    var body = $('body');

    var currentSettings;

    var shouldResize = false;

    var gallery = {};

    // To know if the fix for the Issue 10 should be applied (or has been applied)
    var fixFF = false;

    // Used for retrieve the content from an hidden div
    var contentElt;
    var contentEltLast;

    // Contains info about nyroModal state and all div references
    var modal = {
        started: false,
        ready: false,
        dataReady: false,
        anim: false,
        animContent: false,
        loadingShown: false,
        transition: false,
        resizing: false,
        closing: false,
        error: false,
        blocker: null,
        blockerVars: null,
        full: null,
        bg: null,
        loading: null,
        tmp: null,
        content: null,
        wrapper: null,
        contentWrapper: null,
        scripts: new Array(),
        scriptsShown: new Array()
    };

    // Indicate of the height or the width was resized, to reinit the currentsettings related to null
    var resized = {
        width: false,
        height: false,
        windowResizing: false
    };

    var initSettingsSize = {
        width: null,
        height: null,
        windowResizing: true
    };

    var windowResizeTimeout;


    // -------------------------------------------------------
    // Public function
    // -------------------------------------------------------

    // jQuery extension function. A paramater object could be used to overwrite the default settings
    $.fn.nyroModal = function(settings) {
        if (!this)
            return false;
        return this.each(function() {
            var me = $(this);
            if (this.nodeName.toLowerCase() == 'form') {
                me
                .unbind('submit.nyroModal')
                .bind('submit.nyroModal', function(e) {
                    if(e.isDefaultPrevented())
                        return false;
                    if (me.data('nyroModalprocessing'))
                        return true;
                    if (this.enctype == 'multipart/form-data') {
                        processModal($.extend(settings, {
                            from: this
                        }));
                        return true;
                    }
                    e.preventDefault();
                    processModal($.extend(settings, {
                        from: this
                    }));
                    return false;
                });
            } else {
                me
                .unbind('click.nyroModal')
                .bind('click.nyroModal', function(e) {
                    if(e.isDefaultPrevented())
                        return false;
                    e.preventDefault();
                    processModal($.extend(settings, {
                        from: this
                    }));
                    return false;
                });
            }
        });
    };

    // jQuery extension function to call manually the modal. A paramater object could be used to overwrite the default settings
    $.fn.nyroModalManual = function(settings) {
        if (!this.length)
            processModal(settings);
        return this.each(function(){
            processModal($.extend(settings, {
                from: this
            }));
        });
    };

    $.nyroModalManual = function(settings) {
        processModal(settings);
    };

    // Update the current settings
    // object settings
    // string deep1 first key where overwrite the settings
    // string deep2 second key where overwrite the settings
    $.nyroModalSettings = function(settings, deep1, deep2) {
        setCurrentSettings(settings, deep1, deep2);
        if (!deep1 && modal.started) {
            if (modal.bg && settings.bgColor)
                currentSettings.updateBgColor(modal, currentSettings, function(){});

            if (modal.contentWrapper && settings.title)
                setTitle();

            if (!modal.error && (settings.windowResizing || (!modal.resizing && (('width' in settings && settings.width == currentSettings.width) || ('height' in settings && settings.height == currentSettings.height))))) {
                modal.resizing = true;
                if (modal.contentWrapper)
                    calculateSize(true);
                if (modal.contentWrapper && modal.contentWrapper.is(':visible') && !modal.animContent) {
                    if (fixFF)
                        modal.content.css({position: ''});
                    currentSettings.resize(modal, currentSettings, function() {
                        currentSettings.windowResizing = false;
                        modal.resizing = false;
                        if (fixFF)
                            modal.content.css({position: 'fixed'});
                        if ($.isFunction(currentSettings.endResize))
                            currentSettings.endResize(modal, currentSettings);
                    });
                }
            }
        }
    };

    // Remove the modal function
    $.nyroModalRemove = function() {
        removeModal();
    };

    // Go to the next image for a gallery
    // return false if nothing was done
    $.nyroModalNext = function() {
        var link = getGalleryLink(1);
        if (link)
            return link.nyroModalManual(getCurrentSettingsNew());
        return false;
    };

    // Go to the previous image for a gallery
    // return false if nothing was done
    $.nyroModalPrev = function() {
        var link = getGalleryLink(-1);
        if (link)
            return link.nyroModalManual(getCurrentSettingsNew());
        return false;
    };


    // -------------------------------------------------------
    // Default Settings
    // -------------------------------------------------------

    $.fn.nyroModal.settings = {
        debug: false, // Show the debug in the background

        blocker: false, // Element which will be blocked by the modal

        modal: false, // Esc key or click backgrdound enabling or not

        type: '', // nyroModal type (form, formData, iframe, image, etc...)
        forceType: null, // Used to force the type
        from: '', // Dom object where the call come from
        hash: '', // Eventual hash in the url

        processHandler: null, // Handler just before the real process

        selIndicator: 'nyroModalSel', // Value added when a form or Ajax is sent with a filter content

        formIndicator: 'nyroModal', // Value added when a form is sent

        content: null, // Raw content if type content is used

        bgColor: '#000000', // Background color

        ajax: {}, // Ajax option (url, data, type, success will be overwritten for a form, url and success only for an ajax call)

        swf: { // Swf player options if swf type is used.
            wmode: 'transparent'
        },

        width: null, // default Width If null, will be calculate automatically
        height: null, // default Height If null, will be calculate automatically

        minWidth: 400, // Minimum width
        minHeight: 140, // Minimum height

        resizable: true, // Indicate if the content is resizable. Will be set to false for swf
        autoSizable: true, // Indicate if the content is auto sizable. If not, the min size will be used

        padding: 25, // padding for the max modal size

        regexImg: '[^\.]\.(jpg|jpeg|png|tiff|gif|bmp)\s*$', // Regex to find images
        addImageDivTitle: false, // Indicate if the div title should be inserted
        defaultImgAlt: 'Image', // Default alt attribute for the images
        setWidthImgTitle: true, // Set the width to the image title
        ltr: true, // Left to Right by default. Put to false for Hebrew or Right to Left language

        gallery: null, // Gallery name if provided
        galleryLinks: '<a href="#" class="nyroModalPrev">Prev</a><a href="#"  class="nyroModalNext">Next</a>', // Use .nyroModalPrev and .nyroModalNext to set the navigation link
        galleryCounts: galleryCounts, // Callback to show the gallery count

        zIndexStart: 100,

        css: { // Default CSS option for the nyroModal Div. Some will be overwritten or updated when using IE6
            bg: {
                position: 'absolute',
                overflow: 'hidden',
                top: 0,
                left: 0,
                height: '100%',
                width: '100%'
            },
            wrapper: {
                position: 'absolute',
                top: '50%',
                left: '50%'
            },
            wrapper2: {
            },
            content: {
                overflow: 'auto'
            },
            loading: {
                position: 'absolute',
                top: '50%',
                left: '50%',
                marginTop: '-50px',
                marginLeft: '-50px'
            }
        },

        wrap: { // Wrapper div used to style the modal regarding the content type
            div: '<div class="wrapper"></div>',
            ajax: '<div class="wrapper"></div>',
            form: '<div class="wrapper"></div>',
            formData: '<div class="wrapper"></div>',
            image: '<div class="wrapperImg"></div>',
            swf: '<div class="wrapperSwf"></div>',
            iframe: '<div class="wrapperIframe"></div>',
            iframeForm: '<div class="wrapperIframe"></div>',
            manual: '<div class="wrapper"></div>'
        },

        closeButton: '<a href="#" class="jsModalClose nyroModalClose" id="closeBut" title="close">Close</a>', // Adding automaticly as the first child of #nyroModalWrapper

        title: null, // Modal title
        titleFromIframe: true, // When using iframe in the same domain, try to get the title from it

        openSelector: '.jsModal', // selector for open a new modal. will be used to parse automaticly at page loading
        closeSelector: '.jsModalClose', // selector to close the modal

        contentLoading: '<a href="#" class="jsModalClose nyroModalClose">Cancel</a>', // Loading div content

        errorClass: 'error', // CSS Error class added to the loading div in case of error
        contentError: 'The requested content cannot be loaded.<br />Please try again later.<br /><a href="#" class="nyroModalClose">Close</a>', // Content placed in the loading div in case of error

        handleError: null, // Callback in case of error

        showBackground: showBackground, // Show background animation function
        hideBackground: hideBackground, // Hide background animation function

        endFillContent: null, // Will be called after filling and wraping the content, before parsing closeSelector and openSelector and showing the content
        showContent: showContent, // Show content animation function
        endShowContent: null, // Will be called once the content is shown
        beforeHideContent: null, // Will be called just before the modal closing
        hideContent: hideContent, // Hide content animation function

        showTransition: showTransition, // Show the transition animation (a modal is already shown and a new one is requested)
        hideTransition: hideTransition, // Hide the transition animation to show the content

        showLoading: showLoading, // show loading animation function
        hideLoading: hideLoading, // hide loading animation function

        resize: resize, // Resize animation function
        endResize: null, // Will be called one the content is resized

        updateBgColor: updateBgColor, // Change background color animation function

        endRemove: null // Will be called once the modal is totally gone
    };

    // -------------------------------------------------------
    // Private function
    // -------------------------------------------------------

    // Main function
    function processModal(settings) {
        if (modal.loadingShown || modal.transition || modal.anim)
            return;
        debug('processModal');
        modal.started = true;
        setDefaultCurrentSettings(settings);
        if (!modal.full)
            modal.blockerVars = modal.blocker = null;
        modal.error = false;
        modal.closing = false;
        modal.dataReady = false;
        modal.scripts = new Array();
        modal.scriptsShown = new Array();

        currentSettings.type = fileType();
        if (currentSettings.forceType) {
            if (!currentSettings.content)
                currentSettings.from = true;
            currentSettings.type = currentSettings.forceType;
            currentSettings.forceType = null;
        }

        if ($.isFunction(currentSettings.processHandler))
            currentSettings.processHandler(currentSettings);

        var from = currentSettings.from;
        var url = currentSettings.url;

        initSettingsSize.width = currentSettings.width;
        initSettingsSize.height = currentSettings.height;

        if (currentSettings.type == 'swf') {
            // Swf is transforming as a raw content
            setCurrentSettings({overflow: 'hidden'}, 'css', 'content');
            currentSettings.content = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+currentSettings.width+'" height="'+currentSettings.height+'"><param name="movie" value="'+url+'"></param>';
            var tmp = '';
            $.each(currentSettings.swf, function(name, val) {
                currentSettings.content+= '<param name="'+name+'" value="'+val+'"></param>';
                tmp+= ' '+name+'="'+val+'"';
            });
            currentSettings.content+= '<embed src="'+url+'" type="application/x-shockwave-flash" width="'+currentSettings.width+'" height="'+currentSettings.height+'"'+tmp+'></embed></object>';
        }

        if (from) {
            var jFrom = $(from).blur();
            if (currentSettings.type == 'form') {
                var data = $(from).serializeArray();
                data.push({name: currentSettings.formIndicator, value: 1});
                if (currentSettings.selector)
                    data.push({name: currentSettings.selIndicator, value: currentSettings.selector.substring(1)});
                $.ajax($.extend({}, currentSettings.ajax, {
                        url: url,
                        data: data,
                        type: jFrom.attr('method') ? jFrom.attr('method') : 'get',
                        success: ajaxLoaded,
                        error: loadingError
                    }));
                debug('Form Ajax Load: '+jFrom.attr('action'));
                showModal();
            } else if (currentSettings.type == 'formData') {
                // Form with data. We're using a hidden iframe
                initModal();
                jFrom.attr('target', 'nyroModalIframe');
                jFrom.attr('action', url);
                jFrom.prepend('<input type="hidden" name="'+currentSettings.formIndicator+'" value="1" />');
                if (currentSettings.selector)
                    jFrom.prepend('<input type="hidden" name="'+currentSettings.selIndicator+'" value="'+currentSettings.selector.substring(1)+'" />');
                modal.tmp.html('<iframe frameborder="0" hspace="0" name="nyroModalIframe" src="javascript:\'\';"></iframe>');
                $('iframe', modal.tmp)
                    .css({
                        width: currentSettings.width,
                        height: currentSettings.height
                    })
                    .error(loadingError)
                    .load(formDataLoaded);
                debug('Form Data Load: '+jFrom.attr('action'));
                showModal();
                showContentOrLoading();
            } else if (currentSettings.type == 'image') {
                debug('Image Load: '+url);
                var title = jFrom.attr('title') || currentSettings.defaultImgAlt;
                initModal();
                modal.tmp.html('<img id="nyroModalImg" />').find('img').attr('alt', title);
                modal.tmp.css({lineHeight: 0});
                $('img', modal.tmp)
                    .error(loadingError)
                    .load(function() {
                        debug('Image Loaded: '+this.src);
                        $(this).unbind('load');
                        var w = modal.tmp.width();
                        var h = modal.tmp.height();
                        modal.tmp.css({lineHeight: ''});
                        resized.width = w;
                        resized.height = h;
                        setCurrentSettings({
                            width: w,
                            height: h,
                            imgWidth: w,
                            imgHeight: h
                        });
                        initSettingsSize.width = w;
                        initSettingsSize.height = h;
                        setCurrentSettings({overflow: 'hidden'}, 'css', 'content');
                        modal.dataReady = true;
                        if (modal.loadingShown || modal.transition)
                            showContentOrLoading();
                    })
                    .attr('src', url);
                showModal();
            } else if (currentSettings.type == 'iframeForm') {
                initModal();
                modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>');
                debug('Iframe Form Load: '+url);
                $('iframe', modal.tmp).eq(0)
                    .css({
                        width: '100%',
                        height: $.support.boxModel? '99%' : '100%'
                    })
                    .load(iframeLoaded);
                modal.dataReady = true;
                showModal();
            } else if (currentSettings.type == 'iframe') {
                initModal();
                modal.tmp.html('<iframe frameborder="0" hspace="0" src="javascript:\'\';" name="nyroModalIframe" id="nyroModalIframe"></iframe>');
                debug('Iframe Load: '+url);
                $('iframe', modal.tmp).eq(0)
                    .css({
                        width: '100%',
                        height: $.support.boxModel? '100%' : '100%'
                    })
                    .load(iframeLoaded);
                modal.dataReady = true;
                showModal();
            } else if (currentSettings.type) {
                // Could be every other kind of type or a dom selector
                debug('Content: '+currentSettings.type);
                initModal();
                modal.tmp.html(currentSettings.content);
                var w = modal.tmp.width();
                var h = modal.tmp.height();
                var div = $(currentSettings.type);
                if (div.length) {
                    setCurrentSettings({type: 'div'});
                    w = div.width();
                    h = div.height();
                    if (contentElt)
                        contentEltLast = contentElt;
                    contentElt = div;
                    modal.tmp.append(div.contents());
                }
                initSettingsSize.width = w;
                initSettingsSize.height = h;
                setCurrentSettings({
                    width: w,
                    height: h
                });
                if (modal.tmp.html())
                    modal.dataReady = true;
                else
                    loadingError();
                if (!modal.ready)
                    showModal();
                else
                    endHideContent();
            } else {
                debug('Ajax Load: '+url);
                setCurrentSettings({type: 'ajax'});
                var data = currentSettings.ajax.data || {};
                if (currentSettings.selector) {
                    if (typeof data == "string") {
                        data+= '&'+currentSettings.selIndicator+'='+currentSettings.selector.substring(1);
                    } else {
                        data[currentSettings.selIndicator] = currentSettings.selector.substring(1);
                    }
                }
                $.ajax($.extend(true, currentSettings.ajax, {
                    url: url,
                    success: ajaxLoaded,
                    error: loadingError,
                    data: data
                }));
                showModal();
            }
        } else if (currentSettings.content) {
            // Raw content not from a DOM element
            debug('Content: '+currentSettings.type);
            setCurrentSettings({type: 'manual'});
            initModal();
            modal.tmp.html($('<div/>').html(currentSettings.content).contents());
            if (modal.tmp.html())
                modal.dataReady = true;
            else
                loadingError();
            showModal();
        } else {
            // What should we show here? nothing happen
        }
    }

    // Update the current settings
    // object settings
    // string deep1 first key where overwrite the settings
    // string deep2 second key where overwrite the settings
    function setDefaultCurrentSettings(settings) {
        debug('setDefaultCurrentSettings');
        currentSettings = $.extend(true, {}, $.fn.nyroModal.settings, settings);
        currentSettings.selector = '';
        currentSettings.borderW = 0;
        currentSettings.borderH = 0;
        currentSettings.resizable = true;
        setMargin();
    }

    function setCurrentSettings(settings, deep1, deep2) {
        if (modal.started) {
            if (deep1 && deep2) {
                $.extend(true, currentSettings[deep1][deep2], settings);
            } else if (deep1) {
                $.extend(true, currentSettings[deep1], settings);
            } else {
                if (modal.animContent) {
                    if ('width' in settings) {
                        if (!modal.resizing) {
                            settings.setWidth = settings.width;
                            shouldResize = true;
                        }
                        delete settings['width'];
                    }
                    if ('height' in settings) {
                        if (!modal.resizing) {
                            settings.setHeight = settings.height;
                            shouldResize = true;
                        }
                        delete settings['height'];
                    }
                }
                $.extend(true, currentSettings, settings);
            }
        } else {
            if (deep1 && deep2) {
                $.extend(true, $.fn.nyroModal.settings[deep1][deep2], settings);
            } else if (deep1) {
                $.extend(true, $.fn.nyroModal.settings[deep1], settings);
            } else {
                $.extend(true, $.fn.nyroModal.settings, settings);
            }
        }
    }

    // Set the margin for postionning the element. Useful for IE6
    function setMarginScroll() {
        if (isIE6 && !modal.blocker) {
            if (document.documentElement) {
                currentSettings.marginScrollLeft = document.documentElement.scrollLeft;
                currentSettings.marginScrollTop = document.documentElement.scrollTop;
            } else {
                currentSettings.marginScrollLeft = document.body.scrollLeft;
                currentSettings.marginScrollTop = document.body.scrollTop;
            }
        } else {
            currentSettings.marginScrollLeft = 0;
            currentSettings.marginScrollTop = 0;
        }
    }

    // Set the margin for the content
    function setMargin() {
        setMarginScroll();
        currentSettings.marginLeft = -(currentSettings.width+currentSettings.borderW)/2;
        currentSettings.marginTop = -(currentSettings.height+currentSettings.borderH)/2;
        if (!modal.blocker) {
            currentSettings.marginLeft+= currentSettings.marginScrollLeft;
            currentSettings.marginTop+= currentSettings.marginScrollTop;
        }
    }

    // Set the margin for the current loading
    function setMarginLoading() {
        setMarginScroll();
        var outer = getOuter(modal.loading);
        currentSettings.marginTopLoading = -(modal.loading.height() + outer.h.border + outer.h.padding)/2;
        currentSettings.marginLeftLoading = -(modal.loading.width() + outer.w.border + outer.w.padding)/2;
        if (!modal.blocker) {
            currentSettings.marginLefttLoading+= currentSettings.marginScrollLeft;
            currentSettings.marginTopLoading+= currentSettings.marginScrollTop;
        }
    }

    // Set the modal Title
    function setTitle() {
        var title = $('h1#nyroModalTitle', modal.contentWrapper);
        if (title.length)
            title.text(currentSettings.title);
        else
            modal.contentWrapper.prepend('<h1 id="nyroModalTitle">'+currentSettings.title+'</h1>');
    }

    // Init the nyroModal div by settings the CSS elements and hide needed elements
    function initModal() {
        debug('initModal');
        if (!modal.full) {
            if (currentSettings.debug)
                setCurrentSettings({color: 'white'}, 'css', 'bg');

            var full = {
                zIndex: currentSettings.zIndexStart,
                position: 'fixed',
                top: 0,
                left: 0,
                width: '100%',
                height: '100%'
            };

            var contain = body;
            var iframeHideIE = '';
            if (currentSettings.blocker) {
                modal.blocker = contain = $(currentSettings.blocker);
                var pos = modal.blocker.offset();
                var w = modal.blocker.outerWidth();
                var h = modal.blocker.outerHeight();
                if (isIE6) {
                    setCurrentSettings({
                        height: '100%',
                        width: '100%',
                        top: 0,
                        left: 0
                    }, 'css', 'bg');
                }
                modal.blockerVars = {
                    top: pos.top,
                    left: pos.left,
                    width: w,
                    height: h
                };
                var plusTop = (/msie/.test(userAgent) ?0:getCurCSS(body.get(0), 'borderTopWidth'));
                var plusLeft = (/msie/.test(userAgent) ?0:getCurCSS(body.get(0), 'borderLeftWidth'));
                full = {
                    position: 'absolute',
                    top: pos.top + plusTop,
                    left: pos.left + plusLeft,
                    width: w,
                    height: h
                };
            } else if (isIE6) {
                body.css({
                    height: '130%', //body.height()+'px',
                    width: '130%', //body.width()+'px',
                    position: 'static',
                    overflow: 'hidden'
                });
                $('html').css({overflow: 'hidden'});
                setCurrentSettings({
                    css: {
                        bg: {
                            position: 'absolute',
                            zIndex: currentSettings.zIndexStart+1,
                            height: '110%',
                            width: '110%',
                            top: currentSettings.marginScrollTop+'px',
                            left: currentSettings.marginScrollLeft+'px'
                        },
                        wrapper: { zIndex: currentSettings.zIndexStart+2 },
                        loading: { zIndex: currentSettings.zIndexStart+3 }
                    }
                });

                iframeHideIE = $('<iframe id="nyroModalIframeHideIe" src="javascript:\'\';"></iframe>')
                                .css($.extend({},
                                    currentSettings.css.bg, {
                                        opacity: 0,
                                        zIndex: 50,
                                        border: 'none'
                                    }));
            }

            contain.append($('<div id="nyroModalFull"><div id="nyroModalBg"></div><div id="nyroModalWrapper"><div id="nyroModalContent"></div></div><div id="nyrModalTmp"></div><div id="nyroModalLoading"></div></div>').hide());

            modal.full = $('#nyroModalFull')
                .css(full)
                .show();
            modal.bg = $('#nyroModalBg')
                .css($.extend({
                        backgroundColor: currentSettings.bgColor
                    }, currentSettings.css.bg))
                .before(iframeHideIE);
            if (!currentSettings.modal)
                modal.bg.click(removeModal);
            modal.loading = $('#nyroModalLoading')
                .css(currentSettings.css.loading)
                .hide();
            modal.contentWrapper = $('#nyroModalWrapper')
                .css(currentSettings.css.wrapper)
                .hide();
            modal.content = $('#nyroModalContent');
            modal.tmp = $('#nyrModalTmp').hide();

            // To stop the mousewheel if the the plugin is available
            if ($.isFunction($.fn.mousewheel)) {
                modal.content.mousewheel(function(e, d) {
                    var elt = modal.content.get(0);
                    if ((d > 0 && elt.scrollTop == 0) ||
                            (d < 0 && elt.scrollHeight - elt.scrollTop == elt.clientHeight)) {
                        e.preventDefault();
                        e.stopPropagation();
                    }
                });
            }

            $(document).bind('keydown.nyroModal', keyHandler);
            modal.content.css({width: 'auto', height: 'auto'});
            modal.contentWrapper.css({width: 'auto', height: 'auto'});

            if (!currentSettings.blocker) {
                $(window).bind('resize.nyroModal', function() {
                    window.clearTimeout(windowResizeTimeout);
                    windowResizeTimeout = window.setTimeout(windowResizeHandler, 200);
                });
            }
        }
    }

    function windowResizeHandler() {
        $.nyroModalSettings(initSettingsSize);
    }

    // Show the modal (ie: the background and then the loading if needed or the content directly)
    function showModal() {
        debug('showModal');
        if (!modal.ready) {
            initModal();
            modal.anim = true;
            currentSettings.showBackground(modal, currentSettings, endBackground);
        } else {
            modal.anim = true;
            modal.transition = true;
            currentSettings.showTransition(modal, currentSettings, function(){endHideContent();modal.anim=false;showContentOrLoading();});
        }
    }

    // Used for the escape key or the arrow in the gallery type
    function keyHandler(e) {
        if (e.keyCode == 27) {
            if (!currentSettings.modal)
                removeModal();
        } else if (currentSettings.gallery && modal.ready && modal.dataReady && !modal.anim && !modal.transition) {
            if (e.keyCode == 39 || e.keyCode == 40) {
                e.preventDefault();
                $.nyroModalNext();
                return false;
            } else if (e.keyCode == 37 || e.keyCode == 38) {
                e.preventDefault();
                $.nyroModalPrev();
                return false;
            }
        }
    }

    // Determine the filetype regarding the link DOM element
    function fileType() {
        var from = currentSettings.from;

        var url;

        if (from && from.nodeName) {
            var jFrom = $(from);

            url = jFrom.attr(from.nodeName.toLowerCase() == 'form' ? 'action' : 'open'); // AJL: modifed this from href to link
            if (!url)
                url = location.href.substring(window.location.host.length+7);
            currentSettings.url = url;

            if (jFrom.attr('rev') == 'modal')
                currentSettings.modal = true;

            currentSettings.title = jFrom.attr('title');

            if (from && from.rel && from.rel.toLowerCase() != 'nofollow') {
                var indexSpace = from.rel.indexOf(' ');
                currentSettings.gallery = indexSpace > 0 ? from.rel.substr(0, indexSpace) : from.rel;
            }

            var imgType = imageType(url, from);
            if (imgType)
                return imgType;

            if (isSwf(url))
                return 'swf';

            var iframe = false;
            if (from.target && from.target.toLowerCase() == '_blank' /*|| (from.hostname && from.hostname.replace(/:\d*$/,'') != window.location.hostname.replace(/:\d*$/,''))*/) {
                iframe = true;
            }
            if (from.nodeName.toLowerCase() == 'form') {
                if (iframe)
                    return 'iframeForm';
                setCurrentSettings(extractUrlSel(url));
                if (jFrom.attr('enctype') == 'multipart/form-data')
                    return 'formData';
                return 'form';
            }
            if (iframe)
                return 'iframe';
        } else {
            url = currentSettings.url;
            if (!currentSettings.content)
                currentSettings.from = true;

            if (!url)
                return null;

            if (isSwf(url))
                return 'swf';

            var reg1 = new RegExp("^http://|https://", "g");
            if (url.match(reg1))
                return 'iframe';
        }

        var imgType = imageType(url, from);
        if (imgType)
            return imgType;

        var tmp = extractUrlSel(url);
        setCurrentSettings(tmp);

        if (!tmp.url)
            return tmp.selector;
    }

    function imageType(url, from) {
        var image = new RegExp(currentSettings.regexImg, 'i');
        if (image.test(url)) {
            return 'image';
        }
    }

    function isSwf(url) {
        var swf = new RegExp('[^\.]\.(swf)\s*$', 'i');
        return swf.test(url);
    }

    function extractUrlSel(url) {
        var ret = {
            url: null,
            selector: null
        };

        if (url) {
            var hash = getHash(url);
            var hashLoc = getHash(window.location.href);
            var curLoc = window.location.href.substring(0, window.location.href.length - hashLoc.length);
            var req = url.substring(0, url.length - hash.length);

            if (req == curLoc || req == $('base').attr('href')) {
                ret.selector = hash;
            } else {
                ret.url = req;
                ret.selector = hash;
            }
        }
        return ret;
    }

    // Called when the content cannot be loaded or tiemout reached
    function loadingError() {
        debug('loadingError');

        modal.error = true;

        if (!modal.ready)
            return;

        if ($.isFunction(currentSettings.handleError))
            currentSettings.handleError(modal, currentSettings);

        modal.loading
            .addClass(currentSettings.errorClass)
            .html(currentSettings.contentError);
        $(currentSettings.closeSelector, modal.loading)
            .unbind('click.nyroModal')
            .bind('click.nyroModal', removeModal);
        setMarginLoading();
        modal.loading
            .css({
                marginTop: currentSettings.marginTopLoading+'px',
                marginLeft: currentSettings.marginLeftLoading+'px'
            });
    }

    // Put the content from modal.tmp to modal.content
    function fillContent() {
        debug('fillContent');
        if (!modal.tmp.html())
            return;

        modal.content.html(modal.tmp.contents());
        modal.tmp.empty();
        wrapContent();

        if (currentSettings.type == 'iframeForm') {
            $(currentSettings.from)
                .attr('target', 'nyroModalIframe')
                .data('nyroModalprocessing', 1)
                .submit()
                .attr('target', '_blank')
                .removeData('nyroModalprocessing');
        }

        if (!currentSettings.modal)
            modal.wrapper.prepend(currentSettings.closeButton);

        if ($.isFunction(currentSettings.endFillContent))
            currentSettings.endFillContent(modal, currentSettings);

        modal.content.append(modal.scripts);

        $(currentSettings.closeSelector, modal.contentWrapper)
            .unbind('click.nyroModal')
            .bind('click.nyroModal', removeModal);
        $(currentSettings.openSelector, modal.contentWrapper).nyroModal(getCurrentSettingsNew());
    }

    // Get the current settings to be used in new links
    function getCurrentSettingsNew() {
        var currentSettingsNew = $.extend(true, {}, currentSettings);
        if (resized.width)
            currentSettingsNew.width = null;
        else
            currentSettingsNew.width = initSettingsSize.width;
        if (resized.height)
            currentSettingsNew.height = null;
        else
            currentSettingsNew.height = initSettingsSize.height;
        currentSettingsNew.css.content.overflow = 'auto';
        return currentSettingsNew;
    }

    // Wrap the content and update the modal size if needed
    function wrapContent() {
        debug('wrapContent');

        var wrap = $(currentSettings.wrap[currentSettings.type]);
        modal.content.append(wrap.children().remove());
        modal.contentWrapper.wrapInner(wrap);

        if (currentSettings.gallery) {
            // Set the action for the next and prev button (or remove them)
            modal.content.append(currentSettings.galleryLinks);

            gallery.links = $('[rel="'+currentSettings.gallery+'"], [rel^="'+currentSettings.gallery+' "]');
            gallery.index = gallery.links.index(currentSettings.from);

            if (currentSettings.galleryCounts && $.isFunction(currentSettings.galleryCounts))
                currentSettings.galleryCounts(gallery.index + 1, gallery.links.length, modal, currentSettings);

            var currentSettingsNew = getCurrentSettingsNew();

            var linkPrev = getGalleryLink(-1);
            if (linkPrev) {
                var prev = $('.nyroModalPrev', modal.contentWrapper)
                    .attr('href', linkPrev.attr('href'))
                    .click(function(e) {
                        e.preventDefault();
                        $.nyroModalPrev();
                        return false;
                    });
                if (isIE6 && currentSettings.type == 'swf') {
                    prev.before($('<iframe id="nyroModalIframeHideIeGalleryPrev" src="javascript:\'\';"></iframe>').css({
                                            position: prev.css('position'),
                                            top: prev.css('top'),
                                            left: prev.css('left'),
                                            width: prev.width(),
                                            height: prev.height(),
                                            opacity: 0,
                                            border: 'none'
                                        }));
                }
            } else {
                $('.nyroModalPrev', modal.contentWrapper).remove();
            }
            var linkNext = getGalleryLink(1);
            if (linkNext) {
                var next = $('.nyroModalNext', modal.contentWrapper)
                    .attr('href', linkNext.attr('href'))
                    .click(function(e) {
                        e.preventDefault();
                        $.nyroModalNext();
                        return false;
                    });
                if (isIE6 && currentSettings.type == 'swf') {
                    next.before($('<iframe id="nyroModalIframeHideIeGalleryNext" src="javascript:\'\';"></iframe>')
                                    .css($.extend({}, {
                                            position: next.css('position'),
                                            top: next.css('top'),
                                            left: next.css('left'),
                                            width: next.width(),
                                            height: next.height(),
                                            opacity: 0,
                                            border: 'none'
                                        })));
                }
            } else {
                $('.nyroModalNext', modal.contentWrapper).remove();
            }
        }

        calculateSize();
    }

    function getGalleryLink(dir) {
        if (currentSettings.gallery) {
            if (!currentSettings.ltr)
                dir *= -1;
            var index = gallery.index + dir;
            if (index >= 0 && index < gallery.links.length)
                return gallery.links.eq(index);
        }
        return false;
    }

    // Calculate the size for the contentWrapper
    function calculateSize(resizing) {
        debug('calculateSize');

        modal.wrapper = modal.contentWrapper.children('div:first');

        resized.width = false;
        resized.height = false;
        if (false && !currentSettings.windowResizing) {
            initSettingsSize.width = currentSettings.width;
            initSettingsSize.height = currentSettings.height;
        }

        if (currentSettings.autoSizable && (!currentSettings.width || !currentSettings.height)) {
            modal.contentWrapper
                .css({
                    opacity: 0,
                    width: 'auto',
                    height: 'auto'
                })
                .show();
            var tmp = {
                width: 'auto',
                height: 'auto'
            };
            if (currentSettings.width) {
                tmp.width = currentSettings.width;
            } else if (currentSettings.type == 'iframe') {
                tmp.width = currentSettings.minWidth;
            }

            if (currentSettings.height) {
                tmp.height = currentSettings.height;
            } else if (currentSettings.type == 'iframe') {
                tmp.height = currentSettings.minHeight;
            }

            modal.content.css(tmp);
            if (!currentSettings.width) {
                currentSettings.width = modal.content.outerWidth(true);
                resized.width = true;
            }
            if (!currentSettings.height) {
                currentSettings.height = modal.content.outerHeight(true);
                resized.height = true;
            }
            modal.contentWrapper.css({opacity: 1});
            if (!resizing)
                modal.contentWrapper.hide();
        }

        if (currentSettings.type != 'image' && currentSettings.type != 'swf') {
            currentSettings.width = Math.max(currentSettings.width, currentSettings.minWidth);
            currentSettings.height = Math.max(currentSettings.height, currentSettings.minHeight);
        }

        var outerWrapper = getOuter(modal.contentWrapper);
        var outerWrapper2 = getOuter(modal.wrapper);
        var outerContent = getOuter(modal.content);

        var tmp = {
            content: {
                width: currentSettings.width,
                height: currentSettings.height
            },
            wrapper2: {
                width: currentSettings.width + outerContent.w.total,
                height: currentSettings.height + outerContent.h.total
            },
            wrapper: {
                width: currentSettings.width + outerContent.w.total + outerWrapper2.w.total,
                height: currentSettings.height + outerContent.h.total + outerWrapper2.h.total
            }
        };

        if (currentSettings.resizable) {
            var maxHeight = modal.blockerVars? modal.blockerVars.height : $(window).height()
                                - outerWrapper.h.border
                                - (tmp.wrapper.height - currentSettings.height);
            var maxWidth = modal.blockerVars? modal.blockerVars.width : $(window).width()
                                - outerWrapper.w.border
                                - (tmp.wrapper.width - currentSettings.width);
            maxHeight-= currentSettings.padding*2;
            maxWidth-= currentSettings.padding*2;

            if (tmp.content.height > maxHeight || tmp.content.width > maxWidth) {
                // We're gonna resize the modal as it will goes outside the view port
                if (currentSettings.type == 'image' || currentSettings.type == 'swf') {
                    // An image is resized proportionnaly
                    var useW = currentSettings.imgWidth?currentSettings.imgWidth : currentSettings.width;
                    var useH = currentSettings.imgHeight?currentSettings.imgHeight : currentSettings.height;
                    var diffW = tmp.content.width - useW;
                    var diffH = tmp.content.height - useH;
                        if (diffH < 0) diffH = 0;
                        if (diffW < 0) diffW = 0;
                    var calcH = maxHeight - diffH;
                    var calcW = maxWidth - diffW;
                    var ratio = Math.min(calcH/useH, calcW/useW);
                    calcW = Math.floor(useW*ratio);
                    calcH = Math.floor(useH*ratio);
                    tmp.content.height = calcH + diffH;
                    tmp.content.width = calcW + diffW;
                } else {
                    // For an HTML content, we simply decrease the size
                    tmp.content.height = Math.min(tmp.content.height, maxHeight);
                    tmp.content.width = Math.min(tmp.content.width, maxWidth);
                }
                tmp.wrapper2 = {
                        width: tmp.content.width + outerContent.w.total,
                        height: tmp.content.height + outerContent.h.total
                    };
                tmp.wrapper = {
                        width: tmp.content.width + outerContent.w.total + outerWrapper2.w.total,
                        height: tmp.content.height + outerContent.h.total + outerWrapper2.h.total
                    };
            }
        }

        if (currentSettings.type == 'swf') {
            $('object, embed', modal.content)
                .attr('width', tmp.content.width)
                .attr('height', tmp.content.height);
        } else if (currentSettings.type == 'image') {
            $('img', modal.content).css({
                width: tmp.content.width,
                height: tmp.content.height
            });
        }

        modal.content.css($.extend({}, tmp.content, currentSettings.css.content));
        modal.wrapper.css($.extend({}, tmp.wrapper2, currentSettings.css.wrapper2));

        if (!resizing)
            modal.contentWrapper.css($.extend({}, tmp.wrapper, currentSettings.css.wrapper));

        if (currentSettings.type == 'image' && currentSettings.addImageDivTitle) {
            // Adding the title for the image
            $('img', modal.content).removeAttr('alt');
            var divTitle = $('div', modal.content);
            if (currentSettings.title != currentSettings.defaultImgAlt && currentSettings.title) {
                if (divTitle.length == 0) {
                    divTitle = $('<div>'+currentSettings.title+'</div>');
                    modal.content.append(divTitle);
                }
                if (currentSettings.setWidthImgTitle) {
                    var outerDivTitle = getOuter(divTitle);
                    divTitle.css({width: (tmp.content.width + outerContent.w.padding - outerDivTitle.w.total)+'px'});
                }
            } else if (divTitle.length = 0) {
                divTitle.remove();
            }
        }

        if (currentSettings.title)
            setTitle();

        tmp.wrapper.borderW = outerWrapper.w.border;
        tmp.wrapper.borderH = outerWrapper.h.border;

        setCurrentSettings(tmp.wrapper);
        setMargin();
    }

    function removeModal(e) {
        debug('removeModal');
        if (e)
            e.preventDefault();
        if (modal.full && modal.ready) {
            $(document).unbind('keydown.nyroModal');
            if (!currentSettings.blocker)
                $(window).unbind('resize.nyroModal');
            modal.ready = false;
            modal.anim = true;
            modal.closing = true;
            if (modal.loadingShown || modal.transition) {
                currentSettings.hideLoading(modal, currentSettings, function() {
                        modal.loading.hide();
                        modal.loadingShown = false;
                        modal.transition = false;
                        currentSettings.hideBackground(modal, currentSettings, endRemove);
                    });
            } else {
                if (fixFF)
                    modal.content.css({position: ''}); // Fix Issue #10, remove the attribute
                modal.wrapper.css({overflow: 'hidden'}); // Used to fix a visual issue when hiding
                modal.content.css({overflow: 'hidden'}); // Used to fix a visual issue when hiding
                if ($.isFunction(currentSettings.beforeHideContent)) {
                    currentSettings.beforeHideContent(modal, currentSettings, function() {
                        currentSettings.hideContent(modal, currentSettings, function() {
                            endHideContent();
                            currentSettings.hideBackground(modal, currentSettings, endRemove);
                        });
                    });
                } else {
                    currentSettings.hideContent(modal, currentSettings, function() {
                            endHideContent();
                            currentSettings.hideBackground(modal, currentSettings, endRemove);
                        });
                }
            }
        }
        if (e)
            return false;
    }

    function showContentOrLoading() {
        debug('showContentOrLoading');
        if (modal.ready && !modal.anim) {
            if (modal.dataReady) {
                if (modal.tmp.html()) {
                    modal.anim = true;
                    if (modal.transition) {
                        fillContent();
                        modal.animContent = true;
                        currentSettings.hideTransition(modal, currentSettings, function() {
                            modal.loading.hide();
                            modal.transition = false;
                            modal.loadingShown = false;
                            endShowContent();
                        });
                    } else {
                        currentSettings.hideLoading(modal, currentSettings, function() {
                                modal.loading.hide();
                                modal.loadingShown = false;
                                fillContent();
                                setMarginLoading();
                                setMargin();
                                modal.animContent = true;
                                currentSettings.showContent(modal, currentSettings, endShowContent);
                            });
                    }
                }
            } else if (!modal.loadingShown && !modal.transition) {
                modal.anim = true;
                modal.loadingShown = true;
                if (modal.error)
                    loadingError();
                else
                    modal.loading.html(currentSettings.contentLoading);
                $(currentSettings.closeSelector, modal.loading)
                    .unbind('click.nyroModal')
                    .bind('click.nyroModal', removeModal);
                setMarginLoading();
                currentSettings.showLoading(modal, currentSettings, function(){modal.anim=false;showContentOrLoading();});
            }
        }
    }


    // -------------------------------------------------------
    // Private Data Loaded callback
    // -------------------------------------------------------

    function ajaxLoaded(data) {
        debug('AjaxLoaded: '+this.url);
        modal.tmp.html(currentSettings.selector
            ?filterScripts($('<div>'+data+'</div>').find(currentSettings.selector).contents())
            :filterScripts(data));
        if (modal.tmp.html()) {
            modal.dataReady = true;
            showContentOrLoading();
        } else
            loadingError();
    }

    function formDataLoaded() {
        debug('formDataLoaded');
        var jFrom = $(currentSettings.from);
        jFrom.attr('action', jFrom.attr('action')+currentSettings.selector);
        jFrom.attr('target', '');
        $('input[name='+currentSettings.formIndicator+']', currentSettings.from).remove();
        var iframe = modal.tmp.children('iframe');
        var iframeContent = iframe.unbind('load').contents().find(currentSettings.selector || 'body').not('script[src]');
        iframe.attr('src', 'about:blank'); // Used to stop the loading in FF
        modal.tmp.html(iframeContent.html());
        if (modal.tmp.html()) {
            modal.dataReady = true;
            showContentOrLoading();
        } else
            loadingError();
    }
    
    function iframeLoaded() {
        if ((window.location.hostname && currentSettings.url.indexOf(window.location.hostname) > -1)
                ||  currentSettings.url.indexOf('http://')) {
            var iframe = $('iframe', modal.full).contents();
            var tmp = {};
            if (currentSettings.titleFromIframe)
                tmp.title = iframe.find('title').text();
            if (currentSettings.titleFromIframe && !tmp.title) {
                // for IE
                try {
                    tmp.title = iframe.find('title').html();
                } catch(err) {}
            }
            var body = iframe.find('body');
            if (!currentSettings.height && body.height())
                tmp.height = body.height();
            if (!currentSettings.width && body.width())
                tmp.width = body.width();
            $.extend(initSettingsSize, tmp);
            $.nyroModalSettings(tmp);
        }
    }

    function galleryCounts(nb, total, elts, settings) {
        if (total > 1)
            settings.title+= (settings.title?' - ':'') +nb+'/'+total;
    }


    // -------------------------------------------------------
    // Private Animation callback
    // -------------------------------------------------------

    function endHideContent() {
        debug('endHideContent');
        modal.anim = false;
        if (contentEltLast) {
            contentEltLast.append(modal.content.contents());
            contentEltLast = null;
        } else if (contentElt) {
            contentElt.append(modal.content.contents());
            contentElt= null;
        }
        modal.content.empty();

        gallery = {};

        modal.contentWrapper.hide().children().remove().empty().attr('style', '').hide();

        if (modal.closing || modal.transition)
            modal.contentWrapper.hide();

        modal.contentWrapper
            .css(currentSettings.css.wrapper)
            .append(modal.content);
        showContentOrLoading();
    }

    function endRemove() {
        debug('endRemove');
        $(document).unbind('keydown', keyHandler);
        modal.anim = false;
        modal.full.remove();
        modal.full = null;
        if (isIE6) {
            body.css({height: '', width: '', position: '', overflow: ''});
            $('html').css({overflow: ''});
        }
        if ($.isFunction(currentSettings.endRemove))
            currentSettings.endRemove(modal, currentSettings);
    }

    function endBackground() {
        debug('endBackground');
        modal.ready = true;
        modal.anim = false;
        showContentOrLoading();
    }

    function endShowContent() {
        debug('endShowContent');
        modal.anim = false;
        modal.animContent = false;
        modal.contentWrapper.css({opacity: ''}); // for the close button in IE
        fixFF = /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent) && parseFloat(browserVersion) < 1.9 && currentSettings.type != 'image';

        if (fixFF)
            modal.content.css({position: 'fixed'}); // Fix Issue #10
        modal.content.append(modal.scriptsShown);

        if(currentSettings.type == 'iframe')
            modal.content.find('iframe').attr('src', currentSettings.url);

        if ($.isFunction(currentSettings.endShowContent))
            currentSettings.endShowContent(modal, currentSettings);

        if (shouldResize) {
            shouldResize = false;
            $.nyroModalSettings({width: currentSettings.setWidth, height: currentSettings.setHeight});
            delete currentSettings['setWidth'];
            delete currentSettings['setHeight'];
        }
        if (resized.width)
            setCurrentSettings({width: null});
        if (resized.height)
            setCurrentSettings({height: null});
    }


    // -------------------------------------------------------
    // Utilities
    // -------------------------------------------------------

    // Get the selector from an url (as string)
    function getHash(url) {
        if (typeof url == 'string') {
            var hashPos = url.indexOf('#');
            if (hashPos > -1)
                return url.substring(hashPos);
        }
        return '';
    }

    // Filter an html content to remove the script[src]
    function filterScripts(data) {
        // Removing the body, head and html tag
        if (typeof data == 'string')
            data = data.replace(/<\/?(html|head|body)([^>]*)>/gi, '');
        var tmp = new Array();
        $.each($.clean({0:data}, this.ownerDocument), function() {
            if ($.nodeName(this, "script")) {
                if (!this.src || $(this).attr('rel') == 'forceLoad') {
                    if ($(this).attr('rev') == 'shown')
                        modal.scriptsShown.push(this);
                    else
                        modal.scripts.push(this);
                }
            } else
                tmp.push(this);
        });
        return tmp;
    }

    // Get the vertical and horizontal margin, padding and border dimension
    function getOuter(elm) {
        elm = elm.get(0);
        var ret = {
            h: {
                margin: getCurCSS(elm, 'marginTop') + getCurCSS(elm, 'marginBottom'),
                border: getCurCSS(elm, 'borderTopWidth') + getCurCSS(elm, 'borderBottomWidth'),
                padding: getCurCSS(elm, 'paddingTop') + getCurCSS(elm, 'paddingBottom')
            },
            w: {
                margin: getCurCSS(elm, 'marginLeft') + getCurCSS(elm, 'marginRight'),
                border: getCurCSS(elm, 'borderLeftWidth') + getCurCSS(elm, 'borderRightWidth'),
                padding: getCurCSS(elm, 'paddingLeft') + getCurCSS(elm, 'paddingRight')
            }
        };

        ret.h.outer = ret.h.margin + ret.h.border;
        ret.w.outer = ret.w.margin + ret.w.border;

        ret.h.inner = ret.h.padding + ret.h.border;
        ret.w.inner = ret.w.padding + ret.w.border;

        ret.h.total = ret.h.outer + ret.h.padding;
        ret.w.total = ret.w.outer + ret.w.padding;

        return ret;
    }

    function getCurCSS(elm, name) {
        var ret = parseInt($.curCSS(elm, name, true));
        if (isNaN(ret))
            ret = 0;
        return ret;
    }

    // Proxy Debug function
    function debug(msg) {
        if ($.fn.nyroModal.settings.debug || currentSettings && currentSettings.debug)
            nyroModalDebug(msg, modal, currentSettings || {});
    }

    // -------------------------------------------------------
    // Default animation function
    // -------------------------------------------------------

    function showBackground(elts, settings, callback) {
        elts.bg.css({opacity:0}).fadeTo(500, 0.75, callback);
    }

    function hideBackground(elts, settings, callback) {
        elts.bg.fadeOut(300, callback);
    }

    function showLoading(elts, settings, callback) {
        elts.loading
            .css({
                marginTop: settings.marginTopLoading+'px',
                marginLeft: settings.marginLeftLoading+'px',
                opacity: 0
            })
            .show()
            .animate({
                opacity: 1
            }, {complete: callback, duration: 400});
    }

    function hideLoading(elts, settings, callback) {
        callback();
    }

    function showContent(elts, settings, callback) {
        elts.loading
            .css({
                marginTop: settings.marginTopLoading+'px',
                marginLeft: settings.marginLeftLoading+'px'
            })
            .show()
            .animate({
                width: settings.width+'px',
                height: settings.height+'px',
                marginTop: settings.marginTop+'px',
                marginLeft: settings.marginLeft+'px'
            }, {duration: 350, complete: function() {
                elts.contentWrapper
                    .css({
                        width: settings.width+'px',
                        height: settings.height+'px',
                        marginTop: settings.marginTop+'px',
                        marginLeft: settings.marginLeft+'px'
                    })
                    .show();
                    elts.loading.fadeOut(200, callback);
                }
            });
    }

    function hideContent(elts, settings, callback) {
        elts.contentWrapper
            .animate({
                height: '50px',
                width: '50px',
                marginTop: (-(25+settings.borderH)/2 + settings.marginScrollTop)+'px',
                marginLeft: (-(25+settings.borderW)/2 + settings.marginScrollLeft)+'px'
            }, {duration: 350, complete: function() {
                elts.contentWrapper.hide();
                callback();
            }});
    }

    function showTransition(elts, settings, callback) {
        // Put the loading with the same dimensions of the current content
        elts.loading
            .css({
                marginTop: elts.contentWrapper.css('marginTop'),
                marginLeft: elts.contentWrapper.css('marginLeft'),
                height: elts.contentWrapper.css('height'),
                width: elts.contentWrapper.css('width'),
                opacity: 0
            })
            .show()
            .fadeTo(400, 1, function() {
                    elts.contentWrapper.hide();
                    callback();
                });
    }

    function hideTransition(elts, settings, callback) {
        // Place the content wrapper underneath the the loading with the right dimensions
        elts.contentWrapper
            .hide()
            .css({
                width: settings.width+'px',
                height: settings.height+'px',
                marginLeft: settings.marginLeft+'px',
                marginTop: settings.marginTop+'px',
                opacity: 1
            });
        elts.loading
            .animate({
                width: settings.width+'px',
                height: settings.height+'px',
                marginLeft: settings.marginLeft+'px',
                marginTop: settings.marginTop+'px'
            }, {complete: function() {
                    elts.contentWrapper.show();
                    elts.loading.fadeOut(400, function() {
                        elts.loading.hide();
                        callback();
                    });
                }, duration: 350});
    }

    function resize(elts, settings, callback) {
        elts.contentWrapper
            .animate({
                width: settings.width+'px',
                height: settings.height+'px',
                marginLeft: settings.marginLeft+'px',
                marginTop: settings.marginTop+'px'
            }, {complete: callback, duration: 400});
    }

    function updateBgColor(elts, settings, callback) {
        if (!$.fx.step.backgroundColor) {
            elts.bg.css({backgroundColor: settings.bgColor});
            callback();
        } else
            elts.bg
                .animate({
                    backgroundColor: settings.bgColor
                }, {complete: callback, duration: 400});
    }

    // -------------------------------------------------------
    // Default initialization
    // -------------------------------------------------------

    $($.fn.nyroModal.settings.openSelector).nyroModal();

});

// Default debug function, to be overwritten if needed
//      Be aware that the settings parameter could be empty
function nyroModalDebug(msg, elts, settings) {
    if (elts.full)
        elts.bg.prepend(msg+'<br />');
};

/****** /product/BoardsThread.js ******/


EXPOTV.BoardsThread = new function()
{
	var self = this;
	
    this.init = function()
    {
    	
    }

};

$(EXPOTV.BoardsThread.init);;

