//script.aculo.us 1.7.0
//(c) 2005-2006 Thomas Fuchs
//(c) 2005-2006 Sammi Williams
if(!window.z_effects_js){
z_effects_js=true;
String.prototype.parseColor=function(){
var _1="#";
if(this.slice(0,4)=="rgb("){
var _2=this.slice(4,this.length-1).split(",");
var i=0;
do{
_1+=parseInt(_2[i]).toColorPart();
}while(++i<3);
}else{
if(this.slice(0,1)=="#"){
if(this.length==4){
for(var i=1;i<4;i++){
_1+=(this.charAt(i)+this.charAt(i)).toLowerCase();
}
}
if(this.length==7){
_1=this.toLowerCase();
}
}
}
return (_1.length==7?_1:(arguments[0]||this));
};
Element.getOpacity=function(_4){
return $(_4).getStyle("opacity");
};
Element.setOpacity=function(_5,_6){
return $(_5).setStyle({opacity:_6});
};
Element.getInlineOpacity=function(_7){
return $(_7).style.opacity||"";
};
Element.forceRerendering=function(_8){
try{
_8=$(_8);
var n=document.createTextNode(" ");
_8.appendChild(n);
_8.removeChild(n);
}
catch(e){
}
};
Array.prototype.call=function(){
var _a=arguments;
this.each(function(f){
f.apply(this,_a);
});
};
var Effect={_elNotExistErr:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"}};
Effect.Transitions={sinoidal:function(_c){
return (-Math.cos(_c*Math.PI)/2)+0.5;
},flicker:function(_d){
return ((-Math.cos(_d*Math.PI)/4)+0.75)+Math.random()/4;
},pulse:function(_e,_f){
_f=_f||5;
return (Math.round((_e%(1/_f))*_f)==0?((_e*_f*2)-Math.floor(_e*_f*2)):1-((_e*_f*2)-Math.floor(_e*_f*2)));
},none:function(pos){
return 0;
},full:function(pos){
return 1;
}};
Effect.ScopedQueue=Class.create();
Object.extend(Object.extend(Effect.ScopedQueue.prototype,Enumerable),{initialize:function(){
this.effects=[];
this.interval=null;
},_each:function(_12){
this.effects._each(_12);
},add:function(_13){
var _14=new Date().getTime();
var _15=(typeof _13.options.queue=="string")?_13.options.queue:_13.options.queue.position;
switch(_15){
case "front":
this.effects.findAll(function(e){
return e.state=="idle";
}).each(function(e){
e.startOn+=_13.finishOn;
e.finishOn+=_13.finishOn;
});
break;
case "with-last":
_14=this.effects.pluck("startOn").max()||_14;
break;
case "end":
_14=this.effects.pluck("finishOn").max()||_14;
break;
}
_13.startOn+=_14;
_13.finishOn+=_14;
if(!_13.options.queue.limit||(this.effects.length<_13.options.queue.limit)){
this.effects.push(_13);
}
if(!this.interval){
this.interval=setInterval(this.loop.bind(this),15);
}
},remove:function(_18){
this.effects=this.effects.reject(function(e){
return e==_18;
});
if(this.effects.length==0){
clearInterval(this.interval);
this.interval=null;
}
},loop:function(){
var _1a=new Date().getTime();
for(var i=0,len=this.effects.length;i<len;i++){
if(this.effects[i]){
this.effects[i].loop(_1a);
}
}
}});
Effect.Queues={instances:$H(),get:function(_1d){
if(typeof _1d!="string"){
return _1d;
}
if(!this.instances[_1d]){
this.instances[_1d]=new Effect.ScopedQueue();
}
return this.instances[_1d];
}};
Effect.Queue=Effect.Queues.get("global");
Effect.DefaultOptions={transition:Effect.Transitions.sinoidal,duration:1,fps:60,sync:false,from:0,to:1,delay:0,queue:"parallel"};
Effect.Base=function(){
};
Effect.Base.prototype={position:null,start:function(_1e){
this.options=Object.extend(Object.extend({},Effect.DefaultOptions),_1e||{});
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.event("beforeStart");
if(!this.options.sync){
Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).add(this);
}
},loop:function(_1f){
if(_1f>=this.startOn){
if(_1f>=this.finishOn){
this.render(1);
this.cancel();
this.event("beforeFinish");
if(this.finish){
this.finish();
}
this.event("afterFinish");
return;
}
var pos=(_1f-this.startOn)/(this.finishOn-this.startOn);
var _21=Math.round(pos*this.options.fps*this.options.duration);
if(_21>this.currentFrame){
this.render(pos);
this.currentFrame=_21;
}
}
},render:function(pos){
if(this.state=="idle"){
this.state="running";
this.event("beforeSetup");
if(this.setup){
this.setup();
}
this.event("afterSetup");
}
if(this.state=="running"){
if(this.options.transition){
pos=this.options.transition(pos);
}
pos*=(this.options.to-this.options.from);
pos+=this.options.from;
this.position=pos;
this.event("beforeUpdate");
if(this.update){
this.update(pos);
}
this.event("afterUpdate");
}
},cancel:function(){
if(!this.options.sync){
Effect.Queues.get(typeof this.options.queue=="string"?"global":this.options.queue.scope).remove(this);
}
this.state="finished";
},event:function(_23){
if(this.options[_23+"Internal"]){
this.options[_23+"Internal"](this);
}
if(this.options[_23]){
this.options[_23](this);
}
},inspect:function(){
var _24=$H();
for(property in this){
if(typeof this[property]!="function"){
_24[property]=this[property];
}
}
return "#<Effect:"+_24.inspect()+",options:"+$H(this.options).inspect()+">";
}};
Effect.Parallel=Class.create();
Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(_25){
this.effects=_25||[];
this.start(arguments[1]);
},update:function(_26){
this.effects.invoke("render",_26);
},finish:function(_27){
this.effects.each(function(_28){
_28.render(1);
_28.cancel();
_28.event("beforeFinish");
if(_28.finish){
_28.finish(_27);
}
_28.event("afterFinish");
});
}});
Effect.Event=Class.create();
Object.extend(Object.extend(Effect.Event.prototype,Effect.Base.prototype),{initialize:function(){
var _29=Object.extend({duration:0},arguments[0]||{});
this.start(_29);
},update:Prototype.emptyFunction});
Effect.Opacity=Class.create();
Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(_2a){
this.element=$(_2a);
if(!this.element){
throw (Effect._elNotExistErr);
}
if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout)){
this.element.setStyle({zoom:1});
}
var _2b=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});
this.start(_2b);
},update:function(_2c){
this.element.setOpacity(_2c);
}});
Effect.Move=Class.create();
Object.extend(Object.extend(Effect.Move.prototype,Effect.Base.prototype),{initialize:function(_2d){
this.element=$(_2d);
if(!this.element){
throw (Effect._elNotExistErr);
}
var _2e=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});
this.start(_2e);
},setup:function(){
this.element.makePositioned();
this.originalLeft=parseFloat(this.element.getStyle("left")||"0");
this.originalTop=parseFloat(this.element.getStyle("top")||"0");
if(this.options.mode=="absolute"){
this.options.x=this.options.x-this.originalLeft;
this.options.y=this.options.y-this.originalTop;
}
},update:function(_2f){
this.element.setStyle({left:Math.round(this.options.x*_2f+this.originalLeft)+"px",top:Math.round(this.options.y*_2f+this.originalTop)+"px"});
}});
Effect.MoveBy=function(_30,_31,_32){
return new Effect.Move(_30,Object.extend({x:_32,y:_31},arguments[3]||{}));
};
Effect.Scale=Class.create();
Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(_33,_34){
this.element=$(_33);
if(!this.element){
throw (Effect._elNotExistErr);
}
var _35=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_34},arguments[2]||{});
this.start(_35);
},setup:function(){
this.restoreAfterFinish=this.options.restoreAfterFinish||false;
this.elementPositioning=this.element.getStyle("position");
this.originalStyle={};
["top","left","width","height","fontSize"].each(function(k){
this.originalStyle[k]=this.element.style[k];
}.bind(this));
this.originalTop=this.element.offsetTop;
this.originalLeft=this.element.offsetLeft;
var _37=this.element.getStyle("font-size")||"100%";
["em","px","%","pt"].each(function(_38){
if(_37.indexOf(_38)>0){
this.fontSize=parseFloat(_37);
this.fontSizeType=_38;
}
}.bind(this));
this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;
this.dims=null;
if(this.options.scaleMode=="box"){
this.dims=[this.element.offsetHeight,this.element.offsetWidth];
}
if(/^content/.test(this.options.scaleMode)){
this.dims=[this.element.scrollHeight,this.element.scrollWidth];
}
if(!this.dims){
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];
}
},update:function(_39){
var _3a=(this.options.scaleFrom/100)+(this.factor*_39);
if(this.options.scaleContent&&this.fontSize){
this.element.setStyle({fontSize:this.fontSize*_3a+this.fontSizeType});
}
this.setDimensions(this.dims[0]*_3a,this.dims[1]*_3a);
},finish:function(_3b){
if(this.restoreAfterFinish){
this.element.setStyle(this.originalStyle);
}
},setDimensions:function(_3c,_3d){
var d={};
if(this.options.scaleX){
d.width=Math.round(_3d)+"px";
}
if(this.options.scaleY){
d.height=Math.round(_3c)+"px";
}
if(this.options.scaleFromCenter){
var _3f=(_3c-this.dims[0])/2;
var _40=(_3d-this.dims[1])/2;
if(this.elementPositioning=="absolute"){
if(this.options.scaleY){
d.top=this.originalTop-_3f+"px";
}
if(this.options.scaleX){
d.left=this.originalLeft-_40+"px";
}
}else{
if(this.options.scaleY){
d.top=-_3f+"px";
}
if(this.options.scaleX){
d.left=-_40+"px";
}
}
}
this.element.setStyle(d);
}});
Effect.Highlight=Class.create();
Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(_41){
this.element=$(_41);
if(!this.element){
throw (Effect._elNotExistErr);
}
var _42=Object.extend({startcolor:"#ffff99"},arguments[1]||{});
this.start(_42);
},setup:function(){
if(this.element.getStyle("display")=="none"){
this.cancel();
return;
}
this.oldStyle={};
if(!this.options.keepBackgroundImage){
this.oldStyle.backgroundImage=this.element.getStyle("background-image");
this.element.setStyle({backgroundImage:"none"});
}
if(!this.options.endcolor){
this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff");
}
if(!this.options.restorecolor){
this.options.restorecolor=this.element.getStyle("background-color");
}
this._base=$R(0,2).map(function(i){
return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16);
}.bind(this));
this._delta=$R(0,2).map(function(i){
return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i];
}.bind(this));
},update:function(_45){
this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){
return m+(Math.round(this._base[i]+(this._delta[i]*_45)).toColorPart());
}.bind(this))});
},finish:function(){
this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));
}});
Effect.ScrollTo=Class.create();
Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(_49){
this.element=$(_49);
this.start(arguments[1]||{});
},setup:function(){
Position.prepare();
var _4a=Position.cumulativeOffset(this.element);
if(this.options.offset){
_4a[1]+=this.options.offset;
}
var max=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);
this.scrollStart=Position.deltaY;
this.delta=(_4a[1]>max?max:_4a[1])-this.scrollStart;
},update:function(_4c){
Position.prepare();
window.scrollTo(Position.deltaX,this.scrollStart+(_4c*this.delta));
}});
Effect.Fade=function(_4d){
_4d=$(_4d);
var _4e=_4d.getInlineOpacity();
var _4f=Object.extend({from:_4d.getOpacity()||1,to:0,afterFinishInternal:function(_50){
if(_50.options.to!=0){
return;
}
_50.element.hide().setStyle({opacity:_4e});
}},arguments[1]||{});
return new Effect.Opacity(_4d,_4f);
};
Effect.Appear=function(_51){
_51=$(_51);
var _52=Object.extend({from:(_51.getStyle("display")=="none"?0:_51.getOpacity()||0),to:1,afterFinishInternal:function(_53){
_53.element.forceRerendering();
},beforeSetup:function(_54){
_54.element.setOpacity(_54.options.from).show();
}},arguments[1]||{});
return new Effect.Opacity(_51,_52);
};
Effect.Puff=function(_55){
_55=$(_55);
var _56={opacity:_55.getInlineOpacity(),position:_55.getStyle("position"),top:_55.style.top,left:_55.style.left,width:_55.style.width,height:_55.style.height};
return new Effect.Parallel([new Effect.Scale(_55,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(_55,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(_57){
Position.absolutize(_57.effects[0].element);
},afterFinishInternal:function(_58){
_58.effects[0].element.hide().setStyle(_56);
}},arguments[1]||{}));
};
Effect.BlindUp=function(_59){
_59=$(_59);
_59.makeClipping();
return new Effect.Scale(_59,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_5a){
_5a.element.hide().undoClipping();
}},arguments[1]||{}));
};
Effect.BlindDown=function(_5b){
_5b=$(_5b);
var _5c=_5b.getDimensions();
return new Effect.Scale(_5b,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_5c.height,originalWidth:_5c.width},restoreAfterFinish:true,afterSetup:function(_5d){
_5d.element.makeClipping().setStyle({height:"0px"}).show();
},afterFinishInternal:function(_5e){
_5e.element.undoClipping();
}},arguments[1]||{}));
};
Effect.SwitchOff=function(_5f){
_5f=$(_5f);
var _60=_5f.getInlineOpacity();
return new Effect.Appear(_5f,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(_61){
new Effect.Scale(_61.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(_62){
_62.element.makePositioned().makeClipping();
},afterFinishInternal:function(_63){
_63.element.hide().undoClipping().undoPositioned().setStyle({opacity:_60});
}});
}},arguments[1]||{}));
};
Effect.DropOut=function(_64){
_64=$(_64);
var _65={top:_64.getStyle("top"),left:_64.getStyle("left"),opacity:_64.getInlineOpacity()};
return new Effect.Parallel([new Effect.Move(_64,{x:0,y:100,sync:true}),new Effect.Opacity(_64,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(_66){
_66.effects[0].element.makePositioned();
},afterFinishInternal:function(_67){
_67.effects[0].element.hide().undoPositioned().setStyle(_65);
}},arguments[1]||{}));
};
Effect.SlideDown=function(_68){
_68=$(_68).cleanWhitespace();
var _69=_68.down().getStyle("bottom");
var _6a=_68.getDimensions();
return new Effect.Scale(_68,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:_6a.height,originalWidth:_6a.width},restoreAfterFinish:true,afterSetup:function(_6b){
_6b.element.makePositioned();
_6b.element.down().makePositioned();
if(window.opera){
_6b.element.setStyle({top:""});
}
_6b.element.makeClipping().setStyle({height:"0px"}).show();
},afterUpdateInternal:function(_6c){
_6c.element.down().setStyle({bottom:(_6c.dims[0]-_6c.element.clientHeight)+"px"});
},afterFinishInternal:function(_6d){
_6d.element.undoClipping().undoPositioned();
_6d.element.down().undoPositioned().setStyle({bottom:_69});
}},arguments[1]||{}));
};
Effect.SlideUp=function(_6e){
_6e=$(_6e).cleanWhitespace();
var _6f=_6e.down().getStyle("bottom");
return new Effect.Scale(_6e,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,restoreAfterFinish:true,beforeStartInternal:function(_70){
_70.element.makePositioned();
_70.element.down().makePositioned();
if(window.opera){
_70.element.setStyle({top:""});
}
_70.element.makeClipping().show();
},afterUpdateInternal:function(_71){
_71.element.down().setStyle({bottom:(_71.dims[0]-_71.element.clientHeight)+"px"});
},afterFinishInternal:function(_72){
_72.element.hide().undoClipping().undoPositioned().setStyle({bottom:_6f});
_72.element.down().undoPositioned();
}},arguments[1]||{}));
};
Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle "+"borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth "+"borderRightColor borderRightStyle borderRightWidth borderSpacing "+"borderTopColor borderTopStyle borderTopWidth bottom clip color "+"fontSize fontWeight height left letterSpacing lineHeight "+"marginBottom marginLeft marginRight marginTop markerOffset maxHeight "+"maxWidth minHeight minWidth opacity outlineColor outlineOffset "+"outlineWidth paddingBottom paddingLeft paddingRight paddingTop "+"right textIndent top width wordSpacing zIndex");
Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
String.prototype.parseStyle=function(){
var _73=Element.extend(document.createElement("div"));
_73.innerHTML="<div style=\""+this+"\"></div>";
var _74=_73.down().style,_75=$H();
Element.CSS_PROPERTIES.each(function(_76){
if(_74[_76]){
_75[_76]=_74[_76];
}
});
if(/MSIE/.test(navigator.userAgent)&&!window.opera&&this.indexOf("opacity")>-1){
_75.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1];
}
return _75;
};
["setOpacity","getOpacity","getInlineOpacity","forceRerendering"].each(function(f){
Element.Methods[f]=Element[f];
});
Element.addMethods();
}

