if(typeof window.console=='undefined')
var console={log:function(){},debug:function(){}};function isset(p){return typeof p!='undefined';};function time(ts){var c=new Date().getTime();return ts?c-ts:c;};Prototype.falseFunction=function(event){if(event)event.stop();return false;};Prototype.getId=function(obj,prefix){if(obj&&obj.id)return obj.id;if(Object.isElement(obj))
return Element.identify(obj);arguments.callee.id=arguments.callee.id||1;var id=(prefix||'')+(++arguments.callee.id);if(obj)obj.id=id;return id;};Object.toPHPQueryString=function(obj){if(obj.constructor!=Object)return'';var q=[];for(var name in obj){var value=obj[name]===undefined?'':obj[name];if(typeof value=='function'||value.constructor==Object)
continue;if(value.constructor==Array){for(var i=0;i<value.length;i++)
q.push([name+'['+i+']',encodeURIComponent(value[i])].join('='));}else{q.push([name,encodeURIComponent(value)].join('='));}}
return q.join('&');};Class.baseMethods={setOptions:function(){if(!this.options)
this.options={};for(var i=0,l=arguments.length;i<l;++i)
Object.extend(this.options,arguments[i]);if(this.options.events)
this.observe(this.options.events);return this;}};Class.create=(function(){var oldCreate=Class.create;return function(){var k=oldCreate.apply(this,arguments);k.addMethods(Observable.Methods);k.addMethods(Class.baseMethods);return k;};})();Object.extend(Array.prototype,{include:function(f){return this.indexOf(f)>-1;},walk:function(iterator){for(var i=0,l=this.length;i<l;i++)
this[i]=iterator(this[i]);},toHex:function(){if(this.length!=3)
return'transparent';this.walk(function(v){return v.toColorPart();});return'#'+this.join('');}});Object.extend(Function.prototype,{bindWithEvent:function(){var m=this,args=$A(arguments),obj=args.shift();return function(event){return m.apply(obj,[event].concat(args));}.bindAsEventListener(obj);},delay:function(){var m=this,args=$A(arguments),delay=args.shift();return window.setTimeout(function(){m.apply(this,args);},delay);}});Object.extend(String.prototype,{truncateCenter:function(len){return(this.length>len)?(this.substr(0,len/2-1)+'...'+this.substr(this.length-(len/2-2))):this;},toDec:function(){var value=parseInt(this,16);return(value==NaN)?0:value;},toRgb:function(){var hex=this.match(/^#?([0-9a-f]{1,2})([0-9a-f]{1,2})([0-9a-f]{1,2})$/i);if(hex){return[hex[1].pad(2,hex[1]).toDec(),hex[2].pad(2,hex[2]).toDec(),hex[3].pad(2,hex[3]).toDec()];}
return[0,0,0];},pad:function(len,chr,position){if(this.len>=len)
return this;var pad=chr.times(len-this.length);return position?this+pad:pad+this;}});Object.extend(Math,{distance:function(x1,y1,x2,y2){return Math.sqrt(Math.pow(x2-x1,2)+Math.pow(y2-y1,2));},rand:function(a,b){return Math.random()*(b-a)+a;}});Object.extend(Number.prototype,{between:function(a,b){return(this>=Math.min(a,b)&&this<=Math.max(a,b));}});Object.extend(Form.Methods,(function(){var checkFormBoxes=function(form,check,name){if(!(form=$(form)))return null;var boxes=form.getInputs('checkbox',name);if(boxes){for(var i=0,l=boxes.length;i<l;++i){var box=boxes[i];if((check<0)||((check&&!box.checked)||(!check&&box.checked)))
box.leftClick();};}
return form;};return{check:function(form,what,name){var c=-1;switch(what){case'all':c=1;break;case'none':c=0;break;case'invert':default:c=-1;}
return checkFormBoxes(form,c,name);}};})());Object.extend(Event,(function(){var _observer=Event.observe;var _stopObserving=Event.stopObserving;return{observe:function(element,eventName,handler){if(arguments.length==2&&typeof eventName!='string'){var observers=arguments[1];for(var name in observers)
_observer(element,name,observers[name]);return element;}
return _observer.apply(Event,arguments);},stopObserving:function(element,eventName,handler){if(arguments.length==2&&typeof eventName!='string'){var observers=arguments[1];for(var name in observers)
_stopObserving(element,name,observers[name]);return element;}
return _stopObserving.apply(Event,arguments);},onDOMReady:function(f){document.observe('dom:loaded',f);},capture:function(event,element){var rel=event.relatedTarget,cur=event.currentTarget||element;if(rel&&rel.nodeType==Node.TEXT_NODE)
rel=rel.parentNode;if(rel&&rel!=cur&&!Element.descendantOf(rel,cur))
return true;return false;}};})());document.on=document.observe=Event.observe.methodize();document.off=document.stopObserving=Event.stopObserving.methodize();(function(){function wheel(event){var delta;if(event.wheelDelta)delta=event.wheelDelta/120;else if(event.detail)delta=-event.detail/3;if(!delta)return;var r=event.element().fire("mouse:wheel",{delta:delta});if(r.stopped)event.stop();}
document.observe("mousewheel",wheel);document.observe("DOMMouseScroll",wheel);})();var Observable={};Observable.extend=function(obj){if(!obj||obj.__observableExtended)
return obj;if(Object.isFunction(obj)){obj.addMethods(Observable.Methods);}else{Object.extend(obj,Observable.Methods);}
obj.__observableExtended=true;return obj;}
Observable.Methods={fire:function(){var observers=(this.__observers||(this.__observers={}));var args=$A(arguments);var name=args.shift();var returned=[];if(Object.isFunction(this['on'+name]))
returned.push(this['on'+name].apply(this,args));if(isset(observers[name])){for(var i=0,l=observers[name].length;i<l;++i)
returned.push(observers[name][i].apply(this,args));}
return returned;},observe:function(name,observer){var observers=(this.__observers||(this.__observers={}));if(arguments.length==1){var obs=arguments[0];for(var n in obs)
this.observe(n,obs[n]);}else{var nameObs=observers[name]||(observers[name]=[]);if(!nameObs.include(observer))
nameObs.push(observer);}
return this;},stopObserving:function(name,observer){var observers=(this.__observers||(this.__observers={}));if(isset(observers[name])){if(!observer){delete observers[name];observers[name]=[];}else{var i=observers[name].indexOf(observer);if(i>-1){observers[name][i]=null;observers[name].splice(i,1);}}}
return this;}};Object.extend(Observable.Methods,{notify:Observable.Methods.fire,on:Observable.Methods.observe,off:Observable.Methods.stopObserving});Object.extend(Ajax,{parseResponseAsJSON:function(transport){var json=null;try{eval('json = '+(transport.responseText||'').unfilterJSON());}catch(ex){}
return json;}});Element.addMethods({on:Event.observe,off:Event.stopObserving,makeInvisible:function(element){element.style.visibility='hidden';return element;},makeVisible:function(element){element.style.visibility='';return element;},isInvisible:function(element){return element.getStyle('visibility')=='hidden';},setXY:function(element,x,y){if(arguments.length==2){var p=arguments[1];x=p.x;y=p.y;}
element.style.left=x+'px';element.style.top=y+'px';return element;},setAt:function(element,target,options){element=$(element);target=$(target);if(!element||!target)
return null;options=Object.extend({alignX:'left',alignY:'top',offsetX:0,offsetY:0},options||{});var ec=Position.getCoordinates(element),tc=Position.getCoordinates(target),left,top;switch(options.alignX){case'right':left=tc.x+tc.width-ec.width;break;case'center':case'middle':left=tc.x+((tc.width-ec.width)/2);break;case'left':default:left=tc.x;break;}
switch(options.alignY){case'bottom':top=tc.y+tc.height;break;case'center':case'middle':top=tc.y+((tc.height-ec.height)/2);break;case'top':default:top=tc.y-ec.height;break;}
return element.setXY(left+options.offsetX,top+options.offsetY);},relativeOffset:function(element,parent){if(!parent)parent=document.body;var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;}while(element&&element!=parent);return Element._returnOffset(valueL,valueT);},leftClick:function(){if(window.dispatchEvent){return function(el,_evt){var event=document.createEvent('MouseEvents');event.initMouseEvent("click",true,true,window,0,0,0,0,0,(_evt&&_evt.ctrlKey),(_evt&&_evt.altKey),(_evt&&_evt.shiftKey),(_evt&&_evt.metaKey),0,null);el.dispatchEvent(event);return el;};}else{return function(el){el.click();return el;};}}(),graft:function(p,n,o,w){var el;if(n.constructor==String||n.constructor==Number){p.innerHTML+=n;return p;}else if(n.constructor==Array){if(typeof n[0]!='string'){for(var i=0,l=n.length;i<l;++i){Element.graft(p,n[i],o,w);}
return p;}else{var tag=n[0];if(!/^[a-z][a-z0-9]*$/i.test(tag)){throw'Invalid tag name: '+tag;return null;}
el=$(document.createElement(tag));for(var i=1,l=n.length;i<l;++i){if(!n[i])
continue;if(n[i].constructor==Object){for(var attr in n[i]){var value=n[i][attr];if(attr.match(/^on(.+)$/i)&&typeof value=='function'){el.on(RegExp.$1,value);}else if(attr=='events'){el.on(value);}else{if(attr=='class'||attr=='className')
el.addClassName(value);else if(attr=='style'&&value.constructor==Object)
el.setStyle(value);else
el[attr]=value;}}}else{Element.graft(el,n[i]);}}}}else{el=n;}
if(o){return w&&w=='before'?p.insertBefore(el,o):p.insertBefore(el,o.nextSibling);}
return p.appendChild(el);}});Object.extend(Position,{getCoordinates:function(el){el=$(el);var d=el.getDimensions(),o=el.cumulativeOffset();return{x:o[0],y:o[1],width:d.width,height:d.height};},intersect:function(element,target){return Position.intersectCoords(Position.getCoordinates(element),Position.getCoordinates(target));},intersectCoords:function(a,b){var ar=a.x+a.width,ab=a.y+a.height;var br=b.x+b.width,bb=b.y+b.height;var hx=Math.min(Math.max(Math.min((ar-b.x),(br-a.x)),0),a.width);var vx=Math.min(Math.max(Math.min((ab-b.y),(bb-a.y)),0),a.height);var aa=a.width*a.height;var ba=b.width*b.height;return Math.min(((hx*vx)/Math.min(aa,ba)),1);},withinCoordinates:function(coord,x,y){return(x>=coord.x&&x<(coord.x+coord.width))&&(y>=coord.y&&y<(coord.y+coord.height));}});var Cookie={get:function(name){var start=document.cookie.indexOf(name+"=");var len=start+name.length+1;if(!start&&(name!=document.cookie.substring(0,name.length)))
return null;if(start==-1)
return null;var end=document.cookie.indexOf(";",len);if(end==-1)
end=document.cookie.length;return unescape(document.cookie.substring(len,end));},set:function(name,value,expires,path,domain,secure){var today=new Date();today.setTime(today.getTime());if(expires)
expires=expires*1000*60*60*24;var expires_date=new Date(today.getTime()+(expires));document.cookie=name+"="+escape(value)
+((expires)?";expires="+expires_date.toGMTString():"")
+((path)?";path="+path:"")
+((domain)?";domain="+domain:"")
+((secure)?";secure":"");},erase:function(name,path,domain){if(Cookies.get(name))
document.cookie=name+"="+((path)?";path="+path:"")+
((domain)?";domain="+domain:"")+";expires=Thu, 01-Jan-1970 00:00:01 GMT";},accept:function(){if(typeof navigator.cookieEnabled=='boolean')
return navigator.cookieEnabled;Cookie.set('_test','1');return(Cookie.erase('_test')==='1');}};var HashTable=Class.create(Enumerable,{initialize:function(){this.items=[];this.map={};this.keys=[];this.length=0;},each:function(func,scope){for(var i=0,l=this.length;i<l;i++)
func.call(scope||this.items[i],this.items[i],i);},add:function(k,o){if(arguments.length==1){o=arguments[0];k=this.getKey(o);}
if(this.map[k])
return this.replace(k,o);this.items.push(this.map[k]=o);this.keys.push(k);this.length++;this.fire('Add',o,this.length-1);return o;},addAt:function(i,k,o,fireEvent){if(arguments.length==2){o=arguments[1];k=this.getKey(o);}
this.items.splice(i,0,o);this.keys.splice(i,0,k);this.map[k]=o;this.length++;if(fireEvent!==false)
this.fire('Add',o,this.keys.length-1);return o;},get:function(k){return this.map[k];},getAt:function(i){return this.items[i]},remove:function(k){return this.removeAt(this.keys.indexOf(k));},removeAt:function(i,fireEvent){if(i>-1&&i<this.length){this.length--;var r=this.items[i];this.items.splice(i,1);this.keys.splice(i,1);delete this.map[this.keys[i]];if(fireEvent!==false)
this.fire('Remove',r);return r;}
return false;},replace:function(k,o){if(arguments.length==1){o=arguments[0];k=this.getKey(o);}
var r;if((r=this.map[k])){var i=this.keys.indexOf(k);this.removeAt(i);this.addAt(i,k,o,false);this.fire('Replace',r,o);return r;}
return false;},size:function(){return this.length;},getKey:function(o){return o.id;}});Easings={linear:function(t,b,c,d){return c*t/d+b;},quadIn:function(t,b,c,d){return c*(t/=d)*t+b;},quadOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},quadInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},cubicIn:function(t,b,c,d){return c*(t/=d)*t*t+b;},cubicOut:function(t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},cubicInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},quartIn:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},quartOut:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},quartInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},quintIn:function(t,b,c,d){return c*(t/=d)*t*t*t*t+b;},quintOut:function(t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},quintInOut:function(t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},sineIn:function(t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},sineOut:function(t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},sineInOut:function(t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},expoIn:function(t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},expoOut:function(t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},expoInOut:function(t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},circIn:function(t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},circOut:function(t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},circInOut:function(t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a)a=1;if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(!a)a=1;if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticInOut:function(t,b,c,d,a,p){if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(!a)a=1;if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(!s)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(!s)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backInOut:function(t,b,c,d,s){if(!s)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-Easings.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},bounceInOut:function(t,b,c,d){if(t<d/2)return Easings.bounceIn(t*2,0,c,d)*.5+b;return Easings.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};var Effects={};Effects.Tween=Class.create({initialize:function(element,properties,options){this.timer=null;this.playing=false;this.currentFrame=0;this.totalFrames=0;this.options={duration:500,fps:60,loop:false,easing:Easings.linear};this.setOptions(options);this.element=$(element);this.properties=properties||{};},start:function(){if(this.playing)
return this;if(!this.options.duration)
this.forward();this.playing=true;this.totalFrames=Math.ceil(this.options.duration*this.options.fps/1000);this.timer=window.setInterval(this.nextFrame.bind(this),1000/this.options.fps);this.fire('Start');return this;},stop:function(ended){if(!this.playing||!this.timer)
return this;window.clearInterval(this.timer);this.playing=false;this.fire(ended?'End':'Stop');if(ended){this.currentFrame=0;if(this.options.loop)
return this.start();}
return this;},rewind:function(){if(this.playing)
this.stop(false);this.currentFrame=0;this._update('start');return this;},forward:function(){if(this.playing)
this.stop(true);this._update('end');return this;},reset:function(){if(this.playing)
this.stop(false);this.currentFrame=0;return this;},nextFrame:function(){if(++this.currentFrame>this.totalFrames)
return this.stop(true);this._update();this.fire('Change');return this;},getCurrent:function(property){return this.properties[property].current;},setProperties:function(props,clear){if(clear)
this.properties={};Object.extend(this.properties,props);return this;},removeProperties:function(props){if(props.constructor!=Array)
delete this.properties[props];else
for(var i=0;i<props.length;++i)
delete this.properties[props[i]];return this;},compute:function(from,to,easing){easing=easing||this.options.easing;return easing(this.currentFrame,from,(to-from),this.totalFrames);},_update:function(position){var styles={};for(var p in this.properties){var s=this.properties[p];if(!s)continue;var current=isset(s.current)?s.current:this.element.getStyle(p);var type=s.type||(s.type='transition');var easing=s.easing||this.options.easing;if(type=='color'){var from=isset(s.from)?s.from:(s.from=current);var to=isset(s.to)?s.to:(s.to=current);var fromRGB=from.toRgb();var toRGB=to.toRgb();var next=s.current=[Math.floor(this.compute(fromRGB[0],toRGB[0],easing)),Math.floor(this.compute(fromRGB[1],toRGB[1],easing)),Math.floor(this.compute(fromRGB[2],toRGB[2],easing))].toHex();}else{current=parseFloat(current)||0;var from=isset(s.from)?s.from:(s.from=current);var to=isset(s.to)?s.to:(s.to=current);var next=s.current=this.compute(from,to,easing);}
styles[p]=(position=='start'?from:(position=='end'?to:next));if(isset(s.unit))
styles[p]+=s.unit;}
this.element.setStyle(styles);}});Object.extend(Effects,(function(){var cache={};function getTweenID(el){if(el._tweenID)return el._tweenID;arguments.callee.id=arguments.callee.id||1;return el._tweenID=++arguments.callee.id;};function getTweenObject(el,type){var id=getTweenID(el);var tweens=cache[id]||(cache[id]={});return tweens[type]||(tweens[type]=new Effects.Tween(el));};return{clean:function(el){var id=getTweenID(el);var tweens=cache[id];if(!tweens)return el;for(var t in tweens)tweens[t]=null;delete cache[id];return el;},stop:function(el,type){var id=getTweenID(el);if(!cache[id])return el;var tweens=cache[id];if(type)tweens[type].stop();else for(var t in tweens)tweens[t].stop();return el;},tween:function(el,properties,options){var t=getTweenObject(el,'tween');t.stop().reset().setOptions(options).setProperties(properties);t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;t.start();return el;},fade:function(el,opacity,options){if(opacity<0)
return el;options=Object.extend({duration:300,onComplete:null},options||{});var t=getTweenObject(el,'fade');t.stop().reset().setOptions({duration:options.duration}).setProperties({'opacity':{to:opacity}});t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;t.start();return el;},fadeIn:function(el,opacity,options){el.setOpacity(0);Effects.fade(el,opacity||1,options);},fadeOut:function(el,options){Effects.fade(el,0,options);},moveTo:function(el,x,y,options){if(!(el=$(el)))return null;if(x===false&&y===false)return el;options=Object.extend({aboslute:false,duration:500,fps:60,easing:Easings.quintOut,onComplete:null,xmod:'left',ymod:'top',unit:'px'},options||{});var s={},p=!options.absolute?Position.cumulativeOffset(el):[0,0];if(x!==false)s[options.xmod]={to:x+(!options.absolute?p[0]:0),unit:options.unit};if(y!==false)s[options.ymod]={to:y+(!options.absolute?p[1]:0),unit:options.unit};var t=getTweenObject(el,'moveTo');t.stop().reset().setOptions({duration:options.duration,fps:options.fps,easing:options.easing}).setProperties(s);t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;t.start();return el;},slide:function(el,dir,options){if(!(el=$(el)))
return null;if(!['top','bottom','left','right','in'].include(dir)||!(el=$(el)))
return el;options=Object.extend({duration:500,onComplete:null,easing:Easings.quintOut},options||{});if(isset(el._slideDirection)&&el._slideDirection==dir)
return el;var t=getTweenObject(el,'slide');t.stop().reset().setOptions({duration:options.duration,fps:60,easing:options.easing}).setProperties({},true);var prop={};if(dir=='in'&&isset(el._slideDirection)){prop[el._slideDirection]={to:0,unit:'px'};}else if(['top','bottom','left','right'].include(dir)){prop[dir]={to:-(['top','bottom'].include(dir)?el.getHeight():el.getWidth()),unit:'px'};}
t.setProperties(prop);t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;t.start();el._slideDirection=dir;return el;},slideDir:function(el){return el._slideDirection||'none';},blind:function(el,dir,options){if(!(el=$(el)))
return null;if(!['up','down','left','right','toggleX','toggleY'].include(dir)||!(el=$(el)))
return el;var curDir=Effects.blindDir(el);if(dir=='toggleX'){dir=curDir=='none'?(el.getWidth()?'left':'right'):(curDir=='left'?'right':'left');}else if(dir=='toggleY'){dir=curDir=='none'?(el.getHeight()?'up':'down'):(curDir=='up'?'down':'up');}
options=Object.extend({duration:500,onComplete:null,fps:60,easing:Easings.quintOut},options||{});if(isset(el._blindDirection)&&el._blindDirection==dir)
return el;var t=getTweenObject(el,['up','down'].include(dir)?'blindX':'blindY');t.stop().reset().setOptions({duration:options.duration,fps:options.fps,easing:options.easing});t.setProperties({},true);switch(dir){case'up':{if(!isset(el.__originalHeight))
el.__originalHeight=el.getHeight();el.setStyle({overflow:'hidden'});t.setProperties({height:{from:el.getHeight(),to:0,unit:'px'}});}break;case'down':{var currentHeight=el.getHeight();if(!isset(el.__originalHeight))
el.__originalHeight=el.makeClipping().setStyle({visibility:'hidden',height:'auto'}).getHeight();el.setStyle({visibility:'visible',height:currentHeight+'px'}).undoClipping();t.setProperties({height:{from:currentHeight,to:el.__originalHeight,unit:'px'}});}break;case'left':{if(!isset(el.__originalWidth))
el.__originalWidth=el.getWidth();el.setStyle({overflow:'hidden'});t.setProperties({width:{to:0,from:el.getWidth(),unit:'px'}});}break;case'right':{var currentWidth=el.getWidth();if(!isset(el.__originalWidth))
el.__originalWidth=el.setStyle({visibility:'hidden',overflow:'hidden',width:''}).getWidth();el.setStyle({visibility:'visible',width:currentWidth+'px'});t.setProperties({width:{from:currentWidth,to:el.__originalWidth,unit:'px'}});}}
t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;t.start();el._blindDirection=dir;return el;},blindDir:function(el){return el._blindDirection||'none';},scrollTo:function(el,options){el=$(el);options=Object.extend({duration:500,onComplete:null,easing:Easings.expoOut},options||{});var offset=el.cumulativeOffset();Position.prepare();var t=getTweenObject(el,'windowScroll');t.stop().reset().setOptions({duration:options.duration,easing:options.easing});t.onEnd=(typeof options.onComplete=='function')?options.onComplete.bind(el):null;delete t.onChange;t.onChange=function(){var x=this.compute(Position.deltaX,offset.left);var y=this.compute(Position.deltaY,offset.top);window.scrollTo(x,y);};t.start();return el;}}})());Element.addMethods({fade:Effects.fade});Element.addMethods('DIV',{blind:Effects.blind,slide:Effects.slide,blindDir:Effects.blindDir,slideDir:Effects.slideDir,stopEffects:Effects.stop});Element.addMethods();var Drag={activeDrag:null};Drag.Base=Class.create({initialize:function(element,options){this.element=$(element);this.setOptions({handle:null,sensitivity:0,modifiers:{},clone:false,grid:false,revertOnCancel:true,revertTween:true,revertEasing:Easings.quintOut,revertDuration:500},options);this.handle=$(this.options.handle)||this.element;this.initial={pointer:{x:0,y:0},styles:{},modifiers:{}};this.last={delta:{x:0,y:0},pointer:{x:0,y:0}};this.dragged=this.dragging=this.reverting=false;this.observers={start:this.start.bindAsEventListener(this),drag:this.drag.bindAsEventListener(this),stop:this.stop.bindAsEventListener(this),press:this.press.bindAsEventListener(this),revert:this.finishDrag.bind(this)};this.handle.on('mousedown',this.observers.start);this.handle.on('drag',Prototype.falseFunction);this.clone=this.element;},start:function(event){if(this.reverting||(event&&!event.isLeftClick()))
return;this.dragged=this.cancelled=false;Effects.stop(this.clone);this.observeDocument(true);if(event){event.stop();this.initial.pointer=event.pointer();}
this.fire('Start',event);},stop:function(event){var cancelled=(event.keyCode&&event.keyCode==Event.KEY_ESC);this.observeDocument(false);this.dragging=false;if(cancelled&&this.options.revertOnCancel)this.revert(event);else this.finishDrag(event);if(this.dragged)this.fire('DragEnd',event);this.fire('End',event);Drag.activeDrag=null;},drag:function(event){var pointer=event.pointer();if(!this.dragging){if(Math.distance(this.initial.pointer.x,this.initial.pointer.y,pointer.x,pointer.y)<this.options.sensitivity)
return;this.fire('BeforeDragStart',event);this.initDrag();this.fire('DragStart',event);Drag.activeDrag=this;}
var delta={x:pointer.x-this.initial.pointer.x,y:pointer.y-this.initial.pointer.y};this.last.pointer=pointer;this.update(delta,event);this.fire('Drag',delta,event);},update:function(delta,event){var g=this.options.grid;if(Object.isNumber(g))g=this.options.grid={x:g,y:g};if(g){if(g.x)delta.x-=(delta.x%g.x);if(g.y)delta.y-=(delta.y%g.y);}
var style={};for(var name in this.options.modifiers){var mod=this.options.modifiers[name];var value=this.initial.modifiers[name]+(delta[mod.by]);if(Object.isNumber(mod.min)&&value<mod.min)value=mod.min;if(Object.isNumber(mod.max)&&value>mod.max)value=mod.max;style[name]=value+(mod.unit||'');}
this.clone.setStyle(style);this.last.delta=delta;},revert:function(event){if(this.dragging){this.stop(event,true);}else{if(this.options.revertTween){var properties={};for(var name in this.options.modifiers){var mod=this.options.modifiers[name];properties[name]={to:this.initial.modifiers[name],unit:mod.unit};}
this.reverting=true;Effects.tween(this.clone,properties,{easing:this.options.revertEasing,duration:this.options.revertDuration,onComplete:this.observers.revert});}else{this.update({x:0,y:0});}}},getDelta:function(){return this.last.delta;},press:function(event){if(event.keyCode==Event.KEY_ESC){this.cancelled=true;this.stop(event);}},observeDocument:function(observe){document[observe?'on':'off']({'mousemove':this.observers.drag,'mouseup':this.observers.stop,'keydown':this.observers.press});if(Prototype.Browser.IE){document[observe?'on':'off']({'selectstart':Prototype.falseFunction,'drag':Prototype.falseFunction});}},initDrag:function(){this.dragging=this.dragged=true;for(var name in this.options.modifiers){var mod=this.options.modifiers[name];var value=this.clone.getStyle(name);value=(mod.cast||parseInt)(value)||0;this.initial.modifiers[name]=value;}
var z_index=parseInt(this.element.getStyle('zIndex')||0);if(this.options.clone){this.clone=$(this.element.cloneNode(true));this.element.parentNode.appendChild(this.clone);Position.clone(this.element,this.clone);this.clone.setStyle({zIndex:z_index+1});}else{this.initial.styles={zIndex:z_index};this.element.setStyle({zIndex:z_index+1});}},finishDrag:function(){if(this.options.clone&&this.clone){for(var name in this.options.modifiers)
this.element.style[name]=this.clone.style[name];this.clone.parentNode.removeChild(this.clone);this.clone=null;}else{this.element.setStyle(this.initial.styles);}
this.reverting=false;}});Drag.Move=Class.create(Drag.Base,{initialize:function($super,element,options){$super(element,options);this.setOptions({modifiers:{left:{by:'x',unit:'px'},top:{by:'y',unit:'px'}},boundary:null,cacheBoundary:true,type:null,data:null,moveLeft:true,moveTop:true},options);if(!this.options.moveLeft)
delete this.options.modifiers.left;if(!this.options.moveTop)
delete this.options.modifiers.top;if(!['absolute','relative','fixed'].include(this.element.getStyle('position')))
this.element.absolutize();this.on('DragStart',this.dragStart);this.on('DragEnd',this.processDroppables.bind(this,'end'));if(Object.isString(this.options.boundary))
this.options.boundary=$(this.options.boundary);this.droppables=[];this.type=this.options.type;this.data=this.options.data;},dragStart:function(event){this.cache={};this.initial.coords=Position.getCoordinates(this.element);this.last.coords=Object.clone(this.initial.coords);this.processDroppables('start');},update:function($super,delta){var ic=this.initial.coords,b;if(this.options.boundary){if(Object.isElement(this.options.boundary))
b=!this.options.cacheBoundary?Position.getCoordinates(this.options.boundary):(this.cache.boundaryCoord||(this.cache.boundaryCoord=Position.getCoordinates(this.options.boundary)));else b=this.options.boundary;var nv={x:delta.x+ic.x,y:delta.y+ic.y};if(nv.x<b.x)delta.x=(b.x-ic.x);else if((nv.x-b.x+ic.width)>b.width)delta.x=(b.width-ic.width-ic.x+b.x);if(nv.y<b.y)delta.y=(b.y-ic.y);else if((nv.y-b.y+ic.height)>b.height)delta.y=(b.height-ic.height-ic.y+b.y);}
this.last.coords.x=this.initial.coords.x+delta.x;this.last.coords.y=this.initial.coords.y+delta.y;$super(delta);this.processDroppables('scan');},addDroppable:function(drop){if(!this.droppables.include(drop))
this.droppables.push(drop);},removeDroppable:function(drop){var index=this.droppables.indexOf(drop);if(index>-1)this.droppables.splice(index,1);return index>-1;},processDroppables:function(what){for(var i=0,l=this.droppables.length;i<l;++i){if(this.droppables[i][what])
this.droppables[i][what](this);else console.log('unknown func: ',what);}}});Drag.Pan=Class.create(Drag.Move,{initialize:function($super,element,container,options){$super(element,options);this.container=$(container)||$(element.parentNode);this.coords={};this.on('DragStart',this.dragStart);},dragStart:function($super){$super();this.coords.element=Position.getCoordinates(this.element);this.coords.container=Position.getCoordinates(this.container);},update:function($super,delta){var ic=this.initial.coords,ec=this.coords.element,cc=this.coords.container,nc={x:ic.x+delta.x,y:ic.y+delta.y};if(ec.width>=cc.width){if(nc.x>cc.x)nc.x=cc.x;else if(nc.x+ec.width<cc.x+cc.width)nc.x=cc.x+cc.width-ec.width;}else nc.x=ic.x;if(ec.height>=cc.height){if(nc.y>cc.y)nc.y=cc.y;else if(nc.y+ec.height<cc.y+cc.height)nc.y=cc.y+cc.height-ec.height;}else nc.y=ic.y;delta.x=nc.x-ic.x;delta.y=nc.y-ic.y;$super(delta);}});Drag.Resize=Class.create(Drag.Base,{initialize:function($super,element,options){$super(element,options);this.setOptions({modifiers:{width:{by:'x',unit:'px'},height:{by:'y',unit:'px'}},resizeWidth:true,resizeHeight:true,minWidth:0,minHeight:0},options);},update:function($super,delta){if(!this.options.resizeWidth)
delta.x=0;if(!this.options.resizeHeight)
delta.y=0;if(this.options.minWidth)
this.options.modifiers.width.min=this.options.minWidth;if(this.options.minHeight)
this.options.modifiers.width.min=this.options.minHeight;$super(delta);}});var Drop={};Drop.Droppable=Class.create({initialize:function(element,options){this.element=$(element);this.setOptions({accept:null,cache:true,tolerance:'pointer',overClass:''},options);this.over=false;this.cache={};},check:function(drag){if(!drag instanceof Drag.Move)
return false;var type=drag.type;var accept=this.options.accept;return(!accept||(Object.isString(accept)&&type==accept)||(Object.isArray(accept)&&accept.include(type))||(Object.isFunction(accept)&&accept(drag)));},scan:function(drag){var over=false;var pointer=drag.last.pointer;var coord=!this.options.cache?Position.getCoordinates(this.element):(this.cache.coord||(this.cache.coord=Position.getCoordinates(this.element)));switch(this.options.tolerance){case'inside':case'intersect':{var intersection=Position.intersectCoords(drag.last.coords,coord);over=this.options.tolerance=='inside'?intersection==1:intersection>0;}
break;case'pointer':default:{over=Position.withinCoordinates(coord,pointer.x,pointer.y);}}
if((over&&!this.over)||(!over&&this.over)){var accepted=this.check(drag);this.over=over;this.fire(over?'DragOver':'DragOut',drag,accepted);if(this.options.overClass)
this.element[over?'addClassName':'removeClassName'](this.options.overClass);}},start:function(drag){this.fire('Start',drag);},end:function(drag){if(!drag.cancelled&&this.over)
this.fire('Drop',drag,this.check(drag))
this.fire('End',drag);}});var Controls={Forms:{CheckboxSelection:Class.create({initialize:function(form,options){this.form=$(form);if(!this.form)
return;this.setOptions({name:''},options);this.checkboxes=[];this.last=this.anchor=-1;this.populate();this.clickObserver=this.click.bindAsEventListener(this);this.form.on('click',this.clickObserver);},populate:function(){this.checkboxes=[];this.checkboxes=this.form.getInputs('checkbox',this.options.name);},click:function(event){var el=event.target;if(!el||el.tagName!='INPUT'||el.type!='checkbox'||(this.options.name&&el.name!=this.options.name))
return true;var index=this.checkboxes.indexOf(el);if(index<0)
return true;if(event.shiftKey){if(this.anchor>-1){this.form.stopObserving('click',this.clickObserver);var start=Math.min(this.anchor,index);var stop=Math.max(this.anchor,index);for(var i=start;i<=stop;i++){if(i==index)
continue;var box=this.checkboxes[i];if(!box.checked)
box.leftClick();}
if(this.last>-1){var clearStart=Math.min(this.anchor,this.last);var clearStop=Math.max(this.anchor,this.last);for(var i=clearStart;i<=clearStop;i++){if(i.between(start,stop))
continue;var box=this.checkboxes[i];if(box.checked)
box.leftClick();}}
this.form.observe('click',this.clickObserver);}else{this.anchor=index;}}else{this.anchor=index;}
this.last=index;return true;}})}};var Tooltip={showEffect:function(){this.makeInvisible().show();var offset=this.cumulativeOffset();this.style.top=(offset.top+10)+'px';this.makeVisible();Effects.moveTo.delay(100,this,false,-10,{fps:70,duration:200});Effects.fadeIn(this);},hideEffect:function(){Effects.fadeOut(this);Effects.moveTo.delay(100,this,false,15,{fps:70,duration:1000,onComplete:Element.hide.methodize()});}};Tooltip.Mgr=(function(){var tips=[];var mousemove=function(event){tips.each(function(tip){tip.mousemove(event);});};return{register:function(tip){if(!tips.include(tip)){tips.push(tip);if(tips.length==1)
document.on('mousemove',mousemove);}},unregister:function(tip){var index=tips.indexOf(tip);if(index>-1){tips.splice(index,1);if(!tips.length)
document.off('mousemove',mousemove);}}};})();Tooltip.Tip=Class.create({initialize:function(element,tip,options){this.element=$(element);this.tipEl=null;this.showing=false;this.showTimer=null;this.pointer={x:0,y:0};this.over=false;this.cache={};this.tip=tip;this.setOptions({attribute:'title',className:'tooltip',showDelay:300,styles:{width:'auto',zIndex:101},followMouse:false,align:{x:'left',y:'top'},offset:{x:0,y:-5},showEffect:Tooltip.showEffect,hideEffect:Tooltip.hideEffect,cache:true},options);if(!this.tip&&this.options.attribute){this.tip=this.element.getAttribute(this.options.attribute);if(['title','alt'].include(this.options.attribute))
this.element.setAttribute(this.options.attribute,'');}
this.mouseOverObserver=Tooltip.Mgr.register.curry(this);this.element.on('mouseover',this.mouseOverObserver);},uninitialize:function(){Tooltip.Mgr.unregister(this);this.element.off('mouseover',this.mouseOverObserver);},show:function(event){if(!this.tipEl)
this.createTipElement();if(!this.tip||this.showing)return;this.fire('BeforeShow',event);if(!this.options.followMouse){this.tipEl.makeInvisible().show();this.tipEl.setAt(this.element,{alignX:this.options.align.x,alignY:this.options.align.y,offsetX:this.options.offset.x,offsetY:this.options.offset.y});this.tipEl.hide().makeVisible();this.fire('Update');}
this.tipEl.stopEffects();this.options.showEffect.call(this.tipEl.show());this.showing=true;this.fire('Show',event);},hide:function(event){if(this.showTimer)
window.clearTimeout(this.showTimer);if(!this.showing)return;this.fire('BeforeHide',event);this.tipEl.stopEffects();this.options.hideEffect.call(this.tipEl);this.showing=false;this.fire('Hide',event);},updateContent:function(content){this.tipEl.update('');this.tipEl.graft(content);this.tip=content;this.fire('ContentUpdate',content);},positionTip:function(x,y,includeOffset){if(includeOffset!==false){x+=this.options.offset.x;y+=this.options.offset.y;}
this.tipEl.setXY(x,y);this.fire('Update');},createTipElement:function(){if(this.tipEl)
return;var styles=Object.extend(Object.clone(this.options.styles),{display:'none',zIndex:this.options.zIndex});this.tipEl=$(Element.graft(document.body,['DIV',{className:this.options.className,style:styles},this.tip]));},mousemove:function(event){var pointer=this.pointer=event.pointer();var coords=!this.options.cache?Position.getCoordinates(this.element):(this.cache.coords||(this.cache.coords=Position.getCoordinates(this.element)))
var over=Position.withinCoordinates(coords,pointer.x,pointer.y);if(over!=this.over){this.over=over;if(over){this.fire('MouseOver');if(this.options.showDelay)
this.showTimer=this.show.bind(this).delay(this.options.showDelay);else this.show();}else{Tooltip.Mgr.unregister(this);this.fire('MouseOut');this.hide();}}
if(over&&this.options.followMouse){if(!this.tipEl)this.createTipElement();if(!this.showing){this.tipEl.hide();this.tipEl.stopEffects();}
this.positionTip(pointer.x,pointer.y);}}});