/*
 * 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")}})})();;
(function(){
  var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

  // The base Class implementation (does nothing)
  this.Class = function(){};
 
  // Create a new Class that inherits from this class
  Class.extend = function(prop) {
    var _super = this.prototype;
   
    // Instantiate a base class (but only create the instance,
    // do not run the init constructor)
    initializing = true;
    var prototype = new this();
    initializing = false;
   
    // Copy the properties over onto the new prototype
    for (var name in prop) {
      // Check if we are overwriting an existing function
      prototype[name] = typeof prop[name] == "function" &&
        typeof _super[name] == "function" && fnTest.test(prop[name]) ?
        (function(name, fn){
          return function() {
            var tmp = this._super;
           
            // Add a new ._super() method that is the same method
            // but on the super-class
            this._super = _super[name];
           
            // The method only need to be bound temporarily, so we
            // remove it when we are done executing
            var ret = fn.apply(this, arguments);       
            this._super = tmp;
           
            return ret;
          };
        })(name, prop[name]) :
        prop[name];
    }
   
    // The dummy class constructor
    function Class() {
      // All construction is actually done in the init method
      if ( !initializing && this.init )
        this.init.apply(this, arguments);
    }
   
    // Populate our constructed prototype object
    Class.prototype = prototype;
   
    // Enforce the constructor to be what we expect
    Class.constructor = Class;

    // And make this class extendable
    Class.extend = arguments.callee;
   
    return Class;
  };
})();
;
/*** $Id$ ***/
function json(){}
function json_init()
{
  var m = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' };
  var s = new Object();

  s['boolean'] = function (x) { return String(x); };
  s['null'   ] = function (x) { return "null";    };
  s['number' ] = function (x) { return isFinite(x) ? String(x) : 'null'; };
  s['array'  ] = function (x)
  {
    var a = ['['], b, f, i, l = x.length, v;
    for (i = 0; i < l; i += 1) {
      v = x[i];
      f = s[typeof v];
      if (f) {
        v = f(v);
        if (typeof v == 'string') {
         if (b) {
            a[a.length] = ',';
          }
          a[a.length] = v;
          b = true;
        }
      }
    }
    a[a.length] = ']';
    return a.join('');
  };

  s['object'] = function (x) {
    if (x) {
      if (x instanceof Array) return s.array(x);
      var a = ['{'], b, f, i, v;
      for (i in x) {
        v = x[i];
        f = s[typeof v];
        if (f) {
          v = f(v);
          if (typeof v == 'string') {
            if (b) a[a.length] = ',';
            a.push(s.string(i), ':', v);
            b = true;
          }
        }
      }
      a[a.length] = '}';
      return a.join('');
    }
    return 'null';
  };

  s['string'] = function (x) {
    if (/[\"\\\x00-\x1f]/.test(x)) {
      x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
        var c = m[b];
        if (c) return c;
        c = b.charCodeAt();
        return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
      });
    }
    return '"' + x + '"';
  };

  json.serialize = function (obj)
  {
    obj = obj || false;
    return s[ typeof(obj) ](obj);
  };

  json.deserialize = json.unserialize = function (str)
  {
    try
    {
      return (/^(\"(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(str)) && eval('(' + str + ')');
    }
    catch (e)
    {
      return false;
    }
  };
}

json_init();
;
/**
 * 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 = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            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
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        var path = options.path ? '; path=' + (options.path) : '';
        var domain = options.domain ? '; domain=' + (options.domain) : '';
        var secure = options.secure ? '; secure' : '';
        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
    } else { // only name given, get cookie
        var cookieValue = null;
        if (document.cookie && document.cookie != '') {
            var cookies = document.cookie.split(';');
            for (var i = 0; i < cookies.length; i++) {
                var cookie = jQuery.trim(cookies[i]);
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
};;
jQuery.fn.extend(
{
	/**
	 * Wrapper over bind that enables you to connect events to objects, not just callbacks
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to bind the event to
	 * @param method {String|Function} Either a string method name or function reference to call on obj
	 * @param args {Array} Optional arguments to pass to the callback (instead of the default ones)
	 */
	connect: function( type, obj, method, args )
	{
		return this.each( function()
		{
			var f = function()
			{
				var a = args || [this].concat(jQuery.makeArray(arguments));
				var r = (typeof method == 'string' ? obj[method].apply(obj, a ) : method.apply(obj, a ));
				return typeof r == 'boolean' ? r : false;
			};

			var ccache = jQuery.data(this,'connect:'+type) || [];
			ccache.push([obj,method,f]);
			jQuery.data(this,'connect:'+type,ccache);
			$(this).bind(type,f);
		});
	},

	/**
	 * Disconnect your connected events from the target object
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to disconnect the event from
	 * @param method {String|Function} Either a string method name or function that you used in your connect
	 */
	disconnect: function( type, obj, method )
	{
		return this.each(function()
		{
			var ccache = jQuery.data(this,'connect:'+type) || [];
			var hdlrs  = [];
			var ncache = [];
			var elmt   = this;

			jQuery.each(ccache, function(i,rec)
			{
				if (rec[0]==obj && rec[1]==method)
				{
					hdlrs.push(rec[2]);
				}
				else
				{
					ncache.push(rec);
				}
			});

			jQuery.each(hdlrs, function(i,hdlr)
			{
				$(elmt).unbind(type,hdlr);
			});

			jQuery.data(this,'connect:'+type,ncache.length ? ncache : false);

		});
	},

	/**
	 * Wrapper over live that enables you to connect events to objects, not just callbacks
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to bind the event to
	 * @param method {String|Function} Either a string method name or function reference to call on obj
	 * @param args {Array} Optional arguments to pass to the callback (instead of the default ones)
	 */
	liveConnect: function( type, obj, method, args )
	{
		var f = function()
		{
			var a = args || [this].concat(jQuery.makeArray(arguments)); 
			var r = (typeof method == 'string' ? obj[method].apply(obj, a ) : method.apply(obj, a ));
			return typeof r == 'boolean' ? r : false; 
		};

		var cacheid = 'liveconnect:'+type+':'+this.selector;
		var ccache  = jQuery.data(window,cacheid) || [];
		ccache.push([obj,method,f]);
		jQuery.data(window,cacheid,ccache);
		$(this.selector).live(type, f);
		return this;
	},

	/**
	 * Disconnect your live connected events from the target object
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to disconnect the event from
	 * @param method {String|Function} Either a string method name or function that you used in your connect
	 */
	liveDisconnect: function ( type, obj, method )
	{
		var cacheid= 'liveconnect:'+type+':'+this.selector;
		var ccache = jQuery.data(window,cacheid) || [];
		var hdlrs  = [];
		var ncache = [];
		var elmt   = this;

		jQuery.each(ccache, function(i,rec) 
		{ 
			if (rec[0]==obj && rec[1]==method)
			{
				hdlrs.push(rec[2]);
			}
			else
			{
				//Dont kill it, add it back to the cache for later
				ncache.push(rec);
			}
		});

		jQuery.each( hdlrs, function(i,hdlr) 
		{ 
			$(elmt).die(type,hdlr); 
		});

		jQuery.data(window,cacheid, ncache.length ? ncache : false);
		return this;
	},

	/**
	 * Test whether x and y are on this jquery element
	 *
	 * @param x {Number} The x position
	 * @param y {Number} The y position
	 * @return {Boolean} True if it hits, false if it doesn't
	 */
	hitTest: function (x,y)
	{
		var o  = this.getPosition();
		var ox = o.left;
		var oy = o.top;
		var w  = this[0].offsetWidth;
		var h  = this[0].offsetHeight;
		var ex = ox+w;
		var ey = oy+h;

		return ( x >= ox && y >= oy && x <= ex && y <= ey ) ? true : false;
	},

	/**
	 * Get the left and top positions for this element, essentially the x,y coordinates
	 *
	 * @return {Object} Left and Top coordinates
	 */
	getPosition: function ()
	{
		return this.eq(0).position();
	},

	/**
	 * Replace this dom element with html content
	 *
	 * @param value {String} The content you want to replace this dom element with
	 */
	replaceWith: function( value )
	{
		return this.each( function ()
		{
				var e = $(this);
				var p = e.parent();
				var s = e.prev();
				e.remove();

				if (s[0])
				{
					s.after(value);
				}
				else
				{
					p.prepend(value);
				}
		});
	},

	/**
	 * Search for html elements inside this selector and make image tags with png's transparent using IE filter hack
	 */
	fixPngImage: function()
	{
		if (!$.browser.msie || parseInt($.browser.version) >= 7.0 )
		{
			return this;
		}

		this.filter('[src$=png]').each( function ()
		{
			var i = $(this);
			i.after( '<div style="display:block; width: '+i.width()+'px; height: '+ i.height() +'px; padding: 0px; margin: 0px; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + i.attr('src') + '\', sizingMethod=\'image\');" ></div>').hide();
		});

		return this;
	},

	/**
	 * Search for html elements inside this selector and fix background png's using IE filter hack
	 */
	fixPngBackground: function()
	{
		if (!$.browser.msie || parseInt($.browser.version) >= 7.0 )
		{
			return this;
		}

		return this.each( function()
		{
			this.style.backgroundImage = '';
			var m = this.currentStyle.backgroundImage.match(/^url\("([^"]+)"\)/);

			if (!m || !m[1])
			{
				return;
			}

			var sz = this.currentStyle.backgroundRepeat == 'no-repeat' ? 'crop' : 'scale';
			this.style.backgroundImage = 'none';
			this.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+m[1]+'", sizingMethod="'+sz+'")';
		});
	},

	/**
	 * Fixes the png background images on hover for IE6.  Will add a "hover" class to the element on mouseover.
	 * @return {Object} returns itself so it can be chainable
	 */
	fixHoverPngBackground: function()
	{
		if ($.browser.msie && $.browser.version < 7)
		{
			var fn = function()
			{
				this.style.backgroundImage = "";
				$(this).toggleClass("hover").fixPngBackground();
			};

			return this.each(function()
			{
				$(this).mouseover(fn).mouseout(fn).fixPngBackground();
			});
		}
		return this;
	},

	/**
	 * Sits idle before returning control.  Works well in chain.
	 */
	idle: function(time, callback)
	{
		return this.animate({delay: 1}, time, callback);
	}
});

jQuery.extend({
	/**
	 * Dynamically loads a stylesheet
	 * @param {String} url
	 */
	getStyle: function(url)
	{
		if (url && typeof jQuery._syn.loaded_ui[url] == "undefined")
		{
			jQuery._syn.loaded_ui[url] = true;
			var ts = (new Date()).getTime();
			url += ((url.match(/\?/)) ? '&' : '?')+'_='+ts;
			$("head").eq(0).append('<link href="'+url+'" rel="stylesheet" type="text/css" />');
		}
	},

	/**
	 * Dynamically loads an array of stylesheets optionally prepending a prefix
	 * @param {Array} urls
	 * @param {String} prefix
	 */
	getStyles: function(urls, prefix)
	{
		urls_array = $.makeArray(urls);
		$.each(urls_array, function(i, url)
		{
			$.getStyle(prefix+url);
		});
	},

	/**
	 * Dynamically removes a stylesheet
	 * @param {String} url
	 */
	removeStyle: function(url)
	{
		if (url)
		{
			var ts_url = $("head").find("link[href^="+url+"?_]").attr('href');
			$("head").find("link[href="+ts_url+"]").remove();
			if (url && typeof jQuery._syn.loaded_ui[url] != "undefined")
			{
				jQuery._syn.loaded_ui[url] = null;
				delete jQuery._syn.loaded_ui[url];
			}
		}
	},

	/**
	 * Dynamically removes an array of stylesheets optionally prepending a prefix
	 * @param {Array} urls
	 * @param {String} prefix
	 */
	removeStyles: function(urls, prefix)
	{
		urls_array = $.makeArray(urls);
		$.each(urls_array, function(i, url)
		{
			$.removeStyle(prefix+url);
		});
	},

	/**
	 * Dynamically loads a number of scripts, optionally calling the callback once all scripts have been loaded (or failed)
	 * @param {Array} urls
	 * @param {Function} callback
	 * @param {String} prefix
	 */
	getScripts: function(urls, callback, prefix)
	{
		if (urls.length == 0)
		{
			callback();
			return;
		}

		var prefix = (prefix) ? prefix : "";
		urls = $.makeArray(urls);

		if (jQuery._syn.loaded_ui[prefix+urls[0]])
		{
			$.getScripts(urls.slice(1), callback, prefix);
		}
		else
		{
			$.getScript(prefix+urls[0], function()
			{
				jQuery._syn.loaded_ui[prefix+urls[0]] = true;
				$.getScripts(urls.slice(1), callback, prefix);
			});
		}
	}
});

(function(){

	var ajax_original = jQuery.ajax;

	jQuery.extend({

		ajax: function(options)
		{
			if (!options.jsCache)
			{
				ajax_original(options);
				return;
			}
		
			var param_key = (typeof(options.data) == 'string') ? options.data : json.serialize(options.data || {});
			var cacheid = options.url + '|' + param_key;
			var cache   = jQuery.data(window, cacheid);
			var success_orig = options.success;

			if ( cache )
			{
				success_orig.apply(options,cache);
				return;
			}

			options.success = function(req,status)
			{
				jQuery.data( window, cacheid, [req,status] );
				this.success = success_orig;
				success_orig.call(this,req,status);
			}

			ajax_original(options);
		}

	});

})();


jQuery._syn = {
	loaded_ui: []
};
;
/**
 * The ajax webservices communication class.
 * @constructor
 */
