﻿function showVideo(t, h) { myLightWindow.activateWindow({href:h, title:t, width:805, height:624}); }

// CSS Browser Selector v0.2.6 - http://rafael.adm.br/css_browser_selector
var css_browser_selector=function(){var ua=navigator.userAgent.toLowerCase(),is=function(t){return ua.indexOf(t)!=-1},h=document.getElementsByTagName('html')[0],b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')?'gecko':is('opera/9')?'opera opera9':/opera(\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';var c=b+os+' js';h.className+=h.className?' '+c:c}();

// SWFObject v1.5 - http://blog.deconcept.com/swfobject/
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;

// prototype 1.6.0.2 - http://www.prototypejs.org/
var Prototype={Version:"1.6.0.2",Browser:{IE:!!(window.attachEvent&&!window.opera),Opera:!!window.opera,WebKit:navigator.userAgent.indexOf("AppleWebKit/")>-1,Gecko:navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")==-1,MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)},BrowserFeatures:{XPath:!!document.evaluate,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement("div").__proto__&&document.createElement("div").__proto__!==document.createElement("form").__proto__},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(A){return A;}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false;}var Class={create:function(){var E=null,D=$A(arguments);if(Object.isFunction(D[0])){E=D.shift();}function A(){this.initialize.apply(this,arguments);}Object.extend(A,Class.Methods);A.superclass=E;A.subclasses=[];if(E){var B=function(){};B.prototype=E.prototype;A.prototype=new B;E.subclasses.push(A);}for(var C=0;C<D.length;C++){A.addMethods(D[C]);}if(!A.prototype.initialize){A.prototype.initialize=Prototype.emptyFunction;}A.prototype.constructor=A;return A;}};Class.Methods={addMethods:function(G){var C=this.superclass&&this.superclass.prototype;var B=Object.keys(G);if(!Object.keys({toString:true}).length){B.push("toString","valueOf");}for(var A=0,D=B.length;A<D;A++){var F=B[A],E=G[F];if(C&&Object.isFunction(E)&&E.argumentNames().first()=="$super"){var H=E,E=Object.extend((function(I){return function(){return C[I].apply(this,arguments);};})(F).wrap(H),{valueOf:function(){return H;},toString:function(){return H.toString();}});}this.prototype[F]=E;}return this;}};var Abstract={};Object.extend=function(A,C){for(var B in C){A[B]=C[B];}return A;};Object.extend(Object,{inspect:function(A){try{if(Object.isUndefined(A)){return"undefined";}if(A===null){return"null";}return A.inspect?A.inspect():String(A);}catch(B){if(B instanceof RangeError){return"...";}throw B;}},toJSON:function(A){var C=typeof A;switch(C){case"undefined":case"function":case"unknown":return ;case"boolean":return A.toString();}if(A===null){return"null";}if(A.toJSON){return A.toJSON();}if(Object.isElement(A)){return ;}var B=[];for(var E in A){var D=Object.toJSON(A[E]);if(!Object.isUndefined(D)){B.push(E.toJSON()+": "+D);}}return"{"+B.join(", ")+"}";},toQueryString:function(A){return $H(A).toQueryString();},toHTML:function(A){return A&&A.toHTML?A.toHTML():String.interpret(A);},keys:function(A){var B=[];for(var C in A){B.push(C);}return B;},values:function(B){var A=[];for(var C in B){A.push(B[C]);}return A;},clone:function(A){return Object.extend({},A);},isElement:function(A){return A&&A.nodeType==1;},isArray:function(A){return A!=null&&typeof A=="object"&&"splice" in A&&"join" in A;},isHash:function(A){return A instanceof Hash;},isFunction:function(A){return typeof A=="function";},isString:function(A){return typeof A=="string";},isNumber:function(A){return typeof A=="number";},isUndefined:function(A){return typeof A=="undefined";}});Object.extend(Function.prototype,{argumentNames:function(){var A=this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");return A.length==1&&!A[0]?[]:A;},bind:function(){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this;}var A=this,C=$A(arguments),B=C.shift();return function(){return A.apply(B,C.concat($A(arguments)));};},bindAsEventListener:function(){var A=this,C=$A(arguments),B=C.shift();return function(D){return A.apply(B,[D||window.event].concat(C));};},curry:function(){if(!arguments.length){return this;}var A=this,B=$A(arguments);return function(){return A.apply(this,B.concat($A(arguments)));};},delay:function(){var A=this,B=$A(arguments),C=B.shift()*1000;return window.setTimeout(function(){return A.apply(A,B);},C);},wrap:function(B){var A=this;return function(){return B.apply(this,[A.bind(this)].concat($A(arguments)));};},methodize:function(){if(this._methodized){return this._methodized;}var A=this;return this._methodized=function(){return A.apply(null,[this].concat($A(arguments)));};}});Function.prototype.defer=Function.prototype.delay.curry(0.01);Date.prototype.toJSON=function(){return'"'+this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+'Z"';};var Try={these:function(){var C;for(var B=0,D=arguments.length;B<D;B++){var A=arguments[B];try{C=A();break;}catch(E){}}return C;}};RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(A){return String(A).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1");};var PeriodicalExecuter=Class.create({initialize:function(B,A){this.callback=B;this.frequency=A;this.currentlyExecuting=false;this.registerCallback();},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);},execute:function(){this.callback(this);},stop:function(){if(!this.timer){return ;}clearInterval(this.timer);this.timer=null;},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();}finally{this.currentlyExecuting=false;}}}});Object.extend(String,{interpret:function(A){return A==null?"":String(A);},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,{gsub:function(E,C){var A="",D=this,B;C=arguments.callee.prepareReplacement(C);while(D.length>0){if(B=D.match(E)){A+=D.slice(0,B.index);A+=String.interpret(C(B));D=D.slice(B.index+B[0].length);}else{A+=D,D="";}}return A;},sub:function(C,A,B){A=this.gsub.prepareReplacement(A);B=Object.isUndefined(B)?1:B;return this.gsub(C,function(D){if(--B<0){return D[0];}return A(D);});},scan:function(B,A){this.gsub(B,A);return String(this);},truncate:function(B,A){B=B||30;A=Object.isUndefined(A)?"...":A;return this.length>B?this.slice(0,B-A.length)+A:String(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 B=new RegExp(Prototype.ScriptFragment,"img");var A=new RegExp(Prototype.ScriptFragment,"im");return(this.match(B)||[]).map(function(C){return(C.match(A)||["",""])[1];});},evalScripts:function(){return this.extractScripts().map(function(script){return eval(script);});},escapeHTML:function(){var A=arguments.callee;A.text.data=this;return A.div.innerHTML;},unescapeHTML:function(){var A=new Element("div");A.innerHTML=this.stripTags();return A.childNodes[0]?(A.childNodes.length>1?$A(A.childNodes).inject("",function(B,C){return B+C.nodeValue;}):A.childNodes[0].nodeValue):"";},toQueryParams:function(B){var A=this.strip().match(/([^?#]*)(#.*)?$/);if(!A){return{};}return A[1].split(B||"&").inject({},function(E,F){if((F=F.split("="))[0]){var C=decodeURIComponent(F.shift());var D=F.length>1?F.join("="):F[0];if(D!=undefined){D=decodeURIComponent(D);}if(C in E){if(!Object.isArray(E[C])){E[C]=[E[C]];}E[C].push(D);}else{E[C]=D;}}return E;});},toArray:function(){return this.split("");},succ:function(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1);},times:function(A){return A<1?"":new Array(A+1).join(this);},camelize:function(){var D=this.split("-"),A=D.length;if(A==1){return D[0];}var C=this.charAt(0)=="-"?D[0].charAt(0).toUpperCase()+D[0].substring(1):D[0];for(var B=1;B<A;B++){C+=D[B].charAt(0).toUpperCase()+D[B].substring(1);}return C;},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(B){var A=this.gsub(/[\x00-\x1f\\]/,function(C){var D=String.specialChar[C[0]];return D?D:"\\u00"+C[0].charCodeAt().toPaddedString(2,16);});if(B){return'"'+A.replace(/"/g,'\\"')+'"';}return"'"+A.replace(/'/g,"\\'")+"'";},toJSON:function(){return this.inspect(true);},unfilterJSON:function(A){return this.sub(A||Prototype.JSONFilter,"#{1}");},isJSON:function(){var A=this;if(A.blank()){return false;}A=this.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,"");return(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(A);},evalJSON:function(sanitize){var json=this.unfilterJSON();try{if(!sanitize||json.isJSON()){return eval("("+json+")");}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect());},include:function(A){return this.indexOf(A)>-1;},startsWith:function(A){return this.indexOf(A)===0;},endsWith:function(A){var B=this.length-A.length;return B>=0&&this.lastIndexOf(A)===B;},empty:function(){return this=="";},blank:function(){return/^\s*$/.test(this);},interpolate:function(A,B){return new Template(this,B).evaluate(A);}});if(Prototype.Browser.WebKit||Prototype.Browser.IE){Object.extend(String.prototype,{escapeHTML:function(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");},unescapeHTML:function(){return this.replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">");}});}String.prototype.gsub.prepareReplacement=function(B){if(Object.isFunction(B)){return B;}var A=new Template(B);return function(C){return A.evaluate(C);};};String.prototype.parseQuery=String.prototype.toQueryParams;Object.extend(String.prototype.escapeHTML,{div:document.createElement("div"),text:document.createTextNode("")});with(String.prototype.escapeHTML){div.appendChild(text);}var Template=Class.create({initialize:function(A,B){this.template=A.toString();this.pattern=B||Template.Pattern;},evaluate:function(A){if(Object.isFunction(A.toTemplateReplacements)){A=A.toTemplateReplacements();}return this.template.gsub(this.pattern,function(D){if(A==null){return"";}var F=D[1]||"";if(F=="\\"){return D[2];}var B=A,G=D[3];var E=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;D=E.exec(G);if(D==null){return F;}while(D!=null){var C=D[1].startsWith("[")?D[2].gsub("\\\\]","]"):D[1];B=B[C];if(null==B||""==D[3]){break;}G=G.substring("["==D[3]?D[1].length:D[0].length);D=E.exec(G);}return F+String.interpret(B);});}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable={each:function(C,B){var A=0;C=C.bind(B);try{this._each(function(E){C(E,A++);});}catch(D){if(D!=$break){throw D;}}return this;},eachSlice:function(D,C,B){C=C?C.bind(B):Prototype.K;var A=-D,E=[],F=this.toArray();while((A+=D)<F.length){E.push(F.slice(A,A+D));}return E.collect(C,B);},all:function(C,B){C=C?C.bind(B):Prototype.K;var A=true;this.each(function(E,D){A=A&&!!C(E,D);if(!A){throw $break;}});return A;},any:function(C,B){C=C?C.bind(B):Prototype.K;var A=false;this.each(function(E,D){if(A=!!C(E,D)){throw $break;}});return A;},collect:function(C,B){C=C?C.bind(B):Prototype.K;var A=[];this.each(function(E,D){A.push(C(E,D));});return A;},detect:function(C,B){C=C.bind(B);var A;this.each(function(E,D){if(C(E,D)){A=E;throw $break;}});return A;},findAll:function(C,B){C=C.bind(B);var A=[];this.each(function(E,D){if(C(E,D)){A.push(E);}});return A;},grep:function(D,C,B){C=C?C.bind(B):Prototype.K;var A=[];if(Object.isString(D)){D=new RegExp(D);}this.each(function(F,E){if(D.match(F)){A.push(C(F,E));}});return A;},include:function(A){if(Object.isFunction(this.indexOf)){if(this.indexOf(A)!=-1){return true;}}var B=false;this.each(function(C){if(C==A){B=true;throw $break;}});return B;},inGroupsOf:function(B,A){A=Object.isUndefined(A)?null:A;return this.eachSlice(B,function(C){while(C.length<B){C.push(A);}return C;});},inject:function(A,C,B){C=C.bind(B);this.each(function(E,D){A=C(A,E,D);});return A;},invoke:function(B){var A=$A(arguments).slice(1);return this.map(function(C){return C[B].apply(C,A);});},max:function(C,B){C=C?C.bind(B):Prototype.K;var A;this.each(function(E,D){E=C(E,D);if(A==null||E>=A){A=E;}});return A;},min:function(C,B){C=C?C.bind(B):Prototype.K;var A;this.each(function(E,D){E=C(E,D);if(A==null||E<A){A=E;}});return A;},partition:function(D,B){D=D?D.bind(B):Prototype.K;var C=[],A=[];this.each(function(F,E){(D(F,E)?C:A).push(F);});return[C,A];},pluck:function(B){var A=[];this.each(function(C){A.push(C[B]);});return A;},reject:function(C,B){C=C.bind(B);var A=[];this.each(function(E,D){if(!C(E,D)){A.push(E);}});return A;},sortBy:function(B,A){B=B.bind(A);return this.map(function(D,C){return{value:D,criteria:B(D,C)};}).sort(function(F,E){var D=F.criteria,C=E.criteria;return D<C?-1:D>C?1:0;}).pluck("value");},toArray:function(){return this.map();},zip:function(){var B=Prototype.K,A=$A(arguments);if(Object.isFunction(A.last())){B=A.pop();}var C=[this].concat(A).map($A);return this.map(function(E,D){return B(C.pluck(D));});},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,filter:Enumerable.findAll,member:Enumerable.include,entries:Enumerable.toArray,every:Enumerable.all,some:Enumerable.any});function $A(C){if(!C){return[];}if(C.toArray){return C.toArray();}var B=C.length||0,A=new Array(B);while(B--){A[B]=C[B];}return A;}if(Prototype.Browser.WebKit){$A=function(C){if(!C){return[];}if(!(Object.isFunction(C)&&C=="[object NodeList]")&&C.toArray){return C.toArray();}var B=C.length||0,A=new Array(B);while(B--){A[B]=C[B];}return A;};}Array.from=$A;Object.extend(Array.prototype,Enumerable);if(!Array.prototype._reverse){Array.prototype._reverse=Array.prototype.reverse;}Object.extend(Array.prototype,{_each:function(B){for(var A=0,C=this.length;A<C;A++){B(this[A]);}},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(A){return A!=null;});},flatten:function(){return this.inject([],function(B,A){return B.concat(Object.isArray(A)?A.flatten():[A]);});},without:function(){var A=$A(arguments);return this.select(function(B){return !A.include(B);});},reverse:function(A){return(A!==false?this:this.toArray())._reverse();},reduce:function(){return this.length>1?this:this[0];},uniq:function(A){return this.inject([],function(D,C,B){if(0==B||(A?D.last()!=C:!D.include(C))){D.push(C);}return D;});},intersect:function(A){return this.uniq().findAll(function(B){return A.detect(function(C){return B===C;});});},clone:function(){return[].concat(this);},size:function(){return this.length;},inspect:function(){return"["+this.map(Object.inspect).join(", ")+"]";},toJSON:function(){var A=[];this.each(function(B){var C=Object.toJSON(B);if(!Object.isUndefined(C)){A.push(C);}});return"["+A.join(", ")+"]";}});if(Object.isFunction(Array.prototype.forEach)){Array.prototype._each=Array.prototype.forEach;}if(!Array.prototype.indexOf){Array.prototype.indexOf=function(C,A){A||(A=0);var B=this.length;if(A<0){A=B+A;}for(;A<B;A++){if(this[A]===C){return A;}}return -1;};}if(!Array.prototype.lastIndexOf){Array.prototype.lastIndexOf=function(B,A){A=isNaN(A)?this.length:(A<0?this.length+A:A)+1;var C=this.slice(0,A).reverse().indexOf(B);return(C<0)?C:A-C-1;};}Array.prototype.toArray=Array.prototype.clone;function $w(A){if(!Object.isString(A)){return[];}A=A.strip();return A?A.split(/\s+/):[];}if(Prototype.Browser.Opera){Array.prototype.concat=function(){var E=[];for(var B=0,C=this.length;B<C;B++){E.push(this[B]);}for(var B=0,C=arguments.length;B<C;B++){if(Object.isArray(arguments[B])){for(var A=0,D=arguments[B].length;A<D;A++){E.push(arguments[B][A]);}}else{E.push(arguments[B]);}}return E;};}Object.extend(Number.prototype,{toColorPart:function(){return this.toPaddedString(2,16);},succ:function(){return this+1;},times:function(A){$R(0,this,true).each(A);return this;},toPaddedString:function(C,B){var A=this.toString(B||10);return"0".times(C-A.length)+A;},toJSON:function(){return isFinite(this)?this.toString():"null";}});$w("abs round ceil floor").each(function(A){Number.prototype[A]=Math[A].methodize();});function $H(A){return new Hash(A);}var Hash=Class.create(Enumerable,(function(){function A(B,C){if(Object.isUndefined(C)){return B;}return B+"="+encodeURIComponent(String.interpret(C));}return{initialize:function(B){this._object=Object.isHash(B)?B.toObject():Object.clone(B);},_each:function(C){for(var B in this._object){var D=this._object[B],E=[B,D];E.key=B;E.value=D;C(E);}},set:function(B,C){return this._object[B]=C;},get:function(B){return this._object[B];},unset:function(B){var C=this._object[B];delete this._object[B];return C;},toObject:function(){return Object.clone(this._object);},keys:function(){return this.pluck("key");},values:function(){return this.pluck("value");},index:function(C){var B=this.detect(function(D){return D.value===C;});return B&&B.key;},merge:function(B){return this.clone().update(B);},update:function(B){return new Hash(B).inject(this,function(C,D){C.set(D.key,D.value);return C;});},toQueryString:function(){return this.map(function(D){var C=encodeURIComponent(D.key),B=D.value;if(B&&typeof B=="object"){if(Object.isArray(B)){return B.map(A.curry(C)).join("&");}}return A(C,B);}).join("&");},inspect:function(){return"#<Hash:{"+this.map(function(B){return B.map(Object.inspect).join(": ");}).join(", ")+"}>";},toJSON:function(){return Object.toJSON(this.toObject());},clone:function(){return new Hash(this);}};})());Hash.prototype.toTemplateReplacements=Hash.prototype.toObject;Hash.from=$H;var ObjectRange=Class.create(Enumerable,{initialize:function(C,A,B){this.start=C;this.end=A;this.exclusive=B;},_each:function(A){var B=this.start;while(this.include(B)){A(B);B=B.succ();}},include:function(A){if(A<this.start){return false;}if(this.exclusive){return A<this.end;}return A<=this.end;}});var $R=function(C,A,B){return new ObjectRange(C,A,B);};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(A){this.responders._each(A);},register:function(A){if(!this.include(A)){this.responders.push(A);}},unregister:function(A){this.responders=this.responders.without(A);},dispatch:function(D,B,C,A){this.each(function(E){if(Object.isFunction(E[D])){try{E[D].apply(E,[B,C,A]);}catch(F){}}});}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++;},onComplete:function(){Ajax.activeRequestCount--;}});Ajax.Base=Class.create({initialize:function(A){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,A||{});this.options.method=this.options.method.toLowerCase();if(Object.isString(this.options.parameters)){this.options.parameters=this.options.parameters.toQueryParams();}else{if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject();}}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,B,A){$super(A);this.transport=Ajax.getTransport();this.request(B);},request:function(B){this.url=B;this.method=this.options.method;var D=Object.clone(this.options.parameters);if(!["get","post"].include(this.method)){D._method=this.method;this.method="post";}this.parameters=D;if(D=Object.toQueryString(D)){if(this.method=="get"){this.url+=(this.url.include("?")?"&":"?")+D;}else{if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){D+="&_=";}}}try{var A=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(A);}Ajax.Responders.dispatch("onCreate",this,A);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1);}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||D):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange();}}catch(C){this.dispatchException(C);}},onStateChange:function(){var A=this.transport.readyState;if(A>1&&!((A==4)&&this._complete)){this.respondToReadyState(this.transport.readyState);}},setRequestHeaders:function(){var E={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){E["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){E.Connection="close";}}if(typeof this.options.requestHeaders=="object"){var C=this.options.requestHeaders;if(Object.isFunction(C.push)){for(var B=0,D=C.length;B<D;B+=2){E[C[B]]=C[B+1];}}else{$H(C).each(function(F){E[F.key]=F.value;});}}for(var A in E){this.transport.setRequestHeader(A,E[A]);}},success:function(){var A=this.getStatus();return !A||(A>=200&&A<300);},getStatus:function(){try{return this.transport.status||0;}catch(A){return 0;}},respondToReadyState:function(A){var C=Ajax.Request.Events[A],B=new Ajax.Response(this);if(C=="Complete"){try{this._complete=true;(this.options["on"+B.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(B,B.headerJSON);}catch(D){this.dispatchException(D);}var E=B.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&E&&E.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse();}}try{(this.options["on"+C]||Prototype.emptyFunction)(B,B.headerJSON);Ajax.Responders.dispatch("on"+C,this,B,B.headerJSON);}catch(D){this.dispatchException(D);}if(C=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction;}},isSameOrigin:function(){var A=this.url.match(/^\s*https?:\/\/[^\/]*/);return !A||(A[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}));},getHeader:function(A){try{return this.transport.getResponseHeader(A)||null;}catch(B){return null;}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON());}catch(e){this.dispatchException(e);}},dispatchException:function(A){(this.options.onException||Prototype.emptyFunction)(this,A);Ajax.Responders.dispatch("onException",this,A);}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(C){this.request=C;var D=this.transport=C.transport,A=this.readyState=D.readyState;if((A>2&&!Prototype.Browser.IE)||A==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(D.responseText);this.headerJSON=this._getHeaderJSON();}if(A==4){var B=D.responseXML;this.responseXML=Object.isUndefined(B)?null:B;this.responseJSON=this._getResponseJSON();}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||"";}catch(A){return"";}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders();}catch(A){return null;}},getResponseHeader:function(A){return this.transport.getResponseHeader(A);},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders();},_getHeaderJSON:function(){var A=this.getHeader("X-JSON");if(!A){return null;}A=decodeURIComponent(escape(A));try{return A.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin());}catch(B){this.request.dispatchException(B);}},_getResponseJSON:function(){var A=this.request.options;if(!A.evalJSON||(A.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null;}try{return this.responseText.evalJSON(A.sanitizeJSON||!this.request.isSameOrigin());}catch(B){this.request.dispatchException(B);}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,A,C,B){this.container={success:(A.success||A),failure:(A.failure||(A.success?null:A))};B=Object.clone(B);var D=B.onComplete;B.onComplete=(function(E,F){this.updateContent(E.responseText);if(Object.isFunction(D)){D(E,F);}}).bind(this);$super(C,B);},updateContent:function(D){var C=this.container[this.success()?"success":"failure"],A=this.options;if(!A.evalScripts){D=D.stripScripts();}if(C=$(C)){if(A.insertion){if(Object.isString(A.insertion)){var B={};B[A.insertion]=D;C.insert(B);}else{A.insertion(C,D);}}else{C.update(D);}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,A,C,B){$super(B);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=A;this.url=C;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(A){if(this.options.decay){this.decay=(A.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=A.responseText;}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});function $(B){if(arguments.length>1){for(var A=0,D=[],C=arguments.length;A<C;A++){D.push($(arguments[A]));}return D;}if(Object.isString(B)){B=document.getElementById(B);}return Element.extend(B);}if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(F,A){var C=[];var E=document.evaluate(F,$(A)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var B=0,D=E.snapshotLength;B<D;B++){C.push(Element.extend(E.snapshotItem(B)));}return C;};}if(!window.Node){var Node={};}if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12});}(function(){var A=this.Element;this.Element=function(D,C){C=C||{};D=D.toLowerCase();var B=Element.cache;if(Prototype.Browser.IE&&C.name){D="<"+D+' name="'+C.name+'">';delete C.name;return Element.writeAttribute(document.createElement(D),C);}if(!B[D]){B[D]=Element.extend(document.createElement(D));}return Element.writeAttribute(B[D].cloneNode(false),C);};Object.extend(this.Element,A||{});}).call(window);Element.cache={};Element.Methods={visible:function(A){return $(A).style.display!="none";},toggle:function(A){A=$(A);Element[Element.visible(A)?"hide":"show"](A);return A;},hide:function(A){$(A).style.display="none";return A;},show:function(A){$(A).style.display="";return A;},remove:function(A){A=$(A);A.parentNode.removeChild(A);return A;},update:function(A,B){A=$(A);if(B&&B.toElement){B=B.toElement();}if(Object.isElement(B)){return A.update().insert(B);}B=Object.toHTML(B);A.innerHTML=B.stripScripts();B.evalScripts.bind(B).defer();return A;},replace:function(B,C){B=$(B);if(C&&C.toElement){C=C.toElement();}else{if(!Object.isElement(C)){C=Object.toHTML(C);var A=B.ownerDocument.createRange();A.selectNode(B);C.evalScripts.bind(C).defer();C=A.createContextualFragment(C.stripScripts());}}B.parentNode.replaceChild(C,B);return B;},insert:function(C,E){C=$(C);if(Object.isString(E)||Object.isNumber(E)||Object.isElement(E)||(E&&(E.toElement||E.toHTML))){E={bottom:E};}var D,F,B,G;for(var A in E){D=E[A];A=A.toLowerCase();F=Element._insertionTranslations[A];if(D&&D.toElement){D=D.toElement();}if(Object.isElement(D)){F(C,D);continue;}D=Object.toHTML(D);B=((A=="before"||A=="after")?C.parentNode:C).tagName.toUpperCase();G=Element._getContentFromAnonymousElement(B,D.stripScripts());if(A=="top"||A=="after"){G.reverse();}G.each(F.curry(C));D.evalScripts.bind(D).defer();}return C;},wrap:function(B,C,A){B=$(B);if(Object.isElement(C)){$(C).writeAttribute(A||{});}else{if(Object.isString(C)){C=new Element(C,A);}else{C=new Element("div",C);}}if(B.parentNode){B.parentNode.replaceChild(C,B);}C.appendChild(B);return C;},inspect:function(B){B=$(B);var A="<"+B.tagName.toLowerCase();$H({id:"id",className:"class"}).each(function(F){var E=F.first(),C=F.last();var D=(B[E]||"").toString();if(D){A+=" "+C+"="+D.inspect(true);}});return A+">";},recursivelyCollect:function(A,C){A=$(A);var B=[];while(A=A[C]){if(A.nodeType==1){B.push(Element.extend(A));}}return B;},ancestors:function(A){return $(A).recursivelyCollect("parentNode");},descendants:function(A){return $(A).select("*");},firstDescendant:function(A){A=$(A).firstChild;while(A&&A.nodeType!=1){A=A.nextSibling;}return $(A);},immediateDescendants:function(A){if(!(A=$(A).firstChild)){return[];}while(A&&A.nodeType!=1){A=A.nextSibling;}if(A){return[A].concat($(A).nextSiblings());}return[];},previousSiblings:function(A){return $(A).recursivelyCollect("previousSibling");},nextSiblings:function(A){return $(A).recursivelyCollect("nextSibling");},siblings:function(A){A=$(A);return A.previousSiblings().reverse().concat(A.nextSiblings());},match:function(B,A){if(Object.isString(A)){A=new Selector(A);}return A.match($(B));},up:function(B,D,A){B=$(B);if(arguments.length==1){return $(B.parentNode);}var C=B.ancestors();return Object.isNumber(D)?C[D]:Selector.findElement(C,D,A);},down:function(B,C,A){B=$(B);if(arguments.length==1){return B.firstDescendant();}return Object.isNumber(C)?B.descendants()[C]:B.select(C)[A||0];},previous:function(B,D,A){B=$(B);if(arguments.length==1){return $(Selector.handlers.previousElementSibling(B));}var C=B.previousSiblings();return Object.isNumber(D)?C[D]:Selector.findElement(C,D,A);},next:function(C,D,B){C=$(C);if(arguments.length==1){return $(Selector.handlers.nextElementSibling(C));}var A=C.nextSiblings();return Object.isNumber(D)?A[D]:Selector.findElement(A,D,B);},select:function(){var A=$A(arguments),B=$(A.shift());return Selector.findChildElements(B,A);},adjacent:function(){var A=$A(arguments),B=$(A.shift());return Selector.findChildElements(B.parentNode,A).without(B);},identify:function(B){B=$(B);var C=B.readAttribute("id"),A=arguments.callee;if(C){return C;}do{C="anonymous_element_"+A.counter++;}while($(C));B.writeAttribute("id",C);return C;},readAttribute:function(C,A){C=$(C);if(Prototype.Browser.IE){var B=Element._attributeTranslations.read;if(B.values[A]){return B.values[A](C,A);}if(B.names[A]){A=B.names[A];}if(A.include(":")){return(!C.attributes||!C.attributes[A])?null:C.attributes[A].value;}}return C.getAttribute(A);},writeAttribute:function(E,C,F){E=$(E);var B={},D=Element._attributeTranslations.write;if(typeof C=="object"){B=C;}else{B[C]=Object.isUndefined(F)?true:F;}for(var A in B){C=D.names[A]||A;F=B[A];if(D.values[A]){C=D.values[A](E,F);}if(F===false||F===null){E.removeAttribute(C);}else{if(F===true){E.setAttribute(C,C);}else{E.setAttribute(C,F);}}}return E;},getHeight:function(A){return $(A).getDimensions().height;},getWidth:function(A){return $(A).getDimensions().width;},classNames:function(A){return new Element.ClassNames(A);},hasClassName:function(A,B){if(!(A=$(A))){return ;}var C=A.className;return(C.length>0&&(C==B||new RegExp("(^|\\s)"+B+"(\\s|$)").test(C)));},addClassName:function(A,B){if(!(A=$(A))){return ;}if(!A.hasClassName(B)){A.className+=(A.className?" ":"")+B;}return A;},removeClassName:function(A,B){if(!(A=$(A))){return ;}A.className=A.className.replace(new RegExp("(^|\\s+)"+B+"(\\s+|$)")," ").strip();return A;},toggleClassName:function(A,B){if(!(A=$(A))){return ;}return A[A.hasClassName(B)?"removeClassName":"addClassName"](B);},cleanWhitespace:function(B){B=$(B);var C=B.firstChild;while(C){var A=C.nextSibling;if(C.nodeType==3&&!/\S/.test(C.nodeValue)){B.removeChild(C);}C=A;}return B;},empty:function(A){return $(A).innerHTML.blank();},descendantOf:function(D,C){D=$(D),C=$(C);var F=C;if(D.compareDocumentPosition){return(D.compareDocumentPosition(C)&8)===8;}if(D.sourceIndex&&!Prototype.Browser.Opera){var E=D.sourceIndex,B=C.sourceIndex,A=C.nextSibling;if(!A){do{C=C.parentNode;}while(!(A=C.nextSibling)&&C.parentNode);}if(A&&A.sourceIndex){return(E>B&&E<A.sourceIndex);}}while(D=D.parentNode){if(D==F){return true;}}return false;},scrollTo:function(A){A=$(A);var B=A.cumulativeOffset();window.scrollTo(B[0],B[1]);return A;},getStyle:function(B,C){B=$(B);C=C=="float"?"cssFloat":C.camelize();var D=B.style[C];if(!D){var A=document.defaultView.getComputedStyle(B,null);D=A?A[C]:null;}if(C=="opacity"){return D?parseFloat(D):1;}return D=="auto"?null:D;},getOpacity:function(A){return $(A).getStyle("opacity");},setStyle:function(B,C){B=$(B);var E=B.style,A;if(Object.isString(C)){B.style.cssText+=";"+C;return C.include("opacity")?B.setOpacity(C.match(/opacity:\s*(\d?\.?\d*)/)[1]):B;}for(var D in C){if(D=="opacity"){B.setOpacity(C[D]);}else{E[(D=="float"||D=="cssFloat")?(Object.isUndefined(E.styleFloat)?"cssFloat":"styleFloat"):D]=C[D];}}return B;},setOpacity:function(A,B){A=$(A);A.style.opacity=(B==1||B==="")?"":(B<0.00001)?0:B;return A;},getDimensions:function(C){C=$(C);var G=$(C).getStyle("display");if(G!="none"&&G!=null){return{width:C.offsetWidth,height:C.offsetHeight};}var B=C.style;var F=B.visibility;var D=B.position;var A=B.display;B.visibility="hidden";B.position="absolute";B.display="block";var H=C.clientWidth;var E=C.clientHeight;B.display=A;B.position=D;B.visibility=F;return{width:H,height:E};},makePositioned:function(A){A=$(A);var B=Element.getStyle(A,"position");if(B=="static"||!B){A._madePositioned=true;A.style.position="relative";if(window.opera){A.style.top=0;A.style.left=0;}}return A;},undoPositioned:function(A){A=$(A);if(A._madePositioned){A._madePositioned=undefined;A.style.position=A.style.top=A.style.left=A.style.bottom=A.style.right="";}return A;},makeClipping:function(A){A=$(A);if(A._overflow){return A;}A._overflow=Element.getStyle(A,"overflow")||"auto";if(A._overflow!=="hidden"){A.style.overflow="hidden";}return A;},undoClipping:function(A){A=$(A);if(!A._overflow){return A;}A.style.overflow=A._overflow=="auto"?"":A._overflow;A._overflow=null;return A;},cumulativeOffset:function(B){var A=0,C=0;do{A+=B.offsetTop||0;C+=B.offsetLeft||0;B=B.offsetParent;}while(B);return Element._returnOffset(C,A);},positionedOffset:function(B){var A=0,D=0;do{A+=B.offsetTop||0;D+=B.offsetLeft||0;B=B.offsetParent;if(B){if(B.tagName=="BODY"){break;}var C=Element.getStyle(B,"position");if(C!=="static"){break;}}}while(B);return Element._returnOffset(D,A);},absolutize:function(B){B=$(B);if(B.getStyle("position")=="absolute"){return ;}var D=B.positionedOffset();var F=D[1];var E=D[0];var C=B.clientWidth;var A=B.clientHeight;B._originalLeft=E-parseFloat(B.style.left||0);B._originalTop=F-parseFloat(B.style.top||0);B._originalWidth=B.style.width;B._originalHeight=B.style.height;B.style.position="absolute";B.style.top=F+"px";B.style.left=E+"px";B.style.width=C+"px";B.style.height=A+"px";return B;},relativize:function(A){A=$(A);if(A.getStyle("position")=="relative"){return ;}A.style.position="relative";var C=parseFloat(A.style.top||0)-(A._originalTop||0);var B=parseFloat(A.style.left||0)-(A._originalLeft||0);A.style.top=C+"px";A.style.left=B+"px";A.style.height=A._originalHeight;A.style.width=A._originalWidth;return A;},cumulativeScrollOffset:function(B){var A=0,C=0;do{A+=B.scrollTop||0;C+=B.scrollLeft||0;B=B.parentNode;}while(B);return Element._returnOffset(C,A);},getOffsetParent:function(A){if(A.offsetParent){return $(A.offsetParent);}if(A==document.body){return $(A);}while((A=A.parentNode)&&A!=document.body){if(Element.getStyle(A,"position")!="static"){return $(A);}}return $(document.body);},viewportOffset:function(D){var A=0,C=0;var B=D;do{A+=B.offsetTop||0;C+=B.offsetLeft||0;if(B.offsetParent==document.body&&Element.getStyle(B,"position")=="absolute"){break;}}while(B=B.offsetParent);B=D;do{if(!Prototype.Browser.Opera||B.tagName=="BODY"){A-=B.scrollTop||0;C-=B.scrollLeft||0;}}while(B=B.parentNode);return Element._returnOffset(C,A);},clonePosition:function(B,D){var A=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});D=$(D);var E=D.viewportOffset();B=$(B);var F=[0,0];var C=null;if(Element.getStyle(B,"position")=="absolute"){C=B.getOffsetParent();F=C.viewportOffset();}if(C==document.body){F[0]-=document.body.offsetLeft;F[1]-=document.body.offsetTop;}if(A.setLeft){B.style.left=(E[0]-F[0]+A.offsetLeft)+"px";}if(A.setTop){B.style.top=(E[1]-F[1]+A.offsetTop)+"px";}if(A.setWidth){B.style.width=D.offsetWidth+"px";}if(A.setHeight){B.style.height=D.offsetHeight+"px";}return B;}};Element.Methods.identify.counter=1;Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(D,B,C){switch(C){case"left":case"top":case"right":case"bottom":if(D(B,"position")==="static"){return null;}case"height":case"width":if(!Element.visible(B)){return null;}var E=parseInt(D(B,C),10);if(E!==B["offset"+C.capitalize()]){return E+"px";}var A;if(C==="height"){A=["border-top-width","padding-top","padding-bottom","border-bottom-width"];}else{A=["border-left-width","padding-left","padding-right","border-right-width"];}return A.inject(E,function(F,G){var H=D(B,G);return H===null?F:F-parseInt(H,10);})+"px";default:return D(B,C);}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(C,A,B){if(B==="title"){return A.title;}return C(A,B);});}else{if(Prototype.Browser.IE){Element.Methods.getOffsetParent=Element.Methods.getOffsetParent.wrap(function(C,B){B=$(B);var A=B.getStyle("position");if(A!=="static"){return C(B);}B.setStyle({position:"relative"});var D=C(B);B.setStyle({position:A});return D;});$w("positionedOffset viewportOffset").each(function(A){Element.Methods[A]=Element.Methods[A].wrap(function(E,C){C=$(C);var B=C.getStyle("position");if(B!=="static"){return E(C);}var D=C.getOffsetParent();if(D&&D.getStyle("position")==="fixed"){D.setStyle({zoom:1});}C.setStyle({position:"relative"});var F=E(C);C.setStyle({position:B});return F;});});Element.Methods.getStyle=function(A,B){A=$(A);B=(B=="float"||B=="cssFloat")?"styleFloat":B.camelize();var C=A.style[B];if(!C&&A.currentStyle){C=A.currentStyle[B];}if(B=="opacity"){if(C=(A.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){if(C[1]){return parseFloat(C[1])/100;}}return 1;}if(C=="auto"){if((B=="width"||B=="height")&&(A.getStyle("display")!="none")){return A["offset"+B.capitalize()]+"px";}return null;}return C;};Element.Methods.setOpacity=function(B,E){function F(G){return G.replace(/alpha\([^\)]*\)/gi,"");}B=$(B);var A=B.currentStyle;if((A&&!A.hasLayout)||(!A&&B.style.zoom=="normal")){B.style.zoom=1;}var D=B.getStyle("filter"),C=B.style;if(E==1||E===""){(D=F(D))?C.filter=D:C.removeAttribute("filter");return B;}else{if(E<0.00001){E=0;}}C.filter=F(D)+"alpha(opacity="+(E*100)+")";return B;};Element._attributeTranslations={read:{names:{"class":"className","for":"htmlFor"},values:{_getAttr:function(A,B){return A.getAttribute(B,2);},_getAttrNode:function(A,C){var B=A.getAttributeNode(C);return B?B.value:"";},_getEv:function(A,B){B=A.getAttribute(B);return B?B.toString().slice(23,-2):null;},_flag:function(A,B){return $(A).hasAttribute(B)?B:null;},style:function(A){return A.style.cssText.toLowerCase();},title:function(A){return A.title;}}}};Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(A,B){A.checked=!!B;},style:function(A,B){A.style.cssText=B?B:"";}}};Element._attributeTranslations.has={};$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc").each(function(A){Element._attributeTranslations.write.names[A.toLowerCase()]=A;Element._attributeTranslations.has[A.toLowerCase()]=A;});(function(A){Object.extend(A,{href:A._getAttr,src:A._getAttr,type:A._getAttr,action:A._getAttrNode,disabled:A._flag,checked:A._flag,readonly:A._flag,multiple:A._flag,onload:A._getEv,onunload:A._getEv,onclick:A._getEv,ondblclick:A._getEv,onmousedown:A._getEv,onmouseup:A._getEv,onmouseover:A._getEv,onmousemove:A._getEv,onmouseout:A._getEv,onfocus:A._getEv,onblur:A._getEv,onkeypress:A._getEv,onkeydown:A._getEv,onkeyup:A._getEv,onsubmit:A._getEv,onreset:A._getEv,onselect:A._getEv,onchange:A._getEv});})(Element._attributeTranslations.read.values);}else{if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(A,B){A=$(A);A.style.opacity=(B==1)?0.999999:(B==="")?"":(B<0.00001)?0:B;return A;};}else{if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(A,B){A=$(A);A.style.opacity=(B==1||B==="")?"":(B<0.00001)?0:B;if(B==1){if(A.tagName=="IMG"&&A.width){A.width++;A.width--;}else{try{var D=document.createTextNode(" ");A.appendChild(D);A.removeChild(D);}catch(C){}}}return A;};Element.Methods.cumulativeOffset=function(B){var A=0,C=0;do{A+=B.offsetTop||0;C+=B.offsetLeft||0;if(B.offsetParent==document.body){if(Element.getStyle(B,"position")=="absolute"){break;}}B=B.offsetParent;}while(B);return Element._returnOffset(C,A);};}}}}if(Prototype.Browser.IE||Prototype.Browser.Opera){Element.Methods.update=function(B,C){B=$(B);if(C&&C.toElement){C=C.toElement();}if(Object.isElement(C)){return B.update().insert(C);}C=Object.toHTML(C);var A=B.tagName.toUpperCase();if(A in Element._insertionTranslations.tags){$A(B.childNodes).each(function(D){B.removeChild(D);});Element._getContentFromAnonymousElement(A,C.stripScripts()).each(function(D){B.appendChild(D);});}else{B.innerHTML=C.stripScripts();}C.evalScripts.bind(C).defer();return B;};}if("outerHTML" in document.createElement("div")){Element.Methods.replace=function(C,E){C=$(C);if(E&&E.toElement){E=E.toElement();}if(Object.isElement(E)){C.parentNode.replaceChild(E,C);return C;}E=Object.toHTML(E);var D=C.parentNode,B=D.tagName.toUpperCase();if(Element._insertionTranslations.tags[B]){var F=C.next();var A=Element._getContentFromAnonymousElement(B,E.stripScripts());D.removeChild(C);if(F){A.each(function(G){D.insertBefore(G,F);});}else{A.each(function(G){D.appendChild(G);});}}else{C.outerHTML=E.stripScripts();}E.evalScripts.bind(E).defer();return C;};}Element._returnOffset=function(B,C){var A=[B,C];A.left=B;A.top=C;return A;};Element._getContentFromAnonymousElement=function(C,B){var D=new Element("div"),A=Element._insertionTranslations.tags[C];if(A){D.innerHTML=A[0]+B+A[1];A[2].times(function(){D=D.firstChild;});}else{D.innerHTML=B;}return $A(D.childNodes);};Element._insertionTranslations={before:function(A,B){A.parentNode.insertBefore(B,A);},top:function(A,B){A.insertBefore(B,A.firstChild);},bottom:function(A,B){A.appendChild(B);},after:function(A,B){A.parentNode.insertBefore(B,A.nextSibling);},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};(function(){Object.extend(this.tags,{THEAD:this.tags.TBODY,TFOOT:this.tags.TBODY,TH:this.tags.TD});}).call(Element._insertionTranslations);Element.Methods.Simulated={hasAttribute:function(A,C){C=Element._attributeTranslations.has[C]||C;var B=$(A).getAttributeNode(C);return B&&B.specified;}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);if(!Prototype.BrowserFeatures.ElementExtensions&&document.createElement("div").__proto__){window.HTMLElement={};window.HTMLElement.prototype=document.createElement("div").__proto__;Prototype.BrowserFeatures.ElementExtensions=true;}Element.extend=(function(){if(Prototype.BrowserFeatures.SpecificElementExtensions){return Prototype.K;}var A={},B=Element.Methods.ByTag;var C=Object.extend(function(F){if(!F||F._extendedByPrototype||F.nodeType!=1||F==window){return F;}var D=Object.clone(A),E=F.tagName,H,G;if(B[E]){Object.extend(D,B[E]);}for(H in D){G=D[H];if(Object.isFunction(G)&&!(H in F)){F[H]=G.methodize();}}F._extendedByPrototype=Prototype.emptyFunction;return F;},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(A,Element.Methods);Object.extend(A,Element.Methods.Simulated);}}});C.refresh();return C;})();Element.hasAttribute=function(A,B){if(A.hasAttribute){return A.hasAttribute(B);}return Element.Methods.Simulated.hasAttribute(A,B);};Element.addMethods=function(C){var I=Prototype.BrowserFeatures,D=Element.Methods.ByTag;if(!C){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods)});}if(arguments.length==2){var B=C;C=arguments[1];}if(!B){Object.extend(Element.Methods,C||{});}else{if(Object.isArray(B)){B.each(H);}else{H(B);}}function H(F){F=F.toUpperCase();if(!Element.Methods.ByTag[F]){Element.Methods.ByTag[F]={};}Object.extend(Element.Methods.ByTag[F],C);}function A(L,K,F){F=F||false;for(var N in L){var M=L[N];if(!Object.isFunction(M)){continue;}if(!F||!(N in K)){K[N]=M.methodize();}}}function E(L){var F;var K={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(K[L]){F="HTML"+K[L]+"Element";}if(window[F]){return window[F];}F="HTML"+L+"Element";if(window[F]){return window[F];}F="HTML"+L.capitalize()+"Element";if(window[F]){return window[F];}window[F]={};window[F].prototype=document.createElement(L).__proto__;return window[F];}if(I.ElementExtensions){A(Element.Methods,HTMLElement.prototype);A(Element.Methods.Simulated,HTMLElement.prototype,true);}if(I.SpecificElementExtensions){for(var J in Element.Methods.ByTag){var G=E(J);if(Object.isUndefined(G)){continue;}A(D[J],G.prototype);}}Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh){Element.extend.refresh();}Element.cache={};};document.viewport={getDimensions:function(){var A={};var C=Prototype.Browser;$w("width height").each(function(E){var B=E.capitalize();A[E]=(C.WebKit&&!document.evaluate)?self["inner"+B]:(C.Opera)?document.body["client"+B]:document.documentElement["client"+B];});return A;},getWidth:function(){return this.getDimensions().width;},getHeight:function(){return this.getDimensions().height;},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop);}};var Selector=Class.create({initialize:function(A){this.expression=A.strip();this.compileMatcher();},shouldUseXPath:function(){if(!Prototype.BrowserFeatures.XPath){return false;}var A=this.expression;if(Prototype.Browser.WebKit&&(A.include("-of-type")||A.include(":empty"))){return false;}if((/(\[[\w-]*?:|:checked)/).test(this.expression)){return false;}return true;},compileMatcher:function(){if(this.shouldUseXPath()){return this.compileXPathMatcher();}var e=this.expression,ps=Selector.patterns,h=Selector.handlers,c=Selector.criteria,le,p,m;if(Selector._cache[e]){this.matcher=Selector._cache[e];return ;}this.matcher=["this.matcher = function(root) {","var r = root, h = Selector.handlers, c = false, n;"];while(e&&le!=e&&(/\S/).test(e)){le=e;for(var i in ps){p=ps[i];if(m=e.match(p)){this.matcher.push(Object.isFunction(c[i])?c[i](m):new Template(c[i]).evaluate(m));e=e.replace(m[0],"");break;}}}this.matcher.push("return h.unique(n);\n}");eval(this.matcher.join("\n"));Selector._cache[this.expression]=this.matcher;},compileXPathMatcher:function(){var E=this.expression,F=Selector.patterns,B=Selector.xpath,D,A;if(Selector._cache[E]){this.xpath=Selector._cache[E];return ;}this.matcher=[".//*"];while(E&&D!=E&&(/\S/).test(E)){D=E;for(var C in F){if(A=E.match(F[C])){this.matcher.push(Object.isFunction(B[C])?B[C](A):new Template(B[C]).evaluate(A));E=E.replace(A[0],"");break;}}}this.xpath=this.matcher.join("");Selector._cache[this.expression]=this.xpath;},findElements:function(A){A=A||document;if(this.xpath){return document._getElementsByXPath(this.xpath,A);}return this.matcher(A);},match:function(H){this.tokens=[];var L=this.expression,A=Selector.patterns,E=Selector.assertions;var B,D,F;while(L&&B!==L&&(/\S/).test(L)){B=L;for(var I in A){D=A[I];if(F=L.match(D)){if(E[I]){this.tokens.push([I,Object.clone(F)]);L=L.replace(F[0],"");}else{return this.findElements(document).include(H);}}}}var K=true,C,J;for(var I=0,G;G=this.tokens[I];I++){C=G[0],J=G[1];if(!Selector.assertions[C](H,J)){K=false;break;}}return K;},toString:function(){return this.expression;},inspect:function(){return"#<Selector:"+this.expression.inspect()+">";}});Object.extend(Selector,{_cache:{},xpath:{descendant:"//*",child:"/*",adjacent:"/following-sibling::*[1]",laterSibling:"/following-sibling::*",tagName:function(A){if(A[1]=="*"){return"";}return"[local-name()='"+A[1].toLowerCase()+"' or local-name()='"+A[1].toUpperCase()+"']";},className:"[contains(concat(' ', @class, ' '), ' #{1} ')]",id:"[@id='#{1}']",attrPresence:function(A){A[1]=A[1].toLowerCase();return new Template("[@#{1}]").evaluate(A);},attr:function(A){A[1]=A[1].toLowerCase();A[3]=A[5]||A[6];return new Template(Selector.xpath.operators[A[2]]).evaluate(A);},pseudo:function(A){var B=Selector.xpath.pseudos[A[1]];if(!B){return"";}if(Object.isFunction(B)){return B(A);}return new Template(Selector.xpath.pseudos[A[1]]).evaluate(A);},operators:{"=":"[@#{1}='#{3}']","!=":"[@#{1}!='#{3}']","^=":"[starts-with(@#{1}, '#{3}')]","$=":"[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']","*=":"[contains(@#{1}, '#{3}')]","~=":"[contains(concat(' ', @#{1}, ' '), ' #{3} ')]","|=":"[contains(concat('-', @#{1}, '-'), '-#{3}-')]"},pseudos:{"first-child":"[not(preceding-sibling::*)]","last-child":"[not(following-sibling::*)]","only-child":"[not(preceding-sibling::* or following-sibling::*)]",empty:"[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",checked:"[@checked]",disabled:"[@disabled]",enabled:"[not(@disabled)]",not:function(B){var H=B[6],G=Selector.patterns,A=Selector.xpath,E,C;var F=[];while(H&&E!=H&&(/\S/).test(H)){E=H;for(var D in G){if(B=H.match(G[D])){C=Object.isFunction(A[D])?A[D](B):new Template(A[D]).evaluate(B);F.push("("+C.substring(1,C.length-1)+")");H=H.replace(B[0],"");break;}}}return"[not("+F.join(" and ")+")]";},"nth-child":function(A){return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ",A);},"nth-last-child":function(A){return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ",A);},"nth-of-type":function(A){return Selector.xpath.pseudos.nth("position() ",A);},"nth-last-of-type":function(A){return Selector.xpath.pseudos.nth("(last() + 1 - position()) ",A);},"first-of-type":function(A){A[6]="1";return Selector.xpath.pseudos["nth-of-type"](A);},"last-of-type":function(A){A[6]="1";return Selector.xpath.pseudos["nth-last-of-type"](A);},"only-of-type":function(A){var B=Selector.xpath.pseudos;return B["first-of-type"](A)+B["last-of-type"](A);},nth:function(E,C){var F,G=C[6],B;if(G=="even"){G="2n+0";}if(G=="odd"){G="2n+1";}if(F=G.match(/^(\d+)$/)){return"["+E+"= "+F[1]+"]";}if(F=G.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(F[1]=="-"){F[1]=-1;}var D=F[1]?Number(F[1]):1;var A=F[2]?Number(F[2]):0;B="[((#{fragment} - #{b}) mod #{a} = 0) and ((#{fragment} - #{b}) div #{a} >= 0)]";return new Template(B).evaluate({fragment:E,a:D,b:A});}}}},criteria:{tagName:'n = h.tagName(n, r, "#{1}", c);      c = false;',className:'n = h.className(n, r, "#{1}", c);    c = false;',id:'n = h.id(n, r, "#{1}", c);           c = false;',attrPresence:'n = h.attrPresence(n, r, "#{1}", c); c = false;',attr:function(A){A[3]=(A[5]||A[6]);return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(A);},pseudo:function(A){if(A[6]){A[6]=A[6].replace(/"/g,'\\"');}return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(A);},descendant:'c = "descendant";',child:'c = "child";',adjacent:'c = "adjacent";',laterSibling:'c = "laterSibling";'},patterns:{laterSibling:/^\s*~\s*/,child:/^\s*>\s*/,adjacent:/^\s*\+\s*/,descendant:/^\s/,tagName:/^\s*(\*|[\w\-]+)(\b|$)?/,id:/^#([\w\-\*]+)(\b|$)/,className:/^\.([\w\-\*]+)(\b|$)/,pseudo:/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,attrPresence:/^\[([\w]+)\]/,attr:/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/},assertions:{tagName:function(A,B){return B[1].toUpperCase()==A.tagName.toUpperCase();},className:function(A,B){return Element.hasClassName(A,B[1]);},id:function(A,B){return A.id===B[1];},attrPresence:function(A,B){return Element.hasAttribute(A,B[1]);},attr:function(B,C){var A=Element.readAttribute(B,C[1]);return A&&Selector.operators[C[2]](A,C[5]||C[6]);}},handlers:{concat:function(B,A){for(var C=0,D;D=A[C];C++){B.push(D);}return B;},mark:function(A){var D=Prototype.emptyFunction;for(var B=0,C;C=A[B];B++){C._countedByPrototype=D;}return A;},unmark:function(A){for(var B=0,C;C=A[B];B++){C._countedByPrototype=undefined;}return A;},index:function(A,D,G){A._countedByPrototype=Prototype.emptyFunction;if(D){for(var B=A.childNodes,E=B.length-1,C=1;E>=0;E--){var F=B[E];if(F.nodeType==1&&(!G||F._countedByPrototype)){F.nodeIndex=C++;}}}else{for(var E=0,C=1,B=A.childNodes;F=B[E];E++){if(F.nodeType==1&&(!G||F._countedByPrototype)){F.nodeIndex=C++;}}}},unique:function(B){if(B.length==0){return B;}var D=[],E;for(var C=0,A=B.length;C<A;C++){if(!(E=B[C])._countedByPrototype){E._countedByPrototype=Prototype.emptyFunction;D.push(Element.extend(E));}}return Selector.handlers.unmark(D);},descendant:function(A){var D=Selector.handlers;for(var C=0,B=[],E;E=A[C];C++){D.concat(B,E.getElementsByTagName("*"));}return B;},child:function(A){var E=Selector.handlers;for(var D=0,C=[],F;F=A[D];D++){for(var B=0,G;G=F.childNodes[B];B++){if(G.nodeType==1&&G.tagName!="!"){C.push(G);}}}return C;},adjacent:function(A){for(var C=0,B=[],E;E=A[C];C++){var D=this.nextElementSibling(E);if(D){B.push(D);}}return B;},laterSibling:function(A){var D=Selector.handlers;for(var C=0,B=[],E;E=A[C];C++){D.concat(B,Element.nextSiblings(E));}return B;},nextElementSibling:function(A){while(A=A.nextSibling){if(A.nodeType==1){return A;}}return null;},previousElementSibling:function(A){while(A=A.previousSibling){if(A.nodeType==1){return A;}}return null;},tagName:function(A,H,C,B){var I=C.toUpperCase();var E=[],G=Selector.handlers;if(A){if(B){if(B=="descendant"){for(var F=0,D;D=A[F];F++){G.concat(E,D.getElementsByTagName(C));}return E;}else{A=this[B](A);}if(C=="*"){return A;}}for(var F=0,D;D=A[F];F++){if(D.tagName.toUpperCase()===I){E.push(D);}}return E;}else{return H.getElementsByTagName(C);}},id:function(B,A,H,F){var G=$(H),D=Selector.handlers;if(!G){return[];}if(!B&&A==document){return[G];}if(B){if(F){if(F=="child"){for(var C=0,E;E=B[C];C++){if(G.parentNode==E){return[G];}}}else{if(F=="descendant"){for(var C=0,E;E=B[C];C++){if(Element.descendantOf(G,E)){return[G];}}}else{if(F=="adjacent"){for(var C=0,E;E=B[C];C++){if(Selector.handlers.previousElementSibling(G)==E){return[G];}}}else{B=D[F](B);}}}}for(var C=0,E;E=B[C];C++){if(E==G){return[G];}}return[];}return(G&&Element.descendantOf(G,A))?[G]:[];},className:function(B,A,C,D){if(B&&D){B=this[D](B);}return Selector.handlers.byClassName(B,A,C);},byClassName:function(C,B,F){if(!C){C=Selector.handlers.descendant([B]);}var H=" "+F+" ";for(var E=0,D=[],G,A;G=C[E];E++){A=G.className;if(A.length==0){continue;}if(A==F||(" "+A+" ").include(H)){D.push(G);}}return D;},attrPresence:function(C,B,A,G){if(!C){C=B.getElementsByTagName("*");}if(C&&G){C=this[G](C);}var E=[];for(var D=0,F;F=C[D];D++){if(Element.hasAttribute(F,A)){E.push(F);}}return E;},attr:function(A,I,H,J,C,B){if(!A){A=I.getElementsByTagName("*");}if(A&&B){A=this[B](A);}var K=Selector.operators[C],F=[];for(var E=0,D;D=A[E];E++){var G=Element.readAttribute(D,H);if(G===null){continue;}if(K(G,J)){F.push(D);}}return F;},pseudo:function(B,C,E,A,D){if(B&&D){B=this[D](B);}if(!B){B=A.getElementsByTagName("*");}return Selector.pseudos[C](B,E,A);}},pseudos:{"first-child":function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(Selector.handlers.previousElementSibling(E)){continue;}C.push(E);}return C;},"last-child":function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(Selector.handlers.nextElementSibling(E)){continue;}C.push(E);}return C;},"only-child":function(B,G,A){var E=Selector.handlers;for(var D=0,C=[],F;F=B[D];D++){if(!E.previousElementSibling(F)&&!E.nextElementSibling(F)){C.push(F);}}return C;},"nth-child":function(B,C,A){return Selector.pseudos.nth(B,C,A);},"nth-last-child":function(B,C,A){return Selector.pseudos.nth(B,C,A,true);},"nth-of-type":function(B,C,A){return Selector.pseudos.nth(B,C,A,false,true);},"nth-last-of-type":function(B,C,A){return Selector.pseudos.nth(B,C,A,true,true);},"first-of-type":function(B,C,A){return Selector.pseudos.nth(B,"1",A,false,true);},"last-of-type":function(B,C,A){return Selector.pseudos.nth(B,"1",A,true,true);},"only-of-type":function(B,D,A){var C=Selector.pseudos;return C["last-of-type"](C["first-of-type"](B,D,A),D,A);},getIndices:function(B,A,C){if(B==0){return A>0?[A]:[];}return $R(1,C).inject([],function(D,E){if(0==(E-A)%B&&(E-A)/B>=0){D.push(E);}return D;});},nth:function(A,L,N,K,C){if(A.length==0){return[];}if(L=="even"){L="2n+0";}if(L=="odd"){L="2n+1";}var J=Selector.handlers,I=[],B=[],E;J.mark(A);for(var H=0,D;D=A[H];H++){if(!D.parentNode._countedByPrototype){J.index(D.parentNode,K,C);B.push(D.parentNode);}}if(L.match(/^\d+$/)){L=Number(L);for(var H=0,D;D=A[H];H++){if(D.nodeIndex==L){I.push(D);}}}else{if(E=L.match(/^(-?\d*)?n(([+-])(\d+))?/)){if(E[1]=="-"){E[1]=-1;}var O=E[1]?Number(E[1]):1;var M=E[2]?Number(E[2]):0;var P=Selector.pseudos.getIndices(O,M,A.length);for(var H=0,D,F=P.length;D=A[H];H++){for(var G=0;G<F;G++){if(D.nodeIndex==P[G]){I.push(D);}}}}}J.unmark(A);J.unmark(B);return I;},empty:function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(E.tagName=="!"||(E.firstChild&&!E.innerHTML.match(/^\s*$/))){continue;}C.push(E);}return C;},not:function(A,D,I){var G=Selector.handlers,J,C;var H=new Selector(D).findElements(I);G.mark(H);for(var F=0,E=[],B;B=A[F];F++){if(!B._countedByPrototype){E.push(B);}}G.unmark(H);return E;},enabled:function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(!E.disabled){C.push(E);}}return C;},disabled:function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(E.disabled){C.push(E);}}return C;},checked:function(B,F,A){for(var D=0,C=[],E;E=B[D];D++){if(E.checked){C.push(E);}}return C;}},operators:{"=":function(B,A){return B==A;},"!=":function(B,A){return B!=A;},"^=":function(B,A){return B.startsWith(A);},"$=":function(B,A){return B.endsWith(A);},"*=":function(B,A){return B.include(A);},"~=":function(B,A){return(" "+B+" ").include(" "+A+" ");},"|=":function(B,A){return("-"+B.toUpperCase()+"-").include("-"+A.toUpperCase()+"-");}},split:function(B){var A=[];B.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/,function(C){A.push(C[1].strip());});return A;},matchElements:function(F,G){var E=$$(G),D=Selector.handlers;D.mark(E);for(var C=0,B=[],A;A=F[C];C++){if(A._countedByPrototype){B.push(A);}}D.unmark(E);return B;},findElement:function(B,C,A){if(Object.isNumber(C)){A=C;C=false;}return Selector.matchElements(B,C||"*")[A||0];},findChildElements:function(E,G){G=Selector.split(G.join(","));var D=[],F=Selector.handlers;for(var C=0,B=G.length,A;C<B;C++){A=new Selector(G[C].strip());F.concat(D,A.findElements(E));}return(B>1)?F.unique(D):D;}});if(Prototype.Browser.IE){Object.extend(Selector.handlers,{concat:function(B,A){for(var C=0,D;D=A[C];C++){if(D.tagName!=="!"){B.push(D);}}return B;},unmark:function(A){for(var B=0,C;C=A[B];B++){C.removeAttribute("_countedByPrototype");}return A;}});}function $$(){return Selector.findChildElements(document,$A(arguments));}var Form={reset:function(A){$(A).reset();return A;},serializeElements:function(G,B){if(typeof B!="object"){B={hash:!!B};}else{if(Object.isUndefined(B.hash)){B.hash=true;}}var C,F,A=false,E=B.submit;var D=G.inject({},function(H,I){if(!I.disabled&&I.name){C=I.name;F=$(I).getValue();if(F!=null&&(I.type!="submit"||(!A&&E!==false&&(!E||C==E)&&(A=true)))){if(C in H){if(!Object.isArray(H[C])){H[C]=[H[C]];}H[C].push(F);}else{H[C]=F;}}}return H;});return B.hash?D:Object.toQueryString(D);}};Form.Methods={serialize:function(B,A){return Form.serializeElements(Form.getElements(B),A);},getElements:function(A){return $A($(A).getElementsByTagName("*")).inject([],function(B,C){if(Form.Element.Serializers[C.tagName.toLowerCase()]){B.push(Element.extend(C));}return B;});},getInputs:function(G,C,D){G=$(G);var A=G.getElementsByTagName("input");if(!C&&!D){return $A(A).map(Element.extend);}for(var E=0,H=[],F=A.length;E<F;E++){var B=A[E];if((C&&B.type!=C)||(D&&B.name!=D)){continue;}H.push(Element.extend(B));}return H;},disable:function(A){A=$(A);Form.getElements(A).invoke("disable");return A;},enable:function(A){A=$(A);Form.getElements(A).invoke("enable");return A;},findFirstElement:function(B){var C=$(B).getElements().findAll(function(D){return"hidden"!=D.type&&!D.disabled;});var A=C.findAll(function(D){return D.hasAttribute("tabIndex")&&D.tabIndex>=0;}).sortBy(function(D){return D.tabIndex;}).first();return A?A:C.find(function(D){return["input","select","textarea"].include(D.tagName.toLowerCase());});},focusFirstElement:function(A){A=$(A);A.findFirstElement().activate();return A;},request:function(B,A){B=$(B),A=Object.clone(A||{});var D=A.parameters,C=B.readAttribute("action")||"";if(C.blank()){C=window.location.href;}A.parameters=B.serialize(true);if(D){if(Object.isString(D)){D=D.toQueryParams();}Object.extend(A.parameters,D);}if(B.hasAttribute("method")&&!A.method){A.method=B.method;}return new Ajax.Request(C,A);}};Form.Element={focus:function(A){$(A).focus();return A;},select:function(A){$(A).select();return A;}};Form.Element.Methods={serialize:function(A){A=$(A);if(!A.disabled&&A.name){var B=A.getValue();if(B!=undefined){var C={};C[A.name]=B;return Object.toQueryString(C);}}return"";},getValue:function(A){A=$(A);var B=A.tagName.toLowerCase();return Form.Element.Serializers[B](A);},setValue:function(A,B){A=$(A);var C=A.tagName.toLowerCase();Form.Element.Serializers[C](A,B);return A;},clear:function(A){$(A).value="";return A;},present:function(A){return $(A).value!="";},activate:function(A){A=$(A);try{A.focus();if(A.select&&(A.tagName.toLowerCase()!="input"||!["button","reset","submit"].include(A.type))){A.select();}}catch(B){}return A;},disable:function(A){A=$(A);A.blur();A.disabled=true;return A;},enable:function(A){A=$(A);A.disabled=false;return A;}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers={input:function(A,B){switch(A.type.toLowerCase()){case"checkbox":case"radio":return Form.Element.Serializers.inputSelector(A,B);default:return Form.Element.Serializers.textarea(A,B);}},inputSelector:function(A,B){if(Object.isUndefined(B)){return A.checked?A.value:null;}else{A.checked=!!B;}},textarea:function(A,B){if(Object.isUndefined(B)){return A.value;}else{A.value=B;}},select:function(D,A){if(Object.isUndefined(A)){return this[D.type=="select-one"?"selectOne":"selectMany"](D);}else{var C,F,G=!Object.isArray(A);for(var B=0,E=D.length;B<E;B++){C=D.options[B];F=this.optionValue(C);if(G){if(F==A){C.selected=true;return ;}}else{C.selected=A.include(F);}}}},selectOne:function(B){var A=B.selectedIndex;return A>=0?this.optionValue(B.options[A]):null;},selectMany:function(D){var A,E=D.length;if(!E){return null;}for(var C=0,A=[];C<E;C++){var B=D.options[C];if(B.selected){A.push(this.optionValue(B));}}return A;},optionValue:function(A){return Element.extend(A).hasAttribute("value")?A.value:A.text;}};Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,A,B,C){$super(C,B);this.element=$(A);this.lastValue=this.getValue();},execute:function(){var A=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(A)?this.lastValue!=A:String(this.lastValue)!=String(A)){this.callback(this.element,A);this.lastValue=A;}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element);}});Abstract.EventObserver=Class.create({initialize:function(A,B){this.element=$(A);this.callback=B;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=="form"){this.registerFormCallbacks();}else{this.registerCallback(this.element);}},onElementEvent:function(){var A=this.getValue();if(this.lastValue!=A){this.callback(this.element,A);this.lastValue=A;}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this);},registerCallback:function(A){if(A.type){switch(A.type.toLowerCase()){case"checkbox":case"radio":Event.observe(A,"click",this.onElementEvent.bind(this));break;default:Event.observe(A,"change",this.onElementEvent.bind(this));break;}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element);}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element);}});if(!window.Event){var Event={};}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,KEY_INSERT:45,cache:{},relatedTarget:function(B){var A;switch(B.type){case"mouseover":A=B.fromElement;break;case"mouseout":A=B.toElement;break;default:return null;}return Element.extend(A);}});Event.Methods=(function(){var A;if(Prototype.Browser.IE){var B={0:1,1:4,2:2};A=function(D,C){return D.button==B[C];};}else{if(Prototype.Browser.WebKit){A=function(D,C){switch(C){case 0:return D.which==1&&!D.metaKey;case 1:return D.which==1&&D.metaKey;default:return false;}};}else{A=function(D,C){return D.which?(D.which===C+1):(D.button===C);};}}return{isLeftClick:function(C){return A(C,0);},isMiddleClick:function(C){return A(C,1);},isRightClick:function(C){return A(C,2);},element:function(D){var C=Event.extend(D).target;return Element.extend(C.nodeType==Node.TEXT_NODE?C.parentNode:C);},findElement:function(D,F){var C=Event.element(D);if(!F){return C;}var E=[C].concat(C.ancestors());return Selector.findElement(E,F,0);},pointer:function(C){return{x:C.pageX||(C.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft)),y:C.pageY||(C.clientY+(document.documentElement.scrollTop||document.body.scrollTop))};},pointerX:function(C){return Event.pointer(C).x;},pointerY:function(C){return Event.pointer(C).y;},stop:function(C){Event.extend(C);C.preventDefault();C.stopPropagation();C.stopped=true;}};})();Event.extend=(function(){var A=Object.keys(Event.Methods).inject({},function(B,C){B[C]=Event.Methods[C].methodize();return B;});if(Prototype.Browser.IE){Object.extend(A,{stopPropagation:function(){this.cancelBubble=true;},preventDefault:function(){this.returnValue=false;},inspect:function(){return"[object Event]";}});return function(B){if(!B){return false;}if(B._extendedByPrototype){return B;}B._extendedByPrototype=Prototype.emptyFunction;var C=Event.pointer(B);Object.extend(B,{target:B.srcElement,relatedTarget:Event.relatedTarget(B),pageX:C.x,pageY:C.y});return Object.extend(B,A);};}else{Event.prototype=Event.prototype||document.createEvent("HTMLEvents").__proto__;Object.extend(Event.prototype,A);return Prototype.K;}})();Object.extend(Event,(function(){var B=Event.cache;function C(J){if(J._prototypeEventID){return J._prototypeEventID[0];}arguments.callee.id=arguments.callee.id||1;return J._prototypeEventID=[++arguments.callee.id];}function G(J){if(J&&J.include(":")){return"dataavailable";}return J;}function A(J){return B[J]=B[J]||{};}function F(L,J){var K=A(L);return K[J]=K[J]||[];}function H(K,J,L){var O=C(K);var N=F(O,J);if(N.pluck("handler").include(L)){return false;}var M=function(P){if(!Event||!Event.extend||(P.eventName&&P.eventName!=J)){return false;}Event.extend(P);L.call(K,P);};M.handler=L;N.push(M);return M;}function I(M,J,K){var L=F(M,J);return L.find(function(N){return N.handler==K;});}function D(M,J,K){var L=A(M);if(!L[J]){return false;}L[J]=L[J].without(I(M,J,K));}function E(){for(var K in B){for(var J in B[K]){B[K][J]=null;}}}if(window.attachEvent){window.attachEvent("onunload",E);}return{observe:function(L,J,M){L=$(L);var K=G(J);var N=H(L,J,M);if(!N){return L;}if(L.addEventListener){L.addEventListener(K,N,false);}else{L.attachEvent("on"+K,N);}return L;},stopObserving:function(L,J,M){L=$(L);var O=C(L),K=G(J);if(!M&&J){F(O,J).each(function(P){L.stopObserving(J,P.handler);});return L;}else{if(!J){Object.keys(A(O)).each(function(P){L.stopObserving(P);});return L;}}var N=I(O,J,M);if(!N){return L;}if(L.removeEventListener){L.removeEventListener(K,N,false);}else{L.detachEvent("on"+K,N);}D(O,J,M);return L;},fire:function(L,K,J){L=$(L);if(L==document&&document.createEvent&&!L.dispatchEvent){L=document.documentElement;}var M;if(document.createEvent){M=document.createEvent("HTMLEvents");M.initEvent("dataavailable",true,true);}else{M=document.createEventObject();M.eventType="ondataavailable";}M.eventName=K;M.memo=J||{};if(document.createEvent){L.dispatchEvent(M);}else{L.fireEvent(M.eventType,M);}return Event.extend(M);}};})());Object.extend(Event,Event.Methods);Element.addMethods({fire:Event.fire,observe:Event.observe,stopObserving:Event.stopObserving});Object.extend(document,{fire:Element.Methods.fire.methodize(),observe:Element.Methods.observe.methodize(),stopObserving:Element.Methods.stopObserving.methodize(),loaded:false});(function(){var B;function A(){if(document.loaded){return ;}if(B){window.clearInterval(B);}document.fire("dom:loaded");document.loaded=true;}if(document.addEventListener){if(Prototype.Browser.WebKit){B=window.setInterval(function(){if(/loaded|complete/.test(document.readyState)){A();}},0);Event.observe(window,"load",A);}else{document.addEventListener("DOMContentLoaded",A,false);}}else{document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");$("__onDOMContentLoaded").onreadystatechange=function(){if(this.readyState=="complete"){this.onreadystatechange=null;A();}};}})();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(A,B){return Element.insert(A,{before:B});},Top:function(A,B){return Element.insert(A,{top:B});},Bottom:function(A,B){return Element.insert(A,{bottom:B});},After:function(A,B){return Element.insert(A,{after:B});}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');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;},within:function(B,A,C){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(B,A,C);}this.xcomp=A;this.ycomp=C;this.offset=Element.cumulativeOffset(B);return(C>=this.offset[1]&&C<this.offset[1]+B.offsetHeight&&A>=this.offset[0]&&A<this.offset[0]+B.offsetWidth);},withinIncludingScrolloffsets:function(B,A,D){var C=Element.cumulativeScrollOffset(B);this.xcomp=A+C[0]-this.deltaX;this.ycomp=D+C[1]-this.deltaY;this.offset=Element.cumulativeOffset(B);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+B.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+B.offsetWidth);},overlap:function(B,A){if(!B){return 0;}if(B=="vertical"){return((this.offset[1]+A.offsetHeight)-this.ycomp)/A.offsetHeight;}if(B=="horizontal"){return((this.offset[0]+A.offsetWidth)-this.xcomp)/A.offsetWidth;}},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(A){Position.prepare();return Element.absolutize(A);},relativize:function(A){Position.prepare();return Element.relativize(A);},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(B,C,A){A=A||{};return Element.clonePosition(C,B,A);}};if(!document.getElementsByClassName){document.getElementsByClassName=function(B){function A(C){return C.blank()?null:"[contains(concat(' ', @class, ' '), ' "+C+" ')]";}B.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(C,E){E=E.toString().strip();var D=/\s/.test(E)?$w(E).map(A).join(""):A(E);return D?document._getElementsByXPath(".//*"+D,C):[];}:function(E,F){F=F.toString().strip();var G=[],H=(/\s/.test(F)?$w(F):null);if(!H&&!F){return G;}var C=$(E).getElementsByTagName("*");F=" "+F+" ";for(var D=0,J,I;J=C[D];D++){if(J.className&&(I=" "+J.className+" ")&&(I.include(F)||(H&&H.all(function(K){return !K.toString().blank()&&I.include(" "+K+" ");})))){G.push(Element.extend(J));}}return G;};return function(D,C){return $(C||document.body).getElementsByClassName(D);};}(Element.Methods);}Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(A){this.element=$(A);},_each:function(A){this.element.className.split(/\s+/).select(function(B){return B.length>0;})._each(A);},set:function(A){this.element.className=A;},add:function(A){if(this.include(A)){return ;}this.set($A(this).concat(A).join(" "));},remove:function(A){if(!this.include(A)){return ;}this.set($A(this).without(A).join(" "));},toString:function(){return $A(this).join(" ");}};Object.extend(Element.ClassNames.prototype,Enumerable);Element.addMethods();

// script.aculo.us v1.8.1 - http://script.aculo.us, http://mir.aculo.us
var Scriptaculous={Version:"1.8.1",require:function(A){document.write('<script type="text/javascript" src="'+A+'"><\/script>');},REQUIRED_PROTOTYPE:"1.6.0",load:function(){function A(B){var C=B.split(".");return parseInt(C[0])*100000+parseInt(C[1])*1000+parseInt(C[2]);}if((typeof Prototype=="undefined")||(typeof Element=="undefined")||(typeof Element.Methods=="undefined")||(A(Prototype.Version)<A(Scriptaculous.REQUIRED_PROTOTYPE))){throw ("script.aculo.us requires the Prototype JavaScript framework >= "+Scriptaculous.REQUIRED_PROTOTYPE);}$A(document.getElementsByTagName("script")).findAll(function(B){return(B.src&&B.src.match(/scriptaculous\.js(\?.*)?$/));}).each(function(C){var D=C.src.replace(/scriptaculous\.js(\?.*)?$/,"");var B=C.src.match(/\?.*load=([a-z,]*)/);(B?B[1]:"builder,effects,dragdrop,controls,slider,sound").split(",").each(function(E){Scriptaculous.require(D+E+".js");});});}};Scriptaculous.load();

// script.aculo.us effects.js v1.8.1 - http://script.aculo.us, http://mir.aculo.us
String.prototype.parseColor=function(){var A="#";if(this.slice(0,4)=="rgb("){var C=this.slice(4,this.length-1).split(",");var B=0;do{A+=parseInt(C[B]).toColorPart();}while(++B<3);}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var B=1;B<4;B++){A+=(this.charAt(B)+this.charAt(B)).toLowerCase();}}if(this.length==7){A=this.toLowerCase();}}}return(A.length==7?A:(arguments[0]||this));};Element.collectTextNodes=function(A){return $A($(A).childNodes).collect(function(B){return(B.nodeType==3?B.nodeValue:(B.hasChildNodes()?Element.collectTextNodes(B):""));}).flatten().join("");};Element.collectTextNodesIgnoreClass=function(A,B){return $A($(A).childNodes).collect(function(C){return(C.nodeType==3?C.nodeValue:((C.hasChildNodes()&&!Element.hasClassName(C,B))?Element.collectTextNodesIgnoreClass(C,B):""));}).flatten().join("");};Element.setContentZoom=function(A,B){A=$(A);A.setStyle({fontSize:(B/100)+"em"});if(Prototype.Browser.WebKit){window.scrollBy(0,0);}return A;};Element.getInlineOpacity=function(A){return $(A).style.opacity||"";};Element.forceRerendering=function(A){try{A=$(A);var C=document.createTextNode(" ");A.appendChild(C);A.removeChild(C);}catch(B){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(A){return(-Math.cos(A*Math.PI)/2)+0.5;},reverse:function(A){return 1-A;},flicker:function(A){var A=((-Math.cos(A*Math.PI)/4)+0.75)+Math.random()/4;return A>1?1:A;},wobble:function(A){return(-Math.cos(A*Math.PI*(9*A))/2)+0.5;},pulse:function(B,A){A=A||5;return(((B%(1/A))*A).round()==0?((B*A*2)-(B*A*2).floor()):1-((B*A*2)-(B*A*2).floor()));},spring:function(A){return 1-(Math.cos(A*4.5*Math.PI)*Math.exp(-A*6));},none:function(A){return 0;},full:function(A){return 1;}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(A){var B="position:relative";if(Prototype.Browser.IE){B+=";zoom:1";}A=$(A);$A(A.childNodes).each(function(C){if(C.nodeType==3){C.nodeValue.toArray().each(function(D){A.insertBefore(new Element("span",{style:B}).update(D==" "?String.fromCharCode(160):D),C);});Element.remove(C);}});},multiple:function(B,C){var E;if(((typeof B=="object")||Object.isFunction(B))&&(B.length)){E=B;}else{E=$(B).childNodes;}var A=Object.extend({speed:0.1,delay:0},arguments[2]||{});var D=A.delay;$A(E).each(function(G,F){new C(G,Object.extend(A,{delay:F*A.speed+D}));});},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(B,C){B=$(B);C=(C||"appear").toLowerCase();var A=Object.extend({queue:{position:"end",scope:(B.id||"global"),limit:1}},arguments[2]||{});Effect[B.visible()?Effect.PAIRS[C][1]:Effect.PAIRS[C][0]](B,A);}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null;},_each:function(A){this.effects._each(A);},add:function(B){var C=new Date().getTime();var A=Object.isString(B.options.queue)?B.options.queue:B.options.queue.position;switch(A){case"front":this.effects.findAll(function(D){return D.state=="idle";}).each(function(D){D.startOn+=B.finishOn;D.finishOn+=B.finishOn;});break;case"with-last":C=this.effects.pluck("startOn").max()||C;break;case"end":C=this.effects.pluck("finishOn").max()||C;break;}B.startOn+=C;B.finishOn+=C;if(!B.options.queue.limit||(this.effects.length<B.options.queue.limit)){this.effects.push(B);}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15);}},remove:function(A){this.effects=this.effects.reject(function(B){return B==A;});if(this.effects.length==0){clearInterval(this.interval);this.interval=null;}},loop:function(){var C=new Date().getTime();for(var B=0,A=this.effects.length;B<A;B++){this.effects[B]&&this.effects[B].loop(C);}}});Effect.Queues={instances:$H(),get:function(A){if(!Object.isString(A)){return A;}return this.instances.get(A)||this.instances.set(A,new Effect.ScopedQueue());}};Effect.Queue=Effect.Queues.get("global");Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+"Internal"]?"this.options."+eventName+"Internal(this);":"")+(options[eventName]?"this.options."+eventName+"(this);":""));}if(options&&options.transition===false){options.transition=Effect.Transitions.linear;}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.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;eval('this.render = function(pos){ if (this.state=="idle"){this.state="running";'+codeForEvent(this.options,"beforeSetup")+(this.setup?"this.setup();":"")+codeForEvent(this.options,"afterSetup")+'};if (this.state=="running"){pos=this.options.transition(pos)*'+this.fromToDelta+"+"+this.options.from+";this.position=pos;"+codeForEvent(this.options,"beforeUpdate")+(this.update?"this.update(pos);":"")+codeForEvent(this.options,"afterUpdate")+"}}");this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this);}},loop:function(C){if(C>=this.startOn){if(C>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish();}this.event("afterFinish");return ;}var B=(C-this.startOn)/this.totalTime,A=(B*this.totalFrames).round();if(A>this.currentFrame){this.render(B);this.currentFrame=A;}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this);}this.state="finished";},event:function(A){if(this.options[A+"Internal"]){this.options[A+"Internal"](this);}if(this.options[A]){this.options[A](this);}},inspect:function(){var A=$H();for(property in this){if(!Object.isFunction(this[property])){A.set(property,this[property]);}}return"#<Effect:"+A.inspect()+",options:"+$H(this.options).inspect()+">";}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(A){this.effects=A||[];this.start(arguments[1]);},update:function(A){this.effects.invoke("render",A);},finish:function(A){this.effects.each(function(B){B.render(1);B.cancel();B.event("beforeFinish");if(B.finish){B.finish(A);}B.event("afterFinish");});}});Effect.Tween=Class.create(Effect.Base,{initialize:function(C,F,E){C=Object.isString(C)?$(C):C;var B=$A(arguments),D=B.last(),A=B.length==5?B[3]:null;this.method=Object.isFunction(D)?D.bind(C):Object.isFunction(C[D])?C[D].bind(C):function(G){C[D]=G;};this.start(Object.extend({from:F,to:E},A||{}));},update:function(A){this.method(A);}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}));},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError);}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}var A=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(A);},update:function(A){this.element.setOpacity(A);}});Effect.Move=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError);}var A=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(A);},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(A){this.element.setStyle({left:(this.options.x*A+this.originalLeft).round()+"px",top:(this.options.y*A+this.originalTop).round()+"px"});}});Effect.MoveBy=function(B,A,C){return new Effect.Move(B,Object.extend({x:C,y:A},arguments[3]||{}));};Effect.Scale=Class.create(Effect.Base,{initialize:function(B,C){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError);}var A=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:C},arguments[2]||{});this.start(A);},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle("position");this.originalStyle={};["top","left","width","height","fontSize"].each(function(B){this.originalStyle[B]=this.element.style[B];}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var A=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(B){if(A.indexOf(B)>0){this.fontSize=parseFloat(A);this.fontSizeType=B;}}.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(A){var B=(this.options.scaleFrom/100)+(this.factor*A);if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*B+this.fontSizeType});}this.setDimensions(this.dims[0]*B,this.dims[1]*B);},finish:function(A){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle);}},setDimensions:function(A,D){var E={};if(this.options.scaleX){E.width=D.round()+"px";}if(this.options.scaleY){E.height=A.round()+"px";}if(this.options.scaleFromCenter){var C=(A-this.dims[0])/2;var B=(D-this.dims[1])/2;if(this.elementPositioning=="absolute"){if(this.options.scaleY){E.top=this.originalTop-C+"px";}if(this.options.scaleX){E.left=this.originalLeft-B+"px";}}else{if(this.options.scaleY){E.top=-C+"px";}if(this.options.scaleX){E.left=-B+"px";}}}this.element.setStyle(E);}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(B){this.element=$(B);if(!this.element){throw (Effect._elementDoesNotExistError);}var A=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(A);},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(A){return parseInt(this.options.startcolor.slice(A*2+1,A*2+3),16);}.bind(this));this._delta=$R(0,2).map(function(A){return parseInt(this.options.endcolor.slice(A*2+1,A*2+3),16)-this._base[A];}.bind(this));},update:function(A){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(B,C,D){return B+((this._base[D]+(this._delta[D]*A)).round().toColorPart());}.bind(this))});},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}));}});Effect.ScrollTo=function(D){var C=arguments[1]||{},B=document.viewport.getScrollOffsets(),E=$(D).cumulativeOffset(),A=(window.height||document.body.scrollHeight)-document.viewport.getHeight();if(C.offset){E[1]+=C.offset;}return new Effect.Tween(null,B.top,E[1]>A?A:E[1],C,function(F){scrollTo(B.left,F.round());});};Effect.Fade=function(C){C=$(C);var A=C.getInlineOpacity();var B=Object.extend({from:C.getOpacity()||1,to:0,afterFinishInternal:function(D){if(D.options.to!=0){return ;}D.element.hide().setStyle({opacity:A});}},arguments[1]||{});return new Effect.Opacity(C,B);};Effect.Appear=function(B){B=$(B);var A=Object.extend({from:(B.getStyle("display")=="none"?0:B.getOpacity()||0),to:1,afterFinishInternal:function(C){C.element.forceRerendering();},beforeSetup:function(C){C.element.setOpacity(C.options.from).show();}},arguments[1]||{});return new Effect.Opacity(B,A);};Effect.Puff=function(B){B=$(B);var A={opacity:B.getInlineOpacity(),position:B.getStyle("position"),top:B.style.top,left:B.style.left,width:B.style.width,height:B.style.height};return new Effect.Parallel([new Effect.Scale(B,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(B,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(C){Position.absolutize(C.effects[0].element);},afterFinishInternal:function(C){C.effects[0].element.hide().setStyle(A);}},arguments[1]||{}));};Effect.BlindUp=function(A){A=$(A);A.makeClipping();return new Effect.Scale(A,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(B){B.element.hide().undoClipping();}},arguments[1]||{}));};Effect.BlindDown=function(B){B=$(B);var A=B.getDimensions();return new Effect.Scale(B,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:A.height,originalWidth:A.width},restoreAfterFinish:true,afterSetup:function(C){C.element.makeClipping().setStyle({height:"0px"}).show();},afterFinishInternal:function(C){C.element.undoClipping();}},arguments[1]||{}));};Effect.SwitchOff=function(B){B=$(B);var A=B.getInlineOpacity();return new Effect.Appear(B,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(C){new Effect.Scale(C.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(D){D.element.makePositioned().makeClipping();},afterFinishInternal:function(D){D.element.hide().undoClipping().undoPositioned().setStyle({opacity:A});}});}},arguments[1]||{}));};Effect.DropOut=function(B){B=$(B);var A={top:B.getStyle("top"),left:B.getStyle("left"),opacity:B.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(B,{x:0,y:100,sync:true}),new Effect.Opacity(B,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(C){C.effects[0].element.makePositioned();},afterFinishInternal:function(C){C.effects[0].element.hide().undoPositioned().setStyle(A);}},arguments[1]||{}));};Effect.Shake=function(D){D=$(D);var B=Object.extend({distance:20,duration:0.5},arguments[1]||{});var E=parseFloat(B.distance);var C=parseFloat(B.duration)/10;var A={top:D.getStyle("top"),left:D.getStyle("left")};return new Effect.Move(D,{x:E,y:0,duration:C,afterFinishInternal:function(F){new Effect.Move(F.element,{x:-E*2,y:0,duration:C*2,afterFinishInternal:function(G){new Effect.Move(G.element,{x:E*2,y:0,duration:C*2,afterFinishInternal:function(H){new Effect.Move(H.element,{x:-E*2,y:0,duration:C*2,afterFinishInternal:function(I){new Effect.Move(I.element,{x:E*2,y:0,duration:C*2,afterFinishInternal:function(J){new Effect.Move(J.element,{x:-E,y:0,duration:C,afterFinishInternal:function(K){K.element.undoPositioned().setStyle(A);}});}});}});}});}});}});};Effect.SlideDown=function(C){C=$(C).cleanWhitespace();var A=C.down().getStyle("bottom");var B=C.getDimensions();return new Effect.Scale(C,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:B.height,originalWidth:B.width},restoreAfterFinish:true,afterSetup:function(D){D.element.makePositioned();D.element.down().makePositioned();if(window.opera){D.element.setStyle({top:""});}D.element.makeClipping().setStyle({height:"0px"}).show();},afterUpdateInternal:function(D){D.element.down().setStyle({bottom:(D.dims[0]-D.element.clientHeight)+"px"});},afterFinishInternal:function(D){D.element.undoClipping().undoPositioned();D.element.down().undoPositioned().setStyle({bottom:A});}},arguments[1]||{}));};Effect.SlideUp=function(C){C=$(C).cleanWhitespace();var A=C.down().getStyle("bottom");var B=C.getDimensions();return new Effect.Scale(C,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:B.height,originalWidth:B.width},restoreAfterFinish:true,afterSetup:function(D){D.element.makePositioned();D.element.down().makePositioned();if(window.opera){D.element.setStyle({top:""});}D.element.makeClipping().show();},afterUpdateInternal:function(D){D.element.down().setStyle({bottom:(D.dims[0]-D.element.clientHeight)+"px"});},afterFinishInternal:function(D){D.element.hide().undoClipping().undoPositioned();D.element.down().undoPositioned().setStyle({bottom:A});}},arguments[1]||{}));};Effect.Squish=function(A){return new Effect.Scale(A,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(B){B.element.makeClipping();},afterFinishInternal:function(B){B.element.hide().undoClipping();}});};Effect.Grow=function(C){C=$(C);var B=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var A={top:C.style.top,left:C.style.left,height:C.style.height,width:C.style.width,opacity:C.getInlineOpacity()};var G=C.getDimensions();var H,F;var E,D;switch(B.direction){case"top-left":H=F=E=D=0;break;case"top-right":H=G.width;F=D=0;E=-G.width;break;case"bottom-left":H=E=0;F=G.height;D=-G.height;break;case"bottom-right":H=G.width;F=G.height;E=-G.width;D=-G.height;break;case"center":H=G.width/2;F=G.height/2;E=-G.width/2;D=-G.height/2;break;}return new Effect.Move(C,{x:H,y:F,duration:0.01,beforeSetup:function(I){I.element.hide().makeClipping().makePositioned();},afterFinishInternal:function(I){new Effect.Parallel([new Effect.Opacity(I.element,{sync:true,to:1,from:0,transition:B.opacityTransition}),new Effect.Move(I.element,{x:E,y:D,sync:true,transition:B.moveTransition}),new Effect.Scale(I.element,100,{scaleMode:{originalHeight:G.height,originalWidth:G.width},sync:true,scaleFrom:window.opera?1:0,transition:B.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(J){J.effects[0].element.setStyle({height:"0px"}).show();},afterFinishInternal:function(J){J.effects[0].element.undoClipping().undoPositioned().setStyle(A);}},B));}});};Effect.Shrink=function(C){C=$(C);var B=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var A={top:C.style.top,left:C.style.left,height:C.style.height,width:C.style.width,opacity:C.getInlineOpacity()};var F=C.getDimensions();var E,D;switch(B.direction){case"top-left":E=D=0;break;case"top-right":E=F.width;D=0;break;case"bottom-left":E=0;D=F.height;break;case"bottom-right":E=F.width;D=F.height;break;case"center":E=F.width/2;D=F.height/2;break;}return new Effect.Parallel([new Effect.Opacity(C,{sync:true,to:0,from:1,transition:B.opacityTransition}),new Effect.Scale(C,window.opera?1:0,{sync:true,transition:B.scaleTransition,restoreAfterFinish:true}),new Effect.Move(C,{x:E,y:D,sync:true,transition:B.moveTransition})],Object.extend({beforeStartInternal:function(G){G.effects[0].element.makePositioned().makeClipping();},afterFinishInternal:function(G){G.effects[0].element.hide().undoClipping().undoPositioned().setStyle(A);}},B));};Effect.Pulsate=function(C){C=$(C);var B=arguments[1]||{};var A=C.getInlineOpacity();var E=B.transition||Effect.Transitions.sinoidal;var D=function(F){return E(1-Effect.Transitions.pulse(F,B.pulses));};D.bind(E);return new Effect.Opacity(C,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(F){F.element.setStyle({opacity:A});}},B),{transition:D}));};Effect.Fold=function(B){B=$(B);var A={top:B.style.top,left:B.style.left,width:B.style.width,height:B.style.height};B.makeClipping();return new Effect.Scale(B,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(C){new Effect.Scale(B,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(D){D.element.hide().undoClipping().setStyle(A);}});}},arguments[1]||{}));};Effect.Morph=Class.create(Effect.Base,{initialize:function(C){this.element=$(C);if(!this.element){throw (Effect._elementDoesNotExistError);}var A=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(A.style)){this.style=$H(A.style);}else{if(A.style.include(":")){this.style=A.style.parseStyle();}else{this.element.addClassName(A.style);this.style=$H(this.element.getStyles());this.element.removeClassName(A.style);var B=this.element.getStyles();this.style=this.style.reject(function(D){return D.value==B[D.key];});A.afterFinishInternal=function(D){D.element.addClassName(D.options.style);D.transforms.each(function(E){D.element.style[E.style]="";});};}}this.start(A);},setup:function(){function A(B){if(!B||["rgba(0, 0, 0, 0)","transparent"].include(B)){B="#ffffff";}B=B.parseColor();return $R(0,2).map(function(C){return parseInt(B.slice(C*2+1,C*2+3),16);});}this.transforms=this.style.map(function(G){var F=G[0],E=G[1],D=null;if(E.parseColor("#zzzzzz")!="#zzzzzz"){E=E.parseColor();D="color";}else{if(F=="opacity"){E=parseFloat(E);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1});}}else{if(Element.CSS_LENGTH.test(E)){var C=E.match(/^([\+\-]?[0-9\.]+)(.*)$/);E=parseFloat(C[1]);D=(C.length==3)?C[2]:null;}}}var B=this.element.getStyle(F);return{style:F.camelize(),originalValue:D=="color"?A(B):parseFloat(B||0),targetValue:D=="color"?A(E):E,unit:D};}.bind(this)).reject(function(B){return((B.originalValue==B.targetValue)||(B.unit!="color"&&(isNaN(B.originalValue)||isNaN(B.targetValue))));});},update:function(A){var D={},B,C=this.transforms.length;while(C--){D[(B=this.transforms[C]).style]=B.unit=="color"?"#"+(Math.round(B.originalValue[0]+(B.targetValue[0]-B.originalValue[0])*A)).toColorPart()+(Math.round(B.originalValue[1]+(B.targetValue[1]-B.originalValue[1])*A)).toColorPart()+(Math.round(B.originalValue[2]+(B.targetValue[2]-B.originalValue[2])*A)).toColorPart():(B.originalValue+(B.targetValue-B.originalValue)*A).toFixed(3)+(B.unit===null?"":B.unit);}this.element.setStyle(D,true);}});Effect.Transform=Class.create({initialize:function(A){this.tracks=[];this.options=arguments[1]||{};this.addTracks(A);},addTracks:function(A){A.each(function(B){B=$H(B);var C=B.values().first();this.tracks.push($H({ids:B.keys().first(),effect:Effect.Morph,options:{style:C}}));}.bind(this));return this;},play:function(){return new Effect.Parallel(this.tracks.map(function(A){var D=A.get("ids"),C=A.get("effect"),B=A.get("options");var E=[$(D)||$$(D)].flatten();return E.map(function(F){return new C(F,Object.extend({sync:true},B));});}).flatten(),this.options);}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement("div");String.prototype.parseStyle=function(){var B,A=$H();if(Prototype.Browser.WebKit){B=new Element("div",{style:this}).style;}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';B=String.__parseStyleElement.childNodes[0].style;}Element.CSS_PROPERTIES.each(function(C){if(B[C]){A.set(C,B[C]);}});if(Prototype.Browser.IE&&this.include("opacity")){A.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);}return A;};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(B){var A=document.defaultView.getComputedStyle($(B),null);return Element.CSS_PROPERTIES.inject({},function(C,D){C[D]=A[D];return C;});};}else{Element.getStyles=function(B){B=$(B);var A=B.currentStyle,C;C=Element.CSS_PROPERTIES.inject({},function(D,E){D[E]=A[E];return D;});if(!C.opacity){C.opacity=B.getOpacity();}return C;};}Effect.Methods={morph:function(A,B){A=$(A);new Effect.Morph(A,Object.extend({style:B},arguments[2]||{}));return A;},visualEffect:function(C,E,B){C=$(C);var D=E.dasherize().camelize(),A=D.charAt(0).toUpperCase()+D.substring(1);new Effect[A](C,B);return C;},highlight:function(B,A){B=$(B);new Effect.Highlight(B,A);return B;}};$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(A){Effect.Methods[A]=function(C,B){C=$(C);Effect[A.charAt(0).toUpperCase()+A.substring(1)](C,B);return C;};});$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(A){Effect.Methods[A]=Element[A];});Element.addMethods(Effect.Methods);

// lightwindow.js v2.0 - http://www.stickmanlabs.com/lightwindow/
try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}var lightwindow=Class.create();lightwindow.prototype={element:null,contentToFetch:null,windowActive:false,dataEffects:[],dimensions:{cruft:null,container:null,viewport:{height:null,width:null,offsetTop:null,offsetLeft:null}},pagePosition:{x:0,y:0},pageDimensions:{width:null,height:null},preloadImage:[],preloadedImage:[],galleries:[],resizeTo:{height:null,heightPercent:null,width:null,widthPercent:null,fixedTop:null,fixedLeft:null},scrollbarOffset:18,navigationObservers:{previous:null,next:null},containerChange:{height:0,width:0},activeGallery:false,galleryLocation:{current:0,total:0},initialize:function(A){this.options=Object.extend({resizeSpeed:8,contentOffset:{height:20,width:20},dimensions:{image:{height:250,width:250},page:{height:250,width:250},inline:{height:250,width:250},media:{height:250,width:250},external:{height:250,width:250},titleHeight:25},classNames:{standard:"lightwindow",action:"lightwindow_action"},fileTypes:{page:["asp","aspx","cgi","cfm","htm","html","pl","php4","php3","php","php5","phtml","rhtml","shtml","txt","vbs","rb"],media:["aif","aiff","asf","avi","divx","m1v","m2a","m2v","m3u","mid","midi","mov","moov","movie","mp2","mp3","mpa","mpa","mpe","mpeg","mpg","mpg","mpga","pps","qt","rm","ram","swf","viv","vivo","wav"],image:["bmp","gif","jpg","png","tiff"]},mimeTypes:{avi:"video/avi",aif:"audio/aiff",aiff:"audio/aiff",gif:"image/gif",bmp:"image/bmp",jpeg:"image/jpeg",m1v:"video/mpeg",m2a:"audio/mpeg",m2v:"video/mpeg",m3u:"audio/x-mpequrl",mid:"audio/x-midi",midi:"audio/x-midi",mjpg:"video/x-motion-jpeg",moov:"video/quicktime",mov:"video/quicktime",movie:"video/x-sgi-movie",mp2:"audio/mpeg",mp3:"audio/mpeg3",mpa:"audio/mpeg",mpa:"video/mpeg",mpe:"video/mpeg",mpeg:"video/mpeg",mpg:"audio/mpeg",mpg:"video/mpeg",mpga:"audio/mpeg",pdf:"application/pdf",png:"image/png",pps:"application/mspowerpoint",qt:"video/quicktime",ram:"audio/x-pn-realaudio-plugin",rm:"application/vnd.rn-realmedia",swf:"application/x-shockwave-flash",tiff:"image/tiff",viv:"video/vivo",vivo:"video/vivo",wav:"audio/wav",wmv:"application/x-mplayer2"},classids:{mov:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",swf:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",wmv:"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"},codebases:{mov:"http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0",swf:"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0",wmv:"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"},viewportPadding:10,EOLASFix:"swf,wmv,fla,flv",overlay:{opacity:0.7,image:"/images/black.png",presetImage:"/images/black-70.png"},skin:{main:'<div id="lightwindow_container" ><div id="lightwindow_title_bar" ><div id="lightwindow_title_bar_inner" ><span id="lightwindow_title_bar_title"></span><a id="lightwindow_title_bar_close_link" ><img src="/images/close.gif" alt="close" /></a></div></div><div id="lightwindow_stage" ><div id="lightwindow_contents" ></div><div id="lightwindow_navigation" ><a href="#" id="lightwindow_previous" ><span id="lightwindow_previous_title"></span></a><a href="#" id="lightwindow_next" ><span id="lightwindow_next_title"></span></a><iframe name="lightwindow_navigation_shim" id="lightwindow_navigation_shim" src="javascript:false;" frameBorder="0" scrolling="no"></iframe></div><div id="lightwindow_galleries"><div id="lightwindow_galleries_tab_container" ><a href="#" id="lightwindow_galleries_tab" ><span id="lightwindow_galleries_tab_span" class="up" >Galleries</span></a></div><div id="lightwindow_galleries_list" ></div></div></div><div id="lightwindow_data_slide" ><div id="lightwindow_data_slide_inner" ><div id="lightwindow_data_details" ><div id="lightwindow_data_gallery_container" ><span id="lightwindow_data_gallery_current"></span> of <span id="lightwindow_data_gallery_total"></span></div><div id="lightwindow_data_author_container" >by <span id="lightwindow_data_author"></span></div></div><div id="lightwindow_data_caption" ></div></div></div></div>',loading:'<div id="lightwindow_loading" ><img src="/images/ajax-loading.gif" alt="loading" /><span>Loading or <a href="javascript: myLightWindow.deactivate();">Cancel</a></span><iframe name="lightwindow_loading_shim" id="lightwindow_loading_shim" src="javascript:false;" frameBorder="0" scrolling="no"></iframe></div>',iframe:'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><body>{body_replace}</body></html>',gallery:{top:'<div class="lightwindow_galleries_list"><h1>{gallery_title_replace}</h1><ul>',middle:"<li>{gallery_link_replace}</li>",bottom:"</ul></div>"}},formMethod:"get",hideFlash:false,hideGalleryTab:false,showTitleBar:true,animationHandler:false,navigationHandler:false,transitionHandler:false,finalAnimationHandler:false,formHandler:false,galleryAnimationHandler:false,showGalleryCount:true},A||{});this.duration=((11-this.options.resizeSpeed)*0.15);this._setupLinks();this._getScroll();this._getPageDimensions();this._browserDimensions();this._addLightWindowMarkup(false);this._setupDimensions();this.buildGalleryList()},activate:function(B,A){this._clearWindowContents(true);this._addLoadingWindowMarkup();this._setupWindowElements(A);this._getScroll();this._browserDimensions();this._setupDimensions();this._toggleTroubleElements("hidden",false);this._displayLightWindow("block","hidden");this._setStatus(true);this._monitorKeyboard(true);this._prepareIE(true);this._loadWindow()},deactivate:function(){this.windowActive=false;this.activeGallery=false;if(!this.options.hideGalleryTab){this._handleGalleryAnimation(false)}this.animating=false;this.element=null;this._displayLightWindow("none","visible");this._clearWindowContents(false);var A=Effect.Queues.get("lightwindowAnimation").each(function(B){B.cancel()});this._prepareIE(false);this._setupDimensions();this._toggleTroubleElements("visible",false);this._monitorKeyboard(false)},createWindow:function(B,A){this._processLink($(B))},activateWindow:function(A){this.element=Object.extend({href:null,title:null,author:null,caption:null,rel:null,top:null,left:null,type:null,showImages:null,height:null,width:null,loadingAnimation:null,iframeEmbed:null,form:null},A||{});this.contentToFetch=this.element.href;this.windowType=this.element.type?this.element.type:this._fileType(this.element.href);this._clearWindowContents(true);this._addLoadingWindowMarkup();this._getScroll();this._browserDimensions();this._setupDimensions();this._toggleTroubleElements("hidden",false);this._displayLightWindow("block","hidden");this._setStatus(true);this._monitorKeyboard(true);this._prepareIE(true);this._loadWindow()},submitForm:function(A){if(this.options.formHandler){this.options.formHandler(A)}else{this._defaultFormHandler(A)}},openWindow:function(A){var A=$(A);this.windowActive=true;this._clearWindowContents(true);this._addLoadingWindowMarkup();this._setupWindowElements(A);this._setStatus(true);this._handleTransition()},navigateWindow:function(A){this._handleNavigation(false);if(A=="previous"){this.openWindow(this.navigationObservers.previous)}else{if(A=="next"){this.openWindow(this.navigationObservers.next)}}},buildGalleryList:function(){var A="";var B;for(i in this.galleries){if(typeof this.galleries[i]=="object"){A+=(this.options.skin.gallery.top).replace("{gallery_title_replace}",unescape(i));for(j in this.galleries[i]){if(typeof this.galleries[i][j]=="object"){B='<a href="#" id="lightwindow_gallery_'+i+"_"+j+'" >'+unescape(j)+"</a>";A+=(this.options.skin.gallery.middle).replace("{gallery_link_replace}",B)}}A+=this.options.skin.gallery.bottom}}new Insertion.Top("lightwindow_galleries_list",A);for(i in this.galleries){if(typeof this.galleries[i]=="object"){for(j in this.galleries[i]){if(typeof this.galleries[i][j]=="object"){Event.observe($("lightwindow_gallery_"+i+"_"+j),"click",this.openWindow.bind(this,this.galleries[i][j][0]),false);$("lightwindow_gallery_"+i+"_"+j).onclick=function(){return false}}}}}},_setupLinks:function(){var A=$$("."+this.options.classNames.standard);A.each(function(B){this._processLink(B)}.bind(this))},_processLink:function(C){if((this._fileType(C.getAttribute("href"))=="image"||this._fileType(C.getAttribute("href"))=="media")){if(gallery=this._getGalleryInfo(C.rel)){if(!this.galleries[gallery[0]]){this.galleries[gallery[0]]=new Array()}if(!this.galleries[gallery[0]][gallery[1]]){this.galleries[gallery[0]][gallery[1]]=new Array()}this.galleries[gallery[0]][gallery[1]].push(C)}}var B=C.getAttribute("href");if(B.indexOf("?")>-1){B=B.substring(0,B.indexOf("?"))}var A=B.substring(B.indexOf("#")+1);if($(A)){$(A).setStyle({display:"none"})}Event.observe(C,"click",this.activate.bindAsEventListener(this,C),false);C.onclick=function(){return false}},_setupActions:function(){var A=$$("#lightwindow_container ."+this.options.classNames.action);A.each(function(B){Event.observe(B,"click",this[B.getAttribute("rel")].bindAsEventListener(this,B),false);B.onclick=function(){return false}}.bind(this))},_addLightWindowMarkup:function(B){var C=Element.extend(document.createElement("div"));C.setAttribute("id","lightwindow_overlay");if(Prototype.Browser.Gecko){C.setStyle({backgroundImage:"url("+this.options.overlay.presetImage+")",backgroundRepeat:"repeat",height:this.pageDimensions.height+"px"})}else{C.setStyle({opacity:this.options.overlay.opacity,backgroundImage:"url("+this.options.overlay.image+")",backgroundRepeat:"repeat",height:this.pageDimensions.height+"px"})}var D=document.createElement("div");D.setAttribute("id","lightwindow");D.innerHTML=this.options.skin.main;var A=document.getElementsByTagName("body")[0];A.appendChild(C);A.appendChild(D);if($("lightwindow_title_bar_close_link")){Event.observe("lightwindow_title_bar_close_link","click",this.deactivate.bindAsEventListener(this));$("lightwindow_title_bar_close_link").onclick=function(){return false}}Event.observe($("lightwindow_previous"),"click",this.navigateWindow.bind(this,"previous"),false);$("lightwindow_previous").onclick=function(){return false};Event.observe($("lightwindow_next"),"click",this.navigateWindow.bind(this,"next"),false);$("lightwindow_next").onclick=function(){return false};if(!this.options.hideGalleryTab){Event.observe($("lightwindow_galleries_tab"),"click",this._handleGalleryAnimation.bind(this,true),false);$("lightwindow_galleries_tab").onclick=function(){return false}}if(Prototype.Browser.IE){Event.observe(document,"mousewheel",this._stopScrolling.bindAsEventListener(this),false)}else{Event.observe(window,"DOMMouseScroll",this._stopScrolling.bindAsEventListener(this),false)}Event.observe(C,"click",this.deactivate.bindAsEventListener(this),false);C.onclick=function(){return false}},_addLoadingWindowMarkup:function(){$("lightwindow_contents").innerHTML+=this.options.skin.loading},_setupWindowElements:function(A){this.element=A;this.element.title=null?"":A.getAttribute("title");this.element.author=null?"":A.getAttribute("author");this.element.caption=null?"":A.getAttribute("caption");this.element.rel=null?"":A.getAttribute("rel");this.element.params=null?"":A.getAttribute("params");this.contentToFetch=this.element.href;this.windowType=this._getParameter("lightwindow_type")?this._getParameter("lightwindow_type"):this._fileType(this.contentToFetch)},_clearWindowContents:function(A){if($("lightwindow_iframe")){Element.remove($("lightwindow_iframe"))}if($("lightwindow_media_primary")){try{$("lightwindow_media_primary").Stop()}catch(B){}Element.remove($("lightwindow_media_primary"))}if($("lightwindow_media_secondary")){try{$("lightwindow_media_secondary").Stop()}catch(B){}Element.remove($("lightwindow_media_secondary"))}this.activeGallery=false;this._handleNavigation(this.activeGallery);if(A){$("lightwindow_contents").innerHTML="";$("lightwindow_contents").setStyle({overflow:"hidden"});if(!this.windowActive){$("lightwindow_data_slide_inner").setStyle({display:"none"});$("lightwindow_title_bar_title").innerHTML=""}$("lightwindow_data_slide").setStyle({height:"auto"})}this.resizeTo.height=null;this.resizeTo.width=null},_setStatus:function(A){this.animating=A;if(A){Element.show("lightwindow_loading")}if(!(/MSIE 6./i.test(navigator.userAgent))){this._fixedWindow(A)}},_fixedWindow:function(A){if(A){if(this.windowActive){this._getScroll();$("lightwindow").setStyle({position:"absolute",top:parseFloat($("lightwindow").getStyle("top"))+this.pagePosition.y+"px",left:parseFloat($("lightwindow").getStyle("left"))+this.pagePosition.x+"px"})}else{$("lightwindow").setStyle({position:"absolute"})}}else{if(this.windowActive){this._getScroll();$("lightwindow").setStyle({position:"fixed",top:parseFloat($("lightwindow").getStyle("top"))-this.pagePosition.y+"px",left:parseFloat($("lightwindow").getStyle("left"))-this.pagePosition.x+"px"})}else{if($("lightwindow_iframe")){this._browserDimensions()}$("lightwindow").setStyle({position:"fixed",top:(parseFloat(this._getParameter("lightwindow_top"))?parseFloat(this._getParameter("lightwindow_top"))+"px":this.dimensions.viewport.height/2+"px"),left:(parseFloat(this._getParameter("lightwindow_left"))?parseFloat(this._getParameter("lightwindow_left"))+"px":this.dimensions.viewport.width/2+"px")})}}},_prepareIE:function(C){if(Prototype.Browser.IE){var B,E,D;if(C){var B="100%"}else{var B="auto"}var A=document.getElementsByTagName("body")[0];var F=document.getElementsByTagName("html")[0];F.style.height=A.style.height=B}},_stopScrolling:function(A){if(this.animating){if(A.preventDefault){A.preventDefault()}A.returnValue=false}},_getScroll:function(){if(typeof (window.pageYOffset)=="number"){this.pagePosition.x=window.pageXOffset;this.pagePosition.y=window.pageYOffset}else{if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){this.pagePosition.x=document.body.scrollLeft;this.pagePosition.y=document.body.scrollTop}else{if(document.documentElement){this.pagePosition.x=document.documentElement.scrollLeft;this.pagePosition.y=document.documentElement.scrollTop}}}},_setScroll:function(A,B){document.documentElement.scrollLeft=A;document.documentElement.scrollTop=B},_toggleTroubleElements:function(A,D){if(D){var C=$("lightwindow_contents").getElementsByTagName("select")}else{var C=document.getElementsByTagName("select")}for(var B=0;B<C.length;B++){C[B].style.visibility=A}if(!D){if(this.options.hideFlash){var F=document.getElementsByTagName("object");for(B=0;B!=F.length;B++){F[B].style.visibility=A}var E=document.getElementsByTagName("embed");for(B=0;B!=E.length;B++){E[B].style.visibility=A}}var G=document.getElementsByTagName("iframe");for(B=0;B!=G.length;B++){G[B].style.visibility=A}}},_getPageDimensions:function(){var C,A;if(window.innerHeight&&window.scrollMaxY){C=document.body.scrollWidth;A=window.innerHeight+window.scrollMaxY}else{if(document.body.scrollHeight>document.body.offsetHeight){C=document.body.scrollWidth;A=document.body.scrollHeight}else{C=document.body.offsetWidth;A=document.body.offsetHeight}}var B,D;if(self.innerHeight){B=self.innerWidth;D=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){B=document.documentElement.clientWidth;D=document.documentElement.clientHeight}else{if(document.body){B=document.body.clientWidth;D=document.body.clientHeight}}}if(A<D){this.pageDimensions.height=D}else{this.pageDimensions.height=A}if(C<B){this.pageDimensions.width=B}else{this.pageDimensions.width=C}},_displayLightWindow:function(B,A){$("lightwindow_overlay").style.display=$("lightwindow").style.display=$("lightwindow_container").style.display=B;$("lightwindow_overlay").style.visibility=$("lightwindow").style.visibility=$("lightwindow_container").style.visibility=A},_setupDimensions:function(){var C,D;switch(this.windowType){case"page":C=this.options.dimensions.page.height;D=this.options.dimensions.page.width;break;case"image":C=this.options.dimensions.image.height;D=this.options.dimensions.image.width;break;case"media":C=this.options.dimensions.media.height;D=this.options.dimensions.media.width;break;case"external":C=this.options.dimensions.external.height;D=this.options.dimensions.external.width;break;case"inline":C=this.options.dimensions.inline.height;D=this.options.dimensions.inline.width;break;default:C=this.options.dimensions.page.height;D=this.options.dimensions.page.width;break}var A=this._getParameter("lightwindow_top")?parseFloat(this._getParameter("lightwindow_top"))+this.pagePosition.y:this.dimensions.viewport.height/2+this.pagePosition.y;var B=this._getParameter("lightwindow_left")?parseFloat(this._getParameter("lightwindow_left"))+this.pagePosition.x:this.dimensions.viewport.width/2+this.pagePosition.x;$("lightwindow").setStyle({top:A+"px",left:B+"px"});$("lightwindow_container").setStyle({height:C+"px",width:D+"px",left:-(D/2)+"px",top:-(C/2)+"px"});$("lightwindow_contents").setStyle({height:C+"px",width:D+"px"})},_fileType:function(A){var E=new RegExp("[^.].("+this.options.fileTypes.image.join("|")+")s*$","i");if(E.test(A)){return"image"}if(A.indexOf("#")>-1&&(document.domain==this._getDomain(A))){return"inline"}if(A.indexOf("?")>-1){A=A.substring(0,A.indexOf("?"))}var B="unknown";var C=new RegExp("[^.].("+this.options.fileTypes.page.join("|")+")s*$","i");var D=new RegExp("[^.].("+this.options.fileTypes.media.join("|")+")s*$","i");if(document.domain!=this._getDomain(A)){B="external"}if(D.test(A)){B="media"}if(B=="external"||B=="media"){return B}if(C.test(A)||A.substr((A.length-1),A.length)=="/"){B="page"}return B},_fileExtension:function(C){if(C.indexOf("?")>-1){C=C.substring(0,C.indexOf("?"))}var B="";for(var A=(C.length-1);A>-1;A--){if(C.charAt(A)=="."){return B}B=C.charAt(A)+B}},_monitorKeyboard:function(A){if(A){document.onkeydown=this._eventKeypress.bind(this)}else{document.onkeydown=""}},_eventKeypress:function(B){if(B==null){var A=event.keyCode}else{var A=B.which}switch(A){case 27:this.deactivate();break;case 13:return ;default:break}if(this.animating){return false}switch(String.fromCharCode(A).toLowerCase()){case"p":if(this.navigationObservers.previous){this.navigateWindow("previous")}break;case"n":if(this.navigationObservers.next){this.navigateWindow("next")}break;default:break}},_getGalleryInfo:function(A){if(!A){return false}if(A.indexOf("[")>-1){return new Array(escape(A.substring(0,A.indexOf("["))),escape(A.substring(A.indexOf("[")+1,A.indexOf("]"))))}else{return false}},_getDomain:function(E){var G=E.indexOf("//");var B=G+2;var D=E.substring(B,E.length);var A=D.indexOf("/");var F=D.substring(0,A);if(F.indexOf(":")>-1){var C=F.indexOf(":");F=F.substring(0,C)}return F},_getParameter:function(H,D){if(!this.element){return false}if(H=="lightwindow_top"&&this.element.top){return unescape(this.element.top)}else{if(H=="lightwindow_left"&&this.element.left){return unescape(this.element.left)}else{if(H=="lightwindow_type"&&this.element.type){return unescape(this.element.type)}else{if(H=="lightwindow_show_images"&&this.element.showImages){return unescape(this.element.showImages)}else{if(H=="lightwindow_height"&&this.element.height){return unescape(this.element.height)}else{if(H=="lightwindow_width"&&this.element.width){return unescape(this.element.width)}else{if(H=="lightwindow_loading_animation"&&this.element.loadingAnimation){return unescape(this.element.loadingAnimation)}else{if(H=="lightwindow_iframe_embed"&&this.element.iframeEmbed){return unescape(this.element.iframeEmbed)}else{if(H=="lightwindow_form"&&this.element.form){return unescape(this.element.form)}else{if(!D){if(this.element.params){D=this.element.params}else{return }}var F;var E=D.split(",");var C=H+"=";var G=C.length;for(var B=0;B<E.length;B++){if(E[B].substr(0,G)==C){var A=E[B].split("=");F=A[1];break}}if(!F){return false}else{return unescape(F)}}}}}}}}}}},_browserDimensions:function(){if(Prototype.Browser.IE){this.dimensions.viewport.height=document.documentElement.clientHeight;this.dimensions.viewport.width=document.documentElement.clientWidth}else{this.dimensions.viewport.height=window.innerHeight;this.dimensions.viewport.width=document.width||document.body.offsetWidth}},_getScrollerWidth:function(){var E=Element.extend(document.createElement("div"));E.setAttribute("id","lightwindow_scroll_div");E.setStyle({position:"absolute",top:"-10000px",left:"-10000px",width:"100px",height:"100px",overflow:"hidden"});var C=Element.extend(document.createElement("div"));C.setAttribute("id","lightwindow_content_scroll_div");C.setStyle({width:"100%",height:"200px"});E.appendChild(C);var B=document.getElementsByTagName("body")[0];B.appendChild(E);var D=$("lightwindow_content_scroll_div").offsetWidth;E.style.overflow="auto";var A=$("lightwindow_content_scroll_div").offsetWidth;Element.remove($("lightwindow_scroll_div"));this.scrollbarOffset=D-A},_addParamToObject:function(B,C,A,E){var D=document.createElement("param");D.setAttribute("value",C);D.setAttribute("name",B);if(E){D.setAttribute("id",E)}A.appendChild(D);return A},_outerHTML:function(A){if(Prototype.Browser.IE){return A.outerHTML}else{var C=A.cloneNode(true);var B=document.createElement("div");B.appendChild(C);return B.innerHTML}},_convertToMarkup:function(C,B){var A=this._outerHTML(C).replace("</"+B+">","");if(Prototype.Browser.IE){for(var D=0;D<C.childNodes.length;D++){A+=this._outerHTML(C.childNodes[D])}A+="</"+B+">"}return A},_appendObject:function(C,B,A){if(Prototype.Browser.IE){A.innerHTML+=this._convertToMarkup(C,B);if(this.options.EOLASFix.indexOf(this._fileType(this.element.href))>-1){var E=document.getElementsByTagName("object");for(var D=0;D<E.length;D++){if(E[D].getAttribute("data")){E[D].removeAttribute("data")}E[D].outerHTML=E[D].outerHTML;E[D].style.visibility="visible"}}}else{A.appendChild(C)}},_appendIframe:function(A){var B=document.createElement("iframe");B.setAttribute("id","lightwindow_iframe");B.setAttribute("name","lightwindow_iframe");B.setAttribute("src","about:blank");B.setAttribute("height","100%");B.setAttribute("width","100%");B.setAttribute("frameborder","0");B.setAttribute("marginwidth","0");B.setAttribute("marginheight","0");B.setAttribute("scrolling",A);this._appendObject(B,"iframe",$("lightwindow_contents"))},_writeToIframe:function(B){var A=this.options.skin.iframe;A=A.replace("{body_replace}",B);if($("lightwindow_iframe").contentWindow){$("lightwindow_iframe").contentWindow.document.open();$("lightwindow_iframe").contentWindow.document.write(A);$("lightwindow_iframe").contentWindow.document.close()}else{$("lightwindow_iframe").contentDocument.open();$("lightwindow_iframe").contentDocument.write(A);$("lightwindow_iframe").contentDocument.close()}},_loadWindow:function(){switch(this.windowType){case"image":var E=0;var A=[];this.checkImage=[];this.resizeTo.height=this.resizeTo.width=0;this.imageCount=this._getParameter("lightwindow_show_images")?parseInt(this._getParameter("lightwindow_show_images")):1;if(gallery=this._getGalleryInfo(this.element.rel)){for(E=0;E<this.galleries[gallery[0]][gallery[1]].length;E++){if(this.contentToFetch.indexOf(this.galleries[gallery[0]][gallery[1]][E].href)>-1){break}}if(this.galleries[gallery[0]][gallery[1]][E-this.imageCount]){this.navigationObservers.previous=this.galleries[gallery[0]][gallery[1]][E-this.imageCount]}else{this.navigationObservers.previous=false}if(this.galleries[gallery[0]][gallery[1]][E+this.imageCount]){this.navigationObservers.next=this.galleries[gallery[0]][gallery[1]][E+this.imageCount]}else{this.navigationObservers.next=false}this.activeGallery=true}else{this.navigationObservers.previous=false;this.navigationObservers.next=false;this.activeGallery=false}for(var C=E;C<(E+this.imageCount);C++){if(gallery&&this.galleries[gallery[0]][gallery[1]][C]){this.contentToFetch=this.galleries[gallery[0]][gallery[1]][C].href;this.galleryLocation={current:(C+1)/this.imageCount,total:(this.galleries[gallery[0]][gallery[1]].length)/this.imageCount};if(!this.galleries[gallery[0]][gallery[1]][C+this.imageCount]){$("lightwindow_next").setStyle({display:"none"})}else{$("lightwindow_next").setStyle({display:"block"});$("lightwindow_next_title").innerHTML=this.galleries[gallery[0]][gallery[1]][C+this.imageCount].title}if(!this.galleries[gallery[0]][gallery[1]][C-this.imageCount]){$("lightwindow_previous").setStyle({display:"none"})}else{$("lightwindow_previous").setStyle({display:"block"});$("lightwindow_previous_title").innerHTML=this.galleries[gallery[0]][gallery[1]][C-this.imageCount].title}}A[C]=document.createElement("img");A[C].setAttribute("id","lightwindow_image_"+C);A[C].setAttribute("border","0");A[C].setAttribute("src",this.contentToFetch);$("lightwindow_contents").appendChild(A[C]);this.checkImage[C]=new PeriodicalExecuter(function(G){if(!(typeof $("lightwindow_image_"+G).naturalWidth!="undefined"&&$("lightwindow_image_"+G).naturalWidth==0)){this.checkImage[G].stop();var F=$("lightwindow_image_"+G).getHeight();if(F>this.resizeTo.height){this.resizeTo.height=F}this.resizeTo.width+=$("lightwindow_image_"+G).getWidth();this.imageCount--;$("lightwindow_image_"+G).setStyle({height:"100%"});if(this.imageCount==0){this._processWindow()}}}.bind(this,C),1)}break;case"media":var E=0;this.resizeTo.height=this.resizeTo.width=0;if(gallery=this._getGalleryInfo(this.element.rel)){for(E=0;E<this.galleries[gallery[0]][gallery[1]].length;E++){if(this.contentToFetch.indexOf(this.galleries[gallery[0]][gallery[1]][E].href)>-1){break}}if(this.galleries[gallery[0]][gallery[1]][E-1]){this.navigationObservers.previous=this.galleries[gallery[0]][gallery[1]][E-1]}else{this.navigationObservers.previous=false}if(this.galleries[gallery[0]][gallery[1]][E+1]){this.navigationObservers.next=this.galleries[gallery[0]][gallery[1]][E+1]}else{this.navigationObservers.next=false}this.activeGallery=true}else{this.navigationObservers.previous=false;this.navigationObservers.next=false;this.activeGallery=false}if(gallery&&this.galleries[gallery[0]][gallery[1]][E]){this.contentToFetch=this.galleries[gallery[0]][gallery[1]][E].href;this.galleryLocation={current:E+1,total:this.galleries[gallery[0]][gallery[1]].length};if(!this.galleries[gallery[0]][gallery[1]][E+1]){$("lightwindow_next").setStyle({display:"none"})}else{$("lightwindow_next").setStyle({display:"block"});$("lightwindow_next_title").innerHTML=this.galleries[gallery[0]][gallery[1]][E+1].title}if(!this.galleries[gallery[0]][gallery[1]][E-1]){$("lightwindow_previous").setStyle({display:"none"})}else{$("lightwindow_previous").setStyle({display:"block"});$("lightwindow_previous_title").innerHTML=this.galleries[gallery[0]][gallery[1]][E-1].title}}if(this._getParameter("lightwindow_iframe_embed")){this.resizeTo.height=this.dimensions.viewport.height;this.resizeTo.width=this.dimensions.viewport.width}else{this.resizeTo.height=this._getParameter("lightwindow_height");this.resizeTo.width=this._getParameter("lightwindow_width")}this._processWindow();break;case"external":this._appendIframe("auto");this.resizeTo.height=this.dimensions.viewport.height;this.resizeTo.width=this.dimensions.viewport.width;this._processWindow();break;case"page":var B=new Ajax.Request(this.contentToFetch,{method:"get",parameters:"",onComplete:function(F){$("lightwindow_contents").innerHTML+=F.responseText;this.resizeTo.height=$("lightwindow_contents").scrollHeight+(this.options.contentOffset.height);this.resizeTo.width=$("lightwindow_contents").scrollWidth+(this.options.contentOffset.width);this._processWindow()}.bind(this)});break;case"inline":var D=this.contentToFetch;if(D.indexOf("?")>-1){D=D.substring(0,D.indexOf("?"))}D=D.substring(D.indexOf("#")+1);new Insertion.Top($("lightwindow_contents"),$(D).innerHTML);this.resizeTo.height=$("lightwindow_contents").scrollHeight+(this.options.contentOffset.height);this.resizeTo.width=$("lightwindow_contents").scrollWidth+(this.options.contentOffset.width);this._toggleTroubleElements("hidden",true);this._processWindow();break;default:throw ("Page Type could not be determined, please amend this lightwindow URL "+this.contentToFetch);break}},_resizeWindowToFit:function(){if(this.resizeTo.height+this.dimensions.cruft.height>this.dimensions.viewport.height){var A=this.resizeTo.height/this.resizeTo.width;this.resizeTo.height=this.dimensions.viewport.height-this.dimensions.cruft.height-(2*this.options.viewportPadding);if(this.windowType=="image"||(this.windowType=="media"&&!this._getParameter("lightwindow_iframe_embed"))){this.resizeTo.width=this.resizeTo.height/A;$("lightwindow_data_slide_inner").setStyle({width:this.resizeTo.width+"px"})}}if(this.resizeTo.width+this.dimensions.cruft.width>this.dimensions.viewport.width){var B=this.resizeTo.width/this.resizeTo.height;this.resizeTo.width=this.dimensions.viewport.width-2*this.dimensions.cruft.width-(2*this.options.viewportPadding);if(this.windowType=="image"||(this.windowType=="media"&&!this._getParameter("lightwindow_iframe_embed"))){this.resizeTo.height=this.resizeTo.width/B;$("lightwindow_data_slide_inner").setStyle({height:this.resizeTo.height+"px"})}}},_presetWindowSize:function(){if(this._getParameter("lightwindow_height")){this.resizeTo.height=parseFloat(this._getParameter("lightwindow_height"))}if(this._getParameter("lightwindow_width")){this.resizeTo.width=parseFloat(this._getParameter("lightwindow_width"))}},_processWindow:function(){this.dimensions.dataEffects=[];if(this.element.caption||this.element.author||(this.activeGallery&&this.options.showGalleryCount)){if(this.element.caption){$("lightwindow_data_caption").innerHTML=this.element.caption;$("lightwindow_data_caption").setStyle({display:"block"})}else{$("lightwindow_data_caption").setStyle({display:"none"})}if(this.element.author){$("lightwindow_data_author").innerHTML=this.element.author;$("lightwindow_data_author_container").setStyle({display:"block"})}else{$("lightwindow_data_author_container").setStyle({display:"none"})}if(this.activeGallery&&this.options.showGalleryCount){$("lightwindow_data_gallery_current").innerHTML=this.galleryLocation.current;$("lightwindow_data_gallery_total").innerHTML=this.galleryLocation.total;$("lightwindow_data_gallery_container").setStyle({display:"block"})}else{$("lightwindow_data_gallery_container").setStyle({display:"none"})}$("lightwindow_data_slide_inner").setStyle({width:this.resizeTo.width+"px",height:"auto",visibility:"visible",display:"block"});$("lightwindow_data_slide").setStyle({height:$("lightwindow_data_slide").getHeight()+"px",width:"1px",overflow:"hidden",display:"block"})}else{$("lightwindow_data_slide").setStyle({display:"none",width:"auto"});$("lightwindow_data_slide_inner").setStyle({display:"none",visibility:"hidden",width:this.resizeTo.width+"px",height:"0px"})}if(this.element.title!="null"){$("lightwindow_title_bar_title").innerHTML=this.element.title}else{$("lightwindow_title_bar_title").innerHTML=""}var B={height:$("lightwindow_container").getHeight(),width:$("lightwindow_container").getWidth()};$("lightwindow_container").setStyle({height:"auto",width:$("lightwindow_container").getWidth()+this.options.contentOffset.width-(this.windowActive?this.options.contentOffset.width:0)+"px"});var A={height:$("lightwindow_container").getHeight(),width:$("lightwindow_container").getWidth()};this.containerChange={height:B.height-A.height,width:B.width-A.width};this.dimensions.container={height:$("lightwindow_container").getHeight(),width:$("lightwindow_container").getWidth()};this.dimensions.cruft={height:this.dimensions.container.height-$("lightwindow_contents").getHeight()+this.options.contentOffset.height,width:this.dimensions.container.width-$("lightwindow_contents").getWidth()+this.options.contentOffset.width};this._presetWindowSize();this._resizeWindowToFit();if(!this.windowActive){$("lightwindow_container").setStyle({left:-(this.dimensions.container.width/2)+"px",top:-(this.dimensions.container.height/2)+"px"})}$("lightwindow_container").setStyle({height:this.dimensions.container.height+"px",width:this.dimensions.container.width+"px"});this._displayLightWindow("block","visible");this._animateLightWindow()},_animateLightWindow:function(){if(this.options.animationHandler){this.options.animationHandler().bind(this)}else{this._defaultAnimationHandler()}},_handleNavigation:function(A){if(this.options.navigationHandler){this.options.navigationHandler().bind(this,A)}else{this._defaultDisplayNavigation(A)}},_handleTransition:function(){if(this.options.transitionHandler){this.options.transitionHandler().bind(this)}else{this._defaultTransitionHandler()}},_handleFinalWindowAnimation:function(A){if(this.options.finalAnimationHandler){this.options.finalAnimationHandler().bind(this,A)}else{this._defaultfinalWindowAnimationHandler(A)}},_handleGalleryAnimation:function(A){if(this.options.galleryAnimationHandler){this.options.galleryAnimationHandler().bind(this,A)}else{this._defaultGalleryAnimationHandler(A)}},_defaultDisplayNavigation:function(A){if(A){$("lightwindow_navigation").setStyle({display:"block",height:$("lightwindow_contents").getHeight()+"px",width:"100%",marginTop:this.options.dimensions.titleHeight+"px"})}else{$("lightwindow_navigation").setStyle({display:"none",height:"auto",width:"auto"})}},_defaultAnimationHandler:function(){if(this.element.caption||this.element.author||(this.activeGallery&&this.options.showGalleryCount)){$("lightwindow_data_slide").setStyle({display:"none",width:"auto"});this.dimensions.dataEffects.push(new Effect.SlideDown("lightwindow_data_slide",{sync:true}),new Effect.Appear("lightwindow_data_slide",{sync:true,from:0,to:1}))}$("lightwindow_title_bar_inner").setStyle({height:"0px",marginTop:this.options.dimensions.titleHeight+"px"});this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_title_bar_inner",{sync:true,style:{height:this.options.dimensions.titleHeight+"px",marginTop:"0px"}}),new Effect.Appear("lightwindow_title_bar_inner",{sync:true,from:0,to:1}));if(!this.options.hideGalleryTab){this._handleGalleryAnimation(false);if($("lightwindow_galleries_tab_container").getHeight()==0){this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_tab_container",{sync:true,style:{height:"20px",marginTop:"0px"}}));$("lightwindow_galleries").setStyle({width:"0px"})}}var A=false;var B=this.dimensions.container.width-$("lightwindow_contents").getWidth()+this.resizeTo.width+this.options.contentOffset.width;if(B!=$("lightwindow_container").getWidth()){new Effect.Parallel([new Effect.Scale("lightwindow_contents",100*(this.resizeTo.width/$("lightwindow_contents").getWidth()),{scaleFrom:100*($("lightwindow_contents").getWidth()/($("lightwindow_contents").getWidth()+(this.options.contentOffset.width))),sync:true,scaleY:false,scaleContent:false}),new Effect.Scale("lightwindow_container",100*(B/(this.dimensions.container.width)),{sync:true,scaleY:false,scaleFromCenter:true,scaleContent:false})],{duration:this.duration,delay:0.25,queue:{position:"end",scope:"lightwindowAnimation"}})}B=this.dimensions.container.height-$("lightwindow_contents").getHeight()+this.resizeTo.height+this.options.contentOffset.height;if(B!=$("lightwindow_container").getHeight()){new Effect.Parallel([new Effect.Scale("lightwindow_contents",100*(this.resizeTo.height/$("lightwindow_contents").getHeight()),{scaleFrom:100*($("lightwindow_contents").getHeight()/($("lightwindow_contents").getHeight()+(this.options.contentOffset.height))),sync:true,scaleX:false,scaleContent:false}),new Effect.Scale("lightwindow_container",100*(B/(this.dimensions.container.height)),{sync:true,scaleX:false,scaleFromCenter:true,scaleContent:false})],{duration:this.duration,afterFinish:function(){if(this.dimensions.dataEffects.length>0){if(!this.options.hideGalleryTab){$("lightwindow_galleries").setStyle({width:this.resizeTo.width+"px"})}new Effect.Parallel(this.dimensions.dataEffects,{duration:this.duration,afterFinish:function(){this._finishWindow()}.bind(this),queue:{position:"end",scope:"lightwindowAnimation"}})}}.bind(this),queue:{position:"end",scope:"lightwindowAnimation"}});A=true}if(!A&&this.dimensions.dataEffects.length>0){new Effect.Parallel(this.dimensions.dataEffects,{duration:this.duration,beforeStart:function(){if(!this.options.hideGalleryTab){$("lightwindow_galleries").setStyle({width:this.resizeTo.width+"px"})}if(this.containerChange.height!=0||this.containerChange.width!=0){new Effect.MoveBy("lightwindow_container",this.containerChange.height,this.containerChange.width,{transition:Effect.Transitions.sinoidal})}}.bind(this),afterFinish:function(){this._finishWindow()}.bind(this),queue:{position:"end",scope:"lightwindowAnimation"}})}},_defaultfinalWindowAnimationHandler:function(A){if(this.windowType=="media"||this._getParameter("lightwindow_loading_animation")){Element.hide("lightwindow_loading");this._handleNavigation(this.activeGallery);this._setStatus(false)}else{Effect.Fade("lightwindow_loading",{duration:0.75,delay:1,afterFinish:function(){if(this.windowType!="image"&&this.windowType!="media"&&this.windowType!="external"){$("lightwindow_contents").setStyle({overflow:"auto"})}this._handleNavigation(this.activeGallery);this._defaultGalleryAnimationHandler();this._setStatus(false)}.bind(this),queue:{position:"end",scope:"lightwindowAnimation"}})}},_defaultGalleryAnimationHandler:function(B){if(this.activeGallery){$("lightwindow_galleries").setStyle({display:"block",marginBottom:$("lightwindow_data_slide").getHeight()+this.options.contentOffset.height/2+"px"});$("lightwindow_navigation").setStyle({height:$("lightwindow_contents").getHeight()-20+"px"})}else{$("lightwindow_galleries").setStyle({display:"none"});$("lightwindow_galleries_tab_container").setStyle({height:"0px",marginTop:"20px"});$("lightwindow_galleries_list").setStyle({height:"0px"});return false}if(B){if($("lightwindow_galleries_list").getHeight()==0){var A=$("lightwindow_contents").getHeight()*0.8;$("lightwindow_galleries_tab_span").className="down"}else{var A=0;$("lightwindow_galleries_tab_span").className="up"}new Effect.Morph("lightwindow_galleries_list",{duration:this.duration,transition:Effect.Transitions.sinoidal,style:{height:A+"px"},beforeStart:function(){$("lightwindow_galleries_list").setStyle({overflow:"hidden"})},afterFinish:function(){$("lightwindow_galleries_list").setStyle({overflow:"auto"})},queue:{position:"end",scope:"lightwindowAnimation"}})}},_defaultTransitionHandler:function(){this.dimensions.dataEffects=[];if($("lightwindow_data_slide").getStyle("display")!="none"){this.dimensions.dataEffects.push(new Effect.SlideUp("lightwindow_data_slide",{sync:true}),new Effect.Fade("lightwindow_data_slide",{sync:true,from:1,to:0}))}if(!this.options.hideGalleryTab){if($("lightwindow_galleries").getHeight()!=0&&!this.options.hideGalleryTab){this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_tab_container",{sync:true,style:{height:"0px",marginTop:"20px"}}))}if($("lightwindow_galleries_list").getHeight()!=0){$("lightwindow_galleries_tab_span").className="up";this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_list",{sync:true,style:{height:"0px"},transition:Effect.Transitions.sinoidal,beforeStart:function(){$("lightwindow_galleries_list").setStyle({overflow:"hidden"})},afterFinish:function(){$("lightwindow_galleries_list").setStyle({overflow:"auto"})}}))}}this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_title_bar_inner",{sync:true,style:{height:"0px",marginTop:this.options.dimensions.titleHeight+"px"}}),new Effect.Fade("lightwindow_title_bar_inner",{sync:true,from:1,to:0}));new Effect.Parallel(this.dimensions.dataEffects,{duration:this.duration,afterFinish:function(){this._loadWindow()}.bind(this),queue:{position:"end",scope:"lightwindowAnimation"}})},_defaultFormHandler:function(D){var B=Event.element(D).parentNode;var C=Form.serialize(this._getParameter("lightwindow_form",B.getAttribute("params")));if(this.options.formMethod=="post"){var A=new Ajax.Request(B.href,{method:"post",postBody:C,onComplete:this.openWindow.bind(this,B)})}else{if(this.options.formMethod=="get"){var A=new Ajax.Request(B.href,{method:"get",parameters:C,onComplete:this.openWindow.bind(this,B)})}}},_finishWindow:function(){if(this.windowType=="external"){$("lightwindow_iframe").setAttribute("src",this.element.href);this._handleFinalWindowAnimation(1)}else{if(this.windowType=="media"){var B=document.createElement("object");B.setAttribute("classid",this.options.classids[this._fileExtension(this.contentToFetch)]);B.setAttribute("codebase",this.options.codebases[this._fileExtension(this.contentToFetch)]);B.setAttribute("id","lightwindow_media_primary");B.setAttribute("name","lightwindow_media_primary");B.setAttribute("width",this.resizeTo.width);B.setAttribute("height",this.resizeTo.height);B=this._addParamToObject("movie",this.contentToFetch,B);B=this._addParamToObject("src",this.contentToFetch,B);B=this._addParamToObject("controller","true",B);B=this._addParamToObject("wmode","transparent",B);B=this._addParamToObject("cache","false",B);B=this._addParamToObject("quality","high",B);if(!Prototype.Browser.IE){var A=document.createElement("object");A.setAttribute("type",this.options.mimeTypes[this._fileExtension(this.contentToFetch)]);A.setAttribute("data",this.contentToFetch);A.setAttribute("id","lightwindow_media_secondary");A.setAttribute("name","lightwindow_media_secondary");A.setAttribute("width",this.resizeTo.width);A.setAttribute("height",this.resizeTo.height);A=this._addParamToObject("controller","true",A);A=this._addParamToObject("wmode","transparent",A);A=this._addParamToObject("cache","false",A);A=this._addParamToObject("quality","high",A);B.appendChild(A)}if(this._getParameter("lightwindow_iframe_embed")){this._appendIframe("no");this._writeToIframe(this._convertToMarkup(B,"object"))}else{this._appendObject(B,"object",$("lightwindow_contents"))}this._handleFinalWindowAnimation(0)}else{this._handleFinalWindowAnimation(0)}}this._setupActions()}};Event.observe(window,"load",lightwindowInit,false);var myLightWindow=null;function lightwindowInit(){myLightWindow=new lightwindow()};



