var colorBar=new Class({Implements:[Events,Options],options:{barwidth:200,barheight:12,barmargin:1,color_least:"#ff3366",color_mid:"#ffcc66",color_most:"#66cc33",background_color:"#fff",font_color:"#000",showScale:true,inPercentage:true},initialize:function(B){this.setOptions(B);if(((this.options.barheight-this.options.barmargin*2)<=0)||((this.options.barwidth-this.options.barmargin*2)<=0)){this.options.barwidth=200;this.options.barheight=9;this.options.barmargin=1}this.build()},build:function(){var B=this.options.barheight-this.options.barmargin*2;this.element=new Element("div",{styles:{"font-size":B+"px",border:"1px solid #000","background-color":this.options.background_color,width:this.options.barwidth,height:this.options.barheight}});this.bar=new Element("div",{styles:{position:"relative","background-color":this.options.color_least,width:0,height:B,margin:this.options.barmargin}}).inject(this.element);this.progress=new Element("div",{align:"center",styles:{position:"absolute",width:this.options.barwidth,height:B,color:this.options.font_color}}).inject(this.bar)},set:function(F,G){if(!(F&&G)){return }F=F.toInt();G=G.toInt();var H=(F/G).limit(0,1);var J=new Color([255,0,255]);this.bar.morph({width:H*(this.options.barwidth-this.options.barmargin*2),"background-color":this.barcolor(H)});if(this.options.showScale){var I=(H*1000).toInt()/10+"%";if(!this.options.inPercentage){if(F<1000){I=F+" / "+G}else{I=(Math.floor(F/1000)).toString()+"."+(F%1000).toString().substring(0,2)+"k / "+G}}this.progress.set("text",I)}else{this.progress.set("text","")}},barcolor:function(I){var J=this.options.color_least.hexToRgb(true);var F=this.options.color_mid.hexToRgb(true);var H=this.options.color_most.hexToRgb(true);var G;if(I<0.5){G=I/0.5;J.each(function(A,B){J[B]+=(F[B]-J[B])*G;J[B]=J[B].toInt()});return J.rgbToHex()}else{G=(I-0.5)/0.5;F.each(function(A,B){F[B]+=(H[B]-F[B])*G;F[B]=F[B].toInt()});return F.rgbToHex()}}});var Color=new Native({initialize:function(F,E){if(arguments.length>=3){E="rgb";F=Array.slice(arguments,0,3)}else{if(typeof F=="string"){if(F.match(/rgb/)){F=F.rgbToHex().hexToRgb(true)}else{if(F.match(/hsb/)){F=F.hsbToRgb()}else{F=F.hexToRgb(true)}}}}E=E||"rgb";switch(E){case"hsb":var D=F;F=F.hsbToRgb();F.hsb=D;break;case"hex":F=F.hexToRgb(true);break}F.rgb=F.slice(0,3);F.hsb=F.hsb||F.rgbToHsb();F.hex=F.rgbToHex();return $extend(F,this)}});Color.implement({mix:function(){var D=Array.slice(arguments);var E=($type(D.getLast())=="number")?D.pop():50;var F=this.slice();D.each(function(B){B=new Color(B);for(var A=0;A<3;A++){F[A]=Math.round((F[A]/100*(100-E))+(B[A]/100*E))}});return new Color(F,"rgb")},invert:function(){return new Color(this.map(function(B){return 255-B}))},setHue:function(B){return new Color([B,this.hsb[1],this.hsb[2]],"hsb")},setSaturation:function(B){return new Color([this.hsb[0],B,this.hsb[2]],"hsb")},setBrightness:function(B){return new Color([this.hsb[0],this.hsb[1],B],"hsb")}});function $RGB(E,F,D){return new Color([E,F,D],"rgb")}function $HSB(E,F,D){return new Color([E,F,D],"hsb")}function $HEX(B){return new Color(B,"hex")}Array.implement({rgbToHsb:function(){var O=this[0],N=this[1],S=this[2];var V,W,U;var T=Math.max(O,N,S),X=Math.min(O,N,S);var R=T-X;U=T/255;W=(T!=0)?R/T:0;if(W==0){V=0}else{var M=(T-O)/R;var P=(T-N)/R;var Q=(T-S)/R;if(O==T){V=Q-P}else{if(N==T){V=2+M-Q}else{V=4+P-M}}V/=6;if(V<0){V++}}return[Math.round(V*360),Math.round(W*100),Math.round(U*100)]},hsbToRgb:function(){var K=Math.round(this[2]/100*255);if(this[1]==0){return[K,K,K]}else{var G=this[0]%360;var I=G%60;var H=Math.round((this[2]*(100-this[1]))/10000*255);var J=Math.round((this[2]*(6000-this[1]*I))/600000*255);var L=Math.round((this[2]*(6000-this[1]*(60-I)))/600000*255);switch(Math.floor(G/60)){case 0:return[K,L,H];case 1:return[J,K,H];case 2:return[H,K,L];case 3:return[H,J,K];case 4:return[L,H,K];case 5:return[K,H,J]}}return false}});Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical"},initialize:function(F,D){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper)}},true);this.element=this.subject=$(F);this.parent(D);var E=this.element.retrieve("wrapper");this.wrapper=E||new Element("div",{styles:$extend(this.element.getStyles("margin","position"),{overflow:"hidden"})}).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(B){this.element.setStyle(this.margin,B[0]);this.wrapper.setStyle(this.layout,B[1]);return this},compute:function(G,H,I){var J=[];var F=2;F.times(function(A){J[A]=Fx.compute(G[A],H[A],I)});return J},start:function(P,L,M){if(!this.check(arguments.callee,P,L)){return this}this[L||this.options.mode]();var N=this.element.getStyle(this.margin).toInt();var O=this.wrapper.getStyle(this.layout).toInt();M=$pick(M,this.offset);var I=[[N,O],[0,M]];var J=[[N,O],[-M,0]];var K;switch(P){case"in":K=I;break;case"out":K=J;break;case"toggle":K=(this.wrapper["offset"+this.layout.capitalize()]==0)?I:J}return this.parent(K[0],K[1])},slideIn:function(B){return this.start("in",B)},slideOut:function(B){return this.start("out",B)},hide:function(B){this[B||this.options.mode]();this.open=false;return this.set([-this.offset,0])},show:function(D,C){this[D||this.options.mode]();this.open=true;C=$pick(C,this.offset);return this.set([0,C])},toggle:function(B){return this.start("toggle",B)}});var Asset=new Hash({javascript:function(J,L){L=$extend({onload:$empty,document:document,check:$lambda(true)},L);var N=new Element("script",{src:J,type:"text/javascript"});var K=L.onload.bind(N),H=L.check,I=L.document;delete L.onload;delete L.check;delete L.document;N.addEvents({load:K,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){K()}}}).setProperties(L);if(Browser.Engine.webkit419){var M=(function(){if(!$try(H)){return }$clear(M);K()}).periodical(50)}return N.inject(I.head)},css:function(D,C){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:D},C)).inject(document.head)},image:function(G,H){H=$merge({onload:$empty,onabort:$empty,onerror:$empty},H);var F=new Image();var E=$(F)||new Element("img");["load","abort","error"].each(function(C){var B="on"+C;var A=H[B];delete H[B];F[B]=function(){if(!F){return }if(!E.parentNode){E.width=F.width;E.height=F.height}F=F.onload=F.onabort=F.onerror=null;A.delay(1,E,E);E.fireEvent(C,E,1)}});F.src=E.src=G;if(F&&F.complete){F.onload.delay(1)}return E.setProperties(H)},images:function(F,G){G=$merge({onComplete:$empty,onProgress:$empty},G);if(!F.push){F=[F]}var E=[];var H=0;F.each(function(A){var B=new Asset.image(A,{onload:function(){G.onProgress.call(this,H,F.indexOf(A));H++;if(H==F.length){G.onComplete()}}});E.push(B)});return new Elements(E)}});function addHREF(D){if($type(D)=="number"){return D}var C=/((http|https|ftp|mms|rtsp):\/\/[A-Za-z0-9\.\/=\?%_~@&#:;\+\-]+)/gi;D=D.replace(C,'<a target="_blank" href="$1">$1</a>');return D}var Roar=new Class({Implements:[Options,Events,Chain],options:{duration:3000,position:"lowerRight",container:null,bodyFx:null,itemFx:null,margin:{x:10,y:10},offset:10,className:"roar",onShow:$empty,onHide:$empty,onRender:$empty},initialize:function(B){this.setOptions(B);this.items=[];this.container=$(this.options.container)||document},alert:function(G,I,J){var H=Array.link(arguments,{title:String.type,message:String.type,options:Object.type});var F=[new Element("h3",{html:$pick(H.title,"")})];if(H.message){F.push(new Element("p",{html:H.message}))}return this.inject(F,H.options)},inject:function(M,N){if(!this.body){this.render()}N=N||{};var K=[-this.options.offset,0];var P=this.items.getLast();if(P){K[0]=P.retrieve("roar:offset");K[1]=K[0]+P.offsetHeight+this.options.offset}var Q={opacity:1};Q[this.align.y]=K;var O=new Element("div",{"class":this.options.className,opacity:0}).adopt(new Element("div",{"class":"roar-bg",opacity:0.7}),M);O.setStyle(this.align.x,0).store("roar:offset",K[1]).set("morph",$merge({unit:"px",link:"cancel",onStart:Chain.prototype.clearChain,transition:Fx.Transitions.Back.easeOut},this.options.itemFx));var J=this.remove.create({bind:this,arguments:[O],delay:10});this.items.push(O.addEvent("click",J));if(this.options.duration){var R=false;var L=(function(){L=null;if(!R){J()}}).delay(this.options.duration);O.addEvents({mouseover:function(){R=true},mouseout:function(){R=false;if(!L){J()}}})}O.inject(this.body).morph(Q);return this.fireEvent("onShow",[O,this.items.length])},remove:function(F){var D=this.items.indexOf(F);if(D==-1){return this}this.items.splice(D,1);F.removeEvents();var E={opacity:0};E[this.align.y]=F.getStyle(this.align.y).toInt()-F.offsetHeight-this.options.offset;F.morph(E).get("morph").chain(F.destroy.bind(F));return this.fireEvent("onHide",[F,this.items.length]).callChain(F)},empty:function(){while(this.items.length){this.remove(this.items[0])}return this},render:function(){this.position=this.options.position;if($type(this.position)=="string"){var D={x:"center",y:"center"};this.align={x:"left",y:"top"};if((/left|west/i).test(this.position)){D.x="left"}else{if((/right|east/i).test(this.position)){this.align.x=D.x="right"}}if((/upper|top|north/i).test(this.position)){D.y="top"}else{if((/bottom|lower|south/i).test(this.position)){this.align.y=D.y="bottom"}}this.position=D}this.body=new Element("div",{"class":"roar-body"}).inject(document.body);if(Browser.Engine.trident4){this.body.addClass("roar-body-ugly")}this.moveTo=this.body.setStyles.bind(this.body);this.reposition();if(this.options.bodyFx){var E=new Fx.Morph(this.body,$merge({unit:"px",chain:"cancel",transition:Fx.Transitions.Circ.easeOut},this.options.bodyFx));this.moveTo=E.start.bind(E)}var F=this.reposition.bind(this);window.addEvents({scroll:F,resize:F});this.fireEvent("onRender",this.body)},reposition:function(){var G=document.getCoordinates(),H=document.getScroll(),F=this.options.margin;G.left+=H.x;G.right+=H.x;G.top+=H.y;G.bottom+=H.y;var E=($type(this.container)=="element")?this.container.getCoordinates():G;this.moveTo({left:(this.position.x=="right")?(Math.min(E.right,G.right)-F.x):(Math.max(E.left,G.left)+F.x),top:(this.position.y=="bottom")?(Math.min(E.bottom,G.bottom)-F.y):(Math.max(E.top,G.top)+F.y)})}});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 B=Array.link(arguments,{options:Object.type,element:$defined});this.element=document.id(B.element);this.document=this.element.getDocument();this.setOptions(B.options||{});var A=$type(this.options.handle);this.handles=((A=="array"||A=="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(C){if(C.rightClick){return }if(this.options.preventDefault){C.preventDefault()}if(this.options.stopPropagation){C.stopPropagation()}this.mouse.start=C.page;this.fireEvent("beforeStart",this.element);var A=this.options.limit;this.limit={x:[],y:[]};for(var D in this.options.modifiers){if(!this.options.modifiers[D]){continue}if(this.options.style){this.value.now[D]=this.element.getStyle(this.options.modifiers[D]).toInt()}else{this.value.now[D]=this.element[this.options.modifiers[D]]}if(this.options.invert){this.value.now[D]*=-1}this.mouse.pos[D]=C.page[D]-this.value.now[D];if(A&&A[D]){for(var B=2;B--;B){if($chk(A[D][B])){this.limit[D][B]=$lambda(A[D][B])()}}}}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(A){if(this.options.preventDefault){A.preventDefault()}var B=Math.round(Math.sqrt(Math.pow(A.page.x-this.mouse.start.x,2)+Math.pow(A.page.y-this.mouse.start.y,2)));if(B>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,A]).fireEvent("snap",this.element)}},drag:function(A){if(this.options.preventDefault){A.preventDefault()}this.mouse.now=A.page;for(var B in this.options.modifiers){if(!this.options.modifiers[B]){continue}this.value.now[B]=this.mouse.now[B]-this.mouse.pos[B];if(this.options.invert){this.value.now[B]*=-1}if(this.options.limit&&this.limit[B]){if($chk(this.limit[B][1])&&(this.value.now[B]>this.limit[B][1])){this.value.now[B]=this.limit[B][1]}else{if($chk(this.limit[B][0])&&(this.value.now[B]<this.limit[B][0])){this.value.now[B]=this.limit[B][0]}}}if(this.options.grid[B]){this.value.now[B]-=((this.value.now[B]-(this.limit[B][0]||0))%this.options.grid[B])}if(this.options.style){this.element.setStyle(this.options.modifiers[B],this.value.now[B]+this.options.unit)}else{this.element[this.options.modifiers[B]]=this.value.now[B]}}this.fireEvent("drag",[this.element,A])},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(A){var B=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},A));this.store("resizer",B);return B.addEvent("drag",function(){this.fireEvent("resize",B)}.bind(this))}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(B,A){this.parent(B,A);B=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)}var C=B.getStyles("left","top","position");if(C.left=="auto"||C.top=="auto"){B.setPosition(B.getPosition(B.getOffsetParent()))}if(C.position=="static"){B.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 D=this.element.getOffsetParent(),G=this.container.getCoordinates(D),F={},C={},B={},I={},K={};["top","right","bottom","left"].each(function(O){F[O]=this.container.getStyle("border-"+O).toInt();B[O]=this.element.getStyle("border-"+O).toInt();C[O]=this.element.getStyle("margin-"+O).toInt();I[O]=this.container.getStyle("margin-"+O).toInt();K[O]=D.getStyle("padding-"+O).toInt()},this);var E=this.element.offsetWidth+C.left+C.right,N=this.element.offsetHeight+C.top+C.bottom,H=0,J=0,M=G.right-F.right-E,A=G.bottom-F.bottom-N;if(this.options.includeMargins){H+=C.left;J+=C.top}else{M+=C.right;A+=C.bottom}if(this.element.getStyle("position")=="relative"){var L=this.element.getCoordinates(D);L.left-=this.element.getStyle("left").toInt();L.top-=this.element.getStyle("top").toInt();H+=F.left-L.left;J+=F.top-L.top;M+=C.left-L.left;A+=C.top-L.top;if(this.container!=D){H+=I.left+K.left;J+=(Browser.Engine.trident4?0:I.top)+K.top}}else{H-=C.left;J-=C.top;if(this.container==D){M-=F.left;A-=F.top}else{H+=G.left+F.left;J+=G.top+F.top}}return{x:[H,M],y:[J,A]}},checkAgainst:function(C,B){C=(this.positions)?this.positions[B]:C.getCoordinates();var A=this.mouse.now;return(A.x>C.left&&A.x<C.right&&A.y<C.bottom&&A.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(A){var B=new Drag.Move(this,A);this.store("dragger",B);return B}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(A,B){this.setOptions(B);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(A)||A));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(A){this.elements.push(A);var B=A.retrieve("sortables:start",this.start.bindWithEvent(this,A));(this.options.handle?A.getElement(this.options.handle)||A:A).addEvent("mousedown",B)},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(A){this.elements.erase(A);var B=A.retrieve("sortables:start");(this.options.handle?A.getElement(this.options.handle)||A:A).removeEvent("mousedown",B);return A},this))},removeLists:function(){return $$(Array.flatten(arguments).map(function(A){this.lists.erase(A);this.removeItems(A.getChildren());return A},this))},getClone:function(B,A){if(!this.options.clone){return new Element("div").inject(document.body)}if($type(this.options.clone)=="function"){return this.options.clone.call(this,B,A,this.list)}var C=A.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden",width:A.getStyle("width")});if(C.get("html").test("radio")){C.getElements("input[type=radio]").each(function(D,E){D.set("name","clone_"+E)})}return C.inject(this.list).setPosition(A.getPosition(A.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,B){var A="inside";if(this.lists.contains(B)){this.list=B;this.drag.droppables=this.getDroppables()}else{A=this.element.getAllPrevious().contains(B)?"before":"after"}this.element.inject(B,A);this.fireEvent("sort",[this.element,this.clone])},start:function(B,A){if(!this.idle){return }this.idle=false;this.element=A;this.opacity=A.get("opacity");this.list=A.getParent();this.clone=this.getClone(B,A);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){B.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(B)},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var A=this.element.getStyles("width","height");var B=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:B.top,left:B.left,width:A.width,height:A.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 B=this.lists.map(function(D){return D.getChildren().map(C.modifier||function(E){return E.get("id")},this)},this);var A=C.index;if(this.lists.length==1){A=0}return $chk(A)&&A>=0&&A<this.lists.length?B[A]:B}});Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",wrapper:false,hideOverflow:true},initialize:function(B,A){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);if(this.open){this.wrapper.setStyle("height","")}if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper)}},true);this.element=this.subject=document.id(B);this.parent(A);var D=this.element.retrieve("wrapper");var C=this.element.getStyles("margin","position","overflow");if(this.options.hideOverflow){C=$extend(C,{overflow:"hidden"})}if(this.options.wrapper){D=document.id(this.options.wrapper).setStyles(C)}this.wrapper=D||new Element("div",{styles:C}).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,B,A){return[0,1].map(function(D){return Fx.compute(C[D],B[D],A)})},start:function(B,E){if(!this.check(B,E)){return this}this[E||this.options.mode]();var D=this.element.getStyle(this.margin).toInt();var C=this.wrapper.getStyle(this.layout).toInt();var A=[[D,C],[0,this.offset]];var G=[[D,C],[-this.offset,0]];var F;switch(B){case"in":F=A;break;case"out":F=G;break;case"toggle":F=(C==0)?A:G}return this.parent(F[0],F[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(B){var A=this.retrieve("slide");if(A){A.cancel()}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},B))},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,E){D=D||"toggle";var B=this.get("slide"),A;switch(D){case"hide":B.hide(E);break;case"show":B.show(E);break;case"toggle":var C=this.retrieve("slide:flag",B.open);B[C?"slideOut":"slideIn"](E);this.store("slide:flag",!C);A=true;break;default:B.start(D,E)}if(!A){this.eliminate("slide:flag")}return this}});String.implement({parseQueryString:function(){var B=this.split(/[&;]/),A={};if(B.length){B.each(function(G){var C=G.indexOf("="),D=C<0?[""]:G.substr(0,C).match(/[^\]\[]+/g),E=decodeURIComponent(G.substr(C+1)),F=A;D.each(function(I,H){var J=F[I];if(H<D.length-1){F=F[I]=J||{}}else{if($type(J)=="array"){J.push(E)}else{F[I]=$defined(J)?[J,E]:E}}})})}return A}});var HashListener=new Class({Implements:[Options,Events],options:{blank_page:"blank.html",start:false},iframe:null,currentHash:"",firstLoad:true,handle:false,useIframe:(Browser.Engine.trident&&(typeof (document.documentMode)=="undefined"||document.documentMode<8)),ignoreLocationChange:false,initialize:function(C){var A,B=this,D;this.setOptions(C);if(Browser.Engine.presto&&window.history.navigationMode){window.history.navigationMode="compatible"}if(window.onhashchange&&(typeof (document.documentMode)=="undefined"||document.documentMode>7)){window.onhashchange=function(){var E=B.getHash();if(E==B.currentHash){return }B.fireEvent("hash-changed",E)}}else{if(this.useIframe){this.initializeHistoryIframe()}}window.addEvent("unload",function(E){B.firstLoad=null});if(this.options.start){this.start()}},initializeHistoryIframe:function(){var C=this.getHash(),A=this,B;this.iframe=new IFrame({src:this.options.blank_page,styles:{position:"absolute",top:0,left:0,width:"1px",height:"1px",visibility:"hidden"}}).inject(document.body);B=(this.iframe.contentDocument)?this.iframe.contentDocumnet:this.iframe.contentWindow.document;B.open();B.write('<html><body id="state">'+C+"</body></html>");B.close();return },checkHash:function(){var C=this.getHash(),A,B;if(this.ignoreLocationChange){this.ignoreLocationChange=false;return }if(this.useIframe){B=(this.iframe.contentDocument)?this.iframe.contentDocumnet:this.iframe.contentWindow.document;A=B.body.innerHTML;if(A!=C){this.setHash(A);C=A}}if(this.currentLocation==C){return }this.currentLocation=C;this.fireEvent("hash-changed",C)},setHash:function(B){var C="";B=JSON.decode(B);for(var A in B){if($type(A)=="string"||A!=""){C+=A+"="+B[A]+"&"}}if(C.length>1){C=C.substring(0,C.length-1)}window.location.hash=this.currentLocation=C;if(C==""){if(window.location.href.contains("#")){window.location.href=window.location.href.substring(0,window.location.href.indexOf("#"))}}this.fireEvent("hash-changed",C)},getHash:function(){var A;if(Browser.Engine.geko){A=/#(.*)$/.exec(window.location.href);return A&&A[1]?A[1]:""}else{return window.location.hash.substr(1)}},setIframeHash:function(A){var B=(this.iframe.contentDocument)?this.iframe.contentDocumnet:this.iframe.contentWindow.document;B.open();B.write('<html><body id="state">'+A+"</body></html>");B.close()},updateHash:function(A){if($type(document.id(A))){this.debug_msg("Exception: History locations can not have the same value as _any_ IDs that might be in the document, due to a bug in IE; please ask the developer to choose a history location that does not match any HTML IDs in this document. The following ID is already taken and cannot be a location: "+newLocation)}this.ignoreLocationChange=true;if(this.useIframe){this.setIframeHash(A)}else{this.setHash(A)}},start:function(A){if(A){this.checkHash()}else{this.handle=this.checkHash.periodical(100,this)}},stop:function(){$clear(this.handle)}});var HistoryManager=new Class({Extends:HashListener,state:new Hash({}),fromHash:false,fromHandle:false,initialize:function(A){this.parent(A);this.addEvent("hash-changed",this.updateState.bind(this))},updateState:function(C){var A=this;try{if(C.contains("{")){C=new Hash(JSON.decode(decodeURI(C)))}else{if(C.contains("=")){C=new Hash(encodeURI(C).parseQueryString())}else{C=$H()}}}catch(B){alert(B);C=$H()}this.state.each(function(E,D){var F;if(C.has(D)){F=C.get(D);A.state.set(D,F);A.fireEvent(D+"-changed",F)}else{F=A.state.get(D);A.fireEvent(D+"-removed",F);A.state.erase(D)}C.erase(D)});C.each(function(E,D){A.state.set(D,E);A.fireEvent(D+"-added",E)})},set:function(A,B){var C=new Hash(this.state);C.set(A,B);this.updateHash(C.toJSON());return this},get:function(A){try{return this.state.get(A)}catch(B){alert(B)}return null},remove:function(A){var B=new Hash(this.state);B.erase(A);if(B.getKeys().length!=0){this.updateHash(B.toJSON())}else{this.updateHash($H())}return this}});Element.implement({tidy:function(){this.set("value",this.get("value").tidy())},getTextInRange:function(B,A){return this.get("value").substring(B,A)},getSelectedText:function(){if(this.setSelectionRange){return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd())}return document.selection.createRange().text},getSelectedRange:function(){if($defined(this.selectionStart)){return{start:this.selectionStart,end:this.selectionEnd}}var E={start:0,end:0};var A=this.getDocument().selection.createRange();if(!A||A.parentElement()!=this){return E}var C=A.duplicate();if(this.type=="text"){E.start=0-C.moveStart("character",-100000);E.end=E.start+A.text.length}else{var B=this.get("value");var D=B.length;C.moveToElementText(this);C.setEndPoint("StartToEnd",A);if(C.text.length){D-=B.match(/[\n\r]*$/)[0].length}E.end=D-C.text.length;C.setEndPoint("StartToStart",A);E.start=D-C.text.length}return E},getSelectionStart:function(){return this.getSelectedRange().start},getSelectionEnd:function(){return this.getSelectedRange().end},setCaretPosition:function(A){if(A=="end"){A=this.get("value").length}this.selectRange(A,A);return this},getCaretPosition:function(){return this.getSelectedRange().start},selectRange:function(E,A){if(this.setSelectionRange){this.focus();this.setSelectionRange(E,A)}else{var C=this.get("value");var D=C.substr(E,A-E).replace(/\r/g,"").length;E=C.substr(0,E).replace(/\r/g,"").length;var B=this.createTextRange();B.collapse(true);B.moveEnd("character",E+D);B.moveStart("character",E);B.select()}return this},insertAtCursor:function(B,A){var D=this.getSelectedRange();var C=this.get("value");this.set("value",C.substring(0,D.start)+B+C.substring(D.end,C.length));if($pick(A,true)){this.selectRange(D.start,D.start+B.length)}else{this.setCaretPosition(D.start+B.length)}return this},insertAroundCursor:function(B,A){B=$extend({before:"",defaultMiddle:"",after:""},B);var C=this.getSelectedText()||B.defaultMiddle;var G=this.getSelectedRange();var F=this.get("value");if(G.start==G.end){this.set("value",F.substring(0,G.start)+B.before+C+B.after+F.substring(G.end,F.length));this.selectRange(G.start+B.before.length,G.end+B.before.length+C.length)}else{var D=F.substring(G.start,G.end);this.set("value",F.substring(0,G.start)+B.before+D+B.after+F.substring(G.end,F.length));var E=G.start+B.before.length;if($pick(A,true)){this.selectRange(E,E+D.length)}else{this.setCaretPosition(E+F.length)}}return this}});function getSelectedNode(A){var H=document.createRange?document.createRange():document.body.createTextRange();if(Browser.Engine.trident){var L=H.duplicate();L.collapse(A);var I=L.parentElement();var B=I.childNodes;if(B.length==0){return I}var F=H.duplicate();F.moveToElementText(I);for(var G=0,J=B.length;G<J;G++){var E=B[G];var M=F.compareEndPoints("StartToStart",L);if(M>0){isEnd=true}else{if(M==0){return{node:E,pos:0}}}if(E.nodeType==1){var D=H.duplicate();D.moveToElementText(E);F.setEndPoint("StartToEnd",D);if(isEnd){K+=D.text.length}else{K=0}}else{if(E.nodeType==3){F.moveStart("character",E.nodeValue.length);K+=E.nodeValue.length}}if(!isEnd){C=E}}if(!isEnd&&C.nodeType==1){var C=I.lastChild;return C}return C}else{var C=H.startContainer;var K=H.startOffset;alert("startPos:"+K);if(C.nodeType==1&&typeof C.childNodes[K]!="undefined"){C=C.childNodes[K];K=0}return C}};