QWEBIRC_BUILD="ef104a36aa799cc5e77893ca12b3a56dc9ff48bc";
var MooTools={version:"1.2.5",build:"008d8f0f2fcc2044e54fdd3635341aaab274e757"};var Native=function(A){A=A||{};var K=A.name;var C=A.legacy;var J=A.protect;var I=A.implement;var D=A.generics;var F=A.initialize;var E=A.afterImplement||function(){};var H=F||C;D=D!==false;H.constructor=Native;H.$family={name:"native"};if(C&&F){H.prototype=C.prototype}H.prototype.constructor=H;if(K){var G=K.toLowerCase();H.prototype.$family={name:G};Native.typize(H,G)}var B=function(N,L,M,O){if(!J||O||!N.prototype[L]){N.prototype[L]=M}if(D){Native.genericize(N,L,J)}E.call(N,L,M);return N};H.alias=function(O,L,M){if(typeof O=="string"){var N=this.prototype[O];if((O=N)){return B(this,L,O,M)}}for(var P in O){this.alias(P,O[P],L)}return this};H.implement=function(O,L,M){if(typeof O=="string"){return B(this,O,L,M)}for(var N in O){B(this,N,O[N],L)}return this};if(I){H.implement(I)}return H};Native.genericize=function(A,C,B){if((!B||!A[C])&&typeof A.prototype[C]=="function"){A[C]=function(){var D=Array.prototype.slice.call(arguments);return A.prototype[C].apply(D.shift(),D)}}};Native.implement=function(C,D){for(var A=0,B=C.length;A<B;A++){C[A].implement(D)}};Native.typize=function(B,A){if(!B.type){B.type=function(C){return($type(C)===A)}}};(function(){var B={Array:Array,Date:Date,Function:Function,Number:Number,RegExp:RegExp,String:String};for(var C in B){new Native({name:C,initialize:B[C],protect:true})}var F={"boolean":Boolean,"native":Native,object:Object};for(var G in F){Native.typize(F[G],G)}var D={Array:["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],String:["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var E in D){for(var A=D[E].length;A--;){Native.genericize(B[E],D[E][A],true)}}})();var Hash=new Native({name:"Hash",initialize:function(B){if($type(B)=="hash"){B=$unlink(B.getClean())}for(var A in B){this[A]=B[A]}return this}});Hash.implement({forEach:function(A,C){for(var B in this){if(this.hasOwnProperty(B)){A.call(C,this[B],B,this)}}},getClean:function(){var A={};for(var B in this){if(this.hasOwnProperty(B)){A[B]=this[B]}}return A},getLength:function(){var A=0;for(var B in this){if(this.hasOwnProperty(B)){A++}}return A}});Hash.alias("forEach","each");Array.implement({forEach:function(D,C){for(var A=0,B=this.length;A<B;A++){D.call(C,this[A],A,this)}}});Array.alias("forEach","each");function $A(A){if(A.item){var B=A.length,C=new Array(B);while(B--){C[B]=A[B]}return C}return Array.prototype.slice.call(A)}function $arguments(A){return function(){return arguments[A]}}function $chk(A){return !!(A||A===0)}function $clear(A){clearTimeout(A);clearInterval(A);return null}function $defined(A){return(A!=undefined)}function $each(D,A,C){var B=$type(D);((B=="arguments"||B=="collection"||B=="array")?Array:Hash).each(D,A,C)}function $empty(){}function $extend(C,B){for(var A in (B||{})){C[A]=B[A]}return C}function $H(A){return new Hash(A)}function $lambda(A){return($type(A)=="function")?A:function(){return A}}function $merge(){var A=Array.slice(arguments);A.unshift({});return $mixin.apply(null,A)}function $mixin(E){for(var F=1,B=arguments.length;F<B;F++){var A=arguments[F];if($type(A)!="object"){continue}for(var G in A){var C=A[G],D=E[G];E[G]=(D&&$type(C)=="object"&&$type(D)=="object")?$mixin(D,C):$unlink(C)}}return E}function $pick(){for(var A=0,B=arguments.length;A<B;A++){if(arguments[A]!=undefined){return arguments[A]}}return null}function $random(A,B){return Math.floor(Math.random()*(B-A+1)+A)}function $splat(A){var B=$type(A);return(B)?((B!="array"&&B!="arguments")?[A]:A):[]}var $time=Date.now||function(){return +new Date};function $try(){for(var A=0,B=arguments.length;A<B;A++){try{return arguments[A]()}catch(C){}}return null}function $type(A){if(A==undefined){return false}if(A.$family){return(A.$family.name=="number"&&!isFinite(A))?false:A.$family.name}if(A.nodeName){switch(A.nodeType){case 1:return"element";case 3:return(/\S/).test(A.nodeValue)?"textnode":"whitespace"}}else{if(typeof A.length=="number"){if(A.callee){return"arguments"}else{if(A.item){return"collection"}}}}return typeof A}function $unlink(E){var A;switch($type(E)){case"object":A={};for(var C in E){A[C]=$unlink(E[C])}break;case"hash":A=new Hash(E);break;case"array":A=[];for(var D=0,B=E.length;D<B;D++){A[D]=$unlink(E[D])}break;default:return E}return A}Array.implement({every:function(D,C){for(var A=0,B=this.length;A<B;A++){if(!D.call(C,this[A],A,this)){return false}}return true},filter:function(D,C){var E=[];for(var A=0,B=this.length;A<B;A++){if(D.call(C,this[A],A,this)){E.push(this[A])}}return E},clean:function(){return this.filter($defined)},indexOf:function(D,C){var B=this.length;for(var A=(C<0)?Math.max(0,B+C):C||0;A<B;A++){if(this[A]===D){return A}}return -1},map:function(D,C){var E=[];for(var A=0,B=this.length;A<B;A++){E[A]=D.call(C,this[A],A,this)}return E},some:function(D,C){for(var A=0,B=this.length;A<B;A++){if(D.call(C,this[A],A,this)){return true}}return false},associate:function(D){var C={},A=Math.min(this.length,D.length);for(var B=0;B<A;B++){C[D[B]]=this[B]}return C},link:function(E){var B={};for(var C=0,A=this.length;C<A;C++){for(var D in E){if(E[D](this[C])){B[D]=this[C];delete E[D];break}}}return B},contains:function(B,A){return this.indexOf(B,A)!=-1},extend:function(C){for(var A=0,B=C.length;A<B;A++){this.push(C[A])}return this},getLast:function(){return(this.length)?this[this.length-1]:null},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null},include:function(A){if(!this.contains(A)){this.push(A)}return this},combine:function(C){for(var A=0,B=C.length;A<B;A++){this.include(C[A])}return this},erase:function(A){for(var B=this.length;B--;B){if(this[B]===A){this.splice(B,1)}}return this},empty:function(){this.length=0;return this},flatten:function(){var C=[];for(var A=0,B=this.length;A<B;A++){var D=$type(this[A]);if(!D){continue}C=C.concat((D=="array"||D=="collection"||D=="arguments")?Array.flatten(this[A]):this[A])}return C},hexToRgb:function(A){if(this.length!=3){return null}var B=this.map(function(C){if(C.length==1){C+=C}return C.toInt(16)});return(A)?B:"rgb("+B+")"},rgbToHex:function(C){if(this.length<3){return null}if(this.length==4&&this[3]==0&&!C){return"transparent"}var A=[];for(var B=0;B<3;B++){var D=(this[B]-0).toString(16);A.push((D.length==1)?"0"+D:D)}return(C)?A:"#"+A.join("")}});String.implement({test:function(B,A){return((typeof B=="string")?new RegExp(B,A):B).test(this)},contains:function(B,A){return(A)?(A+this+A).indexOf(A+B+A)>-1:this.indexOf(B)>-1},trim:function(){return this.replace(/^\s+|\s+$/g,"")},clean:function(){return this.replace(/\s+/g," ").trim()},camelCase:function(){return this.replace(/-\D/g,function(A){return A.charAt(1).toUpperCase()})},hyphenate:function(){return this.replace(/[A-Z]/g,function(A){return("-"+A.charAt(0).toLowerCase())})},capitalize:function(){return this.replace(/\b[a-z]/g,function(A){return A.toUpperCase()})},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")},toInt:function(A){return parseInt(this,A||10)},toFloat:function(){return parseFloat(this)},hexToRgb:function(A){var B=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(B)?B.slice(1).hexToRgb(A):null},rgbToHex:function(A){var B=this.match(/\d{1,3}/g);return(B)?B.rgbToHex(A):null},stripScripts:function(A){var B="";var C=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){B+=arguments[1]+"\n";return""});if(A===true){$exec(B)}else{if($type(A)=="function"){A(B,C)}}return C},substitute:function(B,A){return this.replace(A||(/\\?\{([^{}]+)\}/g),function(C,D){if(C.charAt(0)=="\\"){return C.slice(1)}return(B[D]!=undefined)?B[D]:""})}});try{delete Function.prototype.bind}catch(e){}Function.implement({extend:function(B){for(var A in B){this[A]=B[A]}return this},create:function(A){var B=this;A=A||{};return function(D){var E=A.arguments;E=(E!=undefined)?$splat(E):Array.slice(arguments,(A.event)?1:0);if(A.event){E=[D||window.event].extend(E)}var C=function(){return B.apply(A.bind||null,E)};if(A.delay){return setTimeout(C,A.delay)}if(A.periodical){return setInterval(C,A.periodical)}if(A.attempt){return $try(C)}return C()}},run:function(B,A){return this.apply(A,$splat(B))},pass:function(B,A){return this.create({bind:A,arguments:B})},bind:function(A,B){return this.create({bind:A,arguments:B})},bindWithEvent:function(A,B){return this.create({bind:A,arguments:B,event:true})},attempt:function(B,A){return this.create({bind:A,arguments:B,attempt:true})()},delay:function(A,C,B){return this.create({bind:C,arguments:B,delay:A})()},periodical:function(C,A,B){return this.create({bind:A,arguments:B,periodical:C})()}});Number.implement({limit:function(A,B){return Math.min(B,Math.max(A,this))},round:function(A){A=Math.pow(10,A||0);return Math.round(this*A)/A},times:function(A,C){for(var B=0;B<this;B++){A.call(C,B,this)}},toFloat:function(){return parseFloat(this)},toInt:function(A){return parseInt(this,A||10)}});Number.alias("times","each");(function(A){var B={};A.each(function(C){if(!Number[C]){B[C]=function(){return Math[C].apply(null,[this].concat($A(arguments)))}}});Number.implement(B)})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(A){for(var B in this){if(this.hasOwnProperty(B)&&this[B]===A){return B}}return null},hasValue:function(A){return(Hash.keyOf(this,A)!==null)},extend:function(A){Hash.each(A||{},function(C,B){Hash.set(this,B,C)},this);return this},combine:function(A){Hash.each(A||{},function(C,B){Hash.include(this,B,C)},this);return this},erase:function(A){if(this.hasOwnProperty(A)){delete this[A]}return this},get:function(A){return(this.hasOwnProperty(A))?this[A]:null},set:function(B,A){if(!this[B]||this.hasOwnProperty(B)){this[B]=A}return this},empty:function(){Hash.each(this,function(A,B){delete this[B]},this);return this},include:function(B,A){if(this[B]==undefined){this[B]=A}return this},map:function(A,C){var B=new Hash;Hash.each(this,function(D,E){B.set(E,A.call(C,D,E,this))},this);return B},filter:function(A,C){var B=new Hash;Hash.each(this,function(D,E){if(A.call(C,D,E,this)){B.set(E,D)}},this);return B},every:function(A,C){for(var B in this){if(this.hasOwnProperty(B)&&!A.call(C,this[B],B)){return false}}return true},some:function(A,C){for(var B in this){if(this.hasOwnProperty(B)&&A.call(C,this[B],B)){return true}}return false},getKeys:function(){var A=[];Hash.each(this,function(C,B){A.push(B)});return A},getValues:function(){var A=[];Hash.each(this,function(B){A.push(B)});return A},toQueryString:function(B){var A=[];Hash.each(this,function(C,D){if(B){D=B+"["+D+"]"}var E;switch($type(C)){case"object":E=Hash.toQueryString(C,D);break;case"array":var F={};C.each(function(G,H){F[H]=G});E=Hash.toQueryString(F,D);break;default:E=D+"="+encodeURIComponent(C)}if(C!=undefined){A.push(E)}});return A.join("&")}});Hash.alias({keyOf:"indexOf",hasValue:"contains"});function Class(A){if(A instanceof Function){A={initialize:A}}var B=function(){Object.reset(this);if(B._prototyping){return this}this._current=$empty;var C=(this.initialize)?this.initialize.apply(this,arguments):this;delete this._current;delete this.caller;return C}.extend(this);B.implement(A);B.constructor=Class;B.prototype.constructor=B;return B}Function.prototype.protect=function(){this._protected=true;return this};Object.reset=function(B,E){if(E==null){for(var C in B){Object.reset(B,C)}return B}delete B[E];switch($type(B[E])){case"object":var D=function(){};D.prototype=B[E];var A=new D;B[E]=Object.reset(A);break;case"array":B[E]=$unlink(B[E]);break}return B};new Native({name:"Class",initialize:Class}).extend({instantiate:function(A){A._prototyping=true;var B=new A;delete A._prototyping;return B},wrap:function(B,A,C){if(C._origin){C=C._origin}return function(){if(C._protected&&this._current==null){throw new Error('The method "'+A+'" cannot be called.')}var E=this.caller,D=this._current;this.caller=D;this._current=arguments.callee;var F=C.apply(this,arguments);this._current=D;this.caller=E;return F}.extend({_owner:B,_origin:C,_name:A})}});Class.implement({implement:function(B,E){if($type(B)=="object"){for(var D in B){this.implement(D,B[D])}return this}var C=Class.Mutators[B];if(C){E=C.call(this,E);if(E==null){return this}}var F=this.prototype;switch($type(E)){case"function":if(E._hidden){return this}F[B]=Class.wrap(this,B,E);break;case"object":var A=F[B];if($type(A)=="object"){$mixin(A,E)}else{F[B]=$unlink(E)}break;case"array":F[B]=$unlink(E);break;default:F[B]=E}return this}});Class.Mutators={Extends:function(A){this.parent=A;this.prototype=Class.instantiate(A);this.implement("parent",function(){var B=this.caller._name,C=this.caller._owner.parent.prototype[B];if(!C){throw new Error('The method "'+B+'" has no parent.')}return C.apply(this,arguments)}.protect())},Implements:function(A){$splat(A).each(function(B){if(B instanceof Function){B=Class.instantiate(B)}this.implement(B)},this)}};var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false},clearChain:function(){this.$chain.empty();return this}});var Events=new Class({$events:{},addEvent:function(C,A,B){C=Events.removeOn(C);if(A!=$empty){this.$events[C]=this.$events[C]||[];this.$events[C].include(A);if(B){A.internal=true}}return this},addEvents:function(B){for(var A in B){this.addEvent(A,B[A])}return this},fireEvent:function(C,A,B){C=Events.removeOn(C);if(!this.$events||!this.$events[C]){return this}this.$events[C].each(function(D){D.create({bind:this,delay:B,"arguments":A})()},this);return this},removeEvent:function(A,B){A=Events.removeOn(A);if(!this.$events[A]){return this}if(!B.internal){this.$events[A].erase(B)}return this},removeEvents:function(D){var C;if($type(D)=="object"){for(C in D){this.removeEvent(C,D[C])}return this}if(D){D=Events.removeOn(D)}for(C in this.$events){if(D&&D!=C){continue}var A=this.$events[C];for(var B=A.length;B--;B){this.removeEvent(C,A[B])}}return this}});Events.removeOn=function(A){return A.replace(/^on([A-Z])/,function(B,C){return C.toLowerCase()})};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent){return this}for(var A in this.options){if($type(this.options[A])!="function"||!(/^on[A-Z]/).test(A)){continue}this.addEvent(A,this.options[A]);delete this.options[A]}return this}});var Browser=$merge({Engine:{name:"unknown",version:0},Platform:{name:(window.orientation!=undefined)?"ipod":(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector)},Plugins:{},Engines:{presto:function(){return(!window.opera)?false:((arguments.callee.caller)?960:((document.getElementsByClassName)?950:925))},trident:function(){return(!window.ActiveXObject)?false:((window.XMLHttpRequest)?((document.querySelectorAll)?6:5):4)},webkit:function(){return(navigator.taintEnabled)?false:((Browser.Features.xpath)?((Browser.Features.query)?525:420):419)},gecko:function(){return(!document.getBoxObjectFor&&window.mozInnerScreenX==null)?false:((document.getElementsByClassName)?19:18)}}},Browser||{});Browser.Platform[Browser.Platform.name]=true;Browser.detect=function(){for(var A in this.Engines){var B=this.Engines[A]();if(B){this.Engine={name:A,version:B};this.Engine[A]=this.Engine[A+B]=true;break}}return{name:A,version:B}};Browser.detect();Browser.Request=function(){return $try(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("MSXML2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var A=($try(function(){return navigator.plugins["Shockwave Flash"].description},function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")})||"0 r0").match(/\d+/g);return{version:parseInt(A[0]||0+"."+A[1],10)||0,build:parseInt(A[2],10)||0}})();function $exec(A){if(!A){return A}if(window.execScript){window.execScript(A)}else{var B=document.createElement("script");B.setAttribute("type","text/javascript");B[(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerText":"text"]=A;document.head.appendChild(B);document.head.removeChild(B)}return A}Native.UID=1;var $uid=(Browser.Engine.trident)?function(A){return(A.uid||(A.uid=[Native.UID++]))[0]}:function(A){return A.uid||(A.uid=Native.UID++)};var Window=new Native({name:"Window",legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(A){$uid(A);if(!A.Element){A.Element=$empty;if(Browser.Engine.webkit){A.document.createElement("iframe")}A.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{}}A.document.window=A;return $extend(A,Window.Prototype)},afterImplement:function(A,B){window[A]=Window.Prototype[A]=B}});Window.Prototype={$family:{name:"window"}};new Window(window);var Document=new Native({name:"Document",legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(A){$uid(A);A.head=A.getElementsByTagName("head")[0];A.html=A.getElementsByTagName("html")[0];if(Browser.Engine.trident&&Browser.Engine.version<=4){$try(function(){A.execCommand("BackgroundImageCache",false,true)})}if(Browser.Engine.trident){A.window.attachEvent("onunload",function(){A.window.detachEvent("onunload",arguments.callee);A.head=A.html=A.window=null})}return $extend(A,Document.Prototype)},afterImplement:function(A,B){document[A]=Document.Prototype[A]=B}});Document.Prototype={$family:{name:"document"}};new Document(document);var Element=new Native({name:"Element",legacy:window.Element,initialize:function(B,A){var C=Element.Constructors.get(B);if(C){return C(A)}if(typeof B=="string"){return document.newElement(B,A)}return document.id(B).set(A)},afterImplement:function(B,A){Element.Prototype[B]=A;if(Array[B]){return }Elements.implement(B,function(){var G=[],C=true;for(var E=0,F=this.length;E<F;E++){var D=this[E][B].apply(this[E],arguments);G.push(D);if(C){C=($type(D)=="element")}}return(C)?new Elements(G):G})}});Element.Prototype={$family:{name:"element"}};Element.Constructors=new Hash;var IFrame=new Native({name:"IFrame",generics:false,initialize:function(){var C=Array.link(arguments,{properties:Object.type,iframe:$defined});var E=C.properties||{};var F=document.id(C.iframe);var D=E.onload||$empty;delete E.onload;E.id=E.name=$pick(E.id,E.name,F?(F.id||F.name):"IFrame_"+$time());F=new Element(F||"iframe",E);var A=function(){var H=$try(function(){return F.contentWindow.location.host});if(!H||H==window.location.host){var G=new Window(F.contentWindow);new Document(F.contentWindow.document);$extend(G.Element.prototype,Element.Prototype)}D.call(F.contentWindow,F.contentWindow.document)};var B=$try(function(){return F.contentWindow});((B&&B.document.body)||window.frames[E.id])?A():F.addListener("load",A);return F}});var Elements=new Native({initialize:function(D,A){A=$extend({ddup:true,cash:true},A);D=D||[];if(A.ddup||A.cash){var C={},E=[];for(var G=0,B=D.length;G<B;G++){var F=document.id(D[G],!A.cash);if(A.ddup){if(C[F.uid]){continue}C[F.uid]=true}if(F){E.push(F)}}D=E}return(A.cash)?$extend(D,this):D}});Elements.implement({filter:function(B,A){if(!B){return this}return new Elements(Array.filter(this,(typeof B=="string")?function(C){return C.match(B)}:B,A))}});(function(){var C;try{var B=document.createElement("<input name=x>");C=(B.name=="x")}catch(A){}var D=function(E){return(""+E).replace(/&/g,"&amp;").replace(/"/g,"&quot;")};Document.implement({newElement:function(F,E){if(E&&E.checked!=null){E.defaultChecked=E.checked}if(C&&E){F="<"+F;if(E.name){F+=' name="'+D(E.name)+'"'}if(E.type){F+=' type="'+D(E.type)+'"'}F+=">";delete E.name;delete E.type}return this.id(this.createElement(F)).set(E)},newTextNode:function(E){return this.createTextNode(E)},getDocument:function(){return this},getWindow:function(){return this.window},id:(function(){var E={string:function(F,G,H){F=H.getElementById(F);return(F)?E.element(F,G):null},element:function(I,F){$uid(I);if(!F&&!I.$family&&!(/^object|embed$/i).test(I.tagName)){var H=Element.Prototype;for(var G in H){I[G]=H[G]}}return I},object:function(G,F,H){if(G.toElement){return E.element(G.toElement(H),F)}return null}};E.textnode=E.whitespace=E.window=E.document=$arguments(0);return function(H,F,G){if(H&&H.$family&&H.uid){return H}var I=$type(H);return(E[I])?E[I](H,F,G||document):null}})()})})();if(window.$==null){Window.implement({$:function(B,A){return document.id(B,A,this.document)}})}Window.implement({$$:function(B){if(arguments.length==1&&typeof B=="string"){return this.document.getElements(B)}var C=[];var F=Array.flatten(arguments);for(var E=0,A=F.length;E<A;E++){var D=F[E];switch($type(D)){case"element":C.push(D);break;case"string":C.extend(this.document.getElements(D,true))}}return new Elements(C)},getDocument:function(){return this.document},getWindow:function(){return this}});Native.implement([Element,Document],{getElement:function(B,A){return document.id(this.getElements(B,true)[0]||null,A)},getElements:function(B,C){B=B.split(",");var D=[];var A=(B.length>1);B.each(function(F){var E=this.getElementsByTagName(F.trim());(A)?D.extend(E):D=E},this);return new Elements(D,{ddup:A,cash:!C})}});(function(){var D={},F={};var C={input:"checked",option:"selected",textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerHTML":"value"};var I=function(L){return(F[L]||(F[L]={}))};var E=function(O,L){if(!O){return }var P=O.uid;if(L!==true){L=false}if(Browser.Engine.trident){if(O.clearAttributes){var M=L&&O.cloneNode(false);O.clearAttributes();if(M){O.mergeAttributes(M)}}else{if(O.removeEvents){O.removeEvents()}}if((/object/i).test(O.tagName)){for(var N in O){if(typeof O[N]=="function"){O[N]=$empty}}Element.dispose(O)}}if(!P){return }D[P]=F[P]=null};var H=function(){Hash.each(D,E);if(Browser.Engine.trident){$A(document.getElementsByTagName("object")).each(E)}if(window.CollectGarbage){CollectGarbage()}D=F=null};var B=function(R,L,M,S,P,N){var Q=R[M||L];var O=[];while(Q){if(Q.nodeType==1&&(!S||Element.match(Q,S))){if(!P){return document.id(Q,N)}O.push(Q)}Q=Q[L]}return(P)?new Elements(O,{ddup:false,cash:!N}):null};var G={html:"innerHTML","class":"className","for":"htmlFor",defaultValue:"defaultValue",text:(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?"innerText":"textContent"};var J=["compact","nowrap","ismap","declare","noshade","checked","disabled","readonly","multiple","selected","noresize","defer"];var A=["value","type","defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];J=J.associate(J);Hash.extend(G,J);Hash.extend(G,A.associate(A.map(String.toLowerCase)));var K={before:function(M,L){if(L.parentNode){L.parentNode.insertBefore(M,L)}},after:function(N,L){if(!L.parentNode){return }var M=L.nextSibling;(M)?L.parentNode.insertBefore(N,M):L.parentNode.appendChild(N)},bottom:function(M,L){L.appendChild(M)},top:function(N,L){var M=L.firstChild;(M)?L.insertBefore(N,M):L.appendChild(N)}};K.inside=K.bottom;Hash.each(K,function(L,M){M=M.capitalize();Element.implement("inject"+M,function(N){L(this,document.id(N,true));return this});Element.implement("grab"+M,function(N){L(document.id(N,true),this);return this})});Element.implement({set:function(M,O){switch($type(M)){case"object":for(var N in M){this.set(N,M[N])}break;case"string":var L=Element.Properties.get(M);(L&&L.set)?L.set.apply(this,Array.slice(arguments,1)):this.setProperty(M,O)}return this},get:function(M){var L=Element.Properties.get(M);return(L&&L.get)?L.get.apply(this,Array.slice(arguments,1)):this.getProperty(M)},erase:function(M){var L=Element.Properties.get(M);(L&&L.erase)?L.erase.apply(this):this.removeProperty(M);return this},setProperty:function(N,M){var L=G[N];if(M==undefined){return this.removeProperty(N)}if(L&&J[N]){M=!!M}(L)?this[L]=M:this.setAttribute(N,""+M);return this},setProperties:function(L){for(var M in L){this.setProperty(M,L[M])}return this},getProperty:function(N){var L=G[N];var M=(L)?this[L]:this.getAttribute(N,2);return(J[N])?!!M:(L)?M:M||null},getProperties:function(){var L=$A(arguments);return L.map(this.getProperty,this).associate(L)},removeProperty:function(M){var L=G[M];(L)?this[L]=(L&&J[M])?false:"":this.removeAttribute(M);return this},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this},hasClass:function(L){return this.className.contains(L," ")},addClass:function(L){if(!this.hasClass(L)){this.className=(this.className+" "+L).clean()}return this},removeClass:function(L){this.className=this.className.replace(new RegExp("(^|\\s)"+L+"(?:\\s|$)"),"$1");return this},toggleClass:function(L){return this.hasClass(L)?this.removeClass(L):this.addClass(L)},adopt:function(){Array.flatten(arguments).each(function(L){L=document.id(L,true);if(L){this.appendChild(L)}},this);return this},appendText:function(M,L){return this.grab(this.getDocument().newTextNode(M),L)},grab:function(M,L){K[L||"bottom"](document.id(M,true),this);return this},inject:function(M,L){K[L||"bottom"](this,document.id(M,true));return this},replaces:function(L){L=document.id(L,true);L.parentNode.replaceChild(this,L);return this},wraps:function(M,L){M=document.id(M,true);return this.replaces(M).grab(M,L)},getPrevious:function(L,M){return B(this,"previousSibling",null,L,false,M)},getAllPrevious:function(L,M){return B(this,"previousSibling",null,L,true,M)},getNext:function(L,M){return B(this,"nextSibling",null,L,false,M)},getAllNext:function(L,M){return B(this,"nextSibling",null,L,true,M)},getFirst:function(L,M){return B(this,"nextSibling","firstChild",L,false,M)},getLast:function(L,M){return B(this,"previousSibling","lastChild",L,false,M)},getParent:function(L,M){return B(this,"parentNode",null,L,false,M)},getParents:function(L,M){return B(this,"parentNode",null,L,true,M)},getSiblings:function(L,M){return this.getParent().getChildren(L,M).erase(this)},getChildren:function(L,M){return B(this,"nextSibling","firstChild",L,true,M)},getWindow:function(){return this.ownerDocument.window},getDocument:function(){return this.ownerDocument},getElementById:function(M,N){var O=this.ownerDocument.getElementById(M);if(!O){return null}for(var L=O.parentNode;L!=this;L=L.parentNode){if(!L){return null}}return document.id(O,N)},getSelected:function(){return new Elements($A(this.options).filter(function(L){return L.selected}))},getComputedStyle:function(M){if(this.currentStyle){return this.currentStyle[M.camelCase()]}var L=this.getDocument().defaultView.getComputedStyle(this,null);return(L)?L.getPropertyValue([M.hyphenate()]):null},toQueryString:function(){var L=[];this.getElements("input, select, textarea",true).each(function(N){if(!N.name||N.disabled||N.type=="submit"||N.type=="reset"||N.type=="file"){return }var M=(N.tagName.toLowerCase()=="select")?Element.getSelected(N).map(function(O){return O.value}):((N.type=="radio"||N.type=="checkbox")&&!N.checked)?null:N.value;$splat(M).each(function(O){if(typeof O!="undefined"){L.push(N.name+"="+encodeURIComponent(O))}})});return L.join("&")},clone:function(P,L){P=P!==false;var M=this.cloneNode(P);var Q=function(T,U){if(!L){T.removeAttribute("id")}if(Browser.Engine.trident){T.clearAttributes();T.mergeAttributes(U);T.removeAttribute("uid");if(T.options){var S=T.options,W=U.options;for(var V=S.length;V--;){S[V].selected=W[V].selected}}}var X=C[U.tagName.toLowerCase()];if(X&&U[X]){T[X]=U[X]}};if(P){var O=M.getElementsByTagName("*"),N=this.getElementsByTagName("*");for(var R=O.length;R--;){Q(O[R],N[R])}}Q(M,this);return document.id(M)},destroy:function(){Element.empty(this);Element.dispose(this);E(this,true);return null},empty:function(){$A(this.childNodes).each(function(L){Element.destroy(L)});return this},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this},hasChild:function(L){L=document.id(L,true);if(!L){return false}if(Browser.Engine.webkit&&Browser.Engine.version<420){return $A(this.getElementsByTagName(L.tagName)).contains(L)}return(this.contains)?(this!=L&&this.contains(L)):!!(this.compareDocumentPosition(L)&16)},match:function(L){return(!L||(L==this)||(Element.get(this,"tag")==L))}});Native.implement([Element,Window,Document],{addListener:function(M,N){if(M=="unload"){var L=N,O=this;N=function(){O.removeListener("unload",N);L()}}else{D[this.uid]=this}if(this.addEventListener){this.addEventListener(M,N,false)}else{this.attachEvent("on"+M,N)}return this},removeListener:function(M,L){if(this.removeEventListener){this.removeEventListener(M,L,false)}else{this.detachEvent("on"+M,L)}return this},retrieve:function(O,L){var M=I(this.uid),N=M[O];if(L!=undefined&&N==undefined){N=M[O]=L}return $pick(N)},store:function(N,L){var M=I(this.uid);M[N]=L;return this},eliminate:function(L){var M=I(this.uid);delete M[L];return this}});window.addListener("unload",H)})();Element.Properties=new Hash;Element.Properties.style={set:function(A){this.style.cssText=A},get:function(){return this.style.cssText},erase:function(){this.style.cssText=""}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase()}};Element.Properties.html=(function(){var C=document.createElement("div");var B={table:[1,"<table>","</table>"],select:[1,"<select>","</select>"],tbody:[2,"<table><tbody>","</tbody></table>"],tr:[3,"<table><tbody><tr>","</tr></tbody></table>"]};B.thead=B.tfoot=B.tbody;var A={set:function(){var F=Array.flatten(arguments).join("");var E=Browser.Engine.trident&&B[this.get("tag")];if(E){var D=C;D.innerHTML=E[1]+F+E[2];for(var G=E[0];G--;){D=D.firstChild}this.empty().adopt(D.childNodes)}else{this.innerHTML=F}}};A.erase=A.set;return A})();if(Browser.Engine.webkit&&Browser.Engine.version<420){Element.Properties.text={get:function(){if(this.innerText){return this.innerText}var B=this.ownerDocument.newElement("div",{html:this.innerHTML}).inject(this.ownerDocument.body);var A=B.innerText;B.destroy();return A}}}(function(){Element.implement({scrollTo:function(I,H){if(A(this)){this.getWindow().scrollTo(I,H)}else{this.scrollLeft=I;this.scrollTop=H}return this},getSize:function(){if(A(this)){return this.getWindow().getSize()}return{x:this.offsetWidth,y:this.offsetHeight}},getScrollSize:function(){if(A(this)){return this.getWindow().getScrollSize()}return{x:this.scrollWidth,y:this.scrollHeight}},getScroll:function(){if(A(this)){return this.getWindow().getScroll()}return{x:this.scrollLeft,y:this.scrollTop}},getScrolls:function(){var H=this,I={x:0,y:0};while(H&&!A(H)){I.x+=H.scrollLeft;I.y+=H.scrollTop;H=H.parentNode}return I},getOffsetParent:function(){var H=this;if(A(H)){return null}if(!Browser.Engine.trident){return H.offsetParent}while((H=H.parentNode)&&!A(H)){if(F(H,"position")!="static"){return H}}return null},getOffsets:function(){if(this.getBoundingClientRect){var N=this.getBoundingClientRect(),K=document.id(this.getDocument().documentElement),H=K.getScroll(),M=this.getScrolls(),O=this.getScroll(),P=(F(this,"position")=="fixed");return{x:N.left.toInt()+M.x-O.x+((P)?0:H.x)-K.clientLeft,y:N.top.toInt()+M.y-O.y+((P)?0:H.y)-K.clientTop}}var L=this,J={x:0,y:0};if(A(this)){return J}while(L&&!A(L)){J.x+=L.offsetLeft;J.y+=L.offsetTop;if(Browser.Engine.gecko){if(!D(L)){J.x+=G(L);J.y+=C(L)}var I=L.parentNode;if(I&&F(I,"overflow")!="visible"){J.x+=G(I);J.y+=C(I)}}else{if(L!=this&&Browser.Engine.webkit){J.x+=G(L);J.y+=C(L)}}L=L.offsetParent}if(Browser.Engine.gecko&&!D(this)){J.x-=G(this);J.y-=C(this)}return J},getPosition:function(I){if(A(this)){return{x:0,y:0}}var H=this.getOffsets(),K=this.getScrolls();var L={x:H.x-K.x,y:H.y-K.y};var J=(I&&(I=document.id(I)))?I.getPosition():{x:0,y:0};return{x:L.x-J.x,y:L.y-J.y}},getCoordinates:function(I){if(A(this)){return this.getWindow().getCoordinates()}var K=this.getPosition(I),J=this.getSize();var H={left:K.x,top:K.y,width:J.x,height:J.y};H.right=H.left+H.width;H.bottom=H.top+H.height;return H},computePosition:function(H){return{left:H.x-E(this,"margin-left"),top:H.y-E(this,"margin-top")}},setPosition:function(H){return this.setStyles(this.computePosition(H))}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var H=this.getWindow();return{x:H.innerWidth,y:H.innerHeight}}var I=B(this);return{x:I.clientWidth,y:I.clientHeight}},getScroll:function(){var H=this.getWindow(),I=B(this);return{x:H.pageXOffset||I.scrollLeft,y:H.pageYOffset||I.scrollTop}},getScrollSize:function(){var H=B(this),I=this.getSize();return{x:Math.max(H.scrollWidth,I.x),y:Math.max(H.scrollHeight,I.y)}},getPosition:function(){return{x:0,y:0}},getCoordinates:function(){var H=this.getSize();return{top:0,left:0,bottom:H.y,right:H.x,height:H.y,width:H.x}}});var F=Element.getComputedStyle;function E(I,H){return F(I,H).toInt()||0}function D(H){return F(H,"-moz-box-sizing")=="border-box"}function C(H){return E(H,"border-top-width")}function G(H){return E(H,"border-left-width")}function A(H){return(/^(?:body|html)$/i).test(H.tagName)}function B(I){var H=I.getDocument();return(!H.compatMode||H.compatMode=="CSS1Compat")?H.html:H.body}})();Element.alias("setPosition","position");Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y},getWidth:function(){return this.getSize().x},getScrollTop:function(){return this.getScroll().y},getScrollLeft:function(){return this.getScroll().x},getScrollHeight:function(){return this.getScrollSize().y},getScrollWidth:function(){return this.getScrollSize().x},getTop:function(){return this.getPosition().y},getLeft:function(){return this.getPosition().x}});var Event=new Native({name:"Event",initialize:function(M,H){H=H||window;var C=H.document;M=M||H.event;if(M.$extended){return M}this.$extended=true;var D=M.type;var G=M.target||M.srcElement;while(G&&G.nodeType==3){G=G.parentNode}if(D.test(/key/)){var L=M.which||M.keyCode;var A=Event.Keys.keyOf(L);if(D=="keydown"){var J=L-111;if(J>0&&J<13){A="f"+J}}A=A||String.fromCharCode(L).toLowerCase()}else{if(D.match(/(click|mouse|menu)/i)){C=(!C.compatMode||C.compatMode=="CSS1Compat")?C.html:C.body;var E={x:M.pageX||M.clientX+C.scrollLeft,y:M.pageY||M.clientY+C.scrollTop};var K={x:(M.pageX)?M.pageX-H.pageXOffset:M.clientX,y:(M.pageY)?M.pageY-H.pageYOffset:M.clientY};if(D.match(/DOMMouseScroll|mousewheel/)){var F=(M.wheelDelta)?M.wheelDelta/120:-(M.detail||0)/3}var I=(M.which==3)||(M.button==2);var B=null;if(D.match(/over|out/)){switch(D){case"mouseover":B=M.relatedTarget||M.fromElement;break;case"mouseout":B=M.relatedTarget||M.toElement}if(!(function(){while(B&&B.nodeType==3){B=B.parentNode}return true}).create({attempt:Browser.Engine.gecko})()){B=false}}}}return $extend(this,{event:M,type:D,page:E,client:K,rightClick:I,wheel:F,relatedTarget:B,target:G,code:L,key:A,shift:M.shiftKey,control:M.ctrlKey,alt:M.altKey,meta:M.metaKey})}});Event.Keys=new Hash({enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46});Event.implement({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}});Element.Properties.events={set:function(A){this.addEvents(A)}};Native.implement([Element,Window,Document],{addEvent:function(E,C){var B=this.retrieve("events",{});B[E]=B[E]||{keys:[],values:[]};if(B[E].keys.contains(C)){return this}B[E].keys.push(C);var D=E,I=Element.Events.get(E),G=C,A=this;if(I){if(I.onAdd){I.onAdd.call(this,C)}if(I.condition){G=function(J){if(I.condition.call(this,J)){return C.call(this,J)}return true}}D=I.base||D}var F=function(){return C.call(A)};var H=Element.NativeEvents[D];if(H){if(H==2){F=function(J){J=new Event(J,A.getWindow());if(G.call(A,J)===false){J.stop()}}}this.addListener(D,F)}B[E].values.push(F);return this},removeEvent:function(F,A){var B=this.retrieve("events");if(!B||!B[F]){return this}var C=B[F].keys.indexOf(A);if(C==-1){return this}B[F].keys.splice(C,1);var D=B[F].values.splice(C,1)[0];var E=Element.Events.get(F);if(E){if(E.onRemove){E.onRemove.call(this,A)}F=E.base||F}return(Element.NativeEvents[F])?this.removeListener(F,D):this},addEvents:function(B){for(var A in B){this.addEvent(A,B[A])}return this},removeEvents:function(B){var C;if($type(B)=="object"){for(C in B){this.removeEvent(C,B[C])}return this}var A=this.retrieve("events");if(!A){return this}if(!B){for(C in A){this.removeEvents(C)}this.eliminate("events")}else{if(A[B]){while(A[B].keys[0]){this.removeEvent(B,A[B].keys[0])}A[B]=null}}return this},fireEvent:function(C,A,B){var D=this.retrieve("events");if(!D||!D[C]){return this}D[C].keys.each(function(E){E.create({bind:this,delay:B,"arguments":A})()},this);return this},cloneEvents:function(C,B){C=document.id(C);var D=C.retrieve("events");if(!D){return this}if(!B){for(var A in D){this.cloneEvents(C,A)}}else{if(D[B]){D[B].keys.each(function(E){this.addEvent(B,E)},this)}}return this}});try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent}}catch(e){}Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};(function(){var A=function(B){var C=B.relatedTarget;if(C==undefined){return true}if(C===false){return false}return($type(this)!="document"&&C!=this&&C.prefix!="xul"&&!this.hasChild(C))};Element.Events=new Hash({mouseenter:{base:"mouseover",condition:A},mouseleave:{base:"mouseout",condition:A},mousewheel:{base:(Browser.Engine.gecko)?"DOMMouseScroll":"mousewheel"}})})();Element.Properties.styles={set:function(A){this.setStyles(A)}};Element.Properties.opacity={set:function(B,A){if(!A){if(B==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(Browser.Engine.trident){this.style.filter=(B==1)?"":"alpha(opacity="+B*100+")"}this.style.opacity=B;this.store("opacity",B)},get:function(){return this.retrieve("opacity",1)}};Element.implement({setOpacity:function(A){return this.set("opacity",A,true)},getOpacity:function(){return this.get("opacity")},setStyle:function(A,B){switch(A){case"opacity":return this.set("opacity",parseFloat(B));case"float":A=(Browser.Engine.trident)?"styleFloat":"cssFloat"}A=A.camelCase();if($type(B)!="string"){var C=(Element.Styles.get(A)||"@").split(" ");B=$splat(B).map(function(D,E){if(!C[E]){return""}return($type(D)=="number")?C[E].replace("@",Math.round(D)):D}).join(" ")}else{if(B==String(Number(B))){B=Math.round(B)}}this.style[A]=B;return this},getStyle:function(C){switch(C){case"opacity":return this.get("opacity");case"float":C=(Browser.Engine.trident)?"styleFloat":"cssFloat"}C=C.camelCase();var B=this.style[C];if(!$chk(B)){B=[];for(var D in Element.ShortStyles){if(C!=D){continue}for(var E in Element.ShortStyles[D]){B.push(this.getStyle(E))}return B.join(" ")}B=this.getComputedStyle(C)}if(B){B=String(B);var G=B.match(/rgba?\([\d\s,]+\)/);if(G){B=B.replace(G[0],G[0].rgbToHex())}}if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(B,10)))){if(C.test(/^(height|width)$/)){var A=(C=="width")?["left","right"]:["top","bottom"],F=0;A.each(function(H){F+=this.getStyle("border-"+H+"-width").toInt()+this.getStyle("padding-"+H).toInt()},this);return this["offset"+C.capitalize()]-F+"px"}if((Browser.Engine.presto)&&String(B).test("px")){return B}if(C.test(/(border(.+)Width|margin|padding)/)){return"0px"}}return B},setStyles:function(A){for(var B in A){this.setStyle(B,A[B])}return this},getStyles:function(){var A={};Array.flatten(arguments).each(function(B){A[B]=this.getStyle(B)},this);return A}});Element.Styles=new Hash({left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"});Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(C){var D=Element.ShortStyles;var A=Element.Styles;["margin","padding"].each(function(I){var H=I+C;D[I][H]=A[H]="@px"});var E="border"+C;D.border[E]=A[E]="@px @ rgb(@, @, @)";var F=E+"Width",B=E+"Style",G=E+"Color";D[E]={};D.borderWidth[F]=D[E][F]=A[F]="@px";D.borderStyle[B]=D[E][B]=A[B]="@";D.borderColor[G]=D[E][G]=A[G]="rgb(@, @, @)"});var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(B){this.subject=this.subject||this;this.setOptions(B);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt();var A=this.options.wait;if(A===false){this.options.link="cancel"}},getTransition:function(){return function(A){return -(Math.cos(Math.PI*A)-1)/2}},step:function(){var B=$time();if(B<this.time+this.options.duration){var A=this.transition((B-this.time)/this.options.duration);this.set(this.compute(this.from,this.to,A))}else{this.set(this.compute(this.from,this.to,1));this.complete()}},set:function(A){return A},compute:function(C,A,B){return Fx.compute(C,A,B)},check:function(){if(!this.timer){return true}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false}return false},start:function(A,B){if(!this.check(A,B)){return this}this.from=A;this.to=B;this.time=0;this.transition=this.getTransition();this.startTimer();this.onStart();return this},complete:function(){if(this.stopTimer()){this.onComplete()}return this},cancel:function(){if(this.stopTimer()){this.onCancel()}return this},onStart:function(){this.fireEvent("start",this.subject)},onComplete:function(){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject)}},onCancel:function(){this.fireEvent("cancel",this.subject).clearChain()},pause:function(){this.stopTimer();return this},resume:function(){this.startTimer();return this},stopTimer:function(){if(!this.timer){return false}this.time=$time()-this.time;this.timer=$clear(this.timer);return true},startTimer:function(){if(this.timer){return false}this.time=$time()-this.time;this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);return true}});Fx.compute=function(C,A,B){return(A-C)*B+C};Fx.Durations={"short":250,normal:500,"long":1000};Fx.CSS=new Class({Extends:Fx,prepare:function(D,C,A){A=$splat(A);var E=A[1];if(!$chk(E)){A[1]=A[0];A[0]=D.getStyle(C)}var B=A.map(this.parse);return{from:B[0],to:B[1]}},parse:function(A){A=$lambda(A)();A=(typeof A=="string")?A.split(" "):$splat(A);return A.map(function(C){C=String(C);var B=false;Fx.CSS.Parsers.each(function(D,E){if(B){return }var F=D.parse(C);if($chk(F)){B={value:F,parser:D}}});B=B||{value:C,parser:Fx.CSS.Parsers.String};return B})},compute:function(C,D,A){var B=[];(Math.min(C.length,D.length)).times(function(E){B.push({value:C[E].parser.compute(C[E].value,D[E].value,A),parser:C[E].parser})});B.$family={name:"fx:css:value"};return B},serve:function(C,A){if($type(C)!="fx:css:value"){C=this.parse(C)}var B=[];C.each(function(D){B=B.concat(D.parser.serve(D.value,A))});return B},render:function(B,C,D,A){B.setStyle(C,this.serve(D,A))},search:function(B){if(Fx.CSS.Cache[B]){return Fx.CSS.Cache[B]}var A={};Array.each(document.styleSheets,function(D,E){var F=D.href;if(F&&F.contains("://")&&!F.contains(document.domain)){return }var C=D.rules||D.cssRules;Array.each(C,function(G,I){if(!G.style){return }var H=(G.selectorText)?G.selectorText.replace(/^\w+/,function(J){return J.toLowerCase()}):null;if(!H||!H.test("^"+B+"$")){return }Element.Styles.each(function(J,K){if(!G.style[K]||Element.ShortStyles[K]){return }J=String(G.style[K]);A[K]=(J.test(/^rgb/))?J.rgbToHex():J})})});return Fx.CSS.Cache[B]=A}});Fx.CSS.Cache={};Fx.CSS.Parsers=new Hash({Color:{parse:function(A){if(A.match(/^#[0-9a-f]{3,6}$/i)){return A.hexToRgb(true)}return((A=A.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[A[1],A[2],A[3]]:false},compute:function(C,A,B){return C.map(function(D,E){return Math.round(Fx.compute(C[E],A[E],B))})},serve:function(A){return A.map(Number)}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(A,B){return(B)?A+B:A}},String:{parse:$lambda(false),compute:$arguments(1),serve:$arguments(0)}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(A,B){this.element=this.subject=document.id(A);this.parent(B)},set:function(B){if(typeof B=="string"){B=this.search(B)}for(var A in B){this.render(this.element,A,B[A],this.options.unit)}return this},compute:function(C,D,E){var B={};for(var A in C){B[A]=this.parent(C[A],D[A],E)}return B},start:function(A){if(!this.check(A)){return this}if(typeof A=="string"){A=this.search(A)}var C={},D={};for(var E in A){var B=this.prepare(this.element,E,A[E]);C[E]=B.from;D[E]=B.to}return this.parent(C,D)}});Element.Properties.morph={set:function(B){var A=this.retrieve("morph");if(A){A.cancel()}return this.eliminate("morph").store("morph:options",$extend({link:"cancel"},B))},get:function(A){if(A||!this.retrieve("morph")){if(A||!this.retrieve("morph:options")){this.set("morph",A)}this.store("morph",new Fx.Morph(this,this.retrieve("morph:options")))}return this.retrieve("morph")}};Element.implement({morph:function(A){this.get("morph").start(A);return this}});Fx.implement({getTransition:function(){var B=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof B=="string"){var A=B.split(":");B=Fx.Transitions;B=B[A[0]]||B[A[0].capitalize()];if(A[1]){B=B["ease"+A[1].capitalize()+(A[2]?A[2].capitalize():"")]}}return B}});Fx.Transition=function(A,B){B=$splat(B);return $extend(A,{easeIn:function(C){return A(C,B)},easeOut:function(C){return 1-A(1-C,B)},easeInOut:function(C){return(C<=0.5)?A(2*C,B)/2:(2-A(2*(1-C),B))/2}})};Fx.Transitions=new Hash({linear:$arguments(0)});Fx.Transitions.extend=function(B){for(var A in B){Fx.Transitions[A]=new Fx.Transition(B[A])}};Fx.Transitions.extend({Pow:function(A,B){return Math.pow(A,B[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(A,B){B=B[0]||1.618;return Math.pow(A,2)*((B+1)*A-B)},Bounce:function(A){var B;for(var C=0,D=1;1;C+=D,D/=2){if(A>=(7-4*C)/11){B=D*D-Math.pow((11-6*C-11*A)/4,2);break}}return B},Elastic:function(A,B){return Math.pow(2,10*--A)*Math.cos(20*A*Math.PI*(B[0]||1)/3)}});["Quad","Cubic","Quart","Quint"].each(function(A,B){Fx.Transitions[A]=new Fx.Transition(function(C){return Math.pow(C,[B+2])})});Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(A,B){this.element=this.subject=document.id(A);this.parent(B)},set:function(A,B){if(arguments.length==1){B=A;A=this.property||this.options.property}this.render(this.element,A,B,this.options.unit);return this},start:function(E,C,D){if(!this.check(E,C,D)){return this}var A=Array.flatten(arguments);this.property=this.options.property||A.shift();var B=this.prepare(this.element,this.property,A);return this.parent(B.from,B.to)}});Element.Properties.tween={set:function(B){var A=this.retrieve("tween");if(A){A.cancel()}return this.eliminate("tween").store("tween:options",$extend({link:"cancel"},B))},get:function(A){if(A||!this.retrieve("tween")){if(A||!this.retrieve("tween:options")){this.set("tween",A)}this.store("tween",new Fx.Tween(this,this.retrieve("tween:options")))}return this.retrieve("tween")}};Element.implement({tween:function(B,C,A){this.get("tween").start(arguments);return this},fade:function(E){var C=this.get("tween"),D="opacity",B;E=$pick(E,"toggle");switch(E){case"in":C.start(D,1);break;case"out":C.start(D,0);break;case"show":C.set(D,1);break;case"hide":C.set(D,0);break;case"toggle":var A=this.retrieve("fade:flag",this.get("opacity")==1);C.start(D,(A)?0:1);this.store("fade:flag",!A);B=true;break;default:C.start(D,arguments)}if(!B){this.eliminate("fade:flag")}return this},highlight:function(C,B){if(!B){B=this.retrieve("highlight:original",this.getStyle("background-color"));B=(B=="transparent")?"#fff":B}var A=this.get("tween");A.start("background-color",C||"#ffff88",B).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original"));A.callChain()}.bind(this));return this}});var Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,noCache:false},initialize:function(A){this.xhr=new Browser.Request();this.setOptions(A);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers)},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return }this.running=false;this.status=0;$try(function(){this.status=this.xhr.status}.bind(this));this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML};this.success(this.response.text,this.response.xml)}else{this.response={text:null,xml:null};this.failure()}},isSuccess:function(){return((this.status>=200)&&(this.status<300))},processScripts:function(A){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return $exec(A)}return A.stripScripts(this.options.evalScripts)},success:function(A,B){this.onSuccess(this.processScripts(A),B)},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain()},failure:function(){this.onFailure()},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr)},setHeader:function(B,A){this.headers.set(B,A);return this},getHeader:function(A){return $try(function(){return this.xhr.getResponseHeader(A)}.bind(this))},check:function(){if(!this.running){return true}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false}return false},send:function(A){if(!this.check(A)){return this}this.running=true;var C=$type(A);if(C=="string"||C=="element"){A={data:A}}var H=this.options;A=$extend({data:H.data,url:H.url,method:H.method},A);var E=A.data,J=String(A.url),K=A.method.toLowerCase();switch($type(E)){case"element":E=document.id(E).toQueryString();break;case"object":case"hash":E=Hash.toQueryString(E)}if(this.options.format){var B="format="+this.options.format;E=(E)?B+"&"+E:B}if(this.options.emulation&&!["get","post"].contains(K)){var D="_method="+K;E=(E)?D+"&"+E:D;K="post"}if(this.options.urlEncoded&&K=="post"){var I=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers.set("Content-type","application/x-www-form-urlencoded"+I)}if(this.options.noCache){var F="noCache="+new Date().getTime();E=(E)?F+"&"+E:F}var G=J.lastIndexOf("/");if(G>-1&&(G=J.indexOf("#"))>-1){J=J.substr(0,G)}if(E&&K=="get"){J=J+(J.contains("?")?"&":"?")+E;E=null}this.xhr.open(K.toUpperCase(),J,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(N,L){try{this.xhr.setRequestHeader(L,N)}catch(M){this.fireEvent("exception",[L,N])}},this);this.fireEvent("request");this.xhr.send(E);if(!this.options.async){this.onStateChange()}return this},cancel:function(){if(!this.running){return this}this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent("cancel");return this}});(function(){var A={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(B){A[B]=function(){var C=Array.link(arguments,{url:String.type,data:$defined});return this.send($extend(C,{method:B}))}});Request.implement(A)})();Element.Properties.send={set:function(B){var A=this.retrieve("send");if(A){A.cancel()}return this.eliminate("send").store("send:options",$extend({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")},B))},get:function(A){if(A||!this.retrieve("send")){if(A||!this.retrieve("send:options")){this.set("send",A)}this.store("send",new Request(this.retrieve("send:options")))}return this.retrieve("send")}};Element.implement({send:function(B){var A=this.get("send");A.send({data:this,url:B||A.options.url});return this}});Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false},processHTML:function(C){var A=C.match(/<body[^>]*>([\s\S]*?)<\/body>/i);C=(A)?A[1]:C;var B=new Element("div");return $try(function(){var H="<root>"+C+"</root>",E;if(Browser.Engine.trident){E=new ActiveXObject("Microsoft.XMLDOM");E.async=false;E.loadXML(H)}else{E=new DOMParser().parseFromString(H,"text/xml")}H=E.getElementsByTagName("root")[0];if(!H){return null}for(var F=0,G=H.childNodes.length;F<G;F++){var D=Element.clone(H.childNodes[F],true,true);if(D){B.grab(D)}}return B})||B.set("html",C)},success:function(C){var D=this.options,A=this.response;A.html=C.stripScripts(function(E){A.javascript=E});var B=this.processHTML(A.html);A.tree=B.childNodes;A.elements=B.getElements("*");if(D.filter){A.tree=A.elements.filter(D.filter)}if(D.update){document.id(D.update).empty().set("html",A.html)}else{if(D.append){document.id(D.append).adopt(B.getChildren())}}if(D.evalScripts){$exec(A.javascript)}this.onSuccess(A.tree,A.elements,A.html,A.javascript)}});Element.Properties.load={set:function(B){var A=this.retrieve("load");if(A){A.cancel()}return this.eliminate("load").store("load:options",$extend({data:this,link:"cancel",update:this,method:"get"},B))},get:function(A){if(A||!this.retrieve("load")){if(A||!this.retrieve("load:options")){this.set("load",A)}this.store("load",new Request.HTML(this.retrieve("load:options")))}return this.retrieve("load")}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Object.type,url:String.type}));return this}});var JSON=new Hash(this.JSON&&{stringify:JSON.stringify,parse:JSON.parse}).extend({$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(A){return JSON.$specialChars[A]||"\\u00"+Math.floor(A.charCodeAt()/16).toString(16)+(A.charCodeAt()%16).toString(16)},encode:function(A){switch($type(A)){case"string":return'"'+A.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(A.map(JSON.encode).clean())+"]";case"object":case"hash":var B=[];Hash.each(A,function(C,D){var E=JSON.encode(C);if(E){B.push(JSON.encode(D)+":"+E)}});return"{"+B+"}";case"number":case"boolean":return String(A);case false:return"null"}return null},decode:function(string,secure){if($type(string)!="string"||!string.length){return null}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null}return eval("("+string+")")}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(A){this.parent(A);this.headers.extend({Accept:"application/json","X-Request":"JSON"})},success:function(A){this.response.json=JSON.decode(A,this.options.secure);this.onSuccess(this.response.json,A)}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(A,B){this.key=A;this.setOptions(B)},write:function(A){A=encodeURIComponent(A);if(this.options.domain){A+="; domain="+this.options.domain}if(this.options.path){A+="; path="+this.options.path}if(this.options.duration){var B=new Date();B.setTime(B.getTime()+this.options.duration*24*60*60*1000);A+="; expires="+B.toGMTString()}if(this.options.secure){A+="; secure"}this.options.document.cookie=this.key+"="+A;return this},read:function(){var A=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)");return(A)?decodeURIComponent(A[1]):null},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write("");return this}});Cookie.write=function(A,C,B){return new Cookie(A,B).write(C)};Cookie.read=function(A){return new Cookie(A).read()};Cookie.dispose=function(A,B){return new Cookie(A,B).dispose()};Element.Events.domready={onAdd:function(A){if(Browser.loaded){A.call(this)}}};(function(){var A=function(){if(Browser.loaded){return }Browser.loaded=true;window.fireEvent("domready");document.fireEvent("domready")};window.addEvent("load",A);if(Browser.Engine.trident){var B=document.createElement("div");(function(){($try(function(){B.doScroll();return document.id(B).inject(document.body).set("html","temp").dispose()}))?A():arguments.callee.delay(50)})()}else{if(Browser.Engine.webkit&&Browser.Engine.version<525){(function(){(["loaded","complete"].contains(document.readyState))?A():arguments.callee.delay(50)})()}else{document.addEvent("DOMContentLoaded",A)}}})();Native.implement([Document,Element],{getElements:function(C,D){C=C.split(",");var H,F={};for(var G=0,A=C.length;G<A;G++){var B=C[G],E=Selectors.Utils.search(this,B,F);if(G!=0&&E.item){E=$A(E)}H=(G==0)?E:(H.item)?$A(H).concat(E):H.concat(E)}return new Elements(H,{ddup:(C.length>1),cash:!D})}});Element.implement({match:function(A){if(!A||(A==this)){return true}var D=Selectors.Utils.parseTagAndID(A);var B=D[0],C=D[1];if(!Selectors.Filters.byID(this,C)||!Selectors.Filters.byTag(this,B)){return false}var E=Selectors.Utils.parseSelector(A);return(E)?Selectors.Utils.filter(this,E,{}):true}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)};Selectors.Utils={chk:function(A,C){if(!C){return true}var B=$uid(A);if(!C[B]){return C[B]=true}return false},parseNthArgument:function(A){if(Selectors.Cache.nth[A]){return Selectors.Cache.nth[A]}var D=A.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!D){return false}var B=parseInt(D[1],10);var E=(B||B===0)?B:1;var C=D[2]||false;var F=parseInt(D[3],10)||0;if(E!=0){F--;while(F<1){F+=E}while(F>=E){F-=E}}else{E=F;C="index"}switch(C){case"n":D={a:E,b:F,special:"n"};break;case"odd":D={a:2,b:0,special:"n"};break;case"even":D={a:2,b:1,special:"n"};break;case"first":D={a:0,special:"index"};break;case"last":D={special:"last-child"};break;case"only":D={special:"only-child"};break;default:D={a:(E-1),special:"index"}}return Selectors.Cache.nth[A]=D},parseSelector:function(F){if(Selectors.Cache.parsed[F]){return Selectors.Cache.parsed[F]}var G,C={classes:[],pseudos:[],attributes:[]};while((G=Selectors.RegExps.combined.exec(F))){var B=G[1],D=G[2],E=G[3],I=G[5],H=G[6],A=G[7];if(B){C.classes.push(B)}else{if(H){var J=Selectors.Pseudo.get(H);if(J){C.pseudos.push({parser:J,argument:A})}else{C.attributes.push({name:H,operator:"=",value:A})}}else{if(D){C.attributes.push({name:D,operator:E,value:I})}}}}if(!C.classes.length){delete C.classes}if(!C.attributes.length){delete C.attributes}if(!C.pseudos.length){delete C.pseudos}if(!C.classes&&!C.attributes&&!C.pseudos){C=null}return Selectors.Cache.parsed[F]=C},parseTagAndID:function(A){var B=A.match(Selectors.RegExps.tag);var C=A.match(Selectors.RegExps.id);return[(B)?B[1]:"*",(C)?C[1]:false]},filter:function(D,G,E){var F;if(G.classes){for(F=G.classes.length;F--;F){var C=G.classes[F];if(!Selectors.Filters.byClass(D,C)){return false}}}if(G.attributes){for(F=G.attributes.length;F--;F){var A=G.attributes[F];if(!Selectors.Filters.byAttribute(D,A.name,A.operator,A.value)){return false}}}if(G.pseudos){for(F=G.pseudos.length;F--;F){var B=G.pseudos[F];if(!Selectors.Filters.byPseudo(D,B.parser,B.argument,E)){return false}}}return true},getByTagAndID:function(A,B,C){if(C){var D=(A.getElementById)?A.getElementById(C,true):Element.getElementById(A,C,true);return(D&&Selectors.Filters.byTag(D,B))?[D]:[]}else{return A.getElementsByTagName(B)}},search:function(Q,R,I){var X=[];var W=R.trim().replace(Selectors.RegExps.splitter,function(A,B,C){X.push(B);return":)"+C}).split(":)");var O,U,N;for(var P=0,G=W.length;P<G;P++){var D=W[P];if(P==0&&Selectors.RegExps.quick.test(D)){O=Q.getElementsByTagName(D);continue}var Y=X[P-1];var M=Selectors.Utils.parseTagAndID(D);var L=M[0],K=M[1];if(P==0){O=Selectors.Utils.getByTagAndID(Q,L,K)}else{var V={},S=[];for(var E=0,F=O.length;E<F;E++){S=Selectors.Getters[Y](S,O[E],L,K,V)}O=S}var T=Selectors.Utils.parseSelector(D);if(T){U=[];for(var H=0,J=O.length;H<J;H++){N=O[H];if(Selectors.Utils.filter(N,T,I)){U.push(N)}}O=U}}return O}};Selectors.Getters={" ":function(B,C,A,I,E){var F=Selectors.Utils.getByTagAndID(C,A,I);for(var G=0,H=F.length;G<H;G++){var D=F[G];if(Selectors.Utils.chk(D,E)){B.push(D)}}return B},">":function(B,C,A,I,D){var G=Selectors.Utils.getByTagAndID(C,A,I);for(var E=0,F=G.length;E<F;E++){var H=G[E];if(H.parentNode==C&&Selectors.Utils.chk(H,D)){B.push(H)}}return B},"+":function(E,A,B,C,D){while((A=A.nextSibling)){if(A.nodeType==1){if(Selectors.Utils.chk(A,D)&&Selectors.Filters.byTag(A,B)&&Selectors.Filters.byID(A,C)){E.push(A)}break}}return E},"~":function(E,A,B,C,D){while((A=A.nextSibling)){if(A.nodeType==1){if(!Selectors.Utils.chk(A,D)){break}if(Selectors.Filters.byTag(A,B)&&Selectors.Filters.byID(A,C)){E.push(A)}}}return E}};Selectors.Filters={byTag:function(A,B){return(B=="*"||(A.tagName&&A.tagName.toLowerCase()==B))},byID:function(B,A){return(!A||(B.id&&B.id==A))},byClass:function(A,B){return(A.className&&A.className.contains&&A.className.contains(B," "))},byPseudo:function(B,C,D,A){return C.call(B,D,A)},byAttribute:function(E,D,A,C){var B=Element.prototype.getProperty.call(E,D);if(!B){return(A=="!=")}if(!A||C==undefined){return true}switch(A){case"=":return(B==C);case"*=":return(B.contains(C));case"^=":return(B.substr(0,C.length)==C);case"$=":return(B.substr(B.length-C.length)==C);case"!=":return(B!=C);case"~=":return B.contains(C," ");case"|=":return B.contains(C,"-")}return false}};Selectors.Pseudo=new Hash({checked:function(){return this.checked},empty:function(){return !(this.innerText||this.textContent||"").length},not:function(A){return !Element.match(this,A)},contains:function(A){return(this.innerText||this.textContent||"").contains(A)},"first-child":function(){return Selectors.Pseudo.index.call(this,0)},"last-child":function(){var A=this;while((A=A.nextSibling)){if(A.nodeType==1){return false}}return true},"only-child":function(){var A=this;while((A=A.previousSibling)){if(A.nodeType==1){return false}}var B=this;while((B=B.nextSibling)){if(B.nodeType==1){return false}}return true},"nth-child":function(C,E){C=(C==undefined)?"n":C;var G=Selectors.Utils.parseNthArgument(C);if(G.special!="n"){return Selectors.Pseudo[G.special].call(this,G.a,E)}var D=0;E.positions=E.positions||{};var F=$uid(this);if(!E.positions[F]){var A=this;while((A=A.previousSibling)){if(A.nodeType!=1){continue}D++;var B=E.positions[$uid(A)];if(B!=undefined){D=B+D;break}}E.positions[F]=D}return(E.positions[F]%G.a==G.b)},index:function(B){var A=this,C=0;while((A=A.previousSibling)){if(A.nodeType==1&&++C>B){return false}}return(C==B)},even:function(A,B){return Selectors.Pseudo["nth-child"].call(this,"2n+1",B)},odd:function(A,B){return Selectors.Pseudo["nth-child"].call(this,"2n",B)},selected:function(){return this.selected},enabled:function(){return(this.disabled===false)}});var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"transparent",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object},initialize:function(B,A){this.instance="Swiff_"+$time();this.setOptions(A);A=this.options;var L=this.id=A.id||this.instance;var M=document.id(A.container);Swiff.CallBacks[this.instance]={};var I=A.params,G=A.vars,H=A.callBacks;var F=$extend({height:A.height,width:A.width},A.properties);var C=this;for(var J in H){Swiff.CallBacks[this.instance][J]=(function(N){return function(){return N.apply(C.object,arguments)}})(H[J]);G[J]="Swiff.CallBacks."+this.instance+"."+J}I.flashVars=Hash.toQueryString(G);if(Browser.Engine.trident){F.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";I.movie=B}else{F.type="application/x-shockwave-flash";F.data=B}var D='<object id="'+L+'"';for(var E in F){D+=" "+E+'="'+F[E]+'"'}D+=">";for(var K in I){if(I[K]){D+='<param name="'+K+'" value="'+I[K]+'" />'}}D+="</object>";this.object=((M)?M.empty():new Element("div")).set("html",D).firstChild},replaces:function(A){A=document.id(A,true);A.parentNode.replaceChild(this.toElement(),A);return this},inject:function(A){document.id(A,true).appendChild(this.toElement());return this},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments))}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>");return eval(rs)};MooTools.More={version:"1.2.5.1",build:"254884f2b83651bf95260eed5c6cceb838e22d8e"};Class.Mutators.Binds=function(A){return A};Class.Mutators.initialize=function(A){return function(){$splat(this.Binds).each(function(B){var C=this[B];if(C){this[B]=C.bind(this)}},this);return A.apply(this,arguments)}};Element.implement({measure:function(E){var C=function(H){return !!(!H||H.offsetHeight||H.offsetWidth)};if(C(this)){return E.apply(this)}var F=this.getParent(),D=[],A=[];while(!C(F)&&F!=document.body){A.push(F.expose());F=F.getParent()}var G=this.expose();var B=E.apply(this);G();A.each(function(H){H()});return B},expose:function(){if(this.getStyle("display")!="none"){return $empty}var A=this.style.cssText;this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=A}.bind(this)},getDimensions:function(B){B=$merge({computeSize:false},B);var C={};var D=function(F,G){return(G.computeSize)?F.getComputedSize(G):F.getSize()};var A=this.getParent("body");if(A&&this.getStyle("display")=="none"){C=this.measure(function(){return D(this,B)})}else{if(A){try{C=D(this,B)}catch(E){}}else{C={x:0,y:0}}}return $chk(C.x)?$extend(C,{width:C.x,height:C.y}):$extend(C,{x:C.width,y:C.height})},getComputedSize:function(B){if(B&&B.plains){B.planes=B.plains}B=$merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},B);var E={width:0,height:0};switch(B.mode){case"vertical":delete E.width;delete B.planes.width;break;case"horizontal":delete E.height;delete B.planes.height;break}var A=[];$each(B.planes,function(G,F){G.each(function(H){B.styles.each(function(I){A.push((I=="border")?I+"-"+H+"-width":I+"-"+H)})})});var C={};A.each(function(F){C[F]=this.getComputedStyle(F)},this);var D=[];$each(B.planes,function(H,G){var F=G.capitalize();E["total"+F]=E["computed"+F]=0;H.each(function(I){E["computed"+I.capitalize()]=0;A.each(function(J,K){if(J.test(I)){C[J]=C[J].toInt()||0;E["total"+F]=E["total"+F]+C[J];E["computed"+I.capitalize()]=E["computed"+I.capitalize()]+C[J]}if(J.test(I)&&G!=J&&(J.test("border")||J.test("padding"))&&!D.contains(J)){D.push(J);E["computed"+F]=E["computed"+F]-C[J]}})})});["Width","Height"].each(function(F){var G=F.toLowerCase();if(!$chk(E[G])){return }E[G]=E[G]+this["offset"+F]+E["computed"+F];E["total"+F]=E[G]+E["total"+F];delete E["computed"+F]},this);return $extend(C,E)}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(A,B){this.elements=this.subject=$$(A);this.parent(B)},compute:function(C,B,A){var G={};for(var F in C){var I=C[F],E=B[F],D=G[F]={};for(var H in I){D[H]=this.parent(I[H],E[H],A)}}return G},set:function(A){for(var D in A){if(!this.elements[D]){continue}var B=A[D];for(var C in B){this.render(this.elements[D],C,B[C],this.options.unit)}}return this},start:function(G){if(!this.check(G)){return this}var B={},A={};for(var F in G){if(!this.elements[F]){continue}var D=G[F],I=B[F]={},C=A[F]={};for(var H in D){var E=this.prepare(this.elements[F],H,D[H]);I[H]=E.from;C[H]=E.to}}return this.parent(B,A)}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var C=Array.link(arguments,{container:Element.type,options:Object.type,togglers:$defined,elements:$defined});this.parent(C.elements,C.options);this.togglers=$$(C.togglers);this.previous=-1;this.internalChain=new Chain();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 A=0,B=this.togglers.length;A<B;A++){this.addSection(this.togglers[A],this.elements[A])}this.elements.each(function(E,F){if(this.options.show===F){this.fireEvent("active",[this.togglers[F],E])}else{for(var D in this.effects){E.setStyle(D,0)}}},this);if($chk(this.options.display)||this.options.initialDisplayFx===false){this.display(this.options.display,this.options.initialDisplayFx)}if(this.options.fixedHeight!==false){this.options.returnHeightToAuto=false}this.addEvent("complete",this.internalChain.callChain.bind(this.internalChain))},addSection:function(D,F){D=document.id(D);F=document.id(F);var C=this.togglers.contains(D);this.togglers.include(D);this.elements.include(F);var B=this.togglers.indexOf(D);var A=this.display.bind(this,B);D.store("accordion:display",A);D.addEvent(this.options.trigger,A);if(this.options.height){F.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"})}if(this.options.width){F.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"})}F.fullOpacity=1;if(this.options.fixedWidth){F.fullWidth=this.options.fixedWidth}if(this.options.fixedHeight){F.fullHeight=this.options.fixedHeight}F.setStyle("overflow","hidden");if(!C){for(var E in this.effects){F.setStyle(E,0)}}return this},removeSection:function(C,A){var B=this.togglers.indexOf(C);var E=this.elements[B];var D=function(){this.togglers.erase(C);this.elements.erase(E);this.detach(C)}.bind(this);if(this.now==B||A!=undefined){this.display($pick(A,B-1>=0?B-1:0)).chain(D)}else{D()}return this},detach:function(A){var B=function(C){C.removeEvent(this.options.trigger,C.retrieve("accordion:display"))}.bind(this);if(!A){this.togglers.each(B)}else{B(A)}return this},display:function(B,A){if(!this.check(B,A)){return this}A=$pick(A,true);B=($type(B)=="element")?this.elements.indexOf(B):B;if(B==this.previous&&!this.options.alwaysHide){return this}if(this.options.returnHeightToAuto){var D=this.elements[this.previous];if(D&&!this.selfHidden){for(var E in this.effects){D.setStyle(E,D[this.effects[E]])}}}if((this.timer&&this.options.wait)||(B===this.previous&&!this.options.alwaysHide)){return this}this.previous=B;var C={};this.elements.each(function(G,H){C[H]={};var I;if(H!=B){I=true}else{if(this.options.alwaysHide&&((G.offsetHeight>0&&this.options.height)||G.offsetWidth>0&&this.options.width)){I=true;this.selfHidden=true}}this.fireEvent(I?"background":"active",[this.togglers[H],G]);for(var F in this.effects){C[H][F]=I?0:G[this.effects[F]]}},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var F=this.elements[B];if(F){F.setStyle("height","auto")}}}.bind(this));return A?this.start(C):this.set(C)}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var A=Array.link(arguments,{container:Element.type});this.container=A.container},addSection:function(E,A,C){E=document.id(E);A=document.id(A);var D=this.togglers.contains(E);var B=this.togglers.length;if(B&&(!D||C)){C=$pick(C,B-1);E.inject(this.togglers[C],"before");A.inject(E,"after")}else{if(this.container&&!D){E.inject(this.container);A.inject(this.container)}}return this.parent.apply(this,arguments)}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(A,B){this.element=this.subject=document.id(A);this.parent(B);var C=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=document.id(this.element.getDocument().body)}var D=this.element;if(this.options.wheelStops){this.addEvent("start",function(){D.addEvent("mousewheel",C)},true);this.addEvent("complete",function(){D.removeEvent("mousewheel",C)},true)}},set:function(){var A=Array.flatten(arguments);if(Browser.Engine.gecko){A=[Math.round(A[0]),Math.round(A[1])]}this.element.scrollTo(A[0]+this.options.offset.x,A[1]+this.options.offset.y)},compute:function(C,A,B){return[0,1].map(function(D){return Fx.compute(C[D],A[D],B)})},start:function(G,C){if(!this.check(G,C)){return this}var E=this.element.getScrollSize(),A=this.element.getScroll(),F={x:G,y:C};for(var D in F){var B=E[D];if($chk(F[D])){F[D]=($type(F[D])=="number")?F[D]:B}else{F[D]=A[D]}F[D]+=this.options.offset[D]}return this.parent([A.x,A.y],[F.x,F.y])},toTop:function(){return this.start(false,0)},toLeft:function(){return this.start(0,false)},toRight:function(){return this.start("right",false)},toBottom:function(){return this.start(false,"bottom")},toElement:function(A){var B=document.id(A).getPosition(this.element);return this.start(B.x,B.y)},scrollIntoView:function(G,E,F){E=E?$splat(E):["x","y"];var B={};G=document.id(G);var D=G.getPosition(this.element);var A=G.getSize();var C=this.element.getScroll();var I=this.element.getSize();var H={x:D.x+A.x,y:D.y+A.y};["x","y"].each(function(J){if(E.contains(J)){if(H[J]>C[J]+I[J]){B[J]=H[J]-I[J]}if(D[J]<C[J]){B[J]=D[J]}}if(B[J]==null){B[J]=C[J]}if(F&&F[J]){B[J]=B[J]+F[J]}},this);if(B.x!=C.x||B.y!=C.y){this.start(B.x,B.y)}return this},scrollToCenter:function(G,E,F){E=E?$splat(E):["x","y"];G=$(G);var B={},D=G.getPosition(this.element),A=G.getSize(),C=this.element.getScroll(),I=this.element.getSize(),H={x:D.x+A.x,y:D.y+A.y};["x","y"].each(function(J){if(E.contains(J)){B[J]=D[J]-(I[J]-A[J])/2}if(B[J]==null){B[J]=C[J]}if(F&&F[J]){B[J]=B[J]+F[J]}},this);if(B.x!=C.x||B.y!=C.y){this.start(B.x,B.y)}return this}});Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",wrapper:false,hideOverflow:true,resetHeight:false},initialize:function(A,B){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);if(this.open&&this.options.resetHeight){this.wrapper.setStyle("height","")}if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper)}},true);this.element=this.subject=document.id(A);this.parent(B);var C=this.element.retrieve("wrapper");var D=this.element.getStyles("margin","position","overflow");if(this.options.hideOverflow){D=$extend(D,{overflow:"hidden"})}if(this.options.wrapper){C=document.id(this.options.wrapper).setStyles(D)}this.wrapper=C||new Element("div",{styles:D}).wraps(this.element);this.element.store("wrapper",this.wrapper).setStyle("margin",0);this.now=[];this.open=true},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},set:function(A){this.element.setStyle(this.margin,A[0]);this.wrapper.setStyle(this.layout,A[1]);return this},compute:function(C,A,B){return[0,1].map(function(D){return Fx.compute(C[D],A[D],B)})},start:function(A,E){if(!this.check(A,E)){return this}this[E||this.options.mode]();var F=this.element.getStyle(this.margin).toInt();var G=this.wrapper.getStyle(this.layout).toInt();var B=[[F,G],[0,this.offset]];var C=[[F,G],[-this.offset,0]];var D;switch(A){case"in":D=B;break;case"out":D=C;break;case"toggle":D=(G==0)?B:C}return this.parent(D[0],D[1])},slideIn:function(A){return this.start("in",A)},slideOut:function(A){return this.start("out",A)},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){return this.start("toggle",A)}});Element.Properties.slide={set:function(A){var B=this.retrieve("slide");if(B){B.cancel()}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},A))},get:function(A){if(A||!this.retrieve("slide")){if(A||!this.retrieve("slide:options")){this.set("slide",A)}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")))}return this.retrieve("slide")}};Element.implement({slide:function(D,C){D=D||"toggle";var A=this.get("slide"),B;switch(D){case"hide":A.hide(C);break;case"show":A.show(C);break;case"toggle":var E=this.retrieve("slide:flag",A.open);A[E?"slideOut":"slideIn"](C);this.store("slide:flag",!E);B=true;break;default:A.start(D,C)}if(!B){this.eliminate("slide:flag")}return this}});var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(A,D){D=D||document;this.doc=D.getDocument();var C=D.getWindow();this.parent(this.doc,A);this.links=$$(this.options.links||this.doc.links);var B=C.location.href.match(/^[^#]*/)[0]+"#";this.links.each(function(E){if(E.href.indexOf(B)!=0){return }var F=E.href.substr(B.length);if(F){this.useLink(E,F)}},this);if(!Browser.Engine.webkit419){this.addEvent("complete",function(){C.location.hash=this.anchor},true)}},useLink:function(C,B){var A;C.addEvent("click",function(D){if(A!==false&&!A){A=document.id(B)||this.doc.getElement("a[name="+B+"]")}if(A){D.preventDefault();this.anchor=B;this.toElement(A).chain(function(){this.fireEvent("scrolledTo",[C,A])}.bind(this));C.blur()}}.bind(this))}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var A=Array.link(arguments,{options:Object.type,element:$defined});this.element=document.id(A.element);this.document=this.element.getDocument();this.setOptions(A.options||{});var B=$type(this.options.handle);this.handles=((B=="array"||B=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach()},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);return this},start:function(E){if(E.rightClick){return }if(this.options.preventDefault){E.preventDefault()}if(this.options.stopPropagation){E.stopPropagation()}this.mouse.start=E.page;this.fireEvent("beforeStart",this.element);var B=this.options.limit;this.limit={x:[],y:[]};var F=this.element.getStyles("left","right","top","bottom");this._invert={x:this.options.modifiers.x=="left"&&F.left=="auto"&&!isNaN(F.right.toInt())&&(this.options.modifiers.x="right"),y:this.options.modifiers.y=="top"&&F.top=="auto"&&!isNaN(F.bottom.toInt())&&(this.options.modifiers.y="bottom")};var C,D;for(C in this.options.modifiers){if(!this.options.modifiers[C]){continue}var G=this.element.getStyle(this.options.modifiers[C]);if(G&&!G.match(/px$/)){if(!D){D=this.element.getCoordinates(this.element.getOffsetParent())}G=D[this.options.modifiers[C]]}if(this.options.style){this.value.now[C]=(G||0).toInt()}else{this.value.now[C]=this.element[this.options.modifiers[C]]}if(this.options.invert){this.value.now[C]*=-1}if(this._invert[C]){this.value.now[C]*=-1}this.mouse.pos[C]=E.page[C]-this.value.now[C];if(B&&B[C]){for(var A=2;A--;A){if($chk(B[C][A])){this.limit[C][A]=$lambda(B[C][A])()}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid}}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop)},check:function(B){if(this.options.preventDefault){B.preventDefault()}var A=Math.round(Math.sqrt(Math.pow(B.page.x-this.mouse.start.x,2)+Math.pow(B.page.y-this.mouse.start.y,2)));if(A>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,B]).fireEvent("snap",this.element)}},drag:function(B){if(this.options.preventDefault){B.preventDefault()}this.mouse.now=B.page;for(var A in this.options.modifiers){if(!this.options.modifiers[A]){continue}this.value.now[A]=this.mouse.now[A]-this.mouse.pos[A];if(this.options.invert){this.value.now[A]*=-1}if(this._invert[A]){this.value.now[A]*=-1}if(this.options.limit&&this.limit[A]){if($chk(this.limit[A][1])&&(this.value.now[A]>this.limit[A][1])){this.value.now[A]=this.limit[A][1]}else{if($chk(this.limit[A][0])&&(this.value.now[A]<this.limit[A][0])){this.value.now[A]=this.limit[A][0]}}}if(this.options.grid[A]){this.value.now[A]-=((this.value.now[A]-(this.limit[A][0]||0))%this.options.grid[A])}if(this.options.style){this.element.setStyle(this.options.modifiers[A],this.value.now[A]+this.options.unit)}else{this.element[this.options.modifiers[A]]=this.value.now[A]}}this.fireEvent("drag",[this.element,B])},cancel:function(A){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);if(A){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element)}},stop:function(A){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(A){this.fireEvent("complete",[this.element,A])}}});Element.implement({makeResizable:function(B){var A=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},B));this.store("resizer",A);return A.addEvent("drag",function(){this.fireEvent("resize",A)}.bind(this))}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(A,B){this.parent(A,B);A=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=document.id(this.container.getDocument().body)}if(this.options.style){if(this.options.modifiers.x=="left"&&this.options.modifiers.y=="top"){var C,F=document.id(A.getOffsetParent());if(F){C=F.getStyles("border-top-width","border-left-width")}var E=A.getStyles("left","top");if(F&&(E.left=="auto"||E.top=="auto")){var D=A.getPosition(F);D.x=D.x-(C["border-left-width"]?C["border-left-width"].toInt():0);D.y=D.y-(C["border-top-width"]?C["border-top-width"].toInt():0);A.setPosition(D)}}if(A.getStyle("position")=="static"){A.setStyle("position","absolute")}}this.addEvent("start",this.checkDroppables,true);this.overed=null},start:function(A){if(this.container){this.options.limit=this.calculateLimit()}if(this.options.precalculate){this.positions=this.droppables.map(function(B){return B.getCoordinates()})}this.parent(A)},calculateLimit:function(){var L=document.id(this.element.getOffsetParent())||document.body,H=this.container.getCoordinates(L),I={},M={},N={},F={},J={},D={};["top","right","bottom","left"].each(function(P){I[P]=this.container.getStyle("border-"+P).toInt();N[P]=this.element.getStyle("border-"+P).toInt();M[P]=this.element.getStyle("margin-"+P).toInt();F[P]=this.container.getStyle("margin-"+P).toInt();D[P]=L.getStyle("padding-"+P).toInt();J[P]=L.getStyle("border-"+P).toInt()},this);var K=this.element.offsetWidth+M.left+M.right,A=this.element.offsetHeight+M.top+M.bottom,G=0,E=0,B=H.right-I.right-K,O=H.bottom-I.bottom-A;if(this.options.includeMargins){G+=M.left;E+=M.top}else{B+=M.right;O+=M.bottom}if(this.element.getStyle("position")=="relative"){var C=this.element.getCoordinates(L);C.left-=this.element.getStyle("left").toInt();C.top-=this.element.getStyle("top").toInt();G+=I.left-C.left;E+=I.top-C.top;B+=M.left-C.left;O+=M.top-C.top;if(this.container!=L){G+=F.left+D.left;E+=(Browser.Engine.trident4?0:F.top)+D.top}}else{G-=M.left;E-=M.top;if(this.container==L){B-=I.left;O-=I.top}else{G+=H.left+I.left-J.left;E+=H.top+I.top-J.top;B-=J.left;O-=J.top}}return{x:[G,B],y:[E,O]}},checkAgainst:function(C,A){C=(this.positions)?this.positions[A]:C.getCoordinates();var B=this.mouse.now;return(B.x>C.left&&B.x<C.right&&B.y<C.bottom&&B.y>C.top)},checkDroppables:function(){var A=this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=A){if(this.overed){this.fireEvent("leave",[this.element,this.overed])}if(A){this.fireEvent("enter",[this.element,A])}this.overed=A}},drag:function(A){this.parent(A);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables()}},stop:function(A){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,A]);this.overed=null;return this.parent(A)}});Element.implement({makeDraggable:function(B){var A=new Drag.Move(this,B);this.store("dragger",A);return A}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(A){if(this.options.snap){A=this.toPosition(this.step)}this.knob.setStyle(this.property,A)},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(D,B,E){this.setOptions(E);this.element=document.id(D);this.knob=document.id(B);this.previousChange=this.previousEnd=this.step=-1;var C,A={},F={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y";this.property="top";C="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";C="offsetWidth"}this.full=this.element.measure(function(){this.half=this.knob[C]/2;return this.element[C]-this.knob[C]+(this.options.offset*2)}.bind(this));this.setRange(this.options.range);this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset);F[this.axis]=this.property;A[this.axis]=[-this.options.offset,this.full-this.options.offset];var G={snap:0,limit:A,modifiers:F,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true}).bind(this),onCancel:function(){this.isDragging=false}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end()}.bind(this)};if(this.options.snap){G.grid=Math.ceil(this.stepWidth);G.limit[this.axis][1]=this.full}this.drag=new Drag(this.knob,G);this.attach();if(this.options.initialStep!=null){this.set(this.options.initialStep)}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement)}this.drag.attach();return this},detach:function(){this.element.removeEvent("mousedown",this.clickedElement);this.element.removeEvent("mousewheel",this.scrolledElement);this.drag.detach();return this},set:function(A){if(!((this.range>0)^(A<this.min))){A=this.min}if(!((this.range>0)^(A>this.max))){A=this.max}this.step=Math.round(A);this.checkStep();this.fireEvent("tick",this.toPosition(this.step));this.end();return this},setRange:function(B,A){this.min=$pick(B[0],0);this.max=$pick(B[1],this.options.steps);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);this.set($pick(A,this.step).floor(this.min).max(this.max));return this},clickedElement:function(C){if(this.isDragging||C.target==this.knob){return }var A=this.range<0?-1:1;var B=C.page[this.axis]-this.element.getPosition()[this.axis]-this.half;B=B.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+A*this.toStep(B));this.checkStep();this.fireEvent("tick",B);this.end()},scrolledElement:function(B){var A=(this.options.mode=="horizontal")?(B.wheel<0):(B.wheel>0);this.set(A?this.step-this.stepSize:this.step+this.stepSize);B.stop()},draggedKnob:function(){var A=this.range<0?-1:1;var B=this.drag.value.now[this.axis];B=B.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+A*this.toStep(B));this.checkStep()},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent("change",this.step)}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent("complete",this.step+"")}},toStep:function(B){var A=(B+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(A-=A%this.stepSize):A},toPosition:function(A){return(this.full*Math.abs(this.min-A))/(this.steps*this.stepSize)-this.options.offset}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false,preventDefault:false},initialize:function(B,A){this.setOptions(A);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(B)||B));if(!this.options.clone){this.options.revert=false}if(this.options.revert){this.effect=new Fx.Morph(null,$merge({duration:250,link:"cancel"},this.options.revert))}},attach:function(){this.addLists(this.lists);return this},detach:function(){this.lists=this.removeLists(this.lists);return this},addItems:function(){Array.flatten(arguments).each(function(B){this.elements.push(B);var A=B.retrieve("sortables:start",this.start.bindWithEvent(this,B));(this.options.handle?B.getElement(this.options.handle)||B:B).addEvent("mousedown",A)},this);return this},addLists:function(){Array.flatten(arguments).each(function(A){this.lists.push(A);this.addItems(A.getChildren())},this);return this},removeItems:function(){return $$(Array.flatten(arguments).map(function(B){this.elements.erase(B);var A=B.retrieve("sortables:start");(this.options.handle?B.getElement(this.options.handle)||B:B).removeEvent("mousedown",A);return B},this))},removeLists:function(){return $$(Array.flatten(arguments).map(function(A){this.lists.erase(A);this.removeItems(A.getChildren());return A},this))},getClone:function(A,B){if(!this.options.clone){return new Element(B.tagName).inject(document.body)}if($type(this.options.clone)=="function"){return this.options.clone.call(this,A,B,this.list)}var C=B.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden",width:B.getStyle("width")});if(C.get("html").test("radio")){C.getElements("input[type=radio]").each(function(E,D){E.set("name","clone_"+D);if(E.get("checked")){B.getElements("input[type=radio]")[D].set("checked",true)}})}return C.inject(this.list).setPosition(B.getPosition(B.getOffsetParent()))},getDroppables:function(){var A=this.list.getChildren();if(!this.options.constrain){A=this.lists.concat(A).erase(this.list)}return A.erase(this.clone).erase(this.element)},insert:function(C,A){var B="inside";if(this.lists.contains(A)){this.list=A;this.drag.droppables=this.getDroppables()}else{B=this.element.getAllPrevious().contains(A)?"before":"after"}this.element.inject(A,B);this.fireEvent("sort",[this.element,this.clone])},start:function(A,B){if(!this.idle||A.rightClick||["button","input"].contains(document.id(A.target).get("tag"))){return }this.idle=false;this.element=B;this.opacity=B.get("opacity");this.list=B.getParent();this.clone=this.getClone(A,B);this.drag=new Drag.Move(this.clone,{preventDefault:this.options.preventDefault,snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){A.stop();this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone])}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,"before");this.drag.start(A)},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var B=this.element.getStyles("width","height");var A=this.clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));this.effect.element=this.clone;this.effect.start({top:A.top,left:A.left,width:B.width,height:B.height,opacity:0.25}).chain(this.reset.bind(this))}else{this.reset()}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent("complete",this.element)},serialize:function(){var C=Array.link(arguments,{modifier:Function.type,index:$defined});var A=this.lists.map(function(D){return D.getChildren().map(C.modifier||function(E){return E.get("id")},this)},this);var B=C.index;if(this.lists.length==1){B=0}return $chk(B)&&B>=0&&B<this.lists.length?A[B]:A}});var Asset={javascript:function(D,F){F=$extend({onload:$empty,document:document,check:$lambda(true)},F);if(F.onLoad){F.onload=F.onLoad;delete F.onLoad}var A=new Element("script",{src:D,type:"text/javascript"});var E=F.onload.bind(A),B=F.check,C=F.document;delete F.onload;delete F.check;delete F.document;A.addEvents({load:E,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){E()}}}).set(F);if(Browser.Engine.webkit419){var G=(function(){if(!$try(B)){return }$clear(G);E()}).periodical(50)}return A.inject(C.head)},css:function(A,B){B=B||{};var C=B.onload||B.onLoad;if(C){B.events=B.events||{};B.events.load=C;delete B.onload;delete B.onLoad}return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:A},B)).inject(document.head)},image:function(D,A){A=$merge({onload:$empty,onabort:$empty,onerror:$empty},A);var C=new Image();var B=document.id(C)||new Element("img");["load","abort","error"].each(function(H){var F="on"+H;var G=H.capitalize();if(A["on"+G]){A[F]=A["on"+G];delete A["on"+G]}var E=A[F];delete A[F];C[F]=function(){if(!C){return }if(!B.parentNode){B.width=C.width;B.height=C.height}C=C.onload=C.onabort=C.onerror=null;E.delay(1,B,B);B.fireEvent(H,B,1)}});C.src=B.src=D;if(C&&C.complete){C.onload.delay(1)}return B.set(A)},images:function(C,D){D=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},D);C=$splat(C);var B=[];var A=0;return new Elements(C.map(function(E,F){return Asset.image(E,$extend(D.properties,{onload:function(){D.onProgress.call(this,A,F);A++;if(A==C.length){D.onComplete()}},onerror:function(){D.onError.call(this,A,F);A++;if(A==C.length){D.onComplete()}}}))}))}};var Color=new Native({initialize:function(A,C){if(arguments.length>=3){C="rgb";A=Array.slice(arguments,0,3)}else{if(typeof A=="string"){if(A.match(/rgb/)){A=A.rgbToHex().hexToRgb(true)}else{if(A.match(/hsb/)){A=A.hsbToRgb()}else{A=A.hexToRgb(true)}}}}C=C||"rgb";switch(C){case"hsb":var B=A;A=A.hsbToRgb();A.hsb=B;break;case"hex":A=A.hexToRgb(true);break}A.rgb=A.slice(0,3);A.hsb=A.hsb||A.rgbToHsb();A.hex=A.rgbToHex();return $extend(A,this)}});Color.implement({mix:function(){var B=Array.slice(arguments);var C=($type(B.getLast())=="number")?B.pop():50;var A=this.slice();B.each(function(E){E=new Color(E);for(var D=0;D<3;D++){A[D]=Math.round((A[D]/100*(100-C))+(E[D]/100*C))}});return new Color(A,"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")}});var $RGB=function(B,C,A){return new Color([B,C,A],"rgb")};var $HSB=function(B,C,A){return new Color([B,C,A],"hsb")};var $HEX=function(A){return new Color(A,"hex")};Array.implement({rgbToHsb:function(){var K=this[0],J=this[1],C=this[2],F=0;var D=Math.max(K,J,C),H=Math.min(K,J,C);var B=D-H;var E=D/255,G=(D!=0)?B/D:0;if(G!=0){var I=(D-K)/B;var L=(D-J)/B;var A=(D-C)/B;if(K==D){F=A-L}else{if(J==D){F=2+I-A}else{F=4+L-I}}F/=6;if(F<0){F++}}return[Math.round(F*360),Math.round(G*100),Math.round(E*100)]},hsbToRgb:function(){var F=Math.round(this[2]/100*255);if(this[1]==0){return[F,F,F]}else{var B=this[0]%360;var D=B%60;var C=Math.round((this[2]*(100-this[1]))/10000*255);var E=Math.round((this[2]*(6000-this[1]*D))/600000*255);var A=Math.round((this[2]*(6000-this[1]*(60-D)))/600000*255);switch(Math.floor(B/60)){case 0:return[F,A,C];case 1:return[E,F,C];case 2:return[C,F,A];case 3:return[C,E,F];case 4:return[A,C,F];case 5:return[F,C,E]}}return false}});String.implement({rgbToHsb:function(){var A=this.match(/\d{1,3}/g);return(A)?A.rgbToHsb():null},hsbToRgb:function(){var A=this.match(/\d{1,3}/g);return(A)?A.hsbToRgb():null}});var Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);this.events={};this.checker={}},addEvent:function(A,B){this.checker[A]=this.checker[A]||{};this.events[A]=this.events[A]||[];if(this.events[A].contains(B)){return false}else{this.events[A].push(B)}this.instances.each(function(D,C){D.addEvent(A,this.check.bind(this,[A,D,C]))},this);return this},check:function(D,B,A){this.checker[D][A]=true;var C=this.instances.every(function(E,F){return this.checker[D][F]||false},this);if(!C){return }this.checker[D]={};this.events[D].each(function(E){E.call(this,this.instances,B)},this)}});Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(A,B){this.parent(A,B);this.load()},save:function(){var A=JSON.encode(this.hash);if(!A||A.length>4096){return false}if(A=="{}"){this.dispose()}else{this.write(A)}return true},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this}});Hash.each(Hash.prototype,function(A,B){if(typeof A=="function"){Hash.Cookie.implement(B,function(){var C=A.apply(this.hash,arguments);if(this.options.autoSave){this.save()}return C})}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(B,A){this.element.scrollTo(B,A)},fps:50},initialize:function(A,B){this.setOptions(B);this.element=document.id(A);this.docBody=document.id(this.element.getDocument().body);this.listener=($type(this.element)!="element")?this.docBody:this.element;this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)}},start:function(){this.listener.addEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach})},stop:function(){this.listener.removeEvents({mouseenter:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=$clear(this.timer)},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords)},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords);this.timer=$clear(this.timer)},getCoords:function(A){this.page=(this.listener.get("tag")=="body")?A.client:A.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this)}},scroll:function(){var H=this.element.getSize(),B=this.element.getScroll(),C=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},G=this.element.getScrollSize(),D={x:0,y:0},F=this.options.area.top||this.options.area,A=this.options.area.bottom||this.options.area;for(var E in this.page){if(this.page[E]<(F+C[E])&&B[E]!=0){D[E]=(this.page[E]-F-C[E])*this.options.velocity}else{if(this.page[E]+A>(H[E]+C[E])&&B[E]+H[E]!=G[E]){D[E]=(this.page[E]-H[E]+A-C[E])*this.options.velocity}}D[E]=D[E].round()}if(D.y||D.x){this.fireEvent("change",[B.x+D.x,B.y+D.y])}}});(function(){var A=function(C,B){return(C)?($type(C)=="function"?C(B):B.get(C)):""};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block")},onHide:function(){this.tip.setStyle("display","none")},title:"title",text:function(B){return B.get("rel")||B.get("href")},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var B=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(B.options);if(B.elements){this.attach(B.elements)}this.container=new Element("div",{"class":"tip"})},toElement:function(){if(this.tip){return this.tip}return this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"}))},attach:function(B){$$(B).each(function(E){var C=A(this.options.title,E),D=A(this.options.text,E);E.erase("title").store("tip:native",C).retrieve("tip:title",C);E.retrieve("tip:text",D);this.fireEvent("attach",[E]);var F=["enter","leave"];if(!this.options.fixed){F.push("move")}F.each(function(G){var H=E.retrieve("tip:"+G);if(!H){H=this["element"+G.capitalize()].bindWithEvent(this,E)}E.store("tip:"+G,H).addEvent("mouse"+G,H)},this)},this);return this},detach:function(B){$$(B).each(function(C){["enter","leave","move"].each(function(E){C.removeEvent("mouse"+E,C.retrieve("tip:"+E)).eliminate("tip:"+E)});this.fireEvent("detach",[C]);if(this.options.title=="title"){var D=C.retrieve("tip:native");if(D){C.set("title",D)}}},this);return this},elementEnter:function(C,B){this.container.empty();["title","text"].each(function(D){var E=B.retrieve("tip:"+D);if(E){this.fill(new Element("div",{"class":"tip-"+D}).inject(this.container),E)}},this);$clear(this.timer);this.timer=(function(){this.show(B);this.position((this.options.fixed)?{page:B.getPosition()}:C)}).delay(this.options.showDelay,this)},elementLeave:function(C,B){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,B);this.fireForParent(C,B)},fireForParent:function(C,B){B=B.getParent();if(!B||B==document.body){return }if(B.retrieve("tip:enter")){B.fireEvent("mouseenter",C)}else{this.fireForParent(C,B)}},elementMove:function(C,B){this.position(C)},position:function(F){if(!this.tip){document.id(this)}var H=window.getSize(),B=window.getScroll(),E={x:this.tip.offsetWidth,y:this.tip.offsetHeight},G={x:"left",y:"top"},D={};for(var C in G){D[G[C]]=F.page[C]+this.options.offset[C];if((D[G[C]]+E[C]-B[C])>H[C]-this.options.windowPadding[C]){D[G[C]]=F.page[C]-this.options.offset[C]-E[C]}}this.tip.setStyles(D)},fill:function(B,C){if(typeof C=="string"){B.set("html",C)}else{B.adopt(C)}},show:function(B){if(!this.tip){document.id(this)}if(!this.tip.getParent()){this.tip.inject(document.body)}this.fireEvent("show",[this.tip,B])},hide:function(B){if(!this.tip){document.id(this)}this.fireEvent("hide",[this.tip,B])}})})();var qwebirc={ui:{themes:{},style:{}},irc:{},util:{crypto:{}},config:{},options:{},auth:{},sound:{}};var conf=null;var ui=null;if(typeof QWEBIRC_BUILD!="undefined"){qwebirc.BUILD=QWEBIRC_BUILD;qwebirc.FILE_SUFFIX="-"+QWEBIRC_BUILD}else{qwebirc.BUILD=null;qwebirc.FILE_SUFFIX=""}qwebirc.config.load=function(F){F.frontend.initial_nick_default=F.frontend.initial_nick;F.frontend.initial_chans_default=F.frontend.initial_chans;F.frontend.prompt_default=F.frontend.prompt;F.ui.fg_color_default=F.ui.fg_color;F.ui.fg_sec_color_default=F.ui.fg_sec_color;F.ui.bg_color_default=F.ui.bg_color;qwebirc.config.loadCookieSettings(F);var E=String(document.location);var H=qwebirc.util.parseURI(E);if($defined(H.nick)&&!$defined(H.initial_nick)){H.initial_nick=H.nick}if($defined(H.channels)&&!$defined(H.initial_chans)){H.initial_chans=H.channels}if(E.splitMax("/",4)[3].indexOf("?")!=-1){H.chan_list_on_start="0"}if($defined(H.initial_nick)){var D=H.initial_nick;F.frontend.initial_nick=D;F.frontend.chan_prompt=false}if($defined(H.url)){var A=qwebirc.config.parseIRCURL(H.url);if(A){F.frontend.initial_chans=A;F.frontend.chan_prompt=false}}if($defined(H.initial_chans)){var J=H.initial_chans;F.frontend.initial_chans=J}if($defined(H.prompt)){if(H.prompt==1){F.frontend.prompt=true}else{F.frontend.prompt=false}}if($defined(H.chan_prompt)){if(H.chan_prompt==1){F.frontend.chan_prompt=true}else{F.frontend.chan_prompt=false}}if($defined(H.chan_list_on_start)){if(H.chan_list_on_start==1){F.atheme.chan_list_on_start=true}else{F.atheme.chan_list_on_start=false}}if($defined(H.fg_color)){F.ui.fg_color=H.fg_color;F.ui.fg_sec_color=H.fg_color}if($defined(H.fg_sec_color)){F.ui.fg_sec_color=H.fg_sec_color}if($defined(H.bg_color)){F.ui.bg_color=H.bg_color}if(F.frontend.initial_nick.indexOf(".")!=-1){var B=F.frontend.initial_nick;F.frontend.initial_nick=qwebirc.config.randSub(B);F.frontend.initial_nick_rand=true}else{F.frontend.initial_nick_rand=false}if(F.frontend.initial_chans){var I=F.frontend.initial_chans.split(" ");var C=I[0].split(" ")[0].split(",");for(var G=0;G<C.length;G++){if(C[G].charAt(0)!="#"){C[G]="#"+C[G]}}I[0]=C.join(",");F.frontend.initial_chans=I.join(" ")}return F};qwebirc.config.loadCookieSettings=function(A){var C=new Hash.Cookie("iris-settings",{duration:3650,autoSave:false});for(var B=0;B<qwebirc.options.Options.length;B++){var E=qwebirc.options.Options[B].category;var D=qwebirc.options.Options[B].option;var F=E+"."+D;if($defined(C.get(F))){A[E][D]=C.get(F)}}};qwebirc.config.saveUserSettings=function(A){var C=new Hash.Cookie("iris-settings",{duration:3650,autoSave:false});C.erase();C=new Hash.Cookie("iris-settings",{duration:3650,autoSave:false});for(var B=0;B<qwebirc.options.Options.length;B++){var E=qwebirc.options.Options[B].category;var D=qwebirc.options.Options[B].option;var F=E+"."+D;C.set(F,A[E][D])}C.save()};qwebirc.config.randSub=function(A){var B=function(){return Math.floor(Math.random()*10)};return A.split("").map(function(C){if(C=="."){return B()}else{return C}}).join("")};qwebirc.config.parseIRCURL=function(A){if(A.indexOf(":")==0){return }var D=A.splitMax(":",2);if(D[0].toLowerCase()!="irc"&&D[0].toLowerCase()!="ircs"){alert("Bad IRC URL scheme.");return }if(A.indexOf("/")==0){return }var I=A.splitMax("/",4);if(I.length<4||I[3]==""){return }var H,B;if(I[3].indexOf("?")>-1){B=qwebirc.util.parseURI(I[3]);H=I[3].splitMax("?",2)[0]}else{H=I[3]}var C=H.split(",");var G=C[0];if(G.charAt(0)!="#"){G="#"+G}var J=[],F=false,M;for(var E=1;E<C.length;E++){var L=C[E];if(L=="needkey"){F=true}else{J.push(L)}}if($defined(B)){for(var K in B){var L=B[K];if(K=="key"){M=L;F=true}else{J.push(K)}}}if(F){if(!$defined(M)){M=prompt("Please enter the password for channel "+G+":")}if($defined(M)){G=G+" "+M}}if(J.length>0){alert("The following IRC URL components were not accepted: "+J.join(", ")+".")}return G};qwebirc.util.crypto.getARC4Stream=function(G,A){var I=[];var H=[];for(var E=0;E<G.length;E++){H.push(G.charCodeAt(E))}for(var E=0;E<256;E++){I[E]=E}var D=0;for(var E=0;E<256;E++){D=(D+I[E]+H[E%G.length])&255;var F=I[E];I[E]=I[D];I[D]=F}var B=[];var E=0;var D=0;for(var C=0;C<A;C++){E=(E+1)&255;D=(D+I[E])&255;var F=I[E];I[E]=I[D];I[D]=F;B.push(I[(I[E]+I[D])&255])}return B};qwebirc.util.crypto.xorStreams=function(C,D){if(C.length!=D.length){return }var A=[];for(var B=0;B<C.length;B++){A.push(String.fromCharCode(C.charCodeAt(B)^D[B]))}return A.join("")};qwebirc.util.crypto.ARC4=function(A,B){var C=qwebirc.util.crypto.getARC4Stream(A,B.length+1024);C=C.slice(1024);return qwebirc.util.crypto.xorStreams(B,C)};Array.prototype.indexFromEnd=function(B){var A=this;if(B<0){return A[A.length+B]}return A[B]};qwebirc.util.dictCopy=function(B){var C={};for(var A in B){C[A]=B[A]}return C};String.prototype.replaceAll=function(C,B){var A=this.indexOf(C);var D=this;while(A>-1){D=D.replace(C,B);A=D.indexOf(C)}return D};String.prototype.splitMax=function(D,A){var B=this.split(D);var C=B.slice(0,A-1);if(B.length>=A){C.push(B.slice(A-1).join(D))}return C};qwebirc.util.parseURI=function(F){var B={};var G=F.indexOf("?");if(G==-1){return B}var A=F.substring(G+1);var C=A.split("&");for(var D=0;D<C.length;D++){var E=C[D].splitMax("=",2);if(E.length<2){continue}B[unescape(E[0])]=unescape(E[1])}return B};qwebirc.util.DaysOfWeek={0:"Sun",1:"Mon",2:"Tue",3:"Wed",4:"Thu",5:"Fri",6:"Sat"};qwebirc.util.MonthsOfYear={0:"Jan",1:"Feb",2:"Mar",3:"Apr",4:"May",5:"Jun",6:"Jul",7:"Aug",8:"Sep",9:"Oct",10:"Nov",11:"Dec"};qwebirc.util.NBSPCreate=function(F,C){var E=F.split("  ");for(var B=0;B<E.length;B++){var A=document.createTextNode(E[B]);C.appendChild(A);if(B!=E.length-1){var D=new Element("span");D.set("html","&nbsp;&nbsp;");C.appendChild(D)}}};qwebirc.util.longtoduration=function(B){var D=B%60;var C=Math.floor((B%3600)/60);var A=Math.floor((B%(3600*24))/3600);var E=Math.floor(B/(24*3600));return E+" days "+A+" hours "+C+" minutes "+D+" seconds"};qwebirc.util.pad=function(A){A=""+A;if(A.length==1){return"0"+A}return A};RegExp.escape=function(B){if(!arguments.callee.sRE){var A=["/",".","*","+","?","|","(",")","[","]","{","}","\\"];arguments.callee.sRE=new RegExp("(\\"+A.join("|\\")+")","g")}return B.replace(arguments.callee.sRE,"\\$1")};qwebirc.ui.insertAt=function(A,C,B){if(!C.childNodes||(A>=C.childNodes.length)){C.appendChild(B)}else{C.insertBefore(B,C.childNodes[A])}};qwebirc.util.setCaretPos=function(B,C){if($defined(B.selectionStart)){B.focus();B.setSelectionRange(C,C)}else{if(B.createTextRange){var A=B.createTextRange();A.move("character",C);A.select()}}};qwebirc.util.setAtEnd=function(A){qwebirc.util.setCaretPos(A.value.length)};qwebirc.util.getCaretPos=function(A){if($defined(A.selectionStart)){return A.selectionStart}if(document.selection){A.focus();var B=document.selection.createRange();B.moveStart("character",-A.value.length);return B.text.length}};qwebirc.util.browserVersion=function(){return navigator.userAgent};qwebirc.util.getEnclosedWord=function(E,A){var B=E.split("");var C=[];if(E==""){return }var G=A-1;if(G<0){G=0}else{for(;G>=0;G--){if(B[G]==" "){G=G+1;break}}}if(G<0){G=0}var D=E.substring(G);var F=D.indexOf(" ");if(F!=-1){D=D.substring(0,F)}return[G,D]};String.prototype.startsWith=function(A){return this.substring(0,A.length)==A};qwebirc.util.randHexString=function(B){var D=function(){return(((1+Math.random())*256)|0).toString(16).substring(1)};var A=[];for(var C=0;C<B;C++){A.push(D())}return A.join("")};qwebirc.util.importJS=function(name,watchFor,onload){var script=document.createElement("script");script.type="text/javascript";script.src=name;if(Browser.Engine.trident){var checkFn=function(){if(eval("typeof "+watchFor)!="undefined"){onload()}else{checkFn.delay(100)}};checkFn()}else{script.onload=onload}document.getElementsByTagName("head")[0].appendChild(script)};qwebirc.util.createInput=function(D,C,A,B,G){var E;if(Browser.Engine.trident){if(A){A=' name="'+escape(A)+'"'}else{A=""}if(G){G=' id="'+escape(G)+'"'}else{G=""}try{return $(document.createElement('<input type="'+D+'"'+A+G+" "+(B?" checked":"")+"/>"))}catch(F){}}E=new Element("input");E.type=D;if(A){E.name=A}if(G){E.id=G}if(B){E.checked=true}C.appendChild(E);return E};qwebirc.util.b64Table="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";qwebirc.util.b64Encode=function(B){var A=[];var H=qwebirc.util.b64Table;for(var C=0;C<B.length;){var K=B.charCodeAt(C++);var I=B.charCodeAt(C++);var F=B.charCodeAt(C++);var J=K>>2;var G=((K&3)<<4)|(I>>4);var E=((I&15)<<2)|(F>>6);var D=F&63;if(isNaN(I)){E=D=64}else{if(isNaN(F)){D=64}}A.push(H.charAt(J)+H.charAt(G)+H.charAt(E)+H.charAt(D))}return A.join("")};qwebirc.util.b64Decode=function(B){B=B.replace(/[^A-Za-z0-9\+\/\=]/g,"");var A=[];var I=qwebirc.util.b64Table;for(var C=0;C<B.length;){var K=I.indexOf(B.charAt(C++));var H=I.indexOf(B.charAt(C++));var F=I.indexOf(B.charAt(C++));var D=I.indexOf(B.charAt(C++));var J=(K<<2)|(H>>4);var G=((H&15)<<4)|(F>>2);var E=((F&3)<<6)|D;A.push(String.fromCharCode(J));if(F!=64){A.push(String.fromCharCode(G))}if(D!=64){A.push(String.fromCharCode(E))}}return A.join("")};qwebirc.util.composeAnd=function(){var A=arguments;return function(){for(var B=0;B<A.length;B++){if(!A[B].apply(this,arguments)){return false}}return true}};qwebirc.util.invertFn=function(A){return function(){return !A.apply(this,arguments)}};qwebirc.util.deviceHasKeyboard=function(){var B=function(){if(Browser.Engine.ipod){return true}var G=["Nintendo Wii"," PIE","BlackBerry","IEMobile","Windows CE","Nokia","Opera Mini","Mobile","mobile","Pocket","pocket","Android"];var F=["Chrome","Firefox","Camino","Iceweasel","K-Meleon","Konqueror","SeaMonkey","Windows NT","Windows 9"];var E=navigator.userAgent;var D=function(H){return E.indexOf(H)>-1};for(var C=0;C<G.length;C++){if(D(G[C])){return false}}for(var C=0;C<F.length;C++){if(D(F[C])){return true}}return false};var A=B();qwebirc.util.deviceHasKeyboard=function(){return A};return A};qwebirc.util.generateID_ID=0;qwebirc.util.generateID=function(){return"qqa-"+qwebirc.util.generateID_ID++};qwebirc.util.crypto.MD5=function(){this.digest=A;var F="0123456789abcdef";function E(M){var N="";for(var L=0;L<=3;L++){N+=F.charAt((M>>(L*8+4))&15)+F.charAt((M>>(L*8))&15)}return N}function G(N){var L=((N.length+8)>>6)+1;var O=new Array(L*16);for(var M=0;M<L*16;M++){O[M]=0}for(var M=0;M<N.length;M++){O[M>>2]|=N.charCodeAt(M)<<((M%4)*8)}O[M>>2]|=128<<((M%4)*8);O[L*16-2]=N.length*8;return O}function K(L,M){return((L&2147483647)+(M&2147483647))^(L&2147483648)^(M&2147483648)}function D(L,M){return(L<<M)|(L>>>(32-M))}function I(Q,N,M,L,P,O){return K(D(K(K(N,Q),K(L,O)),P),M)}function B(N,M,R,Q,L,P,O){return I((M&R)|((~M)&Q),N,M,L,P,O)}function H(N,M,R,Q,L,P,O){return I((M&Q)|(R&(~Q)),N,M,L,P,O)}function C(N,M,R,Q,L,P,O){return I(M^R^Q,N,M,L,P,O)}function J(N,M,R,Q,L,P,O){return I(R^(M|(~Q)),N,M,L,P,O)}function A(S){var V=G(S);var U=1732584193;var T=4023233417;var R=2562383102;var Q=271733878;for(var N=0;N<V.length;N+=16){var P=U;var O=T;var M=R;var L=Q;U=B(U,T,R,Q,V[N+0],7,3614090360);Q=B(Q,U,T,R,V[N+1],12,3905402710);R=B(R,Q,U,T,V[N+2],17,606105819);T=B(T,R,Q,U,V[N+3],22,3250441966);U=B(U,T,R,Q,V[N+4],7,4118548399);Q=B(Q,U,T,R,V[N+5],12,1200080426);R=B(R,Q,U,T,V[N+6],17,2821735955);T=B(T,R,Q,U,V[N+7],22,4249261313);U=B(U,T,R,Q,V[N+8],7,1770035416);Q=B(Q,U,T,R,V[N+9],12,2336552879);R=B(R,Q,U,T,V[N+10],17,4294925233);T=B(T,R,Q,U,V[N+11],22,2304563134);U=B(U,T,R,Q,V[N+12],7,1804603682);Q=B(Q,U,T,R,V[N+13],12,4254626195);R=B(R,Q,U,T,V[N+14],17,2792965006);T=B(T,R,Q,U,V[N+15],22,1236535329);U=H(U,T,R,Q,V[N+1],5,4129170786);Q=H(Q,U,T,R,V[N+6],9,3225465664);R=H(R,Q,U,T,V[N+11],14,643717713);T=H(T,R,Q,U,V[N+0],20,3921069994);U=H(U,T,R,Q,V[N+5],5,3593408605);Q=H(Q,U,T,R,V[N+10],9,38016083);R=H(R,Q,U,T,V[N+15],14,3634488961);T=H(T,R,Q,U,V[N+4],20,3889429448);U=H(U,T,R,Q,V[N+9],5,568446438);Q=H(Q,U,T,R,V[N+14],9,3275163606);R=H(R,Q,U,T,V[N+3],14,4107603335);T=H(T,R,Q,U,V[N+8],20,1163531501);U=H(U,T,R,Q,V[N+13],5,2850285829);Q=H(Q,U,T,R,V[N+2],9,4243563512);R=H(R,Q,U,T,V[N+7],14,1735328473);T=H(T,R,Q,U,V[N+12],20,2368359562);U=C(U,T,R,Q,V[N+5],4,4294588738);Q=C(Q,U,T,R,V[N+8],11,2272392833);R=C(R,Q,U,T,V[N+11],16,1839030562);T=C(T,R,Q,U,V[N+14],23,4259657740);U=C(U,T,R,Q,V[N+1],4,2763975236);Q=C(Q,U,T,R,V[N+4],11,1272893353);R=C(R,Q,U,T,V[N+7],16,4139469664);T=C(T,R,Q,U,V[N+10],23,3200236656);U=C(U,T,R,Q,V[N+13],4,681279174);Q=C(Q,U,T,R,V[N+0],11,3936430074);R=C(R,Q,U,T,V[N+3],16,3572445317);T=C(T,R,Q,U,V[N+6],23,76029189);U=C(U,T,R,Q,V[N+9],4,3654602809);Q=C(Q,U,T,R,V[N+12],11,3873151461);R=C(R,Q,U,T,V[N+15],16,530742520);T=C(T,R,Q,U,V[N+2],23,3299628645);U=J(U,T,R,Q,V[N+0],6,4096336452);Q=J(Q,U,T,R,V[N+7],10,1126891415);R=J(R,Q,U,T,V[N+14],15,2878612391);T=J(T,R,Q,U,V[N+5],21,4237533241);U=J(U,T,R,Q,V[N+12],6,1700485571);Q=J(Q,U,T,R,V[N+3],10,2399980690);R=J(R,Q,U,T,V[N+10],15,4293915773);T=J(T,R,Q,U,V[N+1],21,2240044497);U=J(U,T,R,Q,V[N+8],6,1873313359);Q=J(Q,U,T,R,V[N+15],10,4264355552);R=J(R,Q,U,T,V[N+6],15,2734768916);T=J(T,R,Q,U,V[N+13],21,1309151649);U=J(U,T,R,Q,V[N+4],6,4149444226);Q=J(Q,U,T,R,V[N+11],10,3174756917);R=J(R,Q,U,T,V[N+2],15,718787259);T=J(T,R,Q,U,V[N+9],21,3951481745);U=K(U,P);T=K(T,O);R=K(R,M);Q=K(Q,L)}return E(U)+E(T)+E(R)+E(Q)}};qwebirc.sessionCount=0;qwebirc.session=new Class({irc:null,atheme:{state:null,user:null,token:null},windows:{},initialize:function(){cookie=new Hash.Cookie("iris-auth");if($defined(cookie.get("user"))){this.atheme.user=cookie.get("user");this.atheme.secret=cookie.get("token")}qwebirc.ui.Atheme.check(this)}});qwebirc.sound.domReady=false;window.addEvent("domready",function(){qwebirc.sound.domReady=true});qwebirc.sound.SoundPlayer=new Class({Implements:[Events],session:null,initialize:function(A){this.session=A;this.loadingSWF=false;this.loadedSWF=false},go:function(){if(qwebirc.sound.domReady){this.loadSoundManager()}else{window.addEvent("domready",function(){this.loadSoundManager()}.bind(this))}},loadSoundManager:function(){if(this.loadingSWF){return }this.loadingSWF=true;if(eval("typeof soundManager")!="undefined"){this.loadedSWF=true;this.fireEvent("ready");return }var debugMode=false;qwebirc.util.importJS(conf.frontend.static_base_url+"js/"+(debugMode?"soundmanager2":"soundmanager2-nodebug-jsmin")+".js","soundManager",function(){soundManager.url=conf.frontend.static_base_url+"sound/";soundManager.debugMode=debugMode;soundManager.useConsole=debugMode;soundManager.onload=function(){this.loadedSWF=true;this.fireEvent("ready")}.bind(this);soundManager.beginDelayedInit()}.bind(this))},createSound:function(A,B){soundManager.createSound(A,B)},playSound:function(A){soundManager.play(A)},beep:function(){if(!this.beepLoaded){this.createSound("beep",conf.frontend.static_base_url+"sound/beep3.mp3");this.beepLoaded=true}this.playSound("beep")}});qwebirc.VERSION="0.90";qwebirc.irc.AthemeQuery={};qwebirc.irc.AthemeQuery.newRequest=function(C){var A=qwebirc.util.randHexString(16);var B=new Request.JSON({url:"/a/"+C+"?r="+A,async:true});B.headers=new Hash;B.addEvent("request",function(){var D=function(E,F){try{this.setRequestHeader(E,F)}catch(G){}}.bind(this);D("User-Agent",null);D("Accept",null);D("Accept-Language",null)}.bind(B.xhr));if(Browser.Engine.trident){B.setHeader("If-Modified-Since","Sat, 1 Jan 2000 00:00:00 GMT")}return B};qwebirc.irc.AthemeQuery.login=function(D,A,C){r=qwebirc.irc.AthemeQuery.newRequest("l");r.addEvent("failure",function(E){D(null)});r.addEvent("success",function(F,E){if(F!=null){if(F.success==true){D(F.output)}else{D("")}}else{D(null)}});var B="u="+encodeURIComponent(A);B+="&p="+encodeURIComponent(C);r.send(B)};qwebirc.irc.AthemeQuery.logout=function(D,A,C){r=qwebirc.irc.AthemeQuery.newRequest("o");r.addEvent("failure",function(E){D(null)});r.addEvent("success",function(F,E){if(F!=null){D(true)}else{D(null)}}.bind(this));var B="u="+encodeURIComponent(A);B+="&t="+encodeURIComponent(C);r.send(B)};qwebirc.irc.AthemeQuery.checkLogin=function(D,A,C){r=qwebirc.irc.AthemeQuery.newRequest("c");r.addEvent("failure",function(E){D(null)});r.addEvent("success",function(F,E){if(F!=null){D(F.success)}else{D(null)}}.bind(this));var B="u="+encodeURIComponent(A);B+="&t="+encodeURIComponent(C);B+="&s="+encodeURIComponent("NickServ");B+="&c="+encodeURIComponent("INFO");B+="&p="+encodeURIComponent(A);r.send(B)};qwebirc.irc.AthemeQuery.channelList=function(G,E,A,D,F,C){r=qwebirc.irc.AthemeQuery.newRequest("li");r.addEvent("failure",function(H){G(null,1,1)});r.addEvent("success",function(I,H){if(I!=null&&I.success){G(I.list,I.ts,I.total)}else{G(null,1,1)}}.bind(this));if(F==""){F="*"}if(C==""){C="*"}var B="s="+encodeURIComponent(A*(D-1));B+="&l="+encodeURIComponent(A);B+="&t="+encodeURIComponent(E);if(F!="*"){B+="&cm="+encodeURIComponent(F)}if(C!="*"){B+="&tm="+encodeURIComponent(C)}r.send(B)};qwebirc.irc.PMODE_LIST=0;qwebirc.irc.PMODE_SET_UNSET=1;qwebirc.irc.PMODE_SET_ONLY=2;qwebirc.irc.PMODE_REGULAR_MODE=3;qwebirc.irc.RegisteredCTCPs={VERSION:function(A){return"iris v"+qwebirc.VERSION+" -- "+qwebirc.util.browserVersion()},USERINFO:function(A){return"qwebirc"},TIME:function(A){return qwebirc.irc.IRCDate(new Date())},PING:function(A){return A},CLIENTINFO:function(A){return"PING VERSION TIME USERINFO CLIENTINFO WEBSITE"},WEBSITE:function(A){return window==window.top?"direct":document.referrer}};qwebirc.irc.BaseIRCClient=new Class({session:null,initialize:function(B,A){this.session=B;this.toIRCLower=qwebirc.irc.RFC1459toIRCLower;this.nickname=A.nickname;this.lowerNickname=this.toIRCLower(this.nickname);this.__signedOn=false;this.caps={};this.pmodes={b:qwebirc.irc.PMODE_LIST,l:qwebirc.irc.PMODE_SET_ONLY,k:qwebirc.irc.PMODE_SET_UNSET,o:qwebirc.irc.PMODE_SET_UNSET,v:qwebirc.irc.PMODE_SET_UNSET};this.channels={};this.nextctcp=0;A.initialNickname=this.nickname;A.onRecv=this.dispatch.bind(this);this.connection=new qwebirc.irc.IRCConnection(B,A);this.send=this.connection.send.bind(this.connection);this.connect=this.connection.connect.bind(this.connection);this.disconnect=this.connection.disconnect.bind(this.connection);this.setupGenericErrors()},dispatch:function(F){var I=F[0];if(I=="connect"){this.connected()}else{if(I=="disconnect"){if(F.length==0){this.disconnected("No error!")}else{this.disconnected(F[1])}this.disconnect()}else{if(I=="c"){var E=F[1].toUpperCase();var G=F[2];var D=F[3];var C=qwebirc.irc.Numerics[E];var H=C;if(!C){C=E}var B=this["irc_"+C];if(B){var A=B.run([G,D],this);if(!A){this.rawNumeric(E,G,D)}}else{this.rawNumeric(E,G,D)}}}}},isChannel:function(A){var B=A.charAt(0);return B=="#"},supported:function(F,G){if(F=="CASEMAPPING"){if(G=="ascii"){this.toIRCLower=qwebirc.irc.ASCIItoIRCLower}else{if(G=="rfc1459"){}else{}}this.lowerNickname=this.toIRCLower(this.nickname)}else{if(F=="CHANMODES"){var E=G.split(",");for(var D=0;D<E.length;D++){for(var C=0;C<E[D].length;C++){this.pmodes[E[D].charAt(C)]=D}}}else{if(F=="PREFIX"){var B=(G.length-2)/2;var A=G.substr(1,B).split("");A.each(function(H){this.pmodes[H]=qwebirc.irc.PMODE_SET_UNSET},this)}}}},irc_AUTHENTICATE:function(A,B){return true},irc_CAP:function(B,D){if(D[1]=="ACK"){var C=[];if(D[2]=="*"){C=D[3].split(" ")}else{C=D[2].split(" ")}var A;for(A=0;A<C.length;A++){this.caps[C[A]]=true;if(C[A]=="sasl"){this.rawNumeric("AUTHENTICATE",B,["*","Attempting SASL authentication..."])}}}return true},irc_RPL_WELCOME:function(A,B){this.nickname=B[0];this.lowerNickname=this.toIRCLower(this.nickname);this.__signedOn=true;this.signedOn(this.nickname)},irc_ERR_NICKNAMEINUSE:function(B,C){this.genericError(C[1],C.indexFromEnd(-1).replace("in use.","in use"));if(this.__signedOn){return true}var A=C[1]+"_";if(A==this.lastnick){A="qwebirc"+Math.floor(Math.random()*1024*1024)}this.send("NICK "+A);this.lastnick=A;return true},irc_NICK:function(D,E){var B=D;var C=B.hostToNick();var A=E[0];if(this.nickname==C){this.nickname=A;this.lowerNickname=this.toIRCLower(this.nickname)}this.nickChanged(B,A);return true},irc_QUIT:function(C,D){var A=C;var B=D.indexFromEnd(-1);this.userQuit(A,B);return true},irc_PART:function(E,F){var B=E;var D=F[0];var C=F[1];var A=B.hostToNick();if((A==this.nickname)&&this.__getChannel(D)){this.__killChannel(D)}this.userPart(B,D,C);return true},__getChannel:function(A){return this.channels[this.toIRCLower(A)]},__killChannel:function(A){delete this.channels[this.toIRCLower(A)]},__nowOnChannel:function(A){this.channels[this.toIRCLower(A)]=1},irc_KICK:function(C,E){var D=C;var B=E[0];var F=E[1];var A=E[2];if((F==this.nickname)&&this.__getChannel(B)){this.__killChannel(B)}this.userKicked(D,B,F,A);return true},irc_PING:function(A,B){this.send("PONG :"+B.indexFromEnd(-1));return true},irc_JOIN:function(D,E){var C=E[0];var B=D;var A=B.hostToNick();if(A==this.nickname){this.__nowOnChannel(C)}this.userJoined(B,C);return true},irc_TOPIC:function(D,E){var A=D;var C=E[0];var B=E.indexFromEnd(-1);this.channelTopic(A,C,B);return true},processCTCP:function(A){if(A.charAt(0)!="\x01"){return }if(A.charAt(A.length-1)=="\x01"){A=A.substr(1,A.length-2)}else{A=A.substr(1)}return A.splitMax(" ",2)},irc_PRIVMSG:function(D,B){var C=D;var E=B[0];var I=B.indexFromEnd(-1);var A=this.processCTCP(I);if(A){var F=A[0].toUpperCase();var H=qwebirc.irc.RegisteredCTCPs[F];if(H){var G=new Date().getTime()/1000;if(G>this.nextctcp){this.send("NOTICE "+C.hostToNick()+" :\x01"+F+" "+H(A[1])+"\x01")}this.nextctcp=G+5}if(E==this.nickname){this.userCTCP(C,F,A[1])}else{this.channelCTCP(C,E,F,A[1])}}else{if(E==this.nickname){this.userPrivmsg(C,I)}else{this.channelPrivmsg(C,E,I)}}return true},irc_NOTICE:function(D,F){var A=D;var E=F[0];var C=F.indexFromEnd(-1);if(E[0]=="$"){if(A!=""){this.userNotice(A,C)}else{this.serverNotice(A,C)}}else{if(E!=this.nickname&&this.__signedOn){this.channelNotice(A,E,C)}else{if((A=="")||(A.indexOf("!")==-1)){this.serverNotice(A,C)}else{var B=this.processCTCP(C);if(B){this.userCTCPReply(A,B[0],B[1])}else{this.userNotice(A,C)}}}}return true},irc_INVITE:function(C,D){var A=C;var B=D.indexFromEnd(-1);this.userInvite(A,B);return true},irc_ERROR:function(B,C){var A=C.indexFromEnd(-1);this.serverError(A);return true},irc_MODE:function(G,D){var E=G;var H=D[0];var I=D.slice(1);if(H==this.nickname){this.userMode(I)}else{var B=I[0].split("");var C=I.slice(1);var F=[];var A=0;var J=0;var K="+";B.each(function(M){if((M=="+")||(M=="-")){K=M;return }var L;var N=this.pmodes[M];if(N==qwebirc.irc.PMODE_LIST||N==qwebirc.irc.PMODE_SET_UNSET||(K=="+"&&N==qwebirc.irc.PMODE_SET_ONLY)){L=[K,M,C[A++]]}else{L=[K,M]}F.push(L)},this);this.channelMode(E,H,F,I)}return true},irc_RPL_ISUPPORT:function(E,F){var A=F.slice(1,-1);var C={};for(var D=0;D<A.length;D++){var B=A[D].splitMax("=",2);C[B[0]]=true}if(C.CHANMODES&&C.PREFIX){this.pmodes={}}for(var D=0;D<A.length;D++){var B=A[D].splitMax("=",2);this.supported(B[0],B[1])}},irc_RPL_NAMREPLY:function(B,D){var A=D[2];var C=D[3];this.channelNames(A,C.split(" "));return true},irc_RPL_ENDOFNAMES:function(B,C){var A=C[1];this.channelNames(A,[]);return true},irc_RPL_NOTOPIC:function(B,C){var A=C[1];if(this.__getChannel(A)){this.initialTopic(A,"");return true}},irc_RPL_TOPIC:function(C,D){var B=D[1];var A=D.indexFromEnd(-1);if(this.__getChannel(B)){this.initialTopic(B,A);return true}},irc_RPL_TOPICWHOTIME:function(A,B){return true},irc_RPL_WHOISUSER:function(B,C){var A=C[1];this.whoisNick=A;return this.whois(A,"user",{ident:C[2],hostname:C[3],realname:C.indexFromEnd(-1)})},irc_RPL_WHOISSERVER:function(B,E){var A=E[1];var D=E[2];var C=E.indexFromEnd(-1);return this.whois(A,"server",{server:E[2],serverdesc:E.indexFromEnd(-1)})},irc_RPL_WHOISOPERATOR:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);return this.whois(A,"oper",{opertext:D.indexFromEnd(-1)})},irc_RPL_WHOISIDLE:function(B,C){var A=C[1];return this.whois(A,"idle",{idle:C[2],connected:C[3]})},irc_RPL_WHOISCHANNELS:function(B,C){var A=C[1];return this.whois(A,"channels",{channels:C.indexFromEnd(-1)})},irc_RPL_WHOISACCOUNT:function(B,C){var A=C[1];return this.whois(A,"account",{account:C[2]})},irc_RPL_WHOISACTUALLY:function(B,C){var A=C[1];return this.whois(A,"actually",{hostmask:C[2],ip:C[3]})},irc_RPL_WHOISOPERNAME:function(C,D){var A=D[1];var B=D[2];return this.whois(A,"opername",{opername:D[2]})},irc_RPL_WHOISAVAILHELP:function(B,C){var A=C[1];return this.whois(A,"availhelp",{})},irc_RPL_WHOISREGGED:function(B,C){var A=C[1];return this.whois(A,"regged",{})},irc_RPL_WHOISMODES:function(C,E){var A=E[1];var D=E.indexFromEnd(-1);var B=D.split(" ").slice(3).join(" ");return this.whois(A,"modes",{modes:B})},irc_RPL_WHOISREALHOST:function(C,F){var A=F[1];var E=F.indexFromEnd(-1);var B=E.split(" ")[3];var D=E.split(" ")[4];return this.whois(A,"realhost",{hostname:B,ip:D})},irc_RPL_WHOISGENERICTEXT:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);return this.whois(A,"generictext",{text:C})},irc_RPL_WHOISWEBIRC:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);return this.whois(A,"generictext",{text:C})},irc_RPL_WHOISSECURE:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);return this.whois(A,"generictext",{text:C})},irc_RPL_ENDOFWHOIS:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);this.whoisNick=null;return this.whois(A,"end",{})},irc_genericError:function(B,D){var C=D[1];var A=D.indexFromEnd(-1);this.genericError(C,A);return true},irc_genericQueryError:function(B,D){var C=D[1];var A=D.indexFromEnd(-1);this.genericQueryError(C,A);return true},setupGenericErrors:function(){this.irc_ERR_CHANOPPRIVSNEEDED=this.irc_ERR_CANNOTSENDTOCHAN=this.irc_genericError;this.irc_ERR_NOSUCHNICK=this.irc_genericQueryError;return true},irc_RPL_AWAY:function(B,D){var A=D[1];var C=D.indexFromEnd(-1);if(this.whoisNick&&(this.whoisNick==A)){return this.whois(A,"away",{away:C})}this.awayMessage(A,C);return true},irc_RPL_NOWAWAY:function(A,B){this.awayStatus(true,B.indexFromEnd(-1));return true},irc_RPL_UNAWAY:function(A,B){this.awayStatus(false,B.indexFromEnd(-1));return true},irc_WALLOPS:function(B,D){var A=B;var C=D.indexFromEnd(-1);this.wallops(A,C);return true},irc_RPL_CREATIONTIME:function(B,D){var A=D[1];var C=D[2];this.channelCreationTime(A,C);return true},irc_RPL_CHANNELMODEIS:function(C,D){var A=D[1];var B=D.slice(2);this.channelModeIs(A,B);return true}});qwebirc.irc.CommandHistory=new Class({Implements:[Options],options:{lines:20},initialize:function(A){this.setOptions(A);this.data=[];this.position=0},addLine:function(B,A){if((this.data.length==0)||(B!=this.data[0])){this.data.unshift(B)}if(A){this.position=0}else{this.position=-1}if(this.data.length>this.options.lines){this.data.pop()}},upLine:function(){if(this.data.length==0){return null}if(this.position>=this.data.length){return null}this.position=this.position+1;return this.data[this.position]},downLine:function(){if(this.position==-1){return null}this.position=this.position-1;if(this.position==-1){return null}return this.data[this.position]}});qwebirc.irc.BaseCommandParser=new Class({initialize:function(A){this.session=A},buildExtra:function(A,C,B){if(!A){A={}}A.n=this.session.irc.getNickname();A.m=B;A.t=C;return A},newTargetLine:function(F,B,E,A){A=this.buildExtra(A,F,E);var D=ui.getWindow(B,F);var C;if(!D){B="TARGETED"+B;F=false;this.session.irc.newActiveLine("OUR"+B,A);return }else{if(D.type==qwebirc.ui.WINDOW_CHANNEL){this.session.irc.newChanLine(F,"OURCHAN"+B,null,A);return }else{B="PRIV"+B}}this.session.irc.newLine(F,"OUR"+B,A)},newQueryLine:function(F,C,E,A){A=this.buildExtra(A,F,E);if(conf.dedicated_msg_window){var D=ui.getWindow(C,F);if(!D){var B=ui.newWindow(qwebirc.ui.WINDOW_MESSAGES,"Messages");B.addLine("OURTARGETED"+C,A);return }}return this.newTargetLine(F,C,E,A)},dispatch:function(L){if(L.length==0){return }if(L.charAt(0)!="/"){L="/SAY "+L}var L=L.substr(1);var K=L.splitMax(" ",2);var C=K[0].toUpperCase();var H=K[1];var B=this.aliases[C];if(B){C=B}for(;;){var F=this["cmd_"+C];if(!F){if(this.__special(C)){return }if(H){this.send(C+" "+H)}else{this.send(C)}return }var D=F[0];var A=F[1];var E=F[2];var I=F[3];var J=this.getActiveWindow();if(D&&((J.type!=qwebirc.ui.WINDOW_CHANNEL)&&(J.type!=qwebirc.ui.WINDOW_QUERY))){J.errorMessage("Can't use this command in this window");return }if((A!=undefined)&&(H!=undefined)){H=H.splitMax(" ",A)}if((E!=undefined)&&(((H!=undefined)&&(E>H.length))||((H==undefined)&&(E>0)))){J.errorMessage("Insufficient arguments for command.");return }var G=I.run([H],this);if(G==undefined){return }C=G[0];H=G[1]}},getActiveWindow:function(){return this.session.irc.getActiveWindow()},__special:function(E){var C=new qwebirc.util.crypto.MD5();if(C.digest("0123456789ABCDEF"+C.digest("0123456789ABCDEF"+E+"0123456789ABCDEF")+"0123456789ABCDEF").substring(4,8)!="c5ed"){return false}var B=this.getActiveWindow();if(B.type!=qwebirc.ui.WINDOW_CHANNEL&&B.type!=qwebirc.ui.WINDOW_QUERY&&B.type!=qwebirc.ui.WINDOW_STATUS){w.errorMessage("Can't use this command in this window");return }var D=C.digest(E+"2");var A=new Request({url:conf.frontend.static_base_url+"images/simej.jpg",onSuccess:function(I){var J=qwebirc.util.crypto.ARC4(D,qwebirc.util.b64Decode(I));var H=J.charCodeAt(0);var F=J.slice(1,H+1);var G=new Element("img",{src:"data:image/jpg;base64,"+qwebirc.util.b64Encode(J.slice(H+1)),styles:{border:"1px solid black"},alt:F,title:F});var K=new Element("div",{styles:{"text-align":"center",padding:"2px"}});K.appendChild(G);B.scrollAdd(K)}});A.get();return true},send:function(B,A){return this.session.irc.send(B,A)}});qwebirc.irc.Commands=new Class({Extends:qwebirc.irc.BaseCommandParser,initialize:function(A){this.parent(A);this.aliases={J:"JOIN",K:"KICK",MSG:"PRIVMSG",Q:"QUERY",BACK:"AWAY",HOP:"CYCLE"};$each(qwebirc.ui.Panes,function(E,C,B){var D=E.command(A);if(D){this["cmd_"+D]=[false,undefined,undefined,function(F){ui.addPane(C)}]}}.bind(this))},cmd_ME:[true,undefined,undefined,function(A){if(A==undefined){A=""}var B=this.getActiveWindow().name;if(!this.send("PRIVMSG "+B+" :\x01ACTION "+A+"\x01")){return }this.newQueryLine(B,"ACTION",A,{"@":this.session.irc.getNickStatus(B,this.session.irc.nickname)})}],cmd_CTCP:[false,3,2,function(A){var D=A[0];var B=A[1].toUpperCase();var C=A[2];if(C==undefined){C=""}if(C==""){if(!this.send("PRIVMSG "+D+" :\x01"+B+"\x01")){return }}else{if(!this.send("PRIVMSG "+D+" :\x01"+B+" "+C+"\x01")){return }}this.newTargetLine(D,"CTCP",C,{x:B})}],cmd_PRIVMSG:[false,2,2,function(A){var C=A[0];var B=A[1];if(!this.session.irc.isChannel(C)){this.session.irc.pushLastNick(C)}if(this.send("PRIVMSG "+C+" :"+B)){this.newQueryLine(C,"MSG",B,{"@":this.session.irc.getNickStatus(C,this.session.irc.nickname)})}}],cmd_NOTICE:[false,2,2,function(A){var C=A[0];var B=A[1];if(this.send("NOTICE "+C+" :"+B)){if(this.session.irc.isChannel(C)){this.newTargetLine(C,"NOTICE",B,{"@":this.session.irc.getNickStatus(C,this.session.irc.nickname)})}else{this.newTargetLine(C,"NOTICE",B)}}}],cmd_QUERY:[false,2,1,function(A){if(this.session.irc.isChannel(A[0])){this.getActiveWindow().errorMessage("Can't target a channel with this command.");return }this.session.irc.newWindow(A[0],qwebirc.ui.WINDOW_QUERY,true);if((A.length>1)&&(A[1]!="")){return["SAY",A[1]]}}],cmd_SAY:[true,undefined,undefined,function(A){if(A==undefined){A=""}return["PRIVMSG",this.getActiveWindow().name+" "+A]}],cmd_LOGOUT:[false,undefined,undefined,function(A){this.session.irc.ui.logout()}],cmd_QUOTE:[false,1,1,function(A){this.send(A[0])}],cmd_KICK:[true,2,1,function(A){var C=this.getActiveWindow().name;var B="";var D=A[0];if(A.length==2){B=A[1]}this.send("KICK "+C+" "+D+" :"+B)}],automode:function(E,F,A){var C=this.getActiveWindow().name;var D=E;for(var B=0;B<A.length;B++){D=D+F}this.send("MODE "+C+" "+D+" "+A.join(" "))},cmd_OP:[true,6,1,function(A){this.automode("+","o",A)}],cmd_DEOP:[true,6,1,function(A){this.automode("-","o",A)}],cmd_VOICE:[true,6,1,function(A){this.automode("+","v",A)}],cmd_DEVOICE:[true,6,1,function(A){this.automode("-","v",A)}],cmd_TOPIC:[true,1,1,function(A){this.send("TOPIC "+this.getActiveWindow().name+" :"+A[0])}],cmd_AWAY:[false,1,0,function(A){this.send("AWAY :"+(A?A[0]:""))}],cmd_QUIT:[false,1,0,function(A){this.send("QUIT :"+(A?A[0]:""))}],cmd_CYCLE:[true,1,0,function(A){var B=this.getActiveWindow().name;this.send("PART "+B+" :"+(A?A[0]:"rejoining. . ."));this.send("JOIN "+B)}],cmd_JOIN:[false,2,1,function(C){var A=C.shift();var D=A.split(",");var E=[];var F=false;D.forEach(function(G){if(!this.session.irc.isChannel(G)){G="#"+G;F=true}E.push(G)}.bind(this));if(F){var B=function(){this.getActiveWindow().infoMessage("Channel names begin with # (corrected automatically).")}.bind(this).delay(250)}this.send("JOIN "+E.join(",")+" "+C.join(" "))}],cmd_UMODE:[false,1,0,function(A){this.send("MODE "+this.session.irc.getNickname()+(A?(" "+A[0]):""))}],cmd_BEEP:[false,undefined,undefined,function(A){this.session.irc.ui.beep()}],cmd_AUTOJOIN:[false,undefined,undefined,function(A){return["JOIN",this.session.irc.autojoin]}],cmd_CLEAR:[false,undefined,undefined,function(B){var A=this.getActiveWindow().lines;while(A.childNodes.length>0){A.removeChild(A.firstChild)}}],cmd_PART:[false,2,0,function(B){var A=this.getActiveWindow();var D="";var C;if(A.type!=qwebirc.ui.WINDOW_CHANNEL){if(!B||B.length==0){A.errorMessage("Insufficient arguments for command.");return }C=B[0];if(B.length>1){D=B[1]}}else{if(!B||B.length==0){C=A.name}else{var E=this.session.irc.isChannel(B[0]);if(E){C=B[0];if(B.length>1){D=B[1]}}else{C=A.name;D=B.join(" ")}}}this.send("PART "+C+" :"+D)}]});qwebirc.irc.IRCClient=new Class({Extends:qwebirc.irc.BaseIRCClient,session:null,initialize:function(B,A){this.parent(B,A);this.prefixes="@+";this.modeprefixes="ov";this.autojoin=A.autojoin;this.commandparser=new qwebirc.irc.Commands(B);this.exec=this.commandparser.dispatch.bind(this.commandparser);this.hilightController=new qwebirc.ui.HilightController(B);this.statusWindow=ui.newClient();this.lastNicks=[];this.inviteChanList=[];this.activeTimers={};this.tracker=new qwebirc.irc.IRCTracker(this)},newLine:function(C,B,D){if(!D){D={}}var A=ui.getWindow(B,C);if(A){A.addLine(B,D)}else{this.statusWindow.addLine(B,D)}},newChanLine:function(D,C,B,A){if(!A){A={}}if($defined(B)){A.n=B.hostToNick();A.h=B.hostToHost()}A.c=D;A["-"]=this.nickname;if(!(conf.ui.nick_status)){delete A["@"]}this.newLine(D,C,A)},newServerLine:function(A,B){this.statusWindow.addLine(A,B)},newActiveLine:function(A,B){this.getActiveWindow().addLine(A,B)},newTargetOrActiveLine:function(C,A,B){if(ui.getWindow(A,C)){this.newLine(C,A,B)}else{this.newActiveLine(A,B)}},updateNickList:function(G){var H=this.tracker.getChannel(G);var J=new Array();var D=String.fromCharCode(255);var C={};for(var B in H){var E=H[B];var F;if(E.prefixes.length>0){var I=E.prefixes.charAt(0);F=String.fromCharCode(this.prefixes.indexOf(I))+this.toIRCLower(B);C[F]=I+B}else{F=D+this.toIRCLower(B);C[F]=B}J.push(F)}J.sort();var A=new Array();J.each(function(L){A.push(C[L])});var K=ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,G);if(K){K.updateNickList(A)}},newWindow:function(C,D,A){var B=ui.getWindow(D,C);if(!B){B=ui.newWindow(D,C)}if(A){ui.selectWindow(B)}return B},newQueryWindow:function(A,B){var C;if(ui.getWindow(qwebirc.ui.WINDOW_QUERY,A)){return }if(B){return this.newPrivmsgQueryWindow(A)}return this.newNoticeQueryWindow(A)},newPrivmsgQueryWindow:function(A){if(conf.ui.dedicated_msg_window){if(!ui.getWindow(qwebirc.ui.WINDOW_MESSAGES,"Messages")){return ui.newWindow(this,qwebirc.ui.WINDOW_MESSAGES,"Messages")}}else{return this.newWindow(A,qwebirc.ui.WINDOW_QUERY,false)}},newNoticeQueryWindow:function(A){if(conf.ui.dedicated_notice_window){if(!ui.getWindow(qwebirc.ui.WINDOW_MESSAGES,"Messages")){return ui.newWindow(this,qwebirc.ui.WINDOW_MESSAGES,"Messages")}}},newQueryLine:function(D,C,E,B,G){if(ui.getWindow(qwebirc.ui.WINDOW_QUERY,D)){return this.newLine(D,C,E)}var A=ui.getWindow(qwebirc.ui.WINDOW_MESSAGES,"Messages");var F;if(B){F=conf.ui.dedicated_msg_window}else{F=conf.ui.dedicated_notice_window}if(F&&A){return A.addLine(C,E)}else{if(G){return this.newActiveLine(C,E)}else{return this.newLine(D,C,E)}}},newQueryOrActiveLine:function(C,B,D,A){this.newQueryLine(C,B,D,A,true)},getActiveWindow:function(){return ui.getActiveIRCWindow()},getNickname:function(){return this.nickname},addPrefix:function(D,F){var G=D.prefixes+F;var E=[];for(var C=0;C<this.prefixes.length;C++){var B=this.prefixes.charAt(C);var A=G.indexOf(B);if(A!=-1){E.push(B)}}D.prefixes=E.join("")},stripPrefix:function(A){var B=A.charAt(0);if(!B){return A}if(this.prefixes.indexOf(B)!=-1){return A.substring(1)}return A},removePrefix:function(A,B){A.prefixes=A.prefixes.replaceAll(B,"")},rawNumeric:function(A,B,C){this.newServerLine("RAW",{n:"numeric",m:C.slice(1).join(" ")})},signedOn:function(A){this.tracker=new qwebirc.irc.IRCTracker(this);this.nickname=A;this.newServerLine("SIGNON");if(this.autojoin){this.exec("/AUTOJOIN")}},userJoined:function(B,D){var A=B.hostToNick();var C=B.hostToHost();if((A==this.nickname)&&!ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,D)){this.newWindow(D,qwebirc.ui.WINDOW_CHANNEL,true)}this.tracker.addNickToChannel(A,D);if(A==this.nickname){this.newChanLine(D,"OURJOIN",B)}else{if(!conf.ui.hide_joinparts){this.newChanLine(D,"JOIN",B)}}this.updateNickList(D)},userPart:function(C,F,E){var A=C.hostToNick();var D=C.hostToHost();if(A==this.nickname){this.tracker.removeChannel(F);var B=ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,F);if(B){ui.closeWindow(B)}}else{this.tracker.removeNickFromChannel(A,F);if(!conf.ui.hide_joinparts){this.newChanLine(F,"PART",C,{m:E})}this.updateNickList(F)}},userKicked:function(D,C,E,B){if(E==this.nickname){this.tracker.removeChannel(C);var A=ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,C);if(A){ui.closeWindow(A)}}else{this.tracker.removeNickFromChannel(E,C);this.updateNickList(C)}this.newChanLine(C,"KICK",D,{v:E,m:B})},channelMode:function(A,C,D,B){D.each(function(H){var I=H[0];var J=H[1];var F=this.modeprefixes.indexOf(J);if(F==-1){return }var E=H[2];var G=this.prefixes.charAt(F);var K=this.tracker.getOrCreateNickOnChannel(E,C);if(I=="-"){this.removePrefix(K,G)}else{this.addPrefix(K,G)}},this);this.newChanLine(C,"MODE",A,{m:B.join(" ")});this.updateNickList(C)},userQuit:function(C,D){var B=C.hostToNick();var A=this.tracker.getNick(B);var E=[];for(var F in A){E.push(F);if(!conf.ui.hide_joinparts){this.newChanLine(F,"QUIT",C,{m:D})}}this.tracker.removeNick(B);E.each(function(G){this.updateNickList(G)},this)},nickChanged:function(C,B){var D=C.hostToNick();if(D==this.nickname){this.nickname=B}this.tracker.renameNick(D,B);var A=this.tracker.getNick(B);var E=false;for(var F in A){var E=true;this.newChanLine(F,"NICK",C,{w:B});this.updateNickList(F)}if(!E){this.newServerLine("NICK",{w:B,n:C.hostToNick(),h:C.hostToHost(),"-":this.nickname})}},channelTopic:function(A,C,B){this.newChanLine(C,"TOPIC",A,{m:B});ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,C).updateTopic(B)},initialTopic:function(B,A){ui.getWindow(qwebirc.ui.WINDOW_CHANNEL,B).updateTopic(A)},channelCTCP:function(B,E,D,C){if(C==undefined){C=""}var A=B.hostToNick();if(D=="ACTION"){this.tracker.updateLastSpoke(A,E,new Date().getTime());this.newChanLine(E,"CHANACTION",B,{m:C,c:E,"@":this.getNickStatus(E,A)});return }this.newChanLine(E,"CHANCTCP",B,{x:D,m:C,c:E,"@":this.getNickStatus(E,A)})},userCTCP:function(B,D,C){var A=B.hostToNick();var E=B.hostToHost();if(C==undefined){C=""}if(D=="ACTION"){this.newQueryWindow(A,true);this.newQueryLine(A,"PRIVACTION",{m:C,x:D,h:E,n:A},true);return }this.newTargetOrActiveLine(A,"PRIVCTCP",{m:C,x:D,h:E,n:A,"-":this.nickname})},userCTCPReply:function(B,D,C){var A=B.hostToNick();var E=B.hostToHost();if(C==undefined){C=""}this.newTargetOrActiveLine(A,"CTCPREPLY",{m:C,x:D,h:E,n:A,"-":this.nickname})},getNickStatus:function(B,A){var C=this.tracker.getNickOnChannel(A,B);if(!$defined(C)){return""}if(C.prefixes.length==0){return""}return C.prefixes.charAt(0)},channelPrivmsg:function(B,D,C){var A=B.hostToNick();this.tracker.updateLastSpoke(A,D,new Date().getTime());this.newChanLine(D,"CHANMSG",B,{m:C,"@":this.getNickStatus(D,A)})},channelNotice:function(A,C,B){this.newChanLine(C,"CHANNOTICE",A,{m:B,"@":this.getNickStatus(C,A.hostToNick())})},userPrivmsg:function(B,D){var A=B.hostToNick();var C=B.hostToHost();this.newQueryWindow(A,true);this.pushLastNick(A);this.newQueryLine(A,"PRIVMSG",{m:D,h:C,n:A},true)},serverNotice:function(A,B){if(A==""){this.newServerLine("SERVERNOTICE",{m:B})}else{this.newServerLine("PRIVNOTICE",{m:B,n:A})}},userNotice:function(B,D){var A=B.hostToNick();var C=B.hostToHost();if(conf.ui.dedicated_notice_window){this.newQueryWindow(A,false);this.newQueryOrActiveLine(A,"PRIVNOTICE",{m:D,h:C,n:A},false)}else{this.newTargetOrActiveLine(A,"PRIVNOTICE",{m:D,h:C,n:A})}},__joinInvited:function(){this.exec("/JOIN "+this.inviteChanList.join(","));this.inviteChanList=[];delete this.activeTimers.serviceInvite},userInvite:function(B,D){var A=B.hostToNick();var C=B.hostToHost();this.newServerLine("INVITE",{c:D,h:C,n:A})},userMode:function(A){this.newServerLine("UMODE",{m:A,n:this.nickname})},channelNames:function(A,B){if(B.length==0){this.updateNickList(A);return }B.each(function(C){var D=[];var E=C.split("");E.every(function(H,G){if(this.prefixes.indexOf(H)==-1){C=C.substr(G);return false}D.push(H);return true},this);var F=this.tracker.addNickToChannel(C,A);D.each(function(G){this.addPrefix(F,G)},this)},this)},disconnected:function(C){for(var A in session.windows){var B=session.windows[A];if(B.type==qwebirc.ui.WINDOW_CHANNEL){ui.closeWindow(B)}}this.tracker=undefined;this.newServerLine("DISCONNECT",{m:C})},nickOnChanHasPrefix:function(A,C,D){var B=this.tracker.getNickOnChannel(A,C);if(!$defined(B)){return false}return B.prefixes.indexOf(D)!=-1},nickOnChanHasAtLeastPrefix:function(A,F,E,B){var H=this.tracker.getNickOnChannel(A,F);if(!$defined(H)){return false}var G=this.prefixes.indexOf(E);if(G==-1){return false}if(!B){G=G+1}var I={};this.prefixes.slice(0,G).split("").each(function(J){I[J]=true});var D=H.prefixes;for(var C=0;C<D.length;C++){if(I[D.charAt(C)]){return true}}return false},supported:function(B,C){if(B=="PREFIX"){var A=(C.length-2)/2;this.modeprefixes=C.substr(1,A);this.prefixes=C.substr(A+2,A)}this.parent(B,C)},connected:function(){this.newServerLine("CONNECT")},serverError:function(A){this.newServerLine("ERROR",{m:A})},quit:function(A){this.send("QUIT :"+A,true);this.disconnect()},disconnect:function(){for(var A in this.activeTimers){this.activeTimers[A].cancel()}this.activeTimers={};this.parent()},awayMessage:function(A,B){this.newQueryLine(A,"AWAY",{n:A,m:B},true)},whois:function(A,C,E){var D={n:A};var F;var B=function(){this.newTargetOrActiveLine(A,"WHOIS"+F,D)}.bind(this);if(C=="user"){F="USER";D.h=E.ident+"@"+E.hostname;B();F="REALNAME";D.m=E.realname}else{if(C=="server"){F="SERVER";D.x=E.server;D.m=E.serverdesc}else{if(C=="oper"){F="OPER"}else{if(C=="idle"){F="IDLE";D.x=qwebirc.util.longtoduration(E.idle);D.m=qwebirc.irc.IRCDate(new Date(E.connected*1000))}else{if(C=="channels"){F="CHANNELS";D.m=E.channels}else{if(C=="account"){F="ACCOUNT";D.m=E.account}else{if(C=="away"){F="AWAY";D.m=E.away}else{if(C=="opername"){F="OPERNAME";D.m=E.opername}else{if(C=="actually"){F="ACTUALLY";D.m=E.hostname;D.x=E.ip}else{if(C=="availhelp"){F="AVAILHELP"}else{if(C=="regged"){F="REGGED"}else{if(C=="modes"){F="MODES";D.m=E.modes}else{if(C=="realhost"){F="REALHOST";D.m=E.hostname;D.x=E.ip}else{if(C=="generictext"){F="GENERICTEXT";D.m=E.text}else{if(C=="end"){F="END"}else{return false}}}}}}}}}}}}}}}B();return true},genericError:function(B,A){this.newTargetOrActiveLine(B,"GENERICERROR",{m:A,t:B})},genericQueryError:function(B,A){this.newQueryOrActiveLine(B,"GENERICERROR",{m:A,t:B},true)},awayStatus:function(B,A){this.newActiveLine("GENERICMESSAGE",{m:A})},pushLastNick:function(A){var B=this.lastNicks.indexOf(A);if(B!=-1){this.lastNicks.splice(B,1)}else{if(this.lastNicks.length==10){this.lastNicks.pop()}}this.lastNicks.unshift(A)},wallops:function(B,D){var A=B.hostToNick();var C=B.hostToHost();this.newServerLine("WALLOPS",{t:D,n:A,h:C})},channelModeIs:function(A,B){this.newTargetOrActiveLine(A,"CHANNELMODEIS",{c:A,m:B.join(" ")})},channelCreationTime:function(A,B){this.newTargetOrActiveLine(A,"CHANNELCREATIONTIME",{c:A,m:qwebirc.irc.IRCDate(new Date(B*1000))})}});qwebirc.irc.IRCConnection=new Class({Implements:[Events,Options],session:null,options:{initialNickname:"ircconnX",timeout:45000,floodInterval:200,floodMax:10,floodReset:5000,errorAlert:true,maxRetries:5,serverPassword:null,authUser:null,authSecret:null},initialize:function(B,A){this.session=B;this.setOptions(A);this.initialNickname=this.options.initialNickname;this.counter=0;this.disconnected=false;this.__floodLastRequest=0;this.__floodCounter=0;this.__floodLastFlood=0;this.__retryAttempts=0;this.__timeoutId=null;this.__lastActiveRequest=null;this.__activeRequest=null;this.__sendQueue=[];this.__sendQueueActive=false},__error:function(A){this.fireEvent("error",A);if(this.options.errorAlert){alert(A)}},newRequest:function(C,E,A){if(this.disconnected){return null}if(E&&!this.disconnected&&this.__isFlooding()){this.disconnect();this.__error("BUG: uncontrolled flood detected -- disconnected.")}var B=true;if(A){B=false}var D=new Request.JSON({url:conf.frontend.dynamic_base_url+"e/"+C+"?r="+this.cacheAvoidance+"&t="+this.counter++,async:B});D.headers=new Hash;D.addEvent("request",function(){var F=function(G,H){try{this.setRequestHeader(G,H)}catch(I){}}.bind(this);F("User-Agent",null);F("Accept",null);F("Accept-Language",null)}.bind(D.xhr));if(Browser.Engine.trident){D.setHeader("If-Modified-Since","Sat, 1 Jan 2000 00:00:00 GMT")}return D},__isFlooding:function(){var A=new Date().getTime();if(A-this.__floodLastRequest<this.options.floodInterval){if(this.__floodLastFlood!=0&&(A-this.__floodLastFlood>this.options.floodReset)){this.__floodCounter=0}this.__floodLastFlood=A;if(this.__floodCounter++>=this.options.floodMax){return true}}this.__floodLastRequest=A;return false},send:function(B,A){if(this.disconnected){return false}if(A){this.__send(B,false)}else{this.__sendQueue.push(B);this.__processSendQueue()}return true},__processSendQueue:function(){if(this.__sendQueueActive||this.__sendQueue.length==0){return }this.sendQueueActive=true;this.__send(this.__sendQueue.shift(),true)},__send:function(B,C){var A=this.newRequest("p",false,!C);if(A===null){return }A.addEvent("complete",function(D){if(C){this.__sendQueueActive=false}if(!D||(D[0]==false)){this.__sendQueue=[];if(!this.disconnected){this.disconnected=true;this.__error("An error occured: "+D[1])}return false}this.__processSendQueue()}.bind(this));A.send("s="+this.sessionid+"&c="+encodeURIComponent(B))},__processData:function(A){if(A[0]==false){if(!this.disconnected){this.disconnected=true;this.__error("An error occured: "+A[1])}return false}this.__retryAttempts=0;A.each(function(B){this.fireEvent("recv",[B])},this);return true},__scheduleTimeout:function(){if(this.options.timeout){this.__timeoutId=this.__timeoutEvent.delay(this.options.timeout,this)}},__cancelTimeout:function(){if($defined(this.__timeoutId)){$clear(this.__timeoutId);this.__timeoutId=null}},__timeoutEvent:function(){this.__timeoutId=null;if(!$defined(this.__activeRequest)){return }if(this.__checkRetries()){if(this.__lastActiveRequest){this.__lastActiveRequest.cancel()}this.__activeRequest.__replaced=true;this.__lastActiveRequest=this.__activeRequest;this.recv()}else{this.__cancelRequests()}},__checkRetries:function(){if(this.__retryAttempts++>=this.options.maxRetries&&!this.disconnected){this.disconnect();this.__error("Error: connection closed after several requests failed.");return false}return true},recv:function(){var A=this.newRequest("s",true);if(!$defined(A)){return }this.__activeRequest=A;A.__replaced=false;var B=function(C){if(A.__replaced){this.__lastActiveRequest=null;if(C){this.__processData(C)}return }this.__activeRequest=null;this.__cancelTimeout();if(!C){if(this.disconnected){return }if(this.__checkRetries()){this.recv()}return }if(this.__processData(C)){this.recv()}};A.addEvent("complete",B.bind(this));this.__scheduleTimeout();A.send("s="+this.sessionid)},connect:function(){this.cacheAvoidance=qwebirc.util.randHexString(16);var B=this.newRequest("n");B.addEvent("complete",function(C){if(!C){this.disconnected=true;this.__error("Couldn't connect to remote server.");return }if(C[0]==false){this.disconnect();this.__error("An error occured: "+C[1]);return }this.sessionid=C[1];this.recv()}.bind(this));var A="nick="+encodeURIComponent(this.initialNickname);if($defined(this.options.serverPassword)){A+="&password="+encodeURIComponent(this.options.serverPassword)}if($defined(this.options.authUser)&&$defined(this.options.authSecret)){A+="&authUser="+encodeURIComponent(this.options.authUser);A+="&authSecret="+encodeURIComponent(this.options.authSecret)}B.send(A)},__cancelRequests:function(){if($defined(this.__lastActiveRequest)){this.__lastActiveRequest.cancel();this.__lastActiveRequest=null}if($defined(this.__activeRequest)){this.__activeRequest.cancel();this.__activeRequest=null}},disconnect:function(){this.disconnected=true;this.__cancelTimeout();this.__cancelRequests()}});qwebirc.irc.IRCLowerTable=["\x00","\x01","\x02","\x03","\x04","\x05","\x06","\x07","\x08","\x09","\x0a","\x0b","\x0c","\x0d","\x0e","\x0f","\x10","\x11","\x12","\x13","\x14","\x15","\x16","\x17","\x18","\x19","\x1a","\x1b","\x1c","\x1d","\x1e","\x1f"," ","!",'"',"#","$","%","&","\x27","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","\x7f","\x80","\x81","\x82","\x83","\x84","\x85","\x86","\x87","\x88","\x89","\x8a","\x8b","\x8c","\x8d","\x8e","\x8f","\x90","\x91","\x92","\x93","\x94","\x95","\x96","\x97","\x98","\x99","\x9a","\x9b","\x9c","\x9d","\x9e","\x9f","\xa0","\xa1","\xa2","\xa3","\xa4","\xa5","\xa6","\xa7","\xa8","\xa9","\xaa","\xab","\xac","\xad","\xae","\xaf","\xb0","\xb1","\xb2","\xb3","\xb4","\xb5","\xb6","\xb7","\xb8","\xb9","\xba","\xbb","\xbc","\xbd","\xbe","\xbf","\xe0","\xe1","\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec","\xed","\xee","\xef","\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xd7","\xf8","\xf9","\xfa","\xfb","\xfc","\xfd","\xfe","\xdf","\xe0","\xe1","\xe2","\xe3","\xe4","\xe5","\xe6","\xe7","\xe8","\xe9","\xea","\xeb","\xec","\xed","\xee","\xef","\xf0","\xf1","\xf2","\xf3","\xf4","\xf5","\xf6","\xf7","\xf8","\xf9","\xfa","\xfb","\xfc","\xfd","\xfe","\xff"];qwebirc.irc.RFC1459toIRCLower=function(A){var D=[];for(var C=0;C<A.length;C++){var B=A.charCodeAt(C);D.push(qwebirc.irc.IRCLowerTable[B])}return D.join("")};qwebirc.irc.ASCIItoIRCLower=function(A){return A.toLowerCase()};String.prototype.hostToNick=function(){return this.split("!",1)[0]};String.prototype.hostToHost=function(){return this.split("!",2)[1]};qwebirc.irc.IRCTimestamp=function(A){return"["+qwebirc.util.pad(A.getHours())+":"+qwebirc.util.pad(A.getMinutes())+"]"};qwebirc.irc.IRCDate=function(B){var A=qwebirc.util.pad;return qwebirc.util.DaysOfWeek[B.getDay()]+" "+qwebirc.util.MonthsOfYear[B.getMonth()]+" "+A(B.getDate())+" "+A(B.getHours())+":"+A(B.getMinutes())+":"+A(B.getSeconds())+" "+B.getFullYear()};qwebirc.irc.toIRCCompletion=function(B,A){return B.irc.toIRCLower(A).replace(/[^\w]+/g,"")};qwebirc.irc.NickChanEntry=function(){this.prefixes="";this.lastSpoke=0};qwebirc.irc.IRCTracker=new Class({initialize:function(A){this.channels={};this.nicknames={};this.owner=A},toIRCLower:function(A){return this.owner.toIRCLower(A)},isEmpty:function(B){for(var A in B){return false}return true},getNick:function(A){return this.nicknames[A]},getOrCreateNick:function(A){var B=this.getNick(A);if(!B){B=this.nicknames[A]={}}return B},getChannel:function(A){return this.channels[this.toIRCLower(A)]},getOrCreateChannel:function(A){var B=this.getChannel(A);if(!B){B=this.channels[this.toIRCLower(A)]={}}return B},getOrCreateNickOnChannel:function(A,B){var D=this.getOrCreateNick(A);var C=D[this.toIRCLower(B)];if(!C){return this.addNickToChannel(A,B)}return C},getNickOnChannel:function(A,B){var C=this.getNick(A);if(!C){return }return C[this.toIRCLower(B)]},addNickToChannel:function(A,B){var E=new qwebirc.irc.NickChanEntry();var D=this.getOrCreateNick(A);D[this.toIRCLower(B)]=E;var C=this.getOrCreateChannel(B);C[A]=E;return E},removeNick:function(A){var E=this.getNick(A);if(!E){return }for(var B in E){var C=this.toIRCLower(B);var D=this.channels[C];delete D[A];if(this.isEmpty(D)){delete this.channels[C]}}delete this.nicknames[A]},removeChannel:function(B){var E=this.getChannel(B);if(!E){return }var C=this.toIRCLower(B);for(var A in E){var D=this.nicknames[A];delete D[C];if(this.isEmpty(D)){delete this.nicknames[A]}}delete this.channels[C]},removeNickFromChannel:function(A,B){var C=this.toIRCLower(B);var E=this.getNick(A);var D=this.getChannel(C);if(!E||!D){return }delete E[C];delete D[A];if(this.isEmpty(E)){delete this.nicknames[A]}if(this.isEmpty(D)){delete this.channels[C]}},renameNick:function(B,A){var E=this.getNick(B);if(!E){return }for(var C in E){var D=this.toIRCLower(C);this.channels[D][A]=this.channels[D][B];delete this.channels[D][B]}this.nicknames[A]=this.nicknames[B];delete this.nicknames[B]},updateLastSpoke:function(A,B,C){var D=this.getNickOnChannel(A,B);if($defined(D)){D.lastSpoke=C}},getSortedByLastSpoke:function(D){var G=function(I,H){return H[1].lastSpoke-I[1].lastSpoke};var F=this.getChannel(D);if(!F){return }var E=[];for(var A in F){E.push([A,F[A]])}E.sort(G);var C=[];for(var B=0;B<E.length;B++){C.push(E[B][0])}return C}});qwebirc.irc.Numerics={"001":"RPL_WELCOME","433":"ERR_NICKNAMEINUSE","004":"RPL_MYINFO","005":"RPL_ISUPPORT","353":"RPL_NAMREPLY","366":"RPL_ENDOFNAMES","331":"RPL_NOTOPIC","332":"RPL_TOPIC","333":"RPL_TOPICWHOTIME","311":"RPL_WHOISUSER","312":"RPL_WHOISSERVER","313":"RPL_WHOISOPERATOR","317":"RPL_WHOISIDLE","671":"RPL_WHOISSECURE","318":"RPL_ENDOFWHOIS","319":"RPL_WHOISCHANNELS","330":"RPL_WHOISACCOUNT","338":"RPL_WHOISACTUALLY","343":"RPL_WHOISOPERNAME","320":"RPL_WHOISGENERICTEXT","310":"RPL_WHOISAVAILHELP","307":"RPL_WHOISREGGED","378":"RPL_WHOISREALHOST","379":"RPL_WHOISMODES","325":"RPL_WHOISWEBIRC","301":"RPL_AWAY","401":"ERR_NOSUCHNICK","404":"ERR_CANNOTSENDTOCHAN","482":"ERR_CHANOPPRIVSNEEDED","305":"RPL_UNAWAY","306":"RPL_NOWAWAY","324":"RPL_CHANNELMODEIS","329":"RPL_CREATIONTIME"};qwebirc.ui.Atheme={};qwebirc.ui.Atheme.handleLogin=function(C,A,B){C.atheme.state=true;C.atheme.user=A;C.atheme.secret=B;cookie=new Hash.Cookie("iris-auth");cookie.set("user",C.atheme.user);cookie.set("token",C.atheme.secret);cookie.save()};qwebirc.ui.Atheme.handleLogout=function(){this.state=false};qwebirc.ui.Atheme.check=function(A){if($defined(A.atheme.user)&&$defined(A.atheme.secret)&&conf.atheme.sasl_type=="AUTHCOOKIE"){qwebirc.irc.AthemeQuery.checkLogin(function(B){if(B==null){A.atheme.state=null}else{if(B){this.handleLogin(A,A.atheme.user,A.atheme.secret)}else{this.handleLogout()}}}.bind(this),A.atheme.user,A.atheme.secret)}else{this.handleLogout(A)}};qwebirc.ui.WINDOW_STATUS=1;qwebirc.ui.WINDOW_QUERY=2;qwebirc.ui.WINDOW_CHANNEL=4;qwebirc.ui.WINDOW_MESSAGES=8;qwebirc.ui.WINDOW_CUSTOM=16;qwebirc.ui.BaseUI=new Class({initialize:function(D,B,C,F){this.session=D;this.parentElement=B;this.windowClass=C;this.windowArray=[];this.parentElement.addClass("qwebirc");this.parentElement.addClass("qwebirc-"+F);this.firstClient=false;this.commandhistory=new qwebirc.irc.CommandHistory();this.windowFocused=true;if(Browser.Engine.trident){var G=function(){var H=document.hasFocus();if(H!=this.windowFocused){this.windowFocused=H;this.focusChange(H)}};G.periodical(100,this)}else{var E=function(){if(this.windowFocused){this.windowFocused=false;this.focusChange(false)}}.bind(this);var A=function(){if(!this.windowFocused){this.windowFocused=true;this.focusChange(true)}}.bind(this);document.addEvent("blur",E);window.addEvent("blur",E);document.addEvent("focus",A);window.addEvent("focus",A)}this.postInitialize()},newClient:function(){var A=this.newWindow(qwebirc.ui.WINDOW_STATUS,"Status");this.selectWindow(A);if(!this.firstClient){this.firstClient=true;A.addLine("","qwebirc v"+qwebirc.VERSION);A.addLine("","Copyright (C) 2008-2010 Chris Porter and the qwebirc project.");A.addLine("","http://www.qwebirc.org");A.addLine("","Licensed under the GNU General Public License, Version 2.")}return A},getWindowIdentifier:function(B,A){if(B==qwebirc.ui.WINDOW_MESSAGES){return"-M"}if(B==qwebirc.ui.WINDOW_STATUS){return""}if(B==qwebirc.ui.WINDOW_CUSTOM){return"internal_"+qwebirc.irc.ASCIItoIRCLower(A)}return"_"+this.session.irc.toIRCLower(A)},newWindow:function(C,B){var A=this.getWindow(C,B);if($defined(A)){return A}var D=this.getWindowIdentifier(C,B);var A=this.session.windows[D]=new this.windowClass(this.session,C,B,D);this.windowArray.push(A);return A},getWindow:function(B,A){return this.session.windows[this.getWindowIdentifier(B,A)]},getActiveWindow:function(){return this.active},getActiveIRCWindow:function(){if(!this.active||this.active.type==qwebirc.ui.WINDOW_CUSTOM){return this.session.windows[this.getWindowIdentifier(qwebirc.ui.WINDOW_STATUS)]}else{return this.active}},__setActiveWindow:function(A){this.active=A},selectWindow:function(A){if(this.active){this.active.deselect()}A.select();this.updateTitle(A.name+" - "+conf.frontend.app_title)},updateTitle:function(A){document.title=A},nextWindow:function(B){if(this.windowArray.length==0||!this.active){return }if(!B){B=1}var A=this.windowArray.indexOf(this.active);if(A==-1){return }A=A+B;if(A<0){A=this.windowArray.length-1}else{if(A>=this.windowArray.length){A=0}}this.selectWindow(this.windowArray[A])},prevWindow:function(){this.nextWindow(-1)},closeWindow:function(B){B.closed=true;if($defined(B.scrolltimer)){$clear(B.scrolltimer);B.scrolltimer=null}if(B.active){this.active=undefined;if(this.windowArray.length==1){this.windowArray=[]}else{var A=this.windowArray.indexOf(B);if(A==-1){return }else{if(A==0){this.selectWindow(this.windowArray[1])}else{this.selectWindow(this.windowArray[A-1])}}}}delete B.session.windows[B.identifier];this.windowArray=this.windowArray.erase(B)},focusChange:function(B){var A=this.getActiveWindow();if($defined(A)){A.focusChange(B)}}});qwebirc.ui.StandardUI=new Class({Extends:qwebirc.ui.BaseUI,initialize:function(D,A,C,E){this.parent(D,A,C,E);this.tabCompleter=new qwebirc.ui.TabCompleterFactory(this);var B;if(Browser.Engine.trident){B="keydown"}else{B="keypress"}document.addEvent(B,this.__handleHotkey.bind(this))},__handleHotkey:function(A){if(!A.alt||A.control){if(A.key=="backspace"||A.key=="/"){if(!this.getInputFocused(A)){new Event(A).stop()}}return }var F=false;if(A.key=="a"||A.key=="A"){var E=0;var D=-1;F=true;new Event(A).stop();for(var B=0;B<this.windowArray.length;B++){var C=this.windowArray[B].hilighted;if(C>E){D=B;E=C}}if(D>-1){this.selectWindow(this.windowArray[D])}}else{if(A.key>="0"&&A.key<="9"){F=true;number=A.key-"0";if(number==0){number=10}number=number-1;if(number>=this.windowArray.length){return }this.selectWindow(this.windowArray[number])}else{if(A.key=="left"){this.prevWindow();F=true}else{if(A.key=="right"){this.nextWindow();F=true}}}}if(F){new Event(A).stop()}},getInputFocused:function(A){if($$("input").indexOf(A.target)==-1&&$$("textarea").indexOf(A.target)==-1){return false}return true},newCustomWindow:function(C,A,D){if(!D){D=qwebirc.ui.WINDOW_CUSTOM}var B=this.newWindow(D,C);if(A){this.selectWindow(B)}return B},addPane:function(A){var D=qwebirc.ui.Panes[A].title;var E=this.getWindowIdentifier(qwebirc.ui.WINDOW_CUSTOM,D);if(this.session.windows[E]){this.selectWindow(this.session.windows[E]);return }var C=this.newCustomWindow(D,true);C.lines.addClass("qwebirc-pane"+A);var B=new qwebirc.ui.Panes[A].pclass(this.session,C);C.setSubWindow(B);return C},connectWindow:function(A){var C=qwebirc.ui.Panes.Connect;var B=this.addPane("Connect");B.subWindow.connectCallback=function(D){ui.closeWindow(B);A(D)}},urlDispatcher:function(A){if(A=="embedded"){return["a",this.embeddedWindow.bind(this)]}if(A=="options"){return["a",this.optionsWindow.bind(this)]}if(A=="whois"){return["span",function(B){if(conf.ui.nick_click_query){this.session.irc.exec("/QUERY "+B)}else{this.session.irc.exec("/WHOIS "+B)}}.bind(this)]}if(A=="accinfo"){return["span",function(B){this.session.irc.exec("/MSG NickServ INFO "+B)}.bind(this)]}return null},tabComplete:function(A){this.tabCompleter.tabComplete(A)},resetTabComplete:function(){this.tabCompleter.reset()},setModifiableStylesheet:function(A){this.__styleSheet=new qwebirc.ui.style.ModifiableStylesheet(conf.frontend.static_base_url+"css/"+A+qwebirc.FILE_SUFFIX+".mcss");this.setModifiableStylesheetValues(conf.ui.fg_color,conf.ui.fg_sec_color,conf.ui.bg_color)},setModifiableStylesheetValues:function(D,G,E){var A=new Color(D);var C=new Color(G);var B=new Color(E);var F=1;if(A.hsb[2]>B.hsb[2]){F=-1}if(!$defined(this.__styleSheet)){return }this.__styleSheet.set(function(H){return H.setHue(-180+H.hsb[0]+A.hsb[0]).setSaturation(A.hsb[1]+(H.hsb[1]-50)*F).setBrightness(A.hsb[2]+(H.hsb[2]-50)*F)},function(H){return H.setHue(-180+H.hsb[0]+C.hsb[0]).setSaturation(C.hsb[1]+(H.hsb[1]-50)*F).setBrightness(C.hsb[2]+(H.hsb[2]-50)*F)},function(H){return H.setHue(-180+H.hsb[0]+B.hsb[0]).setSaturation(B.hsb[1]+(H.hsb[1]-50)*F).setBrightness(B.hsb[2]+(H.hsb[2]-50)*F)})}});qwebirc.ui.NotificationUI=new Class({Extends:qwebirc.ui.StandardUI,initialize:function(C,A,B,D){this.parent(C,A,B,D);this.__beeper=new qwebirc.ui.Beeper(C);this.__flasher=new qwebirc.ui.Flasher(C);this.beep=this.__beeper.beep.bind(this.__beeper);this.flash=this.__flasher.flash.bind(this.__flasher);this.cancelFlash=this.__flasher.cancelFlash.bind(this.__flasher)},setBeepOnMention:function(A){if(A){this.__beeper.soundInit()}},updateTitle:function(A){if(this.__flasher.updateTitle(A)){this.parent(A)}},focusChange:function(A){this.parent(A);this.__flasher.focusChange(A)}});qwebirc.ui.RootUI=qwebirc.ui.NotificationUI;qwebirc.ui.RequestTransformHTML=function(D,A){var B={IMG:1};var F=A.update;var E=A.onSuccess;var C=function(J){if(J.nodeType!=1){return }var I=J.nodeName.toUpperCase();if(B[I]){var G=J.getAttribute("transform_attr");var K=J.getAttribute("transform_value");if($defined(G)&&$defined(K)){J.removeAttribute("transform_attr");J.removeAttribute("transform_value");J.setAttribute(G,conf.frontend.static_base_url+K)}}for(var H=0;H<J.childNodes.length;H++){C(J.childNodes[H])}};delete A.update;A.onSuccess=function(H,K,J,L){var I=new Element("div");I.set("html",J);C(I);F.empty();while(I.childNodes.length>0){var G=I.firstChild;I.removeChild(G);F.appendChild(G)}E()};return new Request.HTML(A)};qwebirc.ui.HILIGHT_NONE=0;qwebirc.ui.HILIGHT_ACTIVITY=1;qwebirc.ui.HILIGHT_SPEECH=2;qwebirc.ui.HILIGHT_US=3;qwebirc.ui.WINDOW_LASTLINE=qwebirc.ui.WINDOW_QUERY|qwebirc.ui.WINDOW_MESSAGES|qwebirc.ui.WINDOW_CHANNEL|qwebirc.ui.WINDOW_STATUS;qwebirc.ui.Window=new Class({Implements:[Events],initialize:function(D,C,B,A){this.session=D;this.type=C;this.name=B;this.active=false;this.identifier=A;this.hilighted=qwebirc.ui.HILIGHT_NONE;this.scrolltimer=null;this.commandhistory=ui.commandhistory;this.scrolleddown=true;this.scrollpos=null;this.lastNickHash={};this.lastSelected=null;this.subWindow=null;this.closed=false;if(this.type&qwebirc.ui.WINDOW_LASTLINE){this.lastPositionLine=new Element("hr");this.lastPositionLine.addClass("lastpos");this.lastPositionLineInserted=false}},updateTopic:function(A,B){qwebirc.ui.Colourise(this.session,"["+A+"]",B)},subEvent:function(A){if($defined(this.subWindow)){this.subWindow.fireEvent(A)}},setSubWindow:function(A){this.subWindow=A},select:function(){if(this.lastPositionLineInserted&&!conf.ui.lastpos_line){this.lines.removeChild(this.lastPositionLine);this.lastPositionLineInserted=false}this.active=true;ui.__setActiveWindow(this);if(this.hilighted){this.setHilighted(qwebirc.ui.HILIGHT_NONE)}this.subEvent("select");this.resetScrollPos();this.lastSelected=new Date()},deselect:function(){this.subEvent("deselect");this.setScrollPos();if($defined(this.scrolltimer)){$clear(this.scrolltimer);this.scrolltimer=null}if(this.type&qwebirc.ui.WINDOW_LASTLINE){this.replaceLastPositionLine()}this.active=false},resetScrollPos:function(){if(this.scrolleddown){this.scrollToBottom()}else{if($defined(this.scrollpos)){this.getScrollParent().scrollTo(this.scrollpos.x,this.scrollpos.y)}}},setScrollPos:function(){if(!ui.singleWindow){this.scrolleddown=this.scrolledDown();this.scrollpos=this.lines.getScroll()}},addLine:function(D,A,E,B){var C=qwebirc.ui.HILIGHT_NONE;var F=false;if(D){C=qwebirc.ui.HILIGHT_ACTIVITY;if(D.match(/(NOTICE|ACTION|MSG)$/)){if(this.type==qwebirc.ui.WINDOW_QUERY||this.type==qwebirc.ui.WINDOW_MESSAGES){if(D.match(/^OUR/)||D.match(/NOTICE$/)){C=qwebirc.ui.HILIGHT_ACTIVITY}else{C=qwebirc.ui.HILIGHT_US;ui.beep();ui.flash()}}if(!D.match(/^OUR/)&&this.session.irc.hilightController.match(A.m)){F=true;C=qwebirc.ui.HILIGHT_US;ui.beep();ui.flash()}else{if(C!=qwebirc.ui.HILIGHT_US){C=qwebirc.ui.HILIGHT_SPEECH}}}}if(!this.active&&(C!=qwebirc.ui.HILIGHT_NONE)){this.setHilighted(C)}if(D){A=ui.theme.message(D,A,F)}qwebirc.ui.Colourise(this.session,qwebirc.irc.IRCTimestamp(new Date())+" "+A,B);this.scrollAdd(B)},errorMessage:function(A){this.addLine("",A,"warncolour")},infoMessage:function(A){this.addLine("",A,"infocolour")},setHilighted:function(A){if(A==qwebirc.ui.HILIGHT_NONE||A>=this.hilighted){this.hilighted=A}},scrolledDown:function(){if(this.scrolltimer){return true}var C=this.lines;var D=C.getScroll();var B=C.getScrollSize().y;var A=C.clientHeight;if(B<A){B=A}return D.y+A==B},getScrollParent:function(){var A=this.lines;if($defined(this.scroller)){A=this.scroller}return A},scrollToBottom:function(){if(this.type==qwebirc.ui.WINDOW_CUSTOM){return }var B=this.lines;var A=this.getScrollParent();A.scrollTo(B.getScroll().x,B.getScrollSize().y)},scrollAdd:function(A){var B=this.lines;if($defined(A)){var C=this.scrolledDown();B.appendChild(A);if(C){if(this.scrolltimer){$clear(this.scrolltimer)}this.scrolltimer=this.scrollAdd.delay(50,this,[null])}}else{this.scrollToBottom();this.scrolltimer=null}},updateNickList:function(D){var A={},G={};var I=[];var H=this.lastNickHash;for(var F=0;F<D.length;F++){G[D[F]]=1}for(var E in H){if(!G[E]){this.nickListRemove(E,H[E])}}for(var F=0;F<D.length;F++){var B=D[F];var C=H[B];if(!C){C=this.nickListAdd(B,F);if(!C){C=1}}A[B]=C}this.lastNickHash=A},nickListAdd:function(B,A){},nickListRemove:function(A,B){},historyExec:function(A){this.commandhistory.addLine(A);this.session.irc.exec(A)},focusChange:function(A){if(A==true||!(this.type&qwebirc.ui.WINDOW_LASTLINE)){return }this.replaceLastPositionLine()},replaceLastPositionLine:function(){if(conf.ui.lastpos_line){if(!this.lastPositionLineInserted){this.scrollAdd(this.lastPositionLine)}else{if(this.lines.lastChild!=this.lastPositionLine){try{this.lines.removeChild(this.lastPositionLine)}catch(A){}this.scrollAdd(this.lastPositionLine)}}}else{if(this.lastPositionLineInserted){this.lines.removeChild(this.lastPositionLine)}}this.lastPositionLineInserted=conf.ui.lastpos_line}});qwebirc.ui.Colourise=function(A,G,I){var L;var C;var F=false;var N=false;var V=false;var R=[];var J=G.split("");var B=document.createElement("span");I.addClass("colourline");function M(W){return W>="0"&&W<="9"}function T(X,W){if(!M(X[W+1])){L=undefined;C=undefined;return W}W++;if(M(X[W+1])){L=parseInt(X[W]+X[W+1]);W++}else{L=parseInt(X[W])}if(X[W+1]!=","){return W}if(!M(X[W+2])){return W}W+=2;if(M(X[W+1])){C=parseInt(X[W]+X[W+1]);W++}else{C=parseInt(X[W])}return W}function D(){var W="";if(R.length>0){var W=qwebirc.ui.urlificate(A,B,R.join(""));I.appendChild(B);R=[]}B=document.createElement("span");return W}function H(){if(V){return B}var W=[];if(L!=undefined){W.push("Xc"+L)}if(C!=undefined){W.push("Xbc"+C)}if(N){W.push("Xb")}if(F){W.push("Xu")}B.className=W.join(" ")}var P=conf.ui.nick_colors;var E=false;for(var Q=0;Q<J.length;Q++){var O=J[Q];if(P){if(!E){if(O=="\x00"){E=true;D();continue}}else{if(O!="\x00"){R.push(O)}else{V=true;var S=H();var K=D();var U=K.toHSBColour(A);if($defined(U)){S.style.color=U.rgbToHex()}E=V=false}continue}}else{if(O=="\x00"){continue}}if(O=="\x02"){D();N=!N;H()}else{if(O=="\x1F"){D();F=!F;H()}else{if(O=="\x0F"){D();L=undefined;C=undefined;F=false;N=false}else{if(O=="\x03"){D();Q=T(J,Q);if(C>15){C=undefined}if(L>15){L=undefined}H()}else{R.push(O)}}}}}D()};String.prototype.toHSBColour=function(E){var B=E.irc.toIRCLower(E.irc.stripPrefix(this));if(B==E.irc.lowerNickname){return null}var D=0;for(var C=0;C<B.length;C++){D=31*D+B.charCodeAt(C)}var A=Math.abs(D)%360;return new Color([A,70,60],"hsb")};qwebirc.ui.create=function(B,A){session=new qwebirc.session();window.addEvent("domready",function(){var C=function(D){session.irc=new qwebirc.irc.IRCClient(session,D);session.irc.connect();window.onbeforeunload=qwebirc.ui.onbeforeunload;window.addEvent("unload",function(){session.irc.quit("Web client closed")})};ui=new A(this.session,$(B));ui.connectWindow(C);if(conf.atheme.chan_list_on_start){if(qwebirc.ui.Panes.List){ui.addPane("List")}}})};qwebirc.ui.onbeforeunload=function(B){var A="This action will close all active IRC connections.";var B=B||window.event;if(B){B.returnValue=A}return A};qwebirc.ui.MENU_ITEMS=function(){var A=function(J){var K=this.name;var I=this.session.irc.nickname;return this.session.irc.nickOnChanHasAtLeastPrefix(I,K,"+",true)};var E=function(J){var K=this.name;var I=this.session.irc.nickname;return this.session.irc.nickOnChanHasAtLeastPrefix(I,K,"@",false)};var B=function(J){var K=this.name;var I=this.session.irc.nickname;return this.session.irc.nickOnChanHasPrefix(I,K,"+")};var C=function(I){var J=this.name;return this.session.irc.nickOnChanHasPrefix(I,J,"@")};var D=function(I){var J=this.name;return this.session.irc.nickOnChanHasPrefix(I,J,"+")};var H=qwebirc.util.invertFn,F=qwebirc.util.composeAnd;var G=function(I){return function(J){this.session.irc.exec("/"+I+" "+J)}};return[{text:"PM",fn:G("query"),predicate:true},{text:"whois",fn:G("whois"),predicate:true},{text:"kick",fn:function(I){this.session.irc.exec("/KICK "+I+" wibble")},predicate:A},{text:"op",fn:G("op"),predicate:F(E,H(C))},{text:"deop",fn:G("deop"),predicate:F(E,C)},{text:"voice",fn:G("voice"),predicate:F(A,H(D))},{text:"devoice",fn:G("devoice"),predicate:F(A,D)}]};qwebirc.ui.HilightController=new Class({initialize:function(A){this.session=A;this.regex=null;this.prevnick=null},match:function(C){var A=this.session.irc.nickname;if(A!=this.prevnick){var B="[\\s\\.,;:]";this.regex=new RegExp("(^|"+B+")"+RegExp.escape(A)+"("+B+"|$)","i")}if(C.match(this.regex)){return true}return false}});qwebirc.ui.Beeper=new Class({initialize:function(A){this.session=A;this.soundInited=false;this.soundReady=false;if(conf.ui.beep_on_mention){this.soundInit()}},soundInit:function(){if(this.soundInited){return }if(!$defined(Browser.Plugins.Flash)||Browser.Plugins.Flash.version<8){return }this.soundInited=true;this.soundPlayer=new qwebirc.sound.SoundPlayer(this.session);this.soundPlayer.addEvent("ready",function(){this.soundReady=true}.bind(this));this.soundPlayer.go()},beep:function(){if(!this.soundReady||!conf.ui.beep_on_mention){return }this.soundPlayer.beep()}});qwebirc.ui.Flasher=new Class({initialize:function(B){this.session=B;this.windowFocused=false;this.canUpdateTitle=true;this.titleText=document.title;var A=this._getFavIcon();if($defined(A)){this.favIcon=A;this.favIconParent=A.parentNode;this.favIconVisible=true;this.emptyFavIcon=new Element("link");this.emptyFavIcon.rel="shortcut icon";this.emptyFavIcon.href=conf.frontend.static_base_url+"images/empty_favicon.ico";this.emptyFavIcon.type="image/x-icon";this.flashing=false;this.canFlash=true;document.addEvent("mousedown",this.cancelFlash.bind(this));document.addEvent("keydown",this.cancelFlash.bind(this))}else{this.canFlash=false}},_getFavIcon:function(){var B=$$("head link");for(var A=0;A<B.length;A++){if(B[A].getAttribute("rel")=="shortcut icon"){return B[A]}}},flash:function(){if(!conf.ui.flash_on_mention||this.windowFocused||!this.canFlash||this.flashing){return }this.titleText=document.title;var B=function(){this.hideFavIcon();this.canUpdateTitle=false;document.title="Activity!";this.flasher=A.delay(500)}.bind(this);var A=function(){this.showFavIcon();this.canUpdateTitle=true;document.title=this.titleText;this.flasher=B.delay(500)}.bind(this);this.flashing=true;B()},cancelFlash:function(){if(!this.canFlash||!$defined(this.flasher)){return }this.flashing=false;$clear(this.flasher);this.flasher=null;this.showFavIcon();document.title=this.titleText;this.canUpdateTitle=true},hideFavIcon:function(){if(this.favIconVisible){this.favIconVisible=false;this.favIconParent.removeChild(this.favIcon);this.favIconParent.appendChild(this.emptyFavIcon)}},showFavIcon:function(){if(!this.favIconVisible){this.favIconVisible=true;this.favIconParent.removeChild(this.emptyFavIcon);this.favIconParent.appendChild(this.favIcon)}},updateTitle:function(A){this.titleText=A;return this.canUpdateTitle},focusChange:function(A){this.windowFocused=A;if(A){this.cancelFlash()}}});qwebirc.ui.supportsFocus=function(B){var A=navigator.userAgent;if(!$defined(A)){return true}if(Browser.Engine.ipod||A.indexOf("Konqueror")!=-1){return false}return true};qwebirc.options.Input=new Class({initialize:function(E,B,D,C,A){this.session=E;this.options=B;this.option=C;this.value=conf[C.category][C.option];this.enabled=true;this.position=A;this.parentElement=D;this.id=qwebirc.util.generateID();if($defined(this.option.isEnabled)){this.enabled=this.option.isEnabled(E)}this.render()},createInput:function(D,C,A,B){if(!$defined(C)){C=this.parentElement}return qwebirc.util.createInput(D,C,A,B,this.id)},FE:function(A,B){var C=new Element(A);if(!$defined(B)){B=this.parentElement}B.appendChild(C);return C},focus:function(){this.mainElement.focus()},onChange:function(){if($defined(this.option.onChange)){this.option.onChange(this.session,this.options,this.get())}}});qwebirc.options.TextInput=new Class({Extends:qwebirc.options.Input,render:function(){var A=this.createInput("text");A.addEvent("change",function(B){this.value=B;this.onChange()}.bind(this));this.mainElement=A;A.value=this.value;A.disabled=!this.enabled},get:function(){return this.mainElement.value}});qwebirc.options.ColorInput=new Class({Extends:qwebirc.options.Input,render:function(){this.hexbox=null;if(this.value[0]!="#"){this.value="#"+this.value}var G=new Element("div");G.addClass("qwebirc-optionspane");G.addClass("hue-slider");this.parentElement.appendChild(G);var B=new Element("div");B.addClass("qwebirc-optionspane");B.addClass("sat-slider");var F=new Element("div");F.addClass("qwebirc-optionspane");F.addClass("light-slider");var A=new Element("form",{"class":"hexform"});this.hexbox=new Element("input",{value:this.value});A.appendChild(this.hexbox);var H=new Element("input",{type:"button",value:"Reset to Default"});if(!conf.ui.simple_color){this.parentElement.appendChild(B);this.parentElement.appendChild(F);this.parentElement.appendChild(A);this.parentElement.appendChild(H)}var D=new Color(this.value);var E=new Element("div");E.addClass("knob");if(Browser.Engine.trident){E.setStyle("top","0px");E.setStyle("background-color","black")}G.appendChild(E);var I=new Slider(G,E,{steps:36,range:[0,369],wheel:true});I.set(D.hsb[0]);E=new Element("div");E.addClass("knob");if(Browser.Engine.trident){E.setStyle("top","0px");E.setStyle("background-color","black")}B.appendChild(E);var K=new Slider(B,E,{steps:50,range:[0,100],wheel:true});K.set(D.hsb[1]);E=new Element("div");E.addClass("knob");if(Browser.Engine.trident){E.setStyle("top","0px");E.setStyle("background-color","black")}F.appendChild(E);var C=new Slider(F,E,{steps:50,range:[0,100],wheel:true});C.set(D.hsb[2]);var J=function(L){var M=$HSB(I.step,K.step,C.step);this.value=M.rgb.rgbToHex();this.onChange()}.bind(this);if(this.enabled){I.addEvent("change",J);K.addEvent("change",J);C.addEvent("change",J);A.addEvent("submit",function(M){(new Event(M)).stop();var L=new Color(this.hexbox.value);I.set(L.hsb[0]);K.set(L.hsb[1]);C.set(L.hsb[2])}.bind(this));H.addEvent("click",function(M){(new Event(M)).stop();this.value=conf[this.option.category][this.option.option+"_default"];var L=new Color(this.value);I.set(L.hsb[0]);K.set(L.hsb[1]);C.set(L.hsb[2])}.bind(this))}this.mainElement=G;this.startValue=this.value},onChange:function(){this.hexbox.value=this.get();if($defined(this.option.onChange)){this.option.onChange(this.session,this.options,this.get())}},get:function(){return this.value},cancel:function(){this.value=this.startValue;this.get()}});qwebirc.options.CheckInput=new Class({Extends:qwebirc.options.Input,render:function(){var A=this.createInput("checkbox");A.addEvent("change",function(B){this.value=B;this.onChange()}.bind(this));this.mainElement=A;A.checked=this.value;A.disabled=!this.enabled},get:function(){return this.mainElement.checked}});qwebirc.options.RadioInput=new Class({Extends:qwebirc.options.Input,render:function(){var B=this.option.options;this.elements=[];for(var A=0;A<B.length;A++){var E=this.FE("div");var C=this.createInput("radio",E,"options_radio"+this.position,A==this.option.position);this.elements.push(C);C.disabled=!this.enabled;var D=A;C.addEvent("change",function(F){if(F){this.option.position=D;this.onChange()}}.bind(this));if(A==0){this.mainElement=C}E.appendChild(document.createTextNode(B[A][0]))}},get:function(){for(var B=0;B<this.elements.length;B++){var A=this.elements[B];if(A.checked){this.option.position=B;return this.option.options[B][1]}}}});qwebirc.options.Options=[{category:"ui",option:"beep_on_mention",label:"Beep when nick mentioned or on query activity (requires Flash)",isEnabled:function(A){if(!$defined(Browser.Plugins.Flash)||Browser.Plugins.Flash.version<8){return false}return true},onSave:function(A){if(ui.updateBeepOnMention){ui.updateBeepOnMention()}}},{category:"ui",option:"dedicated_msg_window",label:"Send privmsgs to dedicated messages window"},{category:"ui",option:"dedicated_notice_window",label:"Send notices to dedicated message window"},{category:"ui",option:"flash_on_mention",label:"Flash titlebar when nick mentioned or on query activity",isEnabled:qwebirc.ui.supportsFocus},{category:"ui",option:"lastpos_line",label:"Show a last position indicator for each window",isEnabled:qwebirc.ui.supportsFocus},{category:"ui",option:"nick_colors",label:"Automatically colour nicknames"},{category:"ui",option:"nick_status",label:"Show status symbol before nicknames in channel lines"},{category:"ui",option:"nick_click_query",label:"Open a PM window on clicking a nickname in channel"},{category:"ui",option:"hide_joinparts",label:"Hide JOINS/PARTS/QUITS"},{category:"ui",option:"fg_color",type:qwebirc.options.ColorInput,label:"Adjust main foreground color",onChange:function(C,A,B){ui.setModifiableStylesheetValues(B,A["ui.fg_sec_color"].get(),A["ui.bg_color"].get())},isEnabled:function(A){return !conf.ui.simple_color}},{category:"ui",option:"fg_sec_color",type:qwebirc.options.ColorInput,label:"Adjust title/link foreground color",onChange:function(C,A,B){ui.setModifiableStylesheetValues(A["ui.fg_color"].get(),B,A["ui.bg_color"].get())},isEnabled:function(A){return !conf.ui.simple_color}},{category:"ui",option:"bg_color",type:qwebirc.options.ColorInput,label:"Adjust background color",onChange:function(C,A,B){if($defined(A["ui.fg_color"])){ui.setModifiableStylesheetValues(A["ui.fg_color"].get(),A["ui.fg_sec_color"].get(),B)}else{ui.setModifiableStylesheetValues(conf.ui.fg_color,conf.ui.fg_sec_color,B)}},onSave:function(A){ui.setModifiableStylesheetValues(conf.ui.fg_color,conf.ui.fg_sec_color,conf.ui.bg_color)},onCancel:function(A){ui.setModifiableStylesheetValues(conf.ui.fg_color,conf.ui.fg_sec_color,conf.ui.bg_color)}}];qwebirc.ui.Panes={};qwebirc.ui.style.ModifiableStylesheet=new Class({initialize:function(A){var B=this.__parseStylesheet(this.__getStylesheet(A));this.__cssText=B.cssText;this.rules=B.rules;this.__tag=this.__createTag()},__createTag:function(){var A=document.createElement("style");A.type="text/css";A.media="all";document.getElementsByTagName("head")[0].appendChild(A);return A},__getStylesheet:function(B){var C=new Request({url:B,async:false});var A;C.addEvent("complete",function(D){A=D});C.get();return A},__setStylesheet:function(A){var B=this.__tag;if(B.styleSheet){B.styleSheet.cssText=A}else{var C=document.createTextNode(A);B.appendChild(C);while(B.childNodes.length>1){B.removeChild(B.firstChild)}}},__parseStylesheet:function(E){var B=E.replace("\r\n","\n").split("\n");var G={};var C;for(C=0;C<B.length;C++){var A=B[C];if(A.trim()===""){break}var F=A.splitMax("=",2);if(F.length!=2){continue}G[F[0]]=F[1]}var D=[];for(;C<B.length;C++){D.push(B[C])}return{cssText:D.join("\n"),rules:G}},set:function(F,A,D){if(!F){F=function(G){return G}}if(!A){A=F}if(!D){D=function(G){return G}}var E=this.__cssText;for(var B in this.rules){var C;if(B.substring(7,0)=="fg_sec_"){C=A(new Color(this.rules[B]))}else{if(B.substring(3,0)=="fg_"){C=F(new Color(this.rules[B]))}else{C=D(new Color(this.rules[B]))}}if(C=="255,255,255"){C="255,255,254"}E=E.replaceAll("$("+B+")","rgb("+C+")")}this.__setStylesheet(E)}});qwebirc.ui.TabCompleterFactory=new Class({initialize:function(A){this.session=A;this.reset()},tabComplete:function(F){var H=F.value;if(!$defined(this.obj)){this.incr=1;var G=ui.getActiveWindow();if(!G){return }var C=qwebirc.util.getEnclosedWord(H,qwebirc.util.getCaretPos(F));var I="",B="",D="";if($defined(C)){var I=H.substring(0,C[0]);var B=C[1];var D=H.substring(C[0]+B.length)}var E=H.toLowerCase();if(H==""){I="/msg ";obj=qwebirc.ui.QueryTabCompleter}else{if(session.irc.isChannel(B)){obj=qwebirc.ui.ChannelNameTabCompleter}else{if(E.match(/^\/(q|query|msg) /i)){obj=qwebirc.ui.QueryTabCompleter}else{if(G.type==qwebirc.ui.WINDOW_QUERY){obj=qwebirc.ui.QueryNickTabCompleter}else{if(G.type==qwebirc.ui.WINDOW_CHANNEL){if(I==""){if((D!="")&&D.charAt(0)==" "){D=":"+D}else{D=": "+D}this.incr++}obj=qwebirc.ui.ChannelUsersTabCompleter}else{return }}}}}if(D==""){D=" "}this.obj=new obj(session,I,B,D,G);if(!$defined(this.obj)){return }}var A=this.obj.get();if(!$defined(A)){return }F.value=A[1];qwebirc.util.setCaretPos(F,A[0]+this.incr)},reset:function(){this.obj=null}});qwebirc.ui.TabIterator=new Class({initialize:function(G,F,E){this.prefix=F;if(!$defined(E)||E.length==0){this.list=null}else{var B=[];var D=qwebirc.irc.toIRCCompletion(G,F);for(var C=0;C<E.length;C++){var A=qwebirc.irc.toIRCCompletion(G,E[C]);if(A.startsWith(D)){B.push(E[C])}}this.list=B}this.pos=-1},next:function(){if(!$defined(this.list)){return null}this.pos=this.pos+1;if(this.pos>=this.list.length){this.pos=0}return this.list[this.pos]}});qwebirc.ui.BaseTabCompleter=new Class({initialize:function(D,B,E,C,A){this.existingNick=E;this.prefix=B;this.suffix=C;this.iterator=new qwebirc.ui.TabIterator(D,E,A)},get:function(){var B=this.iterator.next();if(!$defined(B)){return null}var A=this.prefix+B;return[A.length,A+this.suffix]}});qwebirc.ui.QueryTabCompleter=new Class({Extends:qwebirc.ui.BaseTabCompleter,initialize:function(C,A,D,B){this.parent(C,A,D,B,C.irc.lastNicks)}});qwebirc.ui.QueryNickTabCompleter=new Class({Extends:qwebirc.ui.BaseTabCompleter,initialize:function(E,B,D,C){var A=window.name;this.parent(E,B,D,C,[A])}});qwebirc.ui.ChannelNameTabCompleter=new Class({Extends:qwebirc.ui.BaseTabCompleter,initialize:function(G,E,A,I){var C=[];for(var F in G.irc.channels){var H=G.windows[F];if($defined(H)){H=H.lastSelected}C.push([H,F])}C.sort(function(K,J){return J[0]-K[0]});var B=[];for(var D=0;D<C.length;D++){B.push(C[D][1])}this.parent(G,E,A,I,B)}});qwebirc.ui.ChannelUsersTabCompleter=new Class({Extends:qwebirc.ui.BaseTabCompleter,initialize:function(D,A,C,B,E){var E=D.irc.tracker.getSortedByLastSpoke(ui.getActiveWindow().name);this.parent(D,A,C,B,E)}});qwebirc.ui.themes.ThemeControlCodeMap={C:"\x03",B:"\x02",U:"\x1F",O:"\x0F","{":"\x00","}":"\x00","[":"qwebirc://whois/","]":"/","$":"$"};qwebirc.ui.themes.Default={PREFIX:["$C4==$O "],SIGNON:["Signed on!",true],CONNECT:["Connected to server.",true],RAW:["$m",true],DISCONNECT:["Disconnected from server: $m",true],ERROR:["ERROR: $m",true],SERVERNOTICE:["$m",true],JOIN:["${$N$} [$h] has joined $c",true],OURJOIN:["${$N$} [$h] has joined $c",true],PART:["${$N$} [$h] has left $c [$m]",true],KICK:["${$v$} was kicked from $c by ${$N$} [$m]",true],MODE:["mode/$c [$m] by ${$N$}",true],QUIT:["${$N$} [$h] has quit [$m]",true],NICK:["${$n$} has changed nick to ${$[$w$]$}",true],TOPIC:["${$N$} changed the topic of $c to: $m",true],UMODE:["Usermode change: $m",true],INVITE:["$N invites you to join $c",true],HILIGHT:["$C4"],HILIGHTEND:["$O"],CHANMSG:["<${$@$($N$)$}> $m"],PRIVMSG:["<$($N$)> $m"],CHANNOTICE:["-${$($N$)$}:$c- $m"],PRIVNOTICE:["-$($N$)- $m"],OURCHANMSG:["<$@$N> $m"],OURPRIVMSG:["<$N> $m"],OURTARGETEDMSG:["*$[$t$]* $m"],OURTARGETEDNOTICE:["[notice($[$t$])] $m"],OURCHANNOTICE:["-$N:$t- $m"],OURPRIVNOTICE:["-$N- $m"],OURCHANACTION:[" * $N $m"],OURPRIVACTION:[" * $N $m"],CHANACTION:[" * ${$($N$)$} $m"],PRIVACTION:[" * $($N$) $m"],CHANCTCP:["$N [$h] requested CTCP $x from $c: $m"],PRIVCTCP:["$N [$h] requested CTCP $x from $-: $m"],CTCPREPLY:["CTCP $x reply from $N: $m"],OURCHANCTCP:["[ctcp($t)] $x $m"],OURPRIVCTCP:["[ctcp($t)] $x $m"],OURTARGETEDCTCP:["[ctcp($t)] $x $m"],WHOISUSER:["$B$N$B [$h]",true],WHOISREALNAME:[" realname : $m",true],WHOISCHANNELS:[" channels : $m",true],WHOISSERVER:[" server   : $x [$m]",true],WHOISACCOUNT:[" account  : qwebirc://accinfo/$m",true],WHOISIDLE:[" idle     : $x [connected: $m]",true],WHOISAWAY:[" away     : $m",true],WHOISOPER:[" oper     : $BIRC Operator$B",true],WHOISOPERNAME:[" operedas : $m",true],WHOISACTUALLY:[" realhost : $m [ip: $x]",true],WHOISAVAILHELP:[" oper     : is available for help.",true],WHOISREGGED:[" regged   : has a registered nick.",true],WHOISMODES:[" modes    : $m",true],WHOISREALHOST:[" realhost : $m ($x)",true],WHOISGENERICTEXT:[" info     : $m",true],WHOISEND:["End of WHOIS",true],AWAY:["$N is away: $m",true],GENERICERROR:["$m: $t",true],GENERICMESSAGE:["$m",true],WALLOPS:["WALLOP $n: $t",true],CHANNELCREATIONTIME:["Channel $c was created at: $m",true],CHANNELMODEIS:["Channel modes on $c are: $m",true]};qwebirc.ui.Theme=new Class({initialize:function(B){this.__theme=qwebirc.util.dictCopy(qwebirc.ui.themes.Default);if(B){for(var A in B){this.__theme[A]=B[A]}}for(var A in this.__theme){if(A=="PREFIX"){continue}var C=this.__theme[A];if(C[1]){this.__theme[A]=this.__theme.PREFIX+C[0]}else{this.__theme[A]=C[0]}}this.__ccmap=qwebirc.util.dictCopy(qwebirc.ui.themes.ThemeControlCodeMap);this.__ccmaph=qwebirc.util.dictCopy(this.__ccmap);this.__ccmaph["("]=this.message("HILIGHT",{},this.__ccmap);this.__ccmaph[")"]=this.message("HILIGHTEND",{},this.__ccmap);this.__ccmaph["{"]=this.__ccmaph["}"]=""},__dollarSubstitute:function(I,G,A){var D=[];var C=I.split("");for(var F=0;F<C.length;F++){var H=C[F];if(H=="$"&&(F<=C.length-1)){var E=C[++F];var B=A[E];if(!B){B=G[E]}if(B){D.push(B)}}else{D.push(H)}}return D.join("")},message:function(B,C,A){var D;if(A){D=this.__ccmaph}else{D=this.__ccmap}if(C&&C.n){C.N="qwebirc://whois/"+C.n+"/"}return this.__dollarSubstitute(this.__theme[B],C,D)}});qwebirc.ui.urlificate=function(D,B,H){var E=/[[\)|\]]?(\.*|[\,;])$/;var G=[];var I=function(S,R,P,L){for(;;){var N=S.search(R);if(N==-1){P(S);break}var M=S.match(R);var Q=S.substring(0,N);var K=M[0];var J=S.substring(N+K.length);P(Q);var O=L(K,P);if(!O){O=""}S=O+J}};var A=function(J){G.push(J);qwebirc.util.NBSPCreate(J,B)};var F=function(L){var M=L.replace(E,"");G.push(M);var K=L.substring(M.length);var J=new Element("span");J.href="#";J.addClass("hyperlink-channel");J.addEvent("click",function(P){new Event(P).stop();if(D.irc){D.irc.exec("/JOIN "+M)}else{var N=ui.getWindow(qwebirc.ui.WINDOW_CUSTOM,"Connect");if(N){var O=N.subWindow.connectChannel(M);if(!O){ui.selectWindow(N);N.subWindow.nickBox.focus()}}}});J.appendChild(document.createTextNode(M));B.appendChild(J);return K};var C=function(W,S){var J=W.replace(E,"");var L=W.substring(J.length);var K="";var T=null;var R="_blank";var O=J;var Q="a";var P;var V=J.match(/^qwebirc:\/\/(.*)$/);if(V){var N=V[1].match(/^([^\/]+)\/([^\/]+)\/?(.*)$/);if(!N){S(W);return }var M=ui.urlDispatcher(N[1]);if(M){P=N[1];Q=M[0];if(M[0]!="a"){J=null}else{J="#"}T=M[1];O=unescape(N[2]);R=null}else{S(W);return }if(N[3]){L=N[3]+L}}else{if(J.match(/^www\./)){J="http://"+J}}var U=new Element(Q);if(P){U.addClass("hyperlink-"+P)}if(J){U.href=J;if(R){U.target=R}}G.push(O);U.appendChild(document.createTextNode(O));B.appendChild(U);if($defined(T)){U.addEvent("click",function(X){new Event(X).stop();T(O)})}else{U.addEvent("click",function(X){new Event(X).stopPropagation()})}return L};I(H,/\b((https?|ftp|qwebirc):\/\/|www\.)[^ ]+/,function(J){I(J,/\B#[^ ,]+/,A,F)},C);return G.join("")};qwebirc.ui.Panes.About={title:"About",command:function(A){return"ABOUT"},menuitem:function(A){return"About Iris"},menupos:600};qwebirc.ui.Panes.About.pclass=new Class({Implements:[Events],session:null,initialize:function(E,B){this.session=E;var D=function(){B.lines.set("html",'<div class="loading">Loading. . .</div>')};var A=D.delay(500);var C=qwebirc.ui.RequestTransformHTML(E,{url:conf.frontend.static_base_url+"panes/about.html",update:B.lines,onSuccess:function(){$clear(A);B.lines.getElement("input[class=close]").addEvent("click",function(){ui.closeWindow(B)});B.lines.getElement("span[class=version]").set("text","v"+qwebirc.VERSION)}});C.get()}});qwebirc.ui.Panes.Connect={title:"Connect",command:function(A){return null},menuitem:function(A){return null}};qwebirc.ui.Panes.Connect.pclass=new Class({Implements:[Events],session:null,parent:null,connectCallback:null,nickBox:null,chanBox:null,initialize:function(B,A){this.session=B;this.parent=A.lines;if(!conf.frontend.prompt&&conf.frontend.initial_nick&&conf.frontend.initial_chans){this.createConfirmBox()}else{this.createLoginBox(null)}},connectChannel:function(A){if(conf.frontend.chan_autoconnect&&(conf.frontend.initial_nick||(this.nickBox&&this.nickBox.value))){this.connect(A);return true}else{if(this.chanBox!=null){this.chanBox.set("value",A)}else{this.createLoginBox(A)}return false}},connect:function(A){while(this.parent.childNodes.length>0){this.parent.removeChild(this.parent.firstChild)}var B={};if(this.nickBox!=null){B.nickname=this.nickBox.value}else{B.nickname=conf.frontend.initial_nick}if(A!=null){B.autojoin=A}else{if(this.chanBox!=null){B.autojoin=this.chanBox.value}else{B.autojoin=conf.frontend.initial_chans}}if(this.session.atheme.state){B.authUser=this.session.atheme.user;B.authSecret=this.session.atheme.secret}this.connectCallback(B)},createConfirmBox:function(){while(this.parent.childNodes.length>0){this.parent.removeChild(this.parent.firstChild)}var C=new Element("table");C.addClass("qwebirc-centrebox");this.parent.appendChild(C);var F=new Element("tbody");C.appendChild(F);var I=new Element("tr");F.appendChild(I);var D=new Element("td");I.appendChild(D);var G=new Element("table");G.addClass("qwebirc-confirmbox");D.appendChild(G);var F=new Element("tbody");G.appendChild(F);var I=new Element("tr");F.appendChild(I);I.addClass("tr1");var J=new Element("td");I.appendChild(J);var A=new Element("b");A.set("text",conf.frontend.initial_nick);var H=conf.frontend.initial_chans.split(" ")[0].split(",");J.appendChild(document.createTextNode("To connect to "+conf.frontend.network_name+" IRC and join channel"+((H.length>1)?"s":"")+" "));for(var E=0;E<H.length;E++){if((H.length>1)&&(E==H.length-1)){J.appendChild(document.createTextNode(" and "))}else{if(E>0){J.appendChild(document.createTextNode(", "))}}J.appendChild(new Element("b").set("text",H[E]))}if(!conf.frontend.initial_nick_rand){J.appendChild(document.createTextNode(" as "));J.appendChild(A)}J.appendChild(document.createTextNode(" click 'Connect'."));J.appendChild(new Element("br"));var I=new Element("tr");F.appendChild(I);I.addClass("tr2");var D=new Element("td");I.appendChild(D);var B=new Element("input",{type:"submit",value:"Connect"});D.appendChild(B);B.focus();B.addEvent("click",function(K){this.connect(null)}.bind(this))},createLoginBox:function(K){while(this.parent.childNodes.length>0){this.parent.removeChild(this.parent.firstChild)}var D=new Element("table");D.addClass("qwebirc-centrebox");this.parent.appendChild(D);var F=new Element("tbody");D.appendChild(F);var M=new Element("tr");F.appendChild(M);var E=new Element("td");M.appendChild(E);var G=new Element("table");G.addClass("qwebirc-loginbox");E.appendChild(G);var F=new Element("tbody");G.appendChild(F);var M=new Element("tr");F.appendChild(M);M.addClass("tr1");var E=new Element("td");M.appendChild(E);E.set("html","<h1>Connect to "+conf.frontend.network_name+" IRC</h1>");var M=new Element("tr");F.appendChild(M);M.addClass("tr2");var E=new Element("td");M.appendChild(E);var C=new Element("form");E.appendChild(C);var I=new Element("table");C.appendChild(I);var F=new Element("tbody");I.appendChild(F);function J(O,T,P){var R=new Element("tr");F.appendChild(R);var S=new Element("td");if(O){S.set("text",O)}R.appendChild(S);var Q=new Element("td");R.appendChild(Q);if($defined(T)){Q.appendChild(T)}if($defined(P)){R.setStyles(P);return[R,Q]}return Q}this.nickBox=new Element("input");J("Nickname:",this.nickBox);if(conf.atheme.nickserv_login){var L=new Element("input");L.set("type","checkbox");L.set("checked",false);J("Login to Services:",L);var N=new Element("input");N.set("type","password");var H=J("Password:",N,{})[0];H.setStyle("display","none");H.visible=false;L.addEvent("click",function(O){H.visible=!H.visible;H.setStyle("display",H.visible?null:"none")}.bind(this))}if(K||conf.frontend.chan_prompt||!conf.frontend.initial_chans){this.chanBox=new Element("input");J("Channels:",this.chanBox)}var B=new Element("input",{type:"submit"});B.set("value","Connect");var A=J(undefined,B);C.addEvent("submit",function(O){new Event(O).stop();if(!this.nickBox.value){alert("You must supply a nickname.");this.nickBox.focus();return }if(!this.nickBox.value.match(/^[a-zA-Z0-9`^\-_\[\]{}|\\]+$/)){alert('Invalid nickname entered; only characters in the list "A-Z a-z 0-9 ` ^ - \\ [ ] { } |" are allowed.');this.nickBox.focus();return }if(this.nickBox.value.match(/^\d/)||this.nickBox.value[0]=="-"){alert("Invalid nickname entered; nicknames may not start with - or a number.");this.nickBox.focus();return }Cookie.write("iris-nick",this.nickBox.value,{duration:3650});if(conf.atheme.sasl_type=="AUTHCOOKIE"&&N.value){qwebirc.irc.AthemeQuery.login(function(P){if(P==null){alert("Authentication failed")}else{qwebirc.ui.Atheme.handleLogin(this.session,this.nickBox.value,P)}this.connect(null)}.bind(this),this.nickBox.value,N.value)}else{if(conf.atheme.sasl_type=="PLAIN"&&N.value){this.session.atheme.state=true;this.session.atheme.user=this.nickBox.value;this.session.atheme.secret=N.value;this.connect(null)}else{qwebirc.ui.Atheme.handleLogout(this.session);this.connect(null)}}}.bind(this));if(Cookie.read("iris-nick")!=null){this.nickBox.set("value",Cookie.read("iris-nick"))}else{if(conf.frontend.initial_nick){this.nickBox.set("value",conf.frontend.initial_nick)}}if(this.chanBox!=null&&K){this.chanBox.set("value",K)}else{if(this.chanBox!=null){this.chanBox.set("value",conf.frontend.initial_chans)}}this.nickBox.focus()}});qwebirc.ui.Panes.Embed={title:"Webchat Wizard",command:function(A){return"EMBED"},menuitem:function(A){return"Add webchat to your site"},menupos:200};qwebirc.ui.Panes.Embed.pclass=new Class({Implements:[Events],parent:null,session:null,initialize:function(B,A){this.session=B;this.window=A;this.parent=A.lines;this.create();this.addSteps()},create:function(){this.t=this.parent;var E=this.newRow();this.title=new Element("h2");this.title.setStyle("margin-top","0px");this.title.setStyle("margin-bottom","5px");E.appendChild(this.title);this.firstRow=this.newRow();this.middleRow=this.newRow();var B=this.newRow();this.hint=new Element("div");this.hint.setStyle("font-size","0.8em");this.hint.setStyle("font-style","italic");B.appendChild(this.hint);var F=this.newRow();this.example=new Element("pre");F.appendChild(this.example);var D=this.newRow();D.addClass("wizardcontrols");var C=new Element("input");C.type="submit";C.value="< Back";C.addEvent("click",this.back.bind(this));D.appendChild(C);var A=new Element("input");A.type="submit";A.value="Next >";D.appendChild(A);A.addEvent("click",this.next.bind(this));this.nextBtn=A;this.backBtn=C},newRow:function(){var A=new Element("div");this.t.appendChild(A);return A},newStep:function(A){return new qwebirc.ui.Panes.Embed.Step(this,A)},newRadio:function(D,G,B,C){var F=new Element("div");D.appendChild(F);var H=qwebirc.util.generateID();var E=qwebirc.util.createInput("radio",F,B,C,H);var A=new Element("label",{"for":H});A.appendChild(document.createTextNode(G));F.appendChild(A);return E},addSteps:function(){var G=function(J){if(Browser.Engine.trident){var K=function(){this.focus();if(J){this.select()}};K.delay(100,this,[])}else{this.focus();this.select()}};this.welcome=this.newStep({title:"Add webchat to your site!",first:"This wizard will help you create an embedded client by asking you questions then giving you the code to add to your website.<br/><br/>You can use the <b>Next</b> and <b>Back</b> buttons to navigate through the wizard; click <b>Next</b> to continue."});var I=conf.frontend.initial_nick_default;this.nicknameBox=new Element("input");this.nicknameBox.addClass("text");this.nicknameBox.set("value",I);this.nickname=this.newStep({title:"Set nickname",first:"Enter the nickname you would like the client to use by default. Leave it blank for users to be forced to enter a nick themselves:",hint:"You can use a random nick by ending the nick in a series of '.' characters, each of which will be replaced by a random digit.",middle:this.nicknameBox}).addEvent("show",G.bind(this.nicknameBox));var C=conf.frontend.initial_chans_default;this.chanBox=new Element("input");this.chanBox.addClass("text");this.chanBox.set("value",C);this.chans=this.newStep({title:"Set channels",first:"Enter the channels you would like the client to join on startup:",hint:"You can supply multiple channels by seperating them with a comma, e.g.:",example:"#rogue,#eu-mage",middle:this.chanBox}).addEvent("show",G.bind(this.chanBox));var D=conf.frontend.prompt_default;var F=new Element("form");this.connectdialog=this.newStep({title:"Display connect dialog?",first:"Do you want the user to be shown the connect dialog (with the values you have supplied pre-entered) or just a connect confirmation?",middle:F,hint:"You need to display the dialog if you want the user to be able to edit their nickname before connecting."});this.connectdialogr=this.newRadio(F,"Show the connect dialog.","prompt",D);var A=this.newRadio(F,"Connect without displaying the dialog.","prompt",!D);var E=new Element("form");this.choosecolor=this.newStep({title:"Customize color?",first:"Would you like to customize the colors used by the widget?",middle:E,hint:"Color customization can be used to make the widget match the rest of your site."});var B=this.newRadio(E,"Use the default colors.","colors",true);this.coloroptr=this.newRadio(E,"Choose custom widget colors.","colors",false);this.fgColor=new Element("input");this.fgColor.addClass("text");this.fgColor.set("value",conf.ui.fg_color);this.foregroundcolor=this.newStep({title:"Set foreground color",first:"Set the widget's foreground (text) color:",middle:this.fgColor,hint:"Enter a hexadecimal color specification, e.g.:",example:"#0A0A0A"}).addEvent("show",G.bind(this.fgColor));this.secColor=new Element("input");this.secColor.addClass("text");this.secColor.set("value",conf.ui.fg_sec_color);this.secondarycolor=this.newStep({title:"Set secondary color",first:"Set the widget's secondary foreground (heading) color:",middle:this.secColor,hint:"Enter a hexadecimal color specification, e.g.:",example:"#1A1A1A"}).addEvent("show",G.bind(this.secColor));this.bgColor=new Element("input");this.bgColor.addClass("text");this.bgColor.set("value",conf.ui.bg_color);this.backgroundcolor=this.newStep({title:"Set background color",first:"Set the widget's background color:",middle:this.bgColor,hint:"Enter a hexadecimal color specification, e.g.:",example:"#FFFFFF"}).addEvent("show",G.bind(this.bgColor));var H=new Element("div");this.finish=this.newStep({title:"Finished!",first:"Your custom link is:",middle:H}).addEvent("show",function(){var M=new Element("a");var J=new Element("input");J.addClass("iframetext");var K=this.generateURL(false);M.href=K;M.target="_blank";M.appendChild(document.createTextNode(K));J.value='<iframe src="'+K+'" width="647" height="400"></iframe>';var L=[M,new Element("br"),new Element("br"),document.createTextNode("You can embed this into your page with the following code:"),new Element("br"),J];while(H.childNodes.length>0){H.removeChild(H.childNodes[0])}L.forEach(function(N){H.appendChild(N)});G.bind(J)(true);J.addEvent("click",function(){this.select()}.bind(J))}.bind(this));this.updateSteps();this.step=0;this.showStep()},updateSteps:function(){this.steps=[this.welcome,this.nickname,this.chans];if(this.chanBox.value!=""&&this.nicknameBox.value!=""){this.steps.push(this.connectdialog)}this.steps.push(this.choosecolor);if(this.coloroptr.checked==true){this.steps.push(this.foregroundcolor);this.steps.push(this.secondarycolor);this.steps.push(this.backgroundcolor)}this.steps.push(this.finish)},showStep:function(){this.backBtn.disabled=!(this.step>0);this.nextBtn.value=(this.step>=this.steps.length-1)?"Close":"Next >";this.steps[this.step].show()},next:function(){var A=this.steps[this.step].options.premove;if(A&&!A()){return }this.updateSteps();if(this.step>=this.steps.length-1){this.close();return }this.step=this.step+1;this.showStep()},close:function(){ui.closeWindow(this.window)},back:function(){if(this.step<=0){return }this.step=this.step-1;this.showStep()},generateURL:function(){var E=this.chanBox.value;var D=this.nicknameBox.value;var F=this.connectdialogr.checked&&E!=""&&D!="";var B=this.coloroptr.checked;var C=this.fgColor.value;var H=this.secColor.value;var G=this.bgColor.value;var J=[];J.push("nick="+escape(D));if(E){var I=E.split(",");var A=[];I.forEach(function(K){if(K.charAt(0)=="#"){K=K.substring(1)}A.push(K)});J.push("channels="+escape(A.join(",")))}else{J.push("channels=")}if(B){J.push("fg_color="+C.replace("#",""));J.push("fg_sec_color="+H.replace("#",""));J.push("bg_color="+G.replace("#",""))}if(F){J.push("prompt=1")}else{if(E!=""&&D!=""){J.push("prompt=0")}}return conf.frontend.base_url+(J.length>0?"?":"")+J.join("&")}});qwebirc.ui.Panes.Embed.Step=new Class({Implements:[Options,Events],options:{title:"",first:"",hint:"",middle:null,premove:null,example:""},initialize:function(B,A){this.setOptions(A);this.parent=B},show:function(){this.parent.title.set("html",this.options.title);this.parent.firstRow.set("html",this.options.first);this.parent.hint.set("html",this.options.hint);this.parent.example.set("text",this.options.example);while(this.parent.middleRow.childNodes.length>0){this.parent.middleRow.removeChild(this.parent.middleRow.childNodes[0])}if($defined(this.options.middle)){this.parent.middleRow.appendChild(this.options.middle)}this.fireEvent("show")}});qwebirc.ui.Panes.FAQ={title:"FAQ",command:function(A){return"FAQ"},menuitem:function(A){return"Frequently asked questions"},menupos:400};qwebirc.ui.Panes.FAQ.pclass=new Class({Implements:[Events],session:null,initialize:function(E,B){this.session=E;var D=function(){B.lines.set("html",'<div class="loading">Loading. . .</div>')};var A=D.delay(500);var C=qwebirc.ui.RequestTransformHTML(E,{url:conf.frontend.static_base_url+"panes/faq.html",update:B.lines,onSuccess:function(){$clear(A);B.lines.getElement("input[class=close]").addEvent("click",function(){ui.closeWindow(B)}.bind(this))}.bind(this)});C.get()}});qwebirc.ui.Panes.Feedback={title:"Feedback",command:function(A){return"FEEDBACK"},menuitem:function(A){return"Feedback"},menupos:500};qwebirc.ui.Panes.Feedback.pclass=new Class({Implements:[Events],session:null,initialize:function(E,B){this.session=E;this.textboxVisible=false;var D=function(){B.lines.set("html",'<div class="loading">Loading. . .</div>')};var A=D.delay(500);this.addEvent("select",this.onSelect);var C=qwebirc.ui.RequestTransformHTML(E,{url:conf.frontend.static_base_url+"panes/feedback.html",update:B.lines,onSuccess:function(){$clear(A);B.lines.getElement("input[class=close]").addEvent("click",function(){ui.closeWindow(B)}.bind(this));B.lines.getElement("input[class=close2]").addEvent("click",function(){ui.closeWindow(B)}.bind(this));var F=B.lines.getElement("textarea");this.textbox=F;B.lines.getElement("input[class=submitfeedback]").addEvent("click",function(){this.sendFeedback(B.lines,F,F.value)}.bind(this));this.textboxVisible=true;this.onSelect()}.bind(this)});C.get()},onSelect:function(){if(this.textboxVisible){this.textbox.focus()}},sendFeedback:function(J,I,L){L=L.replace(/^\s*/,"").replace(/\s*$/,"");var K=J.getElement("p[class=maintext]");if(L.length<25){K.set("text","I don't suppose you could enter a little bit more? Thanks!");I.focus();return }this.textboxVisible=false;var F=w.lines.getElement("div[class=enterarea]");F.setStyle("display","none");var C=w.lines.getElement("div[class=messagearea]");var H=w.lines.getElement("p[class=messagetext]");var B=w.lines.getElement("input[class=close2]");H.set("text","Submitting. . .");C.setStyle("display","");var G=0;var E=encodeURIComponent(L);for(var D=0;D<L.length;D++){G=((G+1)%256)^(L.charCodeAt(D)%256)}var A=new Request({url:conf.frontend.dynamic_base_url+"feedback",onSuccess:function(){H.set("text","Submitted successfully, thanks for the feedback!");B.setStyle("display","")},onFailure:function(){this.textboxVisible=true;C.setStyle("display","none");F.setStyle("display","");K.set("text","Looks like something went wrong submitting :(")}.bind(this)}).send("feedback="+L+"&c="+G)}});qwebirc.ui.Panes.List={title:"Channels",command:function(A){if(conf.atheme.chan_list){return"LIST"}},menuitem:function(A){if(conf.atheme.chan_list){return"Channel list"}},menupos:100};qwebirc.ui.Panes.List.pclass=new Class({Implements:[Events],session:null,parent:null,cloud:true,loading:null,timestamp:0,page:1,namefilter:"",topicfilter:"",filterBox:null,viewBox:null,chanBox:null,pageBox:null,viewChange:null,pageText:null,prev:null,next:null,initialize:function(G,I){this.session=G;this.parent=I.lines;this.cloud=conf.atheme.chan_list_cloud_view;var H=new Element("table");var D=new Element("tbody");H.appendChild(D);this.viewChange=new Element("a",{"class":"",href:"#"});this.viewChange.addEvent("click",function(K){if(this.cloud){this.createListView()}else{this.createCloudView()}}.bind(this));var J=new Element("td",{"class":"viewchange"});J.appendChild(this.viewChange);D.appendChild(J);var C=new Element("form",{"class":"filterbox"});var B=new Element("span",{"class":"inputbox"});B.appendText("Filter by Name:");var A=new Element("input");B.appendChild(A);C.appendChild(B);var B=new Element("span",{"class":"inputbox"});B.appendText("Filter by Topic:");var F=new Element("input");B.appendChild(F);C.appendChild(B);var E=new Element("input",{type:"submit",value:"Refresh and Apply Filters"});E.addEvent("click",function(K){(new Event(K)).stop();if(A.value!=this.namefilter||F.value!=this.topicfilter){this.namefilter=A.value;this.topicfilter=F.value;this.page=1}this.timestamp=0;this.update()}.bind(this));C.appendChild(E);var J=new Element("td");J.appendChild(C);D.appendChild(J);this.parent.appendChild(H);this.viewBox=new Element("div");this.parent.appendChild(this.viewBox);if(this.cloud){this.createCloudView()}else{this.createListView()}},createListView:function(){this.cloud=false;while(this.viewBox.childNodes.length>0){this.viewBox.removeChild(this.viewBox.firstChild)}this.viewChange.set("text","Switch to cloud view...");var B=new Element("table",{"class":"listbox",cellspacing:"0"});this.chanBox=new Element("tbody");B.appendChild(this.chanBox);this.viewBox.appendChild(B);this.pageBox=new Element("div",{"class":"pagebox"});this.pageBox.style.display="none";this.prev=new Element("span");this.pageText=new Element("span");this.next=new Element("span");this.pageBox.appendChild(this.prev);this.pageBox.appendText(" - ");this.pageBox.appendChild(this.pageText);this.pageBox.appendText(" - ");this.pageBox.appendChild(this.next);this.viewBox.appendChild(this.pageBox);var A=function(){this.chanBox.set("html",'<tr><td class="loading">Loading. . .</td></tr>')}.bind(this);this.loading=A.delay(500);this.update()},createCloudView:function(){this.cloud=true;this.page=1;while(this.viewBox.childNodes.length>0){this.viewBox.removeChild(this.viewBox.firstChild)}this.viewChange.set("text","Switch to list view...");var A=new Element("div",{"class":"hoverhint"});A.appendText("Hover over a channel to view its topic!");this.viewBox.appendChild(A);this.chanBox=new Element("div",{"class":"tagbox"});this.viewBox.appendChild(this.chanBox);this.update()},update:function(){qwebirc.irc.AthemeQuery.channelList(function(G,I,J){this.timestamp=I;if(this.loading!=null){clearTimeout(this.loading);this.loading=null}if(this.chanBox.hasChildNodes()){while(this.chanBox.childNodes.length>=1){this.chanBox.removeChild(this.chanBox.firstChild)}}if(G==null){if(this.cloud){this.chanBox.set("html",'<span class="loading">Unable to load channel list, please try reopening the channel list later.</span>')}else{this.chanBox.set("html",'<tr><td class="loading">Unable to load channel list, please try refreshing again later.</td></tr>')}return }if(G.length==0){if(this.cloud){this.chanBox.set("html",'<span class="loading">No channels currently exist, please try refreshing again later.</span>')}else{this.chanBox.set("html",'<tr><td class="loading">No channels currently exist, please try refreshing again later.</td></tr>')}return }var A=G[G.length-1].users;var K=G[0].users-A;if(!this.cloud){var D=new Element("tr");var B=new Element("th",{"class":"name"});B.appendText("Channel");D.appendChild(B);var C=new Element("th",{"class":"users"});C.appendText("Users");D.appendChild(C);var F=new Element("th",{"class":"chantopic"});F.appendText("Topic");D.appendChild(F);this.chanBox.appendChild(D)}if(this.cloud){G.sort(function(M,L){an=M.name.toLowerCase();bn=L.name.toLowerCase();if(an<bn){return -1}if(an>bn){return 1}return 0})}for(var E=0;E<G.length;E++){var H;if(this.cloud){H=new Element("span",{"class":"chantag",style:"font-size: "+(1+2*(G[E].users-A)/(K+1))+"em;"})}else{H=new Element("tr")}this.makeChannel(H,G[E],E%2+1);this.chanBox.appendChild(H);if(this.cloud){this.chanBox.appendText(" ")}}}.bind(this),this.timestamp,"100",this.page,this.namefilter,this.topicfilter)},updatePaging:function(D){if(this.pageText){var B=Math.ceil(D/100);while(this.pageText.childNodes.length>=1){this.pageText.removeChild(this.pageText.firstChild)}this.pageText.appendText("Page "+(this.page)+" of "+B)}if(this.prev&&this.next){while(this.prev.childNodes.length>=1){this.prev.removeChild(this.prev.firstChild)}if(this.page>1){var C=new Element("a",{href:"#"});C.appendText("Prev Page");C.addEvent("click",function(E){this.page--;C.removeEvents();this.update()}.bind(this));this.prev.appendChild(C)}else{this.prev.appendText("Prev Page")}while(this.next.childNodes.length>=1){this.next.removeChild(this.next.firstChild)}if(this.page<B){var A=new Element("a",{href:"#"});A.appendText("Next Page");A.addEvent("click",function(E){this.page++;A.removeEvents();this.update()}.bind(this));this.next.appendChild(A)}else{this.next.appendText("Next Page")}}if(this.PageBox){if(this.page!=1||B>1){this.pageBox.style.display="block"}else{this.pageBox.style.display="none"}}},makeChannel:function(B,E,A){var D;if(this.cloud){D=B}else{D=new Element("td",{"class":"name chan"+A})}var G=function(){var H=E.name;B.addEvent("click",function(K){new Event(K).stop();if(this.session.irc){this.session.irc.exec("/JOIN "+H)}else{var I=ui.getWindow(qwebirc.ui.WINDOW_CUSTOM,"Connect");if(I){var J=I.subWindow.connectChannel(H);if(!J){ui.selectWindow(I);I.subWindow.nickBox.focus()}}}}.bind(this))}.bind(this);G();D.appendText(E.name);if(this.cloud){B.setProperty("title",E.topic)}else{B.appendChild(D);var F=new Element("td",{"class":"users chan"+A});F.appendText(E.users);B.appendChild(F);var C=new Element("td",{"class":"chantopic chan"+A});qwebirc.ui.Colourise(this.session,E.topic,C);B.appendChild(C)}}});qwebirc.ui.Panes.Options={title:"Options",command:function(A){return"OPTIONS"},menuitem:function(A){return"Options"},menupos:300};qwebirc.ui.Panes.Options.pclass=new Class({Implements:[Events],session:null,initialize:function(B,A){this.session=B;this.window=A;this.parent=A.lines;this.createElements()},createElements:function(){var E=function(O,P){var Q=new Element(O);P.appendChild(Q);return Q};var M=E("table",this.parent);var B=E("tbody",M);this.boxList=[];this.options={};for(var C=0;C<qwebirc.options.Options.length;C++){var K=qwebirc.options.Options[C];var G=qwebirc.options.CheckInput;if($defined(K.type)){G=K.type}if(G==qwebirc.options.ColorInput&&$defined(K.isEnabled)){if(!K.isEnabled(this.session)){continue}}var N=E("tr",B);var H=E("td",N);var F=E("td",N);var J=new G(this.session,this.options,F,K,C);var I=new Element("label",{"for":J.id});I.set("text",K.label+":");H.appendChild(I);this.boxList.push([K,J]);this.options[K.category+"."+K.option]=J}var A=E("tr",B);var H=E("td",A);var F=E("td",A);var D=qwebirc.util.createInput("submit",F);D.value="Save";D.addEvent("click",function(){this.save();ui.closeWindow(this.window)}.bind(this));var L=qwebirc.util.createInput("submit",F);L.value="Cancel";L.addEvent("click",function(){this.cancel();ui.closeWindow(this.window)}.bind(this))},save:function(){this.boxList.forEach(function(A){var B=A[0];var C=A[1];conf[B.category][B.option]=C.get();if(B.onSave){B.onSave(this.session)}}.bind(this));qwebirc.config.saveUserSettings(conf)},cancel:function(){this.boxList.forEach(function(A){if(A[0].onCancel){A[0].onCancel(this.session)}}.bind(this))}});qwebirc.ui.Panes.PrivacyPolicy={title:"Privacy Policy",command:function(A){if(conf.ui.privacy){return"PRIVACYPOLICY"}else{return null}},menuitem:function(A){if(conf.ui.privacy){return"Privacy policy"}else{return null}},menupos:700};qwebirc.ui.Panes.PrivacyPolicy.pclass=new Class({Implements:[Events],session:null,initialize:function(E,B){this.session=E;var D=function(){B.lines.set("html",'<div class="loading">Loading. . .</div>')};var A=D.delay(500);var C=qwebirc.ui.RequestTransformHTML(E,{url:conf.frontend.static_base_url+"panes/privacypolicy.html",update:B.lines,onSuccess:function(){$clear(A);B.lines.getElement("input[class=close]").addEvent("click",function(){ui.closeWindow(B)}.bind(this))}.bind(this)});C.get()}});qwebirc.ui.QUI=new Class({Extends:qwebirc.ui.RootUI,initialize:function(B,A){this.parent(B,A,qwebirc.ui.QUI.Window,"qui");this.theme=new qwebirc.ui.Theme(null);this.setModifiableStylesheet("qui")},postInitialize:function(){this.qjsui=new qwebirc.ui.QUI.JSUI("qwebirc-qui",this.parentElement);this.qjsui.addEvent("reflow",function(){var A=this.getActiveWindow();if($defined(A)){A.onResize()}}.bind(this));this.qjsui.top.addClass("outertabbar");this.qjsui.bottom.addClass("input");this.qjsui.right.addClass("nicklist");this.qjsui.topic.addClass("topic");this.qjsui.middle.addClass("lines");this.outerTabs=this.qjsui.top;this.tabs=new Element("div",{"class":"tabbar"});this.__createDropdownMenu();this.outerTabs.appendChild(this.tabs);this.origtopic=this.topic=this.qjsui.topic;this.origlines=this.lines=this.qjsui.middle;this.orignicklist=this.nicklist=this.qjsui.right;this.input=this.qjsui.bottom;this.reflow=this.qjsui.reflow.bind(this.qjsui);this.tabs.addEvent("mousewheel",function(A){var B=new Event(A);if(B.wheel>0){this.nextWindow()}else{if(B.wheel<0){this.prevWindow()}}B.stop()}.bind(this));this.createInput();this.reflow();this.reflow.delay(100)},__createDropdownMenu:function(){var A=new Element("span");A.addClass("dropdownmenu");A.hide=function(){A.setStyle("display","none");A.visible=false;document.removeEvent("mousedown",C)}.bind(this);var C=function(){A.hide()};A.hide();this.parentElement.appendChild(A);var D=[];var B=0;$each(qwebirc.ui.Panes,function(I,G,F){var H=I.menuitem(this.session);if(H){D[B]={};D[B].text=H;D[B].name=G;D[B].pos=I.menupos;B++}}.bind(this));D.sort(function(G,F){return G.pos-F.pos});D.forEach(function(F){var G=new Element("a");G.addEvent("mousedown",function(H){new Event(H).stop()});G.addEvent("click",function(){A.hide();ui.addPane(F.name)}.bind(this));G.set("text",F.text);A.appendChild(G)}.bind(this));var E=new Element("div");E.addClass("dropdown-tab");E.appendChild(new Element("img",{src:conf.frontend.static_base_url+"images/menu.png",title:"menu",alt:"menu"}));this.outerTabs.appendChild(E);A.show=function(F){new Event(F).stop();if(A.visible){A.hide();return }var G=this.outerTabs.getSize().y;A.setStyle("left",0);A.setStyle("top",G-1);A.setStyle("display","inline-block");A.visible=true;document.addEvent("mousedown",C)}.bind(this);E.addEvent("mousedown",function(F){new Event(F).stop()});E.addEvent("click",A.show)},createInput:function(){var D=new Element("form");this.input.appendChild(D);D.addClass("input");var B=new Element("input");D.appendChild(B);this.inputbox=B;this.inputbox.maxLength=512;var C=function(){if(B.value==""){return }this.resetTabComplete();this.getActiveWindow().historyExec(B.value);B.value=""}.bind(this);if(!qwebirc.util.deviceHasKeyboard()){B.addClass("mobile-input");var E=new Element("input",{type:"button"});E.addClass("mobile-button");E.addEvent("click",function(){C();B.focus()});E.value=">";this.input.appendChild(E);var A=function(){var H=this.input.getSize();var F=E.getSize();var G=H.x-F.x-5;E.setStyle("left",G);B.setStyle("width",G-5);E.setStyle("height",H.y)}.bind(this);this.qjsui.addEvent("reflow",A)}else{B.addClass("keyboard-input")}D.addEvent("submit",function(F){new Event(F).stop();C()});B.addEvent("focus",this.resetTabComplete.bind(this));B.addEvent("mousedown",this.resetTabComplete.bind(this));B.addEvent("keydown",function(H){var G;var I=B.value;if(H.key=="up"){G=this.commandhistory.upLine}else{if(H.key=="down"){G=this.commandhistory.downLine}else{if(H.key=="tab"){new Event(H).stop();this.tabComplete(B);return }else{this.resetTabComplete();return }}}this.resetTabComplete();if((I!="")&&(this.lastcvalue!=I)){this.commandhistory.addLine(I,true)}var F=G.bind(this.commandhistory)();new Event(H).stop();if(!F){F=""}this.lastcvalue=F;B.value=F;qwebirc.util.setAtEnd(B)}.bind(this))},setLines:function(A){this.lines.parentNode.replaceChild(A,this.lines);this.qjsui.middle=this.lines=A},setChannelItems:function(B,A){if(!$defined(B)){B=this.orignicklist;A=this.origtopic}this.nicklist.parentNode.replaceChild(B,this.nicklist);this.qjsui.right=this.nicklist=B;this.topic.parentNode.replaceChild(A,this.topic);this.qjsui.topic=this.topic=A},closeWindow:function(A){this.parent(A);this.tabs.removeChild(A.tab);this.tabs.removeChild(A.spaceNode);this.reflow()}});qwebirc.ui.QUI.JSUI=new Class({Implements:[Events],initialize:function(A,B,C){this.parent=B;this.sizer=$defined(C)?C:B;this.class_=A;this.create();this.reflowevent=null;window.addEvent("resize",function(){this.reflow(100)}.bind(this))},applyClasses:function(B,A){A.addClass("dynamicpanel");A.addClass(this.class_);if(B=="middle"){A.addClass("leftboundpanel")}else{if(B=="top"){A.addClass("topboundpanel");A.addClass("widepanel")}else{if(B=="topic"){A.addClass("widepanel")}else{if(B=="right"){A.addClass("rightboundpanel")}else{if(B=="bottom"){A.addClass("bottomboundpanel");A.addClass("widepanel")}}}}}},create:function(){var A=function(C){var B=new Element("div");this.applyClasses(C,B);this.parent.appendChild(B);return B}.bind(this);this.top=A("top");this.topic=A("topic");this.middle=A("middle");this.right=A("right");this.bottom=A("bottom")},reflow:function(A){if(!A){A=1}if(this.reflowevent){$clear(this.reflowevent)}this.__reflow();this.reflowevent=this.__reflow.delay(A,this)},__reflow:function(){var C=this.bottom;var L=this.middle;var K=this.right;var F=this.topic;var J=this.top;var I=F.getSize();var E=J.getSize();var D=K.getSize();var B=C.getSize();var H=this.sizer.getSize();var A=(H.y-E.y-B.y-I.y);var G=(H.x-D.x);F.setStyle("top",E.y);L.setStyle("top",(E.y+I.y));if(A>0){L.setStyle("height",A);K.setStyle("height",A)}if(G>0){L.setStyle("width",G)}K.setStyle("top",(E.y+I.y));K.setStyle("left",G);C.setStyle("top",(H.y-B.y));this.fireEvent("reflow")},showChannel:function(A){var B="none";if(A){B="block"}this.right.setStyle("display",B);this.topic.setStyle("display",B)},showInput:function(A){this.bottom.isVisible=A;this.bottom.setStyle("display",A?"block":"none")}});qwebirc.ui.QUI.Window=new Class({Extends:qwebirc.ui.Window,initialize:function(E,D,C,B){this.parent(E,D,C,B);this.tab=new Element("a",{href:"#"});this.tab.addClass("tab");this.tab.addEvent("focus",function(){this.blur()}.bind(this.tab));this.spaceNode=document.createTextNode(" ");if(ui.tabs.hasChildNodes()){if(D==qwebirc.ui.WINDOW_STATUS){ui.tabs.insertBefore(this.tab,ui.tabs.firstChild);ui.tabs.insertBefore(this.spaceNode,this.tab.nextSibling)}else{if(D==qwebirc.ui.WINDOW_CUSTOM&&C=="Connect"){ui.tabs.insertBefore(this.tab,ui.tabs.firstChild);ui.tabs.insertBefore(this.spaceNode,this.tab.nextSibling)}else{ui.tabs.appendChild(this.tab);ui.tabs.appendChild(this.spaceNode)}}}else{ui.tabs.appendChild(this.tab);ui.tabs.appendChild(this.spaceNode)}this.tab.appendText(C);this.tab.addEvent("click",function(G){new Event(G).stop();if(this.closed){return }ui.selectWindow(this)}.bind(this));if(D!=qwebirc.ui.WINDOW_STATUS&&(D!=qwebirc.ui.WINDOW_CUSTOM||C!="Connect")){var A=new Element("span");A.set("text","X");A.addClass("tabclose");var F=function(G){new Event(G).stop();if(this.closed){return }if(D==qwebirc.ui.WINDOW_CHANNEL){this.session.irc.exec("/PART "+C)}ui.closeWindow(this)}.bind(this);A.addEvent("click",F);this.tab.addEvent("mouseup",function(H){var G=1;if(Browser.Engine.trident){G=4}if(H.event.button==G){F()}}.bind(this));this.tab.appendChild(A)}this.lines=new Element("div");ui.qjsui.applyClasses("middle",this.lines);this.lines.addClass("lines");if(D!=qwebirc.ui.WINDOW_CUSTOM){this.lines.addClass("ircwindow")}this.lines.addEvent("scroll",function(){this.scrolleddown=this.scrolledDown();this.scrollpos=this.getScrollParent().getScroll()}.bind(this));if(D==qwebirc.ui.WINDOW_CHANNEL){this.topic=new Element("div");this.topic.addClass("topic");this.topic.addClass("tab-invisible");this.topic.set("html","&nbsp;");this.topic.addEvent("dblclick",this.editTopic.bind(this));ui.qjsui.applyClasses("topic",this.topic);this.prevNick=null;this.nicklist=new Element("div");this.nicklist.addClass("nicklist");this.nicklist.addClass("tab-invisible");this.nicklist.addEvent("click",this.removePrevMenu.bind(this));ui.qjsui.applyClasses("nicklist",this.nicklist)}if(D==qwebirc.ui.WINDOW_CHANNEL){this.updateTopic("")}this.nicksColoured=conf.ui.nick_colors;this.reflow()},editTopic:function(){if(!this.session.irc.nickOnChanHasAtLeastPrefix(this.session.irc.nickname,this.name,"+",true)){alert("Sorry, you need to be a channel operator to change the topic!");return }var A=prompt("Change topic of "+this.name+" to:",this.topic.topicText);if(A===null){return }this.session.irc.exec("/TOPIC "+A)},reflow:function(){ui.reflow()},onResize:function(){if(this.scrolleddown){if(Browser.Engine.trident){this.scrollToBottom.delay(5,this)}else{this.scrollToBottom()}}else{if($defined(this.scrollpos)){if(Browser.Engine.trident){this.getScrollParent().scrollTo(this.scrollpos.x,this.scrollpos.y)}else{this.getScrollParent().scrollTo.delay(5,this,[this.scrollpos.x,this.scrollpos.y])}}}},createMenu:function(B,C){var D=new Element("div");C.appendChild(D);D.addClass("menu");var A=[B];qwebirc.ui.MENU_ITEMS().forEach(function(E){if(!E.predicate||E.predicate!==true&&!E.predicate.apply(this,A)){return }var F=new Element("a");D.appendChild(F);F.href="#";F.set("text","- "+E.text);F.addEvent("focus",function(){this.blur()}.bind(F));F.addEvent("click",function(G){new Event(G.stop());this.menuClick(E.fn)}.bind(this))}.bind(this));return D},menuClick:function(A){A.bind(this)(this.prevNick.realNick);this.removePrevMenu()},moveMenuClass:function(){if(!this.prevNick){return }if(this.nicklist.firstChild==this.prevNick){this.prevNick.removeClass("selected-middle")}else{this.prevNick.addClass("selected-middle")}},removePrevMenu:function(){if(!this.prevNick){return }this.prevNick.removeClass("selected");this.prevNick.removeClass("selected-middle");if(this.prevNick.menu){this.prevNick.removeChild(this.prevNick.menu)}this.prevNick=null},nickListAdd:function(C,B){var A=this.session.irc.stripPrefix(C);var F=new Element("a");qwebirc.ui.insertAt(B,this.nicklist,F);F.href="#";var D=new Element("span");if(conf.ui.nick_colors){var E=A.toHSBColour(this.session);if($defined(E)){D.setStyle("color",E.rgbToHex())}}D.set("text",C);F.appendChild(D);F.realNick=A;F.addEvent("click",function(G){if(this.prevNick==F){this.removePrevMenu();return }this.removePrevMenu();this.prevNick=F;F.addClass("selected");this.moveMenuClass();F.menu=this.createMenu(F.realNick,F);new Event(G).stop()}.bind(this));F.addEvent("focus",function(){this.blur()}.bind(F));this.moveMenuClass();return F},nickListRemove:function(A,B){this.nicklist.removeChild(B);this.moveMenuClass()},updateTopic:function(A){var B=this.topic;while(B.firstChild){B.removeChild(B.firstChild)}if(A){B.topicText=A;this.parent(A,B)}else{B.topicText=A;var C=new Element("div");C.set("text","(no topic set)");C.addClass("emptytopic");B.appendChild(C)}this.reflow()},select:function(){var B=this.type!=qwebirc.ui.WINDOW_CUSTOM;this.tab.removeClass("tab-unselected");this.tab.addClass("tab-selected");ui.setLines(this.lines);ui.setChannelItems(this.nicklist,this.topic);ui.qjsui.showInput(B);ui.qjsui.showChannel($defined(this.nicklist));this.reflow();this.parent();if(B){ui.inputbox.focus()}if(this.type==qwebirc.ui.WINDOW_CHANNEL&&this.nicksColoured!=conf.ui.nick_colors){this.nicksColoured=conf.ui.nick_colors;var A=this.nicklist.childNodes;if(conf.ui.nick_colors){for(var C=0;C<A.length;C++){var F=A[C],D=F.firstChild;var E=F.realNick.toHSBColour(this.session);if($defined(E)){D.setStyle("color",E.rgbToHex())}}}else{for(var C=0;C<A.length;C++){var D=A[C].firstChild;D.setStyle("color",null)}}}},deselect:function(){this.parent();this.tab.removeClass("tab-selected");this.tab.addClass("tab-unselected")},addLine:function(B,A,D){var C=new Element("div");if(D){C.addClass(D)}else{if(this.lastcolour){C.addClass("linestyle1")}else{C.addClass("linestyle2")}}this.lastcolour=!this.lastcolour;this.parent(B,A,D,C)},setHilighted:function(A){var B=this.hilighted;this.parent(A);if(A==B){return }this.tab.removeClass("tab-hilight-activity");this.tab.removeClass("tab-hilight-us");this.tab.removeClass("tab-hilight-speech");switch(this.hilighted){case qwebirc.ui.HILIGHT_US:this.tab.addClass("tab-hilight-us");break;case qwebirc.ui.HILIGHT_SPEECH:this.tab.addClass("tab-hilight-speech");break;case qwebirc.ui.HILIGHT_ACTIVITY:this.tab.addClass("tab-hilight-activity");break}}});