function showVideojw(t, h) { myLightWindow.activateWindow({ href: h, title: t, width: 970, height: 555 }); }

// CSS Browser Selector v0.2.6 - http://rafael.adm.br/css_browser_selector
var css_browser_selector = function() { var ua = navigator.userAgent.toLowerCase(), is = function(t) { return ua.indexOf(t) != -1 }, h = document.getElementsByTagName('html')[0], b = (!(/opera|webtv/i.test(ua)) && /msie (\d)/.test(ua)) ? ('ie ie' + RegExp.$1) : is('gecko/') ? 'gecko' : is('opera/9') ? 'opera opera9' : /opera(\d)/.test(ua) ? 'opera opera' + RegExp.$1 : is('konqueror') ? 'konqueror' : is('applewebkit/') ? 'webkit safari' : is('mozilla/') ? 'gecko' : '', os = (is('x11') || is('linux')) ? ' linux' : is('mac') ? ' mac' : is('win') ? ' win' : ''; var c = b + os + ' js'; h.className += h.className ? ' ' + c : c } ();

// SWFObject v1.5 - http://blog.deconcept.com/swfobject/
if (typeof deconcept == "undefined") { var deconcept = new Object(); } if (typeof deconcept.util == "undefined") { deconcept.util = new Object(); } if (typeof deconcept.SWFObjectUtil == "undefined") { deconcept.SWFObjectUtil = new Object(); } deconcept.SWFObject = function(_1, id, w, h, _5, c, _7, _8, _9, _a) { if (!document.getElementById) { return; } this.DETECT_KEY = _a ? _a : "detectflash"; this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY); this.params = new Object(); this.variables = new Object(); this.attributes = new Array(); if (_1) { this.setAttribute("swf", _1); } if (id) { this.setAttribute("id", id); } if (w) { this.setAttribute("width", w); } if (h) { this.setAttribute("height", h); } if (_5) { this.setAttribute("version", new deconcept.PlayerVersion(_5.toString().split("."))); } this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(); if (!window.opera && document.all && this.installedVer.major > 7) { deconcept.SWFObject.doPrepUnload = true; } if (c) { this.addParam("bgcolor", c); } var q = _7 ? _7 : "high"; this.addParam("quality", q); this.setAttribute("useExpressInstall", false); this.setAttribute("doExpressInstall", false); var _c = (_8) ? _8 : window.location; this.setAttribute("xiRedirectUrl", _c); this.setAttribute("redirectUrl", ""); if (_9) { this.setAttribute("redirectUrl", _9); } }; deconcept.SWFObject.prototype = { useExpressInstall: function(_d) { this.xiSWFPath = !_d ? "expressinstall.swf" : _d; this.setAttribute("useExpressInstall", true); }, setAttribute: function(_e, _f) { this.attributes[_e] = _f; }, getAttribute: function(_10) { return this.attributes[_10]; }, addParam: function(_11, _12) { this.params[_11] = _12; }, getParams: function() { return this.params; }, addVariable: function(_13, _14) { this.variables[_13] = _14; }, getVariable: function(_15) { return this.variables[_15]; }, getVariables: function() { return this.variables; }, getVariablePairs: function() { var _16 = new Array(); var key; var _18 = this.getVariables(); for (key in _18) { _16[_16.length] = key + "=" + _18[key]; } return _16; }, getSWFHTML: function() { var _19 = ""; if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "PlugIn"); this.setAttribute("swf", this.xiSWFPath); } _19 = "<embed type=\"application/x-shockwave-flash\" src=\"" + this.getAttribute("swf") + "\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\""; _19 += " id=\"" + this.getAttribute("id") + "\" name=\"" + this.getAttribute("id") + "\" "; var _1a = this.getParams(); for (var key in _1a) { _19 += [key] + "=\"" + _1a[key] + "\" "; } var _1c = this.getVariablePairs().join("&"); if (_1c.length > 0) { _19 += "flashvars=\"" + _1c + "\""; } _19 += "/>"; } else { if (this.getAttribute("doExpressInstall")) { this.addVariable("MMplayerType", "ActiveX"); this.setAttribute("swf", this.xiSWFPath); } _19 = "<object id=\"" + this.getAttribute("id") + "\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"" + this.getAttribute("width") + "\" height=\"" + this.getAttribute("height") + "\" style=\"" + this.getAttribute("style") + "\">"; _19 += "<param name=\"movie\" value=\"" + this.getAttribute("swf") + "\" />"; var _1d = this.getParams(); for (var key in _1d) { _19 += "<param name=\"" + key + "\" value=\"" + _1d[key] + "\" />"; } var _1f = this.getVariablePairs().join("&"); if (_1f.length > 0) { _19 += "<param name=\"flashvars\" value=\"" + _1f + "\" />"; } _19 += "</object>"; } return _19; }, write: function(_20) { if (this.getAttribute("useExpressInstall")) { var _21 = new deconcept.PlayerVersion([6, 0, 65]); if (this.installedVer.versionIsValid(_21) && !this.installedVer.versionIsValid(this.getAttribute("version"))) { this.setAttribute("doExpressInstall", true); this.addVariable("MMredirectURL", escape(this.getAttribute("xiRedirectUrl"))); document.title = document.title.slice(0, 47) + " - Flash Player Installation"; this.addVariable("MMdoctitle", document.title); } } if (this.skipDetect || this.getAttribute("doExpressInstall") || this.installedVer.versionIsValid(this.getAttribute("version"))) { var n = (typeof _20 == "string") ? document.getElementById(_20) : _20; n.innerHTML = this.getSWFHTML(); return true; } else { if (this.getAttribute("redirectUrl") != "") { document.location.replace(this.getAttribute("redirectUrl")); } } return false; } }; deconcept.SWFObjectUtil.getPlayerVersion = function() { var _23 = new deconcept.PlayerVersion([0, 0, 0]); if (navigator.plugins && navigator.mimeTypes.length) { var x = navigator.plugins["Shockwave Flash"]; if (x && x.description) { _23 = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); } } else { if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0) { var axo = 1; var _26 = 3; while (axo) { try { _26++; axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + _26); _23 = new deconcept.PlayerVersion([_26, 0, 0]); } catch (e) { axo = null; } } } else { try { var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); } catch (e) { try { var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); _23 = new deconcept.PlayerVersion([6, 0, 21]); axo.AllowScriptAccess = "always"; } catch (e) { if (_23.major == 6) { return _23; } } try { axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); } catch (e) { } } if (axo != null) { _23 = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); } } } return _23; }; deconcept.PlayerVersion = function(_29) { this.major = _29[0] != null ? parseInt(_29[0]) : 0; this.minor = _29[1] != null ? parseInt(_29[1]) : 0; this.rev = _29[2] != null ? parseInt(_29[2]) : 0; }; deconcept.PlayerVersion.prototype.versionIsValid = function(fv) { if (this.major < fv.major) { return false; } if (this.major > fv.major) { return true; } if (this.minor < fv.minor) { return false; } if (this.minor > fv.minor) { return true; } if (this.rev < fv.rev) { return false; } return true; }; deconcept.util = { getRequestParameter: function(_2b) { var q = document.location.search || document.location.hash; if (_2b == null) { return q; } if (q) { var _2d = q.substring(1).split("&"); for (var i = 0; i < _2d.length; i++) { if (_2d[i].substring(0, _2d[i].indexOf("=")) == _2b) { return _2d[i].substring((_2d[i].indexOf("=") + 1)); } } } return ""; } }; deconcept.SWFObjectUtil.cleanupSWFs = function() { var _2f = document.getElementsByTagName("OBJECT"); for (var i = _2f.length - 1; i >= 0; i--) { _2f[i].style.display = "none"; for (var x in _2f[i]) { if (typeof _2f[i][x] == "function") { _2f[i][x] = function() { }; } } } }; if (deconcept.SWFObject.doPrepUnload) { if (!deconcept.unloadSet) { deconcept.SWFObjectUtil.prepUnload = function() { __flash_unloadHandler = function() { }; __flash_savedUnloadHandler = function() { }; window.attachEvent("onunload", deconcept.SWFObjectUtil.cleanupSWFs); }; window.attachEvent("onbeforeunload", deconcept.SWFObjectUtil.prepUnload); deconcept.unloadSet = true; } } if (!document.getElementById && document.all) { document.getElementById = function(id) { return document.all[id]; }; } var getQueryParamValue = deconcept.util.getRequestParameter; var FlashObject = deconcept.SWFObject; var SWFObject = deconcept.SWFObject;