Syn.Comm = Class.extend(
{

	/**
	 * Initialize the portal webservices class. This is called automatically by the default constructor.
	 * @member Syn.Comm
	 * @param url {String} Location of portal webservices 
	 */
	init: function (url)
	{
		this.url = url;
		this.requests = {};
		this.nextRequestId = 0;
	},

	/**
	 * Call a webservice on the server 
	 * @member Syn.Comm
	 * @param classname {String} The class on the server you wish to call
	 * @param method {String} The method you wish to call on classname
	 * @param data {Mixed} Any data structure you want to serialize and pass to the server
	 * @param cb1 {Function|Object} Can be either a function or an object. If a function is passed, this will be called with the result. If an object is passed, the object will be the target 'this' of the cb2 method.
	 * @param cb2 {String|Function} The method to call on cb1 if an object was passed. Can be a string method name or a function reference.
	 */
	call: function (classname,method,data,cb1,cb2)
	{
		var callBackObj = {};
		
		if (typeof cb1 == 'function' )
		{
			callBackObj.callback = cb1;
			callBackObj.cb_obj   = false;
		}

		else if ( typeof cb1 == 'object' )
		{
			callBackObj.cb_obj = cb1;
			callBackObj.callback = cb2;
		}

		var robj = {
			'class'  : classname,
			'method' : method,
			'data'   : data
		};

		if (cb1)
		{
			this.requests[this.nextRequestId] = $.ajax({
				type: "POST",
				url: this.url,
				data: json.serialize(robj),
				contentType: 'application/json',
				success: this.onSuccessFunc(callBackObj, this.nextRequestId)
			});
			this.nextRequestId++;
		}
		else
		{
			return json.deserialize($.ajax({
				type: "POST",
				async: false,
				url: this.url,
				data: robj,
				contentType: 'application/json'
			}).responseText);
		}
	},
	
	/**
	 * Cancels all outstanding requests in this.requests and deletes them from this.requests
	 * @member Syn.Comm
	 */
	cancelAll: function()
	{
		for (var requestId in this.requests)
		{
			// We need to make sure there is a request to cancel
			if(typeof this.requests[requestId] != 'undefined')
			{
				this.requests[requestId].abort();
				this.requests[requestId]=null;
				delete this.requests[requestId];
			}
		}
	},
	
	/**
	 * Returns a function that is used when a webservice call is completed
	 * @member Syn.Comm
	 * @param callBackObj {Object} The object containing the callback data for this request
	 * @param requestId {Number} The number of the request coming from this object (1...n)
	 */
	onSuccessFunc: function(callBackObj, requestId)
	{
		var that = this;
		
		/**
		* The function that actually occurs when a request is complete.
		* @member Syn.Comm
		* @param responseText {String} The response text for a request
		* @param responseMessage {String} The response message for a request
		*/
		return function onSuccess(responseText, responseMessage)
		{
			var result = window["eval"]("(" + responseText + ")");
			
			if ( callBackObj.cb_obj )
			{
				(typeof callBackObj.callback == "string") ? callBackObj.cb_obj[callBackObj.callback](result) :callBackObj.callback.call(callBackObj.cb_obj, result);
			}
			else
			{
				callBackObj.callback(result);
			}
			
			//The request is done, delete the request from this Syn.Comm instance
			that.requests[requestId]=null;
			delete that.requests[requestId];
		}
	}
});
;
/**
 * Create a component instance.
 * @constructor
 */
