/*
 * YouTakeTwo
 *
 * copyright (c) 2008 Swerve Concepts Ltd.
 * All rights reserved.
 * 
 * This code incorporates:
 *   Mootools ( copyright (c) 2007 Valerio Proietti, <http://mad4milk.net> )
 *   Mootabs ( http://www.silverscripting.com/mootabs/ )
 *
 */
var MooTools={version:"1.11"};function $defined(A){return(A!=undefined)}function $type(B){if(!$defined(B)){return false}if(B.htmlElement){return"element"}var A=typeof B;if(A=="object"&&B.nodeName){switch(B.nodeType){case 1:return"element";case 3:return(/\S/).test(B.nodeValue)?"textnode":"whitespace"}}if(A=="object"||A=="function"){switch(B.constructor){case Array:return"array";case RegExp:return"regexp";case Class:return"class"}if(typeof B.length=="number"){if(B.item){return"collection"}if(B.callee){return"arguments"}}}return A}function $merge(){var C={};for(var B=0;B<arguments.length;B++){for(var E in arguments[B]){var A=arguments[B][E];var D=C[E];if(D&&$type(A)=="object"&&$type(D)=="object"){C[E]=$merge(D,A)}else{C[E]=A}}}return C}var $extend=function(){var A=arguments;if(!A[1]){A=[this,A[0]]}for(var B in A[1]){A[0][B]=A[1][B]}return A[0]};var $native=function(){for(var B=0,A=arguments.length;B<A;B++){arguments[B].extend=function(C){for(var D in C){if(!this.prototype[D]){this.prototype[D]=C[D]}if(!this[D]){this[D]=$native.generic(D)}}}}};$native.generic=function(A){return function(B){return this.prototype[A].apply(B,Array.prototype.slice.call(arguments,1))}};$native(Function,Array,String,Number);function $chk(A){return !!(A||A===0)}function $pick(B,A){return $defined(B)?B:A}function $random(B,A){return Math.floor(Math.random()*(A-B+1)+B)}function $time(){return new Date().getTime()}function $clear(A){clearTimeout(A);clearInterval(A);return null}var Abstract=function(A){A=A||{};A.extend=$extend;return A};var Window=new Abstract(window);var Document=new Abstract(document);document.head=document.getElementsByTagName("head")[0];window.xpath=!!(document.evaluate);if(window.ActiveXObject){window.ie=window[window.XMLHttpRequest?"ie7":"ie6"]=true}else{if(navigator.userAgent.match(/iPad/i)!=null){window.ipad=true}else{if(document.childNodes&&!document.all&&!navigator.taintEnabled){window.webkit=window[window.xpath?"webkit420":"webkit419"]=true}else{if(document.getBoxObjectFor!=null){window.gecko=true}}}}window.khtml=window.webkit;Object.extend=$extend;if(typeof HTMLElement=="undefined"){var HTMLElement=function(){};if(window.webkit){document.createElement("iframe")}HTMLElement.prototype=(window.webkit)?window["[[DOMElement.prototype]]"]:{}}HTMLElement.prototype.htmlElement=function(){};if(window.ie6){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}var Class=function(B){var A=function(){return(arguments[0]!==null&&this.initialize&&$type(this.initialize)=="function")?this.initialize.apply(this,arguments):this};$extend(A,this);A.prototype=B;A.constructor=Class;return A};Class.empty=function(){};Class.prototype={extend:function(B){var C=new this(null);for(var D in B){var A=C[D];C[D]=Class.Merge(A,B[D])}return new Class(C)},implement:function(){for(var B=0,A=arguments.length;B<A;B++){$extend(this.prototype,arguments[B])}}};Class.Merge=function(C,D){if(C&&C!=D){var B=$type(D);if(B!=$type(C)){return D}switch(B){case"function":var A=function(){this.parent=arguments.callee.parent;return D.apply(this,arguments)};A.parent=C;return A;case"object":return $merge(C,D)}}return D};var Chain=new Class({chain:function(A){this.chains=this.chains||[];this.chains.push(A);return this},callChain:function(){if(this.chains&&this.chains.length){this.chains.shift().delay(10,this)}},clearChain:function(){this.chains=[]}});var Events=new Class({addEvent:function(B,A){if(A!=Class.empty){this.$events=this.$events||{};this.$events[B]=this.$events[B]||[];this.$events[B].include(A)}return this},fireEvent:function(C,B,A){if(this.$events&&this.$events[C]){this.$events[C].each(function(D){D.create({bind:this,delay:A,"arguments":B})()},this)}return this},removeEvent:function(B,A){if(this.$events&&this.$events[B]){this.$events[B].remove(A)}return this}});var Options=new Class({setOptions:function(){this.options=$merge.apply(null,[this.options].extend(arguments));if(this.addEvent){for(var A in this.options){if($type(this.options[A]=="function")&&(/^on[A-Z]/).test(A)){this.addEvent(A,this.options[A])}}}return this}});Array.extend({forEach:function(C,D){for(var B=0,A=this.length;B<A;B++){C.call(D,this[B],B,this)}},filter:function(D,E){var C=[];for(var B=0,A=this.length;B<A;B++){if(D.call(E,this[B],B,this)){C.push(this[B])}}return C},map:function(D,E){var C=[];for(var B=0,A=this.length;B<A;B++){C[B]=D.call(E,this[B],B,this)}return C},every:function(C,D){for(var B=0,A=this.length;B<A;B++){if(!C.call(D,this[B],B,this)){return false}}return true},some:function(C,D){for(var B=0,A=this.length;B<A;B++){if(C.call(D,this[B],B,this)){return true}}return false},indexOf:function(C,D){var A=this.length;for(var B=(D<0)?Math.max(0,A+D):D||0;B<A;B++){if(this[B]===C){return B}}return -1},copy:function(D,C){D=D||0;if(D<0){D=this.length+D}C=C||(this.length-D);var A=[];for(var B=0;B<C;B++){A[B]=this[D++]}return A},remove:function(C){var B=0;var A=this.length;while(B<A){if(this[B]===C){this.splice(B,1);A--}else{B++}}return this},contains:function(A,B){return this.indexOf(A,B)!=-1},associate:function(C){var D={},B=Math.min(this.length,C.length);for(var A=0;A<B;A++){D[C[A]]=this[A]}return D},extend:function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B])}return this},merge:function(C){for(var B=0,A=C.length;B<A;B++){this.include(C[B])}return this},include:function(A){if(!this.contains(A)){this.push(A)}return this},getRandom:function(){return this[$random(0,this.length-1)]||null},getLast:function(){return this[this.length-1]||null}});Array.prototype.each=Array.prototype.forEach;Array.each=Array.forEach;function $A(A){return Array.copy(A)}function $each(C,B,D){if(C&&typeof C.length=="number"&&$type(C)!="object"){Array.forEach(C,B,D)}else{for(var A in C){B.call(D||C,C[A],A)}}}Array.prototype.test=Array.prototype.contains;String.extend({test:function(A,B){return(($type(A)=="string")?new RegExp(A,B):A).test(this)},toInt:function(){return parseInt(this,10)},toFloat:function(){return parseFloat(this)},camelCase:function(){return this.replace(/-\D/g,function(A){return A.charAt(1).toUpperCase()})},hyphenate:function(){return this.replace(/\w[A-Z]/g,function(A){return(A.charAt(0)+"-"+A.charAt(1).toLowerCase())})},capitalize:function(){return this.replace(/\b[a-z]/g,function(A){return A.toUpperCase()})},trim:function(){return this.replace(/^\s+|\s+$/g,"")},clean:function(){return this.replace(/\s{2,}/g," ").trim()},rgbToHex:function(B){var A=this.match(/\d{1,3}/g);return(A)?A.rgbToHex(B):false},hexToRgb:function(B){var A=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(A)?A.slice(1).hexToRgb(B):false},contains:function(A,B){return(B)?(B+this+B).indexOf(B+A+B)>-1:this.indexOf(A)>-1},escapeRegExp:function(){return this.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")}});Array.extend({rgbToHex:function(D){if(this.length<3){return false}if(this.length==4&&this[3]==0&&!D){return"transparent"}var B=[];for(var A=0;A<3;A++){var C=(this[A]-0).toString(16);B.push((C.length==1)?"0"+C:C)}return D?B:"#"+B.join("")},hexToRgb:function(C){if(this.length!=3){return false}var A=[];for(var B=0;B<3;B++){A.push(parseInt((this[B].length==1)?this[B]+this[B]:this[B],16))}return C?A:"rgb("+A.join(",")+")"}});Function.extend({create:function(A){var B=this;A=$merge({bind:B,event:false,"arguments":null,delay:false,periodical:false,attempt:false},A);if($chk(A.arguments)&&$type(A.arguments)!="array"){A.arguments=[A.arguments]}return function(E){var C;if(A.event){E=E||window.event;C=[(A.event===true)?E:new A.event(E)];if(A.arguments){C.extend(A.arguments)}}else{C=A.arguments||arguments}var F=function(){return B.apply($pick(A.bind,B),C)};if(A.delay){return setTimeout(F,A.delay)}if(A.periodical){return setInterval(F,A.periodical)}if(A.attempt){try{return F()}catch(D){return false}}return F()}},pass:function(A,B){return this.create({"arguments":A,bind:B})},attempt:function(A,B){return this.create({"arguments":A,bind:B,attempt:true})()},bind:function(B,A){return this.create({bind:B,"arguments":A})},bindAsEventListener:function(B,A){return this.create({bind:B,event:true,"arguments":A})},delay:function(B,C,A){return this.create({delay:B,bind:C,"arguments":A})()},periodical:function(A,C,B){return this.create({periodical:A,bind:C,"arguments":B})()}});Number.extend({toInt:function(){return parseInt(this)},toFloat:function(){return parseFloat(this)},limit:function(B,A){return Math.min(A,Math.max(B,this))},round:function(A){A=Math.pow(10,A||0);return Math.round(this*A)/A},times:function(B){for(var A=0;A<this;A++){B(A)}}});var Element=new Class({initialize:function(D,C){if($type(D)=="string"){if(window.ie&&C&&(C.name||C.type)){var A=(C.name)?' name="'+C.name+'"':"";var B=(C.type)?' type="'+C.type+'"':"";delete C.name;delete C.type;D="<"+D+A+B+">"}D=document.createElement(D)}D=$(D);return(!C||!D)?D:D.set(C)}});var Elements=new Class({initialize:function(A){return(A)?$extend(A,this):this}});Elements.extend=function(A){for(var B in A){this.prototype[B]=A[B];this[B]=$native.generic(B)}};function $(B){if(!B){return null}if(B.htmlElement){return Garbage.collect(B)}if([window,document].contains(B)){return B}var A=$type(B);if(A=="string"){B=document.getElementById(B);A=(B)?"element":false}if(A!="element"){return null}if(B.htmlElement){return Garbage.collect(B)}if(["object","embed"].contains(B.tagName.toLowerCase())){return B}$extend(B,Element.prototype);B.htmlElement=function(){};return Garbage.collect(B)}document.getElementsBySelector=document.getElementsByTagName;function $$(){var D=[];for(var C=0,B=arguments.length;C<B;C++){var A=arguments[C];switch($type(A)){case"element":D.push(A);case"boolean":break;case false:break;case"string":A=document.getElementsBySelector(A,true);default:D.extend(A)}}return $$.unique(D)}$$.unique=function(G){var D=[];for(var C=0,A=G.length;C<A;C++){if(G[C].$included){continue}var B=$(G[C]);if(B&&!B.$included){B.$included=true;D.push(B)}}for(var F=0,E=D.length;F<E;F++){D[F].$included=null}return new Elements(D)};Elements.Multi=function(A){return function(){var D=arguments;var B=[];var G=true;for(var E=0,C=this.length,F;E<C;E++){F=this[E][A].apply(this[E],D);if($type(F)!="element"){G=false}B.push(F)}return(G)?$$.unique(B):B}};Element.extend=function(A){for(var B in A){HTMLElement.prototype[B]=A[B];Element.prototype[B]=A[B];Element[B]=$native.generic(B);var C=(Array.prototype[B])?B+"Elements":B;Elements.prototype[C]=Elements.Multi(B)}};Element.extend({set:function(A){for(var C in A){var B=A[C];switch(C){case"styles":this.setStyles(B);break;case"events":if(this.addEvents){this.addEvents(B)}break;case"properties":this.setProperties(B);break;default:this.setProperty(C,B)}}return this},inject:function(C,A){C=$(C);switch(A){case"before":C.parentNode.insertBefore(this,C);break;case"after":var B=C.getNext();if(!B){C.parentNode.appendChild(this)}else{C.parentNode.insertBefore(this,B)}break;case"top":var D=C.firstChild;if(D){C.insertBefore(this,D);break}default:C.appendChild(this)}return this},injectBefore:function(A){return this.inject(A,"before")},injectAfter:function(A){return this.inject(A,"after")},injectInside:function(A){return this.inject(A,"bottom")},injectTop:function(A){return this.inject(A,"top")},adopt:function(){var A=[];$each(arguments,function(B){A=A.concat(B)});$$(A).inject(this);return this},remove:function(){return this.parentNode.removeChild(this)},clone:function(C){var B=$(this.cloneNode(C!==false));if(!B.$events){return B}B.$events={};for(var A in this.$events){B.$events[A]={keys:$A(this.$events[A].keys),values:$A(this.$events[A].values)}}return B.removeEvents()},replaceWith:function(A){A=$(A);this.parentNode.replaceChild(A,this);return A},appendText:function(A){this.appendChild(document.createTextNode(A));return this},hasClass:function(A){return this.className.contains(A," ")},addClass:function(A){if(!this.hasClass(A)){this.className=(this.className+" "+A).clean()}return this},removeClass:function(A){this.className=this.className.replace(new RegExp("(^|\\s)"+A+"(?:\\s|$)"),"$1").clean();return this},toggleClass:function(A){return this.hasClass(A)?this.removeClass(A):this.addClass(A)},setStyle:function(B,A){switch(B){case"opacity":return this.setOpacity(parseFloat(A));case"float":B=(window.ie)?"styleFloat":"cssFloat"}B=B.camelCase();switch($type(A)){case"number":if(!["zIndex","zoom"].contains(B)){A+="px"}break;case"array":A="rgb("+A.join(",")+")"}this.style[B]=A;return this},setStyles:function(A){switch($type(A)){case"object":Element.setMany(this,"setStyle",A);break;case"string":this.style.cssText=A}return this},setOpacity:function(A){if(A==0){if(this.style.visibility!="hidden"){this.style.visibility="hidden"}}else{if(this.style.visibility!="visible"){this.style.visibility="visible"}}if(!this.currentStyle||!this.currentStyle.hasLayout){this.style.zoom=1}if(window.ie){this.style.filter=(A==1)?"":"alpha(opacity="+A*100+")"}this.style.opacity=this.$tmp.opacity=A;return this},getStyle:function(C){C=C.camelCase();var A=this.style[C];if(!$chk(A)){if(C=="opacity"){return this.$tmp.opacity}A=[];for(var B in Element.Styles){if(C==B){Element.Styles[B].each(function(F){var E=this.getStyle(F);A.push(parseInt(E)?E:"0px")},this);if(C=="border"){var D=A.every(function(E){return(E==A[0])});return(D)?A[0]:false}return A.join(" ")}}if(C.contains("border")){if(Element.Styles.border.contains(C)){return["Width","Style","Color"].map(function(E){return this.getStyle(C+E)},this).join(" ")}else{if(Element.borderShort.contains(C)){return["Top","Right","Bottom","Left"].map(function(E){return this.getStyle("border"+E+C.replace("border",""))},this).join(" ")}}}if(document.defaultView){A=document.defaultView.getComputedStyle(this,null).getPropertyValue(C.hyphenate())}else{if(this.currentStyle){A=this.currentStyle[C]}}}if(window.ie){A=Element.fixStyle(C,A,this)}if(A&&C.test(/color/i)&&A.contains("rgb")){return A.split("rgb").splice(1,4).map(function(E){return E.rgbToHex()}).join(" ")}return A},getStyles:function(){return Element.getMany(this,"getStyle",arguments)},walk:function(A,C){A+="Sibling";var B=(C)?this[C]:this[A];while(B&&$type(B)!="element"){B=B[A]}return $(B)},getPrevious:function(){return this.walk("previous")},getNext:function(){return this.walk("next")},getFirst:function(){return this.walk("next","firstChild")},getLast:function(){return this.walk("previous","lastChild")},getParent:function(){return $(this.parentNode)},getChildren:function(){return $$(this.childNodes)},hasChild:function(A){return !!$A(this.getElementsByTagName("*")).contains(A)},getProperty:function(D){var B=Element.Properties[D];if(B){return this[B]}var A=Element.PropertiesIFlag[D]||0;if(!window.ie||A){return this.getAttribute(D,A)}var C=this.attributes[D];return(C)?C.nodeValue:null},removeProperty:function(B){var A=Element.Properties[B];if(A){this[A]=""}else{this.removeAttribute(B)}return this},getProperties:function(){return Element.getMany(this,"getProperty",arguments)},setProperty:function(C,B){var A=Element.Properties[C];if(A){this[A]=B}else{this.setAttribute(C,B)}return this},setProperties:function(A){return Element.setMany(this,"setProperty",A)},setHTML:function(){this.innerHTML=$A(arguments).join("");return this},setText:function(B){var A=this.getTag();if(["style","script"].contains(A)){if(window.ie){if(A=="style"){this.styleSheet.cssText=B}else{if(A=="script"){this.setProperty("text",B)}}return this}else{this.removeChild(this.firstChild);return this.appendText(B)}}this[$defined(this.innerText)?"innerText":"textContent"]=B;return this},getText:function(){var A=this.getTag();if(["style","script"].contains(A)){if(window.ie){if(A=="style"){return this.styleSheet.cssText}else{if(A=="script"){return this.getProperty("text")}}}else{return this.innerHTML}}return($pick(this.innerText,this.textContent))},getTag:function(){return this.tagName.toLowerCase()},empty:function(){Garbage.trash(this.getElementsByTagName("*"));return this.setHTML("")}});Element.fixStyle=function(E,A,D){if($chk(parseInt(A))){return A}if(["height","width"].contains(E)){var B=(E=="width")?["left","right"]:["top","bottom"];var C=0;B.each(function(F){C+=D.getStyle("border-"+F+"-width").toInt()+D.getStyle("padding-"+F).toInt()});return D["offset"+E.capitalize()]-C+"px"}else{if(E.test(/border(.+)Width|margin|padding/)){return"0px"}}return A};Element.Styles={border:[],padding:[],margin:[]};["Top","Right","Bottom","Left"].each(function(B){for(var A in Element.Styles){Element.Styles[A].push(A+B)}});Element.borderShort=["borderWidth","borderStyle","borderColor"];Element.getMany=function(B,D,C){var A={};$each(C,function(E){A[E]=B[D](E)});return A};Element.setMany=function(B,D,C){for(var A in C){B[D](A,C[A])}return B};Element.Properties=new Abstract({"class":"className","for":"htmlFor",colspan:"colSpan",rowspan:"rowSpan",accesskey:"accessKey",tabindex:"tabIndex",maxlength:"maxLength",readonly:"readOnly",frameborder:"frameBorder",value:"value",disabled:"disabled",checked:"checked",multiple:"multiple",selected:"selected"});Element.PropertiesIFlag={href:2,src:2};Element.Methods={Listeners:{addListener:function(B,A){if(this.addEventListener){this.addEventListener(B,A,false)}else{this.attachEvent("on"+B,A)}return this},removeListener:function(B,A){if(this.removeEventListener){this.removeEventListener(B,A,false)}else{this.detachEvent("on"+B,A)}return this}}};window.extend(Element.Methods.Listeners);document.extend(Element.Methods.Listeners);Element.extend(Element.Methods.Listeners);var Garbage={elements:[],collect:function(A){if(!A.$tmp){Garbage.elements.push(A);A.$tmp={opacity:1}}return A},trash:function(D){for(var B=0,A=D.length,C;B<A;B++){if(!(C=D[B])||!C.$tmp){continue}if(C.$events){C.fireEvent("trash").removeEvents()}for(var E in C.$tmp){C.$tmp[E]=null}for(var F in Element.prototype){C[F]=null}Garbage.elements[Garbage.elements.indexOf(C)]=null;C.htmlElement=C.$tmp=C=null}Garbage.elements.remove(null)},empty:function(){Garbage.collect(window);Garbage.collect(document);Garbage.trash(Garbage.elements)}};window.addListener("beforeunload",function(){window.addListener("unload",Garbage.empty);if(window.ie){window.addListener("unload",CollectGarbage)}});var Event=new Class({initialize:function(C){if(C&&C.$extended){return C}this.$extended=true;C=C||window.event;this.event=C;this.type=C.type;this.target=C.target||C.srcElement;if(this.target.nodeType==3){this.target=this.target.parentNode}this.shift=C.shiftKey;this.control=C.ctrlKey;this.alt=C.altKey;this.meta=C.metaKey;if(["DOMMouseScroll","mousewheel"].contains(this.type)){this.wheel=(C.wheelDelta)?C.wheelDelta/120:-(C.detail||0)/3}else{if(this.type.contains("key")){this.code=C.which||C.keyCode;for(var B in Event.keys){if(Event.keys[B]==this.code){this.key=B;break}}if(this.type=="keydown"){var A=this.code-111;if(A>0&&A<13){this.key="f"+A}}this.key=this.key||String.fromCharCode(this.code).toLowerCase()}else{if(this.type.test(/(click|mouse|menu|touch)/)){if(C.touches){C=C.touches[0]}this.page={x:C.pageX||C.clientX+document.documentElement.scrollLeft,y:C.pageY||C.clientY+document.documentElement.scrollTop};this.client={x:C.pageX?C.pageX-window.pageXOffset:C.clientX,y:C.pageY?C.pageY-window.pageYOffset:C.clientY};this.rightClick=(C.which==3)||(C.button==2);switch(this.type){case"mouseover":this.relatedTarget=C.relatedTarget||C.fromElement;break;case"mouseout":this.relatedTarget=C.relatedTarget||C.toElement}this.fixRelatedTarget()}}}return this},stop:function(){return this.stopPropagation().preventDefault()},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation()}else{this.event.cancelBubble=true}return this},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault()}else{this.event.returnValue=false}return this}});Event.fix={relatedTarget:function(){if(this.relatedTarget&&this.relatedTarget.nodeType==3){this.relatedTarget=this.relatedTarget.parentNode}},relatedTargetGecko:function(){try{Event.fix.relatedTarget.call(this)}catch(A){this.relatedTarget=this.target}}};Event.prototype.fixRelatedTarget=(window.gecko)?Event.fix.relatedTargetGecko:Event.fix.relatedTarget;Event.keys=new Abstract({enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46});Element.Methods.Events={addEvent:function(C,B){this.$events=this.$events||{};this.$events[C]=this.$events[C]||{keys:[],values:[]};if(this.$events[C].keys.contains(B)){return this}this.$events[C].keys.push(B);var A=C;var D=Element.Events[C];if(D){if(D.add){D.add.call(this,B)}if(D.map){B=D.map}if(D.type){A=D.type}}if(!this.addEventListener){B=B.create({bind:this,event:true})}this.$events[C].values.push(B);return(Element.NativeEvents.contains(A))?this.addListener(A,B):this},removeEvent:function(C,B){if(!this.$events||!this.$events[C]){return this}var F=this.$events[C].keys.indexOf(B);if(F==-1){return this}var A=this.$events[C].keys.splice(F,1)[0];var E=this.$events[C].values.splice(F,1)[0];var D=Element.Events[C];if(D){if(D.remove){D.remove.call(this,B)}if(D.type){C=D.type}}return(Element.NativeEvents.contains(C))?this.removeListener(C,E):this},addEvents:function(A){return Element.setMany(this,"addEvent",A)},removeEvents:function(A){if(!this.$events){return this}if(!A){for(var B in this.$events){this.removeEvents(B)}this.$events=null}else{if(this.$events[A]){this.$events[A].keys.each(function(C){this.removeEvent(A,C)},this);this.$events[A]=null}}return this},fireEvent:function(C,B,A){if(this.$events&&this.$events[C]){this.$events[C].keys.each(function(D){D.create({bind:this,delay:A,"arguments":B})()},this)}return this},cloneEvents:function(C,A){if(!C.$events){return this}if(!A){for(var B in C.$events){this.cloneEvents(C,B)}}else{if(C.$events[A]){C.$events[A].keys.each(function(D){this.addEvent(A,D)},this)}}return this}};window.extend(Element.Methods.Events);document.extend(Element.Methods.Events);Element.extend(Element.Methods.Events);Element.Events=new Abstract({mouseenter:{type:"mouseover",map:function(A){A=new Event(A);if(A.relatedTarget!=this&&!this.hasChild(A.relatedTarget)){this.fireEvent("mouseenter",A)}}},mouseleave:{type:"mouseout",map:function(A){A=new Event(A);if(A.relatedTarget!=this&&!this.hasChild(A.relatedTarget)){this.fireEvent("mouseleave",A)}}},mousewheel:{type:(window.gecko)?"DOMMouseScroll":"mousewheel"}});Element.NativeEvents=["click","dblclick","mouseup","mousedown","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","touchstart","touchend","touchmove","keydown","keypress","keyup","load","unload","beforeunload","resize","move","focus","blur","change","submit","reset","select","error","abort","contextmenu","scroll"];Function.extend({bindWithEvent:function(B,A){return this.create({bind:B,"arguments":A,event:Event})}});Elements.extend({filterByTag:function(A){return new Elements(this.filter(function(B){return(Element.getTag(B)==A)}))},filterByClass:function(A,C){var B=this.filter(function(D){return(D.className&&D.className.contains(A," "))});return(C)?B:new Elements(B)},filterById:function(C,B){var A=this.filter(function(D){return(D.id==C)});return(B)?A:new Elements(A)},filterByAttribute:function(B,A,D,E){var C=this.filter(function(F){var G=Element.getProperty(F,B);if(!G){return false}if(!A){return true}switch(A){case"=":return(G==D);case"*=":return(G.contains(D));case"^=":return(G.substr(0,D.length)==D);case"$=":return(G.substr(G.length-D.length)==D);case"!=":return(G!=D);case"~=":return G.contains(D," ")}return false});return(E)?C:new Elements(C)}});function $E(A,B){return($(B)||document).getElement(A)}function $ES(A,B){return($(B)||document).getElementsBySelector(A)}$$.shared={regexp:/^(\w*|\*)(?:#([\w-]+)|\.([\w-]+))?(?:\[(\w+)(?:([!*^$]?=)["']?([^"'\]]*)["']?)?])?$/,xpath:{getParam:function(B,D,E,C){var A=[D.namespaceURI?"xhtml:":"",E[1]];if(E[2]){A.push('[@id="',E[2],'"]')}if(E[3]){A.push('[contains(concat(" ", @class, " "), " ',E[3],' ")]')}if(E[4]){if(E[5]&&E[6]){switch(E[5]){case"*=":A.push("[contains(@",E[4],', "',E[6],'")]');break;case"^=":A.push("[starts-with(@",E[4],', "',E[6],'")]');break;case"$=":A.push("[substring(@",E[4],", string-length(@",E[4],") - ",E[6].length,' + 1) = "',E[6],'"]');break;case"=":A.push("[@",E[4],'="',E[6],'"]');break;case"!=":A.push("[@",E[4],'!="',E[6],'"]')}}else{A.push("[@",E[4],"]")}}B.push(A.join(""));return B},getItems:function(B,E,G){var F=[];var A=document.evaluate(".//"+B.join("//"),E,$$.shared.resolver,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for(var D=0,C=A.snapshotLength;D<C;D++){F.push(A.snapshotItem(D))}return(G)?F:new Elements(F.map($))}},normal:{getParam:function(A,C,E,B){if(B==0){if(E[2]){var D=C.getElementById(E[2]);if(!D||((E[1]!="*")&&(Element.getTag(D)!=E[1]))){return false}A=[D]}else{A=$A(C.getElementsByTagName(E[1]))}}else{A=$$.shared.getElementsByTagName(A,E[1]);if(E[2]){A=Elements.filterById(A,E[2],true)}}if(E[3]){A=Elements.filterByClass(A,E[3],true)}if(E[4]){A=Elements.filterByAttribute(A,E[4],E[5],E[6],true)}return A},getItems:function(A,B,C){return(C)?A:$$.unique(A)}},resolver:function(A){return(A=="xhtml")?"http://www.w3.org/1999/xhtml":false},getElementsByTagName:function(D,C){var E=[];for(var B=0,A=D.length;B<A;B++){E.extend(D[B].getElementsByTagName(C))}return E}};$$.shared.method=(window.xpath)?"xpath":"normal";Element.Methods.Dom={getElements:function(A,H){var C=[];A=A.trim().split(" ");for(var E=0,D=A.length;E<D;E++){var F=A[E];var G=F.match($$.shared.regexp);if(!G){break}G[1]=G[1]||"*";var B=$$.shared[$$.shared.method].getParam(C,this,G,E);if(!B){break}C=B}return $$.shared[$$.shared.method].getItems(C,this,H)},getElement:function(A){return $(this.getElements(A,true)[0]||false)},getElementsBySelector:function(A,E){var D=[];A=A.split(",");for(var C=0,B=A.length;C<B;C++){D=D.concat(this.getElements(A[C],true))}return(E)?D:$$.unique(D)}};Element.extend({getElementById:function(C){var B=document.getElementById(C);if(!B){return false}for(var A=B.parentNode;A!=this;A=A.parentNode){if(!A){return false}}return B},getElementsByClassName:function(A){return this.getElements("."+A)}});document.extend(Element.Methods.Dom);Element.extend(Element.Methods.Dom);Element.extend({getValue:function(){switch(this.getTag()){case"select":var A=[];$each(this.options,function(B){if(B.selected){A.push($pick(B.value,B.text))}});return(this.multiple)?A:A[0];case"input":if(!(this.checked&&["checkbox","radio"].contains(this.type))&&!["hidden","text","password"].contains(this.type)){break}case"textarea":return this.value}return false},getFormElements:function(){return $$(this.getElementsByTagName("input"),this.getElementsByTagName("select"),this.getElementsByTagName("textarea"))},toQueryString:function(){var A=[];this.getFormElements().each(function(D){var C=D.name;var E=D.getValue();if(E===false||!C||D.disabled){return }var B=function(F){A.push(C+"="+encodeURIComponent(F))};if($type(E)=="array"){E.each(B)}else{B(E)}});return A.join("&")}});Element.extend({scrollTo:function(A,B){this.scrollLeft=A;this.scrollTop=B},getSize:function(){return{scroll:{x:this.scrollLeft,y:this.scrollTop},size:{x:this.offsetWidth,y:this.offsetHeight},scrollSize:{x:this.scrollWidth,y:this.scrollHeight}}},getPosition:function(A){A=A||[];var B=this,D=0,C=0;do{D+=B.offsetLeft||0;C+=B.offsetTop||0;B=B.offsetParent}while(B);A.each(function(E){D-=E.scrollLeft||0;C-=E.scrollTop||0});return{x:D,y:C}},getTop:function(A){return this.getPosition(A).y},getLeft:function(A){return this.getPosition(A).x},getCoordinates:function(B){var A=this.getPosition(B);var C={width:this.offsetWidth,height:this.offsetHeight,left:A.x,top:A.y};C.right=C.left+C.width;C.bottom=C.top+C.height;return C}});Element.Events.domready={add:function(B){if(window.loaded){B.call(this);return }var A=function(){if(window.loaded){return }window.loaded=true;window.timer=$clear(window.timer);this.fireEvent("domready")}.bind(this);if(document.readyState&&window.webkit){window.timer=function(){if(["loaded","complete"].contains(document.readyState)){A()}}.periodical(50)}else{if(document.readyState&&window.ie){if(!$("ie_ready")){var C=(window.location.protocol=="https:")?"://0":"javascript:void(0)";document.write('<script id="ie_ready" defer src="'+C+'"><\/script>');$("ie_ready").onreadystatechange=function(){if(this.readyState=="complete"){A()}}}}else{window.addListener("load",A);document.addListener("DOMContentLoaded",A)}}}};window.onDomReady=function(A){return this.addEvent("domready",A)};window.extend({getWidth:function(){if(this.webkit419){return this.innerWidth}if(this.opera){return document.body.clientWidth}return document.documentElement.clientWidth},getHeight:function(){if(this.webkit419){return this.innerHeight}if(this.opera){return document.body.clientHeight}return document.documentElement.clientHeight},getScrollWidth:function(){if(this.ie){return Math.max(document.documentElement.offsetWidth,document.documentElement.scrollWidth)}if(this.webkit){return document.body.scrollWidth}return document.documentElement.scrollWidth},getScrollHeight:function(){if(this.ie){return Math.max(document.documentElement.offsetHeight,document.documentElement.scrollHeight)}if(this.webkit){return document.body.scrollHeight}return document.documentElement.scrollHeight},getScrollLeft:function(){return this.pageXOffset||document.documentElement.scrollLeft},getScrollTop:function(){return this.pageYOffset||document.documentElement.scrollTop},getSize:function(){return{size:{x:this.getWidth(),y:this.getHeight()},scrollSize:{x:this.getScrollWidth(),y:this.getScrollHeight()},scroll:{x:this.getScrollLeft(),y:this.getScrollTop()}}},getPosition:function(){return{x:0,y:0}}});var Fx={};Fx.Base=new Class({options:{onStart:Class.empty,onComplete:Class.empty,onCancel:Class.empty,transition:function(A){return -(Math.cos(Math.PI*A)-1)/2},duration:500,unit:"px",wait:true,fps:50},initialize:function(A){this.element=this.element||null;this.setOptions(A);if(this.options.initialize){this.options.initialize.call(this)}},step:function(){var A=$time();if(A<this.time+this.options.duration){this.delta=this.options.transition((A-this.time)/this.options.duration);this.setNow();this.increase()}else{this.stop(true);this.set(this.to);this.fireEvent("onComplete",this.element,10);this.callChain()}},set:function(A){this.now=A;this.increase();return this},setNow:function(){this.now=this.compute(this.from,this.to)},compute:function(B,A){return(A-B)*this.delta+B},start:function(B,A){if(!this.options.wait){this.stop()}else{if(this.timer){return this}}this.from=B;this.to=A;this.change=this.to-this.from;this.time=$time();this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);this.fireEvent("onStart",this.element);return this},stop:function(A){if(!this.timer){return this}this.timer=$clear(this.timer);if(!A){this.fireEvent("onCancel",this.element)}return this},custom:function(B,A){return this.start(B,A)},clearTimer:function(A){return this.stop(A)}});Fx.Base.implement(new Chain,new Events,new Options);Fx.CSS={select:function(B,C){if(B.test(/color/i)){return this.Color}var A=$type(C);if((A=="array")||(A=="string"&&C.contains(" "))){return this.Multi}return this.Single},parse:function(C,D,A){if(!A.push){A=[A]}var F=A[0],E=A[1];if(!$chk(E)){E=F;F=C.getStyle(D)}var B=this.select(D,E);return{from:B.parse(F),to:B.parse(E),css:B}}};Fx.CSS.Single={parse:function(A){return parseFloat(A)},getNow:function(C,B,A){return A.compute(C,B)},getValue:function(C,A,B){if(A=="px"&&B!="opacity"){C=Math.round(C)}return C+A}};Fx.CSS.Multi={parse:function(A){return A.push?A:A.split(" ").map(function(B){return parseFloat(B)})},getNow:function(E,D,C){var A=[];for(var B=0;B<E.length;B++){A[B]=C.compute(E[B],D[B])}return A},getValue:function(C,A,B){if(A=="px"&&B!="opacity"){C=C.map(Math.round)}return C.join(A+" ")+A}};Fx.CSS.Color={parse:function(A){return A.push?A:A.hexToRgb(true)},getNow:function(E,D,C){var A=[];for(var B=0;B<E.length;B++){A[B]=Math.round(C.compute(E[B],D[B]))}return A},getValue:function(A){return"rgb("+A.join(",")+")"}};Fx.Style=Fx.Base.extend({initialize:function(B,C,A){this.element=$(B);this.property=C;this.parent(A)},hide:function(){return this.set(0)},setNow:function(){this.now=this.css.getNow(this.from,this.to,this)},set:function(A){this.css=Fx.CSS.select(this.property,A);return this.parent(this.css.parse(A))},start:function(C,B){if(this.timer&&this.options.wait){return this}var A=Fx.CSS.parse(this.element,this.property,[C,B]);this.css=A.css;return this.parent(A.from,A.to)},increase:function(){this.element.setStyle(this.property,this.css.getValue(this.now,this.options.unit,this.property))}});Element.extend({effect:function(B,A){return new Fx.Style(this,B,A)}});Fx.Styles=Fx.Base.extend({initialize:function(B,A){this.element=$(B);this.parent(A)},setNow:function(){for(var A in this.from){this.now[A]=this.css[A].getNow(this.from[A],this.to[A],this)}},set:function(C){var A={};this.css={};for(var B in C){this.css[B]=Fx.CSS.select(B,C[B]);A[B]=this.css[B].parse(C[B])}return this.parent(A)},start:function(C){if(this.timer&&this.options.wait){return this}this.now={};this.css={};var E={},D={};for(var B in C){var A=Fx.CSS.parse(this.element,B,C[B]);E[B]=A.from;D[B]=A.to;this.css[B]=A.css}return this.parent(E,D)},increase:function(){for(var A in this.now){this.element.setStyle(A,this.css[A].getValue(this.now[A],this.options.unit,A))}}});Element.extend({effects:function(A){return new Fx.Styles(this,A)}});Fx.Elements=Fx.Base.extend({initialize:function(B,A){this.elements=$$(B);this.parent(A)},setNow:function(){for(var C in this.from){var F=this.from[C],E=this.to[C],B=this.css[C],A=this.now[C]={};for(var D in F){A[D]=B[D].getNow(F[D],E[D],this)}}},set:function(G){var B={};this.css={};for(var D in G){var F=G[D],C=this.css[D]={},A=B[D]={};for(var E in F){C[E]=Fx.CSS.select(E,F[E]);A[E]=C[E].parse(F[E])}}return this.parent(B)},start:function(D){if(this.timer&&this.options.wait){return this}this.now={};this.css={};var I={},J={};for(var E in D){var G=D[E],A=I[E]={},H=J[E]={},C=this.css[E]={};for(var B in G){var F=Fx.CSS.parse(this.elements[E],B,G[B]);A[B]=F.from;H[B]=F.to;C[B]=F.css}}return this.parent(I,J)},increase:function(){for(var C in this.now){var A=this.now[C],B=this.css[C];for(var D in A){this.elements[C].setStyle(D,B[D].getValue(A[D],this.options.unit,D))}}}});Fx.Scroll=Fx.Base.extend({options:{overflown:[],offset:{x:0,y:0},wheelStops:true},initialize:function(B,A){this.now=[];this.element=$(B);this.bound={stop:this.stop.bind(this,false)};this.parent(A);if(this.options.wheelStops){this.addEvent("onStart",function(){document.addEvent("mousewheel",this.bound.stop)}.bind(this));this.addEvent("onComplete",function(){document.removeEvent("mousewheel",this.bound.stop)}.bind(this))}},setNow:function(){for(var A=0;A<2;A++){this.now[A]=this.compute(this.from[A],this.to[A])}},scrollTo:function(B,F){if(this.timer&&this.options.wait){return this}var D=this.element.getSize();var C={x:B,y:F};for(var E in D.size){var A=D.scrollSize[E]-D.size[E];if($chk(C[E])){C[E]=($type(C[E])=="number")?C[E].limit(0,A):A}else{C[E]=D.scroll[E]}C[E]+=this.options.offset[E]}return this.start([D.scroll.x,D.scroll.y],[C.x,C.y])},toTop:function(){return this.scrollTo(false,0)},toBottom:function(){return this.scrollTo(false,"full")},toLeft:function(){return this.scrollTo(0,false)},toRight:function(){return this.scrollTo("full",false)},toElement:function(B){var A=this.element.getPosition(this.options.overflown);var C=$(B).getPosition(this.options.overflown);return this.scrollTo(C.x-A.x,C.y-A.y)},increase:function(){this.element.scrollTo(this.now[0],this.now[1])}});Fx.Slide=Fx.Base.extend({options:{mode:"vertical"},initialize:function(B,A){this.element=$(B);this.wrapper=new Element("div",{styles:$extend(this.element.getStyles("margin"),{overflow:"hidden"})}).injectAfter(this.element).adopt(this.element);this.element.setStyle("margin",0);this.setOptions(A);this.now=[];this.parent(this.options);this.open=true;this.addEvent("onComplete",function(){this.open=(this.now[0]===0)});if(window.webkit419){this.addEvent("onComplete",function(){if(this.open){this.element.remove().inject(this.wrapper)}})}},setNow:function(){for(var A=0;A<2;A++){this.now[A]=this.compute(this.from[A],this.to[A])}},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight},horizontal:function(){this.margin="margin-left";this.layout="width";this.offset=this.element.offsetWidth},slideIn:function(A){this[A||this.options.mode]();return this.start([this.element.getStyle(this.margin).toInt(),this.wrapper.getStyle(this.layout).toInt()],[0,this.offset])},slideOut:function(A){this[A||this.options.mode]();return this.start([this.element.getStyle(this.margin).toInt(),this.wrapper.getStyle(this.layout).toInt()],[-this.offset,0])},hide:function(A){this[A||this.options.mode]();this.open=false;return this.set([-this.offset,0])},show:function(A){this[A||this.options.mode]();this.open=true;return this.set([0,this.offset])},toggle:function(A){if(this.wrapper.offsetHeight==0||this.wrapper.offsetWidth==0){return this.slideIn(A)}return this.slideOut(A)},increase:function(){this.element.setStyle(this.margin,this.now[0]+this.options.unit);this.wrapper.setStyle(this.layout,this.now[1]+this.options.unit)}});Fx.Transition=function(B,A){A=A||[];if($type(A)!="array"){A=[A]}return $extend(B,{easeIn:function(C){return B(C,A)},easeOut:function(C){return 1-B(1-C,A)},easeInOut:function(C){return(C<=0.5)?B(2*C,A)/2:(2-B(2*(1-C),A))/2}})};Fx.Transitions=new Abstract({linear:function(A){return A}});Fx.Transitions.extend=function(A){for(var B in A){Fx.Transitions[B]=new Fx.Transition(A[B]);Fx.Transitions.compat(B)}};Fx.Transitions.compat=function(A){["In","Out","InOut"].each(function(B){Fx.Transitions[A.toLowerCase()+B]=Fx.Transitions[A]["ease"+B]})};Fx.Transitions.extend({Pow:function(B,A){return Math.pow(B,A[0]||6)},Expo:function(A){return Math.pow(2,8*(A-1))},Circ:function(A){return 1-Math.sin(Math.acos(A))},Sine:function(A){return 1-Math.sin((1-A)*Math.PI/2)},Back:function(B,A){A=A[0]||1.618;return Math.pow(B,2)*((A+1)*B-A)},Bounce:function(D){var C;for(var B=0,A=1;1;B+=A,A/=2){if(D>=(7-4*B)/11){C=-Math.pow((11-6*B-11*D)/4,2)+A*A;break}}return C},Elastic:function(B,A){return Math.pow(2,10*--B)*Math.cos(20*B*Math.PI*(A[0]||1)/3)}});["Quad","Cubic","Quart","Quint"].each(function(B,A){Fx.Transitions[B]=new Fx.Transition(function(C){return Math.pow(C,[A+2])});Fx.Transitions.compat(B)});var Drag={};Drag.Base=new Class({options:{handle:false,unit:"px",onStart:Class.empty,onBeforeStart:Class.empty,onComplete:Class.empty,onSnap:Class.empty,onDrag:Class.empty,limit:false,modifiers:{x:"left",y:"top"},grid:false,snap:6},initialize:function(B,A){this.setOptions(A);this.element=$(B);this.handle=$(this.options.handle)||this.element;this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.bound={start:this.start.bindWithEvent(this),check:this.check.bindWithEvent(this),drag:this.drag.bindWithEvent(this),stop:this.stop.bind(this)};this.attach();if(this.options.initialize){this.options.initialize.call(this)}},attach:function(){if(window.ipad){this.handle.addEvent("touchstart",this.bound.start)}this.handle.addEvent("mousedown",this.bound.start);return this},detach:function(){if(window.ipad){this.handle.removeEvent("touchstart",this.bound.start)}else{this.handle.removeEvent("mousedown",this.bound.start)}return this},start:function(C){this.fireEvent("onBeforeStart",this.element);this.mouse.start=C.page;var A=this.options.limit;this.limit={x:[],y:[]};for(var D in this.options.modifiers){if(!this.options.modifiers[D]){continue}this.value.now[D]=this.element.getStyle(this.options.modifiers[D]).toInt();this.mouse.pos[D]=C.page[D]-this.value.now[D];if(A&&A[D]){for(var B=0;B<2;B++){if($chk(A[D][B])){this.limit[D][B]=($type(A[D][B])=="function")?A[D][B]():A[D][B]}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}}if(window.ipad){document.addListener("touchmove",this.bound.check)}else{document.addListener("mousemove",this.bound.check)}if(window.ipad){document.addListener("touchend",this.bound.stop)}else{document.addListener("mouseup",this.bound.stop)}this.fireEvent("onStart",this.element);C.stop()},check:function(A){var B=Math.round(Math.sqrt(Math.pow(A.page.x-this.mouse.start.x,2)+Math.pow(A.page.y-this.mouse.start.y,2)));if(B>this.options.snap){if(window.ipad){document.removeListener("touchmove",this.bound.check);document.addListener("touchmove",this.bound.drag)}else{document.removeListener("mousemove",this.bound.check);document.addListener("mousemove",this.bound.drag)}this.drag(A);this.fireEvent("onSnap",this.element)}A.stop()},drag:function(A){this.out=false;this.mouse.now=A.page;for(var B in this.options.modifiers){if(!this.options.modifiers[B]){continue}this.value.now[B]=this.mouse.now[B]-this.mouse.pos[B];if(this.limit[B]){if($chk(this.limit[B][1])&&(this.value.now[B]>this.limit[B][1])){this.value.now[B]=this.limit[B][1];this.out=true}else{if($chk(this.limit[B][0])&&(this.value.now[B]<this.limit[B][0])){this.value.now[B]=this.limit[B][0];this.out=true}}}if(this.options.grid[B]){this.value.now[B]-=(this.value.now[B]%this.options.grid[B])}this.element.setStyle(this.options.modifiers[B],this.value.now[B]+this.options.unit)}this.fireEvent("onDrag",this.element);A.stop()},stop:function(){if(window.ipad){document.removeListener("touchstart",this.bound.check);document.removeListener("touchmove",this.bound.drag);document.removeListener("touchend",this.bound.stop)}else{document.removeListener("mousemove",this.bound.check);document.removeListener("mousemove",this.bound.drag);document.removeListener("mouseup",this.bound.stop)}this.fireEvent("onComplete",this.element)}});Drag.Base.implement(new Events,new Options);Element.extend({makeResizable:function(A){return new Drag.Base(this,$merge({modifiers:{x:"width",y:"height"}},A))}});Drag.Move=Drag.Base.extend({options:{droppables:[],container:false,overflown:[]},initialize:function(B,A){this.setOptions(A);this.element=$(B);this.droppables=$$(this.options.droppables);this.container=$(this.options.container);this.position={element:this.element.getStyle("position"),container:false};if(this.container){this.position.container=this.container.getStyle("position")}if(!["relative","absolute","fixed"].contains(this.position.element)){this.position.element="absolute"}var D=this.element.getStyle("top").toInt();var C=this.element.getStyle("left").toInt();if(this.position.element=="absolute"&&!["relative","absolute","fixed"].contains(this.position.container)){D=$chk(D)?D:this.element.getTop(this.options.overflown);C=$chk(C)?C:this.element.getLeft(this.options.overflown)}else{D=$chk(D)?D:0;C=$chk(C)?C:0}this.element.setStyles({top:D,left:C,position:this.position.element});this.parent(this.element)},start:function(C){this.overed=null;if(this.container){var A=this.container.getCoordinates();var B=this.element.getCoordinates();if(this.position.element=="absolute"&&!["relative","absolute","fixed"].contains(this.position.container)){this.options.limit={x:[A.left,A.right-B.width],y:[A.top,A.bottom-B.height]}}else{this.options.limit={y:[0,A.height-B.height],x:[0,A.width-B.width]}}}this.parent(C)},drag:function(A){this.parent(A);var B=this.out?false:this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=B){if(this.overed){this.overed.fireEvent("leave",[this.element,this])}this.overed=B?B.fireEvent("over",[this.element,this]):null}return this},checkAgainst:function(B){B=B.getCoordinates(this.options.overflown);var A=this.mouse.now;return(A.x>B.left&&A.x<B.right&&A.y<B.bottom&&A.y>B.top)},stop:function(){if(this.overed&&!this.out){this.overed.fireEvent("drop",[this.element,this])}else{this.element.fireEvent("emptydrop",this)}this.parent();return this}});Element.extend({makeDraggable:function(A){return new Drag.Move(this,A)}});var XHR=new Class({options:{method:"post",async:true,onRequest:Class.empty,onSuccess:Class.empty,onFailure:Class.empty,urlEncoded:true,encoding:"utf-8",autoCancel:false,headers:{}},setTransport:function(){this.transport=(window.XMLHttpRequest)?new XMLHttpRequest():(window.ie?new ActiveXObject("Microsoft.XMLHTTP"):false);return this},initialize:function(A){this.setTransport().setOptions(A);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers={};if(this.options.urlEncoded&&this.options.method=="post"){var B=(this.options.encoding)?"; charset="+this.options.encoding:"";this.setHeader("Content-type","application/x-www-form-urlencoded"+B)}if(this.options.initialize){this.options.initialize.call(this)}},onStateChange:function(){if(this.transport.readyState!=4||!this.running){return }this.running=false;var A=0;try{A=this.transport.status}catch(B){}if(this.options.isSuccess.call(this,A)){this.onSuccess()}else{this.onFailure()}this.transport.onreadystatechange=Class.empty},isSuccess:function(A){return((A>=200)&&(A<300))},onSuccess:function(){this.response={text:this.transport.responseText,xml:this.transport.responseXML};this.fireEvent("onSuccess",[this.response.text,this.response.xml]);this.callChain()},onFailure:function(){this.fireEvent("onFailure",this.transport)},setHeader:function(A,B){this.headers[A]=B;return this},send:function(A,C){if(this.options.autoCancel){this.cancel()}else{if(this.running){return this}}this.running=true;if(C&&this.options.method=="get"){A=A+(A.contains("?")?"&":"?")+C;C=null}this.transport.open(this.options.method.toUpperCase(),A,this.options.async);this.transport.onreadystatechange=this.onStateChange.bind(this);if((this.options.method=="post")&&this.transport.overrideMimeType){$extend(this.headers,this.options.headers)}for(var B in this.headers){try{this.transport.setRequestHeader(B,this.headers[B])}catch(D){}}this.fireEvent("onRequest");this.transport.send($pick(C,null));return this},cancel:function(){if(!this.running){return this}this.running=false;this.transport.abort();this.transport.onreadystatechange=Class.empty;this.setTransport();this.fireEvent("onCancel");return this}});XHR.implement(new Chain,new Events,new Options);var Ajax=XHR.extend({options:{data:null,update:null,onComplete:Class.empty,evalScripts:false,evalResponse:false},initialize:function(B,A){this.addEvent("onSuccess",this.onComplete);this.setOptions(A);this.options.data=this.options.data||this.options.postBody;if(!["post","get"].contains(this.options.method)){this._method="_method="+this.options.method;this.options.method="post"}this.parent();this.setHeader("X-Requested-With","XMLHttpRequest");this.setHeader("Accept","text/javascript, text/html, application/xml, text/xml, */*");this.url=B},onComplete:function(){if(this.options.update){$(this.options.update).empty().setHTML(this.response.text)}if(this.options.evalScripts||this.options.evalResponse){this.evalScripts()}this.fireEvent("onComplete",[this.response.text,this.response.xml],20)},request:function(A){A=A||this.options.data;switch($type(A)){case"element":A=$(A).toQueryString();break;case"object":A=Object.toQueryString(A)}if(this._method){A=(A)?[this._method,A].join("&"):this._method}return this.send(this.url,A)},evalScripts:function(){var B,A;if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){A=this.response.text}else{A=[];var C=/<script[^>]*>([\s\S]*?)<\/script>/gi;while((B=C.exec(this.response.text))){A.push(B[1])}A=A.join("\n")}if(A){(window.execScript)?window.execScript(A):window.setTimeout(A,0)}},getHeader:function(A){try{return this.transport.getResponseHeader(A)}catch(B){}return null}});Object.toQueryString=function(B){var C=[];for(var A in B){C.push(encodeURIComponent(A)+"="+encodeURIComponent(B[A]))}return C.join("&")};Element.extend({send:function(A){return new Ajax(this.getProperty("action"),$merge({data:this.toQueryString()},A,{method:"post"})).request()}});var Cookie=new Abstract({options:{domain:false,path:false,duration:false,secure:false},set:function(C,D,B){B=$merge(this.options,B);D=encodeURIComponent(D);if(B.domain){D+="; domain="+B.domain}if(B.path){D+="; path="+B.path}if(B.duration){var A=new Date();A.setTime(A.getTime()+B.duration*24*60*60*1000);D+="; expires="+A.toGMTString()}if(B.secure){D+="; secure"}document.cookie=C+"="+D;return $extend(B,{key:C,value:D})},get:function(A){var B=document.cookie.match("(?:^|;)\\s*"+A.escapeRegExp()+"=([^;]*)");return B?decodeURIComponent(B[1]):false},remove:function(B,A){if($type(B)=="object"){this.set(B.key,"",$merge(B,{duration:-1}))}else{this.set(B,"",$merge(A,{duration:-1}))}}});var Json={toString:function(C){switch($type(C)){case"string":return'"'+C.replace(/(["\\])/g,"\\$1")+'"';case"array":return"["+C.map(Json.toString).join(",")+"]";case"object":var A=[];for(var B in C){A.push(Json.toString(B)+":"+Json.toString(C[B]))}return"{"+A.join(",")+"}";case"number":if(isFinite(C)){break}case false:return"null"}return String(C)},evaluate:function(str,secure){return(($type(str)!="string")||(secure&&!str.test(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/)))?null:eval("("+str+")")}};Json.Remote=XHR.extend({initialize:function(B,A){this.url=B;this.addEvent("onSuccess",this.onComplete);this.parent(A);this.setHeader("X-Request","JSON")},send:function(A){return this.parent(this.url,"json="+Json.toString(A))},onComplete:function(){this.fireEvent("onComplete",[Json.evaluate(this.response.text,this.options.secure)])}});var Asset=new Abstract({javascript:function(C,B){B=$merge({onload:Class.empty},B);var A=new Element("script",{src:C}).addEvents({load:B.onload,readystatechange:function(){if(this.readyState=="complete"){this.fireEvent("load")}}});delete B.onload;return A.setProperties(B).inject(document.head)},css:function(B,A){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:B},A)).inject(document.head)},image:function(C,B){B=$merge({onload:Class.empty,onabort:Class.empty,onerror:Class.empty},B);var D=new Image();D.src=C;var A=new Element("img",{src:C});["load","abort","error"].each(function(E){var F=B["on"+E];delete B["on"+E];A.addEvent(E,function(){this.removeEvent(E,arguments.callee);F.call(this)})});if(D.width&&D.height){A.fireEvent("load",A,1)}return A.setProperties(B)},images:function(D,C){C=$merge({onComplete:Class.empty,onProgress:Class.empty},C);if(!D.push){D=[D]}var A=[];var B=0;D.each(function(F){var E=new Asset.image(F,{onload:function(){C.onProgress.call(this,B);B++;if(B==D.length){C.onComplete()}}});A.push(E)});return new Elements(A)}});var Hash=new Class({length:0,initialize:function(A){this.obj=A||{};this.setLength()},get:function(A){return(this.hasKey(A))?this.obj[A]:null},hasKey:function(A){return(A in this.obj)},set:function(A,B){if(!this.hasKey(A)){this.length++}this.obj[A]=B;return this},setLength:function(){this.length=0;for(var A in this.obj){this.length++}return this},remove:function(A){if(this.hasKey(A)){delete this.obj[A];this.length--}return this},each:function(A,B){$each(this.obj,A,B)},extend:function(A){$extend(this.obj,A);return this.setLength()},merge:function(){this.obj=$merge.apply(null,[this.obj].extend(arguments));return this.setLength()},empty:function(){this.obj={};this.length=0;return this},keys:function(){var A=[];for(var B in this.obj){A.push(B)}return A},values:function(){var A=[];for(var B in this.obj){A.push(this.obj[B])}return A}});function $H(A){return new Hash(A)}Hash.Cookie=Hash.extend({initialize:function(B,A){this.name=B;this.options=$extend({autoSave:true},A||{});this.load()},save:function(){if(this.length==0){Cookie.remove(this.name,this.options);return true}var A=Json.toString(this.obj);if(A.length>4096){return false}Cookie.set(this.name,A,this.options);return true},load:function(){this.obj=Json.evaluate(Cookie.get(this.name),true)||{};this.setLength()}});Hash.Cookie.Methods={};["extend","set","merge","empty","remove"].each(function(A){Hash.Cookie.Methods[A]=function(){Hash.prototype[A].apply(this,arguments);if(this.options.autoSave){this.save()}return this}});Hash.Cookie.implement(Hash.Cookie.Methods);var Color=new Class({initialize:function(B,D){D=D||(B.push?"rgb":"hex");var C,A;switch(D){case"rgb":C=B;A=C.rgbToHsb();break;case"hsb":C=B.hsbToRgb();A=B;break;default:C=B.hexToRgb(true);A=C.rgbToHsb()}C.hsb=A;C.hex=C.rgbToHex();return $extend(C,Color.prototype)},mix:function(){var A=$A(arguments);var C=($type(A[A.length-1])=="number")?A.pop():50;var B=this.copy();A.each(function(D){D=new Color(D);for(var E=0;E<3;E++){B[E]=Math.round((B[E]/100*(100-C))+(D[E]/100*C))}});return new Color(B,"rgb")},invert:function(){return new Color(this.map(function(A){return 255-A}))},setHue:function(A){return new Color([A,this.hsb[1],this.hsb[2]],"hsb")},setSaturation:function(A){return new Color([this.hsb[0],A,this.hsb[2]],"hsb")},setBrightness:function(A){return new Color([this.hsb[0],this.hsb[1],A],"hsb")}});function $RGB(C,B,A){return new Color([C,B,A],"rgb")}function $HSB(C,B,A){return new Color([C,B,A],"hsb")}Array.extend({rgbToHsb:function(){var B=this[0],C=this[1],J=this[2];var G,F,H;var I=Math.max(B,C,J),E=Math.min(B,C,J);var K=I-E;H=I/255;F=(I!=0)?K/I:0;if(F==0){G=0}else{var D=(I-B)/K;var A=(I-C)/K;var L=(I-J)/K;if(B==I){G=L-A}else{if(C==I){G=2+D-L}else{G=4+A-D}}G/=6;if(G<0){G++}}return[Math.round(G*360),Math.round(F*100),Math.round(H*100)]},hsbToRgb:function(){var C=Math.round(this[2]/100*255);if(this[1]==0){return[C,C,C]}else{var A=this[0]%360;var E=A%60;var F=Math.round((this[2]*(100-this[1]))/10000*255);var D=Math.round((this[2]*(6000-this[1]*E))/600000*255);var B=Math.round((this[2]*(6000-this[1]*(60-E)))/600000*255);switch(Math.floor(A/60)){case 0:return[C,B,F];case 1:return[D,C,F];case 2:return[F,C,B];case 3:return[F,D,C];case 4:return[B,F,C];case 5:return[C,F,D]}}return false}});var Scroller=new Class({options:{area:20,velocity:1,onChange:function(A,B){this.element.scrollTo(A,B)}},initialize:function(B,A){this.setOptions(A);this.element=$(B);this.mousemover=([window,document].contains(B))?$(document.body):this.element},start:function(){this.coord=this.getCoords.bindWithEvent(this);this.mousemover.addListener("mousemove",this.coord)},stop:function(){this.mousemover.removeListener("mousemove",this.coord);this.timer=$clear(this.timer)},getCoords:function(A){this.page=(this.element==window)?A.client:A.page;if(!this.timer){this.timer=this.scroll.periodical(50,this)}},scroll:function(){var A=this.element.getSize();var D=this.element.getPosition();var C={x:0,y:0};for(var B in this.page){if(this.page[B]<(this.options.area+D[B])&&A.scroll[B]!=0){C[B]=(this.page[B]-this.options.area-D[B])*this.options.velocity}else{if(this.page[B]+this.options.area>(A.size[B]+D[B])&&A.scroll[B]+A.size[B]!=A.scrollSize[B]){C[B]=(this.page[B]-A.size[B]+this.options.area-D[B])*this.options.velocity}}}if(C.y||C.x){this.fireEvent("onChange",[A.scroll.x+C.x,A.scroll.y+C.y])}}});Scroller.implement(new Events,new Options);var Slider=new Class({options:{onChange:Class.empty,onComplete:Class.empty,onTick:function(A){this.knob.setStyle(this.p,A)},mode:"horizontal",steps:100,offset:0},initialize:function(D,A,B){this.element=$(D);this.knob=$(A);this.setOptions(B);this.previousChange=-1;this.previousEnd=-1;this.step=-1;this.element.addEvent("mousedown",this.clickedElement.bindWithEvent(this));var C,F;switch(this.options.mode){case"horizontal":this.z="x";this.p="left";C={x:"left",y:false};F="offsetWidth";break;case"vertical":this.z="y";this.p="top";C={x:false,y:"top"};F="offsetHeight"}this.max=this.element[F]-this.knob[F]+(this.options.offset*2);this.half=this.knob[F]/2;this.getPos=this.element["get"+this.p.capitalize()].bind(this.element);this.knob.setStyle("position","relative").setStyle(this.p,-this.options.offset);var E={};E[this.z]=[-this.options.offset,this.max-this.options.offset];this.drag=new Drag.Base(this.knob,{limit:E,modifiers:C,snap:0,onStart:function(){this.draggedKnob()}.bind(this),onDrag:function(){this.draggedKnob()}.bind(this),onComplete:function(){this.draggedKnob();this.end()}.bind(this)});if(this.options.initialize){this.options.initialize.call(this)}},set:function(A){this.step=A.limit(0,this.options.steps);this.checkStep();this.end();this.fireEvent("onTick",this.toPosition(this.step));return this},clickedElement:function(B){var A=B.page[this.z]-this.getPos()-this.half;A=A.limit(-this.options.offset,this.max-this.options.offset);this.step=this.toStep(A);this.checkStep();this.end();this.fireEvent("onTick",A)},draggedKnob:function(){this.step=this.toStep(this.drag.value.now[this.z]);this.checkStep()},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent("onChange",this.step)}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent("onComplete",this.step+"")}},toStep:function(A){return Math.round((A+this.options.offset)/this.max*this.options.steps)},toPosition:function(A){return this.max*A/this.options.steps}});Slider.implement(new Events);Slider.implement(new Options);var SmoothScroll=Fx.Scroll.extend({initialize:function(B){this.parent(window,B);this.links=(this.options.links)?$$(this.options.links):$$(document.links);var A=window.location.href.match(/^[^#]*/)[0]+"#";this.links.each(function(D){if(D.href.indexOf(A)!=0){return }var C=D.href.substr(A.length);if(C&&$(C)){this.useLink(D,C)}},this);if(!window.webkit419){this.addEvent("onComplete",function(){window.location.hash=this.anchor})}},useLink:function(B,A){B.addEvent("click",function(C){this.anchor=A;this.toElement(A);C.stop()}.bindWithEvent(this))}});var Sortables=new Class({options:{handles:false,onStart:Class.empty,onComplete:Class.empty,ghost:true,snap:3,onDragStart:function(A,B){B.setStyle("opacity",0.7);A.setStyle("opacity",0.7)},onDragComplete:function(A,B){A.setStyle("opacity",1);B.remove();this.trash.remove()}},initialize:function(D,B){this.setOptions(B);this.list=$(D);this.elements=this.list.getChildren();this.handles=(this.options.handles)?$$(this.options.handles):this.elements;this.bound={start:[],moveGhost:this.moveGhost.bindWithEvent(this)};for(var C=0,A=this.handles.length;C<A;C++){this.bound.start[C]=this.start.bindWithEvent(this,this.elements[C])}this.attach();if(this.options.initialize){this.options.initialize.call(this)}this.bound.move=this.move.bindWithEvent(this);this.bound.end=this.end.bind(this)},attach:function(){this.handles.each(function(B,A){B.addEvent("mousedown",this.bound.start[A])},this)},detach:function(){this.handles.each(function(B,A){B.removeEvent("mousedown",this.bound.start[A])},this)},start:function(C,B){this.active=B;this.coordinates=this.list.getCoordinates();if(this.options.ghost){var A=B.getPosition();this.offset=C.page.y-A.y;this.trash=new Element("div").inject(document.body);this.ghost=B.clone().inject(this.trash).setStyles({position:"absolute",left:A.x,top:C.page.y-this.offset});document.addListener("mousemove",this.bound.moveGhost);this.fireEvent("onDragStart",[B,this.ghost])}document.addListener("mousemove",this.bound.move);document.addListener("mouseup",this.bound.end);this.fireEvent("onStart",B);C.stop()},moveGhost:function(A){var B=A.page.y-this.offset;B=B.limit(this.coordinates.top,this.coordinates.bottom-this.ghost.offsetHeight);this.ghost.setStyle("top",B);A.stop()},move:function(E){var B=E.page.y;this.previous=this.previous||B;var A=((this.previous-B)>0);var D=this.active.getPrevious();var C=this.active.getNext();if(D&&A&&B<D.getCoordinates().bottom){this.active.injectBefore(D)}if(C&&!A&&B>C.getCoordinates().top){this.active.injectAfter(C)}this.previous=B},serialize:function(A){return this.list.getChildren().map(A||function(B){return this.elements.indexOf(B)},this)},end:function(){this.previous=null;document.removeListener("mousemove",this.bound.move);document.removeListener("mouseup",this.bound.end);if(this.options.ghost){document.removeListener("mousemove",this.bound.moveGhost);this.fireEvent("onDragComplete",[this.active,this.ghost])}this.fireEvent("onComplete",this.active)}});Sortables.implement(new Events,new Options);var Tips=new Class({options:{onShow:function(A){A.setStyle("visibility","visible")},onHide:function(A){A.setStyle("visibility","hidden")},maxTitleChars:30,showDelay:100,hideDelay:100,className:"tool",offsets:{x:16,y:16},fixed:false},initialize:function(B,A){this.setOptions(A);this.toolTip=new Element("div",{"class":this.options.className+"-tip",styles:{position:"absolute",top:"0",left:"0",visibility:"hidden"}}).inject(document.body);this.wrapper=new Element("div").inject(this.toolTip);$$(B).each(this.build,this);if(this.options.initialize){this.options.initialize.call(this)}},build:function(B){B.$tmp.myTitle=(B.href&&B.getTag()=="a")?B.href.replace("http://",""):(B.rel||false);if(B.title){var C=B.title.split("::");if(C.length>1){B.$tmp.myTitle=C[0].trim();B.$tmp.myText=C[1].trim()}else{B.$tmp.myText=B.title}B.removeAttribute("title")}else{B.$tmp.myText=false}if(B.$tmp.myTitle&&B.$tmp.myTitle.length>this.options.maxTitleChars){B.$tmp.myTitle=B.$tmp.myTitle.substr(0,this.options.maxTitleChars-1)+"&hellip;"}B.addEvent("mouseenter",function(D){this.start(B);if(!this.options.fixed){this.locate(D)}else{this.position(B)}}.bind(this));if(!this.options.fixed){B.addEvent("mousemove",this.locate.bindWithEvent(this))}var A=this.end.bind(this);B.addEvent("mouseleave",A);B.addEvent("trash",A)},start:function(A){this.wrapper.empty();if(A.$tmp.myTitle){this.title=new Element("span").inject(new Element("div",{"class":this.options.className+"-title"}).inject(this.wrapper)).setHTML(A.$tmp.myTitle)}if(A.$tmp.myText){this.text=new Element("span").inject(new Element("div",{"class":this.options.className+"-text"}).inject(this.wrapper)).setHTML(A.$tmp.myText)}$clear(this.timer);this.timer=this.show.delay(this.options.showDelay,this)},end:function(A){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this)},position:function(A){var B=A.getPosition();this.toolTip.setStyles({left:B.x+this.options.offsets.x,top:B.y+this.options.offsets.y})},locate:function(B){var D={x:window.getWidth(),y:window.getHeight()};var A={x:window.getScrollLeft(),y:window.getScrollTop()};var C={x:this.toolTip.offsetWidth,y:this.toolTip.offsetHeight};var G={x:"left",y:"top"};for(var E in G){var F=B.page[E]+this.options.offsets[E];if((F+C[E]-A[E])>D[E]){F=B.page[E]-this.options.offsets[E]-C[E]}this.toolTip.setStyle(G[E],F)}},show:function(){if(this.options.timeout){this.timer=this.hide.delay(this.options.timeout,this)}this.fireEvent("onShow",[this.toolTip])},hide:function(){this.fireEvent("onHide",[this.toolTip])}});Tips.implement(new Events,new Options);var Group=new Class({initialize:function(){this.instances=$A(arguments);this.events={};this.checker={}},addEvent:function(B,A){this.checker[B]=this.checker[B]||{};this.events[B]=this.events[B]||[];if(this.events[B].contains(A)){return false}else{this.events[B].push(A)}this.instances.each(function(C,D){C.addEvent(B,this.check.bind(this,[B,C,D]))},this);return this},check:function(C,A,B){this.checker[C][B]=true;var D=this.instances.every(function(F,E){return this.checker[C][E]||false},this);if(!D){return }this.checker[C]={};this.events[C].each(function(E){E.call(this,this.instances,A)},this)}});var Accordion=Fx.Elements.extend({options:{onActive:Class.empty,onBackground:Class.empty,display:0,show:false,height:true,width:false,opacity:true,fixedHeight:false,fixedWidth:false,wait:false,alwaysHide:false},initialize:function(){var C,E,F,B;$each(arguments,function(I,H){switch($type(I)){case"object":C=I;break;case"element":B=$(I);break;default:var G=$$(I);if(!E){E=G}else{F=G}}});this.togglers=E||[];this.elements=F||[];this.container=$(B);this.setOptions(C);this.previous=-1;if(this.options.alwaysHide){this.options.wait=true}if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show}if(this.options.start){this.options.display=false;this.options.show=false}this.effects={};if(this.options.opacity){this.effects.opacity="fullOpacity"}if(this.options.width){this.effects.width=this.options.fixedWidth?"fullWidth":"offsetWidth"}if(this.options.height){this.effects.height=this.options.fixedHeight?"fullHeight":"scrollHeight"}for(var D=0,A=this.togglers.length;D<A;D++){this.addSection(this.togglers[D],this.elements[D])}this.elements.each(function(H,G){if(this.options.show===G){this.fireEvent("onActive",[this.togglers[G],H])}else{for(var I in this.effects){H.setStyle(I,0)}}},this);this.parent(this.elements);if($chk(this.options.display)){this.display(this.options.display)}},addSection:function(E,C,G){E=$(E);C=$(C);var F=this.togglers.contains(E);var B=this.togglers.length;this.togglers.include(E);this.elements.include(C);if(B&&(!F||G)){G=$pick(G,B-1);E.injectBefore(this.togglers[G]);C.injectAfter(E)}else{if(this.container&&!F){E.inject(this.container);C.inject(this.container)}}var A=this.togglers.indexOf(E);E.addEvent("click",this.display.bind(this,A));if(this.options.height){C.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"})}if(this.options.width){C.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"})}C.fullOpacity=1;if(this.options.fixedWidth){C.fullWidth=this.options.fixedWidth}if(this.options.fixedHeight){C.fullHeight=this.options.fixedHeight}C.setStyle("overflow","hidden");if(!F){for(var D in this.effects){C.setStyle(D,0)}}return this},display:function(A){A=($type(A)=="element")?this.elements.indexOf(A):A;if((this.timer&&this.options.wait)||(A===this.previous&&!this.options.alwaysHide)){return this}this.previous=A;var B={};this.elements.each(function(E,D){B[D]={};var C=(D!=A)||(this.options.alwaysHide&&(E.offsetHeight>0));this.fireEvent(C?"onBackground":"onActive",[this.togglers[D],E]);for(var F in this.effects){B[D][F]=C?0:E[this.effects[F]]}},this);return this.start(B)},showThisHideOpen:function(A){return this.display(A)}});Fx.Accordion=Accordion;var HistoryManager={options:{observeDelay:100,stateSeparator:";",iframeSrc:"blank.html",onStart:Class.empty,onRegister:Class.empty,onUnregister:Class.empty,onStart:Class.empty,onUpdate:Class.empty,onStateChange:Class.empty,onObserverChange:Class.empty},dataOptions:{skipDefaultMatch:true,defaults:[],regexpParams:""},initialize:function(A){if(this.modules){return this}this.setOptions(A);this.modules=$H({});this.count=history.length;this.states=[];this.states[this.count]=this.getHash();this.state=null;return this},start:function(){this.observe.periodical(this.options.observeDelay,this);this.started=true;this.observe();this.update();this.fireEvent("onStart",[this.state]);return this},register:function(B,G,C,F,E,A){if(!this.modules){this.initialize()}var D=$merge(this.dataOptions,A||{},{defaults:G,onMatch:C,onGenerate:F,regexp:E});D.regexp=D.regexp||B+"-([\\w_-]*)";if(typeof D.regexp=="string"){D.regexp=new RegExp(D.regexp,D.regexpParams)}D.onGenerate=D.onGenerate||function(H){return B+"-"+H[0]};D.values=D.defaults.copy();this.modules.set(B,D);this.fireEvent("onUnregister",[B,D]);return{setValues:function(H){return this.setValues(B,H)}.bind(this),setValue:function(H,I){return this.setValue(B,H,I)}.bind(this),generate:function(H){return this.generate(B,H)}.bind(this),unregister:function(){return this.unregister(B)}.bind(this)}},unregister:function(A){this.fireEvent("onRegister",[A]);this.modules.remove(A)},setValues:function(B,A){var C=this.modules.get(B);if(!C||C.values.isSimilar(A)){return this}C.values=A;this.update();return this},setValue:function(B,A,D){var C=this.modules.get(B);if(!C||C.values[A]==D){return this}C.values[A]=D;this.update();return this},generate:function(B,A){var D=this.modules.get(B);var E=D.values.copy();D.values=A;var C=this.generateState();D.values=E;return"#"+C},observe:function(){if(this.timeout){return }var A=this.getState();if(this.state==A){return }if((window.ie||window.webkit419)&&(this.state!==null)){this.setState(A,true)}else{this.state=A}this.modules.each(function(D,B){var C=A.match(D.regexp);if(C){C.splice(0,1);C.complement(D.defaults);if(!C.isSimilar(D.defaults)){D.values=C}}else{D.values=D.defaults.copy()}D.onMatch(D.values,D.defaults)});this.fireEvent("onStateChange",[A]).fireEvent("onObserverChange",[A])},generateState:function(){var A=[];this.modules.each(function(C,B){if(C.skipDefaultMatch&&C.values.isSimilar(C.defaults)){return }A.push(C.onGenerate(C.values))});return A.join(this.options.stateSeparator)},update:function(){if(!this.started){return this}var A=this.generateState();if((!this.state&&!A)||(this.state==A)){return this}this.setState(A);this.fireEvent("onStateChange",[A]).fireEvent("onUpdate",[A]);return this},observeTimeout:function(){if(this.timeout){this.timeout=$clear(this.timeout)}else{this.timeout=this.observeTimeout.delay(200,this)}},getHash:function(){var A=window.location.href;var B=A.indexOf("#")+1;return(B)?A.substr(B):""},getState:function(){var B=this.getHash();if(this.iframe){var C=this.iframe.contentWindow.document;if(C&&C.body.id=="state"){var A=C.body.innerText;if(this.state==B){return A}this.istateOld=true}else{return this.istate}}if(window.webkit419&&history.length!=this.count){this.count=history.length;return $pick(this.states[this.count-1],B)}return B},setState:function(B,A){B=$pick(B,"");if(window.webkit419){if(!this.form){this.form=new Element("form",{method:"get"}).injectInside(document.body)}this.count=history.length;this.states[this.count]=B;this.observeTimeout();this.form.setProperty("action","#"+B).submit()}else{top.location.hash=B||"#"}if(window.ie&&(!A||this.istateOld)){if(!this.iframe){this.iframe=new Element("iframe",{src:this.options.iframeSrc,styles:"visibility: hidden;"}).injectInside(document.body);this.istate=this.state}try{var D=this.iframe.contentWindow.document;D.open();D.write('<html><body id="state">'+B+"</body></html>");D.close();this.istateOld=false}catch(C){}}this.state=B},extend:$extend};HistoryManager.extend(Events.prototype);HistoryManager.extend(Options.prototype);Array.extend({isSimilar:function(A){return(this.toString()==A.toString())},complement:function(C){for(var B=0,A=this.length;B<A;B++){this[B]=$pick(this[B],C[B]||null)}return this}});var mootabs=new Class({initialize:function(B,A){this.options=Object.extend({width:"300px",height:"200px",changeTransition:Fx.Transitions.Bounce.easeOut,duration:1000,mouseOverClass:"active",activateOnLoad:"first",useAjax:false,ajaxUrl:"",ajaxOptions:{method:"get"},ajaxLoadingText:"Loading..."},A||{});this.el=$(B);this.elid=this.el.id;this.setSize(this.options);if(this.panelHeight>0){this.panels.setStyle("height",this.panelHeight)}this.titles.each(function(C){C.addEvent("click",function(){C.removeClass(this.options.mouseOverClass);this.activate(C)}.bind(this));C.addEvent("mouseover",function(){if(C!=this.activeTitle){C.addClass(this.options.mouseOverClass)}}.bind(this));C.addEvent("mouseout",function(){if(C!=this.activeTitle){C.removeClass(this.options.mouseOverClass)}}.bind(this))}.bind(this));if(this.options.activateOnLoad!="none"){if(this.options.activateOnLoad=="first"){this.activate(this.titles[0],true)}else{this.activate(this.options.activateOnLoad,true)}}},activate:function(A,C){if(!$defined(C)){C=false}if($type(A)=="string"){myTab=$$("#"+this.elid+" ul li").filterByAttribute("title","=",A)[0];A=myTab}if($type(A)=="element"){var D=A.getProperty("title");this.panels.removeClass("active");this.activePanel=this.panels.filterById(D)[0];this.activePanel.addClass("active");if(this.options.changeTransition!="none"&&C==false){this.panels.filterById(D).setStyle("height",0);var B=new Fx.Elements(this.panels.filterById(D),{duration:this.options.duration,transition:this.options.changeTransition});B.start({"0":{height:[0,this.panelHeight]}})}else{if(this.panelHeight>0){this.panels.filterById(D).setStyle("height",this.panelHeight)}}this.titles.removeClass("active");A.addClass("active");this.activeTitle=A;if(this.options.useAjax){this._getContent()}}},_getContent:function(){this.activePanel.setHTML(this.options.ajaxLoadingText);var B={update:this.activePanel.getProperty("id")};this.options.ajaxOptions=Object.extend(this.options.ajaxOptions,B||{});var A=new Ajax(this.options.ajaxUrl+"?tab="+this.activeTitle.getProperty("title"),this.options.ajaxOptions);A.request()},addTab:function(E,C,D,B){var B=Object.extend({"class":false},B||{});var F=new Element("li",{title:E});F.appendText(C);this.titles.include(F);$$("#"+this.elid+" ul.mootabs_title").adopt(F);F.addEvent("click",function(){this.activate(F)}.bind(this));F.addEvent("mouseover",function(){if(F!=this.activeTitle){F.addClass(this.options.mouseOverClass)}}.bind(this));F.addEvent("mouseout",function(){if(F!=this.activeTitle){F.removeClass(this.options.mouseOverClass)}}.bind(this));var A=new Element("div",{style:{height:this.options.panelHeight},id:E,"class":"mootabs_panel"});if(B.cssclass){A.addClass(B.cssclass)}if(!this.options.useAjax){if($type(D)=="element"){A.innerHTML="";D.injectInside(A)}else{A.setHTML(D)}}this.panels.include(A);this.el.adopt(A)},removeTab:function(A){$$("#"+this.elid+" ul li").filterByAttribute("title","=",A)[0].remove();$$("#"+this.elid+" .mootabs_panel").filterById(A)[0].remove();this.titles.splice(this.titles.indexOf(A),1);this.activate(this.titles[this.titles.length-1])},next:function(){var A=this.activeTitle.getNext();if(!A){A=this.titles[0]}this.activate(A)},previous:function(){var A=this.activeTitle.getPrevious();if(!A){A=this.titles[this.titles.length-1]}this.activate(A)},last:function(){this.activate(this.titles[this.titles.length-1])},setSize:function(A){this.el.setStyles({height:A.height,width:A.width});this.titles=$$("#"+this.elid+" ul.mootabs_title li");this.panelHeight=this.el.getSize().size.y-(this.titles[0].getSize().size.y+4);this.panels=$$("#"+this.elid+" .mootabs_panel");if(this.panelHeight>0){this.panels.setStyle("height",this.panelHeight)}}});Element.extend({setPosition:function(A){this.style.left=A.x+"px";this.style.top=A.y+"px"}});Element.extend({setOpacity:function(B){this.style.opacity=B;var C="";var A=(""+this.style.filter).split(" ").filter(function(D){if(D.indexOf("alpha")!=0){C+=D+" "}});if(B<1){C+=" progid:DXImageTransform.Microsoft.Alpha(Opacity="+parseInt(B*100)+", Style=0)"}this.style.filter=C}});function addRollover(A){var C=A.src;var B=C.substring(0,C.lastIndexOf("."))+"_over"+C.substring(C.lastIndexOf("."));var D=new Image(100,25);D.src=B;A.removeEvents("mouseenter");A.addEvent("mouseenter",function(){A.src=B;A.style.filter="";dxiseImage(A)});A.removeEvents("mouseleave");A.addEvent("mouseleave",function(){A.src=C;A.style.filter="";dxiseImage(A)})}var BoardState=new Class({initialize:function(){this.pieces=[]},newWithPiece:function(B){var A=new BoardState();this.pieces.each(function(C){A.pieces.push(C)});A.pieces.push(B);return A},getPieceAt:function(B){var A=undefined;this.pieces.each(function(C){if(C.pos.x==B.x&&C.pos.y==B.y){A=C}});return A},getPieceOrientation:function(I){var A=this.getPieceAt({x:I.pos.x-1,y:I.pos.y});var H=this.getPieceAt({x:I.pos.x+1,y:I.pos.y});var E=this.getPieceAt({x:I.pos.x,y:I.pos.y-1});var G=this.getPieceAt({x:I.pos.x,y:I.pos.y+1});var B=this.getPieceAt({x:I.pos.x-1,y:I.pos.y-1});var C=this.getPieceAt({x:I.pos.x+1,y:I.pos.y-1});var D=this.getPieceAt({x:I.pos.x-1,y:I.pos.y+1});var F=this.getPieceAt({x:I.pos.x+1,y:I.pos.y+1});if(A&&H&&!E&&!G&&!((C&&B)||(F&&D))){return"row"}if(!A&&!H&&E&&G&&!((C&&F)||(B&&D))){return"col"}if(!A&&!H&&E){return"colend"}return""},findConnectedPieces:function(D,A){var C=[D];while(true){var B=C.length;this.pieces.each(function(E){C.each(function(F){if(E==A){return }if((F.pos.x==E.pos.x&&(F.pos.y-1==E.pos.y||F.pos.y+1==E.pos.y))||(F.pos.y==E.pos.y&&(F.pos.x-1==E.pos.x||F.pos.x+1==E.pos.x))){if(!C.contains(E)){C.push(E)}}})});if(B==C.length){break}}return C},findConnectedPieces2:function(C,A){while(true){var B=C.length;this.pieces.each(function(D){C.each(function(E){if(D==A){return }if((E.pos.x==D.pos.x&&(E.pos.y-1==D.pos.y||E.pos.y+1==D.pos.y))||(E.pos.y==D.pos.y&&(E.pos.x-1==D.pos.x||E.pos.x+1==D.pos.x))){if(!C.contains(D)){C.push(D)}}})});if(B==C.length){break}}return C},newWithPieceRemoved:function(B){var A=new BoardState();this.pieces.each(function(D){if(D!=B){A.pieces.push(D)}});var C=A.getPieceOrientation(B);if(C=="row"||(B.pos.x==0&&B.pos.y==1&&this.getPieceAt({x:B.pos.x+1,y:B.pos.y}))){this.findConnectedPieces(this.getPieceAt({x:B.pos.x+1,y:B.pos.y}),B).each(function(D){A.pieces[A.pieces.indexOf(D)]=D.moveTo({x:D.pos.x-1,y:D.pos.y})})}else{if(C=="col"){this.findConnectedPieces(this.getPieceAt({x:B.pos.x,y:B.pos.y+1}),B).each(function(D){A.pieces[A.pieces.indexOf(D)]=D.moveTo({x:D.pos.x,y:D.pos.y-1})})}}return A},getPieceByPosition:function(B){var A=undefined;this.pieces.each(function(C){if(C.pos.x==B.x&&C.pos.y==B.y){A=C}});return A},newWithGap:function(G){var B=new BoardState();this.pieces.each(function(H){B.pieces.push(H)});var C=this.getPieceByPosition(G);if(C){var E=B.getPieceOrientation(C);if(E=="row"||E==""){var A=this.getPieceAt({x:C.pos.x+1,y:C.pos.y});var F=this.getPieceAt({x:C.pos.x,y:C.pos.y+1});var D=[];if(A){D.push(A)}if(F){D.push(F)}if(A){this.findConnectedPieces2(D,C).each(function(H){B.pieces[B.pieces.indexOf(H)]=H.moveTo({x:H.pos.x+1,y:H.pos.y})})}B.pieces[B.pieces.indexOf(C)]=C.moveTo({x:C.pos.x+1,y:C.pos.y})}else{if(E=="col"||E=="colend"){var F=this.getPieceAt({x:C.pos.x,y:C.pos.y+1});if(F){this.findConnectedPieces(F,C).each(function(H){B.pieces[B.pieces.indexOf(H)]=H.moveTo({x:H.pos.x,y:H.pos.y+1})})}B.pieces[B.pieces.indexOf(C)]=C.moveTo({x:C.pos.x,y:C.pos.y+1})}}}return B},newWithGap2:function(D){var A=new BoardState();this.pieces.each(function(E){A.pieces.push(E)});var C=this.getPieceByPosition(D);if(C){var B=this.getPieceAt({x:C.pos.x+(D.xoff*2),y:C.pos.y+(D.yoff*2)});if(B){this.findConnectedPieces2([C],B).each(function(E){A.pieces[A.pieces.indexOf(E)]=E.moveTo({x:E.pos.x-(D.xoff*2),y:E.pos.y-(D.yoff*2)})});A.pieces[A.pieces.indexOf(C)]=C.moveTo({x:C.pos.x-(D.xoff*2),y:C.pos.y-(D.yoff*2)})}else{return A.newTranslated({x:-2*D.xoff,y:-2*D.yoff})}}return A},newTranslated:function(B){var A=new BoardState();this.pieces.each(function(C){if(C.pos.y>1){C=C.moveTo({x:C.pos.x+B.x,y:C.pos.y+B.y})}A.pieces.push(C)});return A},isValid:function(){var A=false;this.pieces.each(function(B){this.pieces.each(function(C){if((B.pos.x==C.pos.x&&B.pos.y==C.pos.y&&B.id!=C.id)||C.pos.x<0||C.pos.y<1){A=A||true}}.bind(this))}.bind(this));return !A},moveRandom:function(){var A=new BoardState();this.pieces.each(function(B){if(Math.random()>0.5){newa=B.moveTo({x:Math.max(B.pos.x+Math.floor((Math.random()*2)-0.5),0),y:Math.max(B.pos.y+Math.floor((Math.random()*2)-0.5),0)});if(!this.getPieceAt(newa.pos)){B=newa}}A.pieces.push(B)}.bind(this));return A}});var pieceStateId=7;var PieceState=new Class({initialize:function(A,B){this.letter=A;this.pos=B;this.id=(pieceStateId++)},moveTo:function(B){var A=new PieceState(this.letter,B);A.id=this.id;return A}});var Board=new Class({initialize:function(E,C,D,B,A){this.div=E;this.protopiece=C;this.pieces=[];this.floatingPieces=[];this.draggable=A;this.tileWidth=D;this.tileHeight=B;this.offsetX=0;this.offsetY=0;this.glow_vertical=new Element("div",{"class":"glow"});new Element("img",{src:"/static/images/glow_vertical40.png"}).injectInside(this.glow_vertical);this.glow_vertical.injectInside(this.div);this.glow_horizontal=new Element("div",{"class":"glow"});new Element("img",{src:"/static/images/glow_horizontal40.png"}).injectInside(this.glow_horizontal);this.glow_horizontal.injectInside(this.div)},makePiece:function(A){var B=this.protopiece.clone();B.style.display="";if(this.draggable){B.makeDraggable({onStart:function(C){B.lastpos={x:-1000,y:-1000};B.style.zIndex=15;if(B.shadow){B.shadow=undefined}B.moving=true;this.fireEvent("liftPiece",B)}.bind(this),onDrag:function(C){var D=this.gridDropConstrain(this.posToSubGrid(B.getPosition()));if(B.lastpos.x!=D.x||B.lastpos.y!=D.y||B.lastpos.xoff!=D.xoff||B.lastpos.yoff!=D.yoff){this.glow_horizontal.style.display="none";this.glow_vertical.style.display="none";if(this.state.getPieceAt({x:D.x+(2*D.xoff),y:D.y+(2*D.yoff)})){if(D.xoff!=0){this.glow_vertical.style.display="block";this.glow_vertical.setPosition(this.gridToPos(D))}else{if(D.yoff!=0){this.glow_horizontal.style.display="block";this.glow_horizontal.setPosition(this.gridToPos(D))}}}this.fireEvent("dragPiece",B);B.lastpos=D}}.bind(this),onComplete:function(C){this.glow_horizontal.style.display="none";this.glow_vertical.style.display="none";C.shadow=undefined;B.moving=false;this.fireEvent("dropPiece",B);B.style.zIndex=10}.bind(this)})}else{B.style.position="absolute"}B.state=A;$E(".letteralone",B).setText(B.state.letter.toUpperCase());B.setPosition(this.gridToPos(B.state.pos));return B},getPieceById:function(B){var A=undefined;this.pieces.each(function(C){if(C.state.id==B){A=C}});this.floatingPieces.each(function(C){if(C.state.id==B){A=C}});return A},updateState:function(A){var B=[];this.pieces.each(function(C){if(A.pieces.some(function(D){return C.id==D.id})){}else{B.push({letter:C.letter,pos:C.pos,id:C.id})}}.bind(this));this.setState({pieces:B.extend(A.pieces)})},setState:function(B){var A=[];B.pieces.each(function(C){if(!C.id){C=new PieceState(C.letter,C.pos)}var D=this.getPieceById(C.id);if(D){D.state=C;var E=this.gridToPos(D.state.pos);if(D.move){D.move.stop()}if(D.offsetLeft!=E.x||D.offsetTop!=E.y){D.move=new Fx.Styles(D,{duration:100});D.move.start({left:[D.offsetLeft,E.x],top:[D.offsetTop,E.y]})}A.push(D)}else{D=this.makePiece(C);D.injectInside(this.div);A.push(D)}}.bind(this));A.each(function(C){if(this.floatingPieces.indexOf(C)>-1){this.floatingPieces.remove(C)}}.bind(this));this.pieces.each(function(C){if(C.moving){this.floatingPieces.push(C)}else{if(A.indexOf(C)==-1){C.remove()}}}.bind(this));this.pieces=A;this.state=B},gridDropConstrain:function(A){var B={x:Math.max(A.x,0),y:A.y,xoff:A.xoff,yoff:A.yoff};if(B.y<2){B.y=-2}return B},gridToPos:function(B){var D=this.div.getPosition();if(this.div.getStyle("position")=="relative"){D={x:0,y:0}}var A=D.x+this.offsetX;var C=D.y+this.offsetY;if(B.y>2){C-=this.tileHeight/2}return{x:((B.x+(B.xoff?B.xoff:0))*this.tileWidth)+A,y:((B.y+(B.yoff?B.yoff:0))*this.tileHeight)+C}},posToGrid:function(B){pos=this.div.getPosition();var A=pos.x+this.offsetX;var C=pos.y+this.offsetY;if((B.y-C)>this.tileHeight*2.25){C-=this.tileHeight/2}return{x:parseInt(((B.x-A)+(this.tileWidth/2))/this.tileWidth),y:parseInt(((B.y-C)+(this.tileHeight/2))/this.tileHeight)}},posToSubGrid:function(B){pos=this.div.getPosition();var A=pos.x+this.offsetX;var E=pos.y+this.offsetY;if((B.y-E)>this.tileHeight*2.25){E-=this.tileHeight/2}var F=parseInt((((B.x-A)+(this.tileWidth/2))%this.tileWidth)-(this.tileWidth/2));var D=parseInt((((B.y-E)+(this.tileHeight/2))%this.tileHeight)-(this.tileHeight/2));var C={x:parseInt(((B.x-A)+(this.tileWidth/2))/this.tileWidth),y:parseInt(((B.y-E)+(this.tileHeight/2))/this.tileHeight),xoff:0,yoff:0};if(!this.state.getPieceAt(C)){return C}if(F>0&&F>D&&F>-D){C.side="east";C.xoff=0.5}else{if(F<0&&-F>D&&-F>-D){C.side="west";C.xoff=-0.5}else{if(D>0&&D>F&&D>-F){C.side="south";C.yoff=0.5}else{C.side="north";C.yoff=-0.5}}}return C}});Board.implement(new Events);var Controller=new Class({initialize:function(A){this.state=new BoardState();this.board=A.board;this.board.setState(this.state);this.board.setState(this.state);this.status=A.status;this.updateTimer=0;this.subboardmanager=A.subboardmanager;this.chat=A.chat;this.autoPlayTimer=0;this.lastUpdateState=[];this.subboardmanager.addEvent("tileLonerAlert",function(B){tooltip("All your tiles should join up!","tooltip_shortbottom",this.board.getPieceById(B),{x:-3,y:-69},{top:5})}.bind(this));this.board.addEvent("liftPiece",function(B){this.liftstate=this.state.newWithPieceRemoved(B.state);this.board.setState(this.liftstate);if(this.beforeDragTip){this.beforeDragTip.start(1,0);this.beforeDragTip=undefined;setTimeout(function(){this.afterDragTip=tooltip("Click <b>Take Two</b> when you have made a valid crossword and everyone gets two more pieces","tooltip_bigbottom",$("take_two_button"),{x:0,y:-69},{timeout:0})}.bind(this),500)}}.bind(this));this.board.addEvent("dragPiece",function(B){}.bind(this));this.board.addEvent("dropPiece",function(G){this.dragstate=this.liftstate.newWithGap2(this.board.posToSubGrid(G.getPosition()));var C=G.getPosition();var F=this.dragstate.newWithPiece(G.state.moveTo(this.board.gridDropConstrain(this.board.posToGrid(G.getPosition()))));var D=0;var B=0;F.pieces.each(function(H){if(H.pos.x<0){D=1}if(H.pos.y<0||H.pos.y==2){B=1}});if(D||B){F=F.newTranslated({x:D,y:B})}if(F.isValid()){this.state=F}this.board.setState(this.state);this.liftstate=undefined;var E=new Date().getTime();if(E-this.lastUpdateTime>=3000){this.lastUpdateTime=E}}.bind(this));this.lastTakeTwoTime=0;this.lastUpdateTime=0;con.addEvent("method_take_pieces",function(C){if(C.gid!=this.gid){return }var B=this.state;C.pieces.each(function(D){B=B.newWithGap({x:0,y:1}).newWithPiece(new PieceState(D.letter,{x:0,y:1}))});if(this.liftstate){var B=this.liftstate;C.pieces.each(function(D){B=B.newWithGap({x:0,y:1}).newWithPiece(new PieceState(D.letter,{x:0,y:1}))});this.liftstate=B;this.setState(this.liftstate)}else{this.setState(B)}this.lastTakeTwoTime=0;this.subboardmanager.unquestionIcons();this.sendUpdate();if(this.afterDragTip){this.afterDragTip.start(1,0);this.afterDragTip=undefined}if(C.protagonist_pid==con.pid){tooltip("Nice one! Here you go.","tooltip_shortbottom",$("board"),{x:0,y:-1},{top:5})}else{if(C.pieces.length==2){tooltip("Aaah!<br />More tiles!","tooltip_shortbottom",$("board"),{x:0,y:-1},{top:5})}else{if(C.pieces.length==7){this.beforeDragTip=tooltip("Drag all the pieces below the line and arrange a valid crossword.","tooltip_thinleft",$("board"),{x:270,y:61},{nomouse:true,timeout:30})}}}}.bind(this));con.addEvent("method_word_update",function(B){if(B.gid!=this.gid){return }this.subboardmanager.update(B.pid,htmlEnc(B.nickname),B);if(B.pid==con.pid&&B.invalidboard){}}.bind(this));con.addEvent("method_player_accepted",function(B){if(B.gid!=this.gid){return }if(B.pid==con.pid){return }this.subboardmanager.update(B.pid,htmlEnc(B.nickname),{validwords:[],invalidwords:[]})}.bind(this))},setGameConnection:function(A){this.con=A;this.con.addEvent("joined",function(){}.bind(this));this.con.addEvent("message",this.handleMessage.bind(this))},setState:function(A){this.state=A;this.board.setState(A)},joinGame:function(){this.con.send("joinGame",{})},startGame:function(){this.con.send("start_game",{gid:this.gid})},imStuck:function(){this.con.send("im_stuck",{gid:this.gid})},doAutoPlay:function(){this.state=this.state.moveRandom();this.board.setState(this.state);this.sendUpdate();this.autoPlayTimer=setTimeout(this.doAutoPlay.bind(this),1000)},autoPlay:function(){if(this.autoPlayTimer>0){clearTimeout(this.autoPlayTimer);this.autoPlayTimer=0}else{this.doAutoPlay()}},takeTwo:function(){var A=new Date().getTime();if(A-this.lastTakeTwoTime<2000){return }if(this.state.pieces.some(function(C){if(C.pos.y==1){return true}})){tooltip("Please use all your tiles.","tooltip_shortbottom",$("board"),{x:0,y:-1},{top:5});return }this.subboardmanager.showWhoops=true;var B=[];this.state.pieces.each(function(C){B.push({letter:C.letter,pos:C.pos,id:C.id})});this.lastTakeTwoTime=A;this.con.send("take_two",{gid:this.gid,pieces:B})},sendUpdate:function(){var B=[];var A=[];this.state.pieces.each(function(C){A.push({letter:C.letter,pos:C.pos,id:C.id});if(this.lastUpdateState.some(function(D){return C.letter==D.letter&&C.pos.x==D.pos.x&&C.pos.y==D.pos.y&&C.id==D.id})){}else{B.push({letter:C.letter,pos:C.pos,id:C.id})}}.bind(this));this.lastUpdateState=A;this.con.send("update",{pieces:A,gid:this.gid})},sendChat:function(A){if(A==""||A=="Type message here..."){return }this.con.send("chat",{gid:this.gid,message:A})}});var SubBoardManager=new Class({initialize:function(A,B){this.parentdiv=A;this.proto=B;this.boards={};this.showWhoops=false},getBoardIfExists:function(A){return this.boards[A]},removeBoard:function(A){if(this.boards[A]){this.boards[A].inner.getParent().getParent().remove();this.boards[A]=undefined}},update:function(F,I,C,D){if(!this.boards[F]){var A=this.proto.clone();A.id="subboardclone";A.style.display="";$E("div.subboardcaption",A).setText(I);var J=$E(".inner",A);var G=new Element("img",{src:"/static/images/icon_blank.gif","class":"icon"}).injectTop(A);this.boards[F]={inner:J,icon:G,count:0,caption:$E("div.subboardcaption",A),outer:A};A.injectInside(this.parentdiv);if(D){A.style.height="auto";A.addClass("expanded")}A.addEvent("click",function(K){var K=new Event(K);if(A.fx){A.fx.stop()}if(A.expanding){A.expanding=false;A.fx=new Fx.Styles(A,{duration:200,onComplete:function(){A.removeClass("expanded")}});A.fx.start({height:[A.offsetHeight,57]})}else{A.expanding=true;A.fx=new Fx.Styles(A,{duration:200,onComplete:function(){A.style.height="auto"}});A.fx.start({height:[A.offsetHeight,J.offsetHeight+57]});A.addClass("expanded")}}.bind(this))}this.boards[F].caption.setText(I);if(C.validwords){this.boards[F].inner.empty();this.boards[F].count=0;var E=new Element("ul",{"class":"word_list"});C.validwords.each(function(K){new Element("li",{}).injectInside(E).appendText(K)}.bind(this));var B=0;var H=0;C.invalidwords.each(function(K){if(K.contains("id_")&&!H){H=K.substring(3).toInt()}else{var L=new Element("span").appendText(K).injectInside(new Element("li",{"class":"invalid_word"}).injectInside(E));if(!B){B=L}}}.bind(this));if(this.showWhoops&&H){this.fireEvent("tileLonerAlert",H)}if((C.validwords.length+C.invalidwords.length)==0){new Element("li",{"class":"invalid_word"}).injectInside(E).appendText("No words yet")}this.boards[F].count=C.validwords.length+C.invalidwords.length;E.injectInside(this.boards[F].inner);if(this.showWhoops&&B&&this.boards[F].outer.hasClass("expanded")){tooltip("<br />Whoops, check your spelling!","tooltip_midleft",B,{x:120,y:-15})}}this.showWhoops=false;if(C.crowned||C.stuck){var G="icon_question";if(C.crowned&&C.stuck){G="icon_question_crown"}else{if(C.crowned){G="icon_crown"}}if(C.crowned){this.uncrownOtherIcons(F)}this.boards[F].icon.src="/static/images/"+G+".gif"}else{this.boards[F].icon.src="/static/images/icon_blank.gif"}},unquestionIcons:function(A){for(var B in this.boards){if(this.boards[B].icon.src.indexOf("crown")>-1){this.boards[B].icon.src="/static/images/icon_crown.gif"}else{this.boards[B].icon.src="/static/images/icon_blank.gif"}}},uncrownOtherIcons:function(A){for(var B in this.boards){if(B==A){continue}if(this.boards[B].icon.src.indexOf("question")>-1){this.boards[B].icon.src="/static/images/icon_question.gif"}else{this.boards[B].icon.src="/static/images/icon_blank.gif"}}},blankOtherIcons:function(A){for(var B in this.boards){if(B==A){continue}this.boards[B].icon.src="/static/images/icon_blank.gif"}},getBoard:function(C,B,A){}});SubBoardManager.implement(new Events);function htmlEnc(B){B=""+B;if(!B){return""}try{B=B.replace(/&/g,"&amp;");B=B.replace(/</g,"&lt;");B=B.replace(/>/g,"&gt;");B=B.replace(/\"/g,"&quot;");B=B.replace(/\n/g,"<br />");return B}catch(A){return""}}var Connection=new Class({initialize:function(A){this.rooms=[];this.errorCount=0},doBind:function(){var A=new Json.Remote("/http-bind/",{onComplete:function(B){B.each(function(C){this.handleData(C.method,C.data)}.bind(this));if(B.length==0||!B[0].cancel){this.doBind()}else{game.showLayer(new ErrorMessage("The server closed the connection."));eraseCookie("pid")}}.bind(this),onFailure:function(B){setTimeout(this.doBind.bind(this),2000);this.errorCount+=1;if(this.errorCount>10){game.showLayer(new ErrorMessage("Reconnection failed too many times."));this.errorCount=0}}.bind(this)});A.send({cookie_pid:con.pid})},handleData:function(B,A){this.fireEvent("method_"+B,A)},disconnect:function(){this.send("disconnect",{})},send:function(E,C,A){var B={};B.headers=[["Cookie",document.cookie],["Cookie",document.cookie]];B.onFailure=function(F){game.showLayer(new ErrorMessage("Server returned an error."))};if(A){B.onComplete=A}var D=new Json.Remote("/http-bind/",B);D.send({method:E,data:C,cookie_pid:con.pid})}});Connection.implement(new Events);var Wordgame=new Class({initialize:function(L,J){this.lobby=L;this.type="normal";this.div=new Element("div",{id:"yttgame"});this.title="Game";var M=new Element("div",{id:"board"});this.leftbar=new Element("div",{"class":"leftbar_inner"});var K=new Element("div",{"class":"pieces_left"});K.appendText("-");con.addEvent("method_take_pieces",function(R){if(R.gid!=this.c.gid){return }K.innerHTML=htmlEnc(R.pieces_left);if(R.pieces_left=="0"){$E("input",this.buttons).src="/static/images/button_win.png";addRollover($E("input",this.buttons))}}.bind(this));K.injectInside(this.leftbar);var O=new Element("div",{"class":"sideboard"});O.appendText("PLAYERS");var F=0;var C=new SubBoardManager(O,$("subboard"));var N=new Board(M,$("protopiece"),38,38,true);N.offsetY=30;C.update(con.pid,L.nickname,{validwords:[],invalidwords:[]},true);con.addEvent("method_nickname_changed",function(R){if(R.pid==con.pid){L.nickname=R.nickname}C.update(R.pid,R.nickname,{})});con.addEvent("method_player_left",function(R){C.removeBoard(R.pid)});var I=new Element("div",{"class":"change_name"});I.appendText("YOUR NAME");var B=new Element("input",{events:{change:function(R){con.send("change_nickname",{nickname:B.value},function(S){if(S.message){alert(S.message);B.value=this.lobby.nickname}}.bind(this))}.bind(this)}});B.value=this.lobby.nickname;B.injectInside(I);I.injectInside(this.leftbar);var Q=new Element("div",{id:"chat"});Q.appendText("GAME CHAT");var D=new Element("div",{id:"chat_rows"});this.c=new Controller({board:N,status:F,subboardmanager:C,chat:D});this.c.gid=J;function P(R){R=new Event(R);if(R.key=="enter"){this.sendChat(R.target.value);R.target.value="";R.stop()}}D.injectInside(Q);var G=new Element("input",{"class":"chat_input",events:{keydown:P.bind(this.c),focus:function(){if(G.value=="Type message here..."){G.value=""}}}});G.injectInside(Q);G.value="Type message here...";var A=new Element("input",{type:"image","class":"chat_button",src:"/static/images/button_sendchat.png",events:{click:function(){this.c.sendChat(G.value);G.value=""}.bind(this)}});A.injectInside(Q);addRollover(A);Q.injectInside(this.leftbar);O.injectInside(this.leftbar);var E=new Element("div",{"class":"leftbar"});this.leftbar.injectInside(E);E.injectInside(this.div);var H=new Element("a",{href:"#","class":"back_to_lobby",events:{click:function(R){var R=new Event(R);this.leaveGame()}.bind(this)}});H.appendText("Leave game - "+L.gameNames[J]+"");H.injectInside(this.div);this.gamemain=new Element("div",{id:"main"}).injectInside(this.div);con.addEvent("method_chat",function(R){if(R.gid!=this.c.gid){return }var S=new Element("div",{"class":"chat_row"});if(R.nickname){S.innerHTML="<b>"+htmlEnc(R.nickname)+":</b> "+htmlEnc(R.message)}else{S.innerHTML='<b class="status">'+htmlEnc(R.message)+"</b>"}S.injectInside(D);D.scrollTop=D.scrollHeight+50}.bind(this));M.injectInside(this.gamemain);con.addEvent("method_game_starting",function(R){if(R.gid==this.c.gid){while(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(game.layers[0].type=="boarding"){game.removeLayer(game.layers[0])}this.createInterface()}}.bind(this));con.addEvent("method_game_finished",function(S){if(S.gid==this.c.gid){this.createPlayAgain(S.play_again_query,S.play_again_query);if(S.winner==con.pid){var R=new GameDialog(this,"game_win","");game.showLayer(R)}else{var R=new GameDialog(this,"game_lose",S.winner_nickname+" won!");game.showLayer(R)}}}.bind(this));con.addEvent("method_play_again_query",function(R){if(R.gid==this.c.gid){this.newgid=R.newgid;this.createPlayAgain(false,true);con.addEvent("method_game_unavailable",function(S){if(S.gid==this.newgid){this.buttons.empty()}}.bind(this))}}.bind(this))},leaveGame:function(){this.close();game.removeLayer(this);return false},playAgain:function(A){if(this.newgid){game.removeLayer(this);this.lobby.joinGame(this.newgid)}},playAgainOwner:function(){con.send("play_again",{gid:this.c.gid},function(B){var A=new Wordgame(this.lobby,B.gid);A.c.con=con;game.removeLayer(this);game.showLayer(A);var C=new Moderation(A);C.removeUnder=true;game.showLayer(C)}.bind(this))},createInterface:function(){this.buttons=new Element("div",{"class":"buttons"});this.buttons.injectInside(this.gamemain);var A=new Element("input",{id:"take_two_button",type:"image","class":"button",src:"/static/images/button_taketwo.png",events:{click:this.c.takeTwo.bind(this.c)}});A.injectInside(this.buttons);addRollover(A);var A=new Element("input",{type:"image","class":"button",src:"/static/images/button_imstuck.png",events:{click:this.c.imStuck.bind(this.c)}});A.injectInside(this.buttons);addRollover(A);dxisePNGs(this.buttons);var B=new Element("div",{"class":"divider"});B.injectInside(this.gamemain)},createPlayAgain:function(A,C){this.buttons.empty();var B=C?"/static/images/button_playagain.png":"/static/images/button_playagain_shaded.png";var E=A?this.playAgainOwner.bind(this):this.playAgain.bind(this);var D=new Element("input",{type:"image","class":"button_playagain",alt:"Play again",src:B,events:{click:E}});if(C){addRollover(D)}if(!C){D.addClass("button_disabled")}D.injectInside(this.buttons);dxisePNGs(this.buttons)},close:function(){con.send("leave_game",{gid:this.c.gid})}});var CreateGame=new Class({initialize:function(B){this.lobby=B;this.type="normal";this.div=new Element("div",{id:"yttcreategame"});this.div.innerHTML="<p>Please enter a name for your game:</p>";var A=new Element("a",{href:"#","class":"back_to_lobby",events:{click:function(C){game.removeLayer(this)}.bind(this)}});A.innerHTML="Back to lobby";A.injectInside(this.div);this.gameNameBox=new Element("input",{"class":"text_entry",events:{keydown:function(C){var C=new Event(C);if(C.key=="enter"){this.createGameClicked();C.stop()}}.bind(this)}}).injectInside(this.div);this.gameButton=new Element("input",{type:"image",src:"/static/images/button_creategame.png",events:{click:this.createGameClicked.bind(this)}}).injectInside(this.div);addRollover(this.gameButton);this.title="Create game"},createGameClicked:function(){if(this.gameNameBox.value!=""){con.send("create_game",{name:this.gameNameBox.value},function(B){if(B.message){tooltip(B.message,"tooltip_midleft",this.gameNameBox,{x:413,y:0},{top:5})}else{if(B.gid){var A=new Wordgame(this.lobby,B.gid);A.c.con=con;game.removeLayer(this);game.showLayer(A);var C=new Moderation(A);C.removeUnder=true;game.showLayer(C)}}}.bind(this))}else{tooltip("Please enter a name!","tooltip_midleft",this.gameNameBox,{x:413,y:0},{top:15})}}});var Lobby=new Class({initialize:function(A){this.type="normal";this.nickname=A;this.div=new Element("div",{id:"yttlobby"});var E=new Element("p").injectInside(this.div);E.innerHTML="Welcome, "+htmlEnc(this.nickname)+", please join one of the games waiting to start or ";this.gamelist=new Element("div",{id:"game_list"}).injectInside(this.div);this.status=new Element("div",{"class":"status"}).injectInside(this.div);con.addEvent("method_status_update",function(F){this.status.innerHTML=F.message}.bind(this));this.title="Lobby";this.gameButtons={};this.gameCreatedDate={};this.gameCallback={};this.gameMessages={};this.gameNames={};var D=function(I){$E(".nogamerow",this.gamelist).style.display="none";var H=new Element("div",{"class":"game_row"});this.gameButtons[I.gid]=H;this.gameCreatedDate[I.gid]=new Date((new Date()).getTime()-I.age*1000);var G=new Element("input",{type:"image",src:"/static/images/button_jointhisgame.png","class":"join"});G.addEvent("click",function(){this.joinGame(I.gid);return false}.bind(this));addRollover(G);G.injectInside(H);H.appendText(I.name);var F=new Element("span",{"class":"age"});F.injectInside(H);this.gameCallback[I.gid]=function(){var J=(((new Date())-this.gameCreatedDate[I.gid])/1000);F.innerHTML=parseInt(Math.max(J/60,1))+" minute"+(J>120?"s":"")+" old";setTimeout(this.gameCallback[I.gid],10000)}.bind(this);this.gameCallback[I.gid]();H.injectTop(this.gamelist);dxisePNGs(this.gamelist)}.bind(this);var B=new Element("input",{type:"image",src:"/static/images/button_createagame.png",styles:{"vertical-align":"middle","margin-left":"5px"}});B.addEvent("click",function(){create_game=new CreateGame(this);game.showLayer(create_game)}.bind(this));B.injectInside(E);addRollover(B);con.addEvent("method_game_available",function(F){this.gameNames[F.gid]=F.name;D(F)}.bind(this));con.addEvent("method_game_unavailable",function(F){if(this.gameButtons[F.gid]){this.gameButtons[F.gid].remove()}this.gameButtons[F.gid]=undefined;if(this.gamelist.getChildren().length==1){$E(".nogamerow",this.gamelist).style.display=""}}.bind(this));var C=new Element("div",{"class":"game_row nogamerow"});C.innerHTML="<em>There are no games available at the moment.</em>";C.injectInside(this.gamelist)},joinGame:function(C){con.send("join_game",{gid:C},function(D){if(D&&D.message){game.removeLayer(this.gameMessages[C]);var E=new GameMessage(B,D.message);E.removeUnder=true;game.showLayer(E)}}.bind(this));var B=new Wordgame(this,C);B.c.con=con;game.showLayer(B);this.gameMessages[C]=new GameMessage(B,"Waiting to join the game...");this.gameMessages[C].addImage("/static/images/loading.gif");this.gameMessages[C].removeUnder=true;game.showLayer(this.gameMessages[C]);var A=new Image();A.src="/static/images/youwin.png";A.src="/static/images/youlose.png";con.addEvent("method_player_accepted",function(E){if(E.pid==con.pid&&E.gid==C){game.removeLayer(this.gameMessages[C]);var D=new Boarding(this);game.showLayer(D)}}.bind(this));con.addEvent("method_player_declined",function(D){if(D.pid==con.pid&&D.gid==C){game.removeLayer(this.gameMessages[C]);var E=new GameMessage(B,"Sorry, the game is full.");E.removeUnder=true;game.showLayer(E)}}.bind(this))}});var Message=new Class({initialize:function(A){this.type="message";this.div=new Element("div",{"class":"message"});this.div.innerHTML="<b>"+htmlEnc(A)+"</b>";this.title="Message";this.transparent=true}});var GameMessage=new Class({initialize:function(A,B){this.type="normal";this.div=new Element("div",{id:"yttgamemessage"});this.div.innerHTML="<p>"+htmlEnc(B)+"</p>";this.a=new Element("a",{href:"#",events:{click:function(){if(A){A.close();game.removeLayer(A)}return false}.bind(this)}});this.a.innerHTML="Go back &raquo;";this.a.injectInside(this.div);this.title="Message"},addImage:function(A){var C=new Element("div",{styles:{"padding-top":"80px"}});var B=new Element("img",{src:A}).injectInside(C);C.injectInside(this.div)}});var GameDialog=new Class({initialize:function(A,C,B){this.type="gamedialog";this.div=new Element("div",{id:"yttgamedialog"});this.div.innerHTML='<div class="'+C+'">'+htmlEnc(B)+"</div>";this.transparent=true;this.div.addEvent("click",function(){game.removeLayer(this)}.bind(this));this.title="Message"}});var SendFeedback=new Class({initialize:function(){this.sendFeedback=true;if(game.layers[0].sendFeedback){var C=true}if(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(C){return }this.type="gamedialog";this.div=new Element("div",{id:"yttgamedialog"});var B=new Element("div",{"class":"send_feedback"}).injectInside(this.div);B.innerHTML+="<span>Thank you for your time. Your feedback will help us make You Take Two&trade; even better!</span>";this.transparent=true;this.textareaFrame=new Element("div",{"class":"text_input"}).injectInside(B);this.textarea=new Element("textarea").injectInside(this.textareaFrame);this.sendButton=new Element("input",{type:"image","class":"button",src:"/static/images/button_sendfeedback.png",events:{click:function(){con.send("send_feedback",{message:this.textarea.value});this.sendButton.remove();this.textareaFrame.style.visibility="hidden";$E("span",this.div).innerHTML="<br />Thanks!<br />"}.bind(this)}}).injectInside(B);addRollover(this.sendButton);var A=new Element("input",{type:"image","class":"button",src:"/static/images/button_close.png",events:{click:function(){game.removeLayer(this)}.bind(this)}}).injectInside(B);addRollover(A);dxisePNGs(B);this.title="Message"}});var HowToPlay=new Class({initialize:function(B){this.howToPlay=true;if(game.layers[0].howToPlay){var D=true}if(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(D){return }this.type="gamedialog";this.div=new Element("div",{"class":"ytthowtoplay"});var A=new Element("div",{"class":"inner"}).injectInside(this.div);A.innerHTML='<img src="/static/images/example_board.png" style="float: left; margin: 10px 15px 0px 0px;"><p style="margin-top:25px">The aim of the game is to make a crossword using all of your pieces.</p><p>When you have placed all your pieces, click <b>Take two</b> and everyone will get two more.</p><p>When all the pieces are in play, the first person to complete their board and click <b>Take two</b> wins!</p><div style="clear: both"></div>';this.transparent=true;var C=new Element("input",{type:"image","class":"button",src:"/static/images/button_close.png",events:{click:function(){game.removeLayer(this)}.bind(this)}}).injectInside(A);addRollover(C);this.title="Message"}});var AboutUs=new Class({initialize:function(B){this.aboutus=true;if(game.layers[0].aboutus){var D=true}if(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(D){return }this.type="gamedialog";this.div=new Element("div",{"class":"yttaboutus"});var A=new Element("div",{"class":"inner"}).injectInside(this.div);A.innerHTML='<p>You Take Two&trade; has been lovingly crafted by Swerve Concepts&trade;, a digital development studio based in South London. The work we do with our clients includes graphic design, web design, database applications and internet marketing.</p><p>Take a look at our petite and slightly elderly <a href="http://www.swerveconcepts.com" target="_new">website</a>.</p>';this.transparent=true;var C=new Element("input",{type:"image","class":"button",src:"/static/images/button_close.png",events:{click:function(){game.removeLayer(this)}.bind(this)}}).injectInside(A);addRollover(C);this.title="Message"}});var ErrorMessage=new Class({initialize:function(C){this.errorMessage=true;if(game.layers[0].errorMessage){var D=true}if(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(D){return }this.type="gamedialog";this.div=new Element("div",{"class":"ytterrormessage"});var A=new Element("div",{"class":"inner"}).injectInside(this.div);A.innerHTML="<p><br />Oh bother, something has gone wrong:</p><p>"+htmlEnc(C)+"</p>";this.transparent=true;var B=new Element("input",{type:"image","class":"button",src:"/static/images/button_close.png",events:{click:function(){game.removeLayer(this)}.bind(this)}}).injectInside(A);this.title="Message"}});var PrivacyPolicy=new Class({initialize:function(B){this.privacy=true;if(game.layers[0].privacy){var D=true}if(game.layers[0].type=="gamedialog"){game.removeLayer(game.layers[0])}if(D){return }this.type="gamedialog";this.div=new Element("div",{"class":"yttprivacy"});var A=new Element("div",{"class":"inner"}).injectInside(this.div);A.innerHTML='<p><b>Cookies:</b> &nbsp; This site (and its programmers) require cookies to function properly.  These tiny bits of data are used to keep track of your nickname and the games you are in.  They are discarded after you close your browser window.</p><p><b>What we store:</b> &nbsp; Not much really. We archive the positions of your pieces along with your nickname for our own personal amusement.</p><p>We also use Google Analytics for visitor statistics. They have a very long and complicated privacy policy which you can read <a href="http://www.google.com/privacypolicy.html" target="_blank">here</a>.</p>';this.transparent=true;var C=new Element("input",{type:"image","class":"button",src:"/static/images/button_close.png",events:{click:function(){game.removeLayer(this)}.bind(this)}}).injectInside(A);addRollover(C);this.title="Message"}});var GameView=new Class({initialize:function(B){this.wrapper=B;this.tabs=new mootabs(B,{height:"100%",width:"100%",changeTransition:"none",mouseOverClass:"over"});this.layers=$$([]);this.layers.unshift({div:$("ytthome")});this.history=HistoryManager.register("page",["layer1"],function A(C){if(!this.layers.some(function(E){return E.id==C[0]})){return }while(this.layers[0].id!=C[0]){var D=this.layers[0];this.removeLayer(D);if(D.removeUnder){this.removeLayer(this.layers[0])}}}.bind(this));HistoryManager.start()},removeLayer:function(A){if(!this.layers.contains(A)){return }while(this.layers[0]!=A){this.tabs.removeTab(this.layers[0].id);this.layers.remove(this.layers[0])}this.tabs.removeTab(A.id);this.tabs.last();this.layers.remove(A);this.layers[0].div.style.display="";this.history.setValue(0,this.layers[0].id)},showLayer:function(A){if(!A.div){return }if(this.layers.length>0){if(this.layers[0].type=="message"){this.tabs.removeTab(this.layers[0].id)}}if(!A.transparent){this.layers.each(function(D){D.div.style.display="none"})}this.layers.unshift(A);var C="layer"+this.layers.length;A.id=C;var B={};if(A.transparent){B.cssclass="transparent"}this.tabs.addTab(C,A.title,A.div,B);this.tabs.activate(C);this.history.setValue(0,C);dxisePNGs(A.div)},message:function(A){this.showLayer(new Message(A))}});var Moderation=new Class({initialize:function(E){this.wordgame=E;this.div=new Element("div",{"class":"yttmoderation"});this.title="Message";this.transparent=true;var D=new Element("input",{type:"image",src:"/static/images/button_startgame.png","class":"button_startgame",events:{click:function(){game.removeLayer(this);this.wordgame.c.startGame()}.bind(this)}});D.injectInside(this.div);addRollover(D);var F=new Element("div",{"class":"pending_list"});F.injectInside(this.div);var A=new Element("div",{"class":"invite"});new Element("br").injectInside(A);var G=new Element("div",{"class":"friends_box"});new Element("div",{"class":"title"}).injectInside(G).innerHTML="Get up to 6 friends to play";G.appendText("Send them this link:");var C=new Element("div",{"class":"url"}).injectInside(G);C.innerHTML="http://www.youtaketwo.com/?"+this.wordgame.c.gid;new Element("p").injectInside(G).innerHTML="If you don't want to play against other people you can play on your own - try finishing without clicking \"I'm stuck!\".";G.injectInside(A);A.injectInside(this.div);this.gameRows={};con.addEvent("method_player_pending",function(K){var N=false;if($ES(".accept",F).length==0){N=true}$E(".nopendingrow",F).style.display="none";if(K.gid!=this.wordgame.c.gid){return }var L=new Element("div",{"class":"pending_row"});var J=new Element("input",{type:"image",src:"/static/images/button_accept.png","class":"accept"});var M=new Element("input",{type:"image",src:"/static/images/button_decline.png","class":"decline"});this.gameRows[K.pid]=L;J.addEvent("click",function(){con.send("accept_player",{gid:K.gid,pid:K.pid});return false}.bind(this));M.addEvent("click",function(){con.send("decline_player",{gid:K.gid,pid:K.pid});return false}.bind(this));M.injectInside(L);J.injectInside(L);L.appendText(K.nickname+" wants to join your game...");L.injectInside(F);if(N){setTimeout(function(){this.tooltip=tooltip("Either accept or decline!","tooltip_shortbottom",J,{x:0,y:-70},{timeout:0,parent:this.div})}.bind(this),100)}dxisePNGs(F)}.bind(this));function I(J){if(J.gid==this.wordgame.c.gid){if(this.gameRows[J.pid]){this.gameRows[J.pid].remove();this.gameRows[J.pid]=false;if(F.getChildren().length==1){$E(".nopendingrow",F).style.display=""}if(this.tooltip){this.tooltip.start(1,0);this.tooltip=undefined}return false}}}function B(J){if(J.gid==this.wordgame.c.gid){if(this.gameRows[J.pid]){$E(".accept",this.gameRows[J.pid]).remove();$E(".decline",this.gameRows[J.pid]).remove();if(this.tooltip){this.tooltip.start(1,0);this.tooltip=undefined}this.gameRows[J.pid].innerHTML=J.nickname+" has joined your game."}}}con.addEvent("method_player_accepted",B.bind(this));con.addEvent("method_player_declined",I.bind(this));var H=new Element("div",{"class":"pending_row nopendingrow"});H.innerHTML="<em>Wait for players to join, or click <b>Start game</b> to play on your own.</em>";H.injectInside(F)}});var Boarding=new Class({initialize:function(A){this.wordgame=A;this.type="boarding";this.div=new Element("div",{"class":"yttboarding"});this.div.innerHTML='<div class="title">Not long now...</div><br />Just waiting for the game to start.';var C=new Element("div",{styles:{"padding-top":"80px"}});var B=new Element("img",{src:"/static/images/loading.gif"}).injectInside(C);C.injectInside(this.div);this.title="Message";this.transparent=true}});var c=0;document.addEvent("domready",function(){game=new GameView($("wrapper"));document.addEvent("beforeunload",function(){con.disconnect();return true});var A=readCookie("pid");if(A){connect("Guest",A)}if(window.location.search){$("ytthome").style.display="none";connect("Guest",A,window.location.search.substring(1),1)}});function dxiseImage(A){if(window.ie6){if(A.src&&!A.style.filter&&A.src.indexOf("png")>-1){A.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+A.src+"', sizingMethod='image')";A.src="/static/images/clear.gif"}}}function dxiseDiv(A){if(window.ie6){var B=A.getStyle("background-image");if(B&&!A.style.filter&&B.indexOf("png")>-1){var C="crop";if(A.getStyle("background-repeat")!="no-repeat"){C="scale"}A.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+B.substring(5,B.length-2)+"', sizingMethod='"+C+"')";A.setStyle("background-image","url('/static/images/clear.gif')");$ES("a,input,button,textarea",A).each(function(D){if(D.getStyle("position")!="absolute"){D.setStyle("position","relative")}D.setStyle("z-index","10000")})}}}function dxisePNGs(A){if(window.ie6){$$(A,$ES("img,input",A)).each(function(B){dxiseImage(B)});$$(A,$ES("div",A)).each(function(B){dxiseDiv(B)})}}document.addEvent("domready",function(){$ES("img,input",document.body).each(function(A){dxisePNGs(A)})});function connect(C,D,E,B){con=new Connection("www.youtaketwo.com");var A="authenticate";var F={nickname:C};if(D){A="reconnect";F={pid:D}}con.send(A,F,function(G){if(!G){if(B&&D){connect(C,0,E)}}else{if(G.message){alert(G.message)}else{if(G.pid){createCookie("pid",G.pid);con.pid=G.pid;if(G.nickname){C=G.nickname}lobby=new Lobby(C);game.showLayer(lobby);$("send_feedback").style.display="";if(E){lobby.joinGame(E)}con.doBind()}}}})}tooltipsHidden=false;function tooltip(K,A,H,E,L){if(tooltipsHidden){return }var C=new Element("div",{"class":A});C.setOpacity(0);var I=new Element("div").injectInside(C);var G=3000;I.setHTML(K);if(H){var F=H.getPosition();if(E){F.x+=E.x;F.y+=E.y}if(L&&L.parent){var J=L.parent.getPosition();F.x-=J.x-L.parent.offsetLeft;F.y-=J.y}C.style.left=F.x+"px";C.style.top=F.y+"px"}if(L){if(L.top){I.setStyle("padding-top",L.top)}if(L.timeout!==undefined){G=L.timeout}}C.inject((L&&L.parent)?L.parent:document.body);dxiseDiv(C);var D=new Fx.Style(C,"opacity",{duration:500});D.addEvent("onComplete",function(M){C.remove()});if(!L||!L.nomouse){C.addEvent("mouseenter",function(M){D.start(1,0)})}if(G>0){setTimeout(function(){D.start(1,0)},3000)}var B=new Fx.Style(C,"opacity",{duration:500});B.start(0,1);return D}function hideTooltips(A){tooltipsHidden=A;createCookie("yttTooltipsHidden",tooltipsHidden?"true":"false",60)}function createCookie(C,D,E){if(E){var B=new Date();B.setTime(B.getTime()+(E*24*60*60*1000));var A="; expires="+B.toGMTString()}else{var A=""}document.cookie=C+"="+D+A+"; path=/"}function readCookie(B){var D=B+"=";var A=document.cookie.split(";");for(var C=0;C<A.length;C++){var E=A[C];while(E.charAt(0)==" "){E=E.substring(1,E.length)}if(E.indexOf(D)==0){return E.substring(D.length,E.length)}}return null}function eraseCookie(A){createCookie(A,"",-1)}function doConnect(A){if(A==""){tooltip("Please enter your name!","tooltip_midleft",$("nickname"),{x:413,y:0},{top:15});return }con=new Connection("www.youtaketwo.com");connect(A,0);return };
