var Builder={NODEMAP:{AREA:"map",CAPTION:"table",COL:"table",COLGROUP:"table",LEGEND:"fieldset",OPTGROUP:"select",OPTION:"select",PARAM:"object",TBODY:"table",TD:"table",TFOOT:"table",TH:"table",THEAD:"table",TR:"table"},node:function(_1){
_1=_1.toUpperCase();
var _2=this.NODEMAP[_1]||"div";
var _3=document.createElement(_2);
try{
_3.innerHTML="<"+_1+"></"+_1+">";
}
catch(e){
}
var _4=_3.firstChild||null;
if(_4&&(_4.tagName.toUpperCase()!=_1)){
_4=_4.getElementsByTagName(_1)[0];
}
if(!_4){
_4=document.createElement(_1);
}
if(!_4){
return;
}
if(arguments[1]){
if(this._isStringOrNumber(arguments[1])||(arguments[1] instanceof Array)||arguments[1].tagName){
this._children(_4,arguments[1]);
}else{
var _5=this._attributes(arguments[1]);
if(_5.length){
try{
_3.innerHTML="<"+_1+" "+_5+"></"+_1+">";
}
catch(e){
}
_4=_3.firstChild||null;
if(!_4){
_4=document.createElement(_1);
for(attr in arguments[1]){
_4[attr=="class"?"className":attr]=arguments[1][attr];
}
}
if(_4.tagName.toUpperCase()!=_1){
_4=_3.getElementsByTagName(_1)[0];
}
}
}
}
if(arguments[2]){
this._children(_4,arguments[2]);
}
return _4;
},_text:function(_6){
return document.createTextNode(_6);
},ATTR_MAP:{"className":"class","htmlFor":"for"},_attributes:function(_7){
var _8=[];
for(attribute in _7){
_8.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+"=\""+_7[attribute].toString().escapeHTML().gsub(/"/,"&quot;")+"\"");
}
return _8.join(" ");
},_children:function(_9,_a){
if(_a.tagName){
_9.appendChild(_a);
return;
}
if(typeof _a=="object"){
_a.flatten().each(function(e){
if(typeof e=="object"){
_9.appendChild(e);
}else{
if(Builder._isStringOrNumber(e)){
_9.appendChild(Builder._text(e));
}
}
});
}else{
if(Builder._isStringOrNumber(_a)){
_9.appendChild(Builder._text(_a));
}
}
},_isStringOrNumber:function(_c){
return (typeof _c=="string"||typeof _c=="number");
},build:function(_d){
var _e=this.node("div");
$(_e).update(_d.strip());
return _e.down();
},dump:function(_f){
if(typeof _f!="object"&&typeof _f!="function"){
_f=window;
}
var _10=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY "+"BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET "+"FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+"KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+"PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+"TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
_10.each(function(tag){
_f[tag]=function(){
return Builder.node.apply(Builder,[tag].concat($A(arguments)));
};
});
}};
//Effects
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.collectTextNodes=function(_4){
return $A($(_4).childNodes).collect(function(_5){
return (_5.nodeType==3?_5.nodeValue:(_5.hasChildNodes()?Element.collectTextNodes(_5):""));
}).flatten().join("");
};
Element.collectTextNodesIgnoreClass=function(_6,_7){
return $A($(_6).childNodes).collect(function(_8){
return (_8.nodeType==3?_8.nodeValue:((_8.hasChildNodes()&&!Element.hasClassName(_8,_7))?Element.collectTextNodesIgnoreClass(_8,_7):""));
}).flatten().join("");
};
Element.setContentZoom=function(_9,_a){
_9=$(_9);
_9.setStyle({fontSize:(_a/100)+"em"});
if(Prototype.Browser.WebKit){
window.scrollBy(0,0);
}
return _9;
};
Element.getInlineOpacity=function(_b){
return $(_b).style.opacity||"";
};
Element.forceRerendering=function(_c){
try{
_c=$(_c);
var n=document.createTextNode(" ");
_c.appendChild(n);
_c.removeChild(n);
}
catch(e){
}
};
var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(_e){
return (-Math.cos(_e*Math.PI)/2)+0.5;
},reverse:function(_f){
return 1-_f;
},flicker:function(pos){
var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;
return pos>1?1:pos;
},wobble:function(pos){
return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5;
},pulse:function(pos,_13){
_13=_13||5;
return (((pos%(1/_13))*_13).round()==0?((pos*_13*2)-(pos*_13*2).floor()):1-((pos*_13*2)-(pos*_13*2).floor()));
},spring:function(pos){
return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6));
},none:function(pos){
return 0;
},full:function(pos){
return 1;
}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(_17){
var _18="position:relative";
if(Prototype.Browser.IE){
_18+=";zoom:1";
}
_17=$(_17);
$A(_17.childNodes).each(function(_19){
if(_19.nodeType==3){
_19.nodeValue.toArray().each(function(_1a){
_17.insertBefore(new Element("span",{style:_18}).update(_1a==" "?String.fromCharCode(160):_1a),_19);
});
Element.remove(_19);
}
});
},multiple:function(_1b,_1c){
var _1d;
if(((typeof _1b=="object")||Object.isFunction(_1b))&&(_1b.length)){
_1d=_1b;
}else{
_1d=$(_1b).childNodes;
}
var _1e=Object.extend({speed:0.1,delay:0},arguments[2]||{});
var _1f=_1e.delay;
$A(_1d).each(function(_20,_21){
new _1c(_20,Object.extend(_1e,{delay:_21*_1e.speed+_1f}));
});
},PAIRS:{"slide":["SlideDown","SlideUp"],"blind":["BlindDown","BlindUp"],"appear":["Appear","Fade"]},toggle:function(_22,_23){
_22=$(_22);
_23=(_23||"appear").toLowerCase();
var _24=Object.extend({queue:{position:"end",scope:(_22.id||"global"),limit:1}},arguments[2]||{});
Effect[_22.visible()?Effect.PAIRS[_23][1]:Effect.PAIRS[_23][0]](_22,_24);
}};
Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;
Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){
this.effects=[];
this.interval=null;
},_each:function(_25){
this.effects._each(_25);
},add:function(_26){
var _27=new Date().getTime();
var _28=Object.isString(_26.options.queue)?_26.options.queue:_26.options.queue.position;
switch(_28){
case "front":
this.effects.findAll(function(e){
return e.state=="idle";
}).each(function(e){
e.startOn+=_26.finishOn;
e.finishOn+=_26.finishOn;
});
break;
case "with-last":
_27=this.effects.pluck("startOn").max()||_27;
break;
case "end":
_27=this.effects.pluck("finishOn").max()||_27;
break;
}
_26.startOn+=_27;
_26.finishOn+=_27;
if(!_26.options.queue.limit||(this.effects.length<_26.options.queue.limit)){
this.effects.push(_26);
}
if(!this.interval){
this.interval=setInterval(this.loop.bind(this),15);
}
},remove:function(_2b){
this.effects=this.effects.reject(function(e){
return e==_2b;
});
if(this.effects.length==0){
clearInterval(this.interval);
this.interval=null;
}
},loop:function(){
var _2d=new Date().getTime();
for(var i=0,len=this.effects.length;i<len;i++){
this.effects[i]&&this.effects[i].loop(_2d);
}
}});
Effect.Queues={instances:$H(),get:function(_30){
if(!Object.isString(_30)){
return _30;
}
return this.instances.get(_30)||this.instances.set(_30,new Effect.ScopedQueue());
}};
Effect.Queue=Effect.Queues.get("global");
Effect.Base=Class.create({position:null,start:function(_31){
function codeForEvent(_32,_33){
return ((_32[_33+"Internal"]?"this.options."+_33+"Internal(this);":"")+(_32[_33]?"this.options."+_33+"(this);":""));
}
if(_31&&_31.transition===false){
_31.transition=Effect.Transitions.linear;
}
this.options=Object.extend(Object.extend({},Effect.DefaultOptions),_31||{});
this.currentFrame=0;
this.state="idle";
this.startOn=this.options.delay*1000;
this.finishOn=this.startOn+(this.options.duration*1000);
this.fromToDelta=this.options.to-this.options.from;
this.totalTime=this.finishOn-this.startOn;
this.totalFrames=this.options.fps*this.options.duration;
eval("this.render = function(pos){ "+"if (this.state==\"idle\"){this.state=\"running\";"+codeForEvent(this.options,"beforeSetup")+(this.setup?"this.setup();":"")+codeForEvent(this.options,"afterSetup")+"};if (this.state==\"running\"){"+"pos=this.options.transition(pos)*"+this.fromToDelta+"+"+this.options.from+";"+"this.position=pos;"+codeForEvent(this.options,"beforeUpdate")+(this.update?"this.update(pos);":"")+codeForEvent(this.options,"afterUpdate")+"}}");
this.event("beforeStart");
if(!this.options.sync){
Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this);
}
},loop:function(_34){
if(_34>=this.startOn){
if(_34>=this.finishOn){
this.render(1);
this.cancel();
this.event("beforeFinish");
if(this.finish){
this.finish();
}
this.event("afterFinish");
return;
}
var pos=(_34-this.startOn)/this.totalTime,_36=(pos*this.totalFrames).round();
if(_36>this.currentFrame){
this.render(pos);
this.currentFrame=_36;
}
}
},cancel:function(){
if(!this.options.sync){
Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this);
}
this.state="finished";
},event:function(_37){
if(this.options[_37+"Internal"]){
this.options[_37+"Internal"](this);
}
if(this.options[_37]){
this.options[_37](this);
}
},inspect:function(){
var _38=$H();
for(property in this){
if(!Object.isFunction(this[property])){
_38.set(property,this[property]);
}
}
return "#<Effect:"+_38.inspect()+",options:"+$H(this.options).inspect()+">";
}});
Effect.Parallel=Class.create(Effect.Base,{initialize:function(_39){
this.effects=_39||[];
this.start(arguments[1]);
},update:function(_3a){
this.effects.invoke("render",_3a);
},finish:function(_3b){
this.effects.each(function(_3c){
_3c.render(1);
_3c.cancel();
_3c.event("beforeFinish");
if(_3c.finish){
_3c.finish(_3b);
}
_3c.event("afterFinish");
});
}});
Effect.Tween=Class.create(Effect.Base,{initialize:function(_3d,_3e,to){
_3d=Object.isString(_3d)?$(_3d):_3d;
var _40=$A(arguments),_41=_40.last(),_42=_40.length==5?_40[3]:null;
this.method=Object.isFunction(_41)?_41.bind(_3d):Object.isFunction(_3d[_41])?_3d[_41].bind(_3d):function(_43){
_3d[_41]=_43;
};
this.start(Object.extend({from:_3e,to:to},_42||{}));
},update:function(_44){
this.method(_44);
}});
Effect.Event=Class.create(Effect.Base,{initialize:function(){
this.start(Object.extend({duration:0},arguments[0]||{}));
},update:Prototype.emptyFunction});
Effect.Opacity=Class.create(Effect.Base,{initialize:function(_45){
this.element=$(_45);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){
this.element.setStyle({zoom:1});
}
var _46=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});
this.start(_46);
},update:function(_47){
this.element.setOpacity(_47);
}});
Effect.Move=Class.create(Effect.Base,{initialize:function(_48){
this.element=$(_48);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _49=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});
this.start(_49);
},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(_4a){
this.element.setStyle({left:(this.options.x*_4a+this.originalLeft).round()+"px",top:(this.options.y*_4a+this.originalTop).round()+"px"});
}});
Effect.MoveBy=function(_4b,_4c,_4d){
return new Effect.Move(_4b,Object.extend({x:_4d,y:_4c},arguments[3]||{}));
};
Effect.Scale=Class.create(Effect.Base,{initialize:function(_4e,_4f){
this.element=$(_4e);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _50=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:_4f},arguments[2]||{});
this.start(_50);
},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 _52=this.element.getStyle("font-size")||"100%";
["em","px","%","pt"].each(function(_53){
if(_52.indexOf(_53)>0){
this.fontSize=parseFloat(_52);
this.fontSizeType=_53;
}
}.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(_54){
var _55=(this.options.scaleFrom/100)+(this.factor*_54);
if(this.options.scaleContent&&this.fontSize){
this.element.setStyle({fontSize:this.fontSize*_55+this.fontSizeType});
}
this.setDimensions(this.dims[0]*_55,this.dims[1]*_55);
},finish:function(_56){
if(this.restoreAfterFinish){
this.element.setStyle(this.originalStyle);
}
},setDimensions:function(_57,_58){
var d={};
if(this.options.scaleX){
d.width=_58.round()+"px";
}
if(this.options.scaleY){
d.height=_57.round()+"px";
}
if(this.options.scaleFromCenter){
var _5a=(_57-this.dims[0])/2;
var _5b=(_58-this.dims[1])/2;
if(this.elementPositioning=="absolute"){
if(this.options.scaleY){
d.top=this.originalTop-_5a+"px";
}
if(this.options.scaleX){
d.left=this.originalLeft-_5b+"px";
}
}else{
if(this.options.scaleY){
d.top=-_5a+"px";
}
if(this.options.scaleX){
d.left=-_5b+"px";
}
}
}
this.element.setStyle(d);
}});
Effect.Highlight=Class.create(Effect.Base,{initialize:function(_5c){
this.element=$(_5c);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _5d=Object.extend({startcolor:"#ffff99"},arguments[1]||{});
this.start(_5d);
},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(_60){
this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){
return m+((this._base[i]+(this._delta[i]*_60)).round().toColorPart());
}.bind(this))});
},finish:function(){
this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));
}});
Effect.ScrollTo=function(_64){
var _65=arguments[1]||{},_66=document.viewport.getScrollOffsets(),_67=$(_64).cumulativeOffset(),max=(window.height||document.body.scrollHeight)-document.viewport.getHeight();
if(_65.offset){
_67[1]+=_65.offset;
}
return new Effect.Tween(null,_66.top,_67[1]>max?max:_67[1],_65,function(p){
scrollTo(_66.left,p.round());
});
};
Effect.Fade=function(_6a){
_6a=$(_6a);
var _6b=_6a.getInlineOpacity();
var _6c=Object.extend({from:_6a.getOpacity()||1,to:0,afterFinishInternal:function(_6d){
if(_6d.options.to!=0){
return;
}
_6d.element.hide().setStyle({opacity:_6b});
}},arguments[1]||{});
return new Effect.Opacity(_6a,_6c);
};
Effect.Appear=function(_6e){
_6e=$(_6e);
var _6f=Object.extend({from:(_6e.getStyle("display")=="none"?0:_6e.getOpacity()||0),to:1,afterFinishInternal:function(_70){
_70.element.forceRerendering();
},beforeSetup:function(_71){
_71.element.setOpacity(_71.options.from).show();
}},arguments[1]||{});
return new Effect.Opacity(_6e,_6f);
};
Effect.Puff=function(_72){
_72=$(_72);
var _73={opacity:_72.getInlineOpacity(),position:_72.getStyle("position"),top:_72.style.top,left:_72.style.left,width:_72.style.width,height:_72.style.height};
return new Effect.Parallel([new Effect.Scale(_72,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(_72,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(_74){
Position.absolutize(_74.effects[0].element);
},afterFinishInternal:function(_75){
_75.effects[0].element.hide().setStyle(_73);
}},arguments[1]||{}));
};
Effect.BlindUp=function(_76){
_76=$(_76);
_76.makeClipping();
return new Effect.Scale(_76,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(_77){
_77.element.hide().undoClipping();
}},arguments[1]||{}));
};
Effect.BlindDown=function(_78){
_78=$(_78);
var _79=_78.getDimensions();
return new Effect.Scale(_78,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:_79.height,originalWidth:_79.width},restoreAfterFinish:true,afterSetup:function(_7a){
_7a.element.makeClipping().setStyle({height:"0px"}).show();
},afterFinishInternal:function(_7b){
_7b.element.undoClipping();
}},arguments[1]||{}));
};
Effect.SwitchOff=function(_7c){
_7c=$(_7c);
var _7d=_7c.getInlineOpacity();
return new Effect.Appear(_7c,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(_7e){
new Effect.Scale(_7e.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(_7f){
_7f.element.makePositioned().makeClipping();
},afterFinishInternal:function(_80){
_80.element.hide().undoClipping().undoPositioned().setStyle({opacity:_7d});
}});
}},arguments[1]||{}));
};
Effect.DropOut=function(_81){
_81=$(_81);
var _82={top:_81.getStyle("top"),left:_81.getStyle("left"),opacity:_81.getInlineOpacity()};
return new Effect.Parallel([new Effect.Move(_81,{x:0,y:100,sync:true}),new Effect.Opacity(_81,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(_83){
_83.effects[0].element.makePositioned();
},afterFinishInternal:function(_84){
_84.effects[0].element.hide().undoPositioned().setStyle(_82);
}},arguments[1]||{}));
};
Effect.Shake=function(_85){
_85=$(_85);
var _86=Object.extend({distance:20,duration:0.5},arguments[1]||{});
var _87=parseFloat(_86.distance);
var _88=parseFloat(_86.duration)/10;
var _89={top:_85.getStyle("top"),left:_85.getStyle("left")};
return new Effect.Move(_85,{x:_87,y:0,duration:_88,afterFinishInternal:function(_8a){
new Effect.Move(_8a.element,{x:-_87*2,y:0,duration:_88*2,afterFinishInternal:function(_8b){
new Effect.Move(_8b.element,{x:_87*2,y:0,duration:_88*2,afterFinishInternal:function(_8c){
new Effect.Move(_8c.element,{x:-_87*2,y:0,duration:_88*2,afterFinishInternal:function(_8d){
new Effect.Move(_8d.element,{x:_87*2,y:0,duration:_88*2,afterFinishInternal:function(_8e){
new Effect.Move(_8e.element,{x:-_87,y:0,duration:_88,afterFinishInternal:function(_8f){
_8f.element.undoPositioned().setStyle(_89);
}});
}});
}});
}});
}});
}});
};
Effect.SlideDown=function(_90){
_90=$(_90).cleanWhitespace();
var _91=_90.down().getStyle("bottom");
var _92=_90.getDimensions();
return new Effect.Scale(_90,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:_92.height,originalWidth:_92.width},restoreAfterFinish:true,afterSetup:function(_93){
_93.element.makePositioned();
_93.element.down().makePositioned();
if(window.opera){
_93.element.setStyle({top:""});
}
_93.element.makeClipping().setStyle({height:"0px"}).show();
},afterUpdateInternal:function(_94){
_94.element.down().setStyle({bottom:(_94.dims[0]-_94.element.clientHeight)+"px"});
},afterFinishInternal:function(_95){
_95.element.undoClipping().undoPositioned();
_95.element.down().undoPositioned().setStyle({bottom:_91});
}},arguments[1]||{}));
};
Effect.SlideUp=function(_96){
_96=$(_96).cleanWhitespace();
var _97=_96.down().getStyle("bottom");
var _98=_96.getDimensions();
return new Effect.Scale(_96,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:_98.height,originalWidth:_98.width},restoreAfterFinish:true,afterSetup:function(_99){
_99.element.makePositioned();
_99.element.down().makePositioned();
if(window.opera){
_99.element.setStyle({top:""});
}
_99.element.makeClipping().show();
},afterUpdateInternal:function(_9a){
_9a.element.down().setStyle({bottom:(_9a.dims[0]-_9a.element.clientHeight)+"px"});
},afterFinishInternal:function(_9b){
_9b.element.hide().undoClipping().undoPositioned();
_9b.element.down().undoPositioned().setStyle({bottom:_97});
}},arguments[1]||{}));
};
Effect.Squish=function(_9c){
return new Effect.Scale(_9c,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(_9d){
_9d.element.makeClipping();
},afterFinishInternal:function(_9e){
_9e.element.hide().undoClipping();
}});
};
Effect.Grow=function(_9f){
_9f=$(_9f);
var _a0=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});
var _a1={top:_9f.style.top,left:_9f.style.left,height:_9f.style.height,width:_9f.style.width,opacity:_9f.getInlineOpacity()};
var _a2=_9f.getDimensions();
var _a3,_a4;
var _a5,_a6;
switch(_a0.direction){
case "top-left":
_a3=_a4=_a5=_a6=0;
break;
case "top-right":
_a3=_a2.width;
_a4=_a6=0;
_a5=-_a2.width;
break;
case "bottom-left":
_a3=_a5=0;
_a4=_a2.height;
_a6=-_a2.height;
break;
case "bottom-right":
_a3=_a2.width;
_a4=_a2.height;
_a5=-_a2.width;
_a6=-_a2.height;
break;
case "center":
_a3=_a2.width/2;
_a4=_a2.height/2;
_a5=-_a2.width/2;
_a6=-_a2.height/2;
break;
}
return new Effect.Move(_9f,{x:_a3,y:_a4,duration:0.01,beforeSetup:function(_a7){
_a7.element.hide().makeClipping().makePositioned();
},afterFinishInternal:function(_a8){
new Effect.Parallel([new Effect.Opacity(_a8.element,{sync:true,to:1,from:0,transition:_a0.opacityTransition}),new Effect.Move(_a8.element,{x:_a5,y:_a6,sync:true,transition:_a0.moveTransition}),new Effect.Scale(_a8.element,100,{scaleMode:{originalHeight:_a2.height,originalWidth:_a2.width},sync:true,scaleFrom:window.opera?1:0,transition:_a0.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(_a9){
_a9.effects[0].element.setStyle({height:"0px"}).show();
},afterFinishInternal:function(_aa){
_aa.effects[0].element.undoClipping().undoPositioned().setStyle(_a1);
}},_a0));
}});
};
Effect.Shrink=function(_ab){
_ab=$(_ab);
var _ac=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});
var _ad={top:_ab.style.top,left:_ab.style.left,height:_ab.style.height,width:_ab.style.width,opacity:_ab.getInlineOpacity()};
var _ae=_ab.getDimensions();
var _af,_b0;
switch(_ac.direction){
case "top-left":
_af=_b0=0;
break;
case "top-right":
_af=_ae.width;
_b0=0;
break;
case "bottom-left":
_af=0;
_b0=_ae.height;
break;
case "bottom-right":
_af=_ae.width;
_b0=_ae.height;
break;
case "center":
_af=_ae.width/2;
_b0=_ae.height/2;
break;
}
return new Effect.Parallel([new Effect.Opacity(_ab,{sync:true,to:0,from:1,transition:_ac.opacityTransition}),new Effect.Scale(_ab,window.opera?1:0,{sync:true,transition:_ac.scaleTransition,restoreAfterFinish:true}),new Effect.Move(_ab,{x:_af,y:_b0,sync:true,transition:_ac.moveTransition})],Object.extend({beforeStartInternal:function(_b1){
_b1.effects[0].element.makePositioned().makeClipping();
},afterFinishInternal:function(_b2){
_b2.effects[0].element.hide().undoClipping().undoPositioned().setStyle(_ad);
}},_ac));
};
Effect.Pulsate=function(_b3){
_b3=$(_b3);
var _b4=arguments[1]||{};
var _b5=_b3.getInlineOpacity();
var _b6=_b4.transition||Effect.Transitions.sinoidal;
var _b7=function(pos){
return _b6(1-Effect.Transitions.pulse(pos,_b4.pulses));
};
_b7.bind(_b6);
return new Effect.Opacity(_b3,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(_b9){
_b9.element.setStyle({opacity:_b5});
}},_b4),{transition:_b7}));
};
Effect.Fold=function(_ba){
_ba=$(_ba);
var _bb={top:_ba.style.top,left:_ba.style.left,width:_ba.style.width,height:_ba.style.height};
_ba.makeClipping();
return new Effect.Scale(_ba,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(_bc){
new Effect.Scale(_ba,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(_bd){
_bd.element.hide().undoClipping().setStyle(_bb);
}});
}},arguments[1]||{}));
};
Effect.Morph=Class.create(Effect.Base,{initialize:function(_be){
this.element=$(_be);
if(!this.element){
throw (Effect._elementDoesNotExistError);
}
var _bf=Object.extend({style:{}},arguments[1]||{});
if(!Object.isString(_bf.style)){
this.style=$H(_bf.style);
}else{
if(_bf.style.include(":")){
this.style=_bf.style.parseStyle();
}else{
this.element.addClassName(_bf.style);
this.style=$H(this.element.getStyles());
this.element.removeClassName(_bf.style);
var css=this.element.getStyles();
this.style=this.style.reject(function(_c1){
return _c1.value==css[_c1.key];
});
_bf.afterFinishInternal=function(_c2){
_c2.element.addClassName(_c2.options.style);
_c2.transforms.each(function(_c3){
_c2.element.style[_c3.style]="";
});
};
}
}
this.start(_bf);
},setup:function(){
function parseColor(_c4){
if(!_c4||["rgba(0, 0, 0, 0)","transparent"].include(_c4)){
_c4="#ffffff";
}
_c4=_c4.parseColor();
return $R(0,2).map(function(i){
return parseInt(_c4.slice(i*2+1,i*2+3),16);
});
}
this.transforms=this.style.map(function(_c6){
var _c7=_c6[0],_c8=_c6[1],_c9=null;
if(_c8.parseColor("#zzzzzz")!="#zzzzzz"){
_c8=_c8.parseColor();
_c9="color";
}else{
if(_c7=="opacity"){
_c8=parseFloat(_c8);
if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){
this.element.setStyle({zoom:1});
}
}else{
if(Element.CSS_LENGTH.test(_c8)){
var _ca=_c8.match(/^([\+\-]?[0-9\.]+)(.*)$/);
_c8=parseFloat(_ca[1]);
_c9=(_ca.length==3)?_ca[2]:null;
}
}
}
var _cb=this.element.getStyle(_c7);
return {style:_c7.camelize(),originalValue:_c9=="color"?parseColor(_cb):parseFloat(_cb||0),targetValue:_c9=="color"?parseColor(_c8):_c8,unit:_c9};
}.bind(this)).reject(function(_cc){
return ((_cc.originalValue==_cc.targetValue)||(_cc.unit!="color"&&(isNaN(_cc.originalValue)||isNaN(_cc.targetValue))));
});
},update:function(_cd){
var _ce={},_cf,i=this.transforms.length;
while(i--){
_ce[(_cf=this.transforms[i]).style]=_cf.unit=="color"?"#"+(Math.round(_cf.originalValue[0]+(_cf.targetValue[0]-_cf.originalValue[0])*_cd)).toColorPart()+(Math.round(_cf.originalValue[1]+(_cf.targetValue[1]-_cf.originalValue[1])*_cd)).toColorPart()+(Math.round(_cf.originalValue[2]+(_cf.targetValue[2]-_cf.originalValue[2])*_cd)).toColorPart():(_cf.originalValue+(_cf.targetValue-_cf.originalValue)*_cd).toFixed(3)+(_cf.unit===null?"":_cf.unit);
}
this.element.setStyle(_ce,true);
}});
Effect.Transform=Class.create({initialize:function(_d1){
this.tracks=[];
this.options=arguments[1]||{};
this.addTracks(_d1);
},addTracks:function(_d2){
_d2.each(function(_d3){
_d3=$H(_d3);
var _d4=_d3.values().first();
this.tracks.push($H({ids:_d3.keys().first(),effect:Effect.Morph,options:{style:_d4}}));
}.bind(this));
return this;
},play:function(){
return new Effect.Parallel(this.tracks.map(function(_d5){
var ids=_d5.get("ids"),_d7=_d5.get("effect"),_d8=_d5.get("options");
var _d9=[$(ids)||$$(ids)].flatten();
return _d9.map(function(e){
return new _d7(e,Object.extend({sync:true},_d8));
});
}).flatten(),this.options);
}});
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.__parseStyleElement=document.createElement("div");
String.prototype.parseStyle=function(){
var _db,_dc=$H();
if(Prototype.Browser.WebKit){
_db=new Element("div",{style:this}).style;
}else{
String.__parseStyleElement.innerHTML="<div style=\""+this+"\"></div>";
_db=String.__parseStyleElement.childNodes[0].style;
}
Element.CSS_PROPERTIES.each(function(_dd){
if(_db[_dd]){
_dc.set(_dd,_db[_dd]);
}
});
if(Prototype.Browser.IE&&this.include("opacity")){
_dc.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
}
return _dc;
};
if(document.defaultView&&document.defaultView.getComputedStyle){
Element.getStyles=function(_de){
var css=document.defaultView.getComputedStyle($(_de),null);
return Element.CSS_PROPERTIES.inject({},function(_e0,_e1){
_e0[_e1]=css[_e1];
return _e0;
});
};
}else{
Element.getStyles=function(_e2){
_e2=$(_e2);
var css=_e2.currentStyle,_e4;
_e4=Element.CSS_PROPERTIES.inject({},function(_e5,_e6){
_e5[_e6]=css[_e6];
return _e5;
});
if(!_e4.opacity){
_e4.opacity=_e2.getOpacity();
}
return _e4;
};
}
Effect.Methods={morph:function(_e7,_e8){
_e7=$(_e7);
new Effect.Morph(_e7,Object.extend({style:_e8},arguments[2]||{}));
return _e7;
},visualEffect:function(_e9,_ea,_eb){
_e9=$(_e9);
var s=_ea.dasherize().camelize(),_ed=s.charAt(0).toUpperCase()+s.substring(1);
new Effect[_ed](_e9,_eb);
return _e9;
},highlight:function(_ee,_ef){
_ee=$(_ee);
new Effect.Highlight(_ee,_ef);
return _ee;
}};
$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown "+"pulsate shake puff squish switchOff dropOut").each(function(_f0){
Effect.Methods[_f0]=function(_f1,_f2){
_f1=$(_f1);
Effect[_f0.charAt(0).toUpperCase()+_f0.substring(1)](_f1,_f2);
return _f1;
};
});
$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){
Effect.Methods[f]=Element[f];
});
Element.addMethods(Effect.Methods);
//DragDrop
if(Object.isUndefined(Effect)){
throw ("dragdrop.js requires including script.aculo.us' effects.js library");
}
var Droppables={drops:[],remove:function(_1){
this.drops=this.drops.reject(function(d){
return d.element==$(_1);
});
},add:function(_3){
_3=$(_3);
var _4=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});
if(_4.containment){
_4._containers=[];
var _5=_4.containment;
if(Object.isArray(_5)){
_5.each(function(c){
_4._containers.push($(c));
});
}else{
_4._containers.push($(_5));
}
}
if(_4.accept){
_4.accept=[_4.accept].flatten();
}
Element.makePositioned(_3);
_4.element=_3;
this.drops.push(_4);
},findDeepestChild:function(_7){
deepest=_7[0];
for(i=1;i<_7.length;++i){
if(Element.isParent(_7[i].element,deepest.element)){
deepest=_7[i];
}
}
return deepest;
},isContained:function(_8,_9){
var _a;
if(_9.tree){
_a=_8.treeNode;
}else{
_a=_8.parentNode;
}
return _9._containers.detect(function(c){
return _a==c;
});
},isAffected:function(_c,_d,_e){
return ((_e.element!=_d)&&((!_e._containers)||this.isContained(_d,_e))&&((!_e.accept)||(Element.classNames(_d).detect(function(v){
return _e.accept.include(v);
})))&&Position.within(_e.element,_c[0],_c[1]));
},deactivate:function(_10){
if(_10.hoverclass){
Element.removeClassName(_10.element,_10.hoverclass);
}
this.last_active=null;
},activate:function(_11){
if(_11.hoverclass){
Element.addClassName(_11.element,_11.hoverclass);
}
this.last_active=_11;
},show:function(_12,_13){
if(!this.drops.length){
return;
}
var _14,_15=[];
this.drops.each(function(_16){
if(Droppables.isAffected(_12,_13,_16)){
_15.push(_16);
}
});
if(_15.length>0){
_14=Droppables.findDeepestChild(_15);
}
if(this.last_active&&this.last_active!=_14){
this.deactivate(this.last_active);
}
if(_14){
Position.within(_14.element,_12[0],_12[1]);
if(_14.onHover){
_14.onHover(_13,_14.element,Position.overlap(_14.overlap,_14.element));
}
if(_14!=this.last_active){
Droppables.activate(_14);
}
}
},fire:function(_17,_18){
if(!this.last_active){
return;
}
Position.prepare();
if(this.isAffected([Event.pointerX(_17),Event.pointerY(_17)],_18,this.last_active)){
if(this.last_active.onDrop){
this.last_active.onDrop(_18,this.last_active.element,_17);
return true;
}
}
},reset:function(){
if(this.last_active){
this.deactivate(this.last_active);
}
}};
var Draggables={drags:[],observers:[],register:function(_19){
if(this.drags.length==0){
this.eventMouseUp=this.endDrag.bindAsEventListener(this);
this.eventMouseMove=this.updateDrag.bindAsEventListener(this);
this.eventKeypress=this.keyPress.bindAsEventListener(this);
Event.observe(document,"mouseup",this.eventMouseUp);
Event.observe(document,"mousemove",this.eventMouseMove);
Event.observe(document,"keypress",this.eventKeypress);
}
this.drags.push(_19);
},unregister:function(_1a){
this.drags=this.drags.reject(function(d){
return d==_1a;
});
if(this.drags.length==0){
Event.stopObserving(document,"mouseup",this.eventMouseUp);
Event.stopObserving(document,"mousemove",this.eventMouseMove);
Event.stopObserving(document,"keypress",this.eventKeypress);
}
},activate:function(_1c){
if(_1c.options.delay){
this._timeout=setTimeout(function(){
Draggables._timeout=null;
window.focus();
Draggables.activeDraggable=_1c;
}.bind(this),_1c.options.delay);
}else{
window.focus();
this.activeDraggable=_1c;
}
},deactivate:function(){
this.activeDraggable=null;
},updateDrag:function(_1d){
if(!this.activeDraggable){
return;
}
var _1e=[Event.pointerX(_1d),Event.pointerY(_1d)];
if(this._lastPointer&&(this._lastPointer.inspect()==_1e.inspect())){
return;
}
this._lastPointer=_1e;
this.activeDraggable.updateDrag(_1d,_1e);
},endDrag:function(_1f){
if(this._timeout){
clearTimeout(this._timeout);
this._timeout=null;
}
if(!this.activeDraggable){
return;
}
this._lastPointer=null;
this.activeDraggable.endDrag(_1f);
this.activeDraggable=null;
},keyPress:function(_20){
if(this.activeDraggable){
this.activeDraggable.keyPress(_20);
}
},addObserver:function(_21){
this.observers.push(_21);
this._cacheObserverCallbacks();
},removeObserver:function(_22){
this.observers=this.observers.reject(function(o){
return o.element==_22;
});
this._cacheObserverCallbacks();
},notify:function(_24,_25,_26){
if(this[_24+"Count"]>0){
this.observers.each(function(o){
if(o[_24]){
o[_24](_24,_25,_26);
}
});
}
if(_25.options[_24]){
_25.options[_24](_25,_26);
}
},_cacheObserverCallbacks:function(){
["onStart","onEnd","onDrag"].each(function(_28){
Draggables[_28+"Count"]=Draggables.observers.select(function(o){
return o[_28];
}).length;
});
}};
var Draggable=Class.create({initialize:function(_2a){
var _2b={handle:false,reverteffect:function(_2c,_2d,_2e){
var dur=Math.sqrt(Math.abs(_2d^2)+Math.abs(_2e^2))*0.02;
new Effect.Move(_2c,{x:-_2e,y:-_2d,duration:dur,queue:{scope:"_draggable",position:"end"}});
},endeffect:function(_30){
var _31=Object.isNumber(_30._opacity)?_30._opacity:1;
new Effect.Opacity(_30,{duration:0.2,from:0.7,to:_31,queue:{scope:"_draggable",position:"end"},afterFinish:function(){
Draggable._dragging[_30]=false;
}});
},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};
if(!arguments[1]||Object.isUndefined(arguments[1].endeffect)){
Object.extend(_2b,{starteffect:function(_32){
_32._opacity=Element.getOpacity(_32);
Draggable._dragging[_32]=true;
new Effect.Opacity(_32,{duration:0.2,from:_32._opacity,to:0.7});
}});
}
var _33=Object.extend(_2b,arguments[1]||{});
this.element=$(_2a);
if(_33.handle&&Object.isString(_33.handle)){
this.handle=this.element.down("."+_33.handle,0);
}
if(!this.handle){
this.handle=$(_33.handle);
}
if(!this.handle){
this.handle=this.element;
}
if(_33.scroll&&!_33.scroll.scrollTo&&!_33.scroll.outerHTML){
_33.scroll=$(_33.scroll);
this._isScrollChild=Element.childOf(this.element,_33.scroll);
}
Element.makePositioned(this.element);
this.options=_33;
this.dragging=false;
this.eventMouseDown=this.initDrag.bindAsEventListener(this);
Event.observe(this.handle,"mousedown",this.eventMouseDown);
Draggables.register(this);
},destroy:function(){
Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);
Draggables.unregister(this);
},currentDelta:function(){
return ([parseInt(Element.getStyle(this.element,"left")||"0"),parseInt(Element.getStyle(this.element,"top")||"0")]);
},initDrag:function(_34){
if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element]){
return;
}
if(Event.isLeftClick(_34)){
var src=Event.element(_34);
if((tag_name=src.tagName.toUpperCase())&&(tag_name=="INPUT"||tag_name=="SELECT"||tag_name=="OPTION"||tag_name=="BUTTON"||tag_name=="TEXTAREA")){
return;
}
var _36=[Event.pointerX(_34),Event.pointerY(_34)];
var pos=Position.cumulativeOffset(this.element);
this.offset=[0,1].map(function(i){
return (_36[i]-pos[i]);
});
Draggables.activate(this);
Event.stop(_34);
}
},startDrag:function(_39){
this.dragging=true;
if(!this.delta){
this.delta=this.currentDelta();
}
if(this.options.zindex){
this.originalZ=parseInt(Element.getStyle(this.element,"z-index")||0);
this.element.style.zIndex=this.options.zindex;
}
if(this.options.ghosting){
this._clone=this.element.cloneNode(true);
this.element._originallyAbsolute=(this.element.getStyle("position")=="absolute");
if(!this.element._originallyAbsolute){
Position.absolutize(this.element);
}
this.element.parentNode.insertBefore(this._clone,this.element);
}
if(this.options.scroll){
if(this.options.scroll==window){
var _3a=this._getWindowScroll(this.options.scroll);
this.originalScrollLeft=_3a.left;
this.originalScrollTop=_3a.top;
}else{
this.originalScrollLeft=this.options.scroll.scrollLeft;
this.originalScrollTop=this.options.scroll.scrollTop;
}
}
Draggables.notify("onStart",this,_39);
if(this.options.starteffect){
this.options.starteffect(this.element);
}
},updateDrag:function(_3b,_3c){
if(!this.dragging){
this.startDrag(_3b);
}
if(!this.options.quiet){
Position.prepare();
Droppables.show(_3c,this.element);
}
Draggables.notify("onDrag",this,_3b);
this.draw(_3c);
if(this.options.change){
this.options.change(this);
}
if(this.options.scroll){
this.stopScrolling();
var p;
if(this.options.scroll==window){
with(this._getWindowScroll(this.options.scroll)){
p=[left,top,left+width,top+height];
}
}else{
p=Position.page(this.options.scroll);
p[0]+=this.options.scroll.scrollLeft+Position.deltaX;
p[1]+=this.options.scroll.scrollTop+Position.deltaY;
p.push(p[0]+this.options.scroll.offsetWidth);
p.push(p[1]+this.options.scroll.offsetHeight);
}
var _3e=[0,0];
if(_3c[0]<(p[0]+this.options.scrollSensitivity)){
_3e[0]=_3c[0]-(p[0]+this.options.scrollSensitivity);
}
if(_3c[1]<(p[1]+this.options.scrollSensitivity)){
_3e[1]=_3c[1]-(p[1]+this.options.scrollSensitivity);
}
if(_3c[0]>(p[2]-this.options.scrollSensitivity)){
_3e[0]=_3c[0]-(p[2]-this.options.scrollSensitivity);
}
if(_3c[1]>(p[3]-this.options.scrollSensitivity)){
_3e[1]=_3c[1]-(p[3]-this.options.scrollSensitivity);
}
this.startScrolling(_3e);
}
if(Prototype.Browser.WebKit){
window.scrollBy(0,0);
}
Event.stop(_3b);
},finishDrag:function(_3f,_40){
this.dragging=false;
if(this.options.quiet){
Position.prepare();
var _41=[Event.pointerX(_3f),Event.pointerY(_3f)];
Droppables.show(_41,this.element);
}
if(this.options.ghosting){
if(!this.element._originallyAbsolute){
Position.relativize(this.element);
}
delete this.element._originallyAbsolute;
Element.remove(this._clone);
this._clone=null;
}
var _42=false;
if(_40){
_42=Droppables.fire(_3f,this.element);
if(!_42){
_42=false;
}
}
if(_42&&this.options.onDropped){
this.options.onDropped(this.element);
}
Draggables.notify("onEnd",this,_3f);
var _43=this.options.revert;
if(_43&&Object.isFunction(_43)){
_43=_43(this.element);
}
var d=this.currentDelta();
if(_43&&this.options.reverteffect){
if(_42==0||_43!="failure"){
this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);
}
}else{
this.delta=d;
}
if(this.options.zindex){
this.element.style.zIndex=this.originalZ;
}
if(this.options.endeffect){
this.options.endeffect(this.element);
}
Draggables.deactivate(this);
Droppables.reset();
},keyPress:function(_45){
if(_45.keyCode!=Event.KEY_ESC){
return;
}
this.finishDrag(_45,false);
Event.stop(_45);
},endDrag:function(_46){
if(!this.dragging){
return;
}
this.stopScrolling();
this.finishDrag(_46,true);
Event.stop(_46);
},draw:function(_47){
var pos=Position.cumulativeOffset(this.element);
if(this.options.ghosting){
var r=Position.realOffset(this.element);
pos[0]+=r[0]-Position.deltaX;
pos[1]+=r[1]-Position.deltaY;
}
var d=this.currentDelta();
pos[0]-=d[0];
pos[1]-=d[1];
if(this.options.scroll&&(this.options.scroll!=window&&this._isScrollChild)){
pos[0]-=this.options.scroll.scrollLeft-this.originalScrollLeft;
pos[1]-=this.options.scroll.scrollTop-this.originalScrollTop;
}
var p=[0,1].map(function(i){
return (_47[i]-pos[i]-this.offset[i]);
}.bind(this));
if(this.options.snap){
if(Object.isFunction(this.options.snap)){
p=this.options.snap(p[0],p[1],this);
}else{
if(Object.isArray(this.options.snap)){
p=p.map(function(v,i){
return (v/this.options.snap[i]).round()*this.options.snap[i];
}.bind(this));
}else{
p=p.map(function(v){
return (v/this.options.snap).round()*this.options.snap;
}.bind(this));
}
}
}
var _50=this.element.style;
if((!this.options.constraint)||(this.options.constraint=="horizontal")){
_50.left=p[0]+"px";
}
if((!this.options.constraint)||(this.options.constraint=="vertical")){
_50.top=p[1]+"px";
}
if(_50.visibility=="hidden"){
_50.visibility="";
}
},stopScrolling:function(){
if(this.scrollInterval){
clearInterval(this.scrollInterval);
this.scrollInterval=null;
Draggables._lastScrollPointer=null;
}
},startScrolling:function(_51){
if(!(_51[0]||_51[1])){
return;
}
this.scrollSpeed=[_51[0]*this.options.scrollSpeed,_51[1]*this.options.scrollSpeed];
this.lastScrolled=new Date();
this.scrollInterval=setInterval(this.scroll.bind(this),10);
},scroll:function(){
var _52=new Date();
var _53=_52-this.lastScrolled;
this.lastScrolled=_52;
if(this.options.scroll==window){
with(this._getWindowScroll(this.options.scroll)){
if(this.scrollSpeed[0]||this.scrollSpeed[1]){
var d=_53/1000;
this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1]);
}
}
}else{
this.options.scroll.scrollLeft+=this.scrollSpeed[0]*_53/1000;
this.options.scroll.scrollTop+=this.scrollSpeed[1]*_53/1000;
}
Position.prepare();
Droppables.show(Draggables._lastPointer,this.element);
Draggables.notify("onDrag",this);
if(this._isScrollChild){
Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);
Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*_53/1000;
Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*_53/1000;
if(Draggables._lastScrollPointer[0]<0){
Draggables._lastScrollPointer[0]=0;
}
if(Draggables._lastScrollPointer[1]<0){
Draggables._lastScrollPointer[1]=0;
}
this.draw(Draggables._lastScrollPointer);
}
if(this.options.change){
this.options.change(this);
}
},_getWindowScroll:function(w){
var T,L,W,H;
with(w.document){
if(w.document.documentElement&&documentElement.scrollTop){
T=documentElement.scrollTop;
L=documentElement.scrollLeft;
}else{
if(w.document.body){
T=body.scrollTop;
L=body.scrollLeft;
}
}
if(w.innerWidth){
W=w.innerWidth;
H=w.innerHeight;
}else{
if(w.document.documentElement&&documentElement.clientWidth){
W=documentElement.clientWidth;
H=documentElement.clientHeight;
}else{
W=body.offsetWidth;
H=body.offsetHeight;
}
}
}
return {top:T,left:L,width:W,height:H};
}});
Draggable._dragging={};
var SortableObserver=Class.create({initialize:function(_5a,_5b){
this.element=$(_5a);
this.observer=_5b;
this.lastValue=Sortable.serialize(this.element);
},onStart:function(){
this.lastValue=Sortable.serialize(this.element);
},onEnd:function(){
Sortable.unmark();
if(this.lastValue!=Sortable.serialize(this.element)){
this.observer(this.element);
}
}});
var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(_5c){
while(_5c.tagName.toUpperCase()!="BODY"){
if(_5c.id&&Sortable.sortables[_5c.id]){
return _5c;
}
_5c=_5c.parentNode;
}
},options:function(_5d){
_5d=Sortable._findRootElement($(_5d));
if(!_5d){
return;
}
return Sortable.sortables[_5d.id];
},destroy:function(_5e){
var s=Sortable.options(_5e);
if(s){
Draggables.removeObserver(s.element);
s.droppables.each(function(d){
Droppables.remove(d);
});
s.draggables.invoke("destroy");
delete Sortable.sortables[s.element.id];
}
},create:function(_61){
_61=$(_61);
var _62=Object.extend({element:_61,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:_61,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});
this.destroy(_61);
var _63={revert:true,quiet:_62.quiet,scroll:_62.scroll,scrollSpeed:_62.scrollSpeed,scrollSensitivity:_62.scrollSensitivity,delay:_62.delay,ghosting:_62.ghosting,constraint:_62.constraint,handle:_62.handle};
if(_62.starteffect){
_63.starteffect=_62.starteffect;
}
if(_62.reverteffect){
_63.reverteffect=_62.reverteffect;
}else{
if(_62.ghosting){
_63.reverteffect=function(_64){
_64.style.top=0;
_64.style.left=0;
};
}
}
if(_62.endeffect){
_63.endeffect=_62.endeffect;
}
if(_62.zindex){
_63.zindex=_62.zindex;
}
var _65={overlap:_62.overlap,containment:_62.containment,tree:_62.tree,hoverclass:_62.hoverclass,onHover:Sortable.onHover};
var _66={onHover:Sortable.onEmptyHover,overlap:_62.overlap,containment:_62.containment,hoverclass:_62.hoverclass};
Element.cleanWhitespace(_61);
_62.draggables=[];
_62.droppables=[];
if(_62.dropOnEmpty||_62.tree){
Droppables.add(_61,_66);
_62.droppables.push(_61);
}
(_62.elements||this.findElements(_61,_62)||[]).each(function(e,i){
var _69=_62.handles?$(_62.handles[i]):(_62.handle?$(e).select("."+_62.handle)[0]:e);
_62.draggables.push(new Draggable(e,Object.extend(_63,{handle:_69})));
Droppables.add(e,_65);
if(_62.tree){
e.treeNode=_61;
}
_62.droppables.push(e);
});
if(_62.tree){
(Sortable.findTreeElements(_61,_62)||[]).each(function(e){
Droppables.add(e,_66);
e.treeNode=_61;
_62.droppables.push(e);
});
}
this.sortables[_61.id]=_62;
Draggables.addObserver(new SortableObserver(_61,_62.onUpdate));
},findElements:function(_6b,_6c){
return Element.findChildren(_6b,_6c.only,_6c.tree?true:false,_6c.tag);
},findTreeElements:function(_6d,_6e){
return Element.findChildren(_6d,_6e.only,_6e.tree?true:false,_6e.treeTag);
},onHover:function(_6f,_70,_71){
if(Element.isParent(_70,_6f)){
return;
}
if(_71>0.33&&_71<0.66&&Sortable.options(_70).tree){
return;
}else{
if(_71>0.5){
Sortable.mark(_70,"before");
if(_70.previousSibling!=_6f){
var _72=_6f.parentNode;
_6f.style.visibility="hidden";
_70.parentNode.insertBefore(_6f,_70);
if(_70.parentNode!=_72){
Sortable.options(_72).onChange(_6f);
}
Sortable.options(_70.parentNode).onChange(_6f);
}
}else{
Sortable.mark(_70,"after");
var _73=_70.nextSibling||null;
if(_73!=_6f){
var _72=_6f.parentNode;
_6f.style.visibility="hidden";
_70.parentNode.insertBefore(_6f,_73);
if(_70.parentNode!=_72){
Sortable.options(_72).onChange(_6f);
}
Sortable.options(_70.parentNode).onChange(_6f);
}
}
}
},onEmptyHover:function(_74,_75,_76){
var _77=_74.parentNode;
var _78=Sortable.options(_75);
if(!Element.isParent(_75,_74)){
var _79;
var _7a=Sortable.findElements(_75,{tag:_78.tag,only:_78.only});
var _7b=null;
if(_7a){
var _7c=Element.offsetSize(_75,_78.overlap)*(1-_76);
for(_79=0;_79<_7a.length;_79+=1){
if(_7c-Element.offsetSize(_7a[_79],_78.overlap)>=0){
_7c-=Element.offsetSize(_7a[_79],_78.overlap);
}else{
if(_7c-(Element.offsetSize(_7a[_79],_78.overlap)/2)>=0){
_7b=_79+1<_7a.length?_7a[_79+1]:null;
break;
}else{
_7b=_7a[_79];
break;
}
}
}
}
_75.insertBefore(_74,_7b);
Sortable.options(_77).onChange(_74);
_78.onChange(_74);
}
},unmark:function(){
if(Sortable._marker){
Sortable._marker.hide();
}
},mark:function(_7d,_7e){
var _7f=Sortable.options(_7d.parentNode);
if(_7f&&!_7f.ghosting){
return;
}
if(!Sortable._marker){
Sortable._marker=($("dropmarker")||Element.extend(document.createElement("DIV"))).hide().addClassName("dropmarker").setStyle({position:"absolute"});
document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
}
var _80=Position.cumulativeOffset(_7d);
Sortable._marker.setStyle({left:_80[0]+"px",top:_80[1]+"px"});
if(_7e=="after"){
if(_7f.overlap=="horizontal"){
Sortable._marker.setStyle({left:(_80[0]+_7d.clientWidth)+"px"});
}else{
Sortable._marker.setStyle({top:(_80[1]+_7d.clientHeight)+"px"});
}
}
Sortable._marker.show();
},_tree:function(_81,_82,_83){
var _84=Sortable.findElements(_81,_82)||[];
for(var i=0;i<_84.length;++i){
var _86=_84[i].id.match(_82.format);
if(!_86){
continue;
}
var _87={id:encodeURIComponent(_86?_86[1]:null),element:_81,parent:_83,children:[],position:_83.children.length,container:$(_84[i]).down(_82.treeTag)};
if(_87.container){
this._tree(_87.container,_82,_87);
}
_83.children.push(_87);
}
return _83;
},tree:function(_88){
_88=$(_88);
var _89=this.options(_88);
var _8a=Object.extend({tag:_89.tag,treeTag:_89.treeTag,only:_89.only,name:_88.id,format:_89.format},arguments[1]||{});
var _8b={id:null,parent:null,children:[],container:_88,position:0};
return Sortable._tree(_88,_8a,_8b);
},_constructIndex:function(_8c){
var _8d="";
do{
if(_8c.id){
_8d="["+_8c.position+"]"+_8d;
}
}while((_8c=_8c.parent)!=null);
return _8d;
},sequence:function(_8e){
_8e=$(_8e);
var _8f=Object.extend(this.options(_8e),arguments[1]||{});
return $(this.findElements(_8e,_8f)||[]).map(function(_90){
return _90.id.match(_8f.format)?_90.id.match(_8f.format)[1]:"";
});
},setSequence:function(_91,_92){
_91=$(_91);
var _93=Object.extend(this.options(_91),arguments[2]||{});
var _94={};
this.findElements(_91,_93).each(function(n){
if(n.id.match(_93.format)){
_94[n.id.match(_93.format)[1]]=[n,n.parentNode];
}
n.parentNode.removeChild(n);
});
_92.each(function(_96){
var n=_94[_96];
if(n){
n[1].appendChild(n[0]);
delete _94[_96];
}
});
},serialize:function(_98){
_98=$(_98);
var _99=Object.extend(Sortable.options(_98),arguments[1]||{});
var _9a=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:_98.id);
if(_99.tree){
return Sortable.tree(_98,arguments[1]).children.map(function(_9b){
return [_9a+Sortable._constructIndex(_9b)+"[id]="+encodeURIComponent(_9b.id)].concat(_9b.children.map(arguments.callee));
}).flatten().join("&");
}else{
return Sortable.sequence(_98,arguments[1]).map(function(_9c){
return _9a+"[]="+encodeURIComponent(_9c);
}).join("&");
}
}};
Element.isParent=function(_9d,_9e){
if(!_9d.parentNode||_9d==_9e){
return false;
}
if(_9d.parentNode==_9e){
return true;
}
return Element.isParent(_9d.parentNode,_9e);
};
Element.findChildren=function(_9f,_a0,_a1,_a2){
if(!_9f.hasChildNodes()){
return null;
}
_a2=_a2.toUpperCase();
if(_a0){
_a0=[_a0].flatten();
}
var _a3=[];
$A(_9f.childNodes).each(function(e){
if(e.tagName&&e.tagName.toUpperCase()==_a2&&(!_a0||(Element.classNames(e).detect(function(v){
return _a0.include(v);
})))){
_a3.push(e);
}
if(_a1){
var _a6=Element.findChildren(e,_a0,_a1,_a2);
if(_a6){
_a3.push(_a6);
}
}
});
return (_a3.length>0?_a3.flatten():[]);
};
Element.offsetSize=function(_a7,_a8){
return _a7["offset"+((_a8=="vertical"||_a8=="height")?"Height":"Width")];
};
//Controls
if(typeof Effect=="undefined"){
throw ("controls.js requires including script.aculo.us' effects.js library");
}
var Autocompleter={};
Autocompleter.Base=Class.create({baseInitialize:function(_1,_2,_3){
_1=$(_1);
this.element=_1;
this.update=$(_2);
this.hasFocus=false;
this.changed=false;
this.active=false;
this.index=0;
this.entryCount=0;
this.oldElementValue=this.element.value;
if(this.setOptions){
this.setOptions(_3);
}else{
this.options=_3||{};
}
this.options.paramName=this.options.paramName||this.element.name;
this.options.tokens=this.options.tokens||[];
this.options.frequency=this.options.frequency||0.4;
this.options.minChars=this.options.minChars||1;
this.options.onShow=this.options.onShow||function(_4,_5){
if(!_5.style.position||_5.style.position=="absolute"){
_5.style.position="absolute";
Position.clone(_4,_5,{setHeight:false,offsetTop:_4.offsetHeight});
}
Effect.Appear(_5,{duration:0.15});
};
this.options.onHide=this.options.onHide||function(_6,_7){
new Effect.Fade(_7,{duration:0.15});
};
if(typeof (this.options.tokens)=="string"){
this.options.tokens=new Array(this.options.tokens);
}
if(!this.options.tokens.include("\n")){
this.options.tokens.push("\n");
}
this.observer=null;
this.element.setAttribute("autocomplete","off");
Element.hide(this.update);
Event.observe(this.element,"blur",this.onBlur.bindAsEventListener(this));
Event.observe(this.element,"keydown",this.onKeyPress.bindAsEventListener(this));
},show:function(){
if(Element.getStyle(this.update,"display")=="none"){
this.options.onShow(this.element,this.update);
}
if(!this.iefix&&(Prototype.Browser.IE)&&(Element.getStyle(this.update,"position")=="absolute")){
new Insertion.After(this.update,"<iframe id=\""+this.update.id+"_iefix\" "+"style=\"display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);\" "+"src=\"javascript:false;\" frameborder=\"0\" scrolling=\"no\"></iframe>");
this.iefix=$(this.update.id+"_iefix");
}
if(this.iefix){
setTimeout(this.fixIEOverlapping.bind(this),50);
}
},fixIEOverlapping:function(){
Position.clone(this.update,this.iefix,{setTop:(!this.update.style.height)});
this.iefix.style.zIndex=1;
this.update.style.zIndex=2;
Element.show(this.iefix);
},hide:function(){
this.stopIndicator();
if(Element.getStyle(this.update,"display")!="none"){
this.options.onHide(this.element,this.update);
}
if(this.iefix){
Element.hide(this.iefix);
}
},startIndicator:function(){
if(this.options.indicator){
Element.show(this.options.indicator);
}
},stopIndicator:function(){
if(this.options.indicator){
Element.hide(this.options.indicator);
}
},onKeyPress:function(_8){
if(this.active){
switch(_8.keyCode){
case Event.KEY_TAB:
case Event.KEY_RETURN:
this.selectEntry();
Event.stop(_8);
case Event.KEY_ESC:
this.hide();
this.active=false;
Event.stop(_8);
return;
case Event.KEY_LEFT:
case Event.KEY_RIGHT:
return;
case Event.KEY_UP:
this.markPrevious();
this.render();
Event.stop(_8);
return;
case Event.KEY_DOWN:
this.markNext();
this.render();
Event.stop(_8);
return;
}
}else{
if(_8.keyCode==Event.KEY_TAB||_8.keyCode==Event.KEY_RETURN||(Prototype.Browser.WebKit>0&&_8.keyCode==0)){
return;
}
}
this.changed=true;
this.hasFocus=true;
if(this.observer){
clearTimeout(this.observer);
}
this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000);
},activate:function(){
this.changed=false;
this.hasFocus=true;
this.getUpdatedChoices();
},onHover:function(_9){
var _a=Event.findElement(_9,"LI");
if(this.index!=_a.autocompleteIndex){
this.index=_a.autocompleteIndex;
this.render();
}
Event.stop(_9);
},onClick:function(_b){
var _c=Event.findElement(_b,"LI");
this.index=_c.autocompleteIndex;
this.selectEntry();
this.hide();
},onBlur:function(_d){
setTimeout(this.hide.bind(this),250);
this.hasFocus=false;
this.active=false;
},render:function(){
if(this.entryCount>0){
for(var i=0;i<this.entryCount;i++){
this.index==i?Element.addClassName(this.getEntry(i),"selected"):Element.removeClassName(this.getEntry(i),"selected");
}
if(this.hasFocus){
this.show();
this.active=true;
}
}else{
this.active=false;
this.hide();
}
},markPrevious:function(){
if(this.index>0){
this.index--;
}else{
this.index=this.entryCount-1;
}
this.getEntry(this.index).scrollIntoView(true);
},markNext:function(){
if(this.index<this.entryCount-1){
this.index++;
}else{
this.index=0;
}
this.getEntry(this.index).scrollIntoView(false);
},getEntry:function(_f){
return this.update.firstChild.childNodes[_f];
},getCurrentEntry:function(){
return this.getEntry(this.index);
},selectEntry:function(){
this.active=false;
this.updateElement(this.getCurrentEntry());
},updateElement:function(_10){
if(this.options.updateElement){
this.options.updateElement(_10);
return;
}
var _11="";
if(this.options.select){
var _12=$(_10).select("."+this.options.select)||[];
if(_12.length>0){
_11=Element.collectTextNodes(_12[0],this.options.select);
}
}else{
_11=Element.collectTextNodesIgnoreClass(_10,"informal");
}
var _13=this.getTokenBounds();
if(_13[0]!=-1){
var _14=this.element.value.substr(0,_13[0]);
var _15=this.element.value.substr(_13[0]).match(/^\s+/);
if(_15){
_14+=_15[0];
}
this.element.value=_14+_11+this.element.value.substr(_13[1]);
}else{
this.element.value=_11;
}
this.oldElementValue=this.element.value;
this.element.focus();
if(this.options.afterUpdateElement){
this.options.afterUpdateElement(this.element,_10);
}
},updateChoices:function(_16){
if(!this.changed&&this.hasFocus){
this.update.innerHTML=_16;
Element.cleanWhitespace(this.update);
Element.cleanWhitespace(this.update.down());
if(this.update.firstChild&&this.update.down().childNodes){
this.entryCount=this.update.down().childNodes.length;
for(var i=0;i<this.entryCount;i++){
var _18=this.getEntry(i);
_18.autocompleteIndex=i;
this.addObservers(_18);
}
}else{
this.entryCount=0;
}
this.stopIndicator();
this.index=0;
if(this.entryCount==1&&this.options.autoSelect){
this.selectEntry();
this.hide();
}else{
this.render();
}
}
},addObservers:function(_19){
Event.observe(_19,"mouseover",this.onHover.bindAsEventListener(this));
Event.observe(_19,"click",this.onClick.bindAsEventListener(this));
},onObserverEvent:function(){
this.changed=false;
this.tokenBounds=null;
if(this.getToken().length>=this.options.minChars){
this.getUpdatedChoices();
}else{
this.active=false;
this.hide();
}
this.oldElementValue=this.element.value;
},getToken:function(){
var _1a=this.getTokenBounds();
return this.element.value.substring(_1a[0],_1a[1]).strip();
},getTokenBounds:function(){
if(null!=this.tokenBounds){
return this.tokenBounds;
}
var _1b=this.element.value;
if(_1b.strip().empty()){
return [-1,0];
}
var _1c=arguments.callee.getFirstDifferencePos(_1b,this.oldElementValue);
var _1d=(_1c==this.oldElementValue.length?1:0);
var _1e=-1,_1f=_1b.length;
var tp;
for(var _21=0,l=this.options.tokens.length;_21<l;++_21){
tp=_1b.lastIndexOf(this.options.tokens[_21],_1c+_1d-1);
if(tp>_1e){
_1e=tp;
}
tp=_1b.indexOf(this.options.tokens[_21],_1c+_1d);
if(-1!=tp&&tp<_1f){
_1f=tp;
}
}
return (this.tokenBounds=[_1e+1,_1f]);
}});
Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos=function(_23,_24){
var _25=Math.min(_23.length,_24.length);
for(var _26=0;_26<_25;++_26){
if(_23[_26]!=_24[_26]){
return _26;
}
}
return _25;
};
Ajax.Autocompleter=Class.create(Autocompleter.Base,{initialize:function(_27,_28,url,_2a){
this.baseInitialize(_27,_28,_2a);
this.options.asynchronous=true;
this.options.onComplete=this.onComplete.bind(this);
this.options.defaultParams=this.options.parameters||null;
this.url=url;
},getUpdatedChoices:function(){
this.startIndicator();
var _2b=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken());
this.options.parameters=this.options.callback?this.options.callback(this.element,_2b):_2b;
if(this.options.defaultParams){
this.options.parameters+="&"+this.options.defaultParams;
}
new Ajax.Request(this.url,this.options);
},onComplete:function(_2c){
this.updateChoices(_2c.responseText);
}});
Autocompleter.Local=Class.create(Autocompleter.Base,{initialize:function(_2d,_2e,_2f,_30){
this.baseInitialize(_2d,_2e,_30);
this.options.array=_2f;
},getUpdatedChoices:function(){
this.updateChoices(this.options.selector(this));
},setOptions:function(_31){
this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(_32){
var ret=[];
var _34=[];
var _35=_32.getToken();
var _36=0;
for(var i=0;i<_32.options.array.length&&ret.length<_32.options.choices;i++){
var _38=_32.options.array[i];
var _39=_32.options.ignoreCase?_38.toLowerCase().indexOf(_35.toLowerCase()):_38.indexOf(_35);
while(_39!=-1){
if(_39==0&&_38.length!=_35.length){
ret.push("<li><strong>"+_38.substr(0,_35.length)+"</strong>"+_38.substr(_35.length)+"</li>");
break;
}else{
if(_35.length>=_32.options.partialChars&&_32.options.partialSearch&&_39!=-1){
if(_32.options.fullSearch||/\s/.test(_38.substr(_39-1,1))){
_34.push("<li>"+_38.substr(0,_39)+"<strong>"+_38.substr(_39,_35.length)+"</strong>"+_38.substr(_39+_35.length)+"</li>");
break;
}
}
}
_39=_32.options.ignoreCase?_38.toLowerCase().indexOf(_35.toLowerCase(),_39+1):_38.indexOf(_35,_39+1);
}
}
if(_34.length){
ret=ret.concat(_34.slice(0,_32.options.choices-ret.length));
}
return "<ul>"+ret.join("")+"</ul>";
}},_31||{});
}});
Field.scrollFreeActivate=function(_3a){
setTimeout(function(){
Field.activate(_3a);
},1);
};
Ajax.InPlaceEditor=Class.create({initialize:function(_3b,url,_3d){
this.url=url;
this.element=_3b=$(_3b);
this.prepareOptions();
this._controls={};
arguments.callee.dealWithDeprecatedOptions(_3d);
Object.extend(this.options,_3d||{});
if(!this.options.formId&&this.element.id){
this.options.formId=this.element.id+"-inplaceeditor";
if($(this.options.formId)){
this.options.formId="";
}
}
if(this.options.externalControl){
this.options.externalControl=$(this.options.externalControl);
}
if(!this.options.externalControl){
this.options.externalControlOnly=false;
}
this._originalBackground=this.element.getStyle("background-color")||"transparent";
this.element.title=this.options.clickToEditText;
this._boundCancelHandler=this.handleFormCancellation.bind(this);
this._boundComplete=(this.options.onComplete||Prototype.emptyFunction).bind(this);
this._boundFailureHandler=this.handleAJAXFailure.bind(this);
this._boundSubmitHandler=this.handleFormSubmission.bind(this);
this._boundWrapperHandler=this.wrapUp.bind(this);
this.registerListeners();
},checkForEscapeOrReturn:function(e){
if(!this._editing||e.ctrlKey||e.altKey||e.shiftKey){
return;
}
if(Event.KEY_ESC==e.keyCode){
this.handleFormCancellation(e);
}else{
if(Event.KEY_RETURN==e.keyCode){
this.handleFormSubmission(e);
}
}
},createControl:function(_3f,_40,_41){
var _42=this.options[_3f+"Control"];
var _43=this.options[_3f+"Text"];
if("button"==_42){
var btn=document.createElement("input");
btn.type="submit";
btn.value=_43;
btn.className="editor_"+_3f+"_button";
if("cancel"==_3f){
btn.onclick=this._boundCancelHandler;
}
this._form.appendChild(btn);
this._controls[_3f]=btn;
}else{
if("link"==_42){
var _45=document.createElement("a");
_45.href="#";
_45.appendChild(document.createTextNode(_43));
_45.onclick="cancel"==_3f?this._boundCancelHandler:this._boundSubmitHandler;
_45.className="editor_"+_3f+"_link";
if(_41){
_45.className+=" "+_41;
}
this._form.appendChild(_45);
this._controls[_3f]=_45;
}
}
},createEditField:function(){
var _46=(this.options.loadTextURL?this.options.loadingText:this.getText());
var fld;
if(1>=this.options.rows&&!/\r|\n/.test(this.getText())){
fld=document.createElement("input");
fld.type="text";
var _48=this.options.size||this.options.cols||0;
if(0<_48){
fld.size=_48;
}
}else{
fld=document.createElement("textarea");
fld.rows=(1>=this.options.rows?this.options.autoRows:this.options.rows);
fld.cols=this.options.cols||40;
}
fld.name=this.options.paramName;
fld.value=_46;
fld.className="editor_field";
if(this.options.submitOnBlur){
fld.onblur=this._boundSubmitHandler;
}
this._controls.editor=fld;
if(this.options.loadTextURL){
this.loadExternalText();
}
this._form.appendChild(this._controls.editor);
},createForm:function(){
var ipe=this;
function addText(_4a,_4b){
var _4c=ipe.options["text"+_4a+"Controls"];
if(!_4c||_4b===false){
return;
}
ipe._form.appendChild(document.createTextNode(_4c));
}
this._form=$(document.createElement("form"));
this._form.id=this.options.formId;
this._form.addClassName(this.options.formClassName);
this._form.onsubmit=this._boundSubmitHandler;
this.createEditField();
if("textarea"==this._controls.editor.tagName.toLowerCase()){
this._form.appendChild(document.createElement("br"));
}
if(this.options.onFormCustomization){
this.options.onFormCustomization(this,this._form);
}
addText("Before",this.options.okControl||this.options.cancelControl);
this.createControl("ok",this._boundSubmitHandler);
addText("Between",this.options.okControl&&this.options.cancelControl);
this.createControl("cancel",this._boundCancelHandler,"editor_cancel");
addText("After",this.options.okControl||this.options.cancelControl);
},destroy:function(){
if(this._oldInnerHTML){
this.element.innerHTML=this._oldInnerHTML;
}
this.leaveEditMode();
this.unregisterListeners();
},enterEditMode:function(e){
if(this._saving||this._editing){
return;
}
this._editing=true;
this.triggerCallback("onEnterEditMode");
if(this.options.externalControl){
this.options.externalControl.hide();
}
this.element.hide();
this.createForm();
this.element.parentNode.insertBefore(this._form,this.element);
if(!this.options.loadTextURL){
this.postProcessEditField();
}
if(e){
Event.stop(e);
}
},enterHover:function(e){
if(this.options.hoverClassName){
this.element.addClassName(this.options.hoverClassName);
}
if(this._saving){
return;
}
this.triggerCallback("onEnterHover");
},getText:function(){
return this.element.innerHTML;
},handleAJAXFailure:function(_4f){
this.triggerCallback("onFailure",_4f);
if(this._oldInnerHTML){
this.element.innerHTML=this._oldInnerHTML;
this._oldInnerHTML=null;
}
},handleFormCancellation:function(e){
this.wrapUp();
if(e){
Event.stop(e);
}
},handleFormSubmission:function(e){
var _52=this._form;
var _53=$F(this._controls.editor);
this.prepareSubmission();
var _54=this.options.callback(_52,_53)||"";
if(Object.isString(_54)){
_54=_54.toQueryParams();
}
_54.editorId=this.element.id;
if(this.options.htmlResponse){
var _55=Object.extend({evalScripts:true},this.options.ajaxOptions);
Object.extend(_55,{parameters:_54,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});
new Ajax.Updater({success:this.element},this.url,_55);
}else{
var _55=Object.extend({method:"get"},this.options.ajaxOptions);
Object.extend(_55,{parameters:_54,onComplete:this._boundWrapperHandler,onFailure:this._boundFailureHandler});
new Ajax.Request(this.url,_55);
}
if(e){
Event.stop(e);
}
},leaveEditMode:function(){
this.element.removeClassName(this.options.savingClassName);
this.removeForm();
this.leaveHover();
this.element.style.backgroundColor=this._originalBackground;
this.element.show();
if(this.options.externalControl){
this.options.externalControl.show();
}
this._saving=false;
this._editing=false;
this._oldInnerHTML=null;
this.triggerCallback("onLeaveEditMode");
},leaveHover:function(e){
if(this.options.hoverClassName){
this.element.removeClassName(this.options.hoverClassName);
}
if(this._saving){
return;
}
this.triggerCallback("onLeaveHover");
},loadExternalText:function(){
this._form.addClassName(this.options.loadingClassName);
this._controls.editor.disabled=true;
var _57=Object.extend({method:"get"},this.options.ajaxOptions);
Object.extend(_57,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(_58){
this._form.removeClassName(this.options.loadingClassName);
var _59=_58.responseText;
if(this.options.stripLoadedTextTags){
_59=_59.stripTags();
}
this._controls.editor.value=_59;
this._controls.editor.disabled=false;
this.postProcessEditField();
}.bind(this),onFailure:this._boundFailureHandler});
new Ajax.Request(this.options.loadTextURL,_57);
},postProcessEditField:function(){
var fpc=this.options.fieldPostCreation;
if(fpc){
$(this._controls.editor)["focus"==fpc?"focus":"activate"]();
}
},prepareOptions:function(){
this.options=Object.clone(Ajax.InPlaceEditor.DefaultOptions);
Object.extend(this.options,Ajax.InPlaceEditor.DefaultCallbacks);
[this._extraDefaultOptions].flatten().compact().each(function(_5b){
Object.extend(this.options,_5b);
}.bind(this));
},prepareSubmission:function(){
this._saving=true;
this.removeForm();
this.leaveHover();
this.showSaving();
},registerListeners:function(){
this._listeners={};
var _5c;
$H(Ajax.InPlaceEditor.Listeners).each(function(_5d){
_5c=this[_5d.value].bind(this);
this._listeners[_5d.key]=_5c;
if(!this.options.externalControlOnly){
this.element.observe(_5d.key,_5c);
}
if(this.options.externalControl){
this.options.externalControl.observe(_5d.key,_5c);
}
}.bind(this));
},removeForm:function(){
if(!this._form){
return;
}
this._form.remove();
this._form=null;
this._controls={};
},showSaving:function(){
this._oldInnerHTML=this.element.innerHTML;
this.element.innerHTML=this.options.savingText;
this.element.addClassName(this.options.savingClassName);
this.element.style.backgroundColor=this._originalBackground;
this.element.show();
},triggerCallback:function(_5e,arg){
if("function"==typeof this.options[_5e]){
this.options[_5e](this,arg);
}
},unregisterListeners:function(){
$H(this._listeners).each(function(_60){
if(!this.options.externalControlOnly){
this.element.stopObserving(_60.key,_60.value);
}
if(this.options.externalControl){
this.options.externalControl.stopObserving(_60.key,_60.value);
}
}.bind(this));
},wrapUp:function(_61){
this.leaveEditMode();
this._boundComplete(_61,this.element);
}});
Object.extend(Ajax.InPlaceEditor.prototype,{dispose:Ajax.InPlaceEditor.prototype.destroy});
Ajax.InPlaceCollectionEditor=Class.create(Ajax.InPlaceEditor,{initialize:function(_62,_63,url,_65){
this._extraDefaultOptions=Ajax.InPlaceCollectionEditor.DefaultOptions;
_62(_63,url,_65);
},createEditField:function(){
var _66=document.createElement("select");
_66.name=this.options.paramName;
_66.size=1;
this._controls.editor=_66;
this._collection=this.options.collection||[];
if(this.options.loadCollectionURL){
this.loadCollection();
}else{
this.checkForExternalText();
}
this._form.appendChild(this._controls.editor);
},loadCollection:function(){
this._form.addClassName(this.options.loadingClassName);
this.showLoadingText(this.options.loadingCollectionText);
var _67=Object.extend({method:"get"},this.options.ajaxOptions);
Object.extend(_67,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(_68){
var js=_68.responseText.strip();
if(!/^\[.*\]$/.test(js)){
throw "Server returned an invalid collection representation.";
}
this._collection=eval(js);
this.checkForExternalText();
}.bind(this),onFailure:this.onFailure});
new Ajax.Request(this.options.loadCollectionURL,_67);
},showLoadingText:function(_6a){
this._controls.editor.disabled=true;
var _6b=this._controls.editor.firstChild;
if(!_6b){
_6b=document.createElement("option");
_6b.value="";
this._controls.editor.appendChild(_6b);
_6b.selected=true;
}
_6b.update((_6a||"").stripScripts().stripTags());
},checkForExternalText:function(){
this._text=this.getText();
if(this.options.loadTextURL){
this.loadExternalText();
}else{
this.buildOptionList();
}
},loadExternalText:function(){
this.showLoadingText(this.options.loadingText);
var _6c=Object.extend({method:"get"},this.options.ajaxOptions);
Object.extend(_6c,{parameters:"editorId="+encodeURIComponent(this.element.id),onComplete:Prototype.emptyFunction,onSuccess:function(_6d){
this._text=_6d.responseText.strip();
this.buildOptionList();
}.bind(this),onFailure:this.onFailure});
new Ajax.Request(this.options.loadTextURL,_6c);
},buildOptionList:function(){
this._form.removeClassName(this.options.loadingClassName);
this._collection=this._collection.map(function(_6e){
return 2===_6e.length?_6e:[_6e,_6e].flatten();
});
var _6f=("value" in this.options)?this.options.value:this._text;
var _70=this._collection.any(function(_71){
return _71[0]==_6f;
}.bind(this));
this._controls.editor.update("");
var _72;
this._collection.each(function(_73,_74){
_72=document.createElement("option");
_72.value=_73[0];
_72.selected=_70?_73[0]==_6f:0==_74;
_72.appendChild(document.createTextNode(_73[1]));
this._controls.editor.appendChild(_72);
}.bind(this));
this._controls.editor.disabled=false;
Field.scrollFreeActivate(this._controls.editor);
}});
Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions=function(_75){
if(!_75){
return;
}
function fallback(_76,_77){
if(_76 in _75||_77===undefined){
return;
}
_75[_76]=_77;
}
fallback("cancelControl",(_75.cancelLink?"link":(_75.cancelButton?"button":_75.cancelLink==_75.cancelButton==false?false:undefined)));
fallback("okControl",(_75.okLink?"link":(_75.okButton?"button":_75.okLink==_75.okButton==false?false:undefined)));
fallback("highlightColor",_75.highlightcolor);
fallback("highlightEndColor",_75.highlightendcolor);
};
Object.extend(Ajax.InPlaceEditor,{DefaultOptions:{ajaxOptions:{},autoRows:3,cancelControl:"link",cancelText:"cancel",clickToEditText:"Click to edit",externalControl:null,externalControlOnly:false,fieldPostCreation:"activate",formClassName:"inplaceeditor-form",formId:null,highlightColor:"#ffff99",highlightEndColor:"#ffffff",hoverClassName:"",htmlResponse:true,loadingClassName:"inplaceeditor-loading",loadingText:"Loading...",okControl:"button",okText:"ok",paramName:"value",rows:1,savingClassName:"inplaceeditor-saving",savingText:"Saving...",size:0,stripLoadedTextTags:false,submitOnBlur:false,textAfterControls:"",textBeforeControls:"",textBetweenControls:""},DefaultCallbacks:{callback:function(_78){
return Form.serialize(_78);
},onComplete:function(_79,_7a){
new Effect.Highlight(_7a,{startcolor:this.options.highlightColor,keepBackgroundImage:true});
},onEnterEditMode:null,onEnterHover:function(ipe){
ipe.element.style.backgroundColor=ipe.options.highlightColor;
if(ipe._effect){
ipe._effect.cancel();
}
},onFailure:function(_7c,ipe){
alert("Error communication with the server: "+_7c.responseText.stripTags());
},onFormCustomization:null,onLeaveEditMode:null,onLeaveHover:function(ipe){
ipe._effect=new Effect.Highlight(ipe.element,{startcolor:ipe.options.highlightColor,endcolor:ipe.options.highlightEndColor,restorecolor:ipe._originalBackground,keepBackgroundImage:true});
}},Listeners:{click:"enterEditMode",keydown:"checkForEscapeOrReturn",mouseover:"enterHover",mouseout:"leaveHover"}});
Ajax.InPlaceCollectionEditor.DefaultOptions={loadingCollectionText:"Loading options..."};
Form.Element.DelayedObserver=Class.create({initialize:function(_7f,_80,_81){
this.delay=_80||0.5;
this.element=$(_7f);
this.callback=_81;
this.timer=null;
this.lastValue=$F(this.element);
Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this));
},delayedListener:function(_82){
if(this.lastValue==$F(this.element)){
return;
}
if(this.timer){
clearTimeout(this.timer);
}
this.timer=setTimeout(this.onTimerEvent.bind(this),this.delay*1000);
this.lastValue=$F(this.element);
},onTimerEvent:function(){
this.timer=null;
this.callback(this.element,$F(this.element));
}});