Syn.Component = Class.extend(
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * In the config object, the following attributes are generally supplied
	 *   - {String} type The type of this component, eg (horoscope,movies,etc)
	 *   - {String} uid (v1) The unique identifier for this component instance
	 *   - {String} event_id (v2) The unique identifier for this component instance
	 *   - {String} ajaxtoken A data packet needed to reconstruct the component via webservices
	 * @member Syn.Component
	 * @param {Object} config
	 */
	init: function (config)
	{
		this.type      = config['type'] || '';
		this.uid       = config['uid'];
		this.config    = config;
		this.uid_esc   = this.uid.replace(/(:|\|)/g,'\\$1');
		this.ajaxtoken = config['ajaxtoken'];
		this.comp      = $('#'+this.uniqueKey());
	},

	/**
	 * Get the instance uid
	 * @member Syn.Component
	 * @return {String} The uid
	 */
	getUid: function ()
	{
		return this.uid;
	},

	/**
	 * Get the dom identifier for this simple 'key'. The key value gets expanded to the id of this unique instance of the component.
	 * @member Syn.Component
	 * @param {String} key A simple identifier that appears in your component
	 * @param {bool} no_escape Whether or not to escape the : in the key
	 * @return {String} The expanded per-instance identifier
	 */
	uniqueKey: function (key, no_escape)
	{
		var prefix = this.type ? this.type+'_' : '';

		if (no_escape)
		{
			return prefix+(key!=null ? key+'_' : '')+this.uid;
		}

		return prefix+(key!=null ? key+'_' : '')+this.uid_esc;
	},

	/**
	 * Return the jquery object for this component instance for this simple key
	 * @member Syn.Component
	 * @param {String} key A simple identifier that appears in your component
	 * @return {Object} The jquery object
	 */
	uniqueElmt: function (key)
	{
		return $('#'+this.uniqueKey(key));
	},

	/**
	 * Returns the jquery object for the entire component
	 * @return {Object} The component jquery object
	 */
	container: function ()
	{
		return this.uniqueElmt();
	},

	/**
	 * Submit some form elements via ajax to the component webservice. Will result in the component reloading with new settings.
	 * @param {Array} vals An array of form values to submit
	 * @param {Array} extra_opts
	 */
	submit: function (vals, extra_opts)
	{
		extra_opts = extra_opts||{};
		// Framework request
		if (this.config['uri'])
		{
			var self = this;
			var data = {};
			for (i in vals)
			{
				data[i] = vals[i];
			}

			data['_uri']        = data['_uri'] || this.config['uri'];
			data['_parent_uri'] = data['_parent_uri'] || this.config['parent_uri'];
			data['_root_url']   = Syn.Config.Framework.PortalRoot;
			data['_client_uri'] = 'client://client_config/'+Syn.Config.Framework.Client+'/';
			data['_site_uri']   = 'site://site_config/'+Syn.Config.Framework.Site+'/';

			if (extra_opts['render_wrapper'])
			{
				data['_render_wrapper'] = 1;
			}

			if (extra_opts['app_server'])
			{
				data._is_jsonp = 1;

				rq = {
					'url':         Syn.Config.Framework.AppServer + '_/',
					'contentType': 'application/json',
					'success':     function (x){ self.result(x); },
					'dataType':    'jsonp',
					'data':        data
				};
			}
			else
			{
				 rq = {
					'url':         Syn.Config.Framework.PortalRoot + '_/',
					'type':        'post',
					'contentType': 'application/json',
					'success':     function (x){ self.result(x); },
					'dataType':    'json',
					'data':        json.serialize(data)
				};
			}

			if (extra_opts.cache)
			{
				rq.jsCache = true;
			}

			$.ajax(rq);
			return;
		}

		// Perform the Troy ajax request
		if (!this.ajaxtoken)
		{
			return;
		}

		var packet = {'type':this.type, 'uid':this.uid, 'ajaxtoken':this.ajaxtoken, 'prefs':vals };

		if (extra_opts && extra_opts['norender'])
		{
			packet['norender'] = true;
		}

		this.comm = new Syn.Comm(Syn.Config.WebservicesUrl);
		this.comm.call('ComponentService', 'submit', packet, this, 'result');
	},

	/**
	 * Gets a component given a uri, parent uri and vals.
	 * @member Syn.Component
	 * @param {String} component_uri A uri of the component to render
	 * @param {String} parent_uri A uri of the parent uri for the component to render
	 * @param {Object} vals The values you wish to submit to the component
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	*/
	getComponent: function(component_uri, parent_uri, vals, obj, method)
	{
		return Syn.ComponentUtils.getComponent(component_uri, parent_uri, vals, obj, method);
	},

	loadUxAssets: function(res, callback)
	{
		return Syn.ComponentUtils.loadUxAssets(res, callback);
	},

	/**
	 * The target of the ajax component webservice. Replaces the component content.
	 * @param {mixed} res The content returned from the webservice
	 */
	result: function (res)
	{
		this.hideLoading();

		/**
		 * In case a Troy AJAX call has 'norender' set to true the response will be an empty string.
		 */
		if (!res)
		{
			return;
		}

		if (typeof res == 'string' && res)
		{
			this.container().replaceWith(res);
			return;
		}

		var self = this;
		var callback = function ()
		{
			if ( res['data'] )
			{
				self.onAjaxUpdate(res['data']);
			}
			else
			{
				var repl_target = res['has_wrapper'] ? self.wrapper() : self.container();
				repl_target.replaceWith(res['content']);
				var instance = Syn.ComponentMgr.getInstanceByUid(res.init.event_id);

				if (instance && instance != self)
				{
					Syn.ComponentMgr.remove(self);
				}
			}
		};

		this.loadUxAssets(res, callback);
	},

	/**
	 * Default ajax update handler, override this in subclasses to recieve the ajax update event
	 * @param {Object} config An associative array of config params
	 */
	onAjaxUpdate: function(config)
	{
		return;
	},

	/**
	 * Find a jquery element inside the component container
	 * @param {String} selector The jquery selector to execute inside the component container
	 * @return {Object} The jquery response object
	 */
	find: function(selector)
	{
		return $( '#'+this.uniqueKey()+ ( selector ? ' '+selector : '') );
	},

	/**
	 * Show the loading indicator.
	 * Options can be specified in the opts parameter.  The following opts are accepted:
	 *    target: {Object} A jQuery object where the loading layer will reside inside. [optional]
	 *    class: {String} An additional class name to use on the loading layer. [optional]
	 *
	 * @param {Object} opts Options for the loading layer
	 */
	showLoading: function(opts)
	{
		opts = opts || {};
		var loading = this.uniqueElmt("loading");
		var target  = opts["target"] || this.container();

		if (!loading.size())
		{
			loading = $("<div>").attr("id", this.uniqueKey("loading", true))
			                    .addClass("loading");

			// If the user specified an additional class, add it as well.
			if (opts["class"])
			{
				loading.addClass(opts["class"]);
			}
		}

		loading.css({
			width: target.outerWidth(),
			height: target.outerHeight()
		}).show();

		target.prepend(loading);

		return true;
	},

	/**
	 * Hide the loading indicator
	 */
	hideLoading: function()
	{
		this.uniqueElmt('loading').hide();
	},

	/**
	 * Loads scripts asynchronously and calls a callback when all scripts are done loading.
	 *
	 * @param scripts {Array|String} Array  of javascripts to load or String (for 1 js file to load)
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.
	 * @param number {int} The script index to start loading (Not required; defaults to 0)
	 * @member Syn.Component
	 */
	loadJs: function(scripts, obj, method, args, number)
	{
		var that = this;
		scripts = (typeof scripts == "string") ? [scripts] : scripts;
		number = number || 0;
		args = args || [];

		$.getScript(Syn.Config.PortalRoot+'js/'+scripts[number], function()
		{
			//Load the next one if we can
			if ((number+1) < scripts.length)
			{
				that.loadJs(scripts, obj, method,args, number+1);
			}
			else
			{
				//Do our callback now that we are done!
				(typeof method == 'string') ? obj[method].apply(obj, args ) : method.apply(obj, args );
			}
		});
	},

	/**
	 * Get the jquery handle to the component wrapper
	 * @return {Object} The wrapper container jquery object or the component container if no wrapper exists.
	 */
	wrapper: function()
	{
		// The Framework wrapper
		if (this.uniqueElmt('wrapper').length)
		{
			return this.uniqueElmt('wrapper');
		}

		/* Note: the wrap_sel selector has to iterate sub-nodes bcs the id's are not actually
			 unique for wrappers. :( Bad Troy, Bad.
		*/
		var res = this.uid.match(/^(\d+)[\w\:]*_([\w\d]+)$/);
		var wrap_sel = '#body_col_'+ res[1] +' div.comp_container[id=syn_comp_' + res[2] + ']';
		return $(wrap_sel).length ? $(wrap_sel) : this.container();
	},

	/**
	 * Remove the component and wrapper from the page.
	 */
	remove: function(options)
	{
		options = options || [];

		if ( Syn.ComponentMgr )
		{
			Syn.ComponentMgr.remove(this);
		}

		var target = options['target'] == 'wrapper' ? this.wrapper() : this.container();

		if (options['fade_out'])
		{
			target.fadeOut(options['fade_out'], function(){ $(this).remove(); } );
		}
		else
		{
			target.remove();
		}
	},

	/**
	 * Popup a component
	 * @param options {Object} Options
	 {
		 * component {Object | String} (Uri/avs if string)(Optional)
		 * - uri {String} Component Uri To Popup
		 * - params {Object} parameters passed to the component
		 * title {String} Title of component (Optional, overrides popup component title)
		 * layout {String} Layout of popup component, ie controls width (Optional, single|double|triple) 300px,612px, 960px) If not provided, defaults to single)
		 * css_class {String} CSS Class of popup component (Optional, If not provided, uses name of popup component)
		 * show_loading {String} true|false (Optional)
		 * draggable: true|false (Optional)
		 * closeable: true|false (Optional)
		 * resizable: true|false (Optional)
		 * modal: true|false (Optional)
		 * close_on_blur: true|false (Optional)
		 * show_title: true|false (Optional)
		 * center: "screen"|"component"| "#element_id" (Optional)
		 * max_popups: 1,2,3... (Optional) Defaults to 1)
		 * top: xxx (Optional)
		 * left: xxx (Optional)
		 * width: xxx (Optional)
		 * height: xxx (Optional)
	 }
	 *
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	 *
	 */
	popup: function(options, obj, method, args)
	{
		var that = this;
		var load_fn = function()
		{
			if (!that.syn_popup)
			{
				that.syn_popup = new Syn.Popup();
			}

			//If we want to center the popup over the component OR we have not specified a center + left + top
			if (options && options['center'] && options['center'] == 'component'
			 || (options && !options['center'] && !options['left'] && !options['top']))
			{
				options['center'] = '#'+that.uniqueKey();
			}

			that.syn_popup.popup(options, obj, method, args);
		};


		if (this.config['uri'])
		{
			//Load in Syn.Popup framework version
			$.getScripts(["en_US/globals/javascripts/framework/synpopup.js"], load_fn, Syn.Config.Framework.AssetsRoot);
		}
		else
		{
			//Load in Syn.Popup legacy
			$.getScripts(["framework/synpopup.packed.js"], load_fn, Syn.Config.PortalRoot+"js/");
		}
	},

	/**
	 * Live connects a tags for link submissions via ajax.
	 * @param {String|Object} sel
	 * @param {String|Function} method
	 */
	hrefToAjax: function(sel, method, extra_opts)
	{
		var obj = sel;
		if (typeof(obj) == "string")
		{
			obj = this.container().find(sel);
		}

		var self = this;
		obj.live("click", function()
		{
			if (method)
			{
				var a = [this];
				(typeof(method) == "string") ? self[method].apply(self, a) : method.apply(self, a);
			}

			var params = self.queryStrToObject($(this).attr("href"));
			self.submit(params,extra_opts);

			return false;
		});
	},

	/**
	 * Converts a query string to an object.
	 * @param {String} query_string
	 * @return {Array}
	 */
	queryStrToObject: function(query_string)
	{
		// query_string can be just a query string, or it can be a URL.  If it's a URL
		// with no query string, return an empty object.
		if (query_string.match(/^https?:\/\//) && query_string.indexOf("?") === -1)
		{
			return {};
		}

		var qs = query_string.match(/(?:^|\?)([^?]+)#?(?=#|$)/);
		qs = (qs) ? qs[1] : '';

		var params = qs.split(/&/);

		var arr = {};
		for (i = 0; i < params.length; ++i)
		{
			// PHP and JavaScript encode spaces differently.  Actually, PHP encodes spaces differently
			// as well.  http_build_query() in PHP encodes spaces as + (whereas rawurlencode() does %20).
			// JavaScript on the other hand encodes spaces a %20 only and doesn't encode the plus.  To fix this
			// we'll manually decode the plus as a space and then decode the rest.
			var keyvalue = params[i].split(/=/);
			var key = keyvalue[0];
			key = key.replace(/\+/g, ' ');
			key = decodeURIComponent(key);

			var value = keyvalue[1];
			if (value)
			{
				value = value.replace(/\+/g, ' ');
				value = decodeURIComponent(value);
			}
			arr[key] = (value) ? value : '';
		}

		return arr;
	},

	encodeDomId: function(str)
	{
	  return str.replace(/\W/g, function (char)
	  {
		return '-'+char.charCodeAt(0).toString(16);
	  });
	},

	decodeDomId: function(str)
	{
	  return str.replace(/\-([0-9a-f]{2})/ig, function (str,hex)
	  {
		return String.fromCharCode(parseInt(hex,16));
	  });
	}
});
;
/**
 * The Syn.ComponentMgr Static Class
 * @class Syn.ComponentMgr
 */
Syn.ComponentMgr =
{
	/**
	 * Map of component instances by class
	 * @member Syn.ComponentMgr
	 */
	instancesByClass: {},

	/**
	 * Map of instances by uid
	 * @member Syn.ComponentMgr
	 */
	instancesByUid: {},

	/**
	 * Instantiate a component instance
	 * @member Syn.ComponentMgr
	 */
	instantiate: function(config)
	{
		config['uid'] = config['uid'] || config['event_id'];

		var exists = Syn.ComponentMgr.instancesByUid[config['uid']];

		if (exists && exists.config['class_name'] == config['class_name'])
		{
			exists.onAjaxUpdate(config);
			return exists;
		}

		if (config["class_name"])
		{
			var instance = new (window["eval"](config['class_name']))(config);
			var inst_class_cache = Syn.ComponentMgr.instancesByClass[config['class_name']] || [];
			Syn.ComponentMgr.instancesByClass[config['class_name']] = inst_class_cache;

			inst_class_cache.push(instance);
			Syn.ComponentMgr.instancesByUid[instance.uid] = instance;
			return instance;
		}

		return false;
	},

	/**
	 * Get an array of instances of a particular component class
	 * @param {String} class The class of component to
	 * @return {Array} An array of instances
	 */
	getInstancesByClass: function(cclass)
	{
		return Syn.ComponentMgr.instancesByClass[cclass] || [];
	},

	/**
	 * Get an instance of a component based on uid
	 * @param {String} uid The uid of the component
	 * @return {Object} The component instance
	 */
	getInstanceByUid: function(uid)
	{
		return Syn.ComponentMgr.instancesByUid[uid];
	},

	/**
	 * Remove a component instance from the component manager
	 * @param {Object} instance The instance to be removed from the page
	 */
	remove: function(instance)
	{
		var class_arr;
		class_arr = Syn.ComponentMgr.instancesByClass[instance.config['class_name']];

		if (!class_arr)
		{
			return;
		}

		for (var i=0; i<class_arr.length; i++ )
		{
			if (class_arr[i] == instance)
			{
				class_arr.splice(i,1);
				break;
			}
		}

		if ( Syn.ComponentMgr.instancesByUid[instance.uid] == instance )
		{
			delete Syn.ComponentMgr.instancesByUid[instance.uid];
		}

		if (window['dd_writeCookie'])
		{
			dd_writeCookie();
		}
	}
};
;
/**
 * Create a Popup instance.
 * @constructor
 */
Syn.Popup = Class.extend(
{
	/**
	 * Initialize the Popup class. This is called automatically by the default constructor.
	 * @member Syn.Popup
	 */
	init: function ()
	{
		if (typeof Syn.Popup.popup_instance_uid == 'undefined')
		{
			Syn.Popup.popup_instance_uid = 0;
		}
		this.popup_instance_uid = Syn.Popup.popup_instance_uid++;
		this.popup_counter = 0;
		this.current_popup = false;
	},

	/**
	 * Popup a component
	 * @param options {Object} Options
	 {
		 * component {Object | String} (Uri/avs if string)(Optional)
		 * - uri {String} Component Uri To Popup
		 * - params {Object} parameters passed to the component
		 * title {String} Title of component (Optional, overrides popup component title)
		 * layout {String} Layout of popup component, ie controls width (Optional, single|double|triple) 300px,612px, 960px) If not provided, defaults to single)
		 * css_class {String} CSS Class of popup component (Optional, If not provided, uses name of popup component)
		 * show_loading {String} true|false (Optional)
		 * draggable: true|false (Optional)
		 * closeable: true|false (Optional)
		 * resizable: true|false (Optional)
		 * modal: true|false (Optional)
		 * close_on_blur: true|false (Optional)
		 * show_title: true|false (Optional)
		 * center: "screen"|"#element_id" (Optional)
		 * max_popups: 1,2,3... (Optional) Defaults to 1)
		 * top: xxx (Optional)
		 * left: xxx (Optional)
		 * width: xxx (Optional)
		 * height: xxx (Optional)
	 }
	 *
	 * @param obj {Object} The object that holds callback method.
	 * @param method {String|Function} Either a string method name or function used for callback.  (Optional)
	 * @param args {Array} Optional args for the callback.  (Optional)
	 *
	 */
	popup: function(options, obj, method, args)
	{
		var that = this;
		var options = options || {};
		var args = args || [];
		options['max_popups'] = options['max_popups'] || 1;
		options['title'] = options['title'] || "";
		options['component_zone'] = 'zone://popup/'+(this.popup_instance_uid)+"/"+this.popup_counter++;
		options['show_loading'] = (typeof options['show_loading'] != 'undefined') ? options['show_loading'] : true;
		var callback_fn = function(result)
		{
			if (result)
			{
				if (options['show_loading'])
				{
					$('#popup_loading_indicator').remove();
				}

				if (that.popup_counter > options['max_popups'] && that.current_popup)
				{
					$(that.current_popup).remove();
				}
				//Appends popup to the end of the body
				$(document.body).append(result.content);
				that.current_popup  = $(document.body).find(".syn_popup:last")[0];

				if (typeof method == 'string')
				{
					obj[method].apply(obj, [that.current_popup].concat(args));
				}
				else if(typeof method != 'undefined' && method)
				{
					method.apply(obj, [that.current_popup].concat(args));
				}
			}
		};

		var left = options['left'];
		var top = options['top'];

		if (options['center'] && options['center'] == 'screen')
		{
			left = ($(window).width() / 2) + ($(window).scrollLeft()) + 'px';
			top = ($(window).height()/2) + ($(window).scrollTop()) + 'px';
		}
		else if (options['center'] && $(options['center']).length > 0)
		{
			options['parent_key'] = $(options['center']).attr('id');
			left = ($(options['center']).offset().left) + ($(options['center']).width() / 2) + 'px';
			top = ($(options['center']).offset().top) + ($(options['center']).height() / 2) + 'px';
		}

		if (options['show_loading'])
		{
			$(document.body).append('<div id="popup_loading_indicator"></div>');
			$('#popup_loading_indicator').css({'left': left,'top': top});
		}
		
		var params = (options['component'] && options['component']['params']) ? options['component']['params'] : {};
		params['popup_component'] = options['component']['uri'] ? options['component']['uri'] : options['component'] || '';
		
		//If an action parameter is specified, rename it to popup_action and delete action
		if (params['action'])
		{
			params['popup_action'] = params['action'];
			params['action'] = null;
			delete params['action'];
		}

		//Append popup parameters to params array
		for (key in options)
		{
			if (key !='component')
			{
				params['popup_'+key] = options[key];
			}
		}

		Syn.ComponentUtils.getComponent(
			'component://Synacor/Portal/Components/Popup/',
			options['component_zone'],
			params,
			this,
			callback_fn);
	}
});;
/**
 * Tracking metrics namespace. 
 */
Syn.Tracking = {};

/**
 * Tracking module for images
 */
Syn.Tracking.Image =
{
	/**
	 * Record parameters to the tracking system
	 * @member Syn.Tracking.Image 
	 * @param {Object} params
	 */
	record: function(params)
	{
		var args = params['args'];
		var dt   = new Date();
		args['ts'] = dt.getTime();
		var img = document.createElement('img');
		var url = Syn.Config.PortalRoot + 'images/track/track.gif?' + jQuery.param( args );
		img.src = url;
		$(document.body).append(img);
	}
};

/**
 * Tracking Module for Omniture
 */
Syn.Tracking.Omniture =
{
	/**
	 * Record parameters to the tracking system
	 * @member Syn.Tracking.Image 
	 * @param {Object} params
	 */
	record: function(params)
	{
		var om = Syn.Config.Omniture;
		var args = params['args'];
		var s=s_gi(om['account']);

		if (!s)
		{
			return;
		}

		s.pageName = om['page_name'];
		s.server   = om['server'];
		s.channel  = om['context'];

		var track_vars = [];

		for ( k in om['omniture_variable_mappings'] )
		{
			var om_key = om['omniture_variable_mappings'][k] || k;
			s[ om_key ] = args[k]; 			
			track_vars.push( om_key );
		}

		s.linkTrackVars = track_vars.join(',');

		var s_code= params['event'] == 'load' ||  params['event'] == 'ready' ? s.t() : s.tl();

		if (s_code)
		{
			$('head').append(s_code);
		}
	}
};


jQuery.fn.extend( 
{
	/**
	 * Wrapper over bind that enables you to connect events to objects, not just callbacks
	 *
	 * @param type {String} Event type (click,focus,etc)
	 * @param obj {Object} The object you want to bind the event to
	 * @param method {String|Function} Either a string method name or function reference to call on obj
	 * @param args {Array} Optional arguments to pass to the callback (instead of the default ones) 
	 */
	track: function( params ) 
	{
		var module = params['module'];
		var args   = params['args'];
		var ev_t   = params['event'];
		var live   = params['live'];
		var defer  = params['defer'];

		if ( !Syn.Tracking[module] )
		{
			return this;
		}

		return this[ live ? 'live' : 'bind' ]( ev_t, function (ev) 
		{
			if (params['defer'] == 'unload')
			{
				$(window).unload(  function(){ Syn.Tracking[module].record(params); } );
			}

			else if (typeof( params['defer'] ) == 'number' )
			{
				setTimeout( function(){ Syn.Tracking[module].record(params); }, params['defer']  ); 
			}

			else
			{
				Syn.Tracking[module].record(params);
			}

			return true;
		}); 
	}
});
;
function __syn_showTabbedComponent(tab, pzi, index)
{
	var i = 0;
	var container       = document.getElementById('tabbed_component_' + pzi + '_container');
	var componentToShow = document.getElementById('tabbed_component_' + pzi + '_' + index);
	if (!container || !componentToShow)
	{
		return;
	}

	// Hide all other components
	for (i = 0; i < container.childNodes.length; i++)
	{
		var componentDiv = container.childNodes[i];
		if (componentDiv.style && componentDiv != componentToShow)
		{
			componentDiv.style.display = 'none';
		}
	}

	// Show the selected component
	componentToShow.style.display = 'block';
	componentToShow.className     = 'on';

	var parentList = tab.parentNode;
	// Get default class name
	var defaultClassName = '';
	for (i = 0; i < parentList.childNodes.length; i++)
	{
		var element = parentList.childNodes[i];
		if (element != tab && element.className != 'on' && element.className && element.className != 'undefined')
		{
			defaultClassName = element.className;
			break;
		}
	}
	// Deselected all tabs 
	for (i = 0; i < parentList.childNodes.length; i++)
	{
		var element = parentList.childNodes[i];

		if (element.nodeName.toLowerCase() == 'li')
		{
			element.className = defaultClassName;
		}
	}

	// Set selected tab to on
	tab.className = 'on';
}

/***** Expedia javascript functions *****/

var divs = new Array('syn_exp_travel_flight', 'syn_exp_travel_car', 'syn_exp_travel_hotel', 'syn_exp_travel_cruise');

function syn_show_exp(obj)
{
	for (var i = 0; i < divs.length; i++)
	{
		if (document.getElementById(obj) && obj == divs[i])
		{
			document.getElementById(obj).style.display='block';
		}
		
		else if(document.getElementById(divs[i]))
		{
			document.getElementById(divs[i]).style.display='none';
		}
	}
}

function syn_check_exp(obj)
{
	if (document.getElementById(obj))
	{
		document.getElementById(obj).checked=true;
	}
}
;
/***** Utility functions *****/

Number.prototype.NaN0 = function()
{ 
	return isNaN(this) ? 0 : this;
}

function Utils()
{
}

Utils.getPosition = function(e)
{
	var root_offset_y = e.offsetTop;
	if (navigator.userAgent.indexOf('MSIE') != -1) 
	{
		e = e.offsetParent;
	}

	var left = 0;
	var top = 0;
	while (e.offsetParent)
	{
		left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
		top += e.offsetTop  + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);
		e = e.offsetParent;
	}

	left += e.offsetLeft + (e.currentStyle ? (parseInt(e.currentStyle.borderLeftWidth)).NaN0() : 0);
	top += e.offsetTop  + (e.currentStyle ? (parseInt(e.currentStyle.borderTopWidth)).NaN0() : 0);

	return { 
		x: left,
		y: top + (navigator.userAgent.indexOf('MSIE') != -1 ? root_offset_y : 0) 
	};
}

Utils.mouseCoords = function(ev)
{	
	if (!ev) 
	{
		var ev = window.event; 
	}

	if (ev.pageX || ev.pageY)
	{
		return {
			x: ev.pageX,
			y: ev.pageY
		};
	} 
	else if (ev.clientX || ev.clientY)
	{
		return {
			x: ev.clientX + document.body.scrollLeft + document.documentElement.scrollLeft,
			y: ev.clientY + document.body.scrollTop + document.documentElement.scrollTop
		};
	}
	else
	{
		return {
			x: 0,
			y: 0
		};
	}
}

Utils.getMouseOffset = function(target, ev)
{
	var docPos = getPosition(target);
	var mousePos = mouseCoords(ev ? ev : window.event);
	return {
		x: mousePos.x - docPos.x,
		y: mousePos.y - docPos.y
	};
}

Utils.getPageSize = function()
{
	var pageWidth = 0, pageHeight = 0;
	if (typeof( window.innerWidth ) == 'number')
	{
		//Non-IE
		pageWidth = window.innerWidth;
		pageHeight = window.innerHeight;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		//IE 6+ in 'standards compliant mode'
		pageWidth = document.documentElement.clientWidth;
		pageHeight = document.documentElement.clientHeight;
	}
	else if (document.body && (document.body.clientWidth || document.body.clientHeight))
	{
		//IE 4 compatible
		pageWidth = document.body.clientWidth;
		pageHeight = document.body.clientHeight;
	}

	return {
		x: pageWidth,
		y: pageHeight
	};
}

Utils.hitTest = function(element, x, y)
{
	var pos = Utils.getPosition(element);
	var ex  = pos.x;
	var ey  = pos.y;
	var ew  = elmt.offsetWidth;
	var eh  = elmt.offsetHeight;
	
	return (x >= ex && x <= ex + ew && y >= ey && y <= ey + eh) ? true : false;
}

Utils.horizontalHitTest = function(element, y)
{
	var pos = Utils.getPosition(element);
	var ey  = pos.y;
	var eh  = element.offsetHeight;
	
	return (y >= ey && y <= ey + eh) ? true : false;
}

Utils.addListener = function(event, method, use_capture)
{
	use_capture = use_capture ? use_capture : false;

	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener(event, method, use_capture); // gecko, safari, konqueror and standard.
	}
	else if (typeof document.attachEvent != 'undefined')
	{
		document.attachEvent('on' + event, method); // IE
	}
	else
	{
		window['on' + event] = method;
	}
}