// prototype 1.6.0.2 - http://www.prototypejs.org/
var Prototype = { Version: "1.6.0.2", Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf("AppleWebKit/") > -1, Gecko: navigator.userAgent.indexOf("Gecko") > -1 && navigator.userAgent.indexOf("KHTML") == -1, MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) }, BrowserFeatures: { XPath: !!document.evaluate, ElementExtensions: !!window.HTMLElement, SpecificElementExtensions: document.createElement("div").__proto__ && document.createElement("div").__proto__ !== document.createElement("form").__proto__ }, ScriptFragment: "<script[^>]*>([\\S\\s]*?)<\/script>", JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, emptyFunction: function() { }, K: function(A) { return A; } }; if (Prototype.Browser.MobileSafari) { Prototype.BrowserFeatures.SpecificElementExtensions = false; } var Class = { create: function() { var E = null, D = $A(arguments); if (Object.isFunction(D[0])) { E = D.shift(); } function A() { this.initialize.apply(this, arguments); } Object.extend(A, Class.Methods); A.superclass = E; A.subclasses = []; if (E) { var B = function() { }; B.prototype = E.prototype; A.prototype = new B; E.subclasses.push(A); } for (var C = 0; C < D.length; C++) { A.addMethods(D[C]); } if (!A.prototype.initialize) { A.prototype.initialize = Prototype.emptyFunction; } A.prototype.constructor = A; return A; } }; Class.Methods = { addMethods: function(G) { var C = this.superclass && this.superclass.prototype; var B = Object.keys(G); if (!Object.keys({ toString: true }).length) { B.push("toString", "valueOf"); } for (var A = 0, D = B.length; A < D; A++) { var F = B[A], E = G[F]; if (C && Object.isFunction(E) && E.argumentNames().first() == "$super") { var H = E, E = Object.extend((function(I) { return function() { return C[I].apply(this, arguments); }; })(F).wrap(H), { valueOf: function() { return H; }, toString: function() { return H.toString(); } }); } this.prototype[F] = E; } return this; } }; var Abstract = {}; Object.extend = function(A, C) { for (var B in C) { A[B] = C[B]; } return A; }; Object.extend(Object, { inspect: function(A) { try { if (Object.isUndefined(A)) { return "undefined"; } if (A === null) { return "null"; } return A.inspect ? A.inspect() : String(A); } catch (B) { if (B instanceof RangeError) { return "..."; } throw B; } }, toJSON: function(A) { var C = typeof A; switch (C) { case "undefined": case "function": case "unknown": return; case "boolean": return A.toString(); } if (A === null) { return "null"; } if (A.toJSON) { return A.toJSON(); } if (Object.isElement(A)) { return; } var B = []; for (var E in A) { var D = Object.toJSON(A[E]); if (!Object.isUndefined(D)) { B.push(E.toJSON() + ": " + D); } } return "{" + B.join(", ") + "}"; }, toQueryString: function(A) { return $H(A).toQueryString(); }, toHTML: function(A) { return A && A.toHTML ? A.toHTML() : String.interpret(A); }, keys: function(A) { var B = []; for (var C in A) { B.push(C); } return B; }, values: function(B) { var A = []; for (var C in B) { A.push(B[C]); } return A; }, clone: function(A) { return Object.extend({}, A); }, isElement: function(A) { return A && A.nodeType == 1; }, isArray: function(A) { return A != null && typeof A == "object" && "splice" in A && "join" in A; }, isHash: function(A) { return A instanceof Hash; }, isFunction: function(A) { return typeof A == "function"; }, isString: function(A) { return typeof A == "string"; }, isNumber: function(A) { return typeof A == "number"; }, isUndefined: function(A) { return typeof A == "undefined"; } }); Object.extend(Function.prototype, { argumentNames: function() { var A = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); return A.length == 1 && !A[0] ? [] : A; }, bind: function() { if (arguments.length < 2 && Object.isUndefined(arguments[0])) { return this; } var A = this, C = $A(arguments), B = C.shift(); return function() { return A.apply(B, C.concat($A(arguments))); }; }, bindAsEventListener: function() { var A = this, C = $A(arguments), B = C.shift(); return function(D) { return A.apply(B, [D || window.event].concat(C)); }; }, curry: function() { if (!arguments.length) { return this; } var A = this, B = $A(arguments); return function() { return A.apply(this, B.concat($A(arguments))); }; }, delay: function() { var A = this, B = $A(arguments), C = B.shift() * 1000; return window.setTimeout(function() { return A.apply(A, B); }, C); }, wrap: function(B) { var A = this; return function() { return B.apply(this, [A.bind(this)].concat($A(arguments))); }; }, methodize: function() { if (this._methodized) { return this._methodized; } var A = this; return this._methodized = function() { return A.apply(null, [this].concat($A(arguments))); }; } }); Function.prototype.defer = Function.prototype.delay.curry(0.01); Date.prototype.toJSON = function() { return '"' + this.getUTCFullYear() + "-" + (this.getUTCMonth() + 1).toPaddedString(2) + "-" + this.getUTCDate().toPaddedString(2) + "T" + this.getUTCHours().toPaddedString(2) + ":" + this.getUTCMinutes().toPaddedString(2) + ":" + this.getUTCSeconds().toPaddedString(2) + 'Z"'; }; var Try = { these: function() { var C; for (var B = 0, D = arguments.length; B < D; B++) { var A = arguments[B]; try { C = A(); break; } catch (E) { } } return C; } }; RegExp.prototype.match = RegExp.prototype.test; RegExp.escape = function(A) { return String(A).replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1"); }; var PeriodicalExecuter = Class.create({ initialize: function(B, A) { this.callback = B; this.frequency = A; this.currentlyExecuting = false; this.registerCallback(); }, registerCallback: function() { this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); }, execute: function() { this.callback(this); }, stop: function() { if (!this.timer) { return; } clearInterval(this.timer); this.timer = null; }, onTimerEvent: function() { if (!this.currentlyExecuting) { try { this.currentlyExecuting = true; this.execute(); } finally { this.currentlyExecuting = false; } } } }); Object.extend(String, { interpret: function(A) { return A == null ? "" : String(A); }, specialChar: { "\b": "\\b", "\t": "\\t", "\n": "\\n", "\f": "\\f", "\r": "\\r", "\\": "\\\\"} }); Object.extend(String.prototype, { gsub: function(E, C) { var A = "", D = this, B; C = arguments.callee.prepareReplacement(C); while (D.length > 0) { if (B = D.match(E)) { A += D.slice(0, B.index); A += String.interpret(C(B)); D = D.slice(B.index + B[0].length); } else { A += D, D = ""; } } return A; }, sub: function(C, A, B) { A = this.gsub.prepareReplacement(A); B = Object.isUndefined(B) ? 1 : B; return this.gsub(C, function(D) { if (--B < 0) { return D[0]; } return A(D); }); }, scan: function(B, A) { this.gsub(B, A); return String(this); }, truncate: function(B, A) { B = B || 30; A = Object.isUndefined(A) ? "..." : A; return this.length > B ? this.slice(0, B - A.length) + A : String(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 B = new RegExp(Prototype.ScriptFragment, "img"); var A = new RegExp(Prototype.ScriptFragment, "im"); return (this.match(B) || []).map(function(C) { return (C.match(A) || ["", ""])[1]; }); }, evalScripts: function() { return this.extractScripts().map(function(script) { return eval(script); }); }, escapeHTML: function() { var A = arguments.callee; A.text.data = this; return A.div.innerHTML; }, unescapeHTML: function() { var A = new Element("div"); A.innerHTML = this.stripTags(); return A.childNodes[0] ? (A.childNodes.length > 1 ? $A(A.childNodes).inject("", function(B, C) { return B + C.nodeValue; }) : A.childNodes[0].nodeValue) : ""; }, toQueryParams: function(B) { var A = this.strip().match(/([^?#]*)(#.*)?$/); if (!A) { return {}; } return A[1].split(B || "&").inject({}, function(E, F) { if ((F = F.split("="))[0]) { var C = decodeURIComponent(F.shift()); var D = F.length > 1 ? F.join("=") : F[0]; if (D != undefined) { D = decodeURIComponent(D); } if (C in E) { if (!Object.isArray(E[C])) { E[C] = [E[C]]; } E[C].push(D); } else { E[C] = D; } } return E; }); }, toArray: function() { return this.split(""); }, succ: function() { return this.slice(0, this.length - 1) + String.fromCharCode(this.charCodeAt(this.length - 1) + 1); }, times: function(A) { return A < 1 ? "" : new Array(A + 1).join(this); }, camelize: function() { var D = this.split("-"), A = D.length; if (A == 1) { return D[0]; } var C = this.charAt(0) == "-" ? D[0].charAt(0).toUpperCase() + D[0].substring(1) : D[0]; for (var B = 1; B < A; B++) { C += D[B].charAt(0).toUpperCase() + D[B].substring(1); } return C; }, 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(B) { var A = this.gsub(/[\x00-\x1f\\]/, function(C) { var D = String.specialChar[C[0]]; return D ? D : "\\u00" + C[0].charCodeAt().toPaddedString(2, 16); }); if (B) { return '"' + A.replace(/"/g, '\\"') + '"'; } return "'" + A.replace(/'/g, "\\'") + "'"; }, toJSON: function() { return this.inspect(true); }, unfilterJSON: function(A) { return this.sub(A || Prototype.JSONFilter, "#{1}"); }, isJSON: function() { var A = this; if (A.blank()) { return false; } A = this.replace(/\\./g, "@").replace(/"[^"\\\n\r]*"/g, ""); return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(A); }, evalJSON: function(sanitize) { var json = this.unfilterJSON(); try { if (!sanitize || json.isJSON()) { return eval("(" + json + ")"); } } catch (e) { } throw new SyntaxError("Badly formed JSON string: " + this.inspect()); }, include: function(A) { return this.indexOf(A) > -1; }, startsWith: function(A) { return this.indexOf(A) === 0; }, endsWith: function(A) { var B = this.length - A.length; return B >= 0 && this.lastIndexOf(A) === B; }, empty: function() { return this == ""; }, blank: function() { return /^\s*$/.test(this); }, interpolate: function(A, B) { return new Template(this, B).evaluate(A); } }); if (Prototype.Browser.WebKit || Prototype.Browser.IE) { Object.extend(String.prototype, { escapeHTML: function() { return this.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); }, unescapeHTML: function() { return this.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">"); } }); } String.prototype.gsub.prepareReplacement = function(B) { if (Object.isFunction(B)) { return B; } var A = new Template(B); return function(C) { return A.evaluate(C); }; }; String.prototype.parseQuery = String.prototype.toQueryParams; Object.extend(String.prototype.escapeHTML, { div: document.createElement("div"), text: document.createTextNode("") }); with (String.prototype.escapeHTML) { div.appendChild(text); } var Template = Class.create({ initialize: function(A, B) { this.template = A.toString(); this.pattern = B || Template.Pattern; }, evaluate: function(A) { if (Object.isFunction(A.toTemplateReplacements)) { A = A.toTemplateReplacements(); } return this.template.gsub(this.pattern, function(D) { if (A == null) { return ""; } var F = D[1] || ""; if (F == "\\") { return D[2]; } var B = A, G = D[3]; var E = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/; D = E.exec(G); if (D == null) { return F; } while (D != null) { var C = D[1].startsWith("[") ? D[2].gsub("\\\\]", "]") : D[1]; B = B[C]; if (null == B || "" == D[3]) { break; } G = G.substring("[" == D[3] ? D[1].length : D[0].length); D = E.exec(G); } return F + String.interpret(B); }); } }); Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; var $break = {}; var Enumerable = { each: function(C, B) { var A = 0; C = C.bind(B); try { this._each(function(E) { C(E, A++); }); } catch (D) { if (D != $break) { throw D; } } return this; }, eachSlice: function(D, C, B) { C = C ? C.bind(B) : Prototype.K; var A = -D, E = [], F = this.toArray(); while ((A += D) < F.length) { E.push(F.slice(A, A + D)); } return E.collect(C, B); }, all: function(C, B) { C = C ? C.bind(B) : Prototype.K; var A = true; this.each(function(E, D) { A = A && !!C(E, D); if (!A) { throw $break; } }); return A; }, any: function(C, B) { C = C ? C.bind(B) : Prototype.K; var A = false; this.each(function(E, D) { if (A = !!C(E, D)) { throw $break; } }); return A; }, collect: function(C, B) { C = C ? C.bind(B) : Prototype.K; var A = []; this.each(function(E, D) { A.push(C(E, D)); }); return A; }, detect: function(C, B) { C = C.bind(B); var A; this.each(function(E, D) { if (C(E, D)) { A = E; throw $break; } }); return A; }, findAll: function(C, B) { C = C.bind(B); var A = []; this.each(function(E, D) { if (C(E, D)) { A.push(E); } }); return A; }, grep: function(D, C, B) { C = C ? C.bind(B) : Prototype.K; var A = []; if (Object.isString(D)) { D = new RegExp(D); } this.each(function(F, E) { if (D.match(F)) { A.push(C(F, E)); } }); return A; }, include: function(A) { if (Object.isFunction(this.indexOf)) { if (this.indexOf(A) != -1) { return true; } } var B = false; this.each(function(C) { if (C == A) { B = true; throw $break; } }); return B; }, inGroupsOf: function(B, A) { A = Object.isUndefined(A) ? null : A; return this.eachSlice(B, function(C) { while (C.length < B) { C.push(A); } return C; }); }, inject: function(A, C, B) { C = C.bind(B); this.each(function(E, D) { A = C(A, E, D); }); return A; }, invoke: function(B) { var A = $A(arguments).slice(1); return this.map(function(C) { return C[B].apply(C, A); }); }, max: function(C, B) { C = C ? C.bind(B) : Prototype.K; var A; this.each(function(E, D) { E = C(E, D); if (A == null || E >= A) { A = E; } }); return A; }, min: function(C, B) { C = C ? C.bind(B) : Prototype.K; var A; this.each(function(E, D) { E = C(E, D); if (A == null || E < A) { A = E; } }); return A; }, partition: function(D, B) { D = D ? D.bind(B) : Prototype.K; var C = [], A = []; this.each(function(F, E) { (D(F, E) ? C : A).push(F); }); return [C, A]; }, pluck: function(B) { var A = []; this.each(function(C) { A.push(C[B]); }); return A; }, reject: function(C, B) { C = C.bind(B); var A = []; this.each(function(E, D) { if (!C(E, D)) { A.push(E); } }); return A; }, sortBy: function(B, A) { B = B.bind(A); return this.map(function(D, C) { return { value: D, criteria: B(D, C) }; }).sort(function(F, E) { var D = F.criteria, C = E.criteria; return D < C ? -1 : D > C ? 1 : 0; }).pluck("value"); }, toArray: function() { return this.map(); }, zip: function() { var B = Prototype.K, A = $A(arguments); if (Object.isFunction(A.last())) { B = A.pop(); } var C = [this].concat(A).map($A); return this.map(function(E, D) { return B(C.pluck(D)); }); }, 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, filter: Enumerable.findAll, member: Enumerable.include, entries: Enumerable.toArray, every: Enumerable.all, some: Enumerable.any }); function $A(C) { if (!C) { return []; } if (C.toArray) { return C.toArray(); } var B = C.length || 0, A = new Array(B); while (B--) { A[B] = C[B]; } return A; } if (Prototype.Browser.WebKit) { $A = function(C) { if (!C) { return []; } if (!(Object.isFunction(C) && C == "[object NodeList]") && C.toArray) { return C.toArray(); } var B = C.length || 0, A = new Array(B); while (B--) { A[B] = C[B]; } return A; }; } Array.from = $A; Object.extend(Array.prototype, Enumerable); if (!Array.prototype._reverse) { Array.prototype._reverse = Array.prototype.reverse; } Object.extend(Array.prototype, { _each: function(B) { for (var A = 0, C = this.length; A < C; A++) { B(this[A]); } }, 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(A) { return A != null; }); }, flatten: function() { return this.inject([], function(B, A) { return B.concat(Object.isArray(A) ? A.flatten() : [A]); }); }, without: function() { var A = $A(arguments); return this.select(function(B) { return !A.include(B); }); }, reverse: function(A) { return (A !== false ? this : this.toArray())._reverse(); }, reduce: function() { return this.length > 1 ? this : this[0]; }, uniq: function(A) { return this.inject([], function(D, C, B) { if (0 == B || (A ? D.last() != C : !D.include(C))) { D.push(C); } return D; }); }, intersect: function(A) { return this.uniq().findAll(function(B) { return A.detect(function(C) { return B === C; }); }); }, clone: function() { return [].concat(this); }, size: function() { return this.length; }, inspect: function() { return "[" + this.map(Object.inspect).join(", ") + "]"; }, toJSON: function() { var A = []; this.each(function(B) { var C = Object.toJSON(B); if (!Object.isUndefined(C)) { A.push(C); } }); return "[" + A.join(", ") + "]"; } }); if (Object.isFunction(Array.prototype.forEach)) { Array.prototype._each = Array.prototype.forEach; } if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(C, A) { A || (A = 0); var B = this.length; if (A < 0) { A = B + A; } for (; A < B; A++) { if (this[A] === C) { return A; } } return -1; }; } if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = function(B, A) { A = isNaN(A) ? this.length : (A < 0 ? this.length + A : A) + 1; var C = this.slice(0, A).reverse().indexOf(B); return (C < 0) ? C : A - C - 1; }; } Array.prototype.toArray = Array.prototype.clone; function $w(A) { if (!Object.isString(A)) { return []; } A = A.strip(); return A ? A.split(/\s+/) : []; } if (Prototype.Browser.Opera) { Array.prototype.concat = function() { var E = []; for (var B = 0, C = this.length; B < C; B++) { E.push(this[B]); } for (var B = 0, C = arguments.length; B < C; B++) { if (Object.isArray(arguments[B])) { for (var A = 0, D = arguments[B].length; A < D; A++) { E.push(arguments[B][A]); } } else { E.push(arguments[B]); } } return E; }; } Object.extend(Number.prototype, { toColorPart: function() { return this.toPaddedString(2, 16); }, succ: function() { return this + 1; }, times: function(A) { $R(0, this, true).each(A); return this; }, toPaddedString: function(C, B) { var A = this.toString(B || 10); return "0".times(C - A.length) + A; }, toJSON: function() { return isFinite(this) ? this.toString() : "null"; } }); $w("abs round ceil floor").each(function(A) { Number.prototype[A] = Math[A].methodize(); }); function $H(A) { return new Hash(A); } var Hash = Class.create(Enumerable, (function() { function A(B, C) { if (Object.isUndefined(C)) { return B; } return B + "=" + encodeURIComponent(String.interpret(C)); } return { initialize: function(B) { this._object = Object.isHash(B) ? B.toObject() : Object.clone(B); }, _each: function(C) { for (var B in this._object) { var D = this._object[B], E = [B, D]; E.key = B; E.value = D; C(E); } }, set: function(B, C) { return this._object[B] = C; }, get: function(B) { return this._object[B]; }, unset: function(B) { var C = this._object[B]; delete this._object[B]; return C; }, toObject: function() { return Object.clone(this._object); }, keys: function() { return this.pluck("key"); }, values: function() { return this.pluck("value"); }, index: function(C) { var B = this.detect(function(D) { return D.value === C; }); return B && B.key; }, merge: function(B) { return this.clone().update(B); }, update: function(B) { return new Hash(B).inject(this, function(C, D) { C.set(D.key, D.value); return C; }); }, toQueryString: function() { return this.map(function(D) { var C = encodeURIComponent(D.key), B = D.value; if (B && typeof B == "object") { if (Object.isArray(B)) { return B.map(A.curry(C)).join("&"); } } return A(C, B); }).join("&"); }, inspect: function() { return "#<Hash:{" + this.map(function(B) { return B.map(Object.inspect).join(": "); }).join(", ") + "}>"; }, toJSON: function() { return Object.toJSON(this.toObject()); }, clone: function() { return new Hash(this); } }; })()); Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; Hash.from = $H; var ObjectRange = Class.create(Enumerable, { initialize: function(C, A, B) { this.start = C; this.end = A; this.exclusive = B; }, _each: function(A) { var B = this.start; while (this.include(B)) { A(B); B = B.succ(); } }, include: function(A) { if (A < this.start) { return false; } if (this.exclusive) { return A < this.end; } return A <= this.end; } }); var $R = function(C, A, B) { return new ObjectRange(C, A, B); }; 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(A) { this.responders._each(A); }, register: function(A) { if (!this.include(A)) { this.responders.push(A); } }, unregister: function(A) { this.responders = this.responders.without(A); }, dispatch: function(D, B, C, A) { this.each(function(E) { if (Object.isFunction(E[D])) { try { E[D].apply(E, [B, C, A]); } catch (F) { } } }); } }; Object.extend(Ajax.Responders, Enumerable); Ajax.Responders.register({ onCreate: function() { Ajax.activeRequestCount++; }, onComplete: function() { Ajax.activeRequestCount--; } }); Ajax.Base = Class.create({ initialize: function(A) { this.options = { method: "post", asynchronous: true, contentType: "application/x-www-form-urlencoded", encoding: "UTF-8", parameters: "", evalJSON: true, evalJS: true }; Object.extend(this.options, A || {}); this.options.method = this.options.method.toLowerCase(); if (Object.isString(this.options.parameters)) { this.options.parameters = this.options.parameters.toQueryParams(); } else { if (Object.isHash(this.options.parameters)) { this.options.parameters = this.options.parameters.toObject(); } } } }); Ajax.Request = Class.create(Ajax.Base, { _complete: false, initialize: function($super, B, A) { $super(A); this.transport = Ajax.getTransport(); this.request(B); }, request: function(B) { this.url = B; this.method = this.options.method; var D = Object.clone(this.options.parameters); if (!["get", "post"].include(this.method)) { D._method = this.method; this.method = "post"; } this.parameters = D; if (D = Object.toQueryString(D)) { if (this.method == "get") { this.url += (this.url.include("?") ? "&" : "?") + D; } else { if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { D += "&_="; } } } try { var A = new Ajax.Response(this); if (this.options.onCreate) { this.options.onCreate(A); } Ajax.Responders.dispatch("onCreate", this, A); this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous); if (this.options.asynchronous) { this.respondToReadyState.bind(this).defer(1); } this.transport.onreadystatechange = this.onStateChange.bind(this); this.setRequestHeaders(); this.body = this.method == "post" ? (this.options.postBody || D) : null; this.transport.send(this.body); if (!this.options.asynchronous && this.transport.overrideMimeType) { this.onStateChange(); } } catch (C) { this.dispatchException(C); } }, onStateChange: function() { var A = this.transport.readyState; if (A > 1 && !((A == 4) && this._complete)) { this.respondToReadyState(this.transport.readyState); } }, setRequestHeaders: function() { var E = { "X-Requested-With": "XMLHttpRequest", "X-Prototype-Version": Prototype.Version, Accept: "text/javascript, text/html, application/xml, text/xml, */*" }; if (this.method == "post") { E["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) { E.Connection = "close"; } } if (typeof this.options.requestHeaders == "object") { var C = this.options.requestHeaders; if (Object.isFunction(C.push)) { for (var B = 0, D = C.length; B < D; B += 2) { E[C[B]] = C[B + 1]; } } else { $H(C).each(function(F) { E[F.key] = F.value; }); } } for (var A in E) { this.transport.setRequestHeader(A, E[A]); } }, success: function() { var A = this.getStatus(); return !A || (A >= 200 && A < 300); }, getStatus: function() { try { return this.transport.status || 0; } catch (A) { return 0; } }, respondToReadyState: function(A) { var C = Ajax.Request.Events[A], B = new Ajax.Response(this); if (C == "Complete") { try { this._complete = true; (this.options["on" + B.status] || this.options["on" + (this.success() ? "Success" : "Failure")] || Prototype.emptyFunction)(B, B.headerJSON); } catch (D) { this.dispatchException(D); } var E = B.getHeader("Content-type"); if (this.options.evalJS == "force" || (this.options.evalJS && this.isSameOrigin() && E && E.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) { this.evalResponse(); } } try { (this.options["on" + C] || Prototype.emptyFunction)(B, B.headerJSON); Ajax.Responders.dispatch("on" + C, this, B, B.headerJSON); } catch (D) { this.dispatchException(D); } if (C == "Complete") { this.transport.onreadystatechange = Prototype.emptyFunction; } }, isSameOrigin: function() { var A = this.url.match(/^\s*https?:\/\/[^\/]*/); return !A || (A[0] == "#{protocol}//#{domain}#{port}".interpolate({ protocol: location.protocol, domain: document.domain, port: location.port ? ":" + location.port : "" })); }, getHeader: function(A) { try { return this.transport.getResponseHeader(A) || null; } catch (B) { return null; } }, evalResponse: function() { try { return eval((this.transport.responseText || "").unfilterJSON()); } catch (e) { this.dispatchException(e); } }, dispatchException: function(A) { (this.options.onException || Prototype.emptyFunction)(this, A); Ajax.Responders.dispatch("onException", this, A); } }); Ajax.Request.Events = ["Uninitialized", "Loading", "Loaded", "Interactive", "Complete"]; Ajax.Response = Class.create({ initialize: function(C) { this.request = C; var D = this.transport = C.transport, A = this.readyState = D.readyState; if ((A > 2 && !Prototype.Browser.IE) || A == 4) { this.status = this.getStatus(); this.statusText = this.getStatusText(); this.responseText = String.interpret(D.responseText); this.headerJSON = this._getHeaderJSON(); } if (A == 4) { var B = D.responseXML; this.responseXML = Object.isUndefined(B) ? null : B; this.responseJSON = this._getResponseJSON(); } }, status: 0, statusText: "", getStatus: Ajax.Request.prototype.getStatus, getStatusText: function() { try { return this.transport.statusText || ""; } catch (A) { return ""; } }, getHeader: Ajax.Request.prototype.getHeader, getAllHeaders: function() { try { return this.getAllResponseHeaders(); } catch (A) { return null; } }, getResponseHeader: function(A) { return this.transport.getResponseHeader(A); }, getAllResponseHeaders: function() { return this.transport.getAllResponseHeaders(); }, _getHeaderJSON: function() { var A = this.getHeader("X-JSON"); if (!A) { return null; } A = decodeURIComponent(escape(A)); try { return A.evalJSON(this.request.options.sanitizeJSON || !this.request.isSameOrigin()); } catch (B) { this.request.dispatchException(B); } }, _getResponseJSON: function() { var A = this.request.options; if (!A.evalJSON || (A.evalJSON != "force" && !(this.getHeader("Content-type") || "").include("application/json")) || this.responseText.blank()) { return null; } try { return this.responseText.evalJSON(A.sanitizeJSON || !this.request.isSameOrigin()); } catch (B) { this.request.dispatchException(B); } } }); Ajax.Updater = Class.create(Ajax.Request, { initialize: function($super, A, C, B) { this.container = { success: (A.success || A), failure: (A.failure || (A.success ? null : A)) }; B = Object.clone(B); var D = B.onComplete; B.onComplete = (function(E, F) { this.updateContent(E.responseText); if (Object.isFunction(D)) { D(E, F); } }).bind(this); $super(C, B); }, updateContent: function(D) { var C = this.container[this.success() ? "success" : "failure"], A = this.options; if (!A.evalScripts) { D = D.stripScripts(); } if (C = $(C)) { if (A.insertion) { if (Object.isString(A.insertion)) { var B = {}; B[A.insertion] = D; C.insert(B); } else { A.insertion(C, D); } } else { C.update(D); } } } }); Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { initialize: function($super, A, C, B) { $super(B); this.onComplete = this.options.onComplete; this.frequency = (this.options.frequency || 2); this.decay = (this.options.decay || 1); this.updater = {}; this.container = A; this.url = C; 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(A) { if (this.options.decay) { this.decay = (A.responseText == this.lastText ? this.decay * this.options.decay : 1); this.lastText = A.responseText; } this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); }, onTimerEvent: function() { this.updater = new Ajax.Updater(this.container, this.url, this.options); } }); function $(B) { if (arguments.length > 1) { for (var A = 0, D = [], C = arguments.length; A < C; A++) { D.push($(arguments[A])); } return D; } if (Object.isString(B)) { B = document.getElementById(B); } return Element.extend(B); } if (Prototype.BrowserFeatures.XPath) { document._getElementsByXPath = function(F, A) { var C = []; var E = document.evaluate(F, $(A) || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); for (var B = 0, D = E.snapshotLength; B < D; B++) { C.push(Element.extend(E.snapshotItem(B))); } return C; }; } if (!window.Node) { var Node = {}; } if (!Node.ELEMENT_NODE) { Object.extend(Node, { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTION_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 }); } (function() { var A = this.Element; this.Element = function(D, C) { C = C || {}; D = D.toLowerCase(); var B = Element.cache; if (Prototype.Browser.IE && C.name) { D = "<" + D + ' name="' + C.name + '">'; delete C.name; return Element.writeAttribute(document.createElement(D), C); } if (!B[D]) { B[D] = Element.extend(document.createElement(D)); } return Element.writeAttribute(B[D].cloneNode(false), C); }; Object.extend(this.Element, A || {}); }).call(window); Element.cache = {}; Element.Methods = { visible: function(A) { return $(A).style.display != "none"; }, toggle: function(A) { A = $(A); Element[Element.visible(A) ? "hide" : "show"](A); return A; }, hide: function(A) { $(A).style.display = "none"; return A; }, show: function(A) { $(A).style.display = ""; return A; }, remove: function(A) { A = $(A); A.parentNode.removeChild(A); return A; }, update: function(A, B) { A = $(A); if (B && B.toElement) { B = B.toElement(); } if (Object.isElement(B)) { return A.update().insert(B); } B = Object.toHTML(B); A.innerHTML = B.stripScripts(); B.evalScripts.bind(B).defer(); return A; }, replace: function(B, C) { B = $(B); if (C && C.toElement) { C = C.toElement(); } else { if (!Object.isElement(C)) { C = Object.toHTML(C); var A = B.ownerDocument.createRange(); A.selectNode(B); C.evalScripts.bind(C).defer(); C = A.createContextualFragment(C.stripScripts()); } } B.parentNode.replaceChild(C, B); return B; }, insert: function(C, E) { C = $(C); if (Object.isString(E) || Object.isNumber(E) || Object.isElement(E) || (E && (E.toElement || E.toHTML))) { E = { bottom: E }; } var D, F, B, G; for (var A in E) { D = E[A]; A = A.toLowerCase(); F = Element._insertionTranslations[A]; if (D && D.toElement) { D = D.toElement(); } if (Object.isElement(D)) { F(C, D); continue; } D = Object.toHTML(D); B = ((A == "before" || A == "after") ? C.parentNode : C).tagName.toUpperCase(); G = Element._getContentFromAnonymousElement(B, D.stripScripts()); if (A == "top" || A == "after") { G.reverse(); } G.each(F.curry(C)); D.evalScripts.bind(D).defer(); } return C; }, wrap: function(B, C, A) { B = $(B); if (Object.isElement(C)) { $(C).writeAttribute(A || {}); } else { if (Object.isString(C)) { C = new Element(C, A); } else { C = new Element("div", C); } } if (B.parentNode) { B.parentNode.replaceChild(C, B); } C.appendChild(B); return C; }, inspect: function(B) { B = $(B); var A = "<" + B.tagName.toLowerCase(); $H({ id: "id", className: "class" }).each(function(F) { var E = F.first(), C = F.last(); var D = (B[E] || "").toString(); if (D) { A += " " + C + "=" + D.inspect(true); } }); return A + ">"; }, recursivelyCollect: function(A, C) { A = $(A); var B = []; while (A = A[C]) { if (A.nodeType == 1) { B.push(Element.extend(A)); } } return B; }, ancestors: function(A) { return $(A).recursivelyCollect("parentNode"); }, descendants: function(A) { return $(A).select("*"); }, firstDescendant: function(A) { A = $(A).firstChild; while (A && A.nodeType != 1) { A = A.nextSibling; } return $(A); }, immediateDescendants: function(A) { if (!(A = $(A).firstChild)) { return []; } while (A && A.nodeType != 1) { A = A.nextSibling; } if (A) { return [A].concat($(A).nextSiblings()); } return []; }, previousSiblings: function(A) { return $(A).recursivelyCollect("previousSibling"); }, nextSiblings: function(A) { return $(A).recursivelyCollect("nextSibling"); }, siblings: function(A) { A = $(A); return A.previousSiblings().reverse().concat(A.nextSiblings()); }, match: function(B, A) { if (Object.isString(A)) { A = new Selector(A); } return A.match($(B)); }, up: function(B, D, A) { B = $(B); if (arguments.length == 1) { return $(B.parentNode); } var C = B.ancestors(); return Object.isNumber(D) ? C[D] : Selector.findElement(C, D, A); }, down: function(B, C, A) { B = $(B); if (arguments.length == 1) { return B.firstDescendant(); } return Object.isNumber(C) ? B.descendants()[C] : B.select(C)[A || 0]; }, previous: function(B, D, A) { B = $(B); if (arguments.length == 1) { return $(Selector.handlers.previousElementSibling(B)); } var C = B.previousSiblings(); return Object.isNumber(D) ? C[D] : Selector.findElement(C, D, A); }, next: function(C, D, B) { C = $(C); if (arguments.length == 1) { return $(Selector.handlers.nextElementSibling(C)); } var A = C.nextSiblings(); return Object.isNumber(D) ? A[D] : Selector.findElement(A, D, B); }, select: function() { var A = $A(arguments), B = $(A.shift()); return Selector.findChildElements(B, A); }, adjacent: function() { var A = $A(arguments), B = $(A.shift()); return Selector.findChildElements(B.parentNode, A).without(B); }, identify: function(B) { B = $(B); var C = B.readAttribute("id"), A = arguments.callee; if (C) { return C; } do { C = "anonymous_element_" + A.counter++; } while ($(C)); B.writeAttribute("id", C); return C; }, readAttribute: function(C, A) { C = $(C); if (Prototype.Browser.IE) { var B = Element._attributeTranslations.read; if (B.values[A]) { return B.values[A](C, A); } if (B.names[A]) { A = B.names[A]; } if (A.include(":")) { return (!C.attributes || !C.attributes[A]) ? null : C.attributes[A].value; } } return C.getAttribute(A); }, writeAttribute: function(E, C, F) { E = $(E); var B = {}, D = Element._attributeTranslations.write; if (typeof C == "object") { B = C; } else { B[C] = Object.isUndefined(F) ? true : F; } for (var A in B) { C = D.names[A] || A; F = B[A]; if (D.values[A]) { C = D.values[A](E, F); } if (F === false || F === null) { E.removeAttribute(C); } else { if (F === true) { E.setAttribute(C, C); } else { E.setAttribute(C, F); } } } return E; }, getHeight: function(A) { return $(A).getDimensions().height; }, getWidth: function(A) { return $(A).getDimensions().width; }, classNames: function(A) { return new Element.ClassNames(A); }, hasClassName: function(A, B) { if (!(A = $(A))) { return; } var C = A.className; return (C.length > 0 && (C == B || new RegExp("(^|\\s)" + B + "(\\s|$)").test(C))); }, addClassName: function(A, B) { if (!(A = $(A))) { return; } if (!A.hasClassName(B)) { A.className += (A.className ? " " : "") + B; } return A; }, removeClassName: function(A, B) { if (!(A = $(A))) { return; } A.className = A.className.replace(new RegExp("(^|\\s+)" + B + "(\\s+|$)"), " ").strip(); return A; }, toggleClassName: function(A, B) { if (!(A = $(A))) { return; } return A[A.hasClassName(B) ? "removeClassName" : "addClassName"](B); }, cleanWhitespace: function(B) { B = $(B); var C = B.firstChild; while (C) { var A = C.nextSibling; if (C.nodeType == 3 && !/\S/.test(C.nodeValue)) { B.removeChild(C); } C = A; } return B; }, empty: function(A) { return $(A).innerHTML.blank(); }, descendantOf: function(D, C) { D = $(D), C = $(C); var F = C; if (D.compareDocumentPosition) { return (D.compareDocumentPosition(C) & 8) === 8; } if (D.sourceIndex && !Prototype.Browser.Opera) { var E = D.sourceIndex, B = C.sourceIndex, A = C.nextSibling; if (!A) { do { C = C.parentNode; } while (!(A = C.nextSibling) && C.parentNode); } if (A && A.sourceIndex) { return (E > B && E < A.sourceIndex); } } while (D = D.parentNode) { if (D == F) { return true; } } return false; }, scrollTo: function(A) { A = $(A); var B = A.cumulativeOffset(); window.scrollTo(B[0], B[1]); return A; }, getStyle: function(B, C) { B = $(B); C = C == "float" ? "cssFloat" : C.camelize(); var D = B.style[C]; if (!D) { var A = document.defaultView.getComputedStyle(B, null); D = A ? A[C] : null; } if (C == "opacity") { return D ? parseFloat(D) : 1; } return D == "auto" ? null : D; }, getOpacity: function(A) { return $(A).getStyle("opacity"); }, setStyle: function(B, C) { B = $(B); var E = B.style, A; if (Object.isString(C)) { B.style.cssText += ";" + C; return C.include("opacity") ? B.setOpacity(C.match(/opacity:\s*(\d?\.?\d*)/)[1]) : B; } for (var D in C) { if (D == "opacity") { B.setOpacity(C[D]); } else { E[(D == "float" || D == "cssFloat") ? (Object.isUndefined(E.styleFloat) ? "cssFloat" : "styleFloat") : D] = C[D]; } } return B; }, setOpacity: function(A, B) { A = $(A); A.style.opacity = (B == 1 || B === "") ? "" : (B < 0.00001) ? 0 : B; return A; }, getDimensions: function(C) { C = $(C); var G = $(C).getStyle("display"); if (G != "none" && G != null) { return { width: C.offsetWidth, height: C.offsetHeight }; } var B = C.style; var F = B.visibility; var D = B.position; var A = B.display; B.visibility = "hidden"; B.position = "absolute"; B.display = "block"; var H = C.clientWidth; var E = C.clientHeight; B.display = A; B.position = D; B.visibility = F; return { width: H, height: E }; }, makePositioned: function(A) { A = $(A); var B = Element.getStyle(A, "position"); if (B == "static" || !B) { A._madePositioned = true; A.style.position = "relative"; if (window.opera) { A.style.top = 0; A.style.left = 0; } } return A; }, undoPositioned: function(A) { A = $(A); if (A._madePositioned) { A._madePositioned = undefined; A.style.position = A.style.top = A.style.left = A.style.bottom = A.style.right = ""; } return A; }, makeClipping: function(A) { A = $(A); if (A._overflow) { return A; } A._overflow = Element.getStyle(A, "overflow") || "auto"; if (A._overflow !== "hidden") { A.style.overflow = "hidden"; } return A; }, undoClipping: function(A) { A = $(A); if (!A._overflow) { return A; } A.style.overflow = A._overflow == "auto" ? "" : A._overflow; A._overflow = null; return A; }, cumulativeOffset: function(B) { var A = 0, C = 0; do { A += B.offsetTop || 0; C += B.offsetLeft || 0; B = B.offsetParent; } while (B); return Element._returnOffset(C, A); }, positionedOffset: function(B) { var A = 0, D = 0; do { A += B.offsetTop || 0; D += B.offsetLeft || 0; B = B.offsetParent; if (B) { if (B.tagName == "BODY") { break; } var C = Element.getStyle(B, "position"); if (C !== "static") { break; } } } while (B); return Element._returnOffset(D, A); }, absolutize: function(B) { B = $(B); if (B.getStyle("position") == "absolute") { return; } var D = B.positionedOffset(); var F = D[1]; var E = D[0]; var C = B.clientWidth; var A = B.clientHeight; B._originalLeft = E - parseFloat(B.style.left || 0); B._originalTop = F - parseFloat(B.style.top || 0); B._originalWidth = B.style.width; B._originalHeight = B.style.height; B.style.position = "absolute"; B.style.top = F + "px"; B.style.left = E + "px"; B.style.width = C + "px"; B.style.height = A + "px"; return B; }, relativize: function(A) { A = $(A); if (A.getStyle("position") == "relative") { return; } A.style.position = "relative"; var C = parseFloat(A.style.top || 0) - (A._originalTop || 0); var B = parseFloat(A.style.left || 0) - (A._originalLeft || 0); A.style.top = C + "px"; A.style.left = B + "px"; A.style.height = A._originalHeight; A.style.width = A._originalWidth; return A; }, cumulativeScrollOffset: function(B) { var A = 0, C = 0; do { A += B.scrollTop || 0; C += B.scrollLeft || 0; B = B.parentNode; } while (B); return Element._returnOffset(C, A); }, getOffsetParent: function(A) { if (A.offsetParent) { return $(A.offsetParent); } if (A == document.body) { return $(A); } while ((A = A.parentNode) && A != document.body) { if (Element.getStyle(A, "position") != "static") { return $(A); } } return $(document.body); }, viewportOffset: function(D) { var A = 0, C = 0; var B = D; do { A += B.offsetTop || 0; C += B.offsetLeft || 0; if (B.offsetParent == document.body && Element.getStyle(B, "position") == "absolute") { break; } } while (B = B.offsetParent); B = D; do { if (!Prototype.Browser.Opera || B.tagName == "BODY") { A -= B.scrollTop || 0; C -= B.scrollLeft || 0; } } while (B = B.parentNode); return Element._returnOffset(C, A); }, clonePosition: function(B, D) { var A = Object.extend({ setLeft: true, setTop: true, setWidth: true, setHeight: true, offsetTop: 0, offsetLeft: 0 }, arguments[2] || {}); D = $(D); var E = D.viewportOffset(); B = $(B); var F = [0, 0]; var C = null; if (Element.getStyle(B, "position") == "absolute") { C = B.getOffsetParent(); F = C.viewportOffset(); } if (C == document.body) { F[0] -= document.body.offsetLeft; F[1] -= document.body.offsetTop; } if (A.setLeft) { B.style.left = (E[0] - F[0] + A.offsetLeft) + "px"; } if (A.setTop) { B.style.top = (E[1] - F[1] + A.offsetTop) + "px"; } if (A.setWidth) { B.style.width = D.offsetWidth + "px"; } if (A.setHeight) { B.style.height = D.offsetHeight + "px"; } return B; } }; Element.Methods.identify.counter = 1; Object.extend(Element.Methods, { getElementsBySelector: Element.Methods.select, childElements: Element.Methods.immediateDescendants }); Element._attributeTranslations = { write: { names: { className: "class", htmlFor: "for" }, values: {}} }; if (Prototype.Browser.Opera) { Element.Methods.getStyle = Element.Methods.getStyle.wrap(function(D, B, C) { switch (C) { case "left": case "top": case "right": case "bottom": if (D(B, "position") === "static") { return null; } case "height": case "width": if (!Element.visible(B)) { return null; } var E = parseInt(D(B, C), 10); if (E !== B["offset" + C.capitalize()]) { return E + "px"; } var A; if (C === "height") { A = ["border-top-width", "padding-top", "padding-bottom", "border-bottom-width"]; } else { A = ["border-left-width", "padding-left", "padding-right", "border-right-width"]; } return A.inject(E, function(F, G) { var H = D(B, G); return H === null ? F : F - parseInt(H, 10); }) + "px"; default: return D(B, C); } }); Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(function(C, A, B) { if (B === "title") { return A.title; } return C(A, B); }); } else { if (Prototype.Browser.IE) { Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(function(C, B) { B = $(B); var A = B.getStyle("position"); if (A !== "static") { return C(B); } B.setStyle({ position: "relative" }); var D = C(B); B.setStyle({ position: A }); return D; }); $w("positionedOffset viewportOffset").each(function(A) { Element.Methods[A] = Element.Methods[A].wrap(function(E, C) { C = $(C); var B = C.getStyle("position"); if (B !== "static") { return E(C); } var D = C.getOffsetParent(); if (D && D.getStyle("position") === "fixed") { D.setStyle({ zoom: 1 }); } C.setStyle({ position: "relative" }); var F = E(C); C.setStyle({ position: B }); return F; }); }); Element.Methods.getStyle = function(A, B) { A = $(A); B = (B == "float" || B == "cssFloat") ? "styleFloat" : B.camelize(); var C = A.style[B]; if (!C && A.currentStyle) { C = A.currentStyle[B]; } if (B == "opacity") { if (C = (A.getStyle("filter") || "").match(/alpha\(opacity=(.*)\)/)) { if (C[1]) { return parseFloat(C[1]) / 100; } } return 1; } if (C == "auto") { if ((B == "width" || B == "height") && (A.getStyle("display") != "none")) { return A["offset" + B.capitalize()] + "px"; } return null; } return C; }; Element.Methods.setOpacity = function(B, E) { function F(G) { return G.replace(/alpha\([^\)]*\)/gi, ""); } B = $(B); var A = B.currentStyle; if ((A && !A.hasLayout) || (!A && B.style.zoom == "normal")) { B.style.zoom = 1; } var D = B.getStyle("filter"), C = B.style; if (E == 1 || E === "") { (D = F(D)) ? C.filter = D : C.removeAttribute("filter"); return B; } else { if (E < 0.00001) { E = 0; } } C.filter = F(D) + "alpha(opacity=" + (E * 100) + ")"; return B; }; Element._attributeTranslations = { read: { names: { "class": "className", "for": "htmlFor" }, values: { _getAttr: function(A, B) { return A.getAttribute(B, 2); }, _getAttrNode: function(A, C) { var B = A.getAttributeNode(C); return B ? B.value : ""; }, _getEv: function(A, B) { B = A.getAttribute(B); return B ? B.toString().slice(23, -2) : null; }, _flag: function(A, B) { return $(A).hasAttribute(B) ? B : null; }, style: function(A) { return A.style.cssText.toLowerCase(); }, title: function(A) { return A.title; } }} }; Element._attributeTranslations.write = { names: Object.extend({ cellpadding: "cellPadding", cellspacing: "cellSpacing" }, Element._attributeTranslations.read.names), values: { checked: function(A, B) { A.checked = !!B; }, style: function(A, B) { A.style.cssText = B ? B : ""; } } }; Element._attributeTranslations.has = {}; $w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc").each(function(A) { Element._attributeTranslations.write.names[A.toLowerCase()] = A; Element._attributeTranslations.has[A.toLowerCase()] = A; }); (function(A) { Object.extend(A, { href: A._getAttr, src: A._getAttr, type: A._getAttr, action: A._getAttrNode, disabled: A._flag, checked: A._flag, readonly: A._flag, multiple: A._flag, onload: A._getEv, onunload: A._getEv, onclick: A._getEv, ondblclick: A._getEv, onmousedown: A._getEv, onmouseup: A._getEv, onmouseover: A._getEv, onmousemove: A._getEv, onmouseout: A._getEv, onfocus: A._getEv, onblur: A._getEv, onkeypress: A._getEv, onkeydown: A._getEv, onkeyup: A._getEv, onsubmit: A._getEv, onreset: A._getEv, onselect: A._getEv, onchange: A._getEv }); })(Element._attributeTranslations.read.values); } else { if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { Element.Methods.setOpacity = function(A, B) { A = $(A); A.style.opacity = (B == 1) ? 0.999999 : (B === "") ? "" : (B < 0.00001) ? 0 : B; return A; }; } else { if (Prototype.Browser.WebKit) { Element.Methods.setOpacity = function(A, B) { A = $(A); A.style.opacity = (B == 1 || B === "") ? "" : (B < 0.00001) ? 0 : B; if (B == 1) { if (A.tagName == "IMG" && A.width) { A.width++; A.width--; } else { try { var D = document.createTextNode(" "); A.appendChild(D); A.removeChild(D); } catch (C) { } } } return A; }; Element.Methods.cumulativeOffset = function(B) { var A = 0, C = 0; do { A += B.offsetTop || 0; C += B.offsetLeft || 0; if (B.offsetParent == document.body) { if (Element.getStyle(B, "position") == "absolute") { break; } } B = B.offsetParent; } while (B); return Element._returnOffset(C, A); }; } } } } if (Prototype.Browser.IE || Prototype.Browser.Opera) { Element.Methods.update = function(B, C) { B = $(B); if (C && C.toElement) { C = C.toElement(); } if (Object.isElement(C)) { return B.update().insert(C); } C = Object.toHTML(C); var A = B.tagName.toUpperCase(); if (A in Element._insertionTranslations.tags) { $A(B.childNodes).each(function(D) { B.removeChild(D); }); Element._getContentFromAnonymousElement(A, C.stripScripts()).each(function(D) { B.appendChild(D); }); } else { B.innerHTML = C.stripScripts(); } C.evalScripts.bind(C).defer(); return B; }; } if ("outerHTML" in document.createElement("div")) { Element.Methods.replace = function(C, E) { C = $(C); if (E && E.toElement) { E = E.toElement(); } if (Object.isElement(E)) { C.parentNode.replaceChild(E, C); return C; } E = Object.toHTML(E); var D = C.parentNode, B = D.tagName.toUpperCase(); if (Element._insertionTranslations.tags[B]) { var F = C.next(); var A = Element._getContentFromAnonymousElement(B, E.stripScripts()); D.removeChild(C); if (F) { A.each(function(G) { D.insertBefore(G, F); }); } else { A.each(function(G) { D.appendChild(G); }); } } else { C.outerHTML = E.stripScripts(); } E.evalScripts.bind(E).defer(); return C; }; } Element._returnOffset = function(B, C) { var A = [B, C]; A.left = B; A.top = C; return A; }; Element._getContentFromAnonymousElement = function(C, B) { var D = new Element("div"), A = Element._insertionTranslations.tags[C]; if (A) { D.innerHTML = A[0] + B + A[1]; A[2].times(function() { D = D.firstChild; }); } else { D.innerHTML = B; } return $A(D.childNodes); }; Element._insertionTranslations = { before: function(A, B) { A.parentNode.insertBefore(B, A); }, top: function(A, B) { A.insertBefore(B, A.firstChild); }, bottom: function(A, B) { A.appendChild(B); }, after: function(A, B) { A.parentNode.insertBefore(B, A.nextSibling); }, tags: { TABLE: ["<table>", "</table>", 1], TBODY: ["<table><tbody>", "</tbody></table>", 2], TR: ["<table><tbody><tr>", "</tr></tbody></table>", 3], TD: ["<table><tbody><tr><td>", "</td></tr></tbody></table>", 4], SELECT: ["<select>", "</select>", 1]} }; (function() { Object.extend(this.tags, { THEAD: this.tags.TBODY, TFOOT: this.tags.TBODY, TH: this.tags.TD }); }).call(Element._insertionTranslations); Element.Methods.Simulated = { hasAttribute: function(A, C) { C = Element._attributeTranslations.has[C] || C; var B = $(A).getAttributeNode(C); return B && B.specified; } }; Element.Methods.ByTag = {}; Object.extend(Element, Element.Methods); if (!Prototype.BrowserFeatures.ElementExtensions && document.createElement("div").__proto__) { window.HTMLElement = {}; window.HTMLElement.prototype = document.createElement("div").__proto__; Prototype.BrowserFeatures.ElementExtensions = true; } Element.extend = (function() { if (Prototype.BrowserFeatures.SpecificElementExtensions) { return Prototype.K; } var A = {}, B = Element.Methods.ByTag; var C = Object.extend(function(F) { if (!F || F._extendedByPrototype || F.nodeType != 1 || F == window) { return F; } var D = Object.clone(A), E = F.tagName, H, G; if (B[E]) { Object.extend(D, B[E]); } for (H in D) { G = D[H]; if (Object.isFunction(G) && !(H in F)) { F[H] = G.methodize(); } } F._extendedByPrototype = Prototype.emptyFunction; return F; }, { refresh: function() { if (!Prototype.BrowserFeatures.ElementExtensions) { Object.extend(A, Element.Methods); Object.extend(A, Element.Methods.Simulated); } } }); C.refresh(); return C; })(); Element.hasAttribute = function(A, B) { if (A.hasAttribute) { return A.hasAttribute(B); } return Element.Methods.Simulated.hasAttribute(A, B); }; Element.addMethods = function(C) { var I = Prototype.BrowserFeatures, D = Element.Methods.ByTag; if (!C) { Object.extend(Form, Form.Methods); Object.extend(Form.Element, Form.Element.Methods); Object.extend(Element.Methods.ByTag, { FORM: Object.clone(Form.Methods), INPUT: Object.clone(Form.Element.Methods), SELECT: Object.clone(Form.Element.Methods), TEXTAREA: Object.clone(Form.Element.Methods) }); } if (arguments.length == 2) { var B = C; C = arguments[1]; } if (!B) { Object.extend(Element.Methods, C || {}); } else { if (Object.isArray(B)) { B.each(H); } else { H(B); } } function H(F) { F = F.toUpperCase(); if (!Element.Methods.ByTag[F]) { Element.Methods.ByTag[F] = {}; } Object.extend(Element.Methods.ByTag[F], C); } function A(L, K, F) { F = F || false; for (var N in L) { var M = L[N]; if (!Object.isFunction(M)) { continue; } if (!F || !(N in K)) { K[N] = M.methodize(); } } } function E(L) { var F; var K = { OPTGROUP: "OptGroup", TEXTAREA: "TextArea", P: "Paragraph", FIELDSET: "FieldSet", UL: "UList", OL: "OList", DL: "DList", DIR: "Directory", H1: "Heading", H2: "Heading", H3: "Heading", H4: "Heading", H5: "Heading", H6: "Heading", Q: "Quote", INS: "Mod", DEL: "Mod", A: "Anchor", IMG: "Image", CAPTION: "TableCaption", COL: "TableCol", COLGROUP: "TableCol", THEAD: "TableSection", TFOOT: "TableSection", TBODY: "TableSection", TR: "TableRow", TH: "TableCell", TD: "TableCell", FRAMESET: "FrameSet", IFRAME: "IFrame" }; if (K[L]) { F = "HTML" + K[L] + "Element"; } if (window[F]) { return window[F]; } F = "HTML" + L + "Element"; if (window[F]) { return window[F]; } F = "HTML" + L.capitalize() + "Element"; if (window[F]) { return window[F]; } window[F] = {}; window[F].prototype = document.createElement(L).__proto__; return window[F]; } if (I.ElementExtensions) { A(Element.Methods, HTMLElement.prototype); A(Element.Methods.Simulated, HTMLElement.prototype, true); } if (I.SpecificElementExtensions) { for (var J in Element.Methods.ByTag) { var G = E(J); if (Object.isUndefined(G)) { continue; } A(D[J], G.prototype); } } Object.extend(Element, Element.Methods); delete Element.ByTag; if (Element.extend.refresh) { Element.extend.refresh(); } Element.cache = {}; }; document.viewport = { getDimensions: function() { var A = {}; var C = Prototype.Browser; $w("width height").each(function(E) { var B = E.capitalize(); A[E] = (C.WebKit && !document.evaluate) ? self["inner" + B] : (C.Opera) ? document.body["client" + B] : document.documentElement["client" + B]; }); return A; }, getWidth: function() { return this.getDimensions().width; }, getHeight: function() { return this.getDimensions().height; }, getScrollOffsets: function() { return Element._returnOffset(window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); } }; var Selector = Class.create({ initialize: function(A) { this.expression = A.strip(); this.compileMatcher(); }, shouldUseXPath: function() { if (!Prototype.BrowserFeatures.XPath) { return false; } var A = this.expression; if (Prototype.Browser.WebKit && (A.include("-of-type") || A.include(":empty"))) { return false; } if ((/(\[[\w-]*?:|:checked)/).test(this.expression)) { return false; } return true; }, compileMatcher: function() { if (this.shouldUseXPath()) { return this.compileXPathMatcher(); } var e = this.expression, ps = Selector.patterns, h = Selector.handlers, c = Selector.criteria, le, p, m; if (Selector._cache[e]) { this.matcher = Selector._cache[e]; return; } this.matcher = ["this.matcher = function(root) {", "var r = root, h = Selector.handlers, c = false, n;"]; while (e && le != e && (/\S/).test(e)) { le = e; for (var i in ps) { p = ps[i]; if (m = e.match(p)) { this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : new Template(c[i]).evaluate(m)); e = e.replace(m[0], ""); break; } } } this.matcher.push("return h.unique(n);\n}"); eval(this.matcher.join("\n")); Selector._cache[this.expression] = this.matcher; }, compileXPathMatcher: function() { var E = this.expression, F = Selector.patterns, B = Selector.xpath, D, A; if (Selector._cache[E]) { this.xpath = Selector._cache[E]; return; } this.matcher = [".//*"]; while (E && D != E && (/\S/).test(E)) { D = E; for (var C in F) { if (A = E.match(F[C])) { this.matcher.push(Object.isFunction(B[C]) ? B[C](A) : new Template(B[C]).evaluate(A)); E = E.replace(A[0], ""); break; } } } this.xpath = this.matcher.join(""); Selector._cache[this.expression] = this.xpath; }, findElements: function(A) { A = A || document; if (this.xpath) { return document._getElementsByXPath(this.xpath, A); } return this.matcher(A); }, match: function(H) { this.tokens = []; var L = this.expression, A = Selector.patterns, E = Selector.assertions; var B, D, F; while (L && B !== L && (/\S/).test(L)) { B = L; for (var I in A) { D = A[I]; if (F = L.match(D)) { if (E[I]) { this.tokens.push([I, Object.clone(F)]); L = L.replace(F[0], ""); } else { return this.findElements(document).include(H); } } } } var K = true, C, J; for (var I = 0, G; G = this.tokens[I]; I++) { C = G[0], J = G[1]; if (!Selector.assertions[C](H, J)) { K = false; break; } } return K; }, toString: function() { return this.expression; }, inspect: function() { return "#<Selector:" + this.expression.inspect() + ">"; } }); Object.extend(Selector, { _cache: {}, xpath: { descendant: "//*", child: "/*", adjacent: "/following-sibling::*[1]", laterSibling: "/following-sibling::*", tagName: function(A) { if (A[1] == "*") { return ""; } return "[local-name()='" + A[1].toLowerCase() + "' or local-name()='" + A[1].toUpperCase() + "']"; }, className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", id: "[@id='#{1}']", attrPresence: function(A) { A[1] = A[1].toLowerCase(); return new Template("[@#{1}]").evaluate(A); }, attr: function(A) { A[1] = A[1].toLowerCase(); A[3] = A[5] || A[6]; return new Template(Selector.xpath.operators[A[2]]).evaluate(A); }, pseudo: function(A) { var B = Selector.xpath.pseudos[A[1]]; if (!B) { return ""; } if (Object.isFunction(B)) { return B(A); } return new Template(Selector.xpath.pseudos[A[1]]).evaluate(A); }, operators: { "=": "[@#{1}='#{3}']", "!=": "[@#{1}!='#{3}']", "^=": "[starts-with(@#{1}, '#{3}')]", "$=": "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", "*=": "[contains(@#{1}, '#{3}')]", "~=": "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", "|=": "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" }, pseudos: { "first-child": "[not(preceding-sibling::*)]", "last-child": "[not(following-sibling::*)]", "only-child": "[not(preceding-sibling::* or following-sibling::*)]", empty: "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", checked: "[@checked]", disabled: "[@disabled]", enabled: "[not(@disabled)]", not: function(B) { var H = B[6], G = Selector.patterns, A = Selector.xpath, E, C; var F = []; while (H && E != H && (/\S/).test(H)) { E = H; for (var D in G) { if (B = H.match(G[D])) { C = Object.isFunction(A[D]) ? A[D](B) : new Template(A[D]).evaluate(B); F.push("(" + C.substring(1, C.length - 1) + ")"); H = H.replace(B[0], ""); break; } } } return "[not(" + F.join(" and ") + ")]"; }, "nth-child": function(A) { return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", A); }, "nth-last-child": function(A) { return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", A); }, "nth-of-type": function(A) { return Selector.xpath.pseudos.nth("position() ", A); }, "nth-last-of-type": function(A) { return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", A); }, "first-of-type": function(A) { A[6] = "1"; return Selector.xpath.pseudos["nth-of-type"](A); }, "last-of-type": function(A) { A[6] = "1"; return Selector.xpath.pseudos["nth-last-of-type"](A); }, "only-of-type": function(A) { var B = Selector.xpath.pseudos; return B["first-of-type"](A) + B["last-of-type"](A); }, nth: function(E, C) { var F, G = C[6], B; if (G == "even") { G = "2n+0"; } if (G == "odd") { G = "2n+1"; } if (F = G.match(/^(\d+)$/)) { return "[" + E + "= " + F[1] + "]"; } if (F = G.match(/^(-?\d*)?n(([+-])(\d+))?/)) { if (F[1] == "-") { F[1] = -1; } var D = F[1] ? Number(F[1]) : 1; var A = F[2] ? Number(F[2]) : 0; B = "[((#{fragment} - #{b}) mod #{a} = 0) and ((#{fragment} - #{b}) div #{a} >= 0)]"; return new Template(B).evaluate({ fragment: E, a: D, b: A }); } } } }, criteria: { tagName: 'n = h.tagName(n, r, "#{1}", c);      c = false;', className: 'n = h.className(n, r, "#{1}", c);    c = false;', id: 'n = h.id(n, r, "#{1}", c);           c = false;', attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;', attr: function(A) { A[3] = (A[5] || A[6]); return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(A); }, pseudo: function(A) { if (A[6]) { A[6] = A[6].replace(/"/g, '\\"'); } return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(A); }, descendant: 'c = "descendant";', child: 'c = "child";', adjacent: 'c = "adjacent";', laterSibling: 'c = "laterSibling";' }, patterns: { laterSibling: /^\s*~\s*/, child: /^\s*>\s*/, adjacent: /^\s*\+\s*/, descendant: /^\s/, tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, id: /^#([\w\-\*]+)(\b|$)/, className: /^\.([\w\-\*]+)(\b|$)/, pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/, attrPresence: /^\[([\w]+)\]/, attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ }, assertions: { tagName: function(A, B) { return B[1].toUpperCase() == A.tagName.toUpperCase(); }, className: function(A, B) { return Element.hasClassName(A, B[1]); }, id: function(A, B) { return A.id === B[1]; }, attrPresence: function(A, B) { return Element.hasAttribute(A, B[1]); }, attr: function(B, C) { var A = Element.readAttribute(B, C[1]); return A && Selector.operators[C[2]](A, C[5] || C[6]); } }, handlers: { concat: function(B, A) { for (var C = 0, D; D = A[C]; C++) { B.push(D); } return B; }, mark: function(A) { var D = Prototype.emptyFunction; for (var B = 0, C; C = A[B]; B++) { C._countedByPrototype = D; } return A; }, unmark: function(A) { for (var B = 0, C; C = A[B]; B++) { C._countedByPrototype = undefined; } return A; }, index: function(A, D, G) { A._countedByPrototype = Prototype.emptyFunction; if (D) { for (var B = A.childNodes, E = B.length - 1, C = 1; E >= 0; E--) { var F = B[E]; if (F.nodeType == 1 && (!G || F._countedByPrototype)) { F.nodeIndex = C++; } } } else { for (var E = 0, C = 1, B = A.childNodes; F = B[E]; E++) { if (F.nodeType == 1 && (!G || F._countedByPrototype)) { F.nodeIndex = C++; } } } }, unique: function(B) { if (B.length == 0) { return B; } var D = [], E; for (var C = 0, A = B.length; C < A; C++) { if (!(E = B[C])._countedByPrototype) { E._countedByPrototype = Prototype.emptyFunction; D.push(Element.extend(E)); } } return Selector.handlers.unmark(D); }, descendant: function(A) { var D = Selector.handlers; for (var C = 0, B = [], E; E = A[C]; C++) { D.concat(B, E.getElementsByTagName("*")); } return B; }, child: function(A) { var E = Selector.handlers; for (var D = 0, C = [], F; F = A[D]; D++) { for (var B = 0, G; G = F.childNodes[B]; B++) { if (G.nodeType == 1 && G.tagName != "!") { C.push(G); } } } return C; }, adjacent: function(A) { for (var C = 0, B = [], E; E = A[C]; C++) { var D = this.nextElementSibling(E); if (D) { B.push(D); } } return B; }, laterSibling: function(A) { var D = Selector.handlers; for (var C = 0, B = [], E; E = A[C]; C++) { D.concat(B, Element.nextSiblings(E)); } return B; }, nextElementSibling: function(A) { while (A = A.nextSibling) { if (A.nodeType == 1) { return A; } } return null; }, previousElementSibling: function(A) { while (A = A.previousSibling) { if (A.nodeType == 1) { return A; } } return null; }, tagName: function(A, H, C, B) { var I = C.toUpperCase(); var E = [], G = Selector.handlers; if (A) { if (B) { if (B == "descendant") { for (var F = 0, D; D = A[F]; F++) { G.concat(E, D.getElementsByTagName(C)); } return E; } else { A = this[B](A); } if (C == "*") { return A; } } for (var F = 0, D; D = A[F]; F++) { if (D.tagName.toUpperCase() === I) { E.push(D); } } return E; } else { return H.getElementsByTagName(C); } }, id: function(B, A, H, F) { var G = $(H), D = Selector.handlers; if (!G) { return []; } if (!B && A == document) { return [G]; } if (B) { if (F) { if (F == "child") { for (var C = 0, E; E = B[C]; C++) { if (G.parentNode == E) { return [G]; } } } else { if (F == "descendant") { for (var C = 0, E; E = B[C]; C++) { if (Element.descendantOf(G, E)) { return [G]; } } } else { if (F == "adjacent") { for (var C = 0, E; E = B[C]; C++) { if (Selector.handlers.previousElementSibling(G) == E) { return [G]; } } } else { B = D[F](B); } } } } for (var C = 0, E; E = B[C]; C++) { if (E == G) { return [G]; } } return []; } return (G && Element.descendantOf(G, A)) ? [G] : []; }, className: function(B, A, C, D) { if (B && D) { B = this[D](B); } return Selector.handlers.byClassName(B, A, C); }, byClassName: function(C, B, F) { if (!C) { C = Selector.handlers.descendant([B]); } var H = " " + F + " "; for (var E = 0, D = [], G, A; G = C[E]; E++) { A = G.className; if (A.length == 0) { continue; } if (A == F || (" " + A + " ").include(H)) { D.push(G); } } return D; }, attrPresence: function(C, B, A, G) { if (!C) { C = B.getElementsByTagName("*"); } if (C && G) { C = this[G](C); } var E = []; for (var D = 0, F; F = C[D]; D++) { if (Element.hasAttribute(F, A)) { E.push(F); } } return E; }, attr: function(A, I, H, J, C, B) { if (!A) { A = I.getElementsByTagName("*"); } if (A && B) { A = this[B](A); } var K = Selector.operators[C], F = []; for (var E = 0, D; D = A[E]; E++) { var G = Element.readAttribute(D, H); if (G === null) { continue; } if (K(G, J)) { F.push(D); } } return F; }, pseudo: function(B, C, E, A, D) { if (B && D) { B = this[D](B); } if (!B) { B = A.getElementsByTagName("*"); } return Selector.pseudos[C](B, E, A); } }, pseudos: { "first-child": function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (Selector.handlers.previousElementSibling(E)) { continue; } C.push(E); } return C; }, "last-child": function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (Selector.handlers.nextElementSibling(E)) { continue; } C.push(E); } return C; }, "only-child": function(B, G, A) { var E = Selector.handlers; for (var D = 0, C = [], F; F = B[D]; D++) { if (!E.previousElementSibling(F) && !E.nextElementSibling(F)) { C.push(F); } } return C; }, "nth-child": function(B, C, A) { return Selector.pseudos.nth(B, C, A); }, "nth-last-child": function(B, C, A) { return Selector.pseudos.nth(B, C, A, true); }, "nth-of-type": function(B, C, A) { return Selector.pseudos.nth(B, C, A, false, true); }, "nth-last-of-type": function(B, C, A) { return Selector.pseudos.nth(B, C, A, true, true); }, "first-of-type": function(B, C, A) { return Selector.pseudos.nth(B, "1", A, false, true); }, "last-of-type": function(B, C, A) { return Selector.pseudos.nth(B, "1", A, true, true); }, "only-of-type": function(B, D, A) { var C = Selector.pseudos; return C["last-of-type"](C["first-of-type"](B, D, A), D, A); }, getIndices: function(B, A, C) { if (B == 0) { return A > 0 ? [A] : []; } return $R(1, C).inject([], function(D, E) { if (0 == (E - A) % B && (E - A) / B >= 0) { D.push(E); } return D; }); }, nth: function(A, L, N, K, C) { if (A.length == 0) { return []; } if (L == "even") { L = "2n+0"; } if (L == "odd") { L = "2n+1"; } var J = Selector.handlers, I = [], B = [], E; J.mark(A); for (var H = 0, D; D = A[H]; H++) { if (!D.parentNode._countedByPrototype) { J.index(D.parentNode, K, C); B.push(D.parentNode); } } if (L.match(/^\d+$/)) { L = Number(L); for (var H = 0, D; D = A[H]; H++) { if (D.nodeIndex == L) { I.push(D); } } } else { if (E = L.match(/^(-?\d*)?n(([+-])(\d+))?/)) { if (E[1] == "-") { E[1] = -1; } var O = E[1] ? Number(E[1]) : 1; var M = E[2] ? Number(E[2]) : 0; var P = Selector.pseudos.getIndices(O, M, A.length); for (var H = 0, D, F = P.length; D = A[H]; H++) { for (var G = 0; G < F; G++) { if (D.nodeIndex == P[G]) { I.push(D); } } } } } J.unmark(A); J.unmark(B); return I; }, empty: function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (E.tagName == "!" || (E.firstChild && !E.innerHTML.match(/^\s*$/))) { continue; } C.push(E); } return C; }, not: function(A, D, I) { var G = Selector.handlers, J, C; var H = new Selector(D).findElements(I); G.mark(H); for (var F = 0, E = [], B; B = A[F]; F++) { if (!B._countedByPrototype) { E.push(B); } } G.unmark(H); return E; }, enabled: function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (!E.disabled) { C.push(E); } } return C; }, disabled: function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (E.disabled) { C.push(E); } } return C; }, checked: function(B, F, A) { for (var D = 0, C = [], E; E = B[D]; D++) { if (E.checked) { C.push(E); } } return C; } }, operators: { "=": function(B, A) { return B == A; }, "!=": function(B, A) { return B != A; }, "^=": function(B, A) { return B.startsWith(A); }, "$=": function(B, A) { return B.endsWith(A); }, "*=": function(B, A) { return B.include(A); }, "~=": function(B, A) { return (" " + B + " ").include(" " + A + " "); }, "|=": function(B, A) { return ("-" + B.toUpperCase() + "-").include("-" + A.toUpperCase() + "-"); } }, split: function(B) { var A = []; B.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(C) { A.push(C[1].strip()); }); return A; }, matchElements: function(F, G) { var E = $$(G), D = Selector.handlers; D.mark(E); for (var C = 0, B = [], A; A = F[C]; C++) { if (A._countedByPrototype) { B.push(A); } } D.unmark(E); return B; }, findElement: function(B, C, A) { if (Object.isNumber(C)) { A = C; C = false; } return Selector.matchElements(B, C || "*")[A || 0]; }, findChildElements: function(E, G) { G = Selector.split(G.join(",")); var D = [], F = Selector.handlers; for (var C = 0, B = G.length, A; C < B; C++) { A = new Selector(G[C].strip()); F.concat(D, A.findElements(E)); } return (B > 1) ? F.unique(D) : D; } }); if (Prototype.Browser.IE) { Object.extend(Selector.handlers, { concat: function(B, A) { for (var C = 0, D; D = A[C]; C++) { if (D.tagName !== "!") { B.push(D); } } return B; }, unmark: function(A) { for (var B = 0, C; C = A[B]; B++) { C.removeAttribute("_countedByPrototype"); } return A; } }); } function $$() { return Selector.findChildElements(document, $A(arguments)); } var Form = { reset: function(A) { $(A).reset(); return A; }, serializeElements: function(G, B) { if (typeof B != "object") { B = { hash: !!B }; } else { if (Object.isUndefined(B.hash)) { B.hash = true; } } var C, F, A = false, E = B.submit; var D = G.inject({}, function(H, I) { if (!I.disabled && I.name) { C = I.name; F = $(I).getValue(); if (F != null && (I.type != "submit" || (!A && E !== false && (!E || C == E) && (A = true)))) { if (C in H) { if (!Object.isArray(H[C])) { H[C] = [H[C]]; } H[C].push(F); } else { H[C] = F; } } } return H; }); return B.hash ? D : Object.toQueryString(D); } }; Form.Methods = { serialize: function(B, A) { return Form.serializeElements(Form.getElements(B), A); }, getElements: function(A) { return $A($(A).getElementsByTagName("*")).inject([], function(B, C) { if (Form.Element.Serializers[C.tagName.toLowerCase()]) { B.push(Element.extend(C)); } return B; }); }, getInputs: function(G, C, D) { G = $(G); var A = G.getElementsByTagName("input"); if (!C && !D) { return $A(A).map(Element.extend); } for (var E = 0, H = [], F = A.length; E < F; E++) { var B = A[E]; if ((C && B.type != C) || (D && B.name != D)) { continue; } H.push(Element.extend(B)); } return H; }, disable: function(A) { A = $(A); Form.getElements(A).invoke("disable"); return A; }, enable: function(A) { A = $(A); Form.getElements(A).invoke("enable"); return A; }, findFirstElement: function(B) { var C = $(B).getElements().findAll(function(D) { return "hidden" != D.type && !D.disabled; }); var A = C.findAll(function(D) { return D.hasAttribute("tabIndex") && D.tabIndex >= 0; }).sortBy(function(D) { return D.tabIndex; }).first(); return A ? A : C.find(function(D) { return ["input", "select", "textarea"].include(D.tagName.toLowerCase()); }); }, focusFirstElement: function(A) { A = $(A); A.findFirstElement().activate(); return A; }, request: function(B, A) { B = $(B), A = Object.clone(A || {}); var D = A.parameters, C = B.readAttribute("action") || ""; if (C.blank()) { C = window.location.href; } A.parameters = B.serialize(true); if (D) { if (Object.isString(D)) { D = D.toQueryParams(); } Object.extend(A.parameters, D); } if (B.hasAttribute("method") && !A.method) { A.method = B.method; } return new Ajax.Request(C, A); } }; Form.Element = { focus: function(A) { $(A).focus(); return A; }, select: function(A) { $(A).select(); return A; } }; Form.Element.Methods = { serialize: function(A) { A = $(A); if (!A.disabled && A.name) { var B = A.getValue(); if (B != undefined) { var C = {}; C[A.name] = B; return Object.toQueryString(C); } } return ""; }, getValue: function(A) { A = $(A); var B = A.tagName.toLowerCase(); return Form.Element.Serializers[B](A); }, setValue: function(A, B) { A = $(A); var C = A.tagName.toLowerCase(); Form.Element.Serializers[C](A, B); return A; }, clear: function(A) { $(A).value = ""; return A; }, present: function(A) { return $(A).value != ""; }, activate: function(A) { A = $(A); try { A.focus(); if (A.select && (A.tagName.toLowerCase() != "input" || !["button", "reset", "submit"].include(A.type))) { A.select(); } } catch (B) { } return A; }, disable: function(A) { A = $(A); A.blur(); A.disabled = true; return A; }, enable: function(A) { A = $(A); A.disabled = false; return A; } }; var Field = Form.Element; var $F = Form.Element.Methods.getValue; Form.Element.Serializers = { input: function(A, B) { switch (A.type.toLowerCase()) { case "checkbox": case "radio": return Form.Element.Serializers.inputSelector(A, B); default: return Form.Element.Serializers.textarea(A, B); } }, inputSelector: function(A, B) { if (Object.isUndefined(B)) { return A.checked ? A.value : null; } else { A.checked = !!B; } }, textarea: function(A, B) { if (Object.isUndefined(B)) { return A.value; } else { A.value = B; } }, select: function(D, A) { if (Object.isUndefined(A)) { return this[D.type == "select-one" ? "selectOne" : "selectMany"](D); } else { var C, F, G = !Object.isArray(A); for (var B = 0, E = D.length; B < E; B++) { C = D.options[B]; F = this.optionValue(C); if (G) { if (F == A) { C.selected = true; return; } } else { C.selected = A.include(F); } } } }, selectOne: function(B) { var A = B.selectedIndex; return A >= 0 ? this.optionValue(B.options[A]) : null; }, selectMany: function(D) { var A, E = D.length; if (!E) { return null; } for (var C = 0, A = []; C < E; C++) { var B = D.options[C]; if (B.selected) { A.push(this.optionValue(B)); } } return A; }, optionValue: function(A) { return Element.extend(A).hasAttribute("value") ? A.value : A.text; } }; Abstract.TimedObserver = Class.create(PeriodicalExecuter, { initialize: function($super, A, B, C) { $super(C, B); this.element = $(A); this.lastValue = this.getValue(); }, execute: function() { var A = this.getValue(); if (Object.isString(this.lastValue) && Object.isString(A) ? this.lastValue != A : String(this.lastValue) != String(A)) { this.callback(this.element, A); this.lastValue = A; } } }); Form.Element.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.Observer = Class.create(Abstract.TimedObserver, { getValue: function() { return Form.serialize(this.element); } }); Abstract.EventObserver = Class.create({ initialize: function(A, B) { this.element = $(A); this.callback = B; this.lastValue = this.getValue(); if (this.element.tagName.toLowerCase() == "form") { this.registerFormCallbacks(); } else { this.registerCallback(this.element); } }, onElementEvent: function() { var A = this.getValue(); if (this.lastValue != A) { this.callback(this.element, A); this.lastValue = A; } }, registerFormCallbacks: function() { Form.getElements(this.element).each(this.registerCallback, this); }, registerCallback: function(A) { if (A.type) { switch (A.type.toLowerCase()) { case "checkbox": case "radio": Event.observe(A, "click", this.onElementEvent.bind(this)); break; default: Event.observe(A, "change", this.onElementEvent.bind(this)); break; } } } }); Form.Element.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.Element.getValue(this.element); } }); Form.EventObserver = Class.create(Abstract.EventObserver, { getValue: function() { return Form.serialize(this.element); } }); if (!window.Event) { var Event = {}; } 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, KEY_INSERT: 45, cache: {}, relatedTarget: function(B) { var A; switch (B.type) { case "mouseover": A = B.fromElement; break; case "mouseout": A = B.toElement; break; default: return null; } return Element.extend(A); } }); Event.Methods = (function() { var A; if (Prototype.Browser.IE) { var B = { 0: 1, 1: 4, 2: 2 }; A = function(D, C) { return D.button == B[C]; }; } else { if (Prototype.Browser.WebKit) { A = function(D, C) { switch (C) { case 0: return D.which == 1 && !D.metaKey; case 1: return D.which == 1 && D.metaKey; default: return false; } }; } else { A = function(D, C) { return D.which ? (D.which === C + 1) : (D.button === C); }; } } return { isLeftClick: function(C) { return A(C, 0); }, isMiddleClick: function(C) { return A(C, 1); }, isRightClick: function(C) { return A(C, 2); }, element: function(D) { var C = Event.extend(D).target; return Element.extend(C.nodeType == Node.TEXT_NODE ? C.parentNode : C); }, findElement: function(D, F) { var C = Event.element(D); if (!F) { return C; } var E = [C].concat(C.ancestors()); return Selector.findElement(E, F, 0); }, pointer: function(C) { return { x: C.pageX || (C.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)), y: C.pageY || (C.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) }; }, pointerX: function(C) { return Event.pointer(C).x; }, pointerY: function(C) { return Event.pointer(C).y; }, stop: function(C) { Event.extend(C); C.preventDefault(); C.stopPropagation(); C.stopped = true; } }; })(); Event.extend = (function() { var A = Object.keys(Event.Methods).inject({}, function(B, C) { B[C] = Event.Methods[C].methodize(); return B; }); if (Prototype.Browser.IE) { Object.extend(A, { stopPropagation: function() { this.cancelBubble = true; }, preventDefault: function() { this.returnValue = false; }, inspect: function() { return "[object Event]"; } }); return function(B) { if (!B) { return false; } if (B._extendedByPrototype) { return B; } B._extendedByPrototype = Prototype.emptyFunction; var C = Event.pointer(B); Object.extend(B, { target: B.srcElement, relatedTarget: Event.relatedTarget(B), pageX: C.x, pageY: C.y }); return Object.extend(B, A); }; } else { Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; Object.extend(Event.prototype, A); return Prototype.K; } })(); Object.extend(Event, (function() { var B = Event.cache; function C(J) { if (J._prototypeEventID) { return J._prototypeEventID[0]; } arguments.callee.id = arguments.callee.id || 1; return J._prototypeEventID = [++arguments.callee.id]; } function G(J) { if (J && J.include(":")) { return "dataavailable"; } return J; } function A(J) { return B[J] = B[J] || {}; } function F(L, J) { var K = A(L); return K[J] = K[J] || []; } function H(K, J, L) { var O = C(K); var N = F(O, J); if (N.pluck("handler").include(L)) { return false; } var M = function(P) { if (!Event || !Event.extend || (P.eventName && P.eventName != J)) { return false; } Event.extend(P); L.call(K, P); }; M.handler = L; N.push(M); return M; } function I(M, J, K) { var L = F(M, J); return L.find(function(N) { return N.handler == K; }); } function D(M, J, K) { var L = A(M); if (!L[J]) { return false; } L[J] = L[J].without(I(M, J, K)); } function E() { for (var K in B) { for (var J in B[K]) { B[K][J] = null; } } } if (window.attachEvent) { window.attachEvent("onunload", E); } return { observe: function(L, J, M) { L = $(L); var K = G(J); var N = H(L, J, M); if (!N) { return L; } if (L.addEventListener) { L.addEventListener(K, N, false); } else { L.attachEvent("on" + K, N); } return L; }, stopObserving: function(L, J, M) { L = $(L); var O = C(L), K = G(J); if (!M && J) { F(O, J).each(function(P) { L.stopObserving(J, P.handler); }); return L; } else { if (!J) { Object.keys(A(O)).each(function(P) { L.stopObserving(P); }); return L; } } var N = I(O, J, M); if (!N) { return L; } if (L.removeEventListener) { L.removeEventListener(K, N, false); } else { L.detachEvent("on" + K, N); } D(O, J, M); return L; }, fire: function(L, K, J) { L = $(L); if (L == document && document.createEvent && !L.dispatchEvent) { L = document.documentElement; } var M; if (document.createEvent) { M = document.createEvent("HTMLEvents"); M.initEvent("dataavailable", true, true); } else { M = document.createEventObject(); M.eventType = "ondataavailable"; } M.eventName = K; M.memo = J || {}; if (document.createEvent) { L.dispatchEvent(M); } else { L.fireEvent(M.eventType, M); } return Event.extend(M); } }; })()); Object.extend(Event, Event.Methods); Element.addMethods({ fire: Event.fire, observe: Event.observe, stopObserving: Event.stopObserving }); Object.extend(document, { fire: Element.Methods.fire.methodize(), observe: Element.Methods.observe.methodize(), stopObserving: Element.Methods.stopObserving.methodize(), loaded: false }); (function() { var B; function A() { if (document.loaded) { return; } if (B) { window.clearInterval(B); } document.fire("dom:loaded"); document.loaded = true; } if (document.addEventListener) { if (Prototype.Browser.WebKit) { B = window.setInterval(function() { if (/loaded|complete/.test(document.readyState)) { A(); } }, 0); Event.observe(window, "load", A); } else { document.addEventListener("DOMContentLoaded", A, false); } } else { document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>"); $("__onDOMContentLoaded").onreadystatechange = function() { if (this.readyState == "complete") { this.onreadystatechange = null; A(); } }; } })(); Hash.toQueryString = Object.toQueryString; var Toggle = { display: Element.toggle }; Element.Methods.childOf = Element.Methods.descendantOf; var Insertion = { Before: function(A, B) { return Element.insert(A, { before: B }); }, Top: function(A, B) { return Element.insert(A, { top: B }); }, Bottom: function(A, B) { return Element.insert(A, { bottom: B }); }, After: function(A, B) { return Element.insert(A, { after: B }); } }; var $continue = new Error('"throw $continue" is deprecated, use "return" instead'); 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; }, within: function(B, A, C) { if (this.includeScrollOffsets) { return this.withinIncludingScrolloffsets(B, A, C); } this.xcomp = A; this.ycomp = C; this.offset = Element.cumulativeOffset(B); return (C >= this.offset[1] && C < this.offset[1] + B.offsetHeight && A >= this.offset[0] && A < this.offset[0] + B.offsetWidth); }, withinIncludingScrolloffsets: function(B, A, D) { var C = Element.cumulativeScrollOffset(B); this.xcomp = A + C[0] - this.deltaX; this.ycomp = D + C[1] - this.deltaY; this.offset = Element.cumulativeOffset(B); return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1] + B.offsetHeight && this.xcomp >= this.offset[0] && this.xcomp < this.offset[0] + B.offsetWidth); }, overlap: function(B, A) { if (!B) { return 0; } if (B == "vertical") { return ((this.offset[1] + A.offsetHeight) - this.ycomp) / A.offsetHeight; } if (B == "horizontal") { return ((this.offset[0] + A.offsetWidth) - this.xcomp) / A.offsetWidth; } }, cumulativeOffset: Element.Methods.cumulativeOffset, positionedOffset: Element.Methods.positionedOffset, absolutize: function(A) { Position.prepare(); return Element.absolutize(A); }, relativize: function(A) { Position.prepare(); return Element.relativize(A); }, realOffset: Element.Methods.cumulativeScrollOffset, offsetParent: Element.Methods.getOffsetParent, page: Element.Methods.viewportOffset, clone: function(B, C, A) { A = A || {}; return Element.clonePosition(C, B, A); } }; if (!document.getElementsByClassName) { document.getElementsByClassName = function(B) { function A(C) { return C.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + C + " ')]"; } B.getElementsByClassName = Prototype.BrowserFeatures.XPath ? function(C, E) { E = E.toString().strip(); var D = /\s/.test(E) ? $w(E).map(A).join("") : A(E); return D ? document._getElementsByXPath(".//*" + D, C) : []; } : function(E, F) { F = F.toString().strip(); var G = [], H = (/\s/.test(F) ? $w(F) : null); if (!H && !F) { return G; } var C = $(E).getElementsByTagName("*"); F = " " + F + " "; for (var D = 0, J, I; J = C[D]; D++) { if (J.className && (I = " " + J.className + " ") && (I.include(F) || (H && H.all(function(K) { return !K.toString().blank() && I.include(" " + K + " "); })))) { G.push(Element.extend(J)); } } return G; }; return function(D, C) { return $(C || document.body).getElementsByClassName(D); }; } (Element.Methods); } Element.ClassNames = Class.create(); Element.ClassNames.prototype = { initialize: function(A) { this.element = $(A); }, _each: function(A) { this.element.className.split(/\s+/).select(function(B) { return B.length > 0; })._each(A); }, set: function(A) { this.element.className = A; }, add: function(A) { if (this.include(A)) { return; } this.set($A(this).concat(A).join(" ")); }, remove: function(A) { if (!this.include(A)) { return; } this.set($A(this).without(A).join(" ")); }, toString: function() { return $A(this).join(" "); } }; Object.extend(Element.ClassNames.prototype, Enumerable); Element.addMethods();

// script.aculo.us v1.8.1 - http://script.aculo.us, http://mir.aculo.us
var Scriptaculous = { Version: "1.8.1", require: function(A) { document.write('<script type="text/javascript" src="' + A + '"><\/script>'); }, REQUIRED_PROTOTYPE: "1.6.0", load: function() { function A(B) { var C = B.split("."); return parseInt(C[0]) * 100000 + parseInt(C[1]) * 1000 + parseInt(C[2]); } if ((typeof Prototype == "undefined") || (typeof Element == "undefined") || (typeof Element.Methods == "undefined") || (A(Prototype.Version) < A(Scriptaculous.REQUIRED_PROTOTYPE))) { throw ("script.aculo.us requires the Prototype JavaScript framework >= " + Scriptaculous.REQUIRED_PROTOTYPE); } $A(document.getElementsByTagName("script")).findAll(function(B) { return (B.src && B.src.match(/scriptaculous\.js(\?.*)?$/)); }).each(function(C) { var D = C.src.replace(/scriptaculous\.js(\?.*)?$/, ""); var B = C.src.match(/\?.*load=([a-z,]*)/); (B ? B[1] : "builder,effects,dragdrop,controls,slider,sound").split(",").each(function(E) { Scriptaculous.require(D + E + ".js"); }); }); } }; Scriptaculous.load();

// script.aculo.us effects.js v1.8.1 - http://script.aculo.us, http://mir.aculo.us
String.prototype.parseColor = function() { var A = "#"; if (this.slice(0, 4) == "rgb(") { var C = this.slice(4, this.length - 1).split(","); var B = 0; do { A += parseInt(C[B]).toColorPart(); } while (++B < 3); } else { if (this.slice(0, 1) == "#") { if (this.length == 4) { for (var B = 1; B < 4; B++) { A += (this.charAt(B) + this.charAt(B)).toLowerCase(); } } if (this.length == 7) { A = this.toLowerCase(); } } } return (A.length == 7 ? A : (arguments[0] || this)); }; Element.collectTextNodes = function(A) { return $A($(A).childNodes).collect(function(B) { return (B.nodeType == 3 ? B.nodeValue : (B.hasChildNodes() ? Element.collectTextNodes(B) : "")); }).flatten().join(""); }; Element.collectTextNodesIgnoreClass = function(A, B) { return $A($(A).childNodes).collect(function(C) { return (C.nodeType == 3 ? C.nodeValue : ((C.hasChildNodes() && !Element.hasClassName(C, B)) ? Element.collectTextNodesIgnoreClass(C, B) : "")); }).flatten().join(""); }; Element.setContentZoom = function(A, B) { A = $(A); A.setStyle({ fontSize: (B / 100) + "em" }); if (Prototype.Browser.WebKit) { window.scrollBy(0, 0); } return A; }; Element.getInlineOpacity = function(A) { return $(A).style.opacity || ""; }; Element.forceRerendering = function(A) { try { A = $(A); var C = document.createTextNode(" "); A.appendChild(C); A.removeChild(C); } catch (B) { } }; var Effect = { _elementDoesNotExistError: { name: "ElementDoesNotExistError", message: "The specified DOM element does not exist, but is required for this effect to operate" }, Transitions: { linear: Prototype.K, sinoidal: function(A) { return (-Math.cos(A * Math.PI) / 2) + 0.5; }, reverse: function(A) { return 1 - A; }, flicker: function(A) { var A = ((-Math.cos(A * Math.PI) / 4) + 0.75) + Math.random() / 4; return A > 1 ? 1 : A; }, wobble: function(A) { return (-Math.cos(A * Math.PI * (9 * A)) / 2) + 0.5; }, pulse: function(B, A) { A = A || 5; return (((B % (1 / A)) * A).round() == 0 ? ((B * A * 2) - (B * A * 2).floor()) : 1 - ((B * A * 2) - (B * A * 2).floor())); }, spring: function(A) { return 1 - (Math.cos(A * 4.5 * Math.PI) * Math.exp(-A * 6)); }, none: function(A) { return 0; }, full: function(A) { return 1; } }, DefaultOptions: { duration: 1, fps: 100, sync: false, from: 0, to: 1, delay: 0, queue: "parallel" }, tagifyText: function(A) { var B = "position:relative"; if (Prototype.Browser.IE) { B += ";zoom:1"; } A = $(A); $A(A.childNodes).each(function(C) { if (C.nodeType == 3) { C.nodeValue.toArray().each(function(D) { A.insertBefore(new Element("span", { style: B }).update(D == " " ? String.fromCharCode(160) : D), C); }); Element.remove(C); } }); }, multiple: function(B, C) { var E; if (((typeof B == "object") || Object.isFunction(B)) && (B.length)) { E = B; } else { E = $(B).childNodes; } var A = Object.extend({ speed: 0.1, delay: 0 }, arguments[2] || {}); var D = A.delay; $A(E).each(function(G, F) { new C(G, Object.extend(A, { delay: F * A.speed + D })); }); }, PAIRS: { slide: ["SlideDown", "SlideUp"], blind: ["BlindDown", "BlindUp"], appear: ["Appear", "Fade"] }, toggle: function(B, C) { B = $(B); C = (C || "appear").toLowerCase(); var A = Object.extend({ queue: { position: "end", scope: (B.id || "global"), limit: 1} }, arguments[2] || {}); Effect[B.visible() ? Effect.PAIRS[C][1] : Effect.PAIRS[C][0]](B, A); } }; Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; Effect.ScopedQueue = Class.create(Enumerable, { initialize: function() { this.effects = []; this.interval = null; }, _each: function(A) { this.effects._each(A); }, add: function(B) { var C = new Date().getTime(); var A = Object.isString(B.options.queue) ? B.options.queue : B.options.queue.position; switch (A) { case "front": this.effects.findAll(function(D) { return D.state == "idle"; }).each(function(D) { D.startOn += B.finishOn; D.finishOn += B.finishOn; }); break; case "with-last": C = this.effects.pluck("startOn").max() || C; break; case "end": C = this.effects.pluck("finishOn").max() || C; break; } B.startOn += C; B.finishOn += C; if (!B.options.queue.limit || (this.effects.length < B.options.queue.limit)) { this.effects.push(B); } if (!this.interval) { this.interval = setInterval(this.loop.bind(this), 15); } }, remove: function(A) { this.effects = this.effects.reject(function(B) { return B == A; }); if (this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var C = new Date().getTime(); for (var B = 0, A = this.effects.length; B < A; B++) { this.effects[B] && this.effects[B].loop(C); } } }); Effect.Queues = { instances: $H(), get: function(A) { if (!Object.isString(A)) { return A; } return this.instances.get(A) || this.instances.set(A, new Effect.ScopedQueue()); } }; Effect.Queue = Effect.Queues.get("global"); Effect.Base = Class.create({ position: null, start: function(options) { function codeForEvent(options, eventName) { return ((options[eventName + "Internal"] ? "this.options." + eventName + "Internal(this);" : "") + (options[eventName] ? "this.options." + eventName + "(this);" : "")); } if (options && options.transition === false) { options.transition = Effect.Transitions.linear; } 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.fromToDelta = this.options.to - this.options.from; this.totalTime = this.finishOn - this.startOn; this.totalFrames = this.options.fps * this.options.duration; eval('this.render = function(pos){ if (this.state=="idle"){this.state="running";' + codeForEvent(this.options, "beforeSetup") + (this.setup ? "this.setup();" : "") + codeForEvent(this.options, "afterSetup") + '};if (this.state=="running"){pos=this.options.transition(pos)*' + this.fromToDelta + "+" + this.options.from + ";this.position=pos;" + codeForEvent(this.options, "beforeUpdate") + (this.update ? "this.update(pos);" : "") + codeForEvent(this.options, "afterUpdate") + "}}"); this.event("beforeStart"); if (!this.options.sync) { Effect.Queues.get(Object.isString(this.options.queue) ? "global" : this.options.queue.scope).add(this); } }, loop: function(C) { if (C >= this.startOn) { if (C >= this.finishOn) { this.render(1); this.cancel(); this.event("beforeFinish"); if (this.finish) { this.finish(); } this.event("afterFinish"); return; } var B = (C - this.startOn) / this.totalTime, A = (B * this.totalFrames).round(); if (A > this.currentFrame) { this.render(B); this.currentFrame = A; } } }, cancel: function() { if (!this.options.sync) { Effect.Queues.get(Object.isString(this.options.queue) ? "global" : this.options.queue.scope).remove(this); } this.state = "finished"; }, event: function(A) { if (this.options[A + "Internal"]) { this.options[A + "Internal"](this); } if (this.options[A]) { this.options[A](this); } }, inspect: function() { var A = $H(); for (property in this) { if (!Object.isFunction(this[property])) { A.set(property, this[property]); } } return "#<Effect:" + A.inspect() + ",options:" + $H(this.options).inspect() + ">"; } }); Effect.Parallel = Class.create(Effect.Base, { initialize: function(A) { this.effects = A || []; this.start(arguments[1]); }, update: function(A) { this.effects.invoke("render", A); }, finish: function(A) { this.effects.each(function(B) { B.render(1); B.cancel(); B.event("beforeFinish"); if (B.finish) { B.finish(A); } B.event("afterFinish"); }); } }); Effect.Tween = Class.create(Effect.Base, { initialize: function(C, F, E) { C = Object.isString(C) ? $(C) : C; var B = $A(arguments), D = B.last(), A = B.length == 5 ? B[3] : null; this.method = Object.isFunction(D) ? D.bind(C) : Object.isFunction(C[D]) ? C[D].bind(C) : function(G) { C[D] = G; }; this.start(Object.extend({ from: F, to: E }, A || {})); }, update: function(A) { this.method(A); } }); Effect.Event = Class.create(Effect.Base, { initialize: function() { this.start(Object.extend({ duration: 0 }, arguments[0] || {})); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(Effect.Base, { initialize: function(B) { this.element = $(B); if (!this.element) { throw (Effect._elementDoesNotExistError); } if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) { this.element.setStyle({ zoom: 1 }); } var A = Object.extend({ from: this.element.getOpacity() || 0, to: 1 }, arguments[1] || {}); this.start(A); }, update: function(A) { this.element.setOpacity(A); } }); Effect.Move = Class.create(Effect.Base, { initialize: function(B) { this.element = $(B); if (!this.element) { throw (Effect._elementDoesNotExistError); } var A = Object.extend({ x: 0, y: 0, mode: "relative" }, arguments[1] || {}); this.start(A); }, 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(A) { this.element.setStyle({ left: (this.options.x * A + this.originalLeft).round() + "px", top: (this.options.y * A + this.originalTop).round() + "px" }); } }); Effect.MoveBy = function(B, A, C) { return new Effect.Move(B, Object.extend({ x: C, y: A }, arguments[3] || {})); }; Effect.Scale = Class.create(Effect.Base, { initialize: function(B, C) { this.element = $(B); if (!this.element) { throw (Effect._elementDoesNotExistError); } var A = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: "box", scaleFrom: 100, scaleTo: C }, arguments[2] || {}); this.start(A); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle("position"); this.originalStyle = {}; ["top", "left", "width", "height", "fontSize"].each(function(B) { this.originalStyle[B] = this.element.style[B]; } .bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var A = this.element.getStyle("font-size") || "100%"; ["em", "px", "%", "pt"].each(function(B) { if (A.indexOf(B) > 0) { this.fontSize = parseFloat(A); this.fontSizeType = B; } } .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(A) { var B = (this.options.scaleFrom / 100) + (this.factor * A); if (this.options.scaleContent && this.fontSize) { this.element.setStyle({ fontSize: this.fontSize * B + this.fontSizeType }); } this.setDimensions(this.dims[0] * B, this.dims[1] * B); }, finish: function(A) { if (this.restoreAfterFinish) { this.element.setStyle(this.originalStyle); } }, setDimensions: function(A, D) { var E = {}; if (this.options.scaleX) { E.width = D.round() + "px"; } if (this.options.scaleY) { E.height = A.round() + "px"; } if (this.options.scaleFromCenter) { var C = (A - this.dims[0]) / 2; var B = (D - this.dims[1]) / 2; if (this.elementPositioning == "absolute") { if (this.options.scaleY) { E.top = this.originalTop - C + "px"; } if (this.options.scaleX) { E.left = this.originalLeft - B + "px"; } } else { if (this.options.scaleY) { E.top = -C + "px"; } if (this.options.scaleX) { E.left = -B + "px"; } } } this.element.setStyle(E); } }); Effect.Highlight = Class.create(Effect.Base, { initialize: function(B) { this.element = $(B); if (!this.element) { throw (Effect._elementDoesNotExistError); } var A = Object.extend({ startcolor: "#ffff99" }, arguments[1] || {}); this.start(A); }, 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(A) { return parseInt(this.options.startcolor.slice(A * 2 + 1, A * 2 + 3), 16); } .bind(this)); this._delta = $R(0, 2).map(function(A) { return parseInt(this.options.endcolor.slice(A * 2 + 1, A * 2 + 3), 16) - this._base[A]; } .bind(this)); }, update: function(A) { this.element.setStyle({ backgroundColor: $R(0, 2).inject("#", function(B, C, D) { return B + ((this._base[D] + (this._delta[D] * A)).round().toColorPart()); } .bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = function(D) { var C = arguments[1] || {}, B = document.viewport.getScrollOffsets(), E = $(D).cumulativeOffset(), A = (window.height || document.body.scrollHeight) - document.viewport.getHeight(); if (C.offset) { E[1] += C.offset; } return new Effect.Tween(null, B.top, E[1] > A ? A : E[1], C, function(F) { scrollTo(B.left, F.round()); }); }; Effect.Fade = function(C) { C = $(C); var A = C.getInlineOpacity(); var B = Object.extend({ from: C.getOpacity() || 1, to: 0, afterFinishInternal: function(D) { if (D.options.to != 0) { return; } D.element.hide().setStyle({ opacity: A }); } }, arguments[1] || {}); return new Effect.Opacity(C, B); }; Effect.Appear = function(B) { B = $(B); var A = Object.extend({ from: (B.getStyle("display") == "none" ? 0 : B.getOpacity() || 0), to: 1, afterFinishInternal: function(C) { C.element.forceRerendering(); }, beforeSetup: function(C) { C.element.setOpacity(C.options.from).show(); } }, arguments[1] || {}); return new Effect.Opacity(B, A); }; Effect.Puff = function(B) { B = $(B); var A = { opacity: B.getInlineOpacity(), position: B.getStyle("position"), top: B.style.top, left: B.style.left, width: B.style.width, height: B.style.height }; return new Effect.Parallel([new Effect.Scale(B, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(B, { sync: true, to: 0 })], Object.extend({ duration: 1, beforeSetupInternal: function(C) { Position.absolutize(C.effects[0].element); }, afterFinishInternal: function(C) { C.effects[0].element.hide().setStyle(A); } }, arguments[1] || {})); }; Effect.BlindUp = function(A) { A = $(A); A.makeClipping(); return new Effect.Scale(A, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(B) { B.element.hide().undoClipping(); } }, arguments[1] || {})); }; Effect.BlindDown = function(B) { B = $(B); var A = B.getDimensions(); return new Effect.Scale(B, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: { originalHeight: A.height, originalWidth: A.width }, restoreAfterFinish: true, afterSetup: function(C) { C.element.makeClipping().setStyle({ height: "0px" }).show(); }, afterFinishInternal: function(C) { C.element.undoClipping(); } }, arguments[1] || {})); }; Effect.SwitchOff = function(B) { B = $(B); var A = B.getInlineOpacity(); return new Effect.Appear(B, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(C) { new Effect.Scale(C.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(D) { D.element.makePositioned().makeClipping(); }, afterFinishInternal: function(D) { D.element.hide().undoClipping().undoPositioned().setStyle({ opacity: A }); } }); } }, arguments[1] || {})); }; Effect.DropOut = function(B) { B = $(B); var A = { top: B.getStyle("top"), left: B.getStyle("left"), opacity: B.getInlineOpacity() }; return new Effect.Parallel([new Effect.Move(B, { x: 0, y: 100, sync: true }), new Effect.Opacity(B, { sync: true, to: 0 })], Object.extend({ duration: 0.5, beforeSetup: function(C) { C.effects[0].element.makePositioned(); }, afterFinishInternal: function(C) { C.effects[0].element.hide().undoPositioned().setStyle(A); } }, arguments[1] || {})); }; Effect.Shake = function(D) { D = $(D); var B = Object.extend({ distance: 20, duration: 0.5 }, arguments[1] || {}); var E = parseFloat(B.distance); var C = parseFloat(B.duration) / 10; var A = { top: D.getStyle("top"), left: D.getStyle("left") }; return new Effect.Move(D, { x: E, y: 0, duration: C, afterFinishInternal: function(F) { new Effect.Move(F.element, { x: -E * 2, y: 0, duration: C * 2, afterFinishInternal: function(G) { new Effect.Move(G.element, { x: E * 2, y: 0, duration: C * 2, afterFinishInternal: function(H) { new Effect.Move(H.element, { x: -E * 2, y: 0, duration: C * 2, afterFinishInternal: function(I) { new Effect.Move(I.element, { x: E * 2, y: 0, duration: C * 2, afterFinishInternal: function(J) { new Effect.Move(J.element, { x: -E, y: 0, duration: C, afterFinishInternal: function(K) { K.element.undoPositioned().setStyle(A); } }); } }); } }); } }); } }); } }); }; Effect.SlideDown = function(C) { C = $(C).cleanWhitespace(); var A = C.down().getStyle("bottom"); var B = C.getDimensions(); return new Effect.Scale(C, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: { originalHeight: B.height, originalWidth: B.width }, restoreAfterFinish: true, afterSetup: function(D) { D.element.makePositioned(); D.element.down().makePositioned(); if (window.opera) { D.element.setStyle({ top: "" }); } D.element.makeClipping().setStyle({ height: "0px" }).show(); }, afterUpdateInternal: function(D) { D.element.down().setStyle({ bottom: (D.dims[0] - D.element.clientHeight) + "px" }); }, afterFinishInternal: function(D) { D.element.undoClipping().undoPositioned(); D.element.down().undoPositioned().setStyle({ bottom: A }); } }, arguments[1] || {})); }; Effect.SlideUp = function(C) { C = $(C).cleanWhitespace(); var A = C.down().getStyle("bottom"); var B = C.getDimensions(); return new Effect.Scale(C, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: "box", scaleFrom: 100, scaleMode: { originalHeight: B.height, originalWidth: B.width }, restoreAfterFinish: true, afterSetup: function(D) { D.element.makePositioned(); D.element.down().makePositioned(); if (window.opera) { D.element.setStyle({ top: "" }); } D.element.makeClipping().show(); }, afterUpdateInternal: function(D) { D.element.down().setStyle({ bottom: (D.dims[0] - D.element.clientHeight) + "px" }); }, afterFinishInternal: function(D) { D.element.hide().undoClipping().undoPositioned(); D.element.down().undoPositioned().setStyle({ bottom: A }); } }, arguments[1] || {})); }; Effect.Squish = function(A) { return new Effect.Scale(A, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(B) { B.element.makeClipping(); }, afterFinishInternal: function(B) { B.element.hide().undoClipping(); } }); }; Effect.Grow = function(C) { C = $(C); var B = Object.extend({ direction: "center", moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || {}); var A = { top: C.style.top, left: C.style.left, height: C.style.height, width: C.style.width, opacity: C.getInlineOpacity() }; var G = C.getDimensions(); var H, F; var E, D; switch (B.direction) { case "top-left": H = F = E = D = 0; break; case "top-right": H = G.width; F = D = 0; E = -G.width; break; case "bottom-left": H = E = 0; F = G.height; D = -G.height; break; case "bottom-right": H = G.width; F = G.height; E = -G.width; D = -G.height; break; case "center": H = G.width / 2; F = G.height / 2; E = -G.width / 2; D = -G.height / 2; break; } return new Effect.Move(C, { x: H, y: F, duration: 0.01, beforeSetup: function(I) { I.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(I) { new Effect.Parallel([new Effect.Opacity(I.element, { sync: true, to: 1, from: 0, transition: B.opacityTransition }), new Effect.Move(I.element, { x: E, y: D, sync: true, transition: B.moveTransition }), new Effect.Scale(I.element, 100, { scaleMode: { originalHeight: G.height, originalWidth: G.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: B.scaleTransition, restoreAfterFinish: true })], Object.extend({ beforeSetup: function(J) { J.effects[0].element.setStyle({ height: "0px" }).show(); }, afterFinishInternal: function(J) { J.effects[0].element.undoClipping().undoPositioned().setStyle(A); } }, B)); } }); }; Effect.Shrink = function(C) { C = $(C); var B = Object.extend({ direction: "center", moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || {}); var A = { top: C.style.top, left: C.style.left, height: C.style.height, width: C.style.width, opacity: C.getInlineOpacity() }; var F = C.getDimensions(); var E, D; switch (B.direction) { case "top-left": E = D = 0; break; case "top-right": E = F.width; D = 0; break; case "bottom-left": E = 0; D = F.height; break; case "bottom-right": E = F.width; D = F.height; break; case "center": E = F.width / 2; D = F.height / 2; break; } return new Effect.Parallel([new Effect.Opacity(C, { sync: true, to: 0, from: 1, transition: B.opacityTransition }), new Effect.Scale(C, window.opera ? 1 : 0, { sync: true, transition: B.scaleTransition, restoreAfterFinish: true }), new Effect.Move(C, { x: E, y: D, sync: true, transition: B.moveTransition })], Object.extend({ beforeStartInternal: function(G) { G.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(G) { G.effects[0].element.hide().undoClipping().undoPositioned().setStyle(A); } }, B)); }; Effect.Pulsate = function(C) { C = $(C); var B = arguments[1] || {}; var A = C.getInlineOpacity(); var E = B.transition || Effect.Transitions.sinoidal; var D = function(F) { return E(1 - Effect.Transitions.pulse(F, B.pulses)); }; D.bind(E); return new Effect.Opacity(C, Object.extend(Object.extend({ duration: 2, from: 0, afterFinishInternal: function(F) { F.element.setStyle({ opacity: A }); } }, B), { transition: D })); }; Effect.Fold = function(B) { B = $(B); var A = { top: B.style.top, left: B.style.left, width: B.style.width, height: B.style.height }; B.makeClipping(); return new Effect.Scale(B, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(C) { new Effect.Scale(B, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(D) { D.element.hide().undoClipping().setStyle(A); } }); } }, arguments[1] || {})); }; Effect.Morph = Class.create(Effect.Base, { initialize: function(C) { this.element = $(C); if (!this.element) { throw (Effect._elementDoesNotExistError); } var A = Object.extend({ style: {} }, arguments[1] || {}); if (!Object.isString(A.style)) { this.style = $H(A.style); } else { if (A.style.include(":")) { this.style = A.style.parseStyle(); } else { this.element.addClassName(A.style); this.style = $H(this.element.getStyles()); this.element.removeClassName(A.style); var B = this.element.getStyles(); this.style = this.style.reject(function(D) { return D.value == B[D.key]; }); A.afterFinishInternal = function(D) { D.element.addClassName(D.options.style); D.transforms.each(function(E) { D.element.style[E.style] = ""; }); }; } } this.start(A); }, setup: function() { function A(B) { if (!B || ["rgba(0, 0, 0, 0)", "transparent"].include(B)) { B = "#ffffff"; } B = B.parseColor(); return $R(0, 2).map(function(C) { return parseInt(B.slice(C * 2 + 1, C * 2 + 3), 16); }); } this.transforms = this.style.map(function(G) { var F = G[0], E = G[1], D = null; if (E.parseColor("#zzzzzz") != "#zzzzzz") { E = E.parseColor(); D = "color"; } else { if (F == "opacity") { E = parseFloat(E); if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) { this.element.setStyle({ zoom: 1 }); } } else { if (Element.CSS_LENGTH.test(E)) { var C = E.match(/^([\+\-]?[0-9\.]+)(.*)$/); E = parseFloat(C[1]); D = (C.length == 3) ? C[2] : null; } } } var B = this.element.getStyle(F); return { style: F.camelize(), originalValue: D == "color" ? A(B) : parseFloat(B || 0), targetValue: D == "color" ? A(E) : E, unit: D }; } .bind(this)).reject(function(B) { return ((B.originalValue == B.targetValue) || (B.unit != "color" && (isNaN(B.originalValue) || isNaN(B.targetValue)))); }); }, update: function(A) { var D = {}, B, C = this.transforms.length; while (C--) { D[(B = this.transforms[C]).style] = B.unit == "color" ? "#" + (Math.round(B.originalValue[0] + (B.targetValue[0] - B.originalValue[0]) * A)).toColorPart() + (Math.round(B.originalValue[1] + (B.targetValue[1] - B.originalValue[1]) * A)).toColorPart() + (Math.round(B.originalValue[2] + (B.targetValue[2] - B.originalValue[2]) * A)).toColorPart() : (B.originalValue + (B.targetValue - B.originalValue) * A).toFixed(3) + (B.unit === null ? "" : B.unit); } this.element.setStyle(D, true); } }); Effect.Transform = Class.create({ initialize: function(A) { this.tracks = []; this.options = arguments[1] || {}; this.addTracks(A); }, addTracks: function(A) { A.each(function(B) { B = $H(B); var C = B.values().first(); this.tracks.push($H({ ids: B.keys().first(), effect: Effect.Morph, options: { style: C} })); } .bind(this)); return this; }, play: function() { return new Effect.Parallel(this.tracks.map(function(A) { var D = A.get("ids"), C = A.get("effect"), B = A.get("options"); var E = [$(D) || $$(D)].flatten(); return E.map(function(F) { return new C(F, Object.extend({ sync: true }, B)); }); }).flatten(), this.options); } }); Element.CSS_PROPERTIES = $w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex"); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.__parseStyleElement = document.createElement("div"); String.prototype.parseStyle = function() { var B, A = $H(); if (Prototype.Browser.WebKit) { B = new Element("div", { style: this }).style; } else { String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>'; B = String.__parseStyleElement.childNodes[0].style; } Element.CSS_PROPERTIES.each(function(C) { if (B[C]) { A.set(C, B[C]); } }); if (Prototype.Browser.IE && this.include("opacity")) { A.set("opacity", this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); } return A; }; if (document.defaultView && document.defaultView.getComputedStyle) { Element.getStyles = function(B) { var A = document.defaultView.getComputedStyle($(B), null); return Element.CSS_PROPERTIES.inject({}, function(C, D) { C[D] = A[D]; return C; }); }; } else { Element.getStyles = function(B) { B = $(B); var A = B.currentStyle, C; C = Element.CSS_PROPERTIES.inject({}, function(D, E) { D[E] = A[E]; return D; }); if (!C.opacity) { C.opacity = B.getOpacity(); } return C; }; } Effect.Methods = { morph: function(A, B) { A = $(A); new Effect.Morph(A, Object.extend({ style: B }, arguments[2] || {})); return A; }, visualEffect: function(C, E, B) { C = $(C); var D = E.dasherize().camelize(), A = D.charAt(0).toUpperCase() + D.substring(1); new Effect[A](C, B); return C; }, highlight: function(B, A) { B = $(B); new Effect.Highlight(B, A); return B; } }; $w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(A) { Effect.Methods[A] = function(C, B) { C = $(C); Effect[A.charAt(0).toUpperCase() + A.substring(1)](C, B); return C; }; }); $w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(A) { Effect.Methods[A] = Element[A]; }); Element.addMethods(Effect.Methods);

// lightwindow.js v2.0 - http://www.stickmanlabs.com/lightwindow/
try { document.execCommand("BackgroundImageCache", false, true) } catch (e) { } var lightwindow = Class.create(); lightwindow.prototype = { element: null, contentToFetch: null, windowActive: false, dataEffects: [], dimensions: { cruft: null, container: null, viewport: { height: null, width: null, offsetTop: null, offsetLeft: null} }, pagePosition: { x: 0, y: 0 }, pageDimensions: { width: null, height: null }, preloadImage: [], preloadedImage: [], galleries: [], resizeTo: { height: null, heightPercent: null, width: null, widthPercent: null, fixedTop: null, fixedLeft: null }, scrollbarOffset: 18, navigationObservers: { previous: null, next: null }, containerChange: { height: 0, width: 0 }, activeGallery: false, galleryLocation: { current: 0, total: 0 }, initialize: function(A) { this.options = Object.extend({ resizeSpeed: 8, contentOffset: { height: 20, width: 20 }, dimensions: { image: { height: 250, width: 250 }, page: { height: 250, width: 250 }, inline: { height: 250, width: 250 }, media: { height: 250, width: 250 }, external: { height: 250, width: 250 }, titleHeight: 25 }, classNames: { standard: "lightwindow", action: "lightwindow_action" }, fileTypes: { page: ["asp", "aspx", "cgi", "cfm", "htm", "html", "pl", "php4", "php3", "php", "php5", "phtml", "rhtml", "shtml", "txt", "vbs", "rb"], media: ["aif", "aiff", "asf", "avi", "divx", "m1v", "m2a", "m2v", "m3u", "mid", "midi", "mov", "moov", "movie", "mp2", "mp3", "mpa", "mpa", "mpe", "mpeg", "mpg", "mpg", "mpga", "pps", "qt", "rm", "ram", "swf", "viv", "vivo", "wav"], image: ["bmp", "gif", "jpg", "png", "tiff"] }, mimeTypes: { avi: "video/avi", aif: "audio/aiff", aiff: "audio/aiff", gif: "image/gif", bmp: "image/bmp", jpeg: "image/jpeg", m1v: "video/mpeg", m2a: "audio/mpeg", m2v: "video/mpeg", m3u: "audio/x-mpequrl", mid: "audio/x-midi", midi: "audio/x-midi", mjpg: "video/x-motion-jpeg", moov: "video/quicktime", mov: "video/quicktime", movie: "video/x-sgi-movie", mp2: "audio/mpeg", mp3: "audio/mpeg3", mpa: "audio/mpeg", mpa: "video/mpeg", mpe: "video/mpeg", mpeg: "video/mpeg", mpg: "audio/mpeg", mpg: "video/mpeg", mpga: "audio/mpeg", pdf: "application/pdf", png: "image/png", pps: "application/mspowerpoint", qt: "video/quicktime", ram: "audio/x-pn-realaudio-plugin", rm: "application/vnd.rn-realmedia", swf: "application/x-shockwave-flash", tiff: "image/tiff", viv: "video/vivo", vivo: "video/vivo", wav: "audio/wav", wmv: "application/x-mplayer2" }, classids: { mov: "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B", swf: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", wmv: "clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" }, codebases: { mov: "http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0", swf: "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0", wmv: "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" }, viewportPadding: 10, EOLASFix: "swf,wmv,fla,flv", overlay: { opacity: 0.7, image: "/images/black.png", presetImage: "/images/black-70.png" }, skin: { main: '<div id="lightwindow_container" ><div id="lightwindow_title_bar" ><div id="lightwindow_title_bar_inner" ><span id="lightwindow_title_bar_title"></span><a id="lightwindow_title_bar_close_link" ><img src="/images/close.gif" alt="close" /></a></div></div><div id="lightwindow_stage" ><div id="lightwindow_contents" ></div><div id="lightwindow_navigation" ><a href="#" id="lightwindow_previous" ><span id="lightwindow_previous_title"></span></a><a href="#" id="lightwindow_next" ><span id="lightwindow_next_title"></span></a><iframe name="lightwindow_navigation_shim" id="lightwindow_navigation_shim" src="javascript:false;" frameBorder="0" scrolling="no"></iframe></div><div id="lightwindow_galleries"><div id="lightwindow_galleries_tab_container" ><a href="#" id="lightwindow_galleries_tab" ><span id="lightwindow_galleries_tab_span" class="up" >Galleries</span></a></div><div id="lightwindow_galleries_list" ></div></div></div><div id="lightwindow_data_slide" ><div id="lightwindow_data_slide_inner" ><div id="lightwindow_data_details" ><div id="lightwindow_data_gallery_container" ><span id="lightwindow_data_gallery_current"></span> of <span id="lightwindow_data_gallery_total"></span></div><div id="lightwindow_data_author_container" >by <span id="lightwindow_data_author"></span></div></div><div id="lightwindow_data_caption" ></div></div></div></div>', loading: '<div id="lightwindow_loading" ><img src="/images/ajax-loading.gif" alt="loading" /><span>Loading or <a href="javascript: myLightWindow.deactivate();">Cancel</a></span><iframe name="lightwindow_loading_shim" id="lightwindow_loading_shim" src="javascript:false;" frameBorder="0" scrolling="no"></iframe></div>', iframe: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><body>{body_replace}</body></html>', gallery: { top: '<div class="lightwindow_galleries_list"><h1>{gallery_title_replace}</h1><ul>', middle: "<li>{gallery_link_replace}</li>", bottom: "</ul></div>"} }, formMethod: "get", hideFlash: false, hideGalleryTab: false, showTitleBar: true, animationHandler: false, navigationHandler: false, transitionHandler: false, finalAnimationHandler: false, formHandler: false, galleryAnimationHandler: false, showGalleryCount: true }, A || {}); this.duration = ((11 - this.options.resizeSpeed) * 0.15); this._setupLinks(); this._getScroll(); this._getPageDimensions(); this._browserDimensions(); this._addLightWindowMarkup(false); this._setupDimensions(); this.buildGalleryList() }, activate: function(B, A) { this._clearWindowContents(true); this._addLoadingWindowMarkup(); this._setupWindowElements(A); this._getScroll(); this._browserDimensions(); this._setupDimensions(); this._toggleTroubleElements("hidden", false); this._displayLightWindow("block", "hidden"); this._setStatus(true); this._monitorKeyboard(true); this._prepareIE(true); this._loadWindow() }, deactivate: function() { this.windowActive = false; this.activeGallery = false; if (!this.options.hideGalleryTab) { this._handleGalleryAnimation(false) } this.animating = false; this.element = null; this._displayLightWindow("none", "visible"); this._clearWindowContents(false); var A = Effect.Queues.get("lightwindowAnimation").each(function(B) { B.cancel() }); this._prepareIE(false); this._setupDimensions(); this._toggleTroubleElements("visible", false); this._monitorKeyboard(false) }, createWindow: function(B, A) { this._processLink($(B)) }, activateWindow: function(A) { this.element = Object.extend({ href: null, title: null, author: null, caption: null, rel: null, top: null, left: null, type: null, showImages: null, height: null, width: null, loadingAnimation: null, iframeEmbed: null, form: null }, A || {}); this.contentToFetch = this.element.href; this.windowType = this.element.type ? this.element.type : this._fileType(this.element.href); this._clearWindowContents(true); this._addLoadingWindowMarkup(); this._getScroll(); this._browserDimensions(); this._setupDimensions(); this._toggleTroubleElements("hidden", false); this._displayLightWindow("block", "hidden"); this._setStatus(true); this._monitorKeyboard(true); this._prepareIE(true); this._loadWindow() }, submitForm: function(A) { if (this.options.formHandler) { this.options.formHandler(A) } else { this._defaultFormHandler(A) } }, openWindow: function(A) { var A = $(A); this.windowActive = true; this._clearWindowContents(true); this._addLoadingWindowMarkup(); this._setupWindowElements(A); this._setStatus(true); this._handleTransition() }, navigateWindow: function(A) { this._handleNavigation(false); if (A == "previous") { this.openWindow(this.navigationObservers.previous) } else { if (A == "next") { this.openWindow(this.navigationObservers.next) } } }, buildGalleryList: function() { var A = ""; var B; for (i in this.galleries) { if (typeof this.galleries[i] == "object") { A += (this.options.skin.gallery.top).replace("{gallery_title_replace}", unescape(i)); for (j in this.galleries[i]) { if (typeof this.galleries[i][j] == "object") { B = '<a href="#" id="lightwindow_gallery_' + i + "_" + j + '" >' + unescape(j) + "</a>"; A += (this.options.skin.gallery.middle).replace("{gallery_link_replace}", B) } } A += this.options.skin.gallery.bottom } } new Insertion.Top("lightwindow_galleries_list", A); for (i in this.galleries) { if (typeof this.galleries[i] == "object") { for (j in this.galleries[i]) { if (typeof this.galleries[i][j] == "object") { Event.observe($("lightwindow_gallery_" + i + "_" + j), "click", this.openWindow.bind(this, this.galleries[i][j][0]), false); $("lightwindow_gallery_" + i + "_" + j).onclick = function() { return false } } } } } }, _setupLinks: function() { var A = $$("." + this.options.classNames.standard); A.each(function(B) { this._processLink(B) } .bind(this)) }, _processLink: function(C) { if ((this._fileType(C.getAttribute("href")) == "image" || this._fileType(C.getAttribute("href")) == "media")) { if (gallery = this._getGalleryInfo(C.rel)) { if (!this.galleries[gallery[0]]) { this.galleries[gallery[0]] = new Array() } if (!this.galleries[gallery[0]][gallery[1]]) { this.galleries[gallery[0]][gallery[1]] = new Array() } this.galleries[gallery[0]][gallery[1]].push(C) } } var B = C.getAttribute("href"); if (B.indexOf("?") > -1) { B = B.substring(0, B.indexOf("?")) } var A = B.substring(B.indexOf("#") + 1); if ($(A)) { $(A).setStyle({ display: "none" }) } Event.observe(C, "click", this.activate.bindAsEventListener(this, C), false); C.onclick = function() { return false } }, _setupActions: function() { var A = $$("#lightwindow_container ." + this.options.classNames.action); A.each(function(B) { Event.observe(B, "click", this[B.getAttribute("rel")].bindAsEventListener(this, B), false); B.onclick = function() { return false } } .bind(this)) }, _addLightWindowMarkup: function(B) { var C = Element.extend(document.createElement("div")); C.setAttribute("id", "lightwindow_overlay"); if (Prototype.Browser.Gecko) { C.setStyle({ backgroundImage: "url(" + this.options.overlay.presetImage + ")", backgroundRepeat: "repeat", height: this.pageDimensions.height + "px" }) } else { C.setStyle({ opacity: this.options.overlay.opacity, backgroundImage: "url(" + this.options.overlay.image + ")", backgroundRepeat: "repeat", height: this.pageDimensions.height + "px" }) } var D = document.createElement("div"); D.setAttribute("id", "lightwindow"); D.innerHTML = this.options.skin.main; var A = document.getElementsByTagName("body")[0]; A.appendChild(C); A.appendChild(D); if ($("lightwindow_title_bar_close_link")) { Event.observe("lightwindow_title_bar_close_link", "click", this.deactivate.bindAsEventListener(this)); $("lightwindow_title_bar_close_link").onclick = function() { return false } } Event.observe($("lightwindow_previous"), "click", this.navigateWindow.bind(this, "previous"), false); $("lightwindow_previous").onclick = function() { return false }; Event.observe($("lightwindow_next"), "click", this.navigateWindow.bind(this, "next"), false); $("lightwindow_next").onclick = function() { return false }; if (!this.options.hideGalleryTab) { Event.observe($("lightwindow_galleries_tab"), "click", this._handleGalleryAnimation.bind(this, true), false); $("lightwindow_galleries_tab").onclick = function() { return false } } if (Prototype.Browser.IE) { Event.observe(document, "mousewheel", this._stopScrolling.bindAsEventListener(this), false) } else { Event.observe(window, "DOMMouseScroll", this._stopScrolling.bindAsEventListener(this), false) } Event.observe(C, "click", this.deactivate.bindAsEventListener(this), false); C.onclick = function() { return false } }, _addLoadingWindowMarkup: function() { $("lightwindow_contents").innerHTML += this.options.skin.loading }, _setupWindowElements: function(A) { this.element = A; this.element.title = null ? "" : A.getAttribute("title"); this.element.author = null ? "" : A.getAttribute("author"); this.element.caption = null ? "" : A.getAttribute("caption"); this.element.rel = null ? "" : A.getAttribute("rel"); this.element.params = null ? "" : A.getAttribute("params"); this.contentToFetch = this.element.href; this.windowType = this._getParameter("lightwindow_type") ? this._getParameter("lightwindow_type") : this._fileType(this.contentToFetch) }, _clearWindowContents: function(A) { if ($("lightwindow_iframe")) { Element.remove($("lightwindow_iframe")) } if ($("lightwindow_media_primary")) { try { $("lightwindow_media_primary").Stop() } catch (B) { } Element.remove($("lightwindow_media_primary")) } if ($("lightwindow_media_secondary")) { try { $("lightwindow_media_secondary").Stop() } catch (B) { } Element.remove($("lightwindow_media_secondary")) } this.activeGallery = false; this._handleNavigation(this.activeGallery); if (A) { $("lightwindow_contents").innerHTML = ""; $("lightwindow_contents").setStyle({ overflow: "hidden" }); if (!this.windowActive) { $("lightwindow_data_slide_inner").setStyle({ display: "none" }); $("lightwindow_title_bar_title").innerHTML = "" } $("lightwindow_data_slide").setStyle({ height: "auto" }) } this.resizeTo.height = null; this.resizeTo.width = null }, _setStatus: function(A) { this.animating = A; if (A) { Element.show("lightwindow_loading") } if (!(/MSIE 6./i.test(navigator.userAgent))) { this._fixedWindow(A) } }, _fixedWindow: function(A) { if (A) { if (this.windowActive) { this._getScroll(); $("lightwindow").setStyle({ position: "absolute", top: parseFloat($("lightwindow").getStyle("top")) + this.pagePosition.y + "px", left: parseFloat($("lightwindow").getStyle("left")) + this.pagePosition.x + "px" }) } else { $("lightwindow").setStyle({ position: "absolute" }) } } else { if (this.windowActive) { this._getScroll(); $("lightwindow").setStyle({ position: "fixed", top: parseFloat($("lightwindow").getStyle("top")) - this.pagePosition.y + "px", left: parseFloat($("lightwindow").getStyle("left")) - this.pagePosition.x + "px" }) } else { if ($("lightwindow_iframe")) { this._browserDimensions() } $("lightwindow").setStyle({ position: "fixed", top: (parseFloat(this._getParameter("lightwindow_top")) ? parseFloat(this._getParameter("lightwindow_top")) + "px" : this.dimensions.viewport.height / 2 + "px"), left: (parseFloat(this._getParameter("lightwindow_left")) ? parseFloat(this._getParameter("lightwindow_left")) + "px" : this.dimensions.viewport.width / 2 + "px") }) } } }, _prepareIE: function(C) { if (Prototype.Browser.IE) { var B, E, D; if (C) { var B = "100%" } else { var B = "auto" } var A = document.getElementsByTagName("body")[0]; var F = document.getElementsByTagName("html")[0]; F.style.height = A.style.height = B } }, _stopScrolling: function(A) { if (this.animating) { if (A.preventDefault) { A.preventDefault() } A.returnValue = false } }, _getScroll: function() { if (typeof (window.pageYOffset) == "number") { this.pagePosition.x = window.pageXOffset; this.pagePosition.y = window.pageYOffset } else { if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { this.pagePosition.x = document.body.scrollLeft; this.pagePosition.y = document.body.scrollTop } else { if (document.documentElement) { this.pagePosition.x = document.documentElement.scrollLeft; this.pagePosition.y = document.documentElement.scrollTop } } } }, _setScroll: function(A, B) { document.documentElement.scrollLeft = A; document.documentElement.scrollTop = B }, _toggleTroubleElements: function(A, D) { if (D) { var C = $("lightwindow_contents").getElementsByTagName("select") } else { var C = document.getElementsByTagName("select") } for (var B = 0; B < C.length; B++) { C[B].style.visibility = A } if (!D) { if (this.options.hideFlash) { var F = document.getElementsByTagName("object"); for (B = 0; B != F.length; B++) { F[B].style.visibility = A } var E = document.getElementsByTagName("embed"); for (B = 0; B != E.length; B++) { E[B].style.visibility = A } } var G = document.getElementsByTagName("iframe"); for (B = 0; B != G.length; B++) { G[B].style.visibility = A } } }, _getPageDimensions: function() { var C, A; if (window.innerHeight && window.scrollMaxY) { C = document.body.scrollWidth; A = window.innerHeight + window.scrollMaxY } else { if (document.body.scrollHeight > document.body.offsetHeight) { C = document.body.scrollWidth; A = document.body.scrollHeight } else { C = document.body.offsetWidth; A = document.body.offsetHeight } } var B, D; if (self.innerHeight) { B = self.innerWidth; D = self.innerHeight } else { if (document.documentElement && document.documentElement.clientHeight) { B = document.documentElement.clientWidth; D = document.documentElement.clientHeight } else { if (document.body) { B = document.body.clientWidth; D = document.body.clientHeight } } } if (A < D) { this.pageDimensions.height = D } else { this.pageDimensions.height = A } if (C < B) { this.pageDimensions.width = B } else { this.pageDimensions.width = C } }, _displayLightWindow: function(B, A) { $("lightwindow_overlay").style.display = $("lightwindow").style.display = $("lightwindow_container").style.display = B; $("lightwindow_overlay").style.visibility = $("lightwindow").style.visibility = $("lightwindow_container").style.visibility = A }, _setupDimensions: function() { var C, D; switch (this.windowType) { case "page": C = this.options.dimensions.page.height; D = this.options.dimensions.page.width; break; case "image": C = this.options.dimensions.image.height; D = this.options.dimensions.image.width; break; case "media": C = this.options.dimensions.media.height; D = this.options.dimensions.media.width; break; case "external": C = this.options.dimensions.external.height; D = this.options.dimensions.external.width; break; case "inline": C = this.options.dimensions.inline.height; D = this.options.dimensions.inline.width; break; default: C = this.options.dimensions.page.height; D = this.options.dimensions.page.width; break } var A = this._getParameter("lightwindow_top") ? parseFloat(this._getParameter("lightwindow_top")) + this.pagePosition.y : this.dimensions.viewport.height / 2 + this.pagePosition.y; var B = this._getParameter("lightwindow_left") ? parseFloat(this._getParameter("lightwindow_left")) + this.pagePosition.x : this.dimensions.viewport.width / 2 + this.pagePosition.x; $("lightwindow").setStyle({ top: A + "px", left: B + "px" }); $("lightwindow_container").setStyle({ height: C + "px", width: D + "px", left: -(D / 2) + "px", top: -(C / 2) + "px" }); $("lightwindow_contents").setStyle({ height: C + "px", width: D + "px" }) }, _fileType: function(A) { var E = new RegExp("[^.].(" + this.options.fileTypes.image.join("|") + ")s*$", "i"); if (E.test(A)) { return "image" } if (A.indexOf("#") > -1 && (document.domain == this._getDomain(A))) { return "inline" } if (A.indexOf("?") > -1) { A = A.substring(0, A.indexOf("?")) } var B = "unknown"; var C = new RegExp("[^.].(" + this.options.fileTypes.page.join("|") + ")s*$", "i"); var D = new RegExp("[^.].(" + this.options.fileTypes.media.join("|") + ")s*$", "i"); if (document.domain != this._getDomain(A)) { B = "external" } if (D.test(A)) { B = "media" } if (B == "external" || B == "media") { return B } if (C.test(A) || A.substr((A.length - 1), A.length) == "/") { B = "page" } return B }, _fileExtension: function(C) { if (C.indexOf("?") > -1) { C = C.substring(0, C.indexOf("?")) } var B = ""; for (var A = (C.length - 1); A > -1; A--) { if (C.charAt(A) == ".") { return B } B = C.charAt(A) + B } }, _monitorKeyboard: function(A) { if (A) { document.onkeydown = this._eventKeypress.bind(this) } else { document.onkeydown = "" } }, _eventKeypress: function(B) { if (B == null) { var A = event.keyCode } else { var A = B.which } switch (A) { case 27: this.deactivate(); break; case 13: return; default: break } if (this.animating) { return false } switch (String.fromCharCode(A).toLowerCase()) { case "p": if (this.navigationObservers.previous) { this.navigateWindow("previous") } break; case "n": if (this.navigationObservers.next) { this.navigateWindow("next") } break; default: break } }, _getGalleryInfo: function(A) { if (!A) { return false } if (A.indexOf("[") > -1) { return new Array(escape(A.substring(0, A.indexOf("["))), escape(A.substring(A.indexOf("[") + 1, A.indexOf("]")))) } else { return false } }, _getDomain: function(E) { var G = E.indexOf("//"); var B = G + 2; var D = E.substring(B, E.length); var A = D.indexOf("/"); var F = D.substring(0, A); if (F.indexOf(":") > -1) { var C = F.indexOf(":"); F = F.substring(0, C) } return F }, _getParameter: function(H, D) { if (!this.element) { return false } if (H == "lightwindow_top" && this.element.top) { return unescape(this.element.top) } else { if (H == "lightwindow_left" && this.element.left) { return unescape(this.element.left) } else { if (H == "lightwindow_type" && this.element.type) { return unescape(this.element.type) } else { if (H == "lightwindow_show_images" && this.element.showImages) { return unescape(this.element.showImages) } else { if (H == "lightwindow_height" && this.element.height) { return unescape(this.element.height) } else { if (H == "lightwindow_width" && this.element.width) { return unescape(this.element.width) } else { if (H == "lightwindow_loading_animation" && this.element.loadingAnimation) { return unescape(this.element.loadingAnimation) } else { if (H == "lightwindow_iframe_embed" && this.element.iframeEmbed) { return unescape(this.element.iframeEmbed) } else { if (H == "lightwindow_form" && this.element.form) { return unescape(this.element.form) } else { if (!D) { if (this.element.params) { D = this.element.params } else { return } } var F; var E = D.split(","); var C = H + "="; var G = C.length; for (var B = 0; B < E.length; B++) { if (E[B].substr(0, G) == C) { var A = E[B].split("="); F = A[1]; break } } if (!F) { return false } else { return unescape(F) } } } } } } } } } } }, _browserDimensions: function() { if (Prototype.Browser.IE) { this.dimensions.viewport.height = document.documentElement.clientHeight; this.dimensions.viewport.width = document.documentElement.clientWidth } else { this.dimensions.viewport.height = window.innerHeight; this.dimensions.viewport.width = document.width || document.body.offsetWidth } }, _getScrollerWidth: function() { var E = Element.extend(document.createElement("div")); E.setAttribute("id", "lightwindow_scroll_div"); E.setStyle({ position: "absolute", top: "-10000px", left: "-10000px", width: "100px", height: "100px", overflow: "hidden" }); var C = Element.extend(document.createElement("div")); C.setAttribute("id", "lightwindow_content_scroll_div"); C.setStyle({ width: "100%", height: "200px" }); E.appendChild(C); var B = document.getElementsByTagName("body")[0]; B.appendChild(E); var D = $("lightwindow_content_scroll_div").offsetWidth; E.style.overflow = "auto"; var A = $("lightwindow_content_scroll_div").offsetWidth; Element.remove($("lightwindow_scroll_div")); this.scrollbarOffset = D - A }, _addParamToObject: function(B, C, A, E) { var D = document.createElement("param"); D.setAttribute("value", C); D.setAttribute("name", B); if (E) { D.setAttribute("id", E) } A.appendChild(D); return A }, _outerHTML: function(A) { if (Prototype.Browser.IE) { return A.outerHTML } else { var C = A.cloneNode(true); var B = document.createElement("div"); B.appendChild(C); return B.innerHTML } }, _convertToMarkup: function(C, B) { var A = this._outerHTML(C).replace("</" + B + ">", ""); if (Prototype.Browser.IE) { for (var D = 0; D < C.childNodes.length; D++) { A += this._outerHTML(C.childNodes[D]) } A += "</" + B + ">" } return A }, _appendObject: function(C, B, A) { if (Prototype.Browser.IE) { A.innerHTML += this._convertToMarkup(C, B); if (this.options.EOLASFix.indexOf(this._fileType(this.element.href)) > -1) { var E = document.getElementsByTagName("object"); for (var D = 0; D < E.length; D++) { if (E[D].getAttribute("data")) { E[D].removeAttribute("data") } E[D].outerHTML = E[D].outerHTML; E[D].style.visibility = "visible" } } } else { A.appendChild(C) } }, _appendIframe: function(A) { var B = document.createElement("iframe"); B.setAttribute("id", "lightwindow_iframe"); B.setAttribute("name", "lightwindow_iframe"); B.setAttribute("src", "about:blank"); B.setAttribute("height", "100%"); B.setAttribute("width", "100%"); B.setAttribute("frameborder", "0"); B.setAttribute("marginwidth", "0"); B.setAttribute("marginheight", "0"); B.setAttribute("scrolling", A); this._appendObject(B, "iframe", $("lightwindow_contents")) }, _writeToIframe: function(B) { var A = this.options.skin.iframe; A = A.replace("{body_replace}", B); if ($("lightwindow_iframe").contentWindow) { $("lightwindow_iframe").contentWindow.document.open(); $("lightwindow_iframe").contentWindow.document.write(A); $("lightwindow_iframe").contentWindow.document.close() } else { $("lightwindow_iframe").contentDocument.open(); $("lightwindow_iframe").contentDocument.write(A); $("lightwindow_iframe").contentDocument.close() } }, _loadWindow: function() { switch (this.windowType) { case "image": var E = 0; var A = []; this.checkImage = []; this.resizeTo.height = this.resizeTo.width = 0; this.imageCount = this._getParameter("lightwindow_show_images") ? parseInt(this._getParameter("lightwindow_show_images")) : 1; if (gallery = this._getGalleryInfo(this.element.rel)) { for (E = 0; E < this.galleries[gallery[0]][gallery[1]].length; E++) { if (this.contentToFetch.indexOf(this.galleries[gallery[0]][gallery[1]][E].href) > -1) { break } } if (this.galleries[gallery[0]][gallery[1]][E - this.imageCount]) { this.navigationObservers.previous = this.galleries[gallery[0]][gallery[1]][E - this.imageCount] } else { this.navigationObservers.previous = false } if (this.galleries[gallery[0]][gallery[1]][E + this.imageCount]) { this.navigationObservers.next = this.galleries[gallery[0]][gallery[1]][E + this.imageCount] } else { this.navigationObservers.next = false } this.activeGallery = true } else { this.navigationObservers.previous = false; this.navigationObservers.next = false; this.activeGallery = false } for (var C = E; C < (E + this.imageCount); C++) { if (gallery && this.galleries[gallery[0]][gallery[1]][C]) { this.contentToFetch = this.galleries[gallery[0]][gallery[1]][C].href; this.galleryLocation = { current: (C + 1) / this.imageCount, total: (this.galleries[gallery[0]][gallery[1]].length) / this.imageCount }; if (!this.galleries[gallery[0]][gallery[1]][C + this.imageCount]) { $("lightwindow_next").setStyle({ display: "none" }) } else { $("lightwindow_next").setStyle({ display: "block" }); $("lightwindow_next_title").innerHTML = this.galleries[gallery[0]][gallery[1]][C + this.imageCount].title } if (!this.galleries[gallery[0]][gallery[1]][C - this.imageCount]) { $("lightwindow_previous").setStyle({ display: "none" }) } else { $("lightwindow_previous").setStyle({ display: "block" }); $("lightwindow_previous_title").innerHTML = this.galleries[gallery[0]][gallery[1]][C - this.imageCount].title } } A[C] = document.createElement("img"); A[C].setAttribute("id", "lightwindow_image_" + C); A[C].setAttribute("border", "0"); A[C].setAttribute("src", this.contentToFetch); $("lightwindow_contents").appendChild(A[C]); this.checkImage[C] = new PeriodicalExecuter(function(G) { if (!(typeof $("lightwindow_image_" + G).naturalWidth != "undefined" && $("lightwindow_image_" + G).naturalWidth == 0)) { this.checkImage[G].stop(); var F = $("lightwindow_image_" + G).getHeight(); if (F > this.resizeTo.height) { this.resizeTo.height = F } this.resizeTo.width += $("lightwindow_image_" + G).getWidth(); this.imageCount--; $("lightwindow_image_" + G).setStyle({ height: "100%" }); if (this.imageCount == 0) { this._processWindow() } } } .bind(this, C), 1) } break; case "media": var E = 0; this.resizeTo.height = this.resizeTo.width = 0; if (gallery = this._getGalleryInfo(this.element.rel)) { for (E = 0; E < this.galleries[gallery[0]][gallery[1]].length; E++) { if (this.contentToFetch.indexOf(this.galleries[gallery[0]][gallery[1]][E].href) > -1) { break } } if (this.galleries[gallery[0]][gallery[1]][E - 1]) { this.navigationObservers.previous = this.galleries[gallery[0]][gallery[1]][E - 1] } else { this.navigationObservers.previous = false } if (this.galleries[gallery[0]][gallery[1]][E + 1]) { this.navigationObservers.next = this.galleries[gallery[0]][gallery[1]][E + 1] } else { this.navigationObservers.next = false } this.activeGallery = true } else { this.navigationObservers.previous = false; this.navigationObservers.next = false; this.activeGallery = false } if (gallery && this.galleries[gallery[0]][gallery[1]][E]) { this.contentToFetch = this.galleries[gallery[0]][gallery[1]][E].href; this.galleryLocation = { current: E + 1, total: this.galleries[gallery[0]][gallery[1]].length }; if (!this.galleries[gallery[0]][gallery[1]][E + 1]) { $("lightwindow_next").setStyle({ display: "none" }) } else { $("lightwindow_next").setStyle({ display: "block" }); $("lightwindow_next_title").innerHTML = this.galleries[gallery[0]][gallery[1]][E + 1].title } if (!this.galleries[gallery[0]][gallery[1]][E - 1]) { $("lightwindow_previous").setStyle({ display: "none" }) } else { $("lightwindow_previous").setStyle({ display: "block" }); $("lightwindow_previous_title").innerHTML = this.galleries[gallery[0]][gallery[1]][E - 1].title } } if (this._getParameter("lightwindow_iframe_embed")) { this.resizeTo.height = this.dimensions.viewport.height; this.resizeTo.width = this.dimensions.viewport.width } else { this.resizeTo.height = this._getParameter("lightwindow_height"); this.resizeTo.width = this._getParameter("lightwindow_width") } this._processWindow(); break; case "external": this._appendIframe("auto"); this.resizeTo.height = this.dimensions.viewport.height; this.resizeTo.width = this.dimensions.viewport.width; this._processWindow(); break; case "page": var B = new Ajax.Request(this.contentToFetch, { method: "get", parameters: "", onComplete: function(F) { $("lightwindow_contents").innerHTML += F.responseText; this.resizeTo.height = $("lightwindow_contents").scrollHeight + (this.options.contentOffset.height); this.resizeTo.width = $("lightwindow_contents").scrollWidth + (this.options.contentOffset.width); this._processWindow() } .bind(this) }); break; case "inline": var D = this.contentToFetch; if (D.indexOf("?") > -1) { D = D.substring(0, D.indexOf("?")) } D = D.substring(D.indexOf("#") + 1); new Insertion.Top($("lightwindow_contents"), $(D).innerHTML); this.resizeTo.height = $("lightwindow_contents").scrollHeight + (this.options.contentOffset.height); this.resizeTo.width = $("lightwindow_contents").scrollWidth + (this.options.contentOffset.width); this._toggleTroubleElements("hidden", true); this._processWindow(); break; default: throw ("Page Type could not be determined, please amend this lightwindow URL " + this.contentToFetch); break } }, _resizeWindowToFit: function() { if (this.resizeTo.height + this.dimensions.cruft.height > this.dimensions.viewport.height) { var A = this.resizeTo.height / this.resizeTo.width; this.resizeTo.height = this.dimensions.viewport.height - this.dimensions.cruft.height - (2 * this.options.viewportPadding); if (this.windowType == "image" || (this.windowType == "media" && !this._getParameter("lightwindow_iframe_embed"))) { this.resizeTo.width = this.resizeTo.height / A; $("lightwindow_data_slide_inner").setStyle({ width: this.resizeTo.width + "px" }) } } if (this.resizeTo.width + this.dimensions.cruft.width > this.dimensions.viewport.width) { var B = this.resizeTo.width / this.resizeTo.height; this.resizeTo.width = this.dimensions.viewport.width - 2 * this.dimensions.cruft.width - (2 * this.options.viewportPadding); if (this.windowType == "image" || (this.windowType == "media" && !this._getParameter("lightwindow_iframe_embed"))) { this.resizeTo.height = this.resizeTo.width / B; $("lightwindow_data_slide_inner").setStyle({ height: this.resizeTo.height + "px" }) } } }, _presetWindowSize: function() { if (this._getParameter("lightwindow_height")) { this.resizeTo.height = parseFloat(this._getParameter("lightwindow_height")) } if (this._getParameter("lightwindow_width")) { this.resizeTo.width = parseFloat(this._getParameter("lightwindow_width")) } }, _processWindow: function() { this.dimensions.dataEffects = []; if (this.element.caption || this.element.author || (this.activeGallery && this.options.showGalleryCount)) { if (this.element.caption) { $("lightwindow_data_caption").innerHTML = this.element.caption; $("lightwindow_data_caption").setStyle({ display: "block" }) } else { $("lightwindow_data_caption").setStyle({ display: "none" }) } if (this.element.author) { $("lightwindow_data_author").innerHTML = this.element.author; $("lightwindow_data_author_container").setStyle({ display: "block" }) } else { $("lightwindow_data_author_container").setStyle({ display: "none" }) } if (this.activeGallery && this.options.showGalleryCount) { $("lightwindow_data_gallery_current").innerHTML = this.galleryLocation.current; $("lightwindow_data_gallery_total").innerHTML = this.galleryLocation.total; $("lightwindow_data_gallery_container").setStyle({ display: "block" }) } else { $("lightwindow_data_gallery_container").setStyle({ display: "none" }) } $("lightwindow_data_slide_inner").setStyle({ width: this.resizeTo.width + "px", height: "auto", visibility: "visible", display: "block" }); $("lightwindow_data_slide").setStyle({ height: $("lightwindow_data_slide").getHeight() + "px", width: "1px", overflow: "hidden", display: "block" }) } else { $("lightwindow_data_slide").setStyle({ display: "none", width: "auto" }); $("lightwindow_data_slide_inner").setStyle({ display: "none", visibility: "hidden", width: this.resizeTo.width + "px", height: "0px" }) } if (this.element.title != "null") { $("lightwindow_title_bar_title").innerHTML = this.element.title } else { $("lightwindow_title_bar_title").innerHTML = "" } var B = { height: $("lightwindow_container").getHeight(), width: $("lightwindow_container").getWidth() }; $("lightwindow_container").setStyle({ height: "auto", width: $("lightwindow_container").getWidth() + this.options.contentOffset.width - (this.windowActive ? this.options.contentOffset.width : 0) + "px" }); var A = { height: $("lightwindow_container").getHeight(), width: $("lightwindow_container").getWidth() }; this.containerChange = { height: B.height - A.height, width: B.width - A.width }; this.dimensions.container = { height: $("lightwindow_container").getHeight(), width: $("lightwindow_container").getWidth() }; this.dimensions.cruft = { height: this.dimensions.container.height - $("lightwindow_contents").getHeight() + this.options.contentOffset.height, width: this.dimensions.container.width - $("lightwindow_contents").getWidth() + this.options.contentOffset.width }; this._presetWindowSize(); this._resizeWindowToFit(); if (!this.windowActive) { $("lightwindow_container").setStyle({ left: -(this.dimensions.container.width / 2) + "px", top: -(this.dimensions.container.height / 2) + "px" }) } $("lightwindow_container").setStyle({ height: this.dimensions.container.height + "px", width: this.dimensions.container.width + "px" }); this._displayLightWindow("block", "visible"); this._animateLightWindow() }, _animateLightWindow: function() { if (this.options.animationHandler) { this.options.animationHandler().bind(this) } else { this._defaultAnimationHandler() } }, _handleNavigation: function(A) { if (this.options.navigationHandler) { this.options.navigationHandler().bind(this, A) } else { this._defaultDisplayNavigation(A) } }, _handleTransition: function() { if (this.options.transitionHandler) { this.options.transitionHandler().bind(this) } else { this._defaultTransitionHandler() } }, _handleFinalWindowAnimation: function(A) { if (this.options.finalAnimationHandler) { this.options.finalAnimationHandler().bind(this, A) } else { this._defaultfinalWindowAnimationHandler(A) } }, _handleGalleryAnimation: function(A) { if (this.options.galleryAnimationHandler) { this.options.galleryAnimationHandler().bind(this, A) } else { this._defaultGalleryAnimationHandler(A) } }, _defaultDisplayNavigation: function(A) { if (A) { $("lightwindow_navigation").setStyle({ display: "block", height: $("lightwindow_contents").getHeight() + "px", width: "100%", marginTop: this.options.dimensions.titleHeight + "px" }) } else { $("lightwindow_navigation").setStyle({ display: "none", height: "auto", width: "auto" }) } }, _defaultAnimationHandler: function() { if (this.element.caption || this.element.author || (this.activeGallery && this.options.showGalleryCount)) { $("lightwindow_data_slide").setStyle({ display: "none", width: "auto" }); this.dimensions.dataEffects.push(new Effect.SlideDown("lightwindow_data_slide", { sync: true }), new Effect.Appear("lightwindow_data_slide", { sync: true, from: 0, to: 1 })) } $("lightwindow_title_bar_inner").setStyle({ height: "0px", marginTop: this.options.dimensions.titleHeight + "px" }); this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_title_bar_inner", { sync: true, style: { height: this.options.dimensions.titleHeight + "px", marginTop: "0px"} }), new Effect.Appear("lightwindow_title_bar_inner", { sync: true, from: 0, to: 1 })); if (!this.options.hideGalleryTab) { this._handleGalleryAnimation(false); if ($("lightwindow_galleries_tab_container").getHeight() == 0) { this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_tab_container", { sync: true, style: { height: "20px", marginTop: "0px"} })); $("lightwindow_galleries").setStyle({ width: "0px" }) } } var A = false; var B = this.dimensions.container.width - $("lightwindow_contents").getWidth() + this.resizeTo.width + this.options.contentOffset.width; if (B != $("lightwindow_container").getWidth()) { new Effect.Parallel([new Effect.Scale("lightwindow_contents", 100 * (this.resizeTo.width / $("lightwindow_contents").getWidth()), { scaleFrom: 100 * ($("lightwindow_contents").getWidth() / ($("lightwindow_contents").getWidth() + (this.options.contentOffset.width))), sync: true, scaleY: false, scaleContent: false }), new Effect.Scale("lightwindow_container", 100 * (B / (this.dimensions.container.width)), { sync: true, scaleY: false, scaleFromCenter: true, scaleContent: false })], { duration: this.duration, delay: 0.25, queue: { position: "end", scope: "lightwindowAnimation"} }) } B = this.dimensions.container.height - $("lightwindow_contents").getHeight() + this.resizeTo.height + this.options.contentOffset.height; if (B != $("lightwindow_container").getHeight()) { new Effect.Parallel([new Effect.Scale("lightwindow_contents", 100 * (this.resizeTo.height / $("lightwindow_contents").getHeight()), { scaleFrom: 100 * ($("lightwindow_contents").getHeight() / ($("lightwindow_contents").getHeight() + (this.options.contentOffset.height))), sync: true, scaleX: false, scaleContent: false }), new Effect.Scale("lightwindow_container", 100 * (B / (this.dimensions.container.height)), { sync: true, scaleX: false, scaleFromCenter: true, scaleContent: false })], { duration: this.duration, afterFinish: function() { if (this.dimensions.dataEffects.length > 0) { if (!this.options.hideGalleryTab) { $("lightwindow_galleries").setStyle({ width: this.resizeTo.width + "px" }) } new Effect.Parallel(this.dimensions.dataEffects, { duration: this.duration, afterFinish: function() { this._finishWindow() } .bind(this), queue: { position: "end", scope: "lightwindowAnimation"} }) } } .bind(this), queue: { position: "end", scope: "lightwindowAnimation"} }); A = true } if (!A && this.dimensions.dataEffects.length > 0) { new Effect.Parallel(this.dimensions.dataEffects, { duration: this.duration, beforeStart: function() { if (!this.options.hideGalleryTab) { $("lightwindow_galleries").setStyle({ width: this.resizeTo.width + "px" }) } if (this.containerChange.height != 0 || this.containerChange.width != 0) { new Effect.MoveBy("lightwindow_container", this.containerChange.height, this.containerChange.width, { transition: Effect.Transitions.sinoidal }) } } .bind(this), afterFinish: function() { this._finishWindow() } .bind(this), queue: { position: "end", scope: "lightwindowAnimation"} }) } }, _defaultfinalWindowAnimationHandler: function(A) { if (this.windowType == "media" || this._getParameter("lightwindow_loading_animation")) { Element.hide("lightwindow_loading"); this._handleNavigation(this.activeGallery); this._setStatus(false) } else { Effect.Fade("lightwindow_loading", { duration: 0.75, delay: 1, afterFinish: function() { if (this.windowType != "image" && this.windowType != "media" && this.windowType != "external") { $("lightwindow_contents").setStyle({ overflow: "auto" }) } this._handleNavigation(this.activeGallery); this._defaultGalleryAnimationHandler(); this._setStatus(false) } .bind(this), queue: { position: "end", scope: "lightwindowAnimation"} }) } }, _defaultGalleryAnimationHandler: function(B) { if (this.activeGallery) { $("lightwindow_galleries").setStyle({ display: "block", marginBottom: $("lightwindow_data_slide").getHeight() + this.options.contentOffset.height / 2 + "px" }); $("lightwindow_navigation").setStyle({ height: $("lightwindow_contents").getHeight() - 20 + "px" }) } else { $("lightwindow_galleries").setStyle({ display: "none" }); $("lightwindow_galleries_tab_container").setStyle({ height: "0px", marginTop: "20px" }); $("lightwindow_galleries_list").setStyle({ height: "0px" }); return false } if (B) { if ($("lightwindow_galleries_list").getHeight() == 0) { var A = $("lightwindow_contents").getHeight() * 0.8; $("lightwindow_galleries_tab_span").className = "down" } else { var A = 0; $("lightwindow_galleries_tab_span").className = "up" } new Effect.Morph("lightwindow_galleries_list", { duration: this.duration, transition: Effect.Transitions.sinoidal, style: { height: A + "px" }, beforeStart: function() { $("lightwindow_galleries_list").setStyle({ overflow: "hidden" }) }, afterFinish: function() { $("lightwindow_galleries_list").setStyle({ overflow: "auto" }) }, queue: { position: "end", scope: "lightwindowAnimation"} }) } }, _defaultTransitionHandler: function() { this.dimensions.dataEffects = []; if ($("lightwindow_data_slide").getStyle("display") != "none") { this.dimensions.dataEffects.push(new Effect.SlideUp("lightwindow_data_slide", { sync: true }), new Effect.Fade("lightwindow_data_slide", { sync: true, from: 1, to: 0 })) } if (!this.options.hideGalleryTab) { if ($("lightwindow_galleries").getHeight() != 0 && !this.options.hideGalleryTab) { this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_tab_container", { sync: true, style: { height: "0px", marginTop: "20px"} })) } if ($("lightwindow_galleries_list").getHeight() != 0) { $("lightwindow_galleries_tab_span").className = "up"; this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_galleries_list", { sync: true, style: { height: "0px" }, transition: Effect.Transitions.sinoidal, beforeStart: function() { $("lightwindow_galleries_list").setStyle({ overflow: "hidden" }) }, afterFinish: function() { $("lightwindow_galleries_list").setStyle({ overflow: "auto" }) } })) } } this.dimensions.dataEffects.push(new Effect.Morph("lightwindow_title_bar_inner", { sync: true, style: { height: "0px", marginTop: this.options.dimensions.titleHeight + "px"} }), new Effect.Fade("lightwindow_title_bar_inner", { sync: true, from: 1, to: 0 })); new Effect.Parallel(this.dimensions.dataEffects, { duration: this.duration, afterFinish: function() { this._loadWindow() } .bind(this), queue: { position: "end", scope: "lightwindowAnimation"} }) }, _defaultFormHandler: function(D) { var B = Event.element(D).parentNode; var C = Form.serialize(this._getParameter("lightwindow_form", B.getAttribute("params"))); if (this.options.formMethod == "post") { var A = new Ajax.Request(B.href, { method: "post", postBody: C, onComplete: this.openWindow.bind(this, B) }) } else { if (this.options.formMethod == "get") { var A = new Ajax.Request(B.href, { method: "get", parameters: C, onComplete: this.openWindow.bind(this, B) }) } } }, _finishWindow: function() { if (this.windowType == "external") { $("lightwindow_iframe").setAttribute("src", this.element.href); this._handleFinalWindowAnimation(1) } else { if (this.windowType == "media") { var B = document.createElement("object"); B.setAttribute("classid", this.options.classids[this._fileExtension(this.contentToFetch)]); B.setAttribute("codebase", this.options.codebases[this._fileExtension(this.contentToFetch)]); B.setAttribute("id", "lightwindow_media_primary"); B.setAttribute("name", "lightwindow_media_primary"); B.setAttribute("width", this.resizeTo.width); B.setAttribute("height", this.resizeTo.height); B = this._addParamToObject("movie", this.contentToFetch, B); B = this._addParamToObject("src", this.contentToFetch, B); B = this._addParamToObject("controller", "true", B); B = this._addParamToObject("wmode", "transparent", B); B = this._addParamToObject("cache", "false", B); B = this._addParamToObject("quality", "high", B); if (!Prototype.Browser.IE) { var A = document.createElement("object"); A.setAttribute("type", this.options.mimeTypes[this._fileExtension(this.contentToFetch)]); A.setAttribute("data", this.contentToFetch); A.setAttribute("id", "lightwindow_media_secondary"); A.setAttribute("name", "lightwindow_media_secondary"); A.setAttribute("width", this.resizeTo.width); A.setAttribute("height", this.resizeTo.height); A = this._addParamToObject("controller", "true", A); A = this._addParamToObject("wmode", "transparent", A); A = this._addParamToObject("cache", "false", A); A = this._addParamToObject("quality", "high", A); B.appendChild(A) } if (this._getParameter("lightwindow_iframe_embed")) { this._appendIframe("no"); this._writeToIframe(this._convertToMarkup(B, "object")) } else { this._appendObject(B, "object", $("lightwindow_contents")) } this._handleFinalWindowAnimation(0) } else { this._handleFinalWindowAnimation(0) } } this._setupActions() } }; Event.observe(window, "load", lightwindowInit, false); var myLightWindow = null; function lightwindowInit() { myLightWindow = new lightwindow() };
