var AnimatedStack=Class.create({initialize:function(a,b){this.holder=a;this.max=b;this.stack=[];$(this.holder).setStyle({position:"relative"});$(this.holder).appendChild(new Element("div",{"class":"clear"}))},totalHeight:function(c){var b=0;for(var a=0;a<this.stack.length;a++){if(this.stack[a]==c){break}b+=this.stack[a].element_height?this.stack[a].element_height:this.stack[a].getHeight()}return b},addElement:function(b,c,d){if(c){b.element_height=c}b.setStyle({position:"absolute"});b.hide();$(this.holder).insert({top:b});this.stack.unshift(b);this.stack.each(function(h,g){var f={duration:0.2};if(this.stack.length==1){b.appear({duration:0.2})}if(g==this.stack.length-1){f.afterFinish=function(){b.appear({duration:0.2})}}if(d){h.setStyle({top:this.totalHeight(h)+"px",display:"block"})}else{h.morph("top:"+this.totalHeight(h)+"px",f)}}.bind(this));for(var a=this.max;a<this.stack.length;a++){var e=this.stack[a];this.stack.splice(a,1);e.fade({duration:0.1,afterFinish:function(f){e.remove()}})}if(d){$(this.holder).setStyle({height:this.totalHeight()+"px"})}else{$(this.holder).morph("height:"+(this.totalHeight(null))+"px",{duration:0.2})}},removeElement:function(b){for(var a=0;a<this.stack.length;a++){if(this.stack[a]==b){this.stack.splice(a,1);return}}}});var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS"},searchString:function(d){for(var a=0;a<d.length;a++){var b=d[a].string;var c=d[a].prop;this.versionSearchString=d[a].versionSearch||d[a].identity;if(b){if(b.indexOf(d[a].subString)!=-1){return d[a].identity}}else{if(c){return d[a].identity}}}},searchVersion:function(b){var a=b.indexOf(this.versionSearchString);if(a==-1){return}return parseFloat(b.substring(a+this.versionSearchString.length+1))},dataBrowser:[{string:navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:navigator.vendor,subString:"Apple",identity:"Safari",versionSearch:"Version"},{prop:window.opera,identity:"Opera"},{string:navigator.vendor,subString:"iCab",identity:"iCab"},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:navigator.vendor,subString:"Camino",identity:"Camino"},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],dataOS:[{string:navigator.platform,subString:"Win",identity:"Windows"},{string:navigator.platform,subString:"Mac",identity:"Mac"},{string:navigator.userAgent,subString:"iPhone",identity:"iPhone/iPod"},{string:navigator.platform,subString:"Linux",identity:"Linux"}]};BrowserDetect.init();Date.SECOND=1000;Date.MINUTE=60*1000;Date.HOUR=60*Date.MINUTE;Date.DAY=24*Date.HOUR;Date.prototype.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.prototype.getMonthName=function(){return this.monthNames[this.getMonth()]};Date.prototype.getShortMonthName=function(){return this.getMonthName().substr(0,3)};Date.prototype.copy=function(){var a=new Date();a.setTime(this.getTime());return a};Date.parseSpecialDate=function(b){var a=Number(b.substring(0,4));var e=Number(b.substring(5,7));var d=Number(b.substring(8,10));var f=Number(b.substring(11,13));var c=Number(b.substring(14,16));var g=Number(b.substring(17,19));return new Date(a,e-1,d,f,c,g)},Date.getUTCOffset=function(){var a=new Date();localOffset=a.getTimezoneOffset()*60000;return localOffset};Object.extend(Date.prototype,{strftime:function(f){var b=this.getDay(),e=this.getMonth();var a=this.getHours(),c=this.getMinutes();function d(g){return g.toPaddedString(2)}return f.gsub(/\%([aAbBcdDHiImMpSwyY])/,function(g){switch(g[1]){case"a":return $w("Sun Mon Tue Wed Thu Fri Sat")[b];break;case"A":return $w("Sunday Monday Tuesday Wednesday Thursday Friday Saturday")[b];break;case"b":return $w("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec")[e];break;case"B":return $w("January February March April May June July August September October November December")[e];break;case"c":return this.toString();break;case"d":return this.getDate();break;case"D":return d(this.getDate());break;case"H":return d(a);break;case"i":return(a===12||a===0)?12:(a+12)%12;break;case"I":return d((a===12||a===0)?12:(a+12)%12);break;case"m":return d(e+1);break;case"M":return d(c);break;case"p":return a>11?"PM":"AM";break;case"S":return d(this.getSeconds());break;case"w":return b;break;case"y":return d(this.getFullYear()%100);break;case"Y":return this.getFullYear().toString();break}}.bind(this))}});var DropdownMenu=Class.create({initialize:function(){this.buildMenu()},buildMenu:function(){this.menu=new Element("div",{"class":"dropdown"});this.handle=new Element("div",{"class":"handle"}).update("--select--");this.itemContainer=new Element("div",{"class":"item-container",style:"display:none"});this.handle.observe("mouseover",this.handleHandleMouseOver.bind(this));this.handle.observe("mouseout",this.handleMouseOut.bind(this));this.itemContainer.observe("mouseover",this.handleHandleMouseOver.bind(this));this.itemContainer.observe("mouseout",this.handleMouseOut.bind(this));this.menu.appendChild(this.handle);this.menu.appendChild(this.itemContainer);this.items=[]},handleHandleMouseOver:function(a){this.active=true;clearTimeout(this.timeout);this.itemContainer.appear({duration:0.2})},doFadeContainer:function(){if(!this.active){this.itemContainer.fade({duration:0.2})}},handleMouseOut:function(){this.active=false;this.timeout=setTimeout(this.doFadeContainer.bind(this),1000)},addMenuItem:function(b,a){var c=new Element("div",{"class":"item"}).update(b);c.callback=a;c.observe("click",this.handleMenuItemClicked.bind(this));c.observe("mouseover",this.handleMenuItemMouseOver.bind(this));c.observe("mouseout",this.handleMenuItemMouseOut.bind(this));this.items.push(c);this.itemContainer.appendChild(c)},handleMenuItemClicked:function(a){this.active=false;this.doFadeContainer();if(this.selected==a.target){return}a.target.callback.call(this);this.handle.update(a.target.innerHTML);for(var b=0;b<this.items.length;b++){this.items[b].removeClassName("selected")}a.target.addClassName("selected");this.selected=a.target},handleMenuItemMouseOver:function(a){a.target.addClassName("over")},handleMenuItemMouseOut:function(a){a.target.removeClassName("over")},setItemSelected:function(c){for(var b=0;b<this.items.length;b++){this.items[b].removeClassName("selected")}if(c==-1){this.handle.update("--select--");this.selected=null;return}var a=this.items[c];a.addClassName("selected");this.handle.update(a.innerHTML);this.selected=a}});var EventDispatcher=Class.create({addEventListener:function(b,a){if(!this.eventListeners){this.eventListeners={}}if(!this.eventListeners[b]){this.eventListeners[b]=[]}this.eventListeners[b].push(a);return this},removeEventListener:function(d,c){for(var b=0,a=this.eventListeners[d].length;b<a;b+=1){if(this.eventListeners[d][b]==c){this.eventListeners[d].splice(b,1)}}return this},dispatchEvent:function(e){var c=[];for(var d=1,a=arguments.length;d<a;d+=1){c.push(arguments[d])}if(this.eventListeners&&this.eventListeners[e]){for(var b=0,a=this.eventListeners[e].length;b<a;b+=1){this.eventListeners[e][b].apply(this,c)}}return this}});var Loader=Class.create({initialize:function(){this.holder=new Element("div",{"class":"loader"});this.loadedImage=new Element("img",{src:"/images/ajax-loader.gif",style:"display:none"});this.holder.appendChild(this.loadedImage)},startLoading:function(){this.loadedImage.show()},stopLoading:function(){this.loadedImage.hide()}});var ProtoFish=Class.create({initialize:function(f,c,a,e,d,b){this.id=f;this.timeout=c||"400";this.cssClass=a||"hover";this.remActive=e||false;this.ARIA=d||false;this.useShortKey=b||false;this.queue=[];this.activeTimeout="";this.menuFocus=false;this.menuCount=0;this.isParent=false;this.shiftDown=false;this.mDown=false;this.ctrlDown=false;this.altDown=false;if($(f)&&$(f).down()){if(this.ARIA!=false){$(f).writeAttribute("role","menubar");this.menuContainers=$(f).select("ul");this.menuContainers.each(function(h,g){h.writeAttribute("role","menu")})}this.listItems=$(f).select("li");this.activeItems=$(f).select("li.active");this.listItems[0].down("a").setAttribute("tabindex","0");this.initObservers()}},initObservers:function(){this.listItems.each(function(a){a.observe("mouseover",function(c,b){this.enterMenu(b);b.addClassName(this.cssClass)}.bindAsEventListener(this,a));a.observe("mouseout",function(c,b){this.queue.push([this.leaveMenu.delay(this.timeout/1000,this),b])}.bindAsEventListener(this,a));if(this.ARIA!=false){a.down("a").writeAttribute("role","menuitem");if(a.down("ul")){a.down("a").writeAttribute("aria-haspopup","true")}}}.bind(this));Event.observe(document,"keydown",function(b){var a=b.keyCode;var c=[9,13,27,32,37,38,39,40];if(c.indexOf(a)!=-1){this.keyBoardNav(b,a,c)}if(b.keyCode==16){this.shiftDown=true}else{if(this.useShortKey!=false){if(b.keyCode==77){this.mDown=true}if(b.keyCode==17){this.ctrlDown=true}if(b.keyCode==18){this.altDown=true}if(this.mDown==true&&this.ctrlDown==true&&this.altDown==true){this.listItems[0].down("a").focus()}}}}.bind(this));Event.observe(document,"keyup",function(a){if(a.keyCode==16){this.shiftDown=false}else{if(this.useShortKey!=false){if(a.keyCode==77){this.mDown=false}if(a.keyCode==17){this.ctrlDown=false}if(a.keyCode==18){this.altDown=false}}}}.bind(this));Event.observe(document,"click",function(b){var a=Event.element(b);if(a!=$(this.id)&&!a.descendantOf(this.id)&&this.menuFocus==true){this.listItems.invoke("removeClassName",this.cssClass);this.menuFocus=false}}.bind(this));$$("body")[0].observe("focusin",this.handleMenuFocus.bind(this));if(window.addEventListener){$$("body")[0].addEventListener("focus",this.handleMenuFocus.bind(this),true)}},handleMenuFocus:function(b){var a=Event.element(b);if(a.up("#"+this.id)){this.menuFocus=true;this.menuCount=this.listItems.indexOf(a.up("li"));this.isParent=(a.next())?true:false;if(this.isParent==false){a.up().addClassName(this.cssClass);while(a.up("li")){a.up("li").addClassName(this.cssClass);a=a.up("li")}}else{if(this.isParent==true){a.up().removeClassName("hover")}}}else{this.listItems.invoke("removeClassName",this.cssClass);this.menuFocus=false}},keyBoardNav:function(b,c,g){if(this.menuFocus==true){if(g.indexOf(c)!=0){b.preventDefault()}var d=this.listItems[this.menuCount];switch(true){case c==Event.KEY_DOWN:if(!d.up("li")){var f=d.down("li")}else{var f=(d.next("li"))||d.up("ul").childElements().first();if(f){d.removeClassName(this.cssClass)}}if(f){this.menuCount=this.listItems.indexOf(f);f.addClassName(this.cssClass);f.down("a").focus()}break;case c==Event.KEY_UP:if(!d.up("li")){var k=false}else{var k=d.previous("li")||d.up("ul").childElements().last();d.removeClassName(this.cssClass)}if(k){this.menuCount=this.listItems.indexOf(k);k.addClassName(this.cssClass);k.down("a").focus()}break;case c==Event.KEY_RIGHT:if(!d.up("li")){var j=d.next("li");if(j){d.removeClassName(this.cssClass)}}else{var j=d.down("li")||false}if(j){this.menuCount=this.listItems.indexOf(j);j.addClassName(this.cssClass);j.down("a").focus()}break;case c==Event.KEY_LEFT:if(!d.up("li")){var e=d.previous("li");if(e){d.removeClassName(this.cssClass)}}else{var e=d.up("li")||false;if(e){d.removeClassName(this.cssClass)}}if(e){this.menuCount=this.listItems.indexOf(e);e.addClassName(this.cssClass);e.down("a").focus()}break;case c==Event.KEY_TAB:if(this.shiftDown==false){this.menuCount++;var k=this.listItems[this.menuCount-1];if(!k.down("li")){k.removeClassName(this.cssClass);while(k.up("li")&&!k.next("li")){k.up("li").removeClassName(this.cssClass);k=k.up("li")}}}else{if(this.shiftDown==true){this.menuCount--;var d=this.listItems[this.menuCount];var f=this.listItems[this.menuCount+1];f.removeClassName(this.cssClass);if(d){while(d.up("li")&&d.up("li").hasClassName(this.cssClass)==false){d.up("li").addClassName(this.cssClass);d=d.up("li")}}}}break;case c==Event.KEY_ESC:while(d.up("li")){d.removeClassName(this.cssClass);var h=d.up("li");d=d.up("li")}if(h){h.down("a").focus();this.menuCount=this.listItems.indexOf(d)}break;case c==32:if(this.isParent==true){this.parentBehavior(d)}else{var a=d.down("a").href;window.location.href=a}break;case c==Event.KEY_RETURN:if(this.isParent==true){this.parentBehavior(d)}break}}},parentBehavior:function(b){var a=b.down("li");if(a){this.menuCount=this.listItems.indexOf(a);a.addClassName(this.cssClass);a.down("a").focus()}},enterMenu:function(){while(this.queue.length){clearTimeout(this.queue[0][0]);this.leaveMenu(this)}if(this.remActive==true){if(typeof this.activeTimeout=="number"){clearTimeout(this.activeTimeout);delete this.activeTimeout}this.activeItems.invoke("removeClassName","active")}},leaveMenu:function(b){if(b.queue.length){var a=b.queue.shift()[1];a.removeClassName(b.cssClass)}if(b.remActive==true){b.activeItems.invoke("addClassName","active")}}});var Util={getTime:function(){var a=new Date();return a.getTime()},getDateHash:function(a){var b=a;return{month:b.getMonth(),day:b.getDate(),hour:b.getHours(),minute:b.getMinutes(),second:b.getSeconds()}},getUTCDateHash:function(a){var b=a;return{month:b.getUTCMonth(),day:b.getUTCDate(),hour:b.getUTCHours(),minute:b.getUTCMinutes(),second:b.getUTCSeconds()}},formatNumber:function(b){b+="";x=b.split(".");x1=x[0];x2=x.length>1?"."+x[1]:"";var a=/(\d+)(\d{3})/;while(a.test(x1)){x1=x1.replace(a,"$1,$2")}return x1+x2},shorten:function(b,a){if(b==null||b.length==0){return"-"}if(b.length<a){return b}else{return b.substring(0,a)+"..."}},padDigits:function(c,a){c=c.toString();var b="";if(a>c.length){for(i=0;i<(a-c.length);i++){b+="0"}}return b+c.toString()},formatDate:function(a,b){if(!b){return a.strftime("%D/%m/%Y")}else{return a.strftime("%D/%m/%Y %H:%M")}}};