Utils.disableSelection = function(element) 
{
	element.onselectstart = function() 
	{
		return false;
	};
	//element.unselectable = 'on';
	element.style.MozUserSelect = 'none';
}

/***** Portal Events Handler *****/

function PortalEvents(){}

PortalEvents.listeners =
{
'onLoad'   :[],
'mouseMove':[],
'mouseDown':[],
'mouseUp'  :[]
};

PortalEvents.addListener = function (event,method,object)
{
	PortalEvents.listeners[event].push( {'method':method,'object':object} );
}

PortalEvents.onEvent = function (type,ev)
{
	ev = ev || window.event;

	var ls = PortalEvents.listeners[type];

	for (var i=0; i<ls.length; i++ )
	{
		var listener = ls[i];

		if ( typeof(listener['object']) == 'object' )
		{
			var target = listener['object'];
			target[listener['method']](ev);
		}
		else
		{
			listener['method'](ev);
		}
	}
}


// Install events
Utils.addListener('mousedown', function(ev) { PortalEvents.onEvent( 'mouseDown' , ev); }, false);
Utils.addListener('mouseup', function(ev) { PortalEvents.onEvent( 'mouseUp'   , ev); }, false);
Utils.addListener('mousemove', function(ev) { PortalEvents.onEvent( 'mouseMove' , ev);  }, false);

/***** Legacy functions *****/

function hide_overlay_elements(id)
{
	var element = document.getElementById(id)
	element.setAttribute('forced_hidden', 'true');
	element.style.visibility = 'hidden';
}

function show_overlay_elements(id)
{
	var element = document.getElementById(id)
	element.removeAttribute('forced_hidden');
	element.style.visibility = 'visible';
}

function hide_disruptive_overlay_elements()
{
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        {
                var ieversion=new Number(RegExp.$1)
                if (ieversion >= 6 && ieversion < 7) // only hide elements if the browser is ie6
                {
			hide_elements_by_tag(['iframe', 'object', 'embed']);
		}
	}
}

function show_disruptive_overlay_elements()
{
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
        {
                var ieversion=new Number(RegExp.$1)
                if (ieversion >= 6 && ieversion < 7) // only show elements if the browser is ie6
                {
			show_elements_by_tag(['iframe', 'object', 'embed']);
		}
	}
}

function hide_elements_by_tag(element_names)
{
	for (var h = 0; h < element_names.length; h++)
	{
		var elements = document.getElementsByTagName(element_names[h]);
		for (var j = 0; j < elements.length; j++)
		{
			if (elements[j].style.visibility != 'hidden')
			{
				elements[j].setAttribute('forced_hidden', 'true');
				elements[j].style.visibility = 'hidden';
			}
		}
	}
}

function show_elements_by_tag(element_names)
{
	for (var h = 0; h < element_names.length; h++)
	{
		var elements = document.getElementsByTagName(element_names[h]);
		for (var j = 0; j < elements.length; j++)
		{
			if (elements[j].getAttribute('forced_hidden') == 'true')
			{
				elements[j].removeAttribute('forced_hidden');
				elements[j].style.visibility = 'visible';
			}
		}
	}
}

function SYNACOR_findObj(n, d)
{
	var p, i, x;
	if (!d)
	{
		d = document;
	}
	if ((p = n.indexOf("?")) > 0 && parent.frames.length)
	{
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0, p);
	}
	if (!(x=d[n]) && d.all)
	{
		x = d.all[n];
	}
	for (i = 0; !x && i < d.forms.length; i++)
	{
		x = d.forms[i][n];
	}
	for (i = 0; !x && d.layers && id.layers.length; i++)
	{
		x = SYNACOR_findObj(n, d.layers[i].document);
	}
	if (!x && d.getElementById)
	{
		x = d.getElementById(n);
	}

	return x;
}

function find_pos_x(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
	}
	
	return curleft;
}

function find_pos_y(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
	}
	return curtop;
}

function SYNACOR_Snap() 
{
	var args = SYNACOR_Snap.arguments;
	var x = 0;
	var y = 0;

	for (offset = 0; offset < args.length; offset += 4)
	{
		var source_element = args[offset];
		var move_element = args[offset + 1];
		var dest_x = parseInt(args[offset + 2]);
		var dest_y = parseInt(args[offset + 3]);

		source_element = document.getElementById(source_element);
		move_element   = document.getElementById(move_element);
		if (!source_element || !move_element)
		{
			return;
		}

		x = find_pos_x(source_element);
		y = find_pos_y(source_element);

		try
		{
			move_element.style.left = (x + dest_x) + 'px';
			move_element.style.top  = (y + dest_y) + 'px';
		}
		catch (e)
		{
			try
			{
				move_element.offsetLeft = x + dest_x;
				move_element.offsetTop  = y + dest_y;
			}
			catch (e)
			{
			}
		}
	}
	return;
}


function SYNACOR_showHideLayers()
{ //v6.0
	var i, p, v, obj, vv, vd;
	var args = SYNACOR_showHideLayers.arguments;
	for (i = 0; i < (args.length-2); i += 3)
	{
		if ((obj = SYNACOR_findObj(args[i])) != null)
		{
			v = args[i + 2];
			if (obj.style)
			{
				obj = obj.style;
				vv  = (v == 'show') ? 'visible' : (v == 'hide') ? 'hidden' : v;
				vd  = (v == 'show') ? 'block'   : (v == 'hide') ? 'none'   : v;
			}
			obj.visibility=vv;
			obj.display=vd;
		}
	}
}

function getXMLRequestObject()
{
	try	
	{
		return new ActiveXObject('Msxml2.XMLHTTP')
	}
	catch (exception) 
	{
		try 
		{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (exception)
		{
			try
			{
				return new XMLHttpRequest()
			}
			catch (exception)
			{
				return false;
			}
		}
	}
}

function get_cdata(dom, tag)
{
	var tag = dom.getElementsByTagName(tag);
	if (!tag || tag.length < 1 || !tag[0].firstChild ||	!tag[0].firstChild.data)
	{
		return '';
	}
	return tag[0].firstChild.data;
}

function get_attribute(dom, tag, attribute)
{
	var tag = dom.getElementsByTagName(tag);
	if (!tag || tag.length < 1 || !tag[0].attributes ||
	     tag[0].attributes.length < 1 || !tag[0].attributes.getNamedItem(attribute))
	{
		return '';
	}
	
	return tag[0].attributes.getNamedItem(attribute).value;
}

function hide_id(id_to_hide)
{
	var what = document.getElementById(id_to_hide);
	if (what)
	{
		what.style.display='none';
	}
}

function base64encode(str)
{
	var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	var out;
	var i;
	var len;
	var c1;
	var c2;
	var c3;
	var len = str.length;
	var i = 0;
	out = "";
	while (i < len)
	{
		c1 = str.charCodeAt(i++) & 0xff;
		if (i == len)
		{
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt((c1 & 0x3) << 4);
			out += "==";
			break;
		}
		c2 = str.charCodeAt(i++);
		if (i == len)
		{
			out += base64EncodeChars.charAt(c1 >> 2);
			out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
			out += base64EncodeChars.charAt((c2 & 0xF) << 2);
			out += "=";
			break;
		}
		c3 = str.charCodeAt(i++);
		out += base64EncodeChars.charAt(c1 >> 2);
		out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4));
		out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6));
		out += base64EncodeChars.charAt(c3 & 0x3F);
	}
	return out;
}

function trimStr(str)
{
	str = str.replace(/^\s*/, "");
	str = str.replace(/\s*$/, "");
	
	return str;
}

function add_event_listener(oRef, en, fn)
{
	obj = (typeof oRef == 'string')? document.getElementById(oRef) : oRef;
	if (window.addEventListener) 
	{
		obj.addEventListener(en, fn, false);
	}
	else if (window.attachEvent) 
	{
		obj.attachEvent('on'+en, fn);
	}
}

function remove_event_listener(oRef, en, fn)
{
	obj = (typeof oRef == 'string') ? document.getElementById(oRef) : oRef;
	if (window.addEventListener) 
	{
		obj.removeEventListener(en, fn, false);
	}
	else if (window.attachEvent) 
	{
		obj.detachEvent('on' + en, fn);
	}
}


function reg_repl_esc(text)
{
	return text.replace(/\$/g, '&#36;');
}


/**
 * Deprecated, do not use
 */
function openWindow(theURL, winName, features)
{
	window.open(theURL, winName, features);
}


function SYNACOR_swapImgRestore()
{ //v3.0
	var i, x;
	var a = document.SYNACOR_sr;
	for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
	{
		x.src = x.oSrc;
	}
}



function SYNACOR_swapImage() 
{ //v3.0
	var i, j = 0, x;
	var a = SYNACOR_swapImage.arguments;

	document.SYNACOR_sr = new Array;
	for (i = 0; i < (a.length - 2); i += 3)
	{
		if ((x = SYNACOR_findObj(a[i])) != null)
		{
			document.SYNACOR_sr[j++] = x;
			if (!x.oSrc)
			{
				x.oSrc = x.src;
			}
			x.src = a[i + 2];
		}
	}
}

function waterimg(arg) 
{
       window.location = arg;
}

function addLoadEvent(fn)
{
	if (window.addEventListener)
	{
		window.addEventListener('load', fn, false);
	}
	else if (window.attachEvent)
	{
		window.attachEvent('onload', fn);
	}
};
/**
 * Ajax JavaScript framework
 * Loosely based off of the Prototype JavaScript framework
 *    Prototype is (c) 2005 Sam Stephenson <sam@conio.net>
 *    Prototype is freely distributable under the terms of an MIT-style license.
 *    For details, see the Prototype web site: http://prototype.conio.net/
 */

SynAjax_Request_Events =
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];


function getTransport() 
{
	try	
	{
		return new ActiveXObject('Msxml2.XMLHTTP')
	}
	catch (exception) 
	{
		try 
		{
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (exception)
		{
			try
			{
				return new XMLHttpRequest()
			}
			catch (exception)
			{
				return false;
			}
		}
	}
}

SynAjax = function()
{
	var self = new Object();

	self.transport = getTransport();
	
	self.request = function(url, options) 
	{
		this.doRequest(null, url, options);
	}

	self.update = function(element_id, url, options)
	{
		this.doRequest(element_id, url, options);
	}

	self.doRequest = function(element_id, url, options)
	{
		this.url        = url;
		this.options    = options;
		this.updater    = element_id;
		this.parameters = this.options.parameters || '';

		try 
		{
			if (this.options.method == 'get')
			{
				this.url += (this.url.match(/\?/) ? '&' : '?') + this.parameters;
			}

			var loader = this;
			this.transport.onreadystatechange = function()
			{
				loader.onStateChange.call(loader);
			}
			this.transport.open(this.options.method, this.url, true);
			this.setRequestHeaders();

			var body = this.options.postBody ? this.options.postBody : this.parameters;
			this.transport.send(this.options.method == 'post' ? body : null);

		}
		catch (exception) 
		{ }
	}

	self.setRequestHeaders = function() 
	{
		var requestHeaders =
			['X-Requested-With', 'XMLHttpRequest'];

		if (this.options.method == 'post') 
		{
			requestHeaders.push('Content-type',	'application/x-www-form-urlencoded');

			/**
			 * Force "Connection: close" for Mozilla browsers to work around
			 * a bug where XMLHttpReqeuest sends an incorrect Content-length
			 * header. See Mozilla Bugzilla #246651.
			 */
			if (this.transport.overrideMimeType)
				requestHeaders.push('Connection', 'close');
		}

		if (this.options.requestHeaders)
		{
			requestHeaders.push.apply(requestHeaders, this.options.requestHeaders);
		}

		for (var i = 0; i < requestHeaders.length; i += 2)
		{
			this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]);
		}
	}

	self.onStateChange = function()
	{
		if (!this.transport)
		{
			if (this.transport == 'undefined')
			{
				return;
			}
		}

		var event = SynAjax_Request_Events[this.transport.readyState];

		if (this.transport.readyState != 1)
		{
			if (event == 'Complete')
			{
				if (this.updater != null)
				{
					var element = document.getElementById(this.updater);
					try 
					{
						element.innerHTML = this.transport.responseText;
					}
					catch (exception)
					{ }
				}

				try
				{
					this.options.onComplete(this.transport);
				}
				catch (exception)
				{ }

				if ((this.header('Content-type') || '').match(/^text\/javascript/i))
				{
					this.evalResponse();
				}
			}

			// Avoid memory leak in MSIE: clean up the oncomplete event handler 
			if (event == 'Complete')
			{
				this.transport.onreadystatechange = function(){};
			}
		}
	}

	self.header = function(name)
	{
		try
		{
			return this.transport.getResponseHeader(name);
		}
		catch (exception)
		{
			return null;
		}
	}

	self.evalResponse = function()
	{
		try
		{
			return eval(this.transport.responseText);
		}
		catch (exception)
		{
			return null;
		}
	}

	return self;
}
;
/**** $Id: login.js,v 1.4 2008/06/30 16:09:07 rhorn Exp $ ****/

