function $(id){var results=[], element;for (var i=0; i<arguments.length; i++){element=arguments[i];if(typeof element=='string')element=document.getElementById(element);results.push(Element.extend(element))};return results.length<2?results[0]:results};var Cookie={set: function(name, value, expires, path, domain, secure){var today=new Date();today.setTime(today.getTime());if(expires)expires=expires*1000*60*60;var expiresDate=new Date(today.getTime()+(expires));document.cookie=name+"=" +escape( value ) +((expires)?";expires="+expiresDate.toGMTString():"") +((path)?";path="+path:"") +((domain)?";domain="+domain:"") +((secure)?";secure":"")},get: function(name){var start=document.cookie.indexOf(name+"=");var len=start+name.length+1;if(((!start)&&(name!=document.cookie.substring(0, name.length)))||start==-1)return null;var end=document.cookie.indexOf(";", len);if(end==-1)end=document.cookie.length;return unescape(document.cookie.substring(len, end))},remove: function(name, path, domain ){if(this.get(name))document.cookie=name+"=" +((path)?";path="+path:"") +((domain)?";domain="+domain:"") +";expires=Thu, 01-Jan-1970 00:00:01 GMT"}};var HTNG={HF: null,body: null,lockUntil: null,lockPeriod: 1000,showLog: false,initialize: function(){this.body=document.getElementsByTagName('body')[0];this.HF=$('HutForm');Events.add(this.HF, 'submit', function(event){ HTNG.showInLog('onsubmit event'); });var propaganda='-<u>wydajnosc</u>, <u>bezpieczenstwo</u> oraz <u>udogodnienia</u>, a wszystko to wzamian za kilka minut.';if(is.ie&&!is.ie6up)HTNG.showInLog('<strong class="red">Prosze uaktulnic Internet Explorera</strong> do wersji conajmniej 6.0 <a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">MS IE</a>'+propaganda);else if(is.opera&&!is.opera9up)HTNG.showInLog('<strong class="red">Prosze uaktulnic Opere</strong> do najnowszej wersji <a href="http://www.opera.com/download/">Opera</a>'+propaganda);if(is.moz){var boxes=document.getElementsByClassName('box');for (var i=0, max=boxes.length; i<max; ++i){boxes[i].innerHTML=boxes[i].innerHTML.stripTags()}}},processAction: function(uri, query, e){if(Events.clickEvent(e)){uri=uri||'';this.HF.__ACTION.value=query;this.HF.action='/'+uri;if(typeof Hint!='undefined')Hint.closeHint();if(!this.lockSubmit()){this.setLockUntil();this.showInLog('submit from processAction');this.HF.submit()}}},setLockUntil: function(){this.lockUntil=(new Date()).getTime()+this.lockPeriod},lockSubmit: function(){return this.lockUntil>(new Date()).getTime()?true:false},showInLog: function(){if(this.showLog){var log=document.createElement('div');log.className='jsDebuger';var cDate=new Date();var cHour=cDate.getHours();var cMin=cDate.getMinutes();var cSec=cDate.getSeconds();log.innerHTML+=(cHour<10?'0'+cHour:cHour)+':' +(cMin<10?'0'+cMin:cMin)+':' +(cSec<10?'0'+cSec:cSec)+' &mdash; ';for (var i=0, max=arguments.length; i<max; ++i){log.innerHTML+=arguments[i]};log.innerHTML+="\n";$('foot').appendChild(log)}},delayedAction: function(uri, query, timer, e){if(timer==undefined||timer<10)timer=10;uri=uri||'';setTimeout("HTNG.processAction('"+uri+"', '"+query+"', '"+e+"');", timer)},updateArgs: function(id){this.showInLog(id);this.HF.__ARGS.value=id},changeFontSize: function(size){this.body.style.fontSize=size+'px'},copyContent: function(fromID, toID){for (var i=0; i<arguments.length; i++){fromID=$(arguments[i]);i++;if(fromID==undefined)continue;if(arguments[i]==undefined)break;toID=$(arguments[i]);if(toID==undefined)continue;if(fromID.type=="checkbox"||fromID.type=="radio"){toID.checked=fromID.checked;continue}else if(fromID.value!=undefined)textValue=fromID.value;else if(fromID.innerHTML!=undefined)textValue=fromID.innerHTML;else if(fromID.innerText!=undefined)textValue=fromID.innerText;else continue;if(toID.value!=undefined)toID.value=textValue;else if(toID.innerHTML!=undefined)toID.innerHTML=textValue;else if(toID.innerText!=undefined)toID.innerText=textValue}},addAnother: function(source, closePoss, limit, trigger){var li=$(source), ul, appendLi, close;var limit=limit||0;var closePoss=(closePoss==undefined)?true:false;if(li.tagName=='UL'){ul=li;li=ul.lastChild}else{ul=li.parentNode};if(ul.tagName!='UL')return alert('Child has to be a list element and as a parent a list holder.');while(ul.lastChild.tagName!='LI')ul.removeChild(ul.lastChild);appendLi=li.cloneNode(true);if(appendLi.id!=undefined)appendLi.id=ul.lastChild.id+'_';for (var i=0, max=appendLi.childNodes.length; i<max; i++){var cld=appendLi.childNodes[i];if(cld.value)cld.value='';if(cld.id&&cld.id!=''&&ul.lastChild.childNodes[i])cld.id=ul.lastChild.childNodes[i].id+'_';if(cld.className&&Element.hasClassName(cld, 'hintBoxTrigger'))Element.remove(cld)};if(closePoss){var close=document.createElement('img');close.src="/image/getWeb?close-gray.png";close.className='cHand middle';close.style.width='12px';close.style.height='12px';close.style.padding='3px';appendLi.appendChild(close)};ul.appendChild(appendLi);if(closePoss){Events.add(close, 'click', function(event){ Element.remove(appendLi); })};if(limit>0){if(li.counter){if(li.counter>limit){if(!closePoss&&trigger)trigger.style.display='none';return}else{li.counter++}}else{li.counter=1}};if(typeof Hint!='undefined')Hint.startCloseProcess()},coverInputFile: function(){var fakeInputFile=document.createElement('div');fakeInputFile.className='fakeInputFileHolder';var fakeInput=document.createElement('input');fakeInputFile.appendChild(fakeInput);var image=document.createElement('img');image.src="/image/getWeb?close-gray.png";fakeInputFile.appendChild(image);var x=document.getElementsByTagName('input');for (var i=0; i<x.length; i++){if(x[i].type!='file')continue;if(x[i].parentNode.className!='inputFileHolder')continue;x[i].className='file hideFile';var clone=fakeInputFile.cloneNode(true);x[i].parentNode.appendChild(clone);clone.style.top=x[i].offsetTop; clone.style.left=x[i].offsetLeft;x[i].relatedElement=clone.getElementsByTagName('input')[0];x[i].onchange=x[i].onmouseout=function (){this.relatedElement.value=this.value}}},addClassIfNotEqual: function(first, second, css, checkLimit){if(!css)return;var checkLimit=checkLimit||0;var first=$(first), second=$(second);var cssSet=css.split(' ');for (var i=0; i<cssSet.length; ++i){first.removeClassName(cssSet[i]);second.removeClassName(cssSet[i])};if(first.value!=undefined&&(first.value!=second.value||first.value.length<checkLimit)){first.addClassName(css);second.addClassName(css)}},addClassIfEmpty: function(elem, css){if(!css)return;var elem=$(elem);var cssSet=css.split(' ');for (var i=0; i<cssSet.length; ++i){elem.removeClassName(cssSet[i])};if(elem.value!=undefined&&(elem.value=elem.value.strip())==''){elem.addClassName(css)}},addClassIfNotPattern: function(elem, css, pattern){if(!css||!pattern)return;var elem=$(elem);var cssSet=css.split(' ');for (var i=0; i<cssSet.length; ++i){elem.removeClassName(cssSet[i])};if(!elem.value.match(pattern)){elem.addClassName(css)}},changeVisibility: function(elemTrg, cond, mode){var elemTrg=$(elemTrg);var mode=mode||'display';if(mode=='display')elemTrg.style.display=cond?'block':'none';else if(mode=='visibility')elemTrg.style.visibility=cont?'visible':'hidden'},ucFirst: function(elem){var elem=$(elem);if(elem.value)elem.value=elem.value.capitalize()},useInformal: function(input, li){input.value=input.value.strip()var state, holder=input.parentNode;for (var i=0, max=li.childNodes.length; i<max; ++i){var tmp=li.childNodes[i];if(tmp.tagName&&Element.hasClassName(tmp, 'informal'))state=tmp.innerHTML.strip()}for (var i=0, max=holder.childNodes.length; i<max; ++i){var elem=holder.childNodes[i];if(elem.tagName=='INPUT'&&elem!=input){if(elem.type=='checkbox')elem.checked=(input.value=='')?false:true;elseelem.value=state;break}}}};var Events={clickEvent: function(event){e=event||window.event;charCode=e?(e.charCode?e.charCode:e.keyCode):0;if(charCode!=13&&charCode!=32 &&charCode!=undefined&&charCode!=0)return false;return true},add: function (element, event, callback, capture){element=$(element);capture=capture||false;if(element.addEventListener){element.addEventListener(event, callback, capture);return true}else if(element.attachEvent){return element.attachEvent('on'+event, callback)}else{Events.customAttach(element, event, callback);element['on'+event]=function(){ callCustom(element, event)}}},customAttach: function(element, event, callback){if(!element.customEvents)element.customEvents=[];if(!element.customEvents[event])element.customEvents[event]=[];element.customEvents[event].push(callback)},callCustom: function(element, event){if(element&&element.customEvents&&element.customEvents[event]){var eventContainer=element.customEvents[event];for (var i=0, max=eventContainer.length; i<max; i++)eventContainer[i]()}}}
var css_browser_selector=function(){var ua=navigator.userAgent.toLowerCase();var h=document.getElementsByTagName('html')[0];var c=h.className;if(ua.indexOf('webtv')!=-1) h.className=c;else if(ua.indexOf('opera')!=-1) h.className='bOP '+c;else if(ua.indexOf('msie')!=-1) h.className='bIE'+' bIE'+ua.charAt(ua.indexOf('msie')+5)+' '+c;else if(ua.indexOf('gecko/')!=-1) h.className='bGK '+c;else if(ua.indexOf('konqueror')!=-1) h.className='bKQ '+c;else if(ua.indexOf('applewebkit/')!=- 1) h.className='bSF '+c;else if(ua.indexOf('mozilla/')!=-1) h.className='bGK '+c}.apply(this);
function Is (){var agt=navigator.userAgent.toLowerCase();this.major=parseInt(navigator.appVersion);this.minor=parseFloat(navigator.appVersion);this.moz=((agt.indexOf('mozilla')!=-1)&&(agt.indexOf('spoofer')==-1)&& (agt.indexOf('compatible')==-1)&&(agt.indexOf('opera')==-1)&& (agt.indexOf('webtv')==-1)&&(agt.indexOf('hotjava')==-1));this.moz2=(this.moz&&(this.major==2));this.moz3=(this.moz&&(this.major==3));this.moz4=(this.moz&&(this.major==4));this.moz4up=(this.moz&&(this.major >= 4));this.moz5=(this.moz&&(this.major==5));this.moz5up=(this.moz&&(this.major >= 5));this.gecko=(agt.indexOf('gecko')!=-1);this.nav2=this.moz2;this.nav3=this.moz3;this.nav4=this.moz4;this.nav4up=(this.nav4||((this.major >= 4)&&(agt.indexOf("netscape")!=-1)));this.nav=(this.nav2||this.nav3||this.nav4);this.nav6=(this.moz&&(this.major==5)&&(agt.indexOf("netscape6/6")!=-1));this.nav6up=(this.moz&&(this.major >= 5)&&(agt.indexOf("netscape")!=-1));this.nav7=(this.moz&&(this.major==5)&&(agt.indexOf("netscape/7")!=-1));this.nav7up=(this.nav6up&&!this.nav6);this.navonly=(this.nav&&((agt.indexOf(";nav")!=-1)||(agt.indexOf("; nav")!=-1)));this.mozilla=(this.moz&&this.gecko);this.mozilla1=(this.moz&&this.gecko&&(agt.indexOf("rv:1")!=-1));this.mozilla2=(this.moz&&this.gecko&&(agt.indexOf("rv:2")!=-1));this.ie=((agt.indexOf("msie")!=-1)&&(agt.indexOf("opera")==-1));this.ie3=(this.ie&&(this.major<4));this.ie4=(this.ie&&(this.major==4)&&(agt.indexOf("msie 4")!=-1));this.ie4up=(this.ie&&(this.major >= 4));this.ie5=(this.ie&&(this.major==4)&&(agt.indexOf("msie 5.0")!=-1));this.ie5_5=(this.ie&&(this.major==4)&&(agt.indexOf("msie 5.5")!=-1));this.ie5up=(this.ie&&!this.ie3&&!this.ie4);this.ie5_5up=(this.ie5up&&!this.ie5);this.ie6=(this.ie&&(this.major==4)&&(agt.indexOf("msie 6.")!=-1));this.ie6up=(this.ie5_5up&&!this.ie5_5);this.ie7=(this.ie&&(this.major==4)&&(agt.indexOf("msie 7.")!=-1));this.ie7up=(this.ie6up&&!this.ie6);this.msn=(this.ie4up&&(agt.indexOf("msn")!=-1));this.msn2_5=(this.msn&&(agt.indexOf("msn 2.5")!=-1));this.msn2_6=(this.msn&&(agt.indexOf("msn 2.6")!=-1));this.aol=(agt.indexOf("aol")!=-1);this.aol3=(this.aol&&this.ie3);this.aol4ie3=(this.aol&&this.ie3);this.aol4ie4=(this.aol&&this.ie4);this.aol4=(this.aol4ie3||this.aol4ie4);this.aol5=(agt.indexOf("aol 5")!=-1);this.aol6=(agt.indexOf("aol 6")!=-1);this.aol7=((agt.indexOf("aol 7")!=-1)||agt.indexOf("aol/7")!=-1);this.aol8=((agt.indexOf("aol 8")!=-1)||agt.indexOf("aol/8")!=-1);this.opera=(agt.indexOf("opera")!=-1);this.opera2=(agt.indexOf("opera 2")!=-1||agt.indexOf("opera/2")!=-1);this.opera3=(agt.indexOf("opera 3")!=-1||agt.indexOf("opera/3")!=-1);this.opera4=(agt.indexOf("opera 4")!=-1||agt.indexOf("opera/4")!=-1);this.opera5=(agt.indexOf("opera 5")!=-1||agt.indexOf("opera/5")!=-1);this.opera5up=(this.opera&&!this.opera2&&!this.opera3&&!this.opera4);this.opera6=(agt.indexOf("opera 6")!=-1||agt.indexOf("opera/6")!=-1);this.opera6up=(this.opera5up&&!this.opera5);this.opera7=(agt.indexOf("opera 7")!=-1||agt.indexOf("opera/7")!=-1);this.opera7up=(this.opera6up&&!this.opera6);this.opera8=(agt.indexOf("opera 8")!=-1||agt.indexOf("opera/8")!=-1);this.opera8up=(this.opera7up&&!this.opera7);this.opera9=(agt.indexOf("opera 9")!=-1||agt.indexOf("opera/9")!=-1);this.opera9up=(this.opera8up&&!this.opera8);this.webtv=(agt.indexOf("webtv")!=-1);this.TVNavigator=((agt.indexOf("navio")!=-1)||(agt.indexOf("navio_aoltv")!=-1));this.AOLTV=this.TVNavigator;this.hotjava=(agt.indexOf("hotjava")!=-1);this.hotjava3=(this.hotjava&&(this.major==3));this.hotjava3up=(this.hotjava&&(this.major >= 3));if(this.nav2||this.ie3) this.js=1.0;else if(this.nav3) this.js=1.1;else if(this.opera5up) this.js=1.3;else if(this.opera) this.js=1.1;else if((this.nav4&&(this.minor <= 4.05))||this.ie4) this.js=1.2;else if((this.nav4&&(this.minor>4.05))||this.ie5) this.js=1.3;else if(this.hotjava3up) this.js=1.4;else if(this.nav6||this.gecko) this.js=1.5;else if(this.nav6up) this.js=1.5;else if(this.ie5up) this.js=1.3else this.js=0.0;this.win=( (agt.indexOf("win")!=-1)||(agt.indexOf("16bit")!=-1));this.win95=((agt.indexOf("win95")!=-1)||(agt.indexOf("windows 95")!=-1));this.win16=((agt.indexOf("win16")!=-1) ||(agt.indexOf("16bit")!=-1)||(agt.indexOf("windows 3.1")!=-1) ||(agt.indexOf("windows 16-bit")!=-1));this.win31=((agt.indexOf("windows 3.1")!=-1)||(agt.indexOf("win16")!=-1) ||(agt.indexOf("windows 16-bit")!=-1));this.win98=((agt.indexOf("win98")!=-1)||(agt.indexOf("windows 98")!=-1));this.winnt=((agt.indexOf("winnt")!=-1)||(agt.indexOf("windows nt")!=-1));this.win32=(this.win95||this.winnt||this.win98 ||((this.major >= 4)&&(navigator.platform=="Win32")) ||(agt.indexOf("win32")!=-1)||(agt.indexOf("32bit")!=-1));this.winme=((agt.indexOf("win 9x 4.90")!=-1));this.win2k=((agt.indexOf("windows nt 5.0")!=-1)||(agt.indexOf("windows 2000")!=-1));this.winxp=((agt.indexOf("windows nt 5.1")!=-1)||(agt.indexOf("windows xp")!=-1));this.win2k3=((agt.indexOf("windows nt 5.2")!= -1)||(agt.indexOf("windows 2003")!=-1));this.windotnet=this.win2k3;this.dotnet=((agt.indexOf(".net clr")!=-1));this.os2=((agt.indexOf("os/2")!=-1) ||(navigator.appVersion.indexOf("OS/2")!=-1) ||(agt.indexOf("ibm-webexplorer")!=-1));this.mac=(agt.indexOf("mac")!=-1);if(this.mac&&this.ie5up) this.js=1.4;this.mac68k=(this.mac&&((agt.indexOf("68k")!=-1) ||(agt.indexOf("68000")!=-1)));this.macppc=(this.mac&&((agt.indexOf("ppc")!=-1) ||(agt.indexOf("powerpc")!=-1)));this.macos=(this.mac&&((agt.indexOf("mac os")!=-1) ||(agt.indexOf("macos")!=-1) ||this.ie));this.macos8=(this.macos&&((agt.indexOf("os 8")!=-1) ||(agt.indexOf("os8")!=-1)));this.macos9=((this.mac&&(this.ie5&&(agt.indexOf("msie 5.13")!=-1))) ||(this.macos&&((agt.indexOf("os 9")!=-1) ||(agt.indexOf("os9")!=-1))));this.macosx=(this.macos&&((agt.indexOf("os x")!=-1) ||(agt.indexOf("osx")!=-1)));this.sun=(agt.indexOf("sunos")!=-1);this.sun4=(agt.indexOf("sunos 4")!=-1);this.sun5=(agt.indexOf("sunos 5")!=-1);this.suni86= (this.sun&&(agt.indexOf("i86")!=-1));this.irix=(agt.indexOf("irix")!=-1); this.irix5=(agt.indexOf("irix 5")!=-1);this.irix6=((agt.indexOf("irix 6")!=-1)||(agt.indexOf("irix6")!=-1));this.hpux=(agt.indexOf("hp-ux")!=-1);this.hpux9=(this.hpux&&(agt.indexOf("09.")!=-1));this.hpux10= (this.hpux&&(agt.indexOf("10.")!=-1));this.aix=(agt.indexOf("aix")!=-1); this.aix1=(agt.indexOf("aix 1")!=-1);this.aix2=(agt.indexOf("aix 2")!=-1);this.aix3=(agt.indexOf("aix 3")!=-1);this.aix4=(agt.indexOf("aix 4")!=-1);this.linux=(agt.indexOf("inux")!=-1);this.sco=(agt.indexOf("sco")!=-1)||(agt.indexOf("unix_sv")!=-1);this.unixware=(agt.indexOf("unix_system_v")!=-1);this.mpras=(agt.indexOf("ncr")!=-1);this.reliant=(agt.indexOf("reliantunix")!=-1);this.dec=((agt.indexOf("dec")!=-1)||(agt.indexOf("osf1")!=-1) ||(agt.indexOf("dec_alpha")!=-1)||(agt.indexOf("alphaserver")!=-1) ||(agt.indexOf("ultrix")!=-1)||(agt.indexOf("alphastation")!=-1));this.sinix=(agt.indexOf("sinix")!=-1);this.freebsd=(agt.indexOf("freebsd")!=-1);this.bsd=(agt.indexOf("bsd")!=-1);this.macos=(this.macos||(!this.linux&&!this.bsd));this.unix=((agt.indexOf("x11")!=-1)||this.sun||this.irix||this.hpux ||this.sco ||this.unixware||this.mpras||this.reliant ||this.dec||this.sinix||this.aix||this.linux||this.bsd||this.freebsd);this.vms=((agt.indexOf("vax")!=-1)||(agt.indexOf("openvms")!=-1))};var is;var isIE3Mac=false;if((navigator.appVersion.indexOf("Mac")!=-1)&&(navigator.userAgent.indexOf("MSIE")!=-1)&&(parseInt(navigator.appVersion)==3))isIE3Mac=true;else{is=new Is()}
var Prototype={Version: '1.5.0',BrowserFeatures: {XPath: !!document.evaluate},ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',emptyFunction: function(){},K: function(x){ return x }};var Class={create: function(){return function(){this.initialize.apply(this, arguments)}}};var Abstract=new Object();Object.extend=function(destination, source){for (var property in source){destination[property]=source[property]};return destination};Object.extend(Object, {inspect: function(object){try{if(object === undefined) return 'undefined';if(object === null) return 'null';return object.inspect?object.inspect():object.toString()}catch(e){if(e instanceof RangeError) return '...';throw e}},keys: function(object){var keys=[];for (var property in object)
keys.push(property);return keys},values: function(object){var values=[];for (var property in object)
values.push(object[property]);return values},clone: function(object){return Object.extend({}, object)}});Function.prototype.bind=function(){var __method=this, args=$A(arguments), object=args.shift();return function(){return __method.apply(object, args.concat($A(arguments)))}};Function.prototype.bindAsEventListener=function(object){var __method=this, args=$A(arguments), object=args.shift();return function(event){return __method.apply(object, [( event||window.event)].concat(args).concat($A(arguments)))}};Object.extend(Number.prototype, {toColorPart: function(){var digits=this.toString(16);if(this<16) return '0'+digits;return digits},succ: function(){return this+1},times: function(iterator){$R(0, this, true).each(iterator);return this}});var Try={these: function(){var returnValue;for (var i=0, length=arguments.length; i<length; i++){var lambda=arguments[i];try{returnValue=lambda();break}catch(e){}};return returnValue}};var PeriodicalExecuter=Class.create();PeriodicalExecuter.prototype={initialize: function(callback, frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback()},registerCallback: function(){this.timer=setInterval(this.onTimerEvent.bind(this), this.frequency*1000)},stop: function(){if(!this.timer) return;clearInterval(this.timer);this.timer=null},onTimerEvent: function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.callback(this)}finally {this.currentlyExecuting=false}}}};String.interpret=function(value){return value==null?'':String(value)};Object.extend(String.prototype, {gsub: function(pattern, replacement){var result='', source=this, match;replacement=arguments.callee.prepareReplacement(replacement);while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0, match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source, source=''}};return result},sub: function(pattern, replacement, count){replacement=this.gsub.prepareReplacement(replacement);count=count === undefined?1:count;return this.gsub(pattern, function(match){if(--count<0) return match[0];return replacement(match)})},scan: function(pattern, iterator){this.gsub(pattern, iterator);return this},truncate: function(length, truncation){length=length||30;truncation=truncation === undefined?'...':truncation;return this.length>length ?this.slice(0, length-truncation.length)+truncation:this},strip: function(){return this.replace(/^\s+/, '').replace(/\s+$/, '')},stripTags: function(){return this.replace(/<\/?[^>]+>/gi, '')},stripScripts: function(){return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '')},extractScripts: function(){var matchAll=new RegExp(Prototype.ScriptFragment, 'img');var matchOne=new RegExp(Prototype.ScriptFragment, 'im');return (this.match(matchAll)||[]).map(function(scriptTag){return (scriptTag.match(matchOne)||['', ''])[1]})},evalScripts: function(){return this.extractScripts().map(function(script){ return eval(script)})},escapeHTML: function(){var div=document.createElement('div');var text=document.createTextNode(this);div.appendChild(text);return div.innerHTML},unescapeHTML: function(){var div=document.createElement('div');div.innerHTML=this.stripTags();return div.childNodes[0]?(div.childNodes.length>1 ?$A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) :div.childNodes[0].nodeValue):''},toQueryParams: function(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match) return {};return match[1].split(separator||'&').inject({}, function(hash, pair){if((pair=pair.split('='))[0]){var name=decodeURIComponent(pair[0]);var value=pair[1]?decodeURIComponent(pair[1]):undefined;if(hash[name]!==undefined){if(hash[name].constructor!=Array)
hash[name]=[hash[name]];if(value) hash[name].push(value)}else hash[name]=value};return hash})},toArray: function(){return this.split('')},succ: function(){return this.slice(0, this.length-1) +String.fromCharCode(this.charCodeAt(this.length-1)+1)},camelize: function(){var parts=this.split('-'), len=parts.length;if(len==1) return parts[0];var camelized=this.charAt(0)=='-'? parts[0].charAt(0).toUpperCase()+parts[0].substring(1): parts[0];for (var i=1; i<len; i++)
camelized+=parts[i].charAt(0).toUpperCase()+parts[i].substring(1);return camelized},capitalize: function(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()},underscore: function(){return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1};_#{2};').gsub(/([a-z\d])([A-Z])/,'#{1};_#{2};').gsub(/-/,'_').toLowerCase()},dasherize: function(){return this.gsub(/_/,'-')},inspect: function(useDoubleQuotes){var escapedString=this.replace(/\\/g, '\\\\');if(useDoubleQuotes)
return '"'+escapedString.replace(/"/g, '\\"')+'"';else
return "'"+escapedString.replace(/'/g, '\\\'')+"'"}});String.prototype.gsub.prepareReplacement=function(replacement){if(typeof replacement=='function') return replacement;var template=new Template(replacement);return function(match){ return template.evaluate(match)}};String.prototype.parseQuery=String.prototype.toQueryParams;var Template=Class.create();Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;Template.prototype={initialize: function(template, pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern},evaluate: function(object){return this.template.gsub(this.pattern, function(match){var before=match[1];if(before=='\\') return match[2];return before+String.interpret(object[match[3]])})}};var $break=new Object();var $continue=new Object();var Enumerable={each: function(iterator){var index=0;try{this._each(function(value){try{iterator(value, index++)}catch(e){if(e!=$continue) throw e}})}catch(e){if(e!=$break) throw e};return this},eachSlice: function(number, iterator){var index=-number, slices=[], array=this.toArray();while((index+=number)<array.length)
slices.push(array.slice(index, index+number));return slices.map(iterator)},all: function(iterator){var result=true;this.each(function(value, index){result=result&&!!(iterator||Prototype.K)(value, index);if(!result) throw $break});return result},any: function(iterator){var result=false;this.each(function(value, index){if(result=!!(iterator||Prototype.K)(value, index))
throw $break});return result},collect: function(iterator){var results=[];this.each(function(value, index){results.push((iterator||Prototype.K)(value, index))});return results},detect: function(iterator){var result;this.each(function(value, index){if(iterator(value, index)){result=value;throw $break}});return result},findAll: function(iterator){var results=[];this.each(function(value, index){if(iterator(value, index))
results.push(value)});return results},grep: function(pattern, iterator){var results=[];this.each(function(value, index){var stringValue=value.toString();if(stringValue.match(pattern))
results.push((iterator||Prototype.K)(value, index))})
return results},include: function(object){var found=false;this.each(function(value){if(value==object){found=true;throw $break}});return found},inGroupsOf: function(number, fillWith){fillWith=fillWith === undefined?null:fillWith;return this.eachSlice(number, function(slice){while(slice.length<number) slice.push(fillWith);return slice})},inject: function(memo, iterator){this.each(function(value, index){memo=iterator(memo, value, index)});return memo},invoke: function(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value, args)})},max: function(iterator){var result;this.each(function(value, index){value=(iterator||Prototype.K)(value, index);if(result==undefined||value >= result)
result=value});return result},min: function(iterator){var result;this.each(function(value, index){value=(iterator||Prototype.K)(value, index);if(result==undefined||value<result)
result=value});return result},partition: function(iterator){var trues=[], falses=[];this.each(function(value, index){((iterator||Prototype.K)(value, index) ?trues:falses).push(value)});return [trues, falses]},pluck: function(property){var results=[];this.each(function(value, index){results.push(value[property])});return results},reject: function(iterator){var results=[];this.each(function(value, index){if(!iterator(value, index))
results.push(value)});return results},sortBy: function(iterator){return this.map(function(value, index){return {value: value, criteria: iterator(value, index)}}).sort(function(left, right){var a=left.criteria, b=right.criteria;return a<b?-1:a>b?1:0}).pluck('value')},toArray: function(){return this.map()},zip: function(){var iterator=Prototype.K, args=$A(arguments);if(typeof args.last()=='function')
iterator=args.pop();var collections=[this].concat(args).map($A);return this.map(function(value, index){return iterator(collections.pluck(index))})},size: function(){return this.toArray().length},inspect: function(){return '#<Enumerable:'+this.toArray().inspect()+'>'}};Object.extend(Enumerable, {map: Enumerable.collect,find: Enumerable.detect,select: Enumerable.findAll,member: Enumerable.include,entries: Enumerable.toArray});var $A=Array.from=function(iterable){if(!iterable) return [];if(iterable.toArray){return iterable.toArray()}else{var results=[];for (var i=0, length=iterable.length; i<length; i++)
results.push(iterable[i]);return results}};Object.extend(Array.prototype, Enumerable);if(!Array.prototype._reverse)
Array.prototype._reverse=Array.prototype.reverse;Object.extend(Array.prototype, {_each: function(iterator){for (var i=0, length=this.length; i<length; i++)
iterator(this[i])},clear: function(){this.length=0;return this},first: function(){return this[0]},last: function(){return this[this.length-1]},compact: function(){return this.select(function(value){return value!=null})},flatten: function(){return this.inject([], function(array, value){return array.concat(value&&value.constructor==Array ?value.flatten():[value])})},without: function(){var values=$A(arguments);return this.select(function(value){return !values.include(value)})},indexOf: function(object){for (var i=0, length=this.length; i<length; i++)
if(this[i]==object) return i;return -1},reverse: function(inline){return (inline!==false?this:this.toArray())._reverse()},reduce: function(){return this.length>1?this:this[0]},uniq: function(){return this.inject([], function(array, value){return array.include(value)?array:array.concat([value])})},clone: function(){return [].concat(this)},size: function(){return this.length},inspect: function(){return '['+this.map(Object.inspect).join(', ')+']'}});Array.prototype.toArray=Array.prototype.clone;function $w(string){string=string.strip();return string?string.split(/\s+/):[]};if(window.opera){Array.prototype.concat=function(){var array=[];for(var i=0, length=this.length; i<length; i++) array.push(this[i]);for(var i=0, length=arguments.length; i<length; i++){if(arguments[i]){if(arguments[i].constructor==Array){for(var j=0, arrayLength=arguments[i].length; j<arrayLength; j++)
array.push(arguments[i][j])}else{array.push(arguments[i])}}};return array}};var Hash=function(obj){Object.extend(this, obj||{})};Object.extend(Hash, {toQueryString: function(obj){var parts=[];this.prototype._each.call(obj, function(pair){if(!pair.key) return;if(pair.value&&pair.value.constructor==Array){var values=pair.value.compact();if(values.length<2) pair.value=values.reduce();else{key=encodeURIComponent(pair.key);values.each(function(value){value=value!=undefined?encodeURIComponent(value):'';parts.push(key+'='+encodeURIComponent(value))});return}};if(pair.value==undefined) pair[1]='';parts.push(pair.map(encodeURIComponent).join('='))});return parts.join('&')}});Object.extend(Hash.prototype, Enumerable);Object.extend(Hash.prototype, {_each: function(iterator){for (var key in this){var value=this[key];if(value&&value==Hash.prototype[key]) continue;var pair=[key, value];pair.key=key;pair.value=value;iterator(pair)}},keys: function(){return this.pluck('key')},values: function(){return this.pluck('value')},merge: function(hash){return $H(hash).inject(this, function(mergedHash, pair){mergedHash[pair.key]=pair.value;return mergedHash})},remove: function(){var result;for(var i=0, length=arguments.length; i<length; i++){var value=this[arguments[i]];if(value!==undefined){if(result === undefined) result=value;else{if(result.constructor!=Array) result=[result];result.push(value)}};delete this[arguments[i]]};return result},toQueryString: function(){return Hash.toQueryString(this)},inspect: function(){return '#<Hash:{'+this.map(function(pair){return pair.map(Object.inspect).join(': ')}).join(', ')+'};>'}});function $H(object){if(object&&object.constructor==Hash) return object;return new Hash(object)};ObjectRange=Class.create();Object.extend(ObjectRange.prototype, Enumerable);Object.extend(ObjectRange.prototype, {initialize: function(start, end, exclusive){this.start=start;this.end=end;this.exclusive=exclusive},_each: function(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ()}},include: function(value){if(value<this.start)
return false;if(this.exclusive)
return value<this.end;return value <= this.end}});var $R=function(start, end, exclusive){return new ObjectRange(start, end, exclusive)};var Ajax={getTransport: function(){return Try.these(
function(){return new XMLHttpRequest()},function(){return new ActiveXObject('Msxml2.XMLHTTP')},function(){return new ActiveXObject('Microsoft.XMLHTTP')})||false},activeRequestCount: 0};Ajax.Responders={responders: [],_each: function(iterator){this.responders._each(iterator)},register: function(responder){if(!this.include(responder))
this.responders.push(responder)},unregister: function(responder){this.responders=this.responders.without(responder)},dispatch: function(callback, request, transport, json){this.each(function(responder){if(typeof responder[callback]=='function'){try{responder[callback].apply(responder, [request, transport, json])}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(options){this.options={method: 'post',asynchronous: true,contentType: 'application/x-www-form-urlencoded',encoding: 'UTF-8',parameters: ''};Object.extend(this.options, options||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=='string')
this.options.parameters=this.options.parameters.toQueryParams()}};Ajax.Request=Class.create();Ajax.Request.Events =['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];Ajax.Request.prototype=Object.extend(new Ajax.Base(), {_complete: false,initialize: function(url, options){this.transport=Ajax.getTransport();this.setOptions(options);this.request(url)},request: function(url){this.url=url;this.method=this.options.method;var params=this.options.parameters;if(!['get', 'post'].include(this.method)){params['_method']=this.method;this.method='post'};params=Hash.toQueryString(params);if(params&&/Konqueror|Safari|KHTML/.test(navigator.userAgent)) params+='&_='
if(this.method=='get'&&params)
this.url+=(this.url.indexOf('?')>-1?'&':'?')+params;try{Ajax.Responders.dispatch('onCreate', this, this.transport);this.transport.open(this.method.toUpperCase(), this.url,this.options.asynchronous);if(this.options.asynchronous)
setTimeout(function(){ this.respondToReadyState(1)}.bind(this), 10);this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();var body=this.method=='post'?(this.options.postBody||params):null;this.transport.send(body);if(!this.options.asynchronous&&this.transport.overrideMimeType)
this.onStateChange()}catch(e){this.dispatchException(e)}},onStateChange: function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete))
this.respondToReadyState(this.transport.readyState)},setRequestHeaders: function(){var headers={'X-Requested-With': 'XMLHttpRequest','X-Prototype-Version': Prototype.Version,'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'};if(this.method=='post'){headers['Content-type']=this.options.contentType +(this.options.encoding?'; charset='+this.options.encoding:'');if(this.transport.overrideMimeType &&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005)
headers['Connection']='close'};if(typeof this.options.requestHeaders=='object'){var extras=this.options.requestHeaders;if(typeof extras.push=='function')
for (var i=0, length=extras.length; i<length; i+=2)
headers[extras[i]]=extras[i+1];else
$H(extras).each(function(pair){ headers[pair.key]=pair.value })}for (var name in headers)
this.transport.setRequestHeader(name, headers[name])},success: function(){return !this.transport.status|| (this.transport.status >= 200&&this.transport.status<300)},respondToReadyState: function(readyState){var state=Ajax.Request.Events[readyState];var transport=this.transport, json=this.evalJSON();if(state=='Complete'){try{this._complete=true;(this.options['on'+this.transport.status]|| this.options['on'+(this.success()?'Success':'Failure')]|| Prototype.emptyFunction)(transport, json)}catch(e){this.dispatchException(e)};if((this.getHeader('Content-type')||'text/javascript').strip().
match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
this.evalResponse()};try{(this.options['on'+state]||Prototype.emptyFunction)(transport, json);Ajax.Responders.dispatch('on'+state, this, transport, json)}catch(e){this.dispatchException(e)};if(state=='Complete'){this.transport.onreadystatechange=Prototype.emptyFunction}},getHeader: function(name){try{return this.transport.getResponseHeader(name)}catch(e){ return null }},evalJSON: function(){try{var json=this.getHeader('X-JSON');return json?eval('('+json+')'):null}catch(e){ return null }},evalResponse: function(){try{return eval(this.transport.responseText)}catch(e){this.dispatchException(e)}},dispatchException: function(exception){(this.options.onException||Prototype.emptyFunction)(this, exception);Ajax.Responders.dispatch('onException', this, exception)}});Ajax.Updater=Class.create();Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {initialize: function(container, url, options){this.container={success: (container.success||container),failure: (container.failure||(container.success?null:container))};this.transport=Ajax.getTransport();this.setOptions(options);var onComplete=this.options.onComplete||Prototype.emptyFunction;this.options.onComplete=(function(transport, param){this.updateContent();onComplete(transport, param)}).bind(this);this.request(url)},updateContent: function(){var receiver=this.container[this.success()?'success':'failure'];var response=this.transport.responseText;if(!this.options.evalScripts) response=response.stripScripts();if(receiver=$(receiver)){if(this.options.insertion)
new this.options.insertion(receiver, response);else
receiver.update(response)};if(this.success()){if(this.onComplete)
setTimeout(this.onComplete.bind(this), 10)}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(), {initialize: function(container, url, options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start()},start: function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop: function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this, arguments)},updateComplete: function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText ?this.decay*this.options.decay:1);this.lastText=request.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)}});function $(element){if(arguments.length>1){for (var i=0, elements=[], length=arguments.length; i<length; i++)
elements.push($(arguments[i]));return elements};if(typeof element=='string')
element=document.getElementById(element);return Element.extend(element)};if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression, parentElement){var results=[];var query=document.evaluate(expression, $(parentElement)||document,null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);for (var i=0, length=query.snapshotLength; i<length; i++)
results.push(query.snapshotItem(i));return results}};document.getElementsByClassName=function(className, parentElement){if(Prototype.BrowserFeatures.XPath){var q=".//*[contains(concat(' ', @class, ' '), ' "+className+" ')]";return document._getElementsByXPath(q, parentElement)}else{var children=($(parentElement)||document.body).getElementsByTagName('*');var elements=[], child;for (var i=0, length=children.length; i<length; i++){child=children[i];if(Element.hasClassName(child, className))
elements.push(Element.extend(child))};return elements}};
if(!window.Element)
var Element=new Object();Element.extend=function(element){if(!element||_nativeExtensions||element.nodeType==3) return element;if(!element._extended&&element.tagName&&element!=window){var methods=Object.clone(Element.Methods), cache=Element.extend.cache;if(element.tagName=='FORM')
Object.extend(methods, Form.Methods);if(['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))
Object.extend(methods, Form.Element.Methods);Object.extend(methods, Element.Methods.Simulated);for (var property in methods){var value=methods[property];if(typeof value=='function'&&!(property in element))
element[property]=cache.findOrStore(value)}};element._extended=true;return element};Element.extend.cache={findOrStore: function(value){return this[value]=this[value]||function(){return value.apply(null, [this].concat($A(arguments)))}}};Element.Methods={visible: function(element){return $(element).style.display!='none'},toggle: function(element){element=$(element);Element[Element.visible(element)?'hide':'show'](element);return element},hide: function(element){$(element).style.display='none';return element},show: function(element){$(element).style.display='';return element},remove: function(element){element=$(element);element.parentNode.removeChild(element);return element},update: function(element, html){html=typeof html=='undefined'?'':html.toString();$(element).innerHTML=html.stripScripts();setTimeout(function(){html.evalScripts()}, 10);return element},replace: function(element, html){element=$(element);html=typeof html=='undefined'?'':html.toString();if(element.outerHTML){element.outerHTML=html.stripScripts()}else{var range=element.ownerDocument.createRange();range.selectNodeContents(element);element.parentNode.replaceChild(
range.createContextualFragment(html.stripScripts()), element)};setTimeout(function(){html.evalScripts()}, 10);return element},inspect: function(element){element=$(element);var result='<'+element.tagName.toLowerCase();$H({'id': 'id', 'className': 'class'}).each(function(pair){var property=pair.first(), attribute=pair.last();var value=(element[property]||'').toString();if(value) result+=' '+attribute+'='+value.inspect(true)});return result+'>'},recursivelyCollect: function(element, property){element=$(element);var elements=[];while(element=element[property])
if(element.nodeType==1)
elements.push(Element.extend(element));return elements},ancestors: function(element){return $(element).recursivelyCollect('parentNode')},descendants: function(element){return $A($(element).getElementsByTagName('*'))},immediateDescendants: function(element){if(!(element=$(element).firstChild)) return [];while(element&&element.nodeType!=1) element=element.nextSibling;if(element) return [element].concat($(element).nextSiblings());return []},previousSiblings: function(element){return $(element).recursivelyCollect('previousSibling')},nextSiblings: function(element){return $(element).recursivelyCollect('nextSibling')},siblings: function(element){element=$(element);return element.previousSiblings().reverse().concat(element.nextSiblings())},match: function(element, selector){if(typeof selector=='string')
selector=new Selector(selector);return selector.match($(element))},up: function(element, expression, index){return Selector.findElement($(element).ancestors(), expression, index)},down: function(element, expression, index){return Selector.findElement($(element).descendants(), expression, index)},previous: function(element, expression, index){return Selector.findElement($(element).previousSiblings(), expression, index)},next: function(element, expression, index){return Selector.findElement($(element).nextSiblings(), expression, index)},getElementsBySelector: function(){var args=$A(arguments), element=$(args.shift());return Selector.findChildElements(element, args)},getElementsByClassName: function(element, className){return document.getElementsByClassName(className, element)},readAttribute: function(element, name){element=$(element);if(document.all&&!window.opera){var t=Element._attributeTranslations;if(t.values[name]) return t.values[name](element, name);if(t.names[name]) name=t.names[name];var attribute=element.attributes[name];if(attribute) return attribute.nodeValue};return element.getAttribute(name)},getHeight: function(element){return $(element).getDimensions().height},getWidth: function(element){return $(element).getDimensions().width},classNames: function(element){return new Element.ClassNames(element)},hasClassName: function(element, className){if(!(element=$(element))) return;var elementClassName=element.className;if(elementClassName.length==0) return false;if(elementClassName==className ||elementClassName.match(new RegExp("(^|\\s)"+className+"(\\s|$)")))
return true;return false},addClassName: function(element, className){if(!(element=$(element))) return;Element.classNames(element).add(className);return element},removeClassName: function(element, className){if(!(element=$(element))) return;Element.classNames(element).remove(className);return element},toggleClassName: function(element, className){if(!(element=$(element))) return;Element.classNames(element)[element.hasClassName(className)?'remove':'add'](className);return element},observe: function(){Event.observe.apply(Event, arguments);return $A(arguments).first()},stopObserving: function(){Event.stopObserving.apply(Event, arguments);return $A(arguments).first()},cleanWhitespace: function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue))
element.removeChild(node);node=nextNode};return element},empty: function(element){return $(element).innerHTML.match(/^\s*$/)},descendantOf: function(element, ancestor){element=$(element), ancestor=$(ancestor);while(element=element.parentNode)
if(element==ancestor) return true;return false},scrollTo: function(element){element=$(element);var pos=Position.cumulativeOffset(element);window.scrollTo(pos[0], pos[1]);return element},getStyle: function(element, style){element=$(element);if(['float','cssFloat'].include(style))
style=(typeof element.style.styleFloat!='undefined'?'styleFloat':'cssFloat');style=style.camelize();var value=element.style[style];if(!value){if(document.defaultView&&document.defaultView.getComputedStyle){var css=document.defaultView.getComputedStyle(element, null);value=css?css[style]:null}else if(element.currentStyle){value=element.currentStyle[style]}};if((value=='auto')&&['width','height'].include(style)&&(element.getStyle('display')!='none'))
value=element['offset'+style.capitalize()]+'px';if(window.opera&&['left', 'top', 'right', 'bottom'].include(style))
if(Element.getStyle(element, 'position')=='static') value='auto';if(style=='opacity'){if(value) return parseFloat(value);if(value=(element.getStyle('filter')||'').match(/alpha\(opacity=(.*)\)/))
if(value[1]) return parseFloat(value[1])/100;return 1.0};return value=='auto'?null:value},setStyle: function(element, style){element=$(element);for (var name in style){var value=style[name];if(name=='opacity'){if(value==1){value=(/Gecko/.test(navigator.userAgent) &&!/Konqueror|Safari|KHTML/.test(navigator.userAgent))?0.999999:1.0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'')}else if(value === ''){if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'')}else{if(value<0.00001) value=0;if(/MSIE/.test(navigator.userAgent)&&!window.opera)
element.style.filter=element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +'alpha(opacity='+value*100+')'}}else if(['float','cssFloat'].include(name)) name=(typeof element.style.styleFloat!='undefined')?'styleFloat':'cssFloat';element.style[name.camelize()]=value};return element},getDimensions: function(element){element=$(element);var display=$(element).getStyle('display');if(display!='none'&&display!=null) return {width: element.offsetWidth, height: element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return {width: originalWidth, height: originalHeight}},makePositioned: function(element){element=$(element);var pos=Element.getStyle(element, 'position');if(pos=='static'||!pos){element._madePositioned=true;element.style.position='relative';if(window.opera){element.style.top=0;element.style.left=0}};return element},undoPositioned: function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position =element.style.top =element.style.left =element.style.bottom =element.style.right=''};return element},makeClipping: function(element){element=$(element);if(element._overflow) return element;element._overflow=element.style.overflow||'auto';if((Element.getStyle(element, 'overflow')||'visible')!='hidden')
element.style.overflow='hidden';return element},undoClipping: function(element){element=$(element);if(!element._overflow) return element;element.style.overflow=element._overflow=='auto'?'':element._overflow;element._overflow=null;return element}};Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});Element._attributeTranslations={};Element._attributeTranslations.names={colspan: "colSpan",rowspan: "rowSpan",valign: "vAlign",datetime: "dateTime",accesskey: "accessKey",tabindex: "tabIndex",enctype: "encType",maxlength: "maxLength",readonly: "readOnly",longdesc: "longDesc"};Element._attributeTranslations.values={_getAttr: function(element, attribute){return element.getAttribute(attribute, 2)},_flag: function(element, attribute){return $(element).hasAttribute(attribute)?attribute:null},style: function(element){return element.style.cssText.toLowerCase()},title: function(element){var node=element.getAttributeNode('title');return node.specified?node.nodeValue:null}};Object.extend(Element._attributeTranslations.values, {href: Element._attributeTranslations.values._getAttr,src: Element._attributeTranslations.values._getAttr,disabled: Element._attributeTranslations.values._flag,checked: Element._attributeTranslations.values._flag,readonly: Element._attributeTranslations.values._flag,multiple: Element._attributeTranslations.values._flag});Element.Methods.Simulated={hasAttribute: function(element, attribute){var t=Element._attributeTranslations;attribute=t.names[attribute]||attribute;return $(element).getAttributeNode(attribute).specified}};if(document.all&&!window.opera){Element.Methods.update=function(element, html){element=$(element);html=typeof html=='undefined'?'':html.toString();var tagName=element.tagName.toUpperCase();if(['THEAD','TBODY','TR','TD'].include(tagName)){var div=document.createElement('div');switch (tagName){case 'THEAD':case 'TBODY':div.innerHTML='<table><tbody>'+html.stripScripts()+'</tbody></table>';depth=2;break;case 'TR':div.innerHTML='<table><tbody><tr>'+html.stripScripts()+'</tr></tbody></table>';depth=3;break;case 'TD':div.innerHTML='<table><tbody><tr><td>'+html.stripScripts()+'</td></tr></tbody></table>';depth=4};$A(element.childNodes).each(function(node){element.removeChild(node)});depth.times(function(){ div=div.firstChild });$A(div.childNodes).each(
function(node){ element.appendChild(node)})}else{element.innerHTML=html.stripScripts()};setTimeout(function(){html.evalScripts()}, 10);return element}};Object.extend(Element, Element.Methods);var _nativeExtensions=false;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag){var className='HTML'+tag+'Element';if(window[className]) return;var klass=window[className]={};klass.prototype=document.createElement(tag?tag.toLowerCase():'div').__proto__});Element.addMethods=function(methods){Object.extend(Element.Methods, methods||{});function copy(methods, destination, onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;var cache=Element.extend.cache;for (var property in methods){var value=methods[property];if(!onlyIfAbsent||!(property in destination))
destination[property]=cache.findOrStore(value)}};if(typeof HTMLElement!='undefined'){copy(Element.Methods, HTMLElement.prototype);copy(Element.Methods.Simulated, HTMLElement.prototype, true);copy(Form.Methods, HTMLFormElement.prototype);[HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass){copy(Form.Element.Methods, klass.prototype)});_nativeExtensions=true}};var Toggle=new Object();Toggle.display=Element.toggle;Abstract.Insertion=function(adjacency){this.adjacency=adjacency};Abstract.Insertion.prototype={initialize: function(element, content){this.element=$(element);this.content=content.stripScripts();if(this.adjacency&&this.element.insertAdjacentHTML){try{this.element.insertAdjacentHTML(this.adjacency, this.content)}catch(e){var tagName=this.element.tagName.toUpperCase();if(['TBODY', 'TR'].include(tagName)){this.insertContent(this.contentFromAnonymousTable())}else{throw e}}}else{this.range=this.element.ownerDocument.createRange();if(this.initializeRange) this.initializeRange();this.insertContent([this.range.createContextualFragment(this.content)])};setTimeout(function(){content.evalScripts()}, 10)},contentFromAnonymousTable: function(){var div=document.createElement('div');div.innerHTML='<table><tbody>'+this.content+'</tbody></table>';return $A(div.childNodes[0].childNodes[0].childNodes)}};var Insertion=new Object();Insertion.Before=Class.create();Insertion.Before.prototype=Object.extend(new Abstract.Insertion('beforeBegin'), {initializeRange: function(){this.range.setStartBefore(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment, this.element)}).bind(this))}});Insertion.Top=Class.create();Insertion.Top.prototype=Object.extend(new Abstract.Insertion('afterBegin'), {initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(true)},insertContent: function(fragments){fragments.reverse(false).each((function(fragment){this.element.insertBefore(fragment, this.element.firstChild)}).bind(this))}});Insertion.Bottom=Class.create();Insertion.Bottom.prototype=Object.extend(new Abstract.Insertion('beforeEnd'), {initializeRange: function(){this.range.selectNodeContents(this.element);this.range.collapse(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.appendChild(fragment)}).bind(this))}});Insertion.After=Class.create();Insertion.After.prototype=Object.extend(new Abstract.Insertion('afterEnd'), {initializeRange: function(){this.range.setStartAfter(this.element)},insertContent: function(fragments){fragments.each((function(fragment){this.element.parentNode.insertBefore(fragment,this.element.nextSibling)}).bind(this))}});Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize: function(element){this.element=$(element)},_each: function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0})._each(iterator)},set: function(className){this.element.className=className},add: function(classNameToAdd){if(this.include(classNameToAdd)) return;this.set($A(this).concat(classNameToAdd).join(' '))},remove: function(classNameToRemove){if(!this.include(classNameToRemove)) return;this.set($A(this).without(classNameToRemove).join(' '))},toString: function(){return $A(this).join(' ')}};Object.extend(Element.ClassNames.prototype, Enumerable);var Selector=Class.create();Selector.prototype={initialize: function(expression){this.params={classNames: []};this.expression=expression.toString().strip();this.parseExpression();this.compileMatcher()},parseExpression: function(){function abort(message){ throw 'Parse error in selector: '+message; };if(this.expression=='') abort('empty expression');var params=this.params, expr=this.expression, match, modifier, clause, rest;while(match=expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)){params.attributes=params.attributes||[];params.attributes.push({name: match[2], operator: match[3], value: match[4]||match[5]||''});expr=match[1]};if(expr=='*') return this.params.wildcard=true;while(match=expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)){modifier=match[1], clause=match[2], rest=match[3];switch (modifier){case '#': params.id=clause; break;case '.': params.classNames.push(clause); break;case '':case undefined: params.tagName=clause.toUpperCase(); break;default: abort(expr.inspect())};expr=rest};if(expr.length>0) abort(expr.inspect())},buildMatchExpression: function(){var params=this.params, conditions=[], clause;if(params.wildcard)
conditions.push('true');if(clause=params.id)
conditions.push('element.readAttribute("id")=='+clause.inspect());if(clause=params.tagName)
conditions.push('element.tagName.toUpperCase()=='+clause.inspect());if((clause=params.classNames).length>0)
for (var i=0, length=clause.length; i<length; i++)
conditions.push('element.hasClassName('+clause[i].inspect()+')');if(clause=params.attributes){clause.each(function(attribute){var value='element.readAttribute('+attribute.name.inspect()+')';var splitValueBy=function(delimiter){return value+'&&'+value+'.split('+delimiter.inspect()+')'};switch (attribute.operator){case '=': conditions.push(value+'=='+attribute.value.inspect()); break;case '~=': conditions.push(splitValueBy(' ')+'.include('+attribute.value.inspect()+')'); break;case '|=': conditions.push(
splitValueBy('-')+'.first().toUpperCase()=='+attribute.value.toUpperCase().inspect()); break;case '!=': conditions.push(value+'!='+attribute.value.inspect()); break;case '':case undefined: conditions.push('element.hasAttribute('+attribute.name.inspect()+')'); break;default: throw 'Unknown operator '+attribute.operator+' in selector'}})};return conditions.join('&&')},compileMatcher: function(){this.match=new Function('element', 'if(!element.tagName) return false; \
element=$(element); \
return '+this.buildMatchExpression())},findElements: function(scope){var element;if(element=$(this.params.id))
if(this.match(element))
if(!scope||Element.childOf(element, scope))
return [element];scope=(scope||document).getElementsByTagName(this.params.tagName||'*');var results=[];for (var i=0, length=scope.length; i<length; i++)
if(this.match(element=scope[i]))
results.push(Element.extend(element));return results},toString: function(){return this.expression}};Object.extend(Selector, {matchElements: function(elements, expression){var selector=new Selector(expression);return elements.select(selector.match.bind(selector)).map(Element.extend)},findElement: function(elements, expression, index){if(typeof expression=='number') index=expression, expression=false;return Selector.matchElements(elements, expression||'*')[index||0]},findChildElements: function(element, expressions){return expressions.map(function(expression){return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr){var selector=new Selector(expr);return results.inject([], function(elements, result){return elements.concat(selector.findElements(result||element))})})}).flatten()}});function $$(){return Selector.findChildElements(document, $A(arguments))};var Form={reset: function(form){$(form).reset();return form},serializeElements: function(elements, getHash){var data=elements.inject({}, function(result, element){if(!element.disabled&&element.name){var key=element.name, value=$(element).getValue();if(value!=undefined){if(result[key]){if(result[key].constructor!=Array) result[key]=[result[key]];result[key].push(value)}else result[key]=value}};return result});return getHash?data:Hash.toQueryString(data)}};Form.Methods={serialize: function(form, getHash){return Form.serializeElements(Form.getElements(form), getHash)},getElements: function(form){return $A($(form).getElementsByTagName('*')).inject([],function(elements, child){if(Form.Element.Serializers[child.tagName.toLowerCase()])
elements.push(Element.extend(child));return elements})},getInputs: function(form, typeName, name){form=$(form);var inputs=form.getElementsByTagName('input');if(!typeName&&!name) return $A(inputs).map(Element.extend);for (var i=0, matchingInputs=[], length=inputs.length; i<length; i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name))
continue;matchingInputs.push(Element.extend(input))};return matchingInputs},disable: function(form){form=$(form);form.getElements().each(function(element){element.blur();element.disabled='true'});return form},enable: function(form){form=$(form);form.getElements().each(function(element){element.disabled=''});return form},findFirstElement: function(form){return $(form).getElements().find(function(element){return element.type!='hidden'&&!element.disabled &&['input', 'select', 'textarea'].include(element.tagName.toLowerCase())})},focusFirstElement: function(form){form=$(form);form.findFirstElement().activate();return form}};Object.extend(Form, Form.Methods);
Form.Element={focus: function(element){$(element).focus();return element},select: function(element){$(element).select();return element}};Form.Element.Methods={serialize: function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Hash.toQueryString(pair)}};return ''},getValue: function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element)},clear: function(element){$(element).value='';return element},present: function(element){return $(element).value!=''},activate: function(element){element=$(element);element.focus();if(element.select&&( element.tagName.toLowerCase()!='input' ||!['button', 'reset', 'submit'].include(element.type)))
element.select();return element},disable: function(element){element=$(element);element.disabled=true;return element},enable: function(element){element=$(element);element.blur();element.disabled=false;return element}};Object.extend(Form.Element, Form.Element.Methods);var Field=Form.Element;var $F=Form.Element.getValue;Form.Element.Serializers={input: function(element){switch (element.type.toLowerCase()){case 'checkbox':case 'radio':return Form.Element.Serializers.inputSelector(element);default:return Form.Element.Serializers.textarea(element)}},inputSelector: function(element){return element.checked?element.value:null},textarea: function(element){return element.value},select: function(element){return this[element.type=='select-one' ?'selectOne':'selectMany'](element)},selectOne: function(element){var index=element.selectedIndex;return index >= 0?this.optionValue(element.options[index]):null},selectMany: function(element){var values, length=element.length;if(!length) return null;for (var i=0, values=[]; i<length; i++){var opt=element.options[i];if(opt.selected) values.push(this.optionValue(opt))};return values},optionValue: function(opt){return Element.extend(opt).hasAttribute('value')?opt.value:opt.text}};Abstract.TimedObserver=function(){};Abstract.TimedObserver.prototype={initialize: function(element, frequency, callback){this.frequency=frequency;this.element=$(element);this.callback=callback;this.lastValue=this.getValue();this.registerCallback()},registerCallback: function(){setInterval(this.onTimerEvent.bind(this), this.frequency*1000)},onTimerEvent: function(){var value=this.getValue();var changed=('string'==typeof this.lastValue&&'string'==typeof value? this.lastValue!=value:String(this.lastValue)!=String(value));if(changed){this.callback(this.element, value);this.lastValue=value}}};Form.Element.Observer=Class.create();Form.Element.Observer.prototype=Object.extend(new Abstract.TimedObserver(), {getValue: function(){return Form.Element.getValue(this.element)}});Form.Observer=Class.create();Form.Observer.prototype=Object.extend(new Abstract.TimedObserver(), {getValue: function(){return Form.serialize(this.element)}});Abstract.EventObserver=function(){};Abstract.EventObserver.prototype={initialize: function(element, callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=='form')
this.registerFormCallbacks();else
this.registerCallback(this.element)},onElementEvent: function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element, value);this.lastValue=value}},registerFormCallbacks: function(){Form.getElements(this.element).each(this.registerCallback.bind(this))},registerCallback: function(element){if(element.type){switch (element.type.toLowerCase()){case 'checkbox':case 'radio':Event.observe(element, 'click', this.onElementEvent.bind(this));break;default:Event.observe(element, 'change', this.onElementEvent.bind(this));break}}}};Form.Element.EventObserver=Class.create();Form.Element.EventObserver.prototype=Object.extend(new Abstract.EventObserver(), {getValue: function(){return Form.Element.getValue(this.element)}});Form.EventObserver=Class.create();Form.EventObserver.prototype=Object.extend(new Abstract.EventObserver(), {getValue: function(){return Form.serialize(this.element)}});if(!window.Event){var Event=new Object()};Object.extend(Event, {KEY_BACKSPACE: 8,KEY_TAB: 9,KEY_RETURN: 13,KEY_ESC: 27,KEY_LEFT: 37,KEY_UP: 38,KEY_RIGHT: 39,KEY_DOWN: 40,KEY_DELETE: 46,KEY_HOME: 36,KEY_END: 35,KEY_PAGEUP: 33,KEY_PAGEDOWN: 34,element: function(event){return event.target||event.srcElement},isLeftClick: function(event){return (((event.which)&&(event.which==1)) ||((event.button)&&(event.button==1)))},pointerX: function(event){return event.pageX||(event.clientX +(document.documentElement.scrollLeft||document.body.scrollLeft))},pointerY: function(event){return event.pageY||(event.clientY +(document.documentElement.scrollTop||document.body.scrollTop))},stop: function(event){if(event.preventDefault){event.preventDefault();event.stopPropagation()}else{event.returnValue=false;event.cancelBubble=true}},findElement: function(event, tagName){var element=Event.element(event);while(element.parentNode&&(!element.tagName ||(element.tagName.toUpperCase()!=tagName.toUpperCase())))
element=element.parentNode;return element},observers: false,_observeAndCache: function(element, name, observer, useCapture){if(!this.observers) this.observers=[];if(element.addEventListener){this.observers.push([element, name, observer, useCapture]);element.addEventListener(name, observer, useCapture)}else if(element.attachEvent){this.observers.push([element, name, observer, useCapture]);element.attachEvent('on'+name, observer)}},unloadCache: function(){if(!Event.observers) return;for (var i=0, length=Event.observers.length; i<length; i++){Event.stopObserving.apply(this, Event.observers[i]);Event.observers[i][0]=null};Event.observers=false},observe: function(element, name, observer, useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress' &&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)|| element.attachEvent))
name='keydown';Event._observeAndCache(element, name, observer, useCapture)},stopObserving: function(element, name, observer, useCapture){element=$(element);useCapture=useCapture||false;if(name=='keypress' &&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)|| element.detachEvent))
name='keydown';if(element.removeEventListener){element.removeEventListener(name, observer, useCapture)}else if(element.detachEvent){try{element.detachEvent('on'+name, observer)}catch(e){}}}});if(navigator.appVersion.match(/\bMSIE\b/))
Event.observe(window, 'unload', Event.unloadCache, false);var Position={includeScrollOffsets: false,prepare: function(){this.deltaX=window.pageXOffset|| document.documentElement.scrollLeft|| document.body.scrollLeft|| 0;this.deltaY=window.pageYOffset|| document.documentElement.scrollTop|| document.body.scrollTop|| 0},realOffset: function(element){var valueT=0, valueL=0;do {valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode}while(element);return [valueL, valueT]},cumulativeOffset: function(element){var valueT=0, valueL=0;while(element){valueL+=element.offsetLeft||0;valueT+=element.offsetTop||0;element=element.offsetParent};return [valueL, valueT]},positionedOffset: function(element){var valueT=0, valueL=0;do {valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(element.tagName=='BODY') break;var p=Element.getStyle(element, 'position');if(p=='relative'||p=='absolute') break}}while(element);return [valueL, valueT]},offsetParent: function(element){if(element.offsetParent) return element.offsetParent;if(element==document.body) return element;while((element=element.parentNode)&&element!=document.body)
if(Element.getStyle(element, 'position')!='static')
return element;return document.body},within: function(element, x, y){if(this.includeScrollOffsets)
return this.withinIncludingScrolloffsets(element, x, y);this.xcomp=x;this.ycomp=y;this.offset=this.cumulativeOffset(element);return (y >= this.offset[1] &&y<this.offset[1]+element.offsetHeight &&x >= this.offset[0] &&x<this.offset[0]+element.offsetWidth)},withinIncludingScrolloffsets: function(element, x, y){var offsetcache=this.realOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=this.cumulativeOffset(element);return (this.ycomp >= this.offset[1] &&this.ycomp<this.offset[1]+element.offsetHeight &&this.xcomp >= this.offset[0] &&this.xcomp<this.offset[0]+element.offsetWidth)},overlap: function(mode, element){if(!mode) return 0;if(mode=='vertical')
return ((this.offset[1]+element.offsetHeight)-this.ycomp) /element.offsetHeight;if(mode=='horizontal')
return ((this.offset[0]+element.offsetWidth)-this.xcomp) /element.offsetWidth},page: function(forElement){var valueT=0, valueL=0;var element=forElement;do {valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element,'position')=='absolute') break}while(element=element.offsetParent);element=forElement;do {if(!window.opera||element.tagName=='BODY'){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0}}while(element=element.parentNode);return [valueL, valueT]},clone: function(source, target){var options=Object.extend({setLeft: true,setTop: true,setWidth: true,setHeight: true,offsetTop: 0,offsetLeft: 0}, arguments[2]||{});source=$(source);var p=Position.page(source);target=$(target);var delta=[0, 0];var parent=null;if(Element.getStyle(target,'position')=='absolute'){parent=Position.offsetParent(target);delta=Position.page(parent)};if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop};if(options.setLeft) target.style.left=(p[0]-delta[0]+options.offsetLeft)+'px';if(options.setTop) target.style.top=(p[1]-delta[1]+options.offsetTop)+'px';if(options.setWidth) target.style.width=source.offsetWidth+'px';if(options.setHeight) target.style.height=source.offsetHeight+'px'},absolutize: function(element){element=$(element);if(element.style.position=='absolute') return;Position.prepare();var offsets=Position.positionedOffset(element);var top=offsets[1];var left=offsets[0];var width=element.clientWidth;var height=element.clientHeight;element._originalLeft=left-parseFloat(element.style.left||0);element._originalTop=top-parseFloat(element.style.top||0);element._originalWidth=element.style.width;element._originalHeight=element.style.height;element.style.position='absolute';element.style.top=top+'px';element.style.left=left+'px';element.style.width=width+'px';element.style.height=height+'px'},relativize: function(element){element=$(element);if(element.style.position=='relative') return;Position.prepare();element.style.position='relative';var top=parseFloat(element.style.top||0)-(element._originalTop||0);var left=parseFloat(element.style.left||0)-(element._originalLeft||0);element.style.top=top+'px';element.style.left=left+'px';element.style.height=element._originalHeight;element.style.width=element._originalWidth}};if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){Position.cumulativeOffset=function(element){var valueT=0, valueL=0;do {valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body)
if(Element.getStyle(element, 'position')=='absolute') break;element=element.offsetParent}while(element);return [valueL, valueT]}};Element.addMethods();
var Message={shadowBlur: null,textBox: null,initiated: false,miastoPrefix: null,initiate: function(){if(!this.initiated){if(undefined==this.shadow){this.shadow=$('shadowOver')};var bodyHeight=this.setShadowHeight();this.shadow.appendChild(this.shadowBlur);this.shadow.style.height=bodyHeight;this.initiated=true}},setShadowHeight: function(){var bodyHeight=$(document.forms[0]).getHeight();if(!this.shadowBlur){this.shadowBlur=document.createElement('div');this.shadowBlur.className='shadow';Element.setOpacity(this.shadowBlur, 0.6)};this.shadowBlur.style.height=bodyHeight+'px';return bodyHeight},send: function(action, trigger){if(typeof HTNG!=undefined){HTNG.showInLog('Message.send', trigger.id)};var action=action||'';var trigger=trigger||null;this.setShadowHeight();this.disableSubmit();if(undefined==trigger){new Effect.ScrollTo(document.forms[0],{duration:0.3})};if(undefined==this.shadow){this.shadow=$('shadowOver')};this.shadow.removeClassName('none');new Effect.Appear(Message.shadow,{duration:0.5});if(!this.textBox){this.textBox=document.createElement('div');this.textBox.className='textBox';this.shadow.appendChild(this.textBox)}else{this.textBox.removeClassName('red')};if(undefined!=trigger){this.textBox.style.top=Position.cumulativeOffset(trigger)[1]-Position.page(trigger)[1]+200+'px'};this.textBox.innerHTML='';var indicator=document.createElement('div');indicator.className='indicator center';var indiImg=document.createElement('img');indiImg.src="/image/getWeb?progressbar_microsoft.gif";indicator.appendChild(indiImg);var title=document.createElement('h3');title.appendChild(document.createTextNode('Trwa wysyłanie formularza'));this.textBox.appendChild(title);this.textBox.appendChild(document.createElement('br'));this.textBox.appendChild(indicator);this.textBox.appendChild(document.createElement('br'));var scope=Form.getElements(document.forms[0]);new Ajax.Request('/async?'+action, {parameters:Form.serializeElements(scope), onComplete: this.confirm.bind(this)})},confirm: function(request){this.textBox.innerHTML='';var title=document.createElement('h3'), resp=request.responseText;var text=document.createElement('div');var back=document.createElement('div');back.href=''; back.id='backgroundBackLink'; back.className='right hand';back.appendChild(document.createTextNode('wróć do czytania tekstu'));var titleHTML, success=true, autoClose=true;if(0==resp.indexOf('OK:')){autoClose=false;titleHTML=resp.substr(3);text.innerHTML=''}else{Element.addClassName(this.textBox, 'red');if(0==resp.indexOf('Wait:')){autoClose=false;resp=resp.substr(5)};titleHTML='Wystąpił błąd';success=false;text.innerHTML='';if(-1==resp.indexOf("\n")&&-1==resp.indexOf('<br')){titleHTML=resp}else{text.innerHTML=resp}};title.innerHTML=titleHTML;this.textBox.appendChild(title);this.textBox.appendChild(text);this.reloadCaptcha();if(success){this.textBox.appendChild(back);Events.add('backgroundBackLink','click',function(event){Effect.Fade(Message.shadow,{duration:0.5});Message.showMiasto(Message.miastoPrefix, '');Message.enableSubmit();setTimeout("Hint.closeHint();Message.shadow.addClassName(\'none\')", 800)})}else{if(autoClose){setTimeout('Effect.Fade(Message.shadow,{duration:0.5});Message.enableSubmit();setTimeout("Message.shadow.addClassName(\'none\')", 800);', 3000)}else{this.textBox.appendChild(back);Events.add('backgroundBackLink','click',function(event){Effect.Fade(Message.shadow,{duration:0.5});Message.enableSubmit();setTimeout("Message.shadow.addClassName(\'none\')", 800)})}}},disableSubmit: function(){var submit=Form.getInputs(document.forms[0], 'submit');for (var i=0, max=submit.length; i<max; ++i)submit[i].disabled='true'},enableSubmit: function(){var submit=Form.getInputs(document.forms[0], 'submit');for (var i=0, max=submit.length; i<max; ++i)submit[i].disabled=''},reloadCaptcha: function(){var captchaSourceVariation=Math.random(), captchaSource;var captchaImage=document.getElementsByClassName('captchaImage');var captchaInput=document.getElementsByClassName('captchaInput');for (var i=0, max=captchaImage.length; i<max; ++i){var img=$(captchaImage[i]);var ipt=$(captchaInput[i]);if(img){captchaSource=img.src.gsub(/(\?.*)?$/, '');img.src=captchaSource+'?'+captchaSourceVariation};if(ipt)ipt.value=''}},getLabels: function(){return ['Holder','Form','ShowLink','SubmitLink']},closeMiasto: function(){this.showMiasto()},showMiasto: function(prefix, postfixID){if(prefix==undefined&&this.miastoPrefix==undefined){return};if(prefix!=undefined){this.miastoPrefix=prefix};var labels=this.getLabels();for (var i=1; i <= 3; ++i){var cHolder=$(this.miastoPrefix+labels[0]+i); if(cHolder==undefined)return;var cForm=$(this.miastoPrefix+labels[1]+i); var cShowLink=$(this.miastoPrefix+labels[2]+i); var cSubmitLink=$(this.miastoPrefix+labels[3]+i); if(postfixID==i){cForm.addClassName('isNowInvisible');this.switchForm(cForm,cHolder,'mark');this.switchClassIf(true, cShowLink, cSubmitLink, 'none')}else if(!cForm.hasClassName('isNowInvisible')){this.switchForm(cForm,cHolder,'mark')this.switchClassIf(false, cShowLink, cSubmitLink, 'none')}}},submitMiasto: function(postfixID, action, trigger){var action=action||'';var trigger=trigger||null;var labels=this.getLabels();var cForm=$(this.miastoPrefix+labels[1]+postfixID);for (var i=0, max=cForm.childNodes.length; i<max; ++i){var cElem=$(cForm.childNodes[i]);if(cElem.value!=undefined&&cElem.hasClassName('required')&&''==cElem.value.strip())return alert('Wypełnij wszystkie pola oznaczone gwiazdką przed wysłaniem formularza.')};this.send(action, trigger)},switchForm: function(form,activeHolder,activeClass){var form=$(form);var invClass='isNowInvisible';var inv=form.hasClassName(invClass);var activeHolder=$(activeHolder);var activeClass=activeClass||'';var options={duration: 0.5};var mode={on: true, off: true};if(mode.on&&inv){Effect.Appear(form, options);form.removeClassName(invClass);if(activeHolder!=undefined)activeHolder.addClassName(activeClass);this.activateField(form, true)}else if(mode.off){options=Object.extend({to: 0.2}, options);Effect.Fade(form, options);form.addClassName(invClass);if(activeHolder!=undefined)activeHolder.removeClassName(activeClass);this.activateField(form, false, true)};Effect.toggle(form,'BLIND')},activateForm: function(form){var form=$(form);var formNames=[ 'coWorkingForm', 'contactForm' ];for (var i=0, max=formNames.length; i<max; ++i){var f=$(formNames[i]);this.activateField(f, form==f)}},activateField: function(container, enable, clean){var clean=clean||false;for (var j=0, cLen=container.childNodes.length; j<cLen; ++j){if(container.childNodes[j].nodeType==1){if(container.childNodes[j].tagName=='INPUT' ||container.childNodes[j].tagName=='TEXTAREA' ||container.childNodes[j].tagName=='SELECT'){container.childNodes[j].disabled=enable?'':'true';if(clean&&container.childNodes[j].type!='hidden')container.childNodes[j].value=''}elsethis.activateField(container.childNodes[j], enable)}}},switchClassIf: function(condition, trueElement, falseElement, className){var trueElement=$(trueElement), falseElement=$(falseElement);if(condition)trueElement.addClassName(className), falseElement.removeClassName(className);elsetrueElement.removeClassName(className), falseElement.addClassName(className)},appendChildEvents: function(ul){var ul=$(ul);for (var i=0, max=ul.childNodes.length; i<max; ++i)if('LI'==ul.childNodes[i].tagName){ul.childNodes[i].onmouseover=function(event){$(this).addClassName('mark')};ul.childNodes[i].onmouseout=function(event){$(this).removeClassName('mark')}}}}
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(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||'div';var parentElement=document.createElement(parentTag);try{ parentElement.innerHTML="<"+elementName+"></"+elementName+">"}catch(e){};var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName))
element=element.getElementsByTagName(elementName)[0];if(!element) element=document.createElement(elementName);if(!element) return;if(arguments[1])
if(this._isStringOrNumber(arguments[1]) ||(arguments[1] instanceof Array)){this._children(element, arguments[1])}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{ parentElement.innerHTML="<" +elementName+" " +attrs+"></"+elementName+">"}catch(e){};element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1])
element[attr=='class'?'className':attr]=arguments[1][attr]};if(element.tagName.toUpperCase()!=elementName)
element=parentElement.getElementsByTagName(elementName)[0]}};if(arguments[2])
this._children(element, arguments[2]);return element},_text: function(text){return document.createTextNode(text)},ATTR_MAP: {'className': 'class','htmlFor': 'for'},_attributes: function(attributes){var attrs=[];for(attribute in attributes)
attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute) +'="'+attributes[attribute].toString().escapeHTML()+'"');return attrs.join(" ")},_children: function(element, children){if(typeof children=='object'){ children.flatten().each( function(e){if(typeof e=='object')
element.appendChild(e);else if(Builder._isStringOrNumber(e))
element.appendChild(Builder._text(e))})}else if(Builder._isStringOrNumber(children))
element.appendChild(Builder._text(children))},_isStringOrNumber: function(param){return(typeof param=='string'||typeof param=='number')},build: function(html){var element=this.node('div');$(element).update(html.strip());return element.down()},dump: function(scope){if(typeof scope!='object'&&typeof scope!='function') scope=window; var tags=("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+/);tags.each( function(tag){scope[tag]=function(){return Builder.node.apply(Builder, [tag].concat($A(arguments)))}})}}
String.prototype.parseColor=function(){var color='#';if(this.slice(0,4)=='rgb('){var cols=this.slice(4,this.length-1).split(',');var i=0; do { color+=parseInt(cols[i]).toColorPart()}while(++i<3)}else{if(this.slice(0,1)=='#'){if(this.length==4) for(var i=1;i<4;i++) color+=(this.charAt(i)+this.charAt(i)).toLowerCase();if(this.length==7) color=this.toLowerCase()}};return(color.length==7?color:(arguments[0]||this))};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect( function(node){return (node.nodeType==3?node.nodeValue :(node.hasChildNodes()?Element.collectTextNodes(node):''))}).flatten().join('')};Element.collectTextNodesIgnoreClass=function(element, className){return $A($(element).childNodes).collect( function(node){return (node.nodeType==3?node.nodeValue :((node.hasChildNodes()&&!Element.hasClassName(node,className)) ?Element.collectTextNodesIgnoreClass(node, className):''))}).flatten().join('')};Element.setContentZoom=function(element, percent){element=$(element);element.setStyle({fontSize: (percent/100)+'em'});if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);return element};Element.getOpacity=function(element){return $(element).getStyle('opacity')};Element.setOpacity=function(element, value){return $(element).setStyle({opacity:value})};Element.getInlineOpacity=function(element){return $(element).style.opacity||''};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(' ');element.appendChild(n);element.removeChild(n)}catch(e){ }};Array.prototype.call=function(){var args=arguments;this.each(function(f){ f.apply(this, args)})};var Effect={_elementDoesNotExistError: {name: 'ElementDoesNotExistError',message: 'The specified DOM element does not exist, but is required for this effect to operate'},tagifyText: function(element){if(typeof Builder=='undefined')
throw("Effect.tagifyText requires including script.aculo.us ajax_builder.js library");var tagifyStyle='position:relative';if(/MSIE/.test(navigator.userAgent)&&!window.opera) tagifyStyle+=';zoom:1';element=$(element);$A(element.childNodes).each( function(child){if(child.nodeType==3){child.nodeValue.toArray().each( function(character){element.insertBefore(
Builder.node('span',{style: tagifyStyle},character==' '?String.fromCharCode(160):character),child)});Element.remove(child)}})},multiple: function(element, effect){var elements;if(((typeof element=='object') ||(typeof element=='function')) &&(element.length))
elements=element;else
elements=$(element).childNodes;var options=Object.extend({speed: 0.1,delay: 0.0}, arguments[2]||{});var masterDelay=options.delay;$A(elements).each( function(element, index){new effect(element, Object.extend(options, { delay: index*options.speed+masterDelay }))})},PAIRS: {'slide': ['SlideDown','SlideUp'],'blind': ['BlindDown','BlindUp'],'appear': ['Appear','Fade']},toggle: function(element, effect){element=$(element);effect=(effect||'appear').toLowerCase();var options=Object.extend({queue: { position:'end', scope:(element.id||'global'), limit: 1 }}, arguments[2]||{});Effect[element.visible() ?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element, options)}};var Effect2=Effect; Effect.Transitions={linear: Prototype.K,sinoidal: function(pos){return (-Math.cos(pos*Math.PI)/2)+0.5},reverse: function(pos){return 1-pos},flicker: function(pos){return ((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4},wobble: function(pos){return (-Math.cos(pos*Math.PI*(9*pos))/2)+0.5},pulse: function(pos, pulses){pulses=pulses||5;return (
Math.round((pos % (1/pulses))*pulses)==0 ?((pos*pulses*2)-Math.floor(pos*pulses*2)) :1-((pos*pulses*2)-Math.floor(pos*pulses*2)))},none: function(pos){return 0},full: function(pos){return 1}};Effect.ScopedQueue=Class.create();Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {initialize: function(){this.effects=[];this.interval=null},_each: function(iterator){this.effects._each(iterator)},add: function(effect){var timestamp=new Date().getTime();var position=(typeof effect.options.queue=='string') ?effect.options.queue:effect.options.queue.position;switch(position){case 'front':this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn});break;case 'with-last':timestamp=this.effects.pluck('startOn').max()||timestamp;break;case 'end':timestamp=this.effects.pluck('finishOn').max()||timestamp;break};effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit))
this.effects.push(effect);if(!this.interval)
this.interval=setInterval(this.loop.bind(this), 15)},remove: function(effect){this.effects=this.effects.reject(function(e){ return e==effect });if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop: function(){var timePos=new Date().getTime();for(var i=0, len=this.effects.length;i<len;i++)
if(this.effects[i]) this.effects[i].loop(timePos)}});Effect.Queues={instances: $H(),get: function(queueName){if(typeof queueName!='string') return queueName;if(!this.instances[queueName])
this.instances[queueName]=new Effect.ScopedQueue();return this.instances[queueName]}};Effect.Queue=Effect.Queues.get('global');Effect.DefaultOptions={transition: Effect.Transitions.sinoidal,duration: 1.0, fps: 60.0, sync: false, from: 0.0,to: 1.0,delay: 0.0,queue: 'parallel'};Effect.Base=function(){};Effect.Base.prototype={position: null,start: function(options){this.options=Object.extend(Object.extend({},Effect.DefaultOptions), options||{});this.currentFrame=0;this.state='idle';this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.event('beforeStart');if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string' ?'global':this.options.queue.scope).add(this)},loop: function(timePos){if(timePos >= this.startOn){if(timePos >= this.finishOn){this.render(1.0);this.cancel();this.event('beforeFinish');if(this.finish) this.finish();this.event('afterFinish');return};var pos=(timePos-this.startOn)/(this.finishOn-this.startOn);var frame=Math.round(pos*this.options.fps*this.options.duration);if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame}}},render: function(pos){if(this.state=='idle'){this.state='running';this.event('beforeSetup');if(this.setup) this.setup();this.event('afterSetup')};if(this.state=='running'){if(this.options.transition) pos=this.options.transition(pos);pos *= (this.options.to-this.options.from);pos+=this.options.from;this.position=pos;this.event('beforeUpdate');if(this.update) this.update(pos);this.event('afterUpdate')}},cancel: function(){if(!this.options.sync)
Effect.Queues.get(typeof this.options.queue=='string' ?'global':this.options.queue.scope).remove(this);this.state='finished'},event: function(eventName){if(this.options[eventName+'Internal']) this.options[eventName+'Internal'](this);if(this.options[eventName]) this.options[eventName](this)},inspect: function(){var data=$H();for(property in this)
if(typeof this[property]!='function') data[property]=this[property];return '#<Effect:'+data.inspect()+',options:'+$H(this.options).inspect()+'>'}};Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {initialize: function(effects){this.effects=effects||[];this.start(arguments[1])},update: function(position){this.effects.invoke('render', position)},finish: function(position){this.effects.each( function(effect){effect.render(1.0);effect.cancel();effect.event('beforeFinish');if(effect.finish) effect.finish(position);effect.event('afterFinish')})}});Effect.Event=Class.create();Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), {initialize: function(){var options=Object.extend({duration: 0}, arguments[0]||{});this.start(options)},update: Prototype.emptyFunction});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1});var options=Object.extend({from: this.element.getOpacity()||0.0,to: 1.0}, arguments[1]||{});this.start(options)},update: function(position){this.element.setOpacity(position)}});Effect.Move=Class.create();Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), {initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({x: 0,y: 0,mode: 'relative'}, arguments[1]||{});this.start(options)},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(position){this.element.setStyle({left: Math.round(this.options.x*position+this.originalLeft)+'px',top: Math.round(this.options.y*position+this.originalTop)+'px'})}});Effect.MoveBy=function(element, toTop, toLeft){return new Effect.Move(element,Object.extend({ x: toLeft, y: toTop }, arguments[3]||{}))};Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {initialize: function(element, percent){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({scaleX: true,scaleY: true,scaleContent: true,scaleFromCenter: false,scaleMode: 'box', // 'box' or 'contents' or {};with provided values
scaleFrom: 100.0,scaleTo: percent}, arguments[2]||{});this.start(options)},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 fontSize=this.element.getStyle('font-size')||'100%';['em','px','%','pt'].each( function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType}}.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(position){var currentScale=(this.options.scaleFrom/100.0)+(this.factor*position);if(this.options.scaleContent&&this.fontSize)
this.element.setStyle({fontSize: this.fontSize*currentScale+this.fontSizeType });this.setDimensions(this.dims[0]*currentScale, this.dims[1]*currentScale)},finish: function(position){if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle)},setDimensions: function(height, width){var d={};if(this.options.scaleX) d.width=Math.round(width)+'px';if(this.options.scaleY) d.height=Math.round(height)+'px';if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=='absolute'){if(this.options.scaleY) d.top=this.originalTop-topd+'px';if(this.options.scaleX) d.left=this.originalLeft-leftd+'px'}else{if(this.options.scaleY) d.top=-topd+'px';if(this.options.scaleX) d.left=-leftd+'px'}};this.element.setStyle(d)}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({ startcolor: '#ffff99', keepBackgroundImage: true }, arguments[1]||{});this.start(options)},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(position){this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this))})},finish: function(){this.element.setStyle(Object.extend(this.oldStyle, {backgroundColor: this.options.restorecolor}))}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {initialize: function(element){this.element=$(element);this.start(arguments[1]||{})},setup: function(){Position.prepare();var offsets=Position.cumulativeOffset(this.element);if(this.options.offset) offsets[1]+=this.options.offset;var max=window.innerHeight ?window.height-window.innerHeight :document.body.scrollHeight -
(document.documentElement.clientHeight ?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(offsets[1]>max?max:offsets[1])-this.scrollStart},update: function(position){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(position*this.delta))}});Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from: element.getOpacity(),to: 0.0,afterFinishInternal: function(effect){if(effect.options.to!=0) return;effect.element.hide().setStyle({opacity: oldOpacity})}}, arguments[1]||{});return new Effect.Opacity(element,options)};Effect.Appear=function(element){element=$(element);var options=Object.extend({from: (element.getStyle('display')=='none'?0.0:element.getOpacity()||0.0),to: 1.0,afterFinishInternal: function(effect){effect.element.forceRerendering()},beforeSetup: function(effect){effect.element.setOpacity(effect.options.from).show()}}, arguments[1]||{});if(options.from>0.99) return;return new Effect.Opacity(element,options)};Effect.Puff=function(element){element=$(element);var oldStyle={opacity: element.getInlineOpacity(),position: element.getStyle('position'),top: element.style.top,left: element.style.left,width: element.style.width,height: element.style.height};return new Effect.Parallel([ new Effect.Scale(element, 200,{ sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),new Effect.Opacity(element, { sync: true, to: 0.0 }) ],Object.extend({ duration: 1.0,beforeSetupInternal: function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal: function(effect){effect.effects[0].element.hide().setStyle(oldStyle); }}, arguments[1]||{}))};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element, 0,Object.extend({ scaleContent: false,scaleX: false,restoreAfterFinish: true,afterFinishInternal: function(effect){effect.element.hide().undoClipping()}}, arguments[1]||{}))};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element, 100, Object.extend({scaleContent: false,scaleX: false,scaleFrom: 0,scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect){effect.element.makeClipping().setStyle({height: '0px'}).show()},afterFinishInternal: function(effect){effect.element.undoClipping()}}, arguments[1]||{}))};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element, Object.extend({duration: 0.4,from: 0,transition: Effect.Transitions.flicker,afterFinishInternal: function(effect){new Effect.Scale(effect.element, 1, {duration: 0.3, scaleFromCenter: true,scaleX: false, scaleContent: false, restoreAfterFinish: true,beforeSetup: function(effect){effect.element.makePositioned().makeClipping()},afterFinishInternal: function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity})}})}}, arguments[1]||{}))};Effect.DropOut=function(element){element=$(element);var oldStyle={top: element.getStyle('top'),left: element.getStyle('left'),opacity: element.getInlineOpacity()};return new Effect.Parallel([ new Effect.Move(element, {x: 0, y: 100, sync: true }),new Effect.Opacity(element, { sync: true, to: 0.0 }) ],Object.extend({ duration: 0.5,beforeSetup: function(effect){effect.effects[0].element.makePositioned()},afterFinishInternal: function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle)}}, arguments[1]||{}))};Effect.Shake=function(element){element=$(element);var oldStyle={top: element.getStyle('top'),left: element.getStyle('left')};return new Effect.Move(element,{ x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect){new Effect.Move(effect.element,{ x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect){new Effect.Move(effect.element,{ x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect){new Effect.Move(effect.element,{ x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect){new Effect.Move(effect.element,{ x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect){new Effect.Move(effect.element,{ x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect){effect.element.undoPositioned().setStyle(oldStyle)}})}})}})}})}})}})};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');var elementDimensions=element.getDimensions();return new Effect.Scale(element, 100, Object.extend({scaleContent: false,scaleX: false,scaleFrom: window.opera?0:1,scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},restoreAfterFinish: true,afterSetup: function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera) effect.element.setStyle({top: ''});effect.element.makeClipping().setStyle({height: '0px'}).show()},afterUpdateInternal: function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px' })},afterFinishInternal: function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }}, arguments[1]||{}))};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle('bottom');return new Effect.Scale(element, window.opera?0:1,Object.extend({ scaleContent: false,scaleX: false,scaleMode: 'box',scaleFrom: 100,restoreAfterFinish: true,beforeStartInternal: function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera) effect.element.setStyle({top: ''});effect.element.makeClipping().show()},afterUpdateInternal: function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+'px' })},afterFinishInternal: function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom});effect.element.down().undoPositioned()}}, arguments[1]||{}))};Effect.Squish=function(element){return new Effect.Scale(element, window.opera?1:0, {restoreAfterFinish: true,beforeSetup: function(effect){effect.element.makeClipping()},afterFinishInternal: function(effect){effect.element.hide().undoClipping()}})};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.full}, arguments[1]||{});var oldStyle={top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX, initialMoveY;var moveX, moveY;switch (options.direction){case 'top-left':initialMoveX=initialMoveY=moveX=moveY=0;break;case 'top-right':initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case 'bottom-left':initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case 'bottom-right':initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case 'center':initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break};return new Effect.Move(element, {x: initialMoveX,y: initialMoveY,duration: 0.01,beforeSetup: function(effect){effect.element.hide().makeClipping().makePositioned()},afterFinishInternal: function(effect){new Effect.Parallel([ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),new Effect.Scale(effect.element, 100, {scaleMode: { originalHeight: dims.height, originalWidth: dims.width },sync: true, scaleFrom: window.opera?1:0, transition: options.scaleTransition, restoreAfterFinish: true})], Object.extend({beforeSetup: function(effect){effect.effects[0].element.setStyle({height: '0px'}).show()},afterFinishInternal: function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle)}}, options))}})};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction: 'center',moveTransition: Effect.Transitions.sinoidal,scaleTransition: Effect.Transitions.sinoidal,opacityTransition: Effect.Transitions.none}, arguments[1]||{});var oldStyle={top: element.style.top,left: element.style.left,height: element.style.height,width: element.style.width,opacity: element.getInlineOpacity()};var dims=element.getDimensions();var moveX, moveY;switch (options.direction){case 'top-left':moveX=moveY=0;break;case 'top-right':moveX=dims.width;moveY=0;break;case 'bottom-left':moveX=0;moveY=dims.height;break;case 'bottom-right':moveX=dims.width;moveY=dims.height;break;case 'center':moveX=dims.width/2;moveY=dims.height/2;break};return new Effect.Parallel([ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),new Effect.Scale(element, window.opera?1:0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })], Object.extend({beforeStartInternal: function(effect){effect.effects[0].element.makePositioned().makeClipping()},afterFinishInternal: function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }}, options))};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{};var oldOpacity=element.getInlineOpacity();var transition=options.transition||Effect.Transitions.sinoidal;var reverser=function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses))};reverser.bind(transition);return new Effect.Opacity(element,Object.extend(Object.extend({ duration: 2.0, from: 0,afterFinishInternal: function(effect){ effect.element.setStyle({opacity: oldOpacity}); }}, options), {transition: reverser}))};Effect.Fold=function(element){element=$(element);var oldStyle={top: element.style.top,left: element.style.left,width: element.style.width,height: element.style.height };element.makeClipping();return new Effect.Scale(element, 5, Object.extend({scaleContent: false,scaleX: false,afterFinishInternal: function(effect){new Effect.Scale(element, 1, {scaleContent: false,scaleY: false,afterFinishInternal: function(effect){effect.element.hide().undoClipping().setStyle(oldStyle)}})}}, arguments[1]||{}))};Effect.Morph=Class.create();Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), {initialize: function(element){this.element=$(element);if(!this.element) throw(Effect._elementDoesNotExistError);var options=Object.extend({style: {}}, arguments[1]||{});if(typeof options.style=='string'){if(options.style.indexOf(':')==-1){var cssText='', selector='.'+options.style;$A(document.styleSheets).reverse().each(function(styleSheet){if(styleSheet.cssRules) cssRules=styleSheet.cssRules;else if(styleSheet.rules) cssRules=styleSheet.rules;$A(cssRules).reverse().each(function(rule){if(selector==rule.selectorText){cssText=rule.style.cssText;throw $break}});if(cssText) throw $break});this.style=cssText.parseStyle();options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){if(transform.style!='opacity')
effect.element.style[transform.style.camelize()]=''})}}else this.style=options.style.parseStyle()}else this.style=$H(options.style)
this.start(options)},setup: function(){function parseColor(color){if(!color||['rgba(0, 0, 0, 0)','transparent'].include(color)) color='#ffffff';color=color.parseColor();return $R(0,2).map(function(i){return parseInt( color.slice(i*2+1,i*2+3), 16 )})};this.transforms=this.style.map(function(pair){var property=pair[0].underscore().dasherize(), value=pair[1], unit=null;if(value.parseColor('#zzzzzz')!='#zzzzzz'){value=value.parseColor();unit='color'}else if(property=='opacity'){value=parseFloat(value);if(/MSIE/.test(navigator.userAgent)&&!window.opera&&(!this.element.currentStyle.hasLayout))
this.element.setStyle({zoom: 1})}else if(Element.CSS_LENGTH.test(value))
var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/),value=parseFloat(components[1]), unit=(components.length==3)?components[2]:null;var originalValue=this.element.getStyle(property);return $H({style: property,originalValue: unit=='color'?parseColor(originalValue):parseFloat(originalValue||0),targetValue: unit=='color'?parseColor(value):value,unit: unit})}.bind(this)).reject(function(transform){return (
(transform.originalValue==transform.targetValue) ||(
transform.unit!='color' &&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))})},update: function(position){var style=$H(), value=null;this.transforms.each(function(transform){value=transform.unit=='color' ?$R(0,2).inject('#',function(m,v,i){return m+(Math.round(transform.originalValue[i]+
(transform.targetValue[i]-transform.originalValue[i])*position)).toColorPart()}) :transform.originalValue+Math.round(
((transform.targetValue-transform.originalValue)*position)*1000)/1000+transform.unit;style[transform.style]=value});this.element.setStyle(style)}});Effect.Transform=Class.create();Object.extend(Effect.Transform.prototype, {initialize: function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks)},addTracks: function(tracks){tracks.each(function(track){var data=$H(track).values().first();this.tracks.push($H({ids: $H(track).keys().first(),effect: Effect.Morph,options: { style: data }}))}.bind(this));return this},play: function(){return new Effect.Parallel(
this.tracks.map(function(track){var elements=[$(track.ids)||$$(track.ids)].flatten();return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options))})}).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.prototype.parseStyle=function(){var element=Element.extend(document.createElement('div'));element.innerHTML='<div style="'+this+'"></div>';var style=element.down().style, styleRules=$H();Element.CSS_PROPERTIES.each(function(property){if(style[property]) styleRules[property]=style[property]});if(/MSIE/.test(navigator.userAgent)&&!window.opera&&this.indexOf('opacity')>-1){styleRules.opacity=this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]};return styleRules};Element.morph=function(element, style){new Effect.Morph(element, Object.extend({ style: style }, arguments[2]||{}));return element};['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom','collectTextNodes','collectTextNodesIgnoreClass','morph'].each(
function(f){ Element.Methods[f]=Element[f]; });Element.Methods.visualEffect=function(element, effect, options){s=effect.gsub(/_/, '-').camelize();effect_class=s.charAt(0).toUpperCase()+s.substring(1);new Effect[effect_class](element, options);return $(element)};Element.addMethods();
if(typeof Effect=='undefined')
throw("ajax_controls.js requires including script.aculo.us ajax_effects.js library");var Autocompleter={};Autocompleter.Base=function(){};Autocompleter.Base.prototype={baseInitialize: function(element, update, options){this.element=$(element);this.update=$(update);this.hasFocus=false;this.changed=false;this.active=false;this.index=0;this.entryCount=0;if(this.setOptions)
this.setOptions(options);else
this.options=options||{};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(element, update){if(!update.style.position||update.style.position=='absolute'){update.style.position='absolute';Position.clone(element, update, {setHeight: false,offsetTop: element.offsetHeight})};Effect.Appear(update,{duration:0.15})};this.options.onHide=this.options.onHide ||function(element, update){ new Effect.Fade(update,{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, {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(event){if(this.active)
switch(event.keyCode){case Event.KEY_TAB:case Event.KEY_RETURN:this.selectEntry();Event.stop(event);case Event.KEY_ESC:this.hide();this.active=false;Event.stop(event);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(event);return;case Event.KEY_DOWN:this.markNext();this.render();if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event);return}else if(event.keyCode==Event.KEY_TAB||event.keyCode==Event.KEY_RETURN ||(navigator.appVersion.indexOf('AppleWebKit')>0&&event.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(event){var element=Event.findElement(event, 'LI');if(this.index!=element.autocompleteIndex){this.index=element.autocompleteIndex;this.render()};Event.stop(event)},onClick: function(event){var element=Event.findElement(event, 'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide()},onBlur: function(event){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(index){return this.update.firstChild.childNodes[index]},getCurrentEntry: function(){return this.getEntry(this.index)},selectEntry: function(){this.active=false;this.updateElement(this.getCurrentEntry())},updateElement: function(selectedElement){if(this.options.updateElement){this.options.updateElement(selectedElement);return};var value='';if(this.options.select){var nodes=document.getElementsByClassName(this.options.select, selectedElement)||[];if(nodes.length>0) value=Element.collectTextNodes(nodes[0], this.options.select)}else
value=Element.collectTextNodesIgnoreClass(selectedElement, 'informal');var lastTokenPos=this.findLastToken();if(lastTokenPos!=-1){var newValue=this.element.value.substr(0, lastTokenPos+1);var whitespace=this.element.value.substr(lastTokenPos+1).match(/^\s+/);if(whitespace)
newValue+=whitespace[0];this.element.value=newValue+value}else{this.element.value=value};this.element.focus();if(this.options.afterUpdateElement)
this.options.afterUpdateElement(this.element, selectedElement)},updateChoices: function(choices){if(!this.changed&&this.hasFocus){this.update.innerHTML=choices;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 entry=this.getEntry(i);entry.autocompleteIndex=i;this.addObservers(entry)}}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(element){Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));Event.observe(element, "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 tokenPos=this.findLastToken();if(tokenPos!=-1)
var ret=this.element.value.substr(tokenPos+1).replace(/^\s+/,'').replace(/\s+$/,'');else
var ret=this.element.value;return /\n/.test(ret)?'':ret},findLastToken: function(){var lastTokenPos=-1;for (var i=0; i<this.options.tokens.length; i++){var thisTokenPos=this.element.value.lastIndexOf(this.options.tokens[i]);if(thisTokenPos>lastTokenPos)
lastTokenPos=thisTokenPos};return lastTokenPos}};Ajax.Autocompleter=Class.create();Object.extend(Object.extend(Ajax.Autocompleter.prototype, Autocompleter.Base.prototype), {initialize: function(element, update, url, options){this.baseInitialize(element, update, options);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(request){this.updateChoices(request.responseText)}});Autocompleter.Local=Class.create();Autocompleter.Local.prototype=Object.extend(new Autocompleter.Base(), {initialize: function(element, update, array, options){this.baseInitialize(element, update, options);this.options.array=array},getUpdatedChoices: function(){this.updateChoices(this.options.selector(this))},setOptions: function(options){this.options=Object.extend({choices: 10,partialSearch: true,partialChars: 2,ignoreCase: true,fullSearch: false,selector: function(instance){var ret=[]; var partial=[]; var entry=instance.getToken();var count=0;for (var i=0; i<instance.options.array.length &&ret.length<instance.options.choices ; i++){var elem=instance.options.array[i];var foundPos=instance.options.ignoreCase ?elem.toLowerCase().indexOf(entry.toLowerCase()) :elem.indexOf(entry);while(foundPos!=-1){if(foundPos==0&&elem.length!=entry.length){ret.push("<li><strong>"+elem.substr(0, entry.length)+"</strong>" +elem.substr(entry.length)+"</li>");break}else if(entry.length >= instance.options.partialChars &&instance.options.partialSearch&&foundPos!=-1){if(instance.options.fullSearch||/\s/.test(elem.substr(foundPos-1,1))){partial.push("<li>"+elem.substr(0, foundPos)+"<strong>" +elem.substr(foundPos, entry.length)+"</strong>"+elem.substr(
foundPos+entry.length)+"</li>");break}};foundPos=instance.options.ignoreCase ?elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos+1) :elem.indexOf(entry, foundPos+1)}};if(partial.length)
ret=ret.concat(partial.slice(0, instance.options.choices-ret.length))
return "<ul>"+ret.join('')+"</ul>"}}, options||{})}});Field.scrollFreeActivate=function(field){setTimeout(function(){Field.activate(field)}, 1)};Ajax.InPlaceEditor=Class.create();Ajax.InPlaceEditor.defaultHighlightColor="#FFFF99";Ajax.InPlaceEditor.prototype={initialize: function(element, url, options){this.url=url;this.element=$(element);this.options=Object.extend({paramName: "value",breakAfter: false, alterBR2NL: false, // tells if <br> should be changed to 'new line' character
okButton: true,okText: "ok",cancelLink: true,cancelText: "cancel",savingText: "Saving...",clickToEditText: "Click to edit",okText: "ok",rows: 1,onComplete: function(transport, element){new Effect.Highlight(element, {startcolor: this.options.highlightcolor})},onFailure: function(transport){alert("Error communicating with the server: "+transport.responseText.stripTags())},callback: function(form){return Form.serialize(form)},handleLineBreaks: false,loadingText: 'Loading...',savingClassName: 'inplaceeditor-saving',loadingClassName: 'inplaceeditor-loading',formClassName: 'inplaceeditor-form',highlightcolor: Ajax.InPlaceEditor.defaultHighlightColor,highlightendcolor: "#FFFFFF",externalControl: null,submitOnBlur: false,ajaxOptions: {},evalScripts: false}, options||{});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);if(!this.options.loadTextURL) 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.breakAfter){var br=document.createElement("br");this.form.appendChild(br)};if(this.options.okButton){okButton=document.createElement("input");okButton.type="submit";okButton.value=this.options.okText;okButton.className='editor_ok_button';this.form.appendChild(okButton)};if(this.options.cancelLink){cancelLink=document.createElement("input");cancelLink.type="button";cancelLink.value=this.options.cancelText;cancelLink.onclick=this.onclickCancel.bind(this);cancelLink.className='editor_cancel';this.form.appendChild(cancelLink)}},hasHTMLLineBreaks: function(string){if(!this.options.handleLineBreaks) return false;return string.match(/<br/i)||string.match(/<p>/i)},convertHTMLLineBreaks: function(string){return string.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n").replace(/<\/p>/gi, "\n").replace(/<p>/gi, "")},createEditField: function(){var text;if(this.options.loadTextURL){text=this.options.loadingText}else{text=this.getText()};var obj=this;if(this.options.rows==1&&!this.hasHTMLLineBreaks(text)){this.options.textarea=false;var textField=document.createElement("input");textField.obj=this;textField.type="text";textField.name=this.options.paramName;textField.value=text;textField.style.backgroundColor=this.options.highlightcolor;textField.className='editor_field';var size=this.options.size||this.options.cols||0;if(size!=0) textField.size=size;if(this.options.submitOnBlur)
textField.onblur=this.onSubmit.bind(this);this.editField=textField}else{this.options.textarea=true;var textArea=document.createElement("textarea");textArea.obj=this;textArea.name=this.options.paramName;if(this.options.alterBR2NL)
textArea.value=this.convertHTMLLineBreaks(text);else
textArea.value=text;textArea.rows=this.options.rows;textArea.cols=this.options.cols||40;textArea.className='editor_field';if(this.options.submitOnBlur)
textArea.onblur=this.onSubmit.bind(this);this.editField=textArea};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(transport){Element.removeClassName(this.form, this.options.loadingClassName);this.editField.disabled=false;this.editField.value=transport.responseText.stripTags();Field.scrollFreeActivate(this.editField)},onclickCancel: function(){this.onComplete();this.leaveEditMode();return false},onFailure: function(transport){this.options.onFailure(transport);if(this.oldInnerHTML){this.element.innerHTML=this.oldInnerHTML;this.oldInnerHTML=null};return false},onSubmit: function(){var form=this.form;var value=this.editField.value;this.onLoading();if(this.options.evalScripts){new Ajax.Request(
this.url, Object.extend({parameters: this.options.callback(form, value),onComplete: this.onComplete.bind(this),onFailure: this.onFailure.bind(this),asynchronous:true,evalScripts:true}, this.options.ajaxOptions))}else{new Ajax.Updater({ success: this.element,failure: null },this.url, Object.extend({parameters: this.options.callback(form, value),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(transport){this.leaveEditMode();this.options.onComplete.bind(this)(transport, 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)}}};Ajax.InPlaceCollectionEditor=Class.create();Object.extend(Ajax.InPlaceCollectionEditor.prototype, Ajax.InPlaceEditor.prototype);Object.extend(Ajax.InPlaceCollectionEditor.prototype, {createEditField: function(){if(!this.cached_selectTag){var selectTag=document.createElement("select");selectTag.className='select_collection';var collection=this.options.collection||[];var optionTag;collection.each(function(e,i){optionTag=document.createElement("option");optionTag.value=(e instanceof Array)?e[0]:e;if((typeof this.options.value=='undefined') &&((e instanceof Array)?this.element.innerHTML==e[1]:e==optionTag.value)) optionTag.selected=true;if(this.options.value==optionTag.value) optionTag.selected=true;optionTag.appendChild(document.createTextNode((e instanceof Array)?e[1]:e));selectTag.appendChild(optionTag)}.bind(this));this.cached_selectTag=selectTag};this.editField=this.cached_selectTag;if(this.options.loadTextURL) this.loadExternalText();this.form.appendChild(this.editField);this.options.callback=function(form, value){return "value="+encodeURIComponent(value)}}});Form.Element.DelayedObserver=Class.create();Form.Element.DelayedObserver.prototype={initialize: function(element, delay, callback){this.delay=delay||0.5;this.element=$(element);this.callback=callback;this.timer=null;this.lastValue=$F(this.element);Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this))},delayedListener: function(event){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))}};
if(typeof Effect=='undefined')
throw("ajax_dragdrop.js requires including script.aculo.us ajax_effects.js library");var Droppables={drops: [],remove: function(element){this.drops=this.drops.reject(function(d){ return d.element==$(element)})},add: function(element){element=$(element);var options=Object.extend({greedy: true,hoverclass: null,tree: false}, arguments[1]||{});if(options.containment){options._containers=[];var containment=options.containment;if((typeof containment=='object') &&(containment.constructor==Array)){containment.each( function(c){ options._containers.push($(c))})}else{options._containers.push($(containment))}};if(options.accept) options.accept=[options.accept].flatten();Element.makePositioned(element); options.element=element;this.drops.push(options)},findDeepestChild: function(drops){deepest=drops[0];for (i=1; i<drops.length; ++i)
if(Element.isParent(drops[i].element, deepest.element))
deepest=drops[i];return deepest},isContained: function(element, drop){var containmentNode;if(drop.tree){containmentNode=element.treeNode}else{containmentNode=element.parentNode};return drop._containers.detect(function(c){ return containmentNode==c })},isAffected: function(point, element, drop){return (
(drop.element!=element) &&((!drop._containers) ||this.isContained(element, drop)) &&((!drop.accept) ||(Element.classNames(element).detect(
function(v){ return drop.accept.include(v)}))) &&Position.within(drop.element, point[0], point[1]))},deactivate: function(drop){if(drop.hoverclass)
Element.removeClassName(drop.element, drop.hoverclass);this.last_active=null},activate: function(drop){if(drop.hoverclass)
Element.addClassName(drop.element, drop.hoverclass);this.last_active=drop},show: function(point, element){if(!this.drops.length) return;var affected=[];if(this.last_active) this.deactivate(this.last_active);this.drops.each( function(drop){if(Droppables.isAffected(point, element, drop))
affected.push(drop)});if(affected.length>0){drop=Droppables.findDeepestChild(affected);Position.within(drop.element, point[0], point[1]);if(drop.onHover)
drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));Droppables.activate(drop)}},fire: function(event, element){if(!this.last_active) return;Position.prepare();if(this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
if(this.last_active.onDrop)
this.last_active.onDrop(element, this.last_active.element, event)},reset: function(){if(this.last_active)
this.deactivate(this.last_active)}};var Draggables={drags: [],observers: [],register: function(draggable){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(draggable)},unregister: function(draggable){this.drags=this.drags.reject(function(d){ return d==draggable });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(draggable){if(draggable.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=draggable}.bind(this), draggable.options.delay)}else{window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
this.activeDraggable=draggable}},deactivate: function(){this.activeDraggable=null},updateDrag: function(event){if(!this.activeDraggable) return;var pointer=[Event.pointerX(event), Event.pointerY(event)];if(this._lastPointer&&(this._lastPointer.inspect()==pointer.inspect())) return;this._lastPointer=pointer;this.activeDraggable.updateDrag(event, pointer)},endDrag: function(event){if(this._timeout){clearTimeout(this._timeout);this._timeout=null};if(!this.activeDraggable) return;this._lastPointer=null;this.activeDraggable.endDrag(event);this.activeDraggable=null},keyPress: function(event){if(this.activeDraggable)
this.activeDraggable.keyPress(event)},addObserver: function(observer){this.observers.push(observer);this._cacheObserverCallbacks()},removeObserver: function(element){ this.observers=this.observers.reject( function(o){ return o.element==element });this._cacheObserverCallbacks()},notify: function(eventName, draggable, event){ // 'onStart', 'onEnd', 'onDrag'
if(this[eventName+'Count']>0)
this.observers.each( function(o){if(o[eventName]) o[eventName](eventName, draggable, event)});if(draggable.options[eventName]) draggable.options[eventName](draggable, event)},_cacheObserverCallbacks: function(){['onStart','onEnd','onDrag'].each( function(eventName){Draggables[eventName+'Count']=Draggables.observers.select(
function(o){ return o[eventName]; }).length})}};var Draggable=Class.create();Draggable._dragging={};Draggable.prototype={initialize: function(element){var defaults={handle: false,reverteffect: function(element, top_offset, left_offset){var dur=Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,queue: {scope:'_draggable', position:'end'}})},endeffect: function(element){var toOpacity=typeof element._opacity=='number'?element._opacity:1.0;new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,queue: {scope:'_draggable', position:'end'},afterFinish: function(){Draggable._dragging[element]=false}})},zindex: 1000,revert: false,scroll: false,scrollSensitivity: 20,scrollSpeed: 15,snap: false, delay: 0};if(!arguments[1]||typeof arguments[1].endeffect=='undefined')
Object.extend(defaults, {starteffect: function(element){element._opacity=Element.getOpacity(element);Draggable._dragging[element]=true;new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7})}});var options=Object.extend(defaults, arguments[1]||{});this.element=$(element);if(options.handle&&(typeof options.handle=='string'))
this.handle=this.element.down('.'+options.handle, 0);if(!this.handle) this.handle=$(options.handle);if(!this.handle) this.handle=this.element;if(options.scroll&&!options.scroll.scrollTo&&!options.scroll.outerHTML){options.scroll=$(options.scroll);this._isScrollChild=Element.childOf(this.element, options.scroll)};Element.makePositioned(this.element); this.delta=this.currentDelta();this.options=options;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(event){if(typeof Draggable._dragging[this.element]!='undefined' &&Draggable._dragging[this.element]) return;if(Event.isLeftClick(event)){var src=Event.element(event);if((tag_name=src.tagName.toUpperCase())&&(
tag_name=='INPUT' ||tag_name=='SELECT' ||tag_name=='OPTION' ||tag_name=='BUTTON' ||tag_name=='TEXTAREA')) return;var pointer=[Event.pointerX(event), Event.pointerY(event)];var pos=Position.cumulativeOffset(this.element);this.offset=[0,1].map( function(i){ return (pointer[i]-pos[i])});Draggables.activate(this);Event.stop(event)}},startDrag: function(event){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)};if(this.options.scroll){if(this.options.scroll==window){var where=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=where.left;this.originalScrollTop=where.top}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop}};Draggables.notify('onStart', this, event);if(this.options.starteffect) this.options.starteffect(this.element)},updateDrag: function(event, pointer){if(!this.dragging) this.startDrag(event);Position.prepare();Droppables.show(pointer, this.element);Draggables.notify('onDrag', this, event);this.draw(pointer);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 speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity)) speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity);if(pointer[1]<(p[1]+this.options.scrollSensitivity)) speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity);if(pointer[0]>(p[2]-this.options.scrollSensitivity)) speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity);if(pointer[1]>(p[3]-this.options.scrollSensitivity)) speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity);this.startScrolling(speed)};if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);Event.stop(event)},finishDrag: function(event, success){this.dragging=false;if(this.options.ghosting){Position.relativize(this.element);Element.remove(this._clone);this._clone=null};if(success) Droppables.fire(event, this.element);Draggables.notify('onEnd', this, event);var revert=this.options.revert;if(revert&&typeof revert=='function') revert=revert(this.element);var d=this.currentDelta();if(revert&&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(event){if(event.keyCode!=Event.KEY_ESC) return;this.finishDrag(event, false);Event.stop(event)},endDrag: function(event){if(!this.dragging) return;this.stopScrolling();this.finishDrag(event, true);Event.stop(event)},draw: function(point){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 (point[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],this)}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 style=this.element.style;if((!this.options.constraint)||(this.options.constraint=='horizontal'))
style.left=p[0]+"px";if((!this.options.constraint)||(this.options.constraint=='vertical'))
style.top=p[1]+"px";if(style.visibility=="hidden") style.visibility=""; },stopScrolling: function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null}},startScrolling: function(speed){if(!(speed[0]||speed[1])) return;this.scrollSpeed=[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this), 10)},scroll: function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with (this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo( left+d*this.scrollSpeed[0], top+d*this.scrollSpeed[1] )}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/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]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/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 }}};var SortableObserver=Class.create();SortableObserver.prototype={initialize: function(element, observer){this.element=$(element);this.observer=observer;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(element){while(element.tagName.toUpperCase()!="BODY"){if(element.id&&Sortable.sortables[element.id]) return element;element=element.parentNode}},options: function(element){element=Sortable._findRootElement($(element));if(!element) return;return Sortable.sortables[element.id]},destroy: function(element){var s=Sortable.options(element);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(element){element=$(element);var options=Object.extend({element: element,tag: 'li', // assumes li children, override with tag: 'tagname'
dropOnEmpty: false,tree: false,treeTag: 'ul',overlap: 'vertical', // one of 'vertical', 'horizontal'
constraint: 'vertical', // one of 'vertical', 'horizontal', false
containment: element, // also takes array of elements (or id's); or false
handle: false, only: false,delay: 0,hoverclass: null,ghosting: false,scroll: false,scrollSensitivity: 20,scrollSpeed: 15,format: this.SERIALIZE_RULE,onChange: Prototype.emptyFunction,onUpdate: Prototype.emptyFunction}, arguments[1]||{});this.destroy(element);var options_for_draggable={revert: true,scroll: options.scroll,scrollSpeed: options.scrollSpeed,scrollSensitivity: options.scrollSensitivity,delay: options.delay,ghosting: options.ghosting,constraint: options.constraint,handle: options.handle };if(options.starteffect)
options_for_draggable.starteffect=options.starteffect;if(options.reverteffect)
options_for_draggable.reverteffect=options.reverteffect;else if(options.ghosting) options_for_draggable.reverteffect=function(element){element.style.top=0;element.style.left=0};if(options.endeffect)
options_for_draggable.endeffect=options.endeffect;if(options.zindex)
options_for_draggable.zindex=options.zindex;var options_for_droppable={overlap: options.overlap,containment: options.containment,tree: options.tree,hoverclass: options.hoverclass,onHover: Sortable.onHover};var options_for_tree={onHover: Sortable.onEmptyHover,overlap: options.overlap,containment: options.containment,hoverclass: options.hoverclass};Element.cleanWhitespace(element);options.draggables=[];options.droppables=[];if(options.dropOnEmpty||options.tree){Droppables.add(element, options_for_tree);options.droppables.push(element)};(this.findElements(element, options)||[]).each( function(e){var handle=options.handle ?$(e).down('.'+options.handle,0):e;options.draggables.push(
new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));Droppables.add(e, options_for_droppable);if(options.tree) e.treeNode=element;options.droppables.push(e)});if(options.tree){(Sortable.findTreeElements(element, options)||[]).each( function(e){Droppables.add(e, options_for_tree);e.treeNode=element;options.droppables.push(e)})};this.sortables[element.id]=options;Draggables.addObserver(new SortableObserver(element, options.onUpdate))},findElements: function(element, options){return Element.findChildren(
element, options.only, options.tree?true:false, options.tag)},findTreeElements: function(element, options){return Element.findChildren(
element, options.only, options.tree?true:false, options.treeTag)},onHover: function(element, dropon, overlap){if(Element.isParent(dropon, element)) return;if(overlap>.33&&overlap<.66&&Sortable.options(dropon).tree){return}else if(overlap>0.5){Sortable.mark(dropon, 'before');if(dropon.previousSibling!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden"; dropon.parentNode.insertBefore(element, dropon);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element)}}else{Sortable.mark(dropon, 'after');var nextElement=dropon.nextSibling||null;if(nextElement!=element){var oldParentNode=element.parentNode;element.style.visibility="hidden"; dropon.parentNode.insertBefore(element, nextElement);if(dropon.parentNode!=oldParentNode)
Sortable.options(oldParentNode).onChange(element);Sortable.options(dropon.parentNode).onChange(element)}}},onEmptyHover: function(element, dropon, overlap){var oldParentNode=element.parentNode;var droponOptions=Sortable.options(dropon);if(!Element.isParent(dropon, element)){var index;var children=Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});var child=null;if(children){var offset=Element.offsetSize(dropon, droponOptions.overlap)*(1.0-overlap);for (index=0; index<children.length; index+=1){if(offset-Element.offsetSize (children[index], droponOptions.overlap) >= 0){offset-=Element.offsetSize (children[index], droponOptions.overlap)}else if(offset-(Element.offsetSize (children[index], droponOptions.overlap)/2) >= 0){child=index+1<children.length?children[index+1]:null;break}else{child=children[index];break}}};dropon.insertBefore(element, child);Sortable.options(oldParentNode).onChange(element);droponOptions.onChange(element)}},unmark: function(){if(Sortable._marker) Sortable._marker.hide()},mark: function(dropon, position){var sortable=Sortable.options(dropon.parentNode);if(sortable&&!sortable.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 offsets=Position.cumulativeOffset(dropon);Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1]+'px'});if(position=='after')
if(sortable.overlap=='horizontal')
Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth)+'px'});else
Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight)+'px'});Sortable._marker.show()},_tree: function(element, options, parent){var children=Sortable.findElements(element, options)||[];for (var i=0; i<children.length; ++i){var match=children[i].id.match(options.format);if(!match) continue;var child={id: encodeURIComponent(match?match[1]:null),element: element,parent: parent,children: [],position: parent.children.length,container: $(children[i]).down(options.treeTag)};if(child.container)
this._tree(child.container, options, child)
parent.children.push (child)};return parent},tree: function(element){element=$(element);var sortableOptions=this.options(element);var options=Object.extend({tag: sortableOptions.tag,treeTag: sortableOptions.treeTag,only: sortableOptions.only,name: element.id,format: sortableOptions.format}, arguments[1]||{});var root={id: null,parent: null,children: [],container: element,position: 0};return Sortable._tree(element, options, root)},_constructIndex: function(node){var index='';do {if(node.id) index='['+node.position+']'+index}while((node=node.parent)!=null);return index},sequence: function(element){element=$(element);var options=Object.extend(this.options(element), arguments[1]||{});return $(this.findElements(element, options)||[]).map( function(item){return item.id.match(options.format)?item.id.match(options.format)[1]:''})},setSequence: function(element, new_sequence){element=$(element);var options=Object.extend(this.options(element), arguments[2]||{});var nodeMap={};this.findElements(element, options).each( function(n){if(n.id.match(options.format))
nodeMap[n.id.match(options.format)[1]]=[n, n.parentNode];n.parentNode.removeChild(n)});new_sequence.each(function(ident){var n=nodeMap[ident];if(n){n[1].appendChild(n[0]);delete nodeMap[ident]}})},serialize: function(element){element=$(element);var options=Object.extend(Sortable.options(element), arguments[1]||{});var name=encodeURIComponent(
(arguments[1]&&arguments[1].name)?arguments[1].name:element.id);if(options.tree){return Sortable.tree(element, arguments[1]).children.map( function (item){return [name+Sortable._constructIndex(item)+"[id]=" +encodeURIComponent(item.id)].concat(item.children.map(arguments.callee))}).flatten().join('&')}else{return Sortable.sequence(element, arguments[1]).map( function(item){return name+"[]="+encodeURIComponent(item)}).join('&')}}};Element.isParent=function(child, element){if(!child.parentNode||child==element) return false;if(child.parentNode==element) return true;return Element.isParent(child.parentNode, element)};Element.findChildren=function(element, only, recursive, tagName){if(!element.hasChildNodes()) return null;tagName=tagName.toUpperCase();if(only) only=[only].flatten();var elements=[];$A(element.childNodes).each( function(e){if(e.tagName&&e.tagName.toUpperCase()==tagName &&(!only||(Element.classNames(e).detect(function(v){ return only.include(v)}))))
elements.push(e);if(recursive){var grandchildren=Element.findChildren(e, only, recursive, tagName);if(grandchildren) elements.push(grandchildren)}});return (elements.length>0?elements.flatten():[])};Element.offsetSize=function (element, type){return element['offset'+((type=='vertical'||type=='height')?'Height':'Width')]}
var Hint={div: $('hintBoxID'),hintTO: null,timeout: 1000,block: false,lastTrigger: null,divHeight: 0,divWidth: 0,holder: null,allowClose: true,indicator: null,pointer: null,duration: 0.15,xRightOver: 0,xTopOver: 0,trigger: function(obj, request, async){var obj=$(obj);if(async==undefined){async=true};this.stopCloseProcess();if(!this.div){var append=true;this.block=false;{this.div=document.createElement('div');this.div.id='hintBoxID';this.div.className='hintBox';var x=document.createElement('img');x.src='/gz@var/image/close-gray.png';x.className='hintCloseBox';Element.setOpacity(x, 0.8);var q=document.createElement('span');q.className='hintCloseQuestion';var qI=document.createElement('input');qI.type='checkbox';var d=document.createElement('span');d.className='hintBoxHandler';d.id='hintBoxHandlerID';this.holder=document.createElement('div');this.holder.className='container';this.indicator=document.createElement('img');this.indicator.src='/gz@var/image/indicator_snake.gif';this.indicator.className='hintIndicator';this.pointer=document.createElement('img');this.pointer.src='/gz@var/image/hint-pointer.png';this.pointer.className='hintPointer';Element.setOpacity(this.pointer, 0.7);this.pointerUp=document.createElement('img');this.pointerUp.src='/gz@var/image/hint-pointer-up.png';this.pointerUp.className='hintPointerUp';Element.setOpacity(this.pointerUp, 0.7);var shd=document.createElement('div');shd.className='shadowContainer';Element.setOpacity(shd, 0.3)};{this.div.appendChild(x);this.div.appendChild(d);this.div.appendChild(this.holder);this.div.appendChild(this.indicator);this.div.appendChild(this.pointer);this.div.appendChild(this.pointerUp);this.div.appendChild(shd)};HTNG.HF.appendChild(this.div);this.divHeight=this.div.offsetHeight;this.divWidth=this.div.offsetWidth;this.div.style.display='none';if(typeof Draggable!=undefined){new Draggable('hintBoxID',{snap: function(x,y,draggable){Hint.pointer.style.visibility='hidden';Hint.pointerUp.style.visibility='hidden';function constrain(n, lower, upper){if(n>upper) return upper;else if(n<lower) return lower;else return n};hintDim=Element.getDimensions(draggable.element);pageDim=Element.getDimensions(HTNG.HF);pageDim.width-=Hint.xRightOver;return[
constrain(x, 0, pageDim.width-hintDim.width),constrain(y, Hint.xTopOver, pageDim.height-hintDim.height)]},handle: 'hintBoxHandlerID'})}};if(this.block){this.closeHint();if(this.lastTrigger!=obj){setTimeout("Hint.trigger('"+obj.id+"','"+request+"', "+async+");", 3000*Hint.duration)}}else{if(async) new Ajax.Request(request, {onComplete: this.onComplete.bind(this)});this.holder.innerHTML='';this.holder.style.background='transparent';Effect.Appear(this.indicator,{duration:0.1});this.pointer.style.visibility='hidden';this.pointerUp.style.visibility='hidden';var objPos=Position.cumulativeOffset(obj);var top=objPos[1]-this.divHeight+obj.offsetHeight;if(top<0)
top=0;var left=objPos[0]-40, leftDiff=HTNG.HF.offsetWidth-(this.divWidth+left), leftOver=0;if(leftDiff<this.xRightOver){left=HTNG.HF.offsetWidth-this.divWidth-this.xRightOver}else if(left<0){leftOver=left<-33?-33:left;left=0};this.div.style.top=top+'px';this.div.style.position='absolute';this.div.style.left=left+'px';this.pointer.style.left=this.pointerUp.style.left =((leftDiff<0?34-leftDiff+this.xRightOver:34+leftOver) +(obj.offsetWidth/2-11))+'px';this.openHint();if(!async) setTimeout("Hint.showHint('"+request+"', true);", 500)};this.lastTrigger=obj;if(append){Events.add(x, 'click', this.closeHint)}},onComplete: function(request){this.showHint(request.responseText)},showHint: function(innerContent, uriDecode){if(uriDecode) innerContent=decodeURIComponent(innerContent);Effect.Fade(this.indicator,{duration:this.duration});this.holder.innerHTML=innerContent;var top=this.div.offsetTop-this.div.offsetHeight;var pos=Position.page(this.div);new Effect.Move(this.div, {y: (top>0?- this.div.offsetHeight:this.divHeight), duration: 2*this.duration});if(pos[1]<this.div.offsetHeight&&top>0)
setTimeout('new Effect.ScrollTo(Hint.div, {duration: 2*Hint.duration})', 2000*this.duration)
if(top>0)
this.pointer.style.visibility='visible';else
this.pointerUp.style.visibility='visible';if(typeof Message!=undefined){Message.reloadCaptcha()};setTimeout('Hint.focusFirstInput();', 4000*this.duration)},focusFirstInput: function(holder){var holder=holder||this.holder;for (var i=0, max=holder.childNodes.length; i<max; ++i){var e=holder.childNodes[i];if(e.nodeType!=1){continue};if(e.type!='hidden'&&e.disabled==false &&(e.tagName=='SELECT'||e.tagName=='INPUT'||e.tagName=='TEXTAREA')){e.focus();return true};if(e.childNodes.length){if(this.focusFirstInput(e)){return true}}};return false},switchAllowClose: function(){Hint.allowClose=(Hint.allowClose)?false:true;Hint.stopCloseProcess()},openHint: function(){if(Hint.div){Effect.Appear(Hint.div,{duration:Hint.duration})};Hint.block=true},startCloseProcess: function(){if(Hint.div&&Hint.block&&Hint.allowClose){clearTimeout(Hint.hintTO);Hint.hintTO=setTimeout('Hint.closeHint()', Hint.timeout)}},stopCloseProcess: function(){if(Hint.hintTO){clearTimeout(Hint.hintTO)}},closeHint: function(){Hint.block=false;if(Hint.div){Effect.Fade(Hint.div,{duration:Hint.duration});new Effect.Move(Hint.div, {y: (Hint.div.offsetHeight), duration: 2*Hint.duration})}}}
