var Ajax={getTransport:function(){ return Try.these(function(){ return new ActiveXObject("Msxml2.XMLHTTP"); },function(){ return new ActiveXObject("Microsoft.XMLHTTP"); },function(){ return new XMLHttpRequest(); })||false; },activeRequestCount:0}; Ajax.Responders={responders:[],_each:function(_1){ this.responders._each(_1); },register:function(_2){ if(!this.include(_2)){ this.responders.push(_2); } },unregister:function(_3){ this.responders=this.responders.without(_3); },dispatch:function(_4,_5,_6,_7){ this.each(function(_8){ if(_8[_4]&&typeof _8[_4]=="function"){ try{ _8[_4].apply(_8,[_5,_6,_7]); } catch(e){ } } }); }}; Object.extend(Ajax.Responders,Enumerable); Ajax.Responders.register({onCreate:function(){ Ajax.activeRequestCount++; },onComplete:function(){ Ajax.activeRequestCount--; }}); Ajax.Base=function(){ }; Ajax.Base.prototype={setOptions:function(_9){ this.options={method:"post",asynchronous:true,parameters:""}; Object.extend(this.options,_9||{}); },responseIsSuccess:function(){ return this.transport.status==undefined||this.transport.status==0||(this.transport.status>=200&&this.transport.status<300); },responseIsFailure:function(){ return !this.responseIsSuccess(); }}; Ajax.Request=Class.create(); Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"]; Ajax.Request.prototype=Object.extend(new Ajax.Base(),{initialize:function(url,_11){ this.transport=Ajax.getTransport(); this.setOptions(_11); this.request(url); },request:function(url){ var _12=this.options.parameters||""; if(_12.length>0){ _12+="&_="; } try{ this.url=url; if(this.options.method=="get"&&_12.length>0){ this.url+=(this.url.match(/\?/)?"&":"?")+_12; } Ajax.Responders.dispatch("onCreate",this,this.transport); this.transport.open(this.options.method,this.url,this.options.asynchronous); if(this.options.asynchronous){ this.transport.onreadystatechange=this.onStateChange.bind(this); setTimeout((function(){ this.respondToReadyState(1); }).bind(this),10); } this.setRequestHeaders(); var _13=this.options.postBody?this.options.postBody:_12; this.transport.send(this.options.method=="post"?_13:null); } catch(e){ this.dispatchException(e); } },setRequestHeaders:function(){ var _14=["X-Requested-With","XMLHttpRequest","X-Prototype-Version",Prototype.Version]; if(this.options.method=="post"){ _14.push("Content-type","application/x-www-form-urlencoded"); if(this.transport.overrideMimeType){ _14.push("Connection","close"); } } if(this.options.requestHeaders){ _14.push.apply(_14,this.options.requestHeaders); } for(var i=0;i<_14.length;i+=2){ this.transport.setRequestHeader(_14[i],_14[i+1]); } },onStateChange:function(){ var _16=this.transport.readyState; if(_16!=1){ this.respondToReadyState(this.transport.readyState); } },header:function(_17){ try{ return this.transport.getResponseHeader(_17); } catch(e){ } },evalJSON:function(){ try{ return eval(this.header("X-JSON")); } catch(e){ } },evalResponse:function(){ try{ return eval(this.transport.responseText); } catch(e){ this.dispatchException(e); } },respondToReadyState:function(_18){ var _19=Ajax.Request.Events[_18]; var _20=this.transport,json=this.evalJSON(); if(_19=="Complete"){ try{ (this.options["on"+this.transport.status]||this.options["on"+(this.responseIsSuccess()?"Success":"Failure")]||Prototype.emptyFunction)(_20,json); } catch(e){ this.dispatchException(e); } if((this.header("Content-type")||"").match(/^text\/javascript/i)){ this.evalResponse(); } } try{ (this.options["on"+_19]||Prototype.emptyFunction)(_20,json); Ajax.Responders.dispatch("on"+_19,this,_20,json); } catch(e){ this.dispatchException(e); } if(_19=="Complete"){ this.transport.onreadystatechange=Prototype.emptyFunction; } },dispatchException:function(_21){ (this.options.onException||Prototype.emptyFunction)(this,_21); Ajax.Responders.dispatch("onException",this,_21); }}); Ajax.Updater=Class.create(); Object.extend(Object.extend(Ajax.Updater.prototype,Ajax.Request.prototype),{initialize:function(_22,url,_23){ this.containers={success:_22.success?$(_22.success):$(_22),failure:_22.failure?$(_22.failure):(_22.success?null:$(_22))}; this.transport=Ajax.getTransport(); this.setOptions(_23); var _24=this.options.onComplete||Prototype.emptyFunction; this.options.onComplete=(function(_25,_26){ this.updateContent(); _24(_25,_26); }).bind(this); this.request(url); },updateContent:function(){ var _27=this.responseIsSuccess()?this.containers.success:this.containers.failure; var _28=this.transport.responseText; if(!this.options.evalScripts){ _28=_28.stripScripts(); } if(_27){ if(this.options.insertion){ new this.options.insertion(_27,_28); }else{ Element.update(_27,_28); } } if(this.responseIsSuccess()){ if(this.onComplete){ setTimeout(this.onComplete.bind(this),10); } } }}); Ajax.PeriodicalUpdater=Class.create(); Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(_29,url,_30){ this.setOptions(_30); this.onComplete=this.options.onComplete; this.frequency=(this.options.frequency||2); this.decay=(this.options.decay||1); this.updater={}; this.container=_29; this.url=url; this.start(); },start:function(){ this.options.onComplete=this.updateComplete.bind(this); this.onTimerEvent(); },stop:function(){ this.updater.onComplete=undefined; clearTimeout(this.timer); (this.onComplete||Prototype.emptyFunction).apply(this,arguments); },updateComplete:function(_31){ if(this.options.decay){ this.decay=(_31.responseText==this.lastText?this.decay*this.options.decay:1); this.lastText=_31.responseText; } this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000); },onTimerEvent:function(){ this.updater=new Ajax.Updater(this.container,this.url,this.options); }}); Prado.AJAX={Service:"Prototype"}; Prado.AJAX.EvalScript=function(_1){ var _2=new RegExp(Ajax.Updater.ScriptFragment,"img"); var _3=_1.match(_2); if(_3){ _2=new RegExp(Ajax.Updater.ScriptFragment,"im"); setTimeout((function(){ for(var i=0;i<_3.length;i++){ eval(_3[i].match(_2)[1]); } }).bind(this),50); } }; Prado.AJAX.Request=Class.create(); Prado.AJAX.Request.prototype=Object.extend(Ajax.Request.prototype,{evalJSON:function(){ try{ var _5=this.transport.getResponseHeader("X-JSON"),object; object=eval(_5); return object; } catch(e){ if(isString(_5)){ return Prado.AJAX.JSON.parse(_5); } } },respondToReadyState:function(_6){ var _7=Ajax.Request.Events[_6]; var _8=this.transport,json=this.evalJSON(); if(_7=="Complete"&&_8.status){ Ajax.Responders.dispatch("on"+_8.status,this,_8,json); } (this.options["on"+_7]||Prototype.emptyFunction)(_8,json); Ajax.Responders.dispatch("on"+_7,this,_8,json); if(_7=="Complete"){ (this.options["on"+this.transport.status]||this.options["on"+(this.responseIsSuccess()?"Success":"Failure")]||Prototype.emptyFunction)(_8,json); } if(_7=="Complete"){ this.transport.onreadystatechange=Prototype.emptyFunction; } }}); Prado.AJAX.Error=function(e,_10){ e.name="Prado.AJAX.Error"; e.code=_10; return e; }; Prado.AJAX.RequestBuilder=Class.create(); Prado.AJAX.RequestBuilder.prototype={initialize:function(){ this.body=""; this.data=[]; },encode:function(_11){ return Prado.AJAX.JSON.stringify(_11); },build:function(_12){ var sep=""; for(var _14 in _12){ if(isFunction(_12[_14])){ continue; } try{ this.body+=sep+_14+"="; this.body+=encodeURIComponent(this.encode(_12[_14])); } catch(e){ throw Prado.AJAX.Error(e,1006); } sep="&"; } },getAll:function(){ this.build(this.data); return this.body; }}; Prado.AJAX.RemoteObject=function(){ }; Prado.AJAX.RemoteObject.Request=Class.create(); Prado.AJAX.RemoteObject.Request.prototype=Object.extend(Prado.AJAX.Request.prototype,{initialize:function(_15){ this.transport=Ajax.getTransport(); this.setOptions(_15); this.post=new Prado.AJAX.RequestBuilder(); },invokeRemoteObject:function(url,_17){ this.initParameters(_17); this.options.postBody=this.post.getAll(); this.request(url); },initParameters:function(_18){ this.post.data["__parameters"]=[]; for(var i=0;i<_18.length;i++){ this.post.data["__parameters"][i]=_18[i]; } }}); Prado.AJAX.RemoteObject.prototype={baseInitialize:function(_19,_20){ this.__handlers=_19||{}; this.__service=new Prado.AJAX.RemoteObject.Request(_20); },__call:function(url,_21,_22){ this.__service.options.onSuccess=this.__onSuccess.bind(this); this.__callback=_21; return this.__service.invokeRemoteObject(url+"/"+_21,_22); },__onSuccess:function(_23,_24){ if(this.__handlers[this.__callback]){ this.__handlers[this.__callback](_24,_23.responseText); } }}; Prado.AJAX.Exception={"on505":function(_25,_26,e){ var msg="HTTP "+_26.status+" with response"; Logger.error(msg,_26.responseText); Logger.exception(e); },onComplete:function(_28,_29,e){ if(_29.status!=505){ var msg="HTTP "+_29.status+" with response : \n"; msg+=_29.responseText+"\n"; msg+="Data : \n"+inspect(e); Logger.warn(msg); } },format:function(e){ var msg=e.type+" with message \""+e.message+"\""; msg+=" in "+e.file+"("+e.line+")\n"; msg+="Stack trace:\n"; var _30=e.trace; for(var i=0;i<_30.length;i++){ msg+=" #"+i+" "+_30[i].file; msg+="("+_30[i].line+"): "; msg+=_30[i]["class"]+"->"+_30[i]["function"]+"()"+"\n"; } return msg; },logException:function(e){ var msg=Prado.AJAX.Exception.format(e); Logger.error("Server Error "+e.code,msg); }}; Event.OnLoad(function(){ if(typeof Logger!="undefined"){ Logger.exception=Prado.AJAX.Exception.logException; Ajax.Responders.register(Prado.AJAX.Exception); } }); Prado.AJAX.Callback=Class.create(); Prado.AJAX.Callback.prototype=Object.extend(new Prado.AJAX.RemoteObject(),{initialize:function(ID,_32){ if(!isString(ID)&&typeof (ID.id)!="undefined"){ ID=ID.id; } if(!isString(ID)){ throw new Error("A Control ID must be specified"); } this.baseInitialize(this,_32); this.options=_32||[]; this.__service.post.data["__ID"]=ID; this.requestCallback(); },collectPostData:function(){ var IDs=Prado.AJAX.Callback.IDs; this.__service.post.data["__data"]={}; for(var i=0;i<IDs.length;i++){ var id=IDs[i]; if(id.indexOf("[]")>-1){ this.__service.post.data["__data"][id]=this.collectArrayPostData(id); }else{ if(isObject($(id))){ this.__service.post.data["__data"][id]=$F(id); } } } },collectArrayPostData:function(_35){ var _36=document.getElementsByName(_35); var _37=[]; $A(_36).each(function(el){ if($F(el)){ _37.push($F(el)); } }); return _37; },requestCallback:function(){ this.collectPostData(); if(Prado.AJAX.Validate(this.options)){ return this.__call(Prado.AJAX.Callback.Server,"handleCallback",this.options.params); } },handleCallback:function(_39,_40){ if(typeof (_39)!="undefined"&&!isNull(_39)){ this.options.onSuccess(_39["data"],_40); if(_39["actions"]){ _39.actions.each(Prado.AJAX.Callback.Action.__run); } } }}); Prado.AJAX.Callback.Action={__run:function(_41){ for(var _42 in _41){ if(_41[_42][0]&&($(_41[_42][0])||_41[_42][0].indexOf("[]")>-1)){ _42.toFunction().apply(this,_41[_42]); } } }}; Prado.AJAX.Validate=function(_43){ if(_43.CausesValidation){ if(_43.ValidatorGroup){ return Prado.Validation.ValidateValidatorGroup(_43.ValidatorGroup); }else{ if(_43.ValidationGroup){ return Prado.Validation.ValidateValidationGroup(_43.ValidationGroup); }else{ return Prado.Validation.ValidateNonGroup(_43.ValidationForm); } } }else{ return true; } }; Prado.AJAX.Callback.Server=""; Prado.AJAX.Callback.IDs=[]; Prado.Callback=function(ID,_44,_45,_46){ var _47={"params":[_44]||[],"onSuccess":_45||Prototype.emptyFunction,"CausesValidation":true}; Object.extend(_47,_46||{}); new Prado.AJAX.Callback(ID,_47); return false; }; Array.prototype.______array="______array"; Prado.AJAX.JSON={org:"http://www.JSON.org",copyright:"(c)2005 JSON.org",license:"http://www.crockford.com/JSON/license.html",stringify:function(_1){ var c,i,l,s="",v; switch(typeof _1){ case "object": if(_1){ if(_1.______array=="______array"){ for(i=0;i<_1.length;++i){ v=this.stringify(_1[i]); if(s){ s+=","; } s+=v; } return "["+s+"]"; }else{ if(typeof _1.toString!="undefined"){ for(i in _1){ v=_1[i]; if(typeof v!="undefined"&&typeof v!="function"){ v=this.stringify(v); if(s){ s+=","; } s+=this.stringify(i)+":"+v; } } return "{"+s+"}"; } } } return "null"; case "number": return isFinite(_1)?String(_1):"null"; case "string": l=_1.length; s="\""; for(i=0;i<l;i+=1){ c=_1.charAt(i); if(c>=" "){ if(c=="\\"||c=="\""){ s+="\\"; } s+=c; }else{ switch(c){ case "\b": s+="\\b"; break; case "\f": s+="\\f"; break; case "\n": s+="\\n"; break; case "\r": s+="\\r"; break; case "\t": s+="\\t"; break; default: c=c.charCodeAt(); s+="\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16); } } } return s+"\""; case "boolean": return String(_1); default: return "null"; } },parse:function(_3){ var at=0; var ch=" "; function error(m){ throw {name:"JSONError",message:m,at:at-1,text:_3}; } function next(){ ch=_3.charAt(at); at+=1; return ch; } function white(){ while(ch){ if(ch<=" "){ next(); }else{ if(ch=="/"){ switch(next()){ case "/": while(next()&&ch!="\n"&&ch!="\r"){ } break; case "*": next(); for(;;){ if(ch){ if(ch=="*"){ if(next()=="/"){ next(); break; } }else{ next(); } }else{ error("Unterminated comment"); } } break; default: error("Syntax error"); } }else{ break; } } } } function string(){ var i,s="",t,u; if(ch=="\""){ outer: while(next()){ if(ch=="\""){ next(); return s; }else{ if(ch=="\\"){ switch(next()){ case "b": s+="\b"; break; case "f": s+="\f"; break; case "n": s+="\n"; break; case "r": s+="\r"; break; case "t": s+="\t"; break; case "u": u=0; for(i=0;i<4;i+=1){ t=parseInt(next(),16); if(!isFinite(t)){ break outer; } u=u*16+t; } s+=String.fromCharCode(u); break; default: s+=ch; } }else{ s+=ch; } } } } error("Bad string"); } function array(){ var a=[]; if(ch=="["){ next(); white(); if(ch=="]"){ next(); return a; } while(ch){ a.push(value()); white(); if(ch=="]"){ next(); return a; }else{ if(ch!=","){ break; } } next(); white(); } } error("Bad array"); } function object(){ var k,o={}; if(ch=="{"){ next(); white(); if(ch=="}"){ next(); return o; } while(ch){ k=string(); white(); if(ch!=":"){ break; } next(); o[k]=value(); white(); if(ch=="}"){ next(); return o; }else{ if(ch!=","){ break; } } next(); white(); } } error("Bad object"); } function number(){ var n="",v; if(ch=="-"){ n="-"; next(); } while(ch>="0"&&ch<="9"){ n+=ch; next(); } if(ch=="."){ n+="."; while(next()&&ch>="0"&&ch<="9"){ n+=ch; } } if(ch=="e"||ch=="E"){ n+="e"; next(); if(ch=="-"||ch=="+"){ n+=ch; next(); } while(ch>="0"&&ch<="9"){ n+=ch; next(); } } v=+n; if(!isFinite(v)){ }else{ return v; } } function word(){ switch(ch){ case "t": if(next()=="r"&&next()=="u"&&next()=="e"){ next(); return true; } break; case "f": if(next()=="a"&&next()=="l"&&next()=="s"&&next()=="e"){ next(); return false; } break; case "n": if(next()=="u"&&next()=="l"&&next()=="l"){ next(); return null; } break; } error("Syntax error"); } function value(){ white(); switch(ch){ case "{": return object(); case "[": return array(); case "\"": return string(); case "-": return number(); default: return ch>="0"&&ch<="9"?number():word(); } } return value(); }}; var Autocompleter={}; Autocompleter.Base=function(){ }; Autocompleter.Base.prototype={baseInitialize:function(_1,_2,_3){ this.element=$(_1); this.update=$(_2); this.hasFocus=false; this.changed=false; this.active=false; this.index=0; this.entryCount=0; 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(_1,_2){ if(!_2.style.position||_2.style.position=="absolute"){ _2.style.position="absolute"; Position.clone(_1,_2,{setHeight:false,offsetTop:_1.offsetHeight}); } Effect.Appear(_2,{duration:0.15}); }; this.options.onHide=this.options.onHide||function(_4,_5){ new Effect.Fade(_5,{duration:0.15}); }; if(typeof (this.options.tokens)=="string"){ this.options.tokens=new Array(this.options.tokens); } 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,"keypress",this.onKeyPress.bindAsEventListener(this)); },show:function(){ if(Element.getStyle(this.update,"display")=="none"){ this.options.onShow(this.element,this.update); } if(!this.iefix&&(navigator.appVersion.indexOf("MSIE")>0)&&(navigator.userAgent.indexOf("Opera")<0)&&(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); 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(_6){ if(this.active){ switch(_6.keyCode){ case Event.KEY_TAB: case Event.KEY_RETURN: this.selectEntry(); Event.stop(_6); case Event.KEY_ESC: this.hide(); this.active=false; Event.stop(_6); return; case Event.KEY_LEFT: case Event.KEY_RIGHT: return; case Event.KEY_UP: this.markPrevious(); this.render(); if(navigator.appVersion.indexOf("AppleWebKit")>0){ Event.stop(_6); } return; case Event.KEY_DOWN: this.markNext(); this.render(); if(navigator.appVersion.indexOf("AppleWebKit")>0){ Event.stop(_6); } return; } }else{ if(_6.keyCode==Event.KEY_TAB||_6.keyCode==Event.KEY_RETURN){ return; } } this.changed=true; this.hasFocus=true; if(this.observer){ clearTimeout(this.observer); } this.observer=setTimeout(this.onObserverEvent.bind(this),this.options.frequency*1000); },onHover:function(_7){ var _8=Event.findElement(_7,"LI"); if(this.index!=_8.autocompleteIndex){ this.index=_8.autocompleteIndex; this.render(); } Event.stop(_7); },onClick:function(_9){ var _10=Event.findElement(_9,"LI"); this.index=_10.autocompleteIndex; this.selectEntry(); this.hide(); },onBlur:function(_11){ 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; } },markNext:function(){ if(this.index<this.entryCount-1){ this.index++; }else{ this.index=0; } },getEntry:function(_13){ return this.update.firstChild.childNodes[_13]; },getCurrentEntry:function(){ return this.getEntry(this.index); },selectEntry:function(){ this.active=false; this.updateElement(this.getCurrentEntry()); },updateElement:function(_14){ if(this.options.updateElement){ this.options.updateElement(_14); return; } var _15=Element.collectTextNodesIgnoreClass(_14,"informal"); var _16=this.findLastToken(); if(_16!=-1){ var _17=this.element.value.substr(0,_16+1); var _18=this.element.value.substr(_16+1).match(/^\s+/); if(_18){ _17+=_18[0]; } this.element.value=_17+_15; }else{ this.element.value=_15; } this.element.focus(); if(this.options.afterUpdateElement){ this.options.afterUpdateElement(this.element,_14); } },updateChoices:function(_19){ if(!this.changed&&this.hasFocus){ this.update.innerHTML=_19; Element.cleanWhitespace(this.update); Element.cleanWhitespace(this.update.firstChild); if(this.update.firstChild&&this.update.firstChild.childNodes){ this.entryCount=this.update.firstChild.childNodes.length; for(var i=0;i<this.entryCount;i++){ var _20=this.getEntry(i); _20.autocompleteIndex=i; this.addObservers(_20); } }else{ this.entryCount=0; } this.stopIndicator(); this.index=0; this.render(); } },addObservers:function(_21){ Event.observe(_21,"mouseover",this.onHover.bindAsEventListener(this)); Event.observe(_21,"click",this.onClick.bindAsEventListener(this)); },onObserverEvent:function(){ this.changed=false; if(this.getToken().length>=this.options.minChars){ this.startIndicator(); this.getUpdatedChoices(); }else{ this.active=false; this.hide(); } },getToken:function(){ var _22=this.findLastToken(); if(_22!=-1){ var ret=this.element.value.substr(_22+1).replace(/^\s+/,"").replace(/\s+$/,""); }else{ var ret=this.element.value; } return /\n/.test(ret)?"":ret; },findLastToken:function(){ var _24=-1; for(var i=0;i<this.options.tokens.length;i++){ var _25=this.element.value.lastIndexOf(this.options.tokens[i]); if(_25>_24){ _24=_25; } } return _24; }}; Ajax.Autocompleter=Class.create(); Object.extend(Object.extend(Ajax.Autocompleter.prototype,Autocompleter.Base.prototype),{initialize:function(_26,_27,url,_29){ this.baseInitialize(_26,_27,_29); this.options.asynchronous=true; this.options.onComplete=this.onComplete.bind(this); this.options.defaultParams=this.options.parameters||null; this.url=url; },getUpdatedChoices:function(){ entry=encodeURIComponent(this.options.paramName)+"="+encodeURIComponent(this.getToken()); this.options.parameters=this.options.callback?this.options.callback(this.element,entry):entry; if(this.options.defaultParams){ this.options.parameters+="&"+this.options.defaultParams; } new Ajax.Request(this.url,this.options); },onComplete:function(_30){ this.updateChoices(_30.responseText); }}); Autocompleter.Local=Class.create(); Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(_31,_32,_33,_34){ this.baseInitialize(_31,_32,_34); this.options.array=_33; },getUpdatedChoices:function(){ this.updateChoices(this.options.selector(this)); },setOptions:function(_35){ this.options=Object.extend({choices:10,partialSearch:true,partialChars:2,ignoreCase:true,fullSearch:false,selector:function(_36){ var ret=[]; var _37=[]; var _38=_36.getToken(); var _39=0; for(var i=0;i<_36.options.array.length&&ret.length<_36.options.choices;i++){ var _40=_36.options.array[i]; var _41=_36.options.ignoreCase?_40.toLowerCase().indexOf(_38.toLowerCase()):_40.indexOf(_38); while(_41!=-1){ if(_41==0&&_40.length!=_38.length){ ret.push("<li><strong>"+_40.substr(0,_38.length)+"</strong>"+_40.substr(_38.length)+"</li>"); break; }else{ if(_38.length>=_36.options.partialChars&&_36.options.partialSearch&&_41!=-1){ if(_36.options.fullSearch||/\s/.test(_40.substr(_41-1,1))){ _37.push("<li>"+_40.substr(0,_41)+"<strong>"+_40.substr(_41,_38.length)+"</strong>"+_40.substr(_41+_38.length)+"</li>"); break; } } } _41=_36.options.ignoreCase?_40.toLowerCase().indexOf(_38.toLowerCase(),_41+1):_40.indexOf(_38,_41+1); } } if(_37.length){ ret=ret.concat(_37.slice(0,_36.options.choices-ret.length)); } return "<ul>"+ret.join("")+"</ul>"; }},_35||{}); }}); Field.scrollFreeActivate=function(_42){ setTimeout(function(){ Field.activate(_42); },1); }; Ajax.InPlaceEditor=Class.create(); Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99"; Ajax.InPlaceEditor.prototype={initialize:function(_43,url,_44){ this.url=url; this.element=$(_43); this.options=Object.extend({okText:"ok",cancelText:"cancel",savingText:"Saving...",clickToEditText:"Click to edit",okText:"ok",rows:1,onComplete:function(_45,_43){ new Effect.Highlight(_43,{startcolor:this.options.highlightcolor}); },onFailure:function(_46){ alert("Error communicating with the server: "+_46.responseText.stripTags()); },callback:function(_47){ return Form.serialize(_47); },handleLineBreaks:true,loadingText:"Loading...",savingClassName:"inplaceeditor-saving",loadingClassName:"inplaceeditor-loading",formClassName:"inplaceeditor-form",highlightcolor:Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor:"#FFFFFF",externalControl:null,ajaxOptions:{}},_44||{}); if(!this.options.formId&&this.element.id){ this.options.formId=this.element.id+"-inplaceeditor"; if($(this.options.formId)){ this.options.formId=null; } } if(this.options.externalControl){ this.options.externalControl=$(this.options.externalControl); } this.originalBackground=Element.getStyle(this.element,"background-color"); if(!this.originalBackground){ this.originalBackground="transparent"; } this.element.title=this.options.clickToEditText; this.onclickListener=this.enterEditMode.bindAsEventListener(this); this.mouseoverListener=this.enterHover.bindAsEventListener(this); this.mouseoutListener=this.leaveHover.bindAsEventListener(this); Event.observe(this.element,"click",this.onclickListener); Event.observe(this.element,"mouseover",this.mouseoverListener); Event.observe(this.element,"mouseout",this.mouseoutListener); if(this.options.externalControl){ Event.observe(this.options.externalControl,"click",this.onclickListener); Event.observe(this.options.externalControl,"mouseover",this.mouseoverListener); Event.observe(this.options.externalControl,"mouseout",this.mouseoutListener); } },enterEditMode:function(evt){ if(this.saving){ return; } if(this.editing){ return; } this.editing=true; this.onEnterEditMode(); if(this.options.externalControl){ Element.hide(this.options.externalControl); } Element.hide(this.element); this.createForm(); this.element.parentNode.insertBefore(this.form,this.element); Field.scrollFreeActivate(this.editField); if(evt){ Event.stop(evt); } return false; },createForm:function(){ this.form=document.createElement("form"); this.form.id=this.options.formId; Element.addClassName(this.form,this.options.formClassName); this.form.onsubmit=this.onSubmit.bind(this); this.createEditField(); if(this.options.textarea){ var br=document.createElement("br"); this.form.appendChild(br); } okButton=document.createElement("input"); okButton.type="submit"; okButton.value=this.options.okText; this.form.appendChild(okButton); cancelLink=document.createElement("a"); cancelLink.href="#"; cancelLink.appendChild(document.createTextNode(this.options.cancelText)); cancelLink.onclick=this.onclickCancel.bind(this); this.form.appendChild(cancelLink); },hasHTMLLineBreaks:function(_50){ if(!this.options.handleLineBreaks){ return false; } return _50.match(/<br/i)||_50.match(/<p>/i); },convertHTMLLineBreaks:function(_51){ return _51.replace(/<br>/gi,"\n").replace(/<br\/>/gi,"\n").replace(/<\/p>/gi,"\n").replace(/<p>/gi,""); },createEditField:function(){ var _52; if(this.options.loadTextURL){ _52=this.options.loadingText; }else{ _52=this.getText(); } if(this.options.rows==1&&!this.hasHTMLLineBreaks(_52)){ this.options.textarea=false; var _53=document.createElement("input"); _53.type="text"; _53.name="value"; _53.value=_52; _53.style.backgroundColor=this.options.highlightcolor; var _54=this.options.size||this.options.cols||0; if(_54!=0){ _53.size=_54; } this.editField=_53; }else{ this.options.textarea=true; var _55=document.createElement("textarea"); _55.name="value"; _55.value=this.convertHTMLLineBreaks(_52); _55.rows=this.options.rows; _55.cols=this.options.cols||40; this.editField=_55; } if(this.options.loadTextURL){ this.loadExternalText(); } this.form.appendChild(this.editField); },getText:function(){ return this.element.innerHTML; },loadExternalText:function(){ Element.addClassName(this.form,this.options.loadingClassName); this.editField.disabled=true; new Ajax.Request(this.options.loadTextURL,Object.extend({asynchronous:true,onComplete:this.onLoadedExternalText.bind(this)},this.options.ajaxOptions)); },onLoadedExternalText:function(_56){ Element.removeClassName(this.form,this.options.loadingClassName); this.editField.disabled=false; this.editField.value=_56.responseText.stripTags(); },onclickCancel:function(){ this.onComplete(); this.leaveEditMode(); return false; },onFailure:function(_57){ this.options.onFailure(_57); if(this.oldInnerHTML){ this.element.innerHTML=this.oldInnerHTML; this.oldInnerHTML=null; } return false; },onSubmit:function(){ var _58=this.form; var _59=this.editField.value; this.onLoading(); new Ajax.Updater({success:this.element,failure:null},this.url,Object.extend({parameters:this.options.callback(_58,_59),onComplete:this.onComplete.bind(this),onFailure:this.onFailure.bind(this)},this.options.ajaxOptions)); if(arguments.length>1){ Event.stop(arguments[0]); } return false; },onLoading:function(){ this.saving=true; this.removeForm(); this.leaveHover(); this.showSaving(); },showSaving:function(){ this.oldInnerHTML=this.element.innerHTML; this.element.innerHTML=this.options.savingText; Element.addClassName(this.element,this.options.savingClassName); this.element.style.backgroundColor=this.originalBackground; Element.show(this.element); },removeForm:function(){ if(this.form){ if(this.form.parentNode){ Element.remove(this.form); } this.form=null; } },enterHover:function(){ if(this.saving){ return; } this.element.style.backgroundColor=this.options.highlightcolor; if(this.effect){ this.effect.cancel(); } Element.addClassName(this.element,this.options.hoverClassName); },leaveHover:function(){ if(this.options.backgroundColor){ this.element.style.backgroundColor=this.oldBackground; } Element.removeClassName(this.element,this.options.hoverClassName); if(this.saving){ return; } this.effect=new Effect.Highlight(this.element,{startcolor:this.options.highlightcolor,endcolor:this.options.highlightendcolor,restorecolor:this.originalBackground}); },leaveEditMode:function(){ Element.removeClassName(this.element,this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor=this.originalBackground; Element.show(this.element); if(this.options.externalControl){ Element.show(this.options.externalControl); } this.editing=false; this.saving=false; this.oldInnerHTML=null; this.onLeaveEditMode(); },onComplete:function(_60){ this.leaveEditMode(); this.options.onComplete.bind(this)(_60,this.element); },onEnterEditMode:function(){ },onLeaveEditMode:function(){ },dispose:function(){ if(this.oldInnerHTML){ this.element.innerHTML=this.oldInnerHTML; } this.leaveEditMode(); Event.stopObserving(this.element,"click",this.onclickListener); Event.stopObserving(this.element,"mouseover",this.mouseoverListener); Event.stopObserving(this.element,"mouseout",this.mouseoutListener); if(this.options.externalControl){ Event.stopObserving(this.options.externalControl,"click",this.onclickListener); Event.stopObserving(this.options.externalControl,"mouseover",this.mouseoverListener); Event.stopObserving(this.options.externalControl,"mouseout",this.mouseoutListener); } }}; Form.Element.DelayedObserver=Class.create(); Form.Element.DelayedObserver.prototype={initialize:function(_61,_62,_63){ this.delay=_62||0.5; this.element=$(_61); this.callback=_63; this.timer=null; this.lastValue=$F(this.element); Event.observe(this.element,"keyup",this.delayedListener.bindAsEventListener(this)); },delayedListener:function(_64){ 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)); }}; 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},arguments[1]||{}); if(_4.containment){ _4._containers=[]; var _5=_4.containment; if((typeof _5=="object")&&(_5.constructor==Array)){ _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); },isContained:function(_7,_8){ var _9=_7.parentNode; return _8._containers.detect(function(c){ return _9==c; }); },isAffected:function(_10,_11,_12){ return ((_12.element!=_11)&&((!_12._containers)||this.isContained(_11,_12))&&((!_12.accept)||(Element.classNames(_11).detect(function(v){ return _12.accept.include(v); })))&&Position.within(_12.element,_10[0],_10[1])); },deactivate:function(_14){ if(_14.hoverclass){ Element.removeClassName(_14.element,_14.hoverclass); } this.last_active=null; },activate:function(_15){ if(_15.hoverclass){ Element.addClassName(_15.element,_15.hoverclass); } this.last_active=_15; },show:function(_16,_17){ if(!this.drops.length){ return; } if(this.last_active){ this.deactivate(this.last_active); } this.drops.each(function(_18){ if(Droppables.isAffected(_16,_17,_18)){ if(_18.onHover){ _18.onHover(_17,_18.element,Position.overlap(_18.overlap,_18.element)); } if(_18.greedy){ Droppables.activate(_18); } } }); },fire:function(_19,_20){ if(!this.last_active){ return; } Position.prepare(); if(this.isAffected([Event.pointerX(_19),Event.pointerY(_19)],_20,this.last_active)){ if(this.last_active.onDrop){ this.last_active.onDrop(_20,this.last_active.element,_19); } } },reset:function(){ if(this.last_active){ this.deactivate(this.last_active); } }}; var Draggables={drags:[],observers:[],register:function(_21){ 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(_21); },unregister:function(_22){ this.drags=this.drags.reject(function(d){ return d==_22; }); 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(_23){ window.focus(); this.activeDraggable=_23; },deactivate:function(_24){ this.activeDraggable=null; },updateDrag:function(_25){ if(!this.activeDraggable){ return; } var _26=[Event.pointerX(_25),Event.pointerY(_25)]; if(this._lastPointer&&(this._lastPointer.inspect()==_26.inspect())){ return; } this._lastPointer=_26; this.activeDraggable.updateDrag(_25,_26); },endDrag:function(_27){ if(!this.activeDraggable){ return; } this._lastPointer=null; this.activeDraggable.endDrag(_27); },keyPress:function(_28){ if(this.activeDraggable){ this.activeDraggable.keyPress(_28); } },addObserver:function(_29){ this.observers.push(_29); this._cacheObserverCallbacks(); },removeObserver:function(_30){ this.observers=this.observers.reject(function(o){ return o.element==_30; }); this._cacheObserverCallbacks(); },notify:function(_32,_33,_34){ if(this[_32+"Count"]>0){ this.observers.each(function(o){ if(o[_32]){ o[_32](_32,_33,_34); } }); } },_cacheObserverCallbacks:function(){ ["onStart","onEnd","onDrag"].each(function(_35){ Draggables[_35+"Count"]=Draggables.observers.select(function(o){ return o[_35]; }).length; }); }}; var Draggable=Class.create(); Draggable.prototype={initialize:function(_36){ this.element=$(_36); var _37=Object.extend({handle:false,starteffect:function(_36){ new Effect.Opacity(_36,{duration:0.2,from:1,to:0.7}); },reverteffect:function(_38,_39,_40){ var dur=Math.sqrt(Math.abs(_39^2)+Math.abs(_40^2))*0.02; _38._revert=new Effect.MoveBy(_38,-_39,-_40,{duration:dur}); },endeffect:function(_42){ new Effect.Opacity(_42,{duration:0.2,from:0.7,to:1}); },zindex:1000,revert:false,snap:false},arguments[1]||{}); if(_37.handle&&(typeof _37.handle=="string")){ this.handle=Element.childrenWithClassName(this.element,_37.handle)[0]; } if(!this.handle){ this.handle=$(_37.handle); } if(!this.handle){ this.handle=this.element; } Element.makePositioned(this.element); this.delta=this.currentDelta(); this.options=_37; 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(this.element.style.left||"0"),parseInt(this.element.style.top||"0")]); },initDrag:function(_43){ if(Event.isLeftClick(_43)){ var src=Event.element(_43); if(src.tagName&&(src.tagName=="INPUT"||src.tagName=="SELECT"||src.tagName=="BUTTON"||src.tagName=="TEXTAREA")){ return; } if(this.element._revert){ this.element._revert.cancel(); this.element._revert=null; } var _45=[Event.pointerX(_43),Event.pointerY(_43)]; var pos=Position.cumulativeOffset(this.element); this.offset=[0,1].map(function(i){ return (_45[i]-pos[i]); }); Draggables.activate(this); Event.stop(_43); } },startDrag:function(_48){ this.dragging=true; 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); Position.absolutize(this.element); this.element.parentNode.insertBefore(this._clone,this.element); } Draggables.notify("onStart",this,_48); if(this.options.starteffect){ this.options.starteffect(this.element); } },updateDrag:function(_49,_50){ if(!this.dragging){ this.startDrag(_49); } Position.prepare(); Droppables.show(_50,this.element); Draggables.notify("onDrag",this,_49); this.draw(_50); if(this.options.change){ this.options.change(this); } if(navigator.appVersion.indexOf("AppleWebKit")>0){ window.scrollBy(0,0); } Event.stop(_49); },finishDrag:function(_51,_52){ this.dragging=false; if(this.options.ghosting){ Position.relativize(this.element); Element.remove(this._clone); this._clone=null; } if(_52){ Droppables.fire(_51,this.element); } Draggables.notify("onEnd",this,_51); var _53=this.options.revert; if(_53&&typeof _53=="function"){ _53=_53(this.element); } var d=this.currentDelta(); if(_53&&this.options.reverteffect){ 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(_54){ if(!_54.keyCode==Event.KEY_ESC){ return; } this.finishDrag(_54,false); Event.stop(_54); },endDrag:function(_55){ if(!this.dragging){ return; } this.finishDrag(_55,true); Event.stop(_55); },draw:function(_56){ var pos=Position.cumulativeOffset(this.element); var d=this.currentDelta(); pos[0]-=d[0]; pos[1]-=d[1]; var p=[0,1].map(function(i){ return (_56[i]-pos[i]-this.offset[i]); }.bind(this)); if(this.options.snap){ if(typeof this.options.snap=="function"){ p=this.options.snap(p[0],p[1]); }else{ if(this.options.snap instanceof Array){ p=p.map(function(v,i){ return Math.round(v/this.options.snap[i])*this.options.snap[i]; }.bind(this)); }else{ p=p.map(function(v){ return Math.round(v/this.options.snap)*this.options.snap; }.bind(this)); } } } var _58=this.element.style; if((!this.options.constraint)||(this.options.constraint=="horizontal")){ _58.left=p[0]+"px"; } if((!this.options.constraint)||(this.options.constraint=="vertical")){ _58.top=p[1]+"px"; } if(_58.visibility=="hidden"){ _58.visibility=""; } }}; var SortableObserver=Class.create(); SortableObserver.prototype={initialize:function(_59,_60){ this.element=$(_59); this.observer=_60; 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={sortables:new Array(),options:function(_61){ _61=$(_61); return this.sortables.detect(function(s){ return s.element==_61; }); },destroy:function(_63){ _63=$(_63); this.sortables.findAll(function(s){ return s.element==_63; }).each(function(s){ Draggables.removeObserver(s.element); s.droppables.each(function(d){ Droppables.remove(d); }); s.draggables.invoke("destroy"); }); this.sortables=this.sortables.reject(function(s){ return s.element==_63; }); },create:function(_64){ _64=$(_64); var _65=Object.extend({element:_64,tag:"li",dropOnEmpty:false,tree:false,overlap:"vertical",constraint:"vertical",containment:_64,handle:false,only:false,hoverclass:null,ghosting:false,format:null,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{}); this.destroy(_64); var _66={revert:true,ghosting:_65.ghosting,constraint:_65.constraint,handle:_65.handle}; if(_65.starteffect){ _66.starteffect=_65.starteffect; } if(_65.reverteffect){ _66.reverteffect=_65.reverteffect; }else{ if(_65.ghosting){ _66.reverteffect=function(_64){ _64.style.top=0; _64.style.left=0; }; } } if(_65.endeffect){ _66.endeffect=_65.endeffect; } if(_65.zindex){ _66.zindex=_65.zindex; } var _67={overlap:_65.overlap,containment:_65.containment,hoverclass:_65.hoverclass,onHover:Sortable.onHover,greedy:!_65.dropOnEmpty}; Element.cleanWhitespace(element); _65.draggables=[]; _65.droppables=[]; if(_65.dropOnEmpty){ Droppables.add(element,{containment:_65.containment,onHover:Sortable.onEmptyHover,greedy:false}); _65.droppables.push(element); } (this.findElements(element,_65)||[]).each(function(e){ var _69=_65.handle?Element.childrenWithClassName(e,_65.handle)[0]:e; _65.draggables.push(new Draggable(e,Object.extend(_66,{handle:_69}))); Droppables.add(e,_67); _65.droppables.push(e); }); this.sortables.push(_65); Draggables.addObserver(new SortableObserver(element,_65.onUpdate)); },findElements:function(_70,_71){ if(!_70.hasChildNodes()){ return null; } var _72=[]; $A(_70.childNodes).each(function(e){ if(e.tagName&&e.tagName.toUpperCase()==_71.tag.toUpperCase()&&(!_71.only||(Element.hasClassName(e,_71.only)))){ _72.push(e); } if(_71.tree){ var _73=this.findElements(e,_71); if(_73){ _72.push(_73); } } }); return (_72.length>0?_72.flatten():null); },onHover:function(_74,_75,_76){ if(_76>0.5){ Sortable.mark(_75,"before"); if(_75.previousSibling!=_74){ var _77=_74.parentNode; _74.style.visibility="hidden"; _75.parentNode.insertBefore(_74,_75); if(_75.parentNode!=_77){ Sortable.options(_77).onChange(_74); } Sortable.options(_75.parentNode).onChange(_74); } }else{ Sortable.mark(_75,"after"); var _78=_75.nextSibling||null; if(_78!=_74){ var _77=_74.parentNode; _74.style.visibility="hidden"; _75.parentNode.insertBefore(_74,_78); if(_75.parentNode!=_77){ Sortable.options(_77).onChange(_74); } Sortable.options(_75.parentNode).onChange(_74); } } },onEmptyHover:function(_79,_80){ if(_79.parentNode!=_80){ var _81=_79.parentNode; _80.appendChild(_79); Sortable.options(_81).onChange(_79); Sortable.options(_80).onChange(_79); } },unmark:function(){ if(Sortable._marker){ Element.hide(Sortable._marker); } },mark:function(_82,_83){ var _84=Sortable.options(_82.parentNode); if(_84&&!_84.ghosting){ return; } if(!Sortable._marker){ Sortable._marker=$("dropmarker")||document.createElement("DIV"); Element.hide(Sortable._marker); Element.addClassName(Sortable._marker,"dropmarker"); Sortable._marker.style.position="absolute"; document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); } var _85=Position.cumulativeOffset(_82); Sortable._marker.style.left=_85[0]+"px"; Sortable._marker.style.top=_85[1]+"px"; if(_83=="after"){ if(_84.overlap=="horizontal"){ Sortable._marker.style.left=(_85[0]+_82.clientWidth)+"px"; }else{ Sortable._marker.style.top=(_85[1]+_82.clientHeight)+"px"; } } Element.show(Sortable._marker); },serialize:function(_86){ _86=$(_86); var _87=this.options(_86); var _88=Object.extend({tag:_87.tag,only:_87.only,name:_86.id,format:_87.format||/^[^_]*_(.*)$/},arguments[1]||{}); return $(this.findElements(_86,_88)||[]).map(function(_89){ return (encodeURIComponent(_88.name)+"[]="+encodeURIComponent(_89.id.match(_88.format)?_89.id.match(_88.format)[1]:"")); }).join("&"); }}; if(!Control){ var Control={}; } Control.Slider=Class.create(); Control.Slider.prototype={initialize:function(_1,_2,_3){ var _4=this; if(_1 instanceof Array){ this.handles=_1.collect(function(e){ return $(e); }); }else{ this.handles=[$(_1)]; } this.track=$(_2); this.options=_3||{}; this.axis=this.options.axis||"horizontal"; this.increment=this.options.increment||1; this.step=parseInt(this.options.step||"1"); this.range=this.options.range||$R(0,1); this.value=0; this.values=this.handles.map(function(){ return 0; }); this.spans=this.options.spans?this.options.spans.map(function(s){ return $(s); }):false; this.options.startSpan=$(this.options.startSpan||null); this.options.endSpan=$(this.options.endSpan||null); this.restricted=this.options.restricted||false; this.maximum=this.options.maximum||this.range.end; this.minimum=this.options.minimum||this.range.start; this.alignX=parseInt(this.options.alignX||"0"); this.alignY=parseInt(this.options.alignY||"0"); this.trackLength=this.maximumOffset()-this.minimumOffset(); this.handleLength=this.isVertical()?this.handles[0].offsetHeight:this.handles[0].offsetWidth; this.active=false; this.dragging=false; this.disabled=false; if(this.options.disabled){ this.setDisabled(); } this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false; if(this.allowedValues){ this.minimum=this.allowedValues.min(); this.maximum=this.allowedValues.max(); } this.eventMouseDown=this.startDrag.bindAsEventListener(this); this.eventMouseUp=this.endDrag.bindAsEventListener(this); this.eventMouseMove=this.update.bindAsEventListener(this); this.handles.each(function(h,i){ i=_4.handles.length-1-i; _4.setValue(parseFloat((_4.options.sliderValue instanceof Array?_4.options.sliderValue[i]:_4.options.sliderValue)||_4.range.start),i); Element.makePositioned(h); Event.observe(h,"mousedown",_4.eventMouseDown); }); Event.observe(this.track,"mousedown",this.eventMouseDown); Event.observe(document,"mouseup",this.eventMouseUp); Event.observe(document,"mousemove",this.eventMouseMove); this.initialized=true; },dispose:function(){ var _9=this; Event.stopObserving(this.track,"mousedown",this.eventMouseDown); Event.stopObserving(document,"mouseup",this.eventMouseUp); Event.stopObserving(document,"mousemove",this.eventMouseMove); this.handles.each(function(h){ Event.stopObserving(h,"mousedown",_9.eventMouseDown); }); },setDisabled:function(){ this.disabled=true; },setEnabled:function(){ this.disabled=false; },getNearestValue:function(_10){ if(this.allowedValues){ if(_10>=this.allowedValues.max()){ return (this.allowedValues.max()); } if(_10<=this.allowedValues.min()){ return (this.allowedValues.min()); } var _11=Math.abs(this.allowedValues[0]-_10); var _12=this.allowedValues[0]; this.allowedValues.each(function(v){ var _14=Math.abs(v-_10); if(_14<=_11){ _12=v; _11=_14; } }); return _12; } if(_10>this.range.end){ return this.range.end; } if(_10<this.range.start){ return this.range.start; } return _10; },setValue:function(_15,_16){ if(!this.active){ this.activeHandle=this.handles[_16]; this.activeHandleIdx=_16; this.updateStyles(); } _16=_16||this.activeHandleIdx||0; if(this.initialized&&this.restricted){ if((_16>0)&&(_15<this.values[_16-1])){ _15=this.values[_16-1]; } if((_16<(this.handles.length-1))&&(_15>this.values[_16+1])){ _15=this.values[_16+1]; } } _15=this.getNearestValue(_15); this.values[_16]=_15; this.value=this.values[0]; this.handles[_16].style[this.isVertical()?"top":"left"]=this.translateToPx(_15); this.drawSpans(); if(!this.dragging||!this.event){ this.updateFinished(); } },setValueBy:function(_17,_18){ this.setValue(this.values[_18||this.activeHandleIdx||0]+_17,_18||this.activeHandleIdx||0); },translateToPx:function(_19){ return Math.round(((this.trackLength-this.handleLength)/(this.range.end-this.range.start))*(_19-this.range.start))+"px"; },translateToValue:function(_20){ return ((_20/(this.trackLength-this.handleLength)*(this.range.end-this.range.start))+this.range.start); },getRange:function(_21){ var v=this.values.sortBy(Prototype.K); _21=_21||0; return $R(v[_21],v[_21+1]); },minimumOffset:function(){ return (this.isVertical()?this.alignY:this.alignX); },maximumOffset:function(){ return (this.isVertical()?this.track.offsetHeight-this.alignY:this.track.offsetWidth-this.alignX); },isVertical:function(){ return (this.axis=="vertical"); },drawSpans:function(){ var _22=this; if(this.spans){ $R(0,this.spans.length-1).each(function(r){ _22.setSpan(_22.spans[r],_22.getRange(r)); }); } if(this.options.startSpan){ this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value)); } if(this.options.endSpan){ this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum)); } },setSpan:function(_24,_25){ if(this.isVertical()){ _24.style.top=this.translateToPx(_25.start); _24.style.height=this.translateToPx(_25.end-_25.start); }else{ _24.style.left=this.translateToPx(_25.start); _24.style.width=this.translateToPx(_25.end-_25.start); } },updateStyles:function(){ this.handles.each(function(h){ Element.removeClassName(h,"selected"); }); Element.addClassName(this.activeHandle,"selected"); },startDrag:function(_26){ if(Event.isLeftClick(_26)){ if(!this.disabled){ this.active=true; var _27=Event.element(_26); var _28=[Event.pointerX(_26),Event.pointerY(_26)]; if(_27==this.track){ var _29=Position.cumulativeOffset(this.track); this.event=_26; this.setValue(this.translateToValue((this.isVertical()?_28[1]-_29[1]:_28[0]-_29[0])-(this.handleLength/2))); var _29=Position.cumulativeOffset(this.activeHandle); this.offsetX=(_28[0]-_29[0]); this.offsetY=(_28[1]-_29[1]); }else{ while((this.handles.indexOf(_27)==-1)&&_27.parentNode){ _27=_27.parentNode; } this.activeHandle=_27; this.activeHandleIdx=this.handles.indexOf(this.activeHandle); this.updateStyles(); var _29=Position.cumulativeOffset(this.activeHandle); this.offsetX=(_28[0]-_29[0]); this.offsetY=(_28[1]-_29[1]); } } Event.stop(_26); } },update:function(_30){ if(this.active){ if(!this.dragging){ this.dragging=true; } this.draw(_30); if(navigator.appVersion.indexOf("AppleWebKit")>0){ window.scrollBy(0,0); } Event.stop(_30); } },draw:function(_31){ var _32=[Event.pointerX(_31),Event.pointerY(_31)]; var _33=Position.cumulativeOffset(this.track); _32[0]-=this.offsetX+_33[0]; _32[1]-=this.offsetY+_33[1]; this.event=_31; this.setValue(this.translateToValue(this.isVertical()?_32[1]:_32[0])); if(this.initialized&&this.options.onSlide){ this.options.onSlide(this.values.length>1?this.values:this.value,this); } },endDrag:function(_34){ if(this.active&&this.dragging){ this.finishDrag(_34,true); Event.stop(_34); } this.active=false; this.dragging=false; },finishDrag:function(_35,_36){ this.active=false; this.dragging=false; this.updateFinished(); },updateFinished:function(){ if(this.initialized&&this.options.onChange){ this.options.onChange(this.values.length>1?this.values:this.value,this); } this.event=null; }}; Prado.AutoCompleter=Class.create(); Prado.AutoCompleter.Base=function(){ }; Prado.AutoCompleter.Base.prototype=Object.extend(Autocompleter.Base.prototype,{updateElement:function(_1){ if(this.options.updateElement){ this.options.updateElement(_1); return; } var _2=Element.collectTextNodesIgnoreClass(_1,"informal"); var _3=this.findLastToken(); if(_3!=-1){ var _4=this.element.value.substr(0,_3+1); var _5=this.element.value.substr(_3+1).match(/^\s+/); if(_5){ _4+=_5[0]; } this.element.value=(_4+_2).trim(); }else{ this.element.value=_2.trim(); } this.element.focus(); if(this.options.afterUpdateElement){ this.options.afterUpdateElement(this.element,_1); } }}); Prado.AutoCompleter.prototype=Object.extend(new Autocompleter.Base(),{initialize:function(_6,_7,_8){ this.baseInitialize(_6,_7,_8); },onUpdateReturn:function(_9){ if(isString(_9)&&_9.length>0){ this.updateChoices(_9); } },getUpdatedChoices:function(){ Prado.Callback(this.element.id,this.getToken(),this.onUpdateReturn.bind(this)); }}); Prado.ActivePanel={callbacks:{},register:function(id,_11){ Prado.ActivePanel.callbacks[id]=_11; },update:function(id,_12){ var _13=new Prado.ActivePanel.Request(id,Prado.ActivePanel.callbacks[id]); _13.callback(_12); }}; Prado.ActivePanel.Request=Class.create(); Prado.ActivePanel.Request.prototype={initialize:function(_14,_15){ this.element=_14; this.setOptions(_15); },setOptions:function(_16){ this.options={onSuccess:this.onSuccess.bind(this)}; Object.extend(this.options,_16||{}); },callback:function(_17){ this.options.params=[_17]; new Prado.AJAX.Callback(this.element,this.options); },onSuccess:function(_18,_19){ if(this.options.update){ if(!this.options.evalScripts){ _19=_19.stripScripts(); } Element.update(this.options.update,_19); } }}; Prado.DropContainer=Class.create(); Prado.DropContainer.prototype=Object.extend(new Prado.ActivePanel.Request(),{initialize:function(_20,_21){ this.element=_20; this.setOptions(_21); Object.extend(this.options,{onDrop:this.onDrop.bind(this),evalScripts:true,onSuccess:_21.onSuccess||this.onSuccess.bind(this)}); Droppables.add(_20,this.options); },onDrop:function(_22,_23){ this.callback(_22.id); }}); Prado.ActiveImageButton=Class.create(); Prado.ActiveImageButton.prototype={initialize:function(_24,_25){ this.element=$(_24); this.options=_25; Event.observe(this.element,"click",this.click.bind(this)); },click:function(e){ var el=$("{$this->ClientID}"); var _28=Position.cumulativeOffset(this.element); var _29=[e.clientX,e.clientY]; var _30=(_29[0]-_28[0]+1)+","+(_29[1]-_28[1]+1); Prado.Callback(this.element,_30,null,this.options); Event.stop(e); }};