function hideSubmitButton()
{
	document.getElementById('login_button').style.display = 'none';
	document.getElementById('login_processing').style.display = 'block';
	return true;
}

function showSubmitButton()
{
	document.getElementById('login_button').style.display = 'block';
	document.getElementById('login_processing').style.display = 'none';
	return true;
}

function login_xml_response_handler(req)
{
	// split result by |
	var result = req.responseText.split('|');

	if (result[0] == 'OK')
	{
		// result was ok
		// result[1] has bounceto value
		try
		{
			if (result[1].length > 0 && result[1].match(/^javascript:/))
			{
				var js_to_eval = result[1].replace(/^javascript:/, '');
				eval(js_to_eval);
			}
			else if (result[1].length > 0 && result[1].indexOf('undefined') == -1)
			{
				window.location.href = result[1];
			}
			else
			{
				window.location.reload();
			}
		}
		catch (e)
		{
			window.location.reload();
		}
		//hide_login();
	}
	else
	{
		showSubmitButton();
		// invalid user or password
		document.getElementById('login_error').innerHTML = result[1];
		document.getElementById('login_error').style.display = 'block';
	}
}

function logout_xml_response_handler(req)
{
	// split result by |
	var result = req.responseText.split('|');

	if (result[0] == 'OK')
	{
		try
		{
			window.location.reload();
		}
		catch (e)
		{
			window.location.href = result[1];
		}
	}
}

function logout_send_xml_http_request()
{
	var url = Syn.Config.PortalRoot + 'files/charter/ajaxapi/login.php';
	params = 'action=logout';

	new SynAjax().request(url,
	{
		method: 'post',
		parameters: params,
		onComplete: logout_xml_response_handler
	}
	);
	return false;
}

function login_send_xml_http_request(username, passwd, bounceto, remember_me)
{
	document.getElementById('login_error').style.display = 'none';
	var url = Syn.Config.PortalRoot + 'files/charter/ajaxapi/login.php'; 
	var params  = 'username=' + encodeURIComponent(username);
	params += '&passwd=' + encodeURIComponent(passwd);
	params += '&bounceto=' + encodeURIComponent(bounceto);
	params += '&remember_me=' + encodeURIComponent(remember_me);
	params += '&action=login';
	new SynAjax().request(url,
	{
		method: 'post',
		parameters: params,
		onComplete: login_xml_response_handler
	}
	);
}

function viewport_width()
{
	return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);
}

function viewport_height()
{
	return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);
}

function scrollsize_height()
{
	var test1 = document.body.scrollHeight;
	var test2 = document.body.offsetHeight
	if (test1 > test2)
	{
		return document.body.scrollHeight;
	}
	else
	{
		return document.body.offsetHeight;
	}
}

function scrollsize_width()
{
	return self.scrollWidth || (document.documentElement.scrollWidth || document.body.scrollWidth);
}

function my_scroll_top()
{
	return self.scrollTop || (document.documentElement.scrollTop || document.body.scrollTop);
}

function viewport_size()
{
	return { width: viewport_width(), height: viewport_height() };
}

function hide_adwrapper()
{
	var hadwrapper = document.getElementById('hide_adwrapper');
	if (hadwrapper)
	{
		if (hadwrapper.style.visibility = 'visible')
		{
			hadwrapper.style.visibility = 'hidden';
		}
	}
}

function show_adwrapper()
{
	var hadwrapper = document.getElementById('hide_adwrapper');
	if (hadwrapper)
	{ 
		if (hadwrapper.style.visibility = 'hidden')
		{
			hadwrapper.style.visibility = 'visible';
		}
	}
}

function hide_naughty_wmps()
{
	var wmps = new Array('wmp_vid_player', 'fl_vid_player');
	for (var i = 0; i < wmps.length; i++)
	{
		var owmps = document.getElementById(wmps[i]);
		if (owmps)
		{
			owmps.style.visibility='hidden';
		}
	}		
}

function reveal_naughty_wmps()
{
	var wmps = new Array('wmp_vid_player', 'fl_vid_player');
	for (var i = 0; i < wmps.length; i++)
	{
		var owmps = document.getElementById(wmps[i]);
		if (owmps)
		{
			owmps.style.visibility='visible';
		}
	}	
}

function hide_naughty_iframes()
{
	var ad_frames = document.getElementsByTagName('iframe');
	for (var h = 0; h < ad_frames.length; h++)
	{
		var f = ad_frames[h];
		if (f.style.visibility != 'hidden')
		{
			f.setAttribute('forced_hidden', 'true');
			f.style.visibility = 'hidden';
		}
	}
}

function reveal_naughty_iframes()
{
	var ad_frames = document.getElementsByTagName('iframe');
	for (var h = 0; h < ad_frames.length; h++)
	{
		var f = ad_frames[h];
		if (f.getAttribute('forced_hidden') == 'true')
		{
			f.style.visibility = 'visible';
			f.removeAttribute('forced_hidden');
		}
	}
}

function hide_naughty_tags()
{
	var types = ['embed'];
	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.style.visibility = 'visible')
			{
				tag.style.visibility = 'hidden';
				tag.setAttribute('forced_hidden',true);
			} 
		}
	}
}

function reveal_naughty_tags()
{
	var types = ['embed'];

	for (var i=0;i<types.length;i++)
	{
		var tags = document.getElementsByTagName(types[i]);
		for (var j=0;j<tags.length;j++)
		{
			var tag = tags[j];
			if (tag.getAttribute('forced_hidden'))
			{
				tag.style.visibility = 'visible';
				tag.setAttribute('forced_hidden',false);
			} 
		}
	}
}

function hide_login()
{
	var loginCont = document.getElementById('login_cont');
	var modalCover = document.getElementById('modal_cover');
	reveal_naughty_iframes();
	reveal_naughty_wmps();
	reveal_naughty_tags();
	show_adwrapper();
	loginCont.style.display  = 'none';
	modalCover.style.display = 'none';

	// for IE 6, we hide the dropdowns
	if (navigator.userAgent.indexOf("MSIE 6") > 0)
	{
		login_show_dropdowns();
	}
}

function show_login()
{
	//var vW = 2500;
	var vW = viewport_width();
	var vH = viewport_height();
	var vS = viewport_size();
	var sH = scrollsize_height();
	var sW = scrollsize_width();
	var sT = my_scroll_top();
	var loginCont = document.getElementById('login_cont');
	var modalCover = document.getElementById('modal_cover');
	var closeLogin = document.getElementById('close_login');
	closeLogin.onclick = hide_login;
	window.onscroll = window.onresize = function (e)
	{
		var Client =
		{
			myScrollTop: function()
			{
				return self.scrollTop || (document.documentElement.scrollTop || document.body.scrollTop);
			}
		};
		var sT = Client.myScrollTop();
		loginCont.style.top = ((vH - 295)/2) + sT + 'px';
	};

	hide_naughty_iframes();
	hide_naughty_wmps();
	hide_naughty_tags();
	hide_adwrapper();

	// for IE 6, we hide the dropdowns.
	if (navigator.userAgent.indexOf("MSIE 6") > 0)
	{
		login_hide_dropdowns();
	}

	document.getElementById('login_error').innerHTML = '';
	document.getElementById('login_error').style.display = 'block';
	loginCont.style.width = '600px';
	loginCont.style.height = '295px';
	loginCont.style.clear = 'all';
	loginCont.style.left = (vW - 600) / 2 + 'px';
	loginCont.style.top = (vH - 295) / 2 + 'px';
	loginCont.style.display = 'block';

	if (sH < vH)
	{
		modalCover.style.height = vH + 'px';
	}
	else
	{
		modalCover.style.height = sH + 'px';
	}

// -----------------------------------------------------------------------------------

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

	// for small pages with total width less then width of the viewport
	if (xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	} 
	else 
	{
		pageWidth = xScroll;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

// -----------------------------------------------------------------------------------

var arrayPageSize = getPageSize();
//modalCover.setWidth('modal_cover', arrayPageSize[0]);
//modalCover.style.width = 100 + '%';
//modalCover.style.width = 'auto';
		
if (navigator.userAgent.indexOf("MSIE 6") > 0)
{
	modalCover.style.width = arrayPageSize[0] + 'px';
	//modalCover.style.width = '100%';
}
else
{
	modalCover.style.width = 100 + '%';
	modalCover.style.minWidth = 968 + 'px';
}

modalCover.style.position = 'absolute';
modalCover.style.top = '0px';
modalCover.style.left = '0px';
modalCover.style.display = 'block';
modalCover.style.overflow = 'hidden';
loginCont.style.display = 'block';
//Element.toggle(modalCover);
//Element.toggle(loginCont);

document.getElementById('__syn_login_username').focus();
}

function login_hide_dropdowns()
{
	var elements = document.getElementsByTagName('select');
	var i = 0;
	for (i = 0; i < elements.length; i++)
	{
		if (elements[i].type == 'select-one')
		{
			elements[i].style.display = 'none';
		}
	}
	if (typeof window.pldv_hide_overlay == 'function')
	{
		pldv_hide_overlay()
	};
}

function login_show_dropdowns()
{
	var elements = document.getElementsByTagName('select');
	var i = 0;
	for (i = 0; i < elements.length; i++)
	{
		if (elements[i].type == 'select-one')
		{
			elements[i].style.display = '';
		}
	}
	if (typeof window.pldv_show_overlay == 'function')
	{
		pldv_show_overlay()
	};
}

function auto_login()
{
	if (!__LOGGED_IN__ && document.location.search.indexOf("message=secondary_login") != -1)
	{
		var login_form_div = document.getElementsByTagName('DIV');
		var len = login_form_div.length;
		while (len--)
		{
			if (login_form_div[len].className == 'login_form')
			{
				login_form_div = login_form_div[len];
				break;
			}
		}
		if (!login_form_div)
		{
			alert("Login Disabled, define class 'login_form'");
			return;
		}
		var myLoginForm = login_form_div.getElementsByTagName('form');
		if (!myLoginForm || myLoginForm.length == 0)
		{
			alert("Login Disabled, define element 'form' in class 'login_form'");
			return;
		}

		var regexS = "[\\?&]bounceto=([^&#]*)";
		var regex = new RegExp( regexS );
		var tmpURL = window.location.href;
		var results = regex.exec( tmpURL );
		var bounceto = window.location.href;

		if ( results != null )
		{
			bounceto = results[1]; // do not unescap
		}

		myLoginForm[0].action = bounceto;
		myLoginForm[0].onsubmit = _login_form_onsubmit;
		show_login();
	}
}

function _login_form_onsubmit()
{
	var username;
	var password;
	var remember_me = (document.getElementById('__syn_login_remeber_me').checked ? 'Y' : '');
	var inputs = this.getElementsByTagName('input');
	for (l = 0; l < inputs.length; l++)
	{
		if (inputs[l].className == 'username')
		{
			username = inputs[l].value;
		}
		if (inputs[l].className == 'passwd')
		{
			password = inputs[l].value;
		}
	}
	login_send_xml_http_request(username, password, this.action, remember_me);
	return false;
}

function _login_a_onclick()
{
	var login_form_div = document.getElementsByTagName('DIV');
	var len = login_form_div.length;
	while (len--)
	{
		if (login_form_div[len].className == 'login_form')
		{
			login_form_div = login_form_div[len];
			break;
		}
	}
	if (!login_form_div)
	{
		alert("Login Disabled, define class 'login_form'");
		return;
	}
	var myLoginForm = login_form_div.getElementsByTagName('form');
	if (!myLoginForm || myLoginForm.length == 0)
	{
		alert("Login Disabled, define element 'form' in class 'login_form'");
		return;
	}
	myLoginForm[0].action = this.href;
	myLoginForm[0].onsubmit = _login_form_onsubmit;
	show_login();
	return false;
}

function _login_catcher(e)
{
	var target = e.target || e.srcElement;
	var a_element = null;
	var l_element = null;
	var parent = target;

	for (var i=0; i < 6; i++)
	{
		if (!a_element && parent.tagName == "A")
		{
			a_element = parent;
			if (a_element.login_capture)
			{
				return;
			}
		}
		if (!l_element && parent.className == "site_login")
		{
			l_element = parent;
			break;
		}
		parent = parent.parentNode ? parent.parentNode : parent.parentElement;
		if (parent == null)
		{
			return;
		}
	}

	if (!a_element || !l_element)
	{
		return;
	}

	a_element.onclick = _login_a_onclick;
	a_element.login_capture = true;
	return true;
}

if (!__LOGGED_IN__)
{
	if (window.document && window.document.addEventListener)
	{
		window.document.addEventListener('mousedown', _login_catcher, false);
	}
	else if(window.document && window.document.attachEvent)
	{
		window.document.attachEvent('onmousedown', _login_catcher);
	}
}

function createRequestObject() 
{
	FORM_DATA = new Object();
	// The Object ("Array") where our data will be stored.
	separator = ',';
	// The token used to separate data from multi-select inputs
	query = '' + this.location;
	// Get the current URL so we can parse out the data.
	// Adding a null-string '' forces an implicit type cast
	// from property to string, for NS2 compatibility.
	query = query.substring((query.indexOf('?')) + 1);
	// Keep everything after the question mark '?'.

	if (query.length < 1) 
	{ 
		return false; 
	}  // Perhaps we got some bad data?

	keypairs = new Object();
	numKP = 1;
	// Local vars used to store and keep track of name/value pairs
	// as we parse them back into a usable form.

	while (query.indexOf('&') > -1) 
	{
		keypairs[numKP] = query.substring(0,query.indexOf('&'));
		query = query.substring((query.indexOf('&')) + 1);
		numKP++;
		// Split the query string at each '&', storing the left-hand side
		// of the split in a new keypairs[] holder, and chopping the query
		// so that it gets the value of the right-hand string.
	}

	keypairs[numKP] = query;
	// Store what's left in the query string as the final keypairs[] data.

	for (i in keypairs) 
	{
		keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
		// Left of '=' is name.
		keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
		// Right of '=' is value.
		while (keyValue.indexOf('+') > -1) 
		{
			keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
			// Replace each '+' in data string with a space.
		}

		keyValue = unescape(keyValue);
		// Unescape non-alphanumerics

		if (FORM_DATA[keyName]) 
		{
			FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;
			// Object already exists, it is probably a multi-select input,
			// and we need to generate a separator-delimited string
			// by appending to what we already have stored.
		} 
		else 
		{
			FORM_DATA[keyName] = keyValue;
			// Normal case: name gets value.
		}
	}
	return FORM_DATA;
}
FORM_DATA = createRequestObject();

if (FORM_DATA['message'] == 'bad_password')
{
	addLoadEvent(_login_a_onclick);
}

function focusGoogleBar()
{
	if (document.getElementById('q'))
	{
		// use try to eliminate IE7 error
		try
		{
			document.getElementById('q').focus();
		}
		catch (e)
		{
		
		}
	}
}
function addLoadEvent(fn)
{
	if (window.addEventListener)
	{
		window.addEventListener('load', fn, false)
	}
	else if (window.attachEvent)
	{
		window.attachEvent('onload', fn);
	}
}
;
$(document).ready(function(){var premiums=$('#left_nav .premium_services > li').size();var random_premium=(Math.floor(Math.random()*premiums));$('#left_nav .premium_services > li:eq('+random_premium+') ul').slideToggle().prev('h1').children('.trigger').toggleClass('nav_open');if(random_premium!==0&&random_premium!=2){$('#left_nav .comp_container_premiumspotlight:has(img)').wrap('<li class="spotlight"></li>');$('#left_nav .comp_container_premiumspotlight:has(img)').show()}$('#left_nav .container h1 ~ ul:not(.closed)').prev().children('.trigger').addClass('nav_open');var path=location.pathname;if(path.indexOf('/customization/')>=0){$('#left_nav .premium_services').addClass('closed');$('#left_nav .my_account').removeClass('closed')}$('#left_nav .trigger, #left_nav .container > h1 > span').click(function(){$(this).parent().next('ul').slideToggle('normal');$(this).parent().children('.trigger').toggleClass('nav_open')});$('#h-nav-dd-holder #left_nav .level_1 > .container, #site_container_800 #left_nav .level_1 > .container').hover(function(){$(this).children('ul:eq(0)').show();$(this).children('h1').children('.trigger').toggleClass('nav_open')},function(){$(this).children('ul:eq(0)').hide();$(this).children('h1').children('.trigger').toggleClass('nav_open')})});;
var containers         = [];
var state_mousedown    = false;
var dragging_component = null; // Current component being dragged
var drag_offset_x      = 2;
var drag_offset_y      = 10;
var helper_component   = null;
var last_target        = null;

/***** Setup onload function *****/
if (typeof window.addEventListener != 'undefined')
{
	window.addEventListener('load', dd_init, false); // gecko, safari, konqueror and standard.
}
else if (typeof document.addEventListener != 'undefined')
{
	document.addEventListener('load', dd_init, false); // opera 7
}
else if (typeof window.attachEvent != 'undefined')
{
	window.attachEvent('onload', dd_init); // IE
}

/**
 * Helper function to apply special styles/properties to a component when it is being dragged
 */
function dd_beginComponentDrag(component)
{
	if (!component || !component.className)
	{
		return;
	}

	component.className += ' dropzone';
}

/**
 * Helper function to apply special styles/properties to a component when it is dropped
 */
function dd_endComponentDrag(component)
{
	if (!component || !component.className)
	{
		return;
	}

	component.className = component.className.replace(/ dropzone/, '');
}

/**
 * Create helper object, setup events and assign drag&drop containers
 */
function dd_init()
{
	helper_component = document.createElement('div');
	helper_component.style.display = 'none'; 
	helper_component.style.opacity = '0.5'; 
	helper_component.style.filter  = 'alpha(opacity=50)'; 

	document.body.appendChild(helper_component);

	// Create the drag containers
	dd_setDragContainers('drag_container_1', 'drag_container_2', 'drag_container_3');

	$(document).bind('mousemove', dd_event_mouseMove );
	$(document).bind('mouseup',   dd_event_mouseUp );


}

/**
 * Set up the drag containers
 * Loop through the containers passed, loop through their children, looking for an element that has a child in it with 
 * an id that contains "[_]header[_]" to determine which components are draggable
 */
function dd_setDragContainers()
{
	for (var i = 0; i < arguments.length; i++)
	{
		var container_object = document.getElementById(arguments[i]);
		if (container_object)
		{
			containers.push([i + 1, arguments[i]]);
			var draggable_components = dd_getDraggableComponents(container_object);
			for (var j = 0; j < draggable_components.length; j++)
			{
				dd_makeDraggable(i,arguments[i],draggable_components[j]);
			}
		}
	}
}

/**
 * Call a webservice on the server
 * @param container_id {String} The col number
 * @param container {String} The id of the dd col
 * @param component {Object} The component dom element to make draggable
 */
function dd_makeDraggable(container_id,container,component)
{
				component.onmousemove = dd_event_mouseMove;
				component.setAttribute('drag_container', container);
				component.setAttribute('drag_container_id', container_id);
				component.drag_handle = dd_findDragHandle(component);
				component.drag_handle.setAttribute('drag_object', component);

				Utils.disableSelection(component.drag_handle);
				$(component).find('a.comp_header_close').click(function(){return false;}).bind( 'mousedown', 
					function ()
					{
						$(component).fadeOut('fast', 
							function()
							{ 
								$(this).remove(); 
								dd_writeCookie(); 
							}
						);
						return false; 
					} 
				);

				$(component.drag_handle).bind('mousedown', dd_event_mouseDown );
}

/**
 * Function callback for mouse move event
 */
function dd_event_mouseMove(ev)
{
	ev = ev || window.event;

	if (!window.state_mousedown) 
	{
		return true;
	}

	//Set the target to whatever item the mouse is current on.
	var pos    = Utils.mouseCoords(ev);

	// Make sure drag container is good
	var drag_container = document.getElementById(dragging_component.getAttribute('drag_container'));
	if (!drag_container) 
	{
		return false;
	}

	// Move the helper component
	helper_component.style.top  = (pos.y - drag_offset_y) + 'px';

	var sibling = dd_getNextSibling(drag_container, dragging_component, pos.x, pos.y);
	if (sibling == null)
	{ // Append to end of container
		if (dragging_component.nextSibling) // Only if component not already last child
		{
			drag_container.appendChild(dragging_component);
		}
	}
	else
	{ // Insert before existing
		if (dragging_component.nextSibling != sibling)
		{
			drag_container.insertBefore(dragging_component, sibling);
		}
	}

	return false;
}

/**
 * Function callback for mouse down event 
 */
function dd_event_mouseUp(ev)
{
	ev         = ev || window.event;
	var target = ev.target || ev.srcElement;
	
	if (!window.state_mousedown) 
	{
		return true;
	}
	window.state_mousedown = false;

	if (dragging_component)
	{
		helper_component.style.display = 'none';
		dd_endComponentDrag(dragging_component);
		dragging_component = null;
	}
	else
	{
		return true;
	}

	// Write drag&drop cookie
	dd_writeCookie();
}

/**
 * Function to write the dd cookie 
 */
function dd_writeCookie()
{
	var page = window.page_index ? window.page_index : 1;
	var cookie = [];
	for (i = 0; i < containers.length; i++)
	{
		var drag_container_id = containers[i][0];
		var drag_container    = document.getElementById(containers[i][1]);
		if (drag_container && drag_container_id)
		{

			var components = dd_getDraggableComponents(drag_container);
			for (j = 0; j < components.length; j++)
			{
				var matches = components[j].id.match(/syn_comp_([\w]+)/);
				var comps = [];
				if (matches && matches[1])
				{
					comps.push( drag_container_id + '[]=' + matches[1] );
				}
				cookie.push( comps.join('&') );
			}
			
			if (!components.length)
			{
				cookie.push( drag_container_id+'[]=null' );
			}

		}
	}

	document.cookie = 'chekdragndrop_' + page + '=' + cookie.join('&');
}

/**
 * Function callback for mouse down event
 */
function dd_event_mouseDown(ev)
{
	// If mouse state is down when this is called, the user clicked the mouse down and dragged 
	// off the viewport, then released the mouse.  We need to make sure to trigger the mouse up
	// event before doing anything further so nothing is lost
	if (state_mousedown == true)
	{
		dd_event_mouseUp(ev);
	}
	
	ev         = ev || window.event;
	var target = ev.target || ev.srcElement;
	var element = target;

	while (element)
	{
		if (element.getAttribute && element.getAttribute('drag_object'))
		{
			dragging_component = element.parentNode;

			var drag_component_position = Utils.getPosition(dragging_component);
			var mousePos                = Utils.mouseCoords(ev);

			// Clone dragging component and place inside helper div
			for (i = 0; i < helper_component.childNodes.length; i++) 
				helper_component.removeChild(helper_component.childNodes[i]);

			helper_component.appendChild(dragging_component.cloneNode(true));
			helper_component.firstChild.removeAttribute('drag_container');

			var drag_container = document.getElementById(dragging_component.getAttribute('drag_container'));
			
			if (drag_container)
			{
				if (drag_container.childNodes.length <= 1)
				{
					return true;
				}

				var dc_pos = $(drag_container).offset();

				helper_component.style.width   = drag_container.offsetWidth + 'px';
				helper_component.style.height  = (dragging_component.offsetHeight + 5) + 'px';

				// Hide the component that will be dragged, but keep it's region in place
				dd_beginComponentDrag(dragging_component);

				// Figure out offset from where clicked on drag div to the topmost point of drag div
				drag_offset_y = mousePos.y - Utils.getPosition(element).y;

				// Force helper inside container to preserve styles
				drag_container.appendChild(helper_component);

				// Move helper component and show
				helper_component.style.position = 'absolute';
				helper_component.style.left = (dc_pos.left + drag_offset_x) + 'px'; 
				helper_component.style.top  = (mousePos.y - drag_offset_y) + 'px';
				helper_component.style.display = 'block';

				window.state_mousedown = true;
				return false;
			}
		}
		element = element.parentNode;
	}

	return true;
}

/**
 * Does hit-tests to determine which component another component should be placed before
 * Returns null if component should be placed at end of container
 */
function dd_getNextSibling(container, component, x, y)
{
	if (!container || !component)
	{
		return;
	}

	var components = dd_getDraggableComponents(container);

	// If y pos of mouse before container's top pos, place at beginning
	var container_pos = Utils.getPosition(container);
	if (y <= container_pos.y)
	{
		return components[0];
	}

	for (i = 0; i < components.length; i++)
	{
		var pos = Utils.getPosition(components[i]);

		var pos = Utils.getPosition(components[i]);
		if (Utils.horizontalHitTest(components[i], y))
		{
			var midpoint = (components[i].offsetHeight / 2) + pos.y;

			if (y <= midpoint)
			{ // 1st half of hover component
				return components[i];
			}
			else
			{
				if (components[i].nextSibling)
				{
					return components[i].nextSibling;
				}
				else
				{
					return null;
				}
			}
		}
		else if (y < pos.y)
		{
				return components[i];
		}
	}

	return null;
}

/**
 * Determines if element is contained within a draggable component
 * Returns the component object if so, otherwise return null
 */
function dd_elementWithinDraggableComponent(element)
{
	while (element)
	{
		if (element.getAttribute && element.getAttribute('drag_container'))
		{
			return element;
		}
		element = element.parentNode;
	}
	return null;
}

/**
 * Return an array of components that are draggable in passed container
 */
function dd_getDraggableComponents(container_object)
{
	if (!container_object) 
	{
		return null;
	}

	var components = [];
	for (var i = 0; i < container_object.childNodes.length; i++)
	{
		if (container_object.childNodes[i].nodeName == '#text') 
		{
			continue;
		}

		var drag_handle = dd_findDragHandle(container_object.childNodes[i]);
		if (drag_handle != null)
		{
			container_object.childNodes[i].drag_handle = drag_handle;
			components.push(container_object.childNodes[i]);
		}
	}

	return components;
}

/**
 * Finds the drag handle element within a draggable component
 */
function dd_findDragHandle(component)
{
	if (!component)
	{
		return null;
	}

	for (var i = 0; i < component.childNodes.length; i++)
	{
		if (component.childNodes[i].nodeName == '#text') 
		{
			continue;
		}

		if (component.childNodes[i].id && component.childNodes[i].id.match(/(_header$|^header_|_header_)/))
		{
			return component.childNodes[i];
		}
	}

	return null;
}

;
Syn.Marketwatch=Syn.Component.extend({init:function(config){this._super(config);var state=config['state'];var self=this;var intervalId;this.uniqueElmt("addform").connect("submit",this,"checkSymbol");this.uniqueElmt("symbolinput").connect("focus",this.uniqueElmt("symbolinput"),"attr",["value",""]);this.uniqueElmt("editpane").find("tbody a.removestock").connect("click",this,"removeSymbol");this.uniqueElmt("editlist").connect("click",this,"showEditPane");this.uniqueElmt("refresh").connect("click",this,"showOriginalPane");this.uniqueElmt("close").connect("click",this,"showOriginalPane");this.uniqueElmt("watchlist").connect("click",this,"showOriginalPane");this.uniqueElmt("error_message").connect("click",this,"showEditPane");switch(state){case"editlist":case"remove":case"check":this.uniqueElmt().addClass("marketwatch_editing");this.uniqueElmt("viewpane").hide();this.uniqueElmt("watchlist").removeClass("current_tab");this.uniqueElmt("editpane").show();this.uniqueElmt("editlist").addClass("current_tab");break;default:this.uniqueElmt().removeClass("marketwatch_editing");this.uniqueElmt("viewpane").show();this.uniqueElmt("watchlist").addClass("current_tab");this.uniqueElmt("editpane").hide();this.uniqueElmt("editlist").removeClass("current_tab")}if(config['refreshinterval']!=0){this.intervalId=setTimeout(function(){self.submit("")},config['refreshinterval'])}},showEditPane:function(){this.uniqueElmt().addClass("marketwatch_editing");this.uniqueElmt("viewpane").hide();this.uniqueElmt("watchlist").removeClass("current_tab");this.uniqueElmt("editpane").show();this.uniqueElmt("editlist").addClass("current_tab");this.state='editlist';clearTimeout(this.intervalId);return false},checkSymbol:function(){this.state="check";this.symbols=this.uniqueElmt("addform").find("input").val();this.uniqueElmt("loading").show().height(this.uniqueElmt("userstocks_edit").height());this.submit({'edit':'check','symbols':this.symbols})},removeSymbol:function(symbol){this.state="remove";this.symbols=symbol.getAttribute("rel");this.uniqueElmt("loading").show().height(this.uniqueElmt("userstocks_edit").height());this.submit({'edit':'remove','symbol':this.symbols})},showOriginalPane:function(){this.submit("")}});;
Syn.FlashGames=Syn.Component.extend({init:function(config){this._super(config);this.game_index=config.game_index;this.game_name=config.game_name;this.game_url=config.game_url;this.uniqueElmt('playitnow_next').connect('click',this,'submit',[{game_index:this.game_index+1}]).connect('click',this,'showLoading');this.uniqueElmt('playitnow_prev').connect('click',this,'submit',[{game_index:this.game_index-1}]).connect('click',this,'showLoading');this.uniqueElmt('playitnow_browse').connect('click',this,'toggleBrowseMenu');this.uniqueElmt('playitnow_recent_menu').connect('click',this,'toggleRecentMenu');for(var i=0;this.uniqueElmt('game'+i).length;i++){this.uniqueElmt('game'+i).find('a').connect('click',this,'launchGame')}for(var i=0;this.uniqueElmt('game_list'+i).length;i++){this.uniqueElmt('game_list'+i).find('a').connect('click',this,'launchGame')}for(var i=0;this.uniqueElmt('recent_game_list'+i).length;i++){this.uniqueElmt('recent_game_list'+i).find('a').connect('click',this,'launchGame')}},showLoading:function(){var ga=this.uniqueElmt('playitnow_gamearea');this.uniqueElmt('playitnow_loading').css({'width':ga.width(),'height':ga.height()}).toggle()},launchGame:function(elmt,ev){this.submit({'log_game_token':$(elmt).attr('rel')},{norender:false});location.href=$(elmt).attr('href')},toggleBrowseMenu:function(){this.uniqueElmt('playitnow_browse').toggleClass('playitnow_browse');this.uniqueElmt('playitnow_browse').toggleClass('playitnow_browse_on');this.uniqueElmt('playitnow_browse_menu').slideToggle();this.uniqueElmt('playitnow_carousel').toggle();this.uniqueElmt('playitnow_recent_menu').toggle()},toggleRecentMenu:function(){this.uniqueElmt('playitnow_recent').toggleClass('playitnow_recent');this.uniqueElmt('playitnow_recent').toggleClass('playitnow_recent_on');this.uniqueElmt('playitnow_recent_menu_list').slideToggle()}});
;
Syn.DiscoveryInit={comp:null,loaded:false,loading:false,loadDiscoveryBrowse:function(){if(!__LOGGED_IN__){$('#discovery_browse_login').show();setTimeout(function(){$('#discovery_browse_login').fadeOut('slow')},4000);return}if(Syn.DiscoveryInit.loading){return}if(!Syn.DiscoveryInit.loaded){Syn.DiscoveryInit.loading=true;var comm=new Syn.Comm(Syn.Config.WebservicesUrl);comm.call("ComponentService","createByAvsType",{type:"discovery_browse",page:1,zone:"cb"},Syn.DiscoveryInit.contentLoaded)}else if(Syn.DiscoveryInit.comp){Syn.DiscoveryInit.comp.slideUp("normal",function(){$(this).remove();Syn.DiscoveryInit.loaded=false})}var track_data={'track':'component_discovery','action':'add_content'};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data);return false},contentLoaded:function(result){Syn.DiscoveryInit.loading=false;Syn.DiscoveryInit.loaded=true;if(typeof result.content!="undefined"&&result.content){var self=this;var ui_loaded=function(){Syn.DiscoveryInit.comp=$("#body_col").before(result.content).prev().hide().slideDown("slow")};$.getScripts(result.javascripts,ui_loaded,Syn.Config.PortalRoot+"js/")}}};$(document).ready(function(){$("#welcomebar").prepend('<div class="discovery_browse_personalize" id="discovery_browse_personalize">In the future, click this button to add content to your page.</div><div class="discovery_browse_login" id="discovery_browse_login">Log in to add content</div>'+'<a href="#" class="button_customize" id="button-customize">Add Content</a>');$("#discovery_browse_login").show().fixPngBackground().hide();$("#discovery_browse_personalize").show().fixPngBackground().hide();$("#button-customize").fixPngBackground().click(Syn.DiscoveryInit.loadDiscoveryBrowse);if(window.location.search.indexOf('__show_components__=true')!=-1){Syn.DiscoveryInit.loadDiscoveryBrowse()}if(window.location.search.indexOf('__show_post_personalize__=true')!=-1){$('#discovery_browse_personalize').show();setTimeout(function(){$('#discovery_browse_personalize').fadeOut('slow')},5000)}});;
Syn.DiscoveryPersonalizeInit={init:function(){var cookie=document.cookie;if(!cookie.match(/(?:^|[\s;])discovery_personalize_ignore=1(?:[\s;]|$)/m)){var comm=new Syn.Comm(Syn.Config.WebservicesUrl);comm.call('ComponentService','createByAvsTypeWithWrapper',{type:'discovery_personalize:view=splash',page:1,zone:0},this,"showComponent")}},showComponent:function(result){if(result&&typeof result.content!="undefined"&&result.content){$("#body_col").before(result.content).prev().hide().slideDown()}}};$(document).ready(function(){Syn.DiscoveryPersonalizeInit.init()});;
Syn.DiscoveryPersonalize=Syn.Component.extend({init:function(config){this._super(config);if(config.reload_page){var cookie_name='chekdragndrop_'+Syn.Config.PageIndex;var cookie_date=new Date();cookie_date.setTime(cookie_date.getTime()-1);document.cookie=cookie_name+="=; expires="+cookie_date.toGMTString();window.location=Syn.Config.PortalRoot+'?__show_post_personalize__=true'}this.view=config.view;this.uniqueElmt("close_x").fixPngBackground().connect("click",this,"close");this.uniqueElmt().find(".discovery_personalize_left").fixPngBackground();this.uniqueElmt().find(".discovery_personalize_mid").fixPngBackground();this.uniqueElmt().find(".discovery_personalize_right").fixPngBackground();switch(this.view){case"splash":this.uniqueElmt("personalize_now").fixPngBackground().connect("click",this,"showPersonalizeNow");break;case"personalize":this.uniqueElmt("form").connect("submit",this,"submitForm");this.uniqueElmt("submit").connect("click",this,"submitForm").fixPngBackground();break}},close:function(){if(__LOGGED_IN__){this.setComponentToIgnore();this.uniqueElmt().parent().slideUp("normal",function(){$(this).remove()});this.submit({closed:1,norender:true});var track_data={track:"component_discovery",action:"personalize_close_after_open"};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data)}else{if(this.view=='splash'){this.setComponentToIgnore();this.uniqueElmt().parent().slideUp("normal",function(){$(this).remove()});var track_data={track:"component_discovery",action:"personalize_close"};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data)}else{this.showSplash()}}},showPersonalizeNow:function(){if(__LOGGED_IN__){this.submit({show:"personalize"});var track_data={'track':'component_discovery','action':'personalize_open'};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data)}else{this.submit({show:"loggedout"});var track_data={'track':'component_discovery','action':'personalize_open_logged_out'};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data)}},showSplash:function(){this.submit({show:"splash"});var track_data={track:"component_discovery",action:"personalize_close_after_open_logged_out"};$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data)},submitForm:function(){this.setComponentToIgnore();var data={rebuild:1};var track_data={track:"component_discovery",action:"personalize_submit"};var fields=this.uniqueElmt("form").serializeArray();$.each(fields,function(i,field){if(field_name=field.name.match(/^(.*)\[\]$/)){field_name=field_name[1];if(!data[field_name]){data[field_name]=new Array()}data[field_name].push(field.value);track_data["interests"]=true}else{data[field.name]=field.value;track_data[field.name]=(field.value)?true:false}});var self=this;this.uniqueElmt().parent().slideUp("normal",function(){self.submit(data)});$.get(Syn.Config.PortalRoot+"templates/troy/images/spacer_transparent.gif",track_data);return false},setComponentToIgnore:function(){var date_obj=new Date();date_obj.setFullYear(date_obj.getFullYear()+1,date_obj.getMonth(),date_obj.getDate());document.cookie="discovery_personalize_ignore=1;expires="+date_obj.toUTCString()}});;
/**
 * The Syn.Radio Component Class
 */ 

/**
 * Create a Syn.Radio component instance
 * @constructor
 */
Syn.Radio = Syn.Component.extend(
{
	/**
	 * Initialize the component class. This is called automatically by the default constructor.
	 * @member Syn.Radio
	 * @param {Object} config
	 */
	init: function(config)
	{
		this._super(config);

		this.uniqueElmt('listen').connect('click',this,'onListenClick');
		this.uniqueElmt('add_to_favorites').connect('click',this,'addToFavorites');
		
		for (var i=0; this.uniqueElmt('favorite_station'+i).length; i++)
		{
			this.uniqueElmt('favorite_station'+i).connect('click',this,'launchMusicChannnel');
		}

		for (var i=0; this.uniqueElmt('remove_from_favorites'+i).length; i++)
		{
			this.uniqueElmt('remove_from_favorites'+i).connect('click',this,'removeFromFavorites');
		}


	},

	/**
         * Launches music channel when a link is clicked (in favorites)
         * @member Syn.Radio
         */
        launchMusicChannnel: function(elmt,ev)
        {
		window.open($(elmt).attr('rel'), 'Radio','toolbar=no,menubar=no,location=no,resizeable=no,status=no,height=283,width=728');
	},

	/**
         * Remove game from list of user's favorites
         * @member Syn.Radio
         */
        removeFromFavorites: function(elmt,ev)
        {
                this.submit({'remove':$(elmt).attr('rel')});
        },

	/**
	 * Adds game to list of user's favorites
	 * @member Syn.Radio
	 */
	addToFavorites: function(elmt,ev)
	{
		this.submit({'add':this.uniqueElmt('channel').attr('value')});
	},


	/**
	 * Launches the selected radio channel when Listen Button is clicked
	 * @member Syn.Radio
	 */
	onListenClick: function(elmt,ev)
	{
		window.open($(elmt).attr('rel')+'&station_title='+this.uniqueElmt('channel').attr('value'), 'Radio','toolbar=no,menubar=no,location=no,resizeable=no,status=no,height=283,width=728');
	}

});
;
Syn.Horoscope=Syn.Component.extend({init:function(config){this._super(config);this.uniqueElmt('sign').connect('change',this,'changeSign')},setCookie:function(sign){var today=new Date();var expire=new Date();expire.setTime(today.getTime()+(60*60*60*24*30));document.cookie=this.uniqueKey('horoscope_sign')+'='+escape(sign)+';expires='+expire.toGMTString()},changeSign:function(elem){this.setCookie(elem.value);this.submit({'sign':elem.value})}});;
Syn.Tv={};Syn.Rd={};if($.fn.tv_ajax_version===undefined){var root=Syn.Config.PortalRoot;root=(typeof(root)!='undefined')?root:Syn.Config.Framework.PortalRoot;$.getScript(root+'js/3rdparty/jquery/plugins/jquery.tvajax.packed.js')}
;
Syn.Tv.Lib={siXml:null,dragX:0,dragY:0,curChanRange:0,progDetailsAjax:function(cid,lst_id,prvdr,zipcode,anchor_id){hide_disruptive_overlay_elements();Syn.Tv.Lib.selectView(0);var div=Syn.Tv.Lib.mkDiv();var xmod=(find_pos_x(document.getElementById(anchor_id))>450)?-400:50;$(div).html(Syn.Tv.Lib.progDetailsWait());SYNACOR_Snap(anchor_id,div.id,xmod,-70);Syn.Tv.Lib.mkView(div);$(window).bind('resize',Syn.Tv.Lib.mkView);$(div).bind('onmouseover',Syn.Tv.Lib.selectView);$.fn.tvAjax({type:'GET',url:(Syn.Config.PortalRoot+'tv/listingdetails_xml.php'),data:{cid:cid,lid:lst_id,p:prvdr,z:zipcode},success:function(xml){Syn.Tv.Lib.dispDiv(Syn.Tv.Lib.progDetails(xml))},dataType:'xml',cache:false})},progDetailsWait:function(){var b='<table width="350" border="0" cellspacing="0" cellpadding="3">';b+='<tr bgcolor="#84A4DF" id="rd_dragArea" style="cursor:move" height="25"><td class="tvlist_search_popup_header">&nbsp;Program Information</td><td align="right" class="tvlist_search_popup_header">';b+='<tr class="search_criteria search_criteria_header" bgcolor="#e2e2e2"><td colspan="2"><b style="font-size:12px"><br />Retrieving Program Information</b><br /><br /></td></tr>';b+='<tr id="tv_details_wait"><td colspan="2" valign="top"><br /><br /><img src="'+Syn.Config.PortalRoot+'tv/images/loadingfinal.gif" alt="Retrieving Program Information, Please Wait" border="0" style="margin-right:10px" /><br /><br /></td></tr>';return(b+'</table>')},progDetails:function(xml){var ep_ttl=Syn.Tv.Lib.getXml(xml,'episode_title');var ex_desc=Syn.Tv.Lib.getXml(xml,'extended_description');var net_src=Syn.Tv.Lib.getXml(xml,'network_source');var lang=Syn.Tv.Lib.getXml(xml,'language');var a_tmstr=Syn.Tv.Lib.getXml(xml,'air_timestring');var a_tm=Syn.Tv.Lib.getXml(xml,'air_time');var dur_str=Syn.Tv.Lib.getXml(xml,'duration_string');var dur=Syn.Tv.Lib.getXml(xml,'duration');var mpaa_r=Syn.Tv.Lib.getXml(xml,'mpaa_rating');var tv_r=Syn.Tv.Lib.getXml(xml,'tv_rating');var show_url=Syn.Tv.Lib.getXml(xml,'show_url');Syn.Tv.Lib.siXml=xml;var b='<table width="350" border="0" cellspacing="0" cellpadding="3">';b+='<tr bgcolor="#84A4DF" id="rd_dragArea" style="cursor:move" height="25"><td class="tvlist_search_popup_header">&nbsp;Program Information</td><td align="right" class="tvlist_search_popup_header">';b+='<a href="javascript:Syn.Tv.Lib.hideDiv();" title="Close"><img src="'+Syn.Config.PortalRoot+'tv/images/button_close.png" width="14" height="12" border="0" align="absmiddle" alt="Close" /></a></td></tr>';if(show_url!=""){b+='<tr class="search_criteria search_criteria_header" bgcolor="#e2e2e2"><td colspan="2"><b style="font-size:12px"><a href="'+show_url+'">'+Syn.Tv.Lib.getXml(xml,'full_title').toUpperCase()+'</a></b><br />'}else{b+='<tr class="search_criteria search_criteria_header" bgcolor="#e2e2e2"><td colspan="2"><b style="font-size:12px">'+Syn.Tv.Lib.getXml(xml,'full_title').toUpperCase()+'</b><br />'}if(Syn.Tv.Lib.getXml(xml,'repeat')==1){b+='(Re-run)&nbsp;'}b+=ep_ttl+'</td></tr>';b+='<tr class="search_criteria"><td class="search_criteria_header" colspan="2" align="right"  bgcolor="#e2e2e2"><b>';var ihdr='<div class="tvlib_icon_cont"> <img src="'+Syn.Config.PortalRoot+'tv/images/icons/';if(Syn.Tv.Lib.getXml(xml,'hdtv')==1){b+=ihdr+'hdtv.gif" alt="HDTV" height="12" border="0" align="absmiddle" /> &nbsp;&nbsp;'}if(Syn.Tv.Lib.getXml(xml,'cc')==1){b+=ihdr+'cc.gif" alt="Closed Caption" height="12" border="0" align="absmiddle" /> &nbsp;&nbsp;'}if(Syn.Tv.Lib.getXml(xml,'stereo')==1){b+='<span class="tvlist_grid_icons">Stereo</span></div>&nbsp;&nbsp;'}if(Syn.Tv.Lib.getXml(xml,'sap')==1){b+=ihdr+'sap.gif" alt="SAP" height="12" border="0" align="absmiddle" /> &nbsp;&nbsp;'}b+='</b></td></tr></table>';b+='<table width="350" border="0" cellspacing="0" cellpadding="3">';var no_det=true;if(Syn.Tv.Lib.getXml(xml,'genre')!=""){no_det=false;b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">CATEGORY</td><td valign="top">';all_cats=Syn.Tv.Lib.getXml(xml,'genre');cat=all_cats.split(",");if(cat.length<=3){b+=all_cats.replace(/,/g,",&nbsp;")+'<br />'}else{b+=cat[0]+", "+cat[1]+", "+cat[2]+'<br />'}b+="</td></tr>"}if((ep_ttl!="")||(ex_desc!="")){b+='<tr><td class="tvlib_bg_spacer" colspan="2" height="1" background="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png"><img src="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png" height="1" width="1" alt="" /></td></tr>';no_det=false;b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">SYNOPSIS</td><td valign="top">';if(ep_ttl!=""){b+='<b>'+ep_ttl+':&nbsp;</b><br />'}if(ex_desc!=""){b+=ex_desc+'<br />'}b+="</td></tr>"}var e='';if(net_src!=""){e+=net_src.toUpperCase()+' &nbsp;'}if(a_tmstr!=""){e+=a_tmstr+' &nbsp;'}else if(a_tm!=""){e+=a_tm+' &nbsp;'}if(dur_str!=""){e+='('+dur_str+')<br />'}else if(dur!=""){e+='('+dur+')<br />'}if(lang!=""){e+='Language: '+lang}if(e!=''){no_det=false;b+='<tr><td class="tvlib_bg_spacer" colspan="2" height="1" background="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png"><img src="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png" height="1" width="1" alt="" /></td></tr>';b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">DETAILS</td><td valign="top">'+e+'</td></tr>'}if(no_det){b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">&nbsp</td><td valign="top">Program Information Not Available.</td></tr>'}if(Syn.Tv.Lib.getXml(xml,'cast')!=""){b+='<tr><td class="tvlib_bg_spacer" colspan="2" height="1" background="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png"><img src="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png" height="1" width="1" alt="" /></td></tr>';b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">STARRING</td><td valign="top">'+Syn.Tv.Lib.getXml(xml,'cast')+'<br /></td></tr>'}var e='';if(mpaa_r!=""){e+='<span class="tvlist_grid_icons">'+mpaa_r+'</span>'+'<br />'}if(tv_r!=""){var rhdr='<span class="tvlist_grid_icons">'+tv_r+'</span> ';e+=rhdr+'<br />'}var rlf=(tv_r.substr(0,2)=='TV');var rls=rlf?'<a href="'+Syn.Config.PortalRoot+'tv/'+Syn.Tv.Data.ratingLink+'#'+tv_r+'">':'';var rle=rlf?'</a>':'';if(e!=''){b+='<tr><td class="tvlib_bg_spacer" colspan="2" height="1" background="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png"><img src="'+Syn.Config.PortalRoot+'tv/images/spacer_gray.png" height="1" width="1" alt="" /></td></tr>';b+='<tr class="search_criteria"><td valign="top" class="search_popup_cat">RATINGS &amp; WARNINGS</td><td valign="top">'+rls+e+rle+'</td></tr>'}b+='</table>';if(Syn.Tv.Data.dvrServiceEnabled>=1){b+=Syn.Rd.Lib.recDvrList(xml,1)}return b},requestGrid:function(st_ts,e_ts,id,prvdr,dev,cids,mode,grid_batch,set_sz,zipcode,adv,cat,no_cust){id='#'+id;if($(id)[0]==null){return}Syn.Tv.Lib.showTvWait(id);Syn.Tv.Lib.curChanRange=grid_batch;$.fn.tvAjax({type:'GET',url:(Syn.Config.PortalRoot+'tv/grid_interface.php'),data:{valid_user:((Syn.Tv.Data.dvrServiceEnabled>=1)?1:0),start_ts:st_ts,end_ts:e_ts,provider:prvdr,device:dev,mode:mode,zipcode:zipcode,advanced:adv,category:cat,no_cust:no_cust,cids:cids,grid_channel_batch:grid_batch,grid_set_size:set_sz},success:function(txt){$(id)[0].innerHTML=txt;Syn.Tv.Lib.hideTvWait(id)},dataType:'text',cache:false})},showTvWait:function(id){if($(id).length&&$("#tv_indicator").length){$(id).css("opacity",.3);var id_t=$(id).offset().top;var id_b=id_t+$(id).height();var win_h=$(window).height();var win_t=$(window).scrollTop();var win_b=win_t+win_h;$("#tv_indicator").css({position:"absolute",top:((((id_b-id_t)<win_h)?(id_t+((id_b-id_t)/ 2)) : (((id_t + win_h) > win_b) ? (id_t + ((win_b - id_t) /2)):(win_t+((win_b>id_b)?((id_b-win_t)/ 2) : ((win_b - win_t) /2)))))-($("#tv_indicator").height()/2))+"px",left:($(id).offset().left+($(id).width()/2)-($("#tv_indicator").width()/2))+"px"}).show()}},hideTvWait:function(id){if($(id).length&&$("#tv_indicator").length){$(id).css("opacity",1);try{$(id)[0].style.removeAttribute('filter')}catch(err){}$("#tv_indicator").hide()}},setTabDate:function(ptt,ctt){var purl=Syn.Config.PortalRoot+'tv/images/t2_c';var pid='#grid_tab';$(pid+'_left'+ptt).attr('src',purl+'4.png');$(pid+ptt).css({background:'url(images/t2_c5.png)'});$(pid+'_right'+ptt).attr('src',purl+'6.png');$(pid+'_left'+ctt).attr('src',purl+'1.png');$(pid+ctt).css({background:'url(images/t2_c2.png)'});$(pid+'_right'+ctt).attr('src',purl+'3.png')},toggleDisp:function(){var i,args=arguments;for(i=0;i<(args.length-1);i+=2){$('#'+args[i]).toggle()}},resetSearch:function(){$('#search_string')[0].value='';$("#partial_match1")[0].checked=true;$("#partial_match2")[0].checked=false;$("#su_category")[0].selectedIndex=0;$("#next_days")[0].selectedIndex=2;$("#listing_type1")[0].checked=true;$("#listing_type2")[0].checked=false;$("#su_title")[0].checked=true;$("#su_actor")[0].checked=false;$("#su_description")[0].checked=false;$("#su_episode_title")[0].checked=false;$("#tv_channel")[0].selectedIndex=0;$("#sort_by1")[0].checked=false;$("#sort_by2")[0].checked=true},mkView:function(div,sx){var pgSz=new Array($(document).width(),$(document).height(),$(window).width(),$(window).height());var sPos=new Array($(window).scrollLeft(),$(window).scrollTop());var xm=10;var ym=10;div=(div&&div.id)?div:$('#details')[0];div.style.display='block';var dx=find_pos_x(div);var dy=find_pos_y(div);var dw=div.offsetWidth;var dh=div.offsetHeight;var ndx=0;var ndy=0;var is_xs_vis=((pgSz[0]>pgSz[2])?1:0);var is_ys_vis=((pgSz[1]>pgSz[3])?1:0);var xs_sz=20;var ys_sz=20;if(!sx){if((dx+dw)>(sPos[0]+pgSz[2]-(is_ys_vis*ys_sz))){ndx=-1*((dx+dw)-(sPos[0]+pgSz[2])+xm+(is_ys_vis*ys_sz))}}if((dy+dh)>(sPos[1]+pgSz[3]-(is_xs_vis*xs_sz))){ndy=-1*((dy+dh)-(sPos[1]+pgSz[3])+ym+(is_xs_vis*xs_sz))}SYNACOR_Snap(div.id,div.id,ndx,ndy);dx=find_pos_x(div);dy=find_pos_y(div);ndx=0;ndy=0;if(!sx){if(dx<sPos[0]){ndx=(sPos[0]-dx)+xm}}if(dy<sPos[1]){ndy=(sPos[1]-dy)+ym}SYNACOR_Snap(div.id,div.id,ndx,ndy);$('#rd_dragArea').bind('mousedown',Syn.Tv.Lib.startDrag);return false},mkDiv:function(color){if(!$('#details').length){d=document.createElement('div');d.id="details";d.style.position='absolute';d.style.border='1px solid #999999';d.style.padding='5px';d.style.filter='progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135)';$('body')[0].appendChild(d)}var d=$('#details');d.css('background-color',((!color)?'#fff':color));d.css('width','');d.hide();return d[0]},dispDiv:function(b,sv,a_id,x,y){if(b&&(b!='')){Syn.Tv.Lib.mkDiv();$('#details')[0].innerHTML=b;if(a_id){SYNACOR_Snap(a_id,'details',x,y)}if(!sv){Syn.Tv.Lib.mkView()}else{$('#details').show();$('#rd_dragArea').bind('mousedown',Syn.Tv.Lib.startDrag)}}return false},hideDiv:function(){show_disruptive_overlay_elements();$('#details').hide();Syn.Tv.Lib.selectView(1);$(window).unbind('resize',Syn.Tv.Lib.mkView)},startDrag:function(ev){var opos=$('#details').offset();Syn.Tv.Lib.dragX=ev.clientX-opos.left;Syn.Tv.Lib.dragY=ev.clientY-opos.top;$(document).bind('mousemove',Syn.Tv.Lib.moveDrag);$('#details').bind('mouseup',Syn.Tv.Lib.stopDrag)},moveDrag:function(ev){$('#details').css({left:(ev.clientX-Syn.Tv.Lib.dragX),top:(ev.clientY-Syn.Tv.Lib.dragY)})},stopDrag:function(ev){$(document).unbind('mousemove',Syn.Tv.Lib.moveDrag);$('#details').unbind('mouseup',Syn.Tv.Lib.stopDrag)},selectView:function(disp){if($.browser.msie){var sel=document.getElementsByTagName('select');for(i=0;i<sel.length;i++){sel[i].style.visibility=disp?'':'hidden'}}},dvrUserValidate:function(trans_id,trans_id_t,he){$.fn.tvAjax({type:'GET',url:(Syn.Config.PortalRoot+'tv/rd_val_usr_xml.php'),data:{tid:trans_id,tt:trans_id_t,he:he},success:function(v_req){if(Syn.Tv.Lib.getXml(v_req,'status')=='SUCCESS'){var oact=parseInt(Syn.Tv.Data.dvrServiceEnabled);var nact=Syn.Tv.Data.dvrServiceEnabled=(Syn.Tv.Lib.getXml(v_req,'active_status')!='inactive')?(parseInt(Syn.Tv.Lib.getXml(v_req,'active_device_count'))):0;if(nact){$('#dvr_menu').show();$('#rd_legend').show();if(!oact){$.getScript(Syn.Config.PortalRoot+'js/tv/rd_misc.packed.js');$.getScript(Syn.Config.PortalRoot+'js/tv/rd_dig.packed.js',function(){Syn.Rd.Lib.getRecList(null,0,1)});var href='<link type="text/css" rel="stylesheet" href="'+Syn.Config.PortalRoot+'styles/rd_styles';$('head').append(href+'.css" />');$('head').append(href+'_dig.css" />')}else if(oact!=nact){Syn.Rd.Lib.getRecList(null,0,1)}}else{$('#dvr_menu').hide();$('#rd_legend').hide();if(oact){Syn.Rd.Lib.abortRecList();setTimeout('Syn.Rd.Lib.getRecList(null,1,1,1)',100)}}}},dataType:'xml',cache:false})},getXml:function(req_dom,tag){return(!req_dom)?'':get_cdata(((!req_dom.responseXML)?req_dom:req_dom.responseXML),tag)},getIdxXml:function(req_dom,s_tag){var dom,new_dom,i;if(!req_dom){return''}dom=new_dom=(!req_dom.responseXML)?req_dom:req_dom.responseXML;for(i=2;i<arguments.length;i+=2){if((arguments[i]!=null)&&(arguments[i+1]!=null)){new_dom=(new_dom==null)?dom:Syn.Tv.Lib.getDom(new_dom,arguments[i],parseInt(arguments[i+1]))}}return(new_dom!=null)?get_cdata(new_dom,s_tag):''},getDom:function(req_dom,tag,idx){if(!req_dom){return null}var dom=(!req_dom.responseXML)?req_dom:req_dom.responseXML;var new_dom=dom.getElementsByTagName(tag);return((!new_dom)||(new_dom.length<(idx+1))||(!new_dom[idx]))?null:new_dom[idx]}};;
Syn.AjaxTabbed=Syn.Component.extend({init:function(config){this._super(config);this.tab_count=config.tab_count;this.tab_on=config.tab_on;for(var i=0;i<this.tab_count;i++){if(i!=this.tab_on){this.uniqueElmt('tab'+i).connect('click',this,'changeTab',[i])}}this.uniqueElmt('select').connect('change',this,'changeSelect')},changeTab:function(on){for(var i=0;i<this.tab_count;i++){this.uniqueElmt('tab'+i).removeClass('on');if(i==on){this.uniqueElmt('tab'+i).addClass('on')}}if(this.uniqueElmt('tabcontent').length>0){this.uniqueElmt('loading').show().height(this.uniqueElmt('tabcontent').height())}if(this.uniqueElmt('tabcontent_vert').length>0){this.uniqueElmt('loading').show().height(this.uniqueElmt('tabcontent_vert').height())}this.submit({'tab':on});return false},changeSelect:function(selbox){this.changeTab($(selbox).val())}});
;
