/*
---
MooTools: the javascript framework

web build:
 - http://mootools.net/core/7c56cfef9dddcf170a5d68e3fb61cfd7

packager build:
 - packager build Core/Core Core/Array Core/String Core/Number Core/Function Core/Object Core/Event Core/Browser Core/Class Core/Class.Extras Core/Slick.Parser Core/Slick.Finder Core/Element Core/Element.Style Core/Element.Event Core/Element.Dimensions Core/Fx Core/Fx.CSS Core/Fx.Tween Core/Fx.Morph Core/Fx.Transitions Core/Request Core/Request.HTML Core/Request.JSON Core/Cookie Core/JSON Core/DOMReady Core/Swiff

copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
(function(){this.MooTools={version:"1.3",build:"a3eed692dd85050d80168ec2c708efe901bb7db3"};var e=this.typeOf=function(i){if(i==null){return"null";}if(i.$family){return i.$family();
}if(i.nodeName){if(i.nodeType==1){return"element";}if(i.nodeType==3){return(/\S/).test(i.nodeValue)?"textnode":"whitespace";}}else{if(typeof i.length=="number"){if(i.callee){return"arguments";
}if("item" in i){return"collection";}}}return typeof i;};var t=this.instanceOf=function(v,i){if(v==null){return false;}var u=v.$constructor||v.constructor;
while(u){if(u===i){return true;}u=u.parent;}return v instanceof i;};var f=this.Function;var q=true;for(var p in {toString:1}){q=null;}if(q){q=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];
}f.prototype.overloadSetter=function(u){var i=this;return function(w,v){if(w==null){return this;}if(u||typeof w!="string"){for(var x in w){i.call(this,x,w[x]);
}if(q){for(var y=q.length;y--;){x=q[y];if(w.hasOwnProperty(x)){i.call(this,x,w[x]);}}}}else{i.call(this,w,v);}return this;};};f.prototype.overloadGetter=function(u){var i=this;
return function(w){var x,v;if(u||typeof w!="string"){x=w;}else{if(arguments.length>1){x=arguments;}}if(x){v={};for(var y=0;y<x.length;y++){v[x[y]]=i.call(this,x[y]);
}}else{v=i.call(this,w);}return v;};};f.prototype.extend=function(i,u){this[i]=u;}.overloadSetter();f.prototype.implement=function(i,u){this.prototype[i]=u;
}.overloadSetter();var n=Array.prototype.slice;f.from=function(i){return(e(i)=="function")?i:function(){return i;};};Array.from=function(i){if(i==null){return[];
}return(k.isEnumerable(i)&&typeof i!="string")?(e(i)=="array")?i:n.call(i):[i];};Number.from=function(u){var i=parseFloat(u);return isFinite(i)?i:null;
};String.from=function(i){return i+"";};f.implement({hide:function(){this.$hidden=true;return this;},protect:function(){this.$protected=true;return this;
}});var k=this.Type=function(w,v){if(w){var u=w.toLowerCase();var i=function(x){return(e(x)==u);};k["is"+w]=i;if(v!=null){v.prototype.$family=(function(){return u;
}).hide();v.type=i;}}if(v==null){return null;}v.extend(this);v.$constructor=k;v.prototype.$constructor=v;return v;};var o=Object.prototype.toString;k.isEnumerable=function(i){return(i!=null&&typeof i.length=="number"&&o.call(i)!="[object Function]");
};var b={};var d=function(i){var u=e(i.prototype);return b[u]||(b[u]=[]);};var h=function(v,z){if(z&&z.$hidden){return this;}var u=d(this);for(var w=0;
w<u.length;w++){var y=u[w];if(e(y)=="type"){h.call(y,v,z);}else{y.call(this,v,z);}}var x=this.prototype[v];if(x==null||!x.$protected){this.prototype[v]=z;
}if(this[v]==null&&e(z)=="function"){s.call(this,v,function(i){return z.apply(i,n.call(arguments,1));});}return this;};var s=function(i,v){if(v&&v.$hidden){return this;
}var u=this[i];if(u==null||!u.$protected){this[i]=v;}return this;};k.implement({implement:h.overloadSetter(),extend:s.overloadSetter(),alias:function(i,u){h.call(this,i,this.prototype[u]);
}.overloadSetter(),mirror:function(i){d(this).push(i);return this;}});new k("Type",k);var c=function(u,y,w){var v=(y!=Object),C=y.prototype;if(v){y=new k(u,y);
}for(var z=0,x=w.length;z<x;z++){var D=w[z],B=y[D],A=C[D];if(B){B.protect();}if(v&&A){delete C[D];C[D]=A.protect();}}if(v){y.implement(C);}return c;};c("String",String,["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","quote","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase"])("Array",Array,["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice","indexOf","lastIndexOf","filter","forEach","every","map","some","reduce","reduceRight"])("Number",Number,["toExponential","toFixed","toLocaleString","toPrecision"])("Function",f,["apply","call","bind"])("RegExp",RegExp,["exec","test"])("Object",Object,["create","defineProperty","defineProperties","keys","getPrototypeOf","getOwnPropertyDescriptor","getOwnPropertyNames","preventExtensions","isExtensible","seal","isSealed","freeze","isFrozen"])("Date",Date,["now"]);
Object.extend=s.overloadSetter();Date.extend("now",function(){return +(new Date);});new k("Boolean",Boolean);Number.prototype.$family=function(){return isFinite(this)?"number":"null";
}.hide();Number.extend("random",function(u,i){return Math.floor(Math.random()*(i-u+1)+u);});Object.extend("forEach",function(i,v,w){for(var u in i){if(i.hasOwnProperty(u)){v.call(w,i[u],u,i);
}}});Object.each=Object.forEach;Array.implement({forEach:function(w,x){for(var v=0,u=this.length;v<u;v++){if(v in this){w.call(x,this[v],v,this);}}},each:function(i,u){Array.forEach(this,i,u);
return this;}});var r=function(i){switch(e(i)){case"array":return i.clone();case"object":return Object.clone(i);default:return i;}};Array.implement("clone",function(){var u=this.length,v=new Array(u);
while(u--){v[u]=r(this[u]);}return v;});var a=function(u,i,v){switch(e(v)){case"object":if(e(u[i])=="object"){Object.merge(u[i],v);}else{u[i]=Object.clone(v);
}break;case"array":u[i]=v.clone();break;default:u[i]=v;}return u;};Object.extend({merge:function(B,x,w){if(e(x)=="string"){return a(B,x,w);}for(var A=1,u=arguments.length;
A<u;A++){var y=arguments[A];for(var z in y){a(B,z,y[z]);}}return B;},clone:function(i){var v={};for(var u in i){v[u]=r(i[u]);}return v;},append:function(y){for(var x=1,v=arguments.length;
x<v;x++){var u=arguments[x]||{};for(var w in u){y[w]=u[w];}}return y;}});["Object","WhiteSpace","TextNode","Collection","Arguments"].each(function(i){new k(i);
});var j=Date.now();String.extend("uniqueID",function(){return(j++).toString(36);});var g=this.Hash=new k("Hash",function(i){if(e(i)=="hash"){i=Object.clone(i.getClean());
}for(var u in i){this[u]=i[u];}return this;});g.implement({forEach:function(i,u){Object.forEach(this,i,u);},getClean:function(){var u={};for(var i in this){if(this.hasOwnProperty(i)){u[i]=this[i];
}}return u;},getLength:function(){var u=0;for(var i in this){if(this.hasOwnProperty(i)){u++;}}return u;}});g.alias("each","forEach");Object.type=k.isObject;
var m=this.Native=function(i){return new k(i.name,i.initialize);};m.type=k.type;m.implement=function(w,u){for(var v=0;v<w.length;v++){w[v].implement(u);
}return m;};var l=Array.type;Array.type=function(i){return t(i,Array)||l(i);};this.$A=function(i){return Array.from(i).slice();};this.$arguments=function(u){return function(){return arguments[u];
};};this.$chk=function(i){return !!(i||i===0);};this.$clear=function(i){clearTimeout(i);clearInterval(i);return null;};this.$defined=function(i){return(i!=null);
};this.$each=function(v,u,w){var i=e(v);((i=="arguments"||i=="collection"||i=="array"||i=="elements")?Array:Object).each(v,u,w);};this.$empty=function(){};
this.$extend=function(u,i){return Object.append(u,i);};this.$H=function(i){return new g(i);};this.$merge=function(){var i=Array.slice(arguments);i.unshift({});
return Object.merge.apply(null,i);};this.$lambda=f.from;this.$mixin=Object.merge;this.$random=Number.random;this.$splat=Array.from;this.$time=Date.now;
this.$type=function(i){var u=e(i);if(u=="elements"){return"array";}return(u=="null")?false:u;};this.$unlink=function(i){switch(e(i)){case"object":return Object.clone(i);
case"array":return Array.clone(i);case"hash":return new g(i);default:return i;}};})();Array.implement({invoke:function(a){var b=Array.slice(arguments,1);
return this.map(function(c){return c[a].apply(c,b);});},every:function(c,d){for(var b=0,a=this.length;b<a;b++){if((b in this)&&!c.call(d,this[b],b,this)){return false;
}}return true;},filter:function(d,e){var c=[];for(var b=0,a=this.length;b<a;b++){if((b in this)&&d.call(e,this[b],b,this)){c.push(this[b]);}}return c;},clean:function(){return this.filter(function(a){return a!=null;
});},indexOf:function(c,d){var a=this.length;for(var b=(d<0)?Math.max(0,a+d):d||0;b<a;b++){if(this[b]===c){return b;}}return -1;},map:function(d,e){var c=[];
for(var b=0,a=this.length;b<a;b++){if(b in this){c[b]=d.call(e,this[b],b,this);}}return c;},some:function(c,d){for(var b=0,a=this.length;b<a;b++){if((b in this)&&c.call(d,this[b],b,this)){return true;
}}return false;},associate:function(c){var d={},b=Math.min(this.length,c.length);for(var a=0;a<b;a++){d[c[a]]=this[a];}return d;},link:function(c){var a={};
for(var e=0,b=this.length;e<b;e++){for(var d in c){if(c[d](this[e])){a[d]=this[e];delete c[d];break;}}}return a;},contains:function(a,b){return this.indexOf(a,b)!=-1;
},append:function(a){this.push.apply(this,a);return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[Number.random(0,this.length-1)]:null;
},include:function(a){if(!this.contains(a)){this.push(a);}return this;},combine:function(c){for(var b=0,a=c.length;b<a;b++){this.include(c[b]);}return this;
},erase:function(b){for(var a=this.length;a--;){if(this[a]===b){this.splice(a,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var d=[];
for(var b=0,a=this.length;b<a;b++){var c=typeOf(this[b]);if(c=="null"){continue;}d=d.concat((c=="array"||c=="collection"||c=="arguments"||instanceOf(this[b],Array))?Array.flatten(this[b]):this[b]);
}return d;},pick:function(){for(var b=0,a=this.length;b<a;b++){if(this[b]!=null){return this[b];}}return null;},hexToRgb:function(b){if(this.length!=3){return null;
}var a=this.map(function(c){if(c.length==1){c+=c;}return c.toInt(16);});return(b)?a:"rgb("+a+")";},rgbToHex:function(d){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!d){return"transparent";
}var b=[];for(var a=0;a<3;a++){var c=(this[a]-0).toString(16);b.push((c.length==1)?"0"+c:c);}return(d)?b:"#"+b.join("");}});Array.alias("extend","append");
var $pick=function(){return Array.from(arguments).pick();};String.implement({test:function(a,b){return((typeOf(a)=="regexp")?a:new RegExp(""+a,b)).test(this);
},contains:function(a,b){return(b)?(b+this+b).indexOf(b+a+b)>-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim();
},camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase());
});},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");
},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1);
}return(a[c]!=null)?a[c]:"";});}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0).toFixed(a<0?-a:0);
return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a<this;a++){b.call(c,a,this);}},toFloat:function(){return parseFloat(this);},toInt:function(a){return parseInt(this,a||10);
}});Number.alias("each","times");(function(b){var a={};b.each(function(c){if(!Number[c]){a[c]=function(){return Math[c].apply(null,[this].concat(Array.from(arguments)));
};}});Number.implement(a);})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);Function.extend({attempt:function(){for(var b=0,a=arguments.length;
b<a;b++){try{return arguments[b]();}catch(c){}}return null;}});Function.implement({attempt:function(a,c){try{return this.apply(c,Array.from(a));}catch(b){}return null;
},bind:function(c){var a=this,b=(arguments.length>1)?Array.slice(arguments,1):null;return function(){if(!b&&!arguments.length){return a.call(c);}if(b&&arguments.length){return a.apply(c,b.concat(Array.from(arguments)));
}return a.apply(c,b||arguments);};},pass:function(b,c){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},delay:function(b,c,a){return setTimeout(this.pass(a,c),b);
},periodical:function(c,b,a){return setInterval(this.pass(a,b),c);}});delete Function.prototype.bind;Function.implement({create:function(b){var a=this;
b=b||{};return function(d){var c=b.arguments;c=(c!=null)?Array.from(c):Array.slice(arguments,(b.event)?1:0);if(b.event){c=[d||window.event].extend(c);}var e=function(){return a.apply(b.bind||null,c);
};if(b.delay){return setTimeout(e,b.delay);}if(b.periodical){return setInterval(e,b.periodical);}if(b.attempt){return Function.attempt(e);}return e();};
},bind:function(c,b){var a=this;if(b!=null){b=Array.from(b);}return function(){return a.apply(c,b||arguments);};},bindWithEvent:function(c,b){var a=this;
if(b!=null){b=Array.from(b);}return function(d){return a.apply(c,(b==null)?arguments:[d].concat(b));};},run:function(a,b){return this.apply(b,Array.from(a));
}});var $try=Function.attempt;Object.extend({subset:function(c,f){var e={};for(var d=0,a=f.length;d<a;d++){var b=f[d];e[b]=c[b];}return e;},map:function(a,d,e){var c={};
for(var b in a){if(a.hasOwnProperty(b)){c[b]=d.call(e,a[b],b,a);}}return c;},filter:function(a,c,d){var b={};Object.each(a,function(f,e){if(c.call(d,f,e,a)){b[e]=f;
}});return b;},every:function(a,c,d){for(var b in a){if(a.hasOwnProperty(b)&&!c.call(d,a[b],b)){return false;}}return true;},some:function(a,c,d){for(var b in a){if(a.hasOwnProperty(b)&&c.call(d,a[b],b)){return true;
}}return false;},keys:function(a){var c=[];for(var b in a){if(a.hasOwnProperty(b)){c.push(b);}}return c;},values:function(b){var a=[];for(var c in b){if(b.hasOwnProperty(c)){a.push(b[c]);
}}return a;},getLength:function(a){return Object.keys(a).length;},keyOf:function(a,c){for(var b in a){if(a.hasOwnProperty(b)&&a[b]===c){return b;}}return null;
},contains:function(a,b){return Object.keyOf(a,b)!=null;},toQueryString:function(a,b){var c=[];Object.each(a,function(g,f){if(b){f=b+"["+f+"]";}var e;switch(typeOf(g)){case"object":e=Object.toQueryString(g,f);
break;case"array":var d={};g.each(function(j,h){d[h]=j;});e=Object.toQueryString(d,f);break;default:e=f+"="+encodeURIComponent(g);}if(g!=null){c.push(e);
}});return c.join("&");}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(a){return Object.keyOf(this,a);},hasValue:function(a){return Object.contains(this,a);
},extend:function(a){Hash.each(a||{},function(c,b){Hash.set(this,b,c);},this);return this;},combine:function(a){Hash.each(a||{},function(c,b){Hash.include(this,b,c);
},this);return this;},erase:function(a){if(this.hasOwnProperty(a)){delete this[a];}return this;},get:function(a){return(this.hasOwnProperty(a))?this[a]:null;
},set:function(a,b){if(!this[a]||this.hasOwnProperty(a)){this[a]=b;}return this;},empty:function(){Hash.each(this,function(b,a){delete this[a];},this);
return this;},include:function(a,b){if(this[a]==null){this[a]=b;}return this;},map:function(a,b){return new Hash(Object.map(this,a,b));},filter:function(a,b){return new Hash(Object.filter(this,a,b));
},every:function(a,b){return Object.every(this,a,b);},some:function(a,b){return Object.some(this,a,b);},getKeys:function(){return Object.keys(this);},getValues:function(){return Object.values(this);
},toQueryString:function(a){return Object.toQueryString(this,a);}});Hash.extend=Object.append;Hash.alias({indexOf:"keyOf",contains:"hasValue"});(function(){var l=this.document;
var j=l.window=this;var b=1;this.$uid=(j.ActiveXObject)?function(e){return(e.uid||(e.uid=[b++]))[0];}:function(e){return e.uid||(e.uid=b++);};$uid(j);$uid(l);
var a=navigator.userAgent.toLowerCase(),c=navigator.platform.toLowerCase(),k=a.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,"unknown",0],g=k[1]=="ie"&&l.documentMode;
var p=this.Browser={extend:Function.prototype.extend,name:(k[1]=="version")?k[3]:k[1],version:g||parseFloat((k[1]=="opera"&&k[4])?k[4]:k[2]),Platform:{name:a.match(/ip(?:ad|od|hone)/)?"ios":(a.match(/(?:webos|android)/)||c.match(/mac|win|linux/)||["other"])[0]},Features:{xpath:!!(l.evaluate),air:!!(j.runtime),query:!!(l.querySelector),json:!!(j.JSON)},Plugins:{}};
p[p.name]=true;p[p.name+parseInt(p.version,10)]=true;p.Platform[p.Platform.name]=true;p.Request=(function(){var r=function(){return new XMLHttpRequest();
};var q=function(){return new ActiveXObject("MSXML2.XMLHTTP");};var e=function(){return new ActiveXObject("Microsoft.XMLHTTP");};return Function.attempt(function(){r();
return r;},function(){q();return q;},function(){e();return e;});})();p.Features.xhr=!!(p.Request);var i=(Function.attempt(function(){return navigator.plugins["Shockwave Flash"].description;
},function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");})||"0 r0").match(/\d+/g);p.Plugins.Flash={version:Number(i[0]||"0."+i[1])||0,build:Number(i[2])||0};
p.exec=function(q){if(!q){return q;}if(j.execScript){j.execScript(q);}else{var e=l.createElement("script");e.setAttribute("type","text/javascript");e.text=q;
l.head.appendChild(e);l.head.removeChild(e);}return q;};String.implement("stripScripts",function(q){var e="";var r=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(s,t){e+=t+"\n";
return"";});if(q===true){p.exec(e);}else{if(typeOf(q)=="function"){q(e,r);}}return r;});p.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event});
this.Window=this.$constructor=new Type("Window",function(){});this.$family=Function.from("window").hide();Window.mirror(function(e,q){j[e]=q;});this.Document=l.$constructor=new Type("Document",function(){});
l.$family=Function.from("document").hide();Document.mirror(function(e,q){l[e]=q;});l.html=l.documentElement;l.head=l.getElementsByTagName("head")[0];if(l.execCommand){try{l.execCommand("BackgroundImageCache",false,true);
}catch(h){}}if(this.attachEvent&&!this.addEventListener){var d=function(){this.detachEvent("onunload",d);l.head=l.html=l.window=null;};this.attachEvent("onunload",d);
}var n=Array.from;try{n(l.html.childNodes);}catch(h){Array.from=function(q){if(typeof q!="string"&&Type.isEnumerable(q)&&typeOf(q)!="array"){var e=q.length,r=new Array(e);
while(e--){r[e]=q[e];}return r;}return n(q);};var m=Array.prototype,o=m.slice;["pop","push","reverse","shift","sort","splice","unshift","concat","join","slice"].each(function(e){var q=m[e];
Array[e]=function(r){return q.apply(Array.from(r),o.call(arguments,1));};});}if(p.Platform.ios){p.Platform.ipod=true;}p.Engine={};var f=function(q,e){p.Engine.name=q;
p.Engine[q+e]=true;p.Engine.version=e;};if(p.ie){p.Engine.trident=true;switch(p.version){case 6:f("trident",4);break;case 7:f("trident",5);break;case 8:f("trident",6);
}}if(p.firefox){p.Engine.gecko=true;if(p.version>=3){f("gecko",19);}else{f("gecko",18);}}if(p.safari||p.chrome){p.Engine.webkit=true;switch(p.version){case 2:f("webkit",419);
break;case 3:f("webkit",420);break;case 4:f("webkit",525);}}if(p.opera){p.Engine.presto=true;if(p.version>=9.6){f("presto",960);}else{if(p.version>=9.5){f("presto",950);
}else{f("presto",925);}}}if(p.name=="unknown"){switch((a.match(/(?:webkit|khtml|gecko)/)||[])[0]){case"webkit":case"khtml":p.Engine.webkit=true;break;case"gecko":p.Engine.gecko=true;
}}this.$exec=p.exec;})();var Event=new Type("Event",function(a,i){if(!i){i=window;}var o=i.document;a=a||i.event;if(a.$extended){return a;}this.$extended=true;
var n=a.type,k=a.target||a.srcElement,m={},c={};while(k&&k.nodeType==3){k=k.parentNode;}if(n.indexOf("key")!=-1){var b=a.which||a.keyCode;var q=Object.keyOf(Event.Keys,b);
if(n=="keydown"){var d=b-111;if(d>0&&d<13){q="f"+d;}}if(!q){q=String.fromCharCode(b).toLowerCase();}}else{if(n.test(/click|mouse|menu/i)){o=(!o.compatMode||o.compatMode=="CSS1Compat")?o.html:o.body;
m={x:(a.pageX!=null)?a.pageX:a.clientX+o.scrollLeft,y:(a.pageY!=null)?a.pageY:a.clientY+o.scrollTop};c={x:(a.pageX!=null)?a.pageX-i.pageXOffset:a.clientX,y:(a.pageY!=null)?a.pageY-i.pageYOffset:a.clientY};
if(n.test(/DOMMouseScroll|mousewheel/)){var l=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}var h=(a.which==3)||(a.button==2),p=null;if(n.test(/over|out/)){p=a.relatedTarget||a[(n=="mouseover"?"from":"to")+"Element"];
var j=function(){while(p&&p.nodeType==3){p=p.parentNode;}return true;};var g=(Browser.firefox2)?j.attempt():j();p=(g)?p:null;}}else{if(n.test(/gesture|touch/i)){this.rotation=a.rotation;
this.scale=a.scale;this.targetTouches=a.targetTouches;this.changedTouches=a.changedTouches;var f=this.touches=a.touches;if(f&&f[0]){var e=f[0];m={x:e.pageX,y:e.pageY};
c={x:e.clientX,y:e.clientY};}}}}return Object.append(this,{event:a,type:n,page:m,client:c,rightClick:h,wheel:l,relatedTarget:document.id(p),target:document.id(k),code:b,key:q,shift:a.shiftKey,control:a.ctrlKey,alt:a.altKey,meta:a.metaKey});
});Event.Keys={enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46};Event.Keys=new Hash(Event.Keys);Event.implement({stop:function(){return this.stopPropagation().preventDefault();
},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault();
}else{this.event.returnValue=false;}return this;}});(function(){var a=this.Class=new Type("Class",function(h){if(instanceOf(h,Function)){h={initialize:h};
}var g=function(){e(this);if(g.$prototyping){return this;}this.$caller=null;var i=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null;
return i;}.extend(this).implement(h);g.$constructor=a;g.prototype.$constructor=g;g.prototype.parent=c;return g;});var c=function(){if(!this.$caller){throw new Error('The method "parent" cannot be called.');
}var g=this.$caller.$name,h=this.$caller.$owner.parent,i=(h)?h.prototype[g]:null;if(!i){throw new Error('The method "'+g+'" has no parent.');}return i.apply(this,arguments);
};var e=function(g){for(var h in g){var j=g[h];switch(typeOf(j)){case"object":var i=function(){};i.prototype=j;g[h]=e(new i);break;case"array":g[h]=j.clone();
break;}}return g;};var b=function(g,h,j){if(j.$origin){j=j.$origin;}var i=function(){if(j.$protected&&this.$caller==null){throw new Error('The method "'+h+'" cannot be called.');
}var l=this.caller,m=this.$caller;this.caller=m;this.$caller=i;var k=j.apply(this,arguments);this.$caller=m;this.caller=l;return k;}.extend({$owner:g,$origin:j,$name:h});
return i;};var f=function(h,i,g){if(a.Mutators.hasOwnProperty(h)){i=a.Mutators[h].call(this,i);if(i==null){return this;}}if(typeOf(i)=="function"){if(i.$hidden){return this;
}this.prototype[h]=(g)?i:b(this,h,i);}else{Object.merge(this.prototype,h,i);}return this;};var d=function(g){g.$prototyping=true;var h=new g;delete g.$prototyping;
return h;};a.implement("implement",f.overloadSetter());a.Mutators={Extends:function(g){this.parent=g;this.prototype=d(g);},Implements:function(g){Array.from(g).each(function(j){var h=new j;
for(var i in h){f.call(this,i,h[i],true);}},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments));
return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();
return this;}});var a=function(b){return b.replace(/^on([A-Z])/,function(c,d){return d.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(d,c,b){d=a(d);
if(c==$empty){return this;}this.$events[d]=(this.$events[d]||[]).include(c);if(b){c.internal=true;}return this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);
}return this;},fireEvent:function(e,c,b){e=a(e);var d=this.$events[e];if(!d){return this;}c=Array.from(c);d.each(function(f){if(b){f.delay(b,this,c);}else{f.apply(this,c);
}},this);return this;},removeEvent:function(e,d){e=a(e);var c=this.$events[e];if(c&&!d.internal){var b=c.indexOf(d);if(b!=-1){delete c[b];}}return this;
},removeEvents:function(d){var e;if(typeOf(d)=="object"){for(e in d){this.removeEvent(e,d[e]);}return this;}if(d){d=a(d);}for(e in this.$events){if(d&&d!=e){continue;
}var c=this.$events[e];for(var b=c.length;b--;){this.removeEvent(e,c[b]);}}return this;}});this.Options=new Class({setOptions:function(){var b=this.options=Object.merge.apply(null,[{},this.options].append(arguments));
if(!this.addEvent){return this;}for(var c in b){if(typeOf(b[c])!="function"||!(/^on[A-Z]/).test(c)){continue;}this.addEvent(c,b[c]);delete b[c];}return this;
}});})();(function(){var k,n,l,g,a={},c={},m=/\\/g;var e=function(q,p){if(q==null){return null;}if(q.Slick===true){return q;}q=(""+q).replace(/^\s+|\s+$/g,"");
g=!!p;var o=(g)?c:a;if(o[q]){return o[q];}k={Slick:true,expressions:[],raw:q,reverse:function(){return e(this.raw,true);}};n=-1;while(q!=(q=q.replace(j,b))){}k.length=k.expressions.length;
return o[q]=(g)?h(k):k;};var i=function(o){if(o==="!"){return" ";}else{if(o===" "){return"!";}else{if((/^!/).test(o)){return o.replace(/^!/,"");}else{return"!"+o;
}}}};var h=function(u){var r=u.expressions;for(var p=0;p<r.length;p++){var t=r[p];var q={parts:[],tag:"*",combinator:i(t[0].combinator)};for(var o=0;o<t.length;
o++){var s=t[o];if(!s.reverseCombinator){s.reverseCombinator=" ";}s.combinator=s.reverseCombinator;delete s.reverseCombinator;}t.reverse().push(q);}return u;
};var f=function(o){return o.replace(/[-[\]{}()*+?.\\^$|,#\s]/g,"\\$&");};var j=new RegExp("^(?:\\s*(,)\\s*|\\s*(<combinator>+)\\s*|(\\s+)|(<unicode>+|\\*)|\\#(<unicode>+)|\\.(<unicode>+)|\\[\\s*(<unicode1>+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|:+(<unicode>+)(?:\\((?:(?:([\"'])([^\\12]*)\\12)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(/<combinator>/,"["+f(">+~`!@$%^&={}\\;</")+"]").replace(/<unicode>/g,"(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])").replace(/<unicode1>/g,"(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])"));
function b(x,s,D,z,r,C,q,B,A,y,u,F,v,p,w){if(s||n===-1){k.expressions[++n]=[];l=-1;if(s){return"";}}if(D||z||l===-1){D=D||" ";var t=k.expressions[n];if(g&&t[l]){t[l].reverseCombinator=i(D);
}t[++l]={combinator:D,tag:"*"};}var o=k.expressions[n][l];if(r){o.tag=r.replace(m,"");}else{if(C){o.id=C.replace(m,"");}else{if(q){q=q.replace(m,"");if(!o.classList){o.classList=[];
}if(!o.classes){o.classes=[];}o.classList.push(q);o.classes.push({value:q,regexp:new RegExp("(^|\\s)"+f(q)+"(\\s|$)")});}else{if(F){w=w||p;w=w?w.replace(m,""):null;
if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:F.replace(m,""),value:w});}else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,G;switch(A){case"^=":G=new RegExp("^"+f(u));
break;case"$=":G=new RegExp(f(u)+"$");break;case"~=":G=new RegExp("(^|\\s)"+f(u)+"(\\s|$)");break;case"|=":G=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(H){return u==H;
};break;case"*=":E=function(H){return H&&H.indexOf(u)>-1;};break;case"!=":E=function(H){return u!=H;};break;default:E=function(H){return !!H;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false;
};}if(!E){E=function(H){return H&&G.test(H);};}if(!o.attributes){o.attributes=[];}o.attributes.push({key:B,operator:A,value:u,test:E});}}}}}return"";}var d=(this.Slick||{});
d.parse=function(o){return e(o);};d.escapeRegExp=f;if(!this.Slick){this.Slick=d;}}).apply((typeof exports!="undefined")?exports:this);(function(){var b={};
b.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};b.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(Object.prototype.toString.call(c)==="[object XMLDocument]")||(c.nodeType===9&&c.documentElement.nodeName!=="HTML");
};b.setDocument=function(n){if(n.nodeType===9){}else{if(n.ownerDocument){n=n.ownerDocument;}else{if(n.navigator){n=n.document;}else{return;}}}if(this.document===n){return;
}this.document=n;var o=this.root=n.documentElement;this.isXMLDocument=this.isXML(n);this.brokenStarGEBTN=this.starSelectsClosedQSA=this.idGetsName=this.brokenMixedCaseQSA=this.brokenGEBCN=this.brokenCheckedQSA=this.brokenEmptyAttributeQSA=this.isHTMLDocument=false;
var i,j,p,k;var l,c;var q=n.createElement("div");o.appendChild(q);try{c="slick_getbyid_test";q.innerHTML='<a id="'+c+'"></a>';this.isHTMLDocument=!!n.getElementById(c);
}catch(m){}if(this.isHTMLDocument){q.style.display="none";q.appendChild(n.createComment(""));j=(q.getElementsByTagName("*").length>0);try{q.innerHTML="foo</foo>";
l=q.getElementsByTagName("*");i=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}this.brokenStarGEBTN=j||i;if(q.querySelectorAll){try{q.innerHTML="foo</foo>";
l=q.querySelectorAll("*");this.starSelectsClosedQSA=(l&&l.length&&l[0].nodeName.charAt(0)=="/");}catch(m){}}try{c="slick_id_gets_name";q.innerHTML='<a name="'+c+'"></a><b id="'+c+'"></b>';
this.idGetsName=n.getElementById(c)===q.firstChild;}catch(m){}try{q.innerHTML='<a class="MiXedCaSe"></a>';this.brokenMixedCaseQSA=!q.querySelectorAll(".MiXedCaSe").length;
}catch(m){}try{q.innerHTML='<a class="f"></a><a class="b"></a>';q.getElementsByClassName("b").length;q.firstChild.className="b";k=(q.getElementsByClassName("b").length!=2);
}catch(m){}try{q.innerHTML='<a class="a"></a><a class="f b a"></a>';p=(q.getElementsByClassName("a").length!=2);}catch(m){}this.brokenGEBCN=k||p;try{q.innerHTML='<select><option selected="selected">a</option></select>';
this.brokenCheckedQSA=(q.querySelectorAll(":checked").length==0);}catch(m){}try{q.innerHTML='<a class=""></a>';this.brokenEmptyAttributeQSA=(q.querySelectorAll('[class*=""]').length!=0);
}catch(m){}}o.removeChild(q);q=null;this.hasAttribute=(o&&this.isNativeCode(o.hasAttribute))?function(s,r){return s.hasAttribute(r);}:function(s,r){s=s.getAttributeNode(r);
return !!(s&&(s.specified||s.nodeValue));};this.contains=(o&&this.isNativeCode(o.contains))?function(r,s){return r.contains(s);}:(o&&o.compareDocumentPosition)?function(r,s){return r===s||!!(r.compareDocumentPosition(s)&16);
}:function(r,s){if(s){do{if(s===r){return true;}}while((s=s.parentNode));}return false;};this.documentSorter=(o.compareDocumentPosition)?function(s,r){if(!s.compareDocumentPosition||!r.compareDocumentPosition){return 0;
}return s.compareDocumentPosition(r)&4?-1:s===r?0:1;}:("sourceIndex" in o)?function(s,r){if(!s.sourceIndex||!r.sourceIndex){return 0;}return s.sourceIndex-r.sourceIndex;
}:(n.createRange)?function(u,s){if(!u.ownerDocument||!s.ownerDocument){return 0;}var t=u.ownerDocument.createRange(),r=s.ownerDocument.createRange();t.setStart(u,0);
t.setEnd(u,0);r.setStart(s,0);r.setEnd(s,0);return t.compareBoundaryPoints(Range.START_TO_END,r);}:null;this.getUID=(this.isHTMLDocument)?this.getUIDHTML:this.getUIDXML;
};b.search=function(k,x,F,q){var w=this.found=(q)?null:(F||[]);if(!k){return w;}if(k.navigator){k=k.document;}else{if(!k.nodeType){return w;}}var t,E;var o=this.uniques={};
if(this.document!==(k.ownerDocument||k)){this.setDocument(k);}var y=!!(F&&F.length);if(y){for(E=w.length;E--;){this.uniques[this.getUID(w[E])]=true;}}if(typeof x=="string"){for(E=this.overrides.length;
E--;){var u=this.overrides[E];if(u.regexp.test(x)){var v=u.method.call(k,x,w,q);if(v===false){continue;}if(v===true){return w;}return v;}}t=this.Slick.parse(x);
if(!t.length){return w;}}else{if(x==null){return w;}else{if(x.Slick){t=x;}else{if(this.contains(k.documentElement||k,x)){(w)?w.push(x):w=x;return w;}else{return w;
}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!y&&(q||(t.length==1&&t.expressions[0].length==1)))?this.pushArray:this.pushUID;
if(w==null){w=[];}var D,B,A;var C,K,z,J,G,s,p;var r,l,c,H,I=t.expressions;search:for(E=0;(l=I[E]);E++){for(D=0;(c=l[D]);D++){C="combinator:"+c.combinator;
if(!this[C]){continue search;}K=(this.isXMLDocument)?c.tag:c.tag.toUpperCase();z=c.id;J=c.classList;G=c.classes;s=c.attributes;p=c.pseudos;H=(D===(l.length-1));
this.bitUniques={};if(H){this.uniques=o;this.found=w;}else{this.uniques={};this.found=[];}if(D===0){this[C](k,K,z,G,s,p,J);if(q&&H&&w.length){break search;
}}else{if(q&&H){for(B=0,A=r.length;B<A;B++){this[C](r[B],K,z,G,s,p,J);if(w.length){break search;}}}else{for(B=0,A=r.length;B<A;B++){this[C](r[B],K,z,G,s,p,J);
}}}r=this.found;}}if(y||(t.expressions.length>1)){this.sort(w);}return(q)?(w[0]||null):w;};b.uidx=1;b.uidk="slick:uniqueid";b.getUIDXML=function(i){var c=i.getAttribute(this.uidk);
if(!c){c=this.uidx++;i.setAttribute(this.uidk,c);}return c;};b.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};b.sort=function(c){if(!this.documentSorter){return c;
}c.sort(this.documentSorter);return c;};b.cacheNTH={};b.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;b.parseNTHArgument=function(l){var j=l.match(this.matchNTH);
if(!j){return false;}var k=j[2]||false;var i=j[1]||1;if(i=="-"){i=-1;}var c=+j[3]||0;j=(k=="n")?{a:i,b:c}:(k=="odd")?{a:2,b:1}:(k=="even")?{a:2,b:0}:{a:0,b:i};
return(this.cacheNTH[l]=j);};b.createNTHPseudo=function(k,i,c,j){return function(n,l){var p=this.getUID(n);if(!this[c][p]){var v=n.parentNode;if(!v){return false;
}var m=v[k],o=1;if(j){var u=n.nodeName;do{if(m.nodeName!==u){continue;}this[c][this.getUID(m)]=o++;}while((m=m[i]));}else{do{if(m.nodeType!==1){continue;
}this[c][this.getUID(m)]=o++;}while((m=m[i]));}}l=l||"n";var q=this.cacheNTH[l]||this.parseNTHArgument(l);if(!q){return false;}var t=q.a,s=q.b,r=this[c][p];
if(t==0){return s==r;}if(t>0){if(r<s){return false;}}else{if(s<r){return false;}}return((r-s)%t)==0;};};b.pushArray=function(k,c,m,j,i,l){if(this.matchSelector(k,c,m,j,i,l)){this.found.push(k);
}};b.pushUID=function(l,c,n,k,i,m){var j=this.getUID(l);if(!this.uniques[j]&&this.matchSelector(l,c,n,k,i,m)){this.uniques[j]=true;this.found.push(l);}};
b.matchNode=function(n,c){var k=this.Slick.parse(c);if(!k){return true;}if(k.length==1&&k.expressions[0].length==1){var o=k.expressions[0][0];return this.matchSelector(n,(this.isXMLDocument)?o.tag:o.tag.toUpperCase(),o.id,o.classes,o.attributes,o.pseudos);
}var j=this.search(this.document,k);for(var l=0,m;m=j[l++];){if(m===n){return true;}}return false;};b.matchPseudo=function(l,c,k){var i="pseudo:"+c;if(this[i]){return this[i](l,k);
}var j=this.getAttribute(l,c);return(k)?k==j:!!j;};b.matchSelector=function(k,q,c,l,m,o){if(q){if(q=="*"){if(k.nodeName<"@"){return false;}}else{if(k.nodeName!=q){return false;
}}}if(c&&k.getAttribute("id")!=c){return false;}var n,j,p;if(l){for(n=l.length;n--;){p=("className" in k)?k.className:k.getAttribute("class");if(!(p&&l[n].regexp.test(p))){return false;
}}}if(m){for(n=m.length;n--;){j=m[n];if(j.operator?!j.test(this.getAttribute(k,j.key)):!this.hasAttribute(k,j.key)){return false;}}}if(o){for(n=o.length;
n--;){j=o[n];if(!this.matchPseudo(k,j.key,j.value)){return false;}}}return true;};var a={" ":function(l,r,c,m,n,p,k){var o,q,j;if(this.isHTMLDocument){getById:if(c){q=this.document.getElementById(c);
if((!q&&l.all)||(this.idGetsName&&q&&q.getAttributeNode("id").nodeValue!=c)){j=l.all[c];if(!j){return;}if(!j[0]){j=[j];}for(o=0;q=j[o++];){if(q.getAttributeNode("id").nodeValue==c){this.push(q,r,null,m,n,p);
break;}}return;}if(!q){if(this.contains(this.document.documentElement,l)){return;}else{break getById;}}else{if(this.document!==l&&!this.contains(l,q)){return;
}}this.push(q,r,null,m,n,p);return;}getByClass:if(m&&l.getElementsByClassName&&!this.brokenGEBCN){j=l.getElementsByClassName(k.join(" "));if(!(j&&j.length)){break getByClass;
}for(o=0;q=j[o++];){this.push(q,r,c,null,n,p);}return;}}getByTag:{j=l.getElementsByTagName(r);if(!(j&&j.length)){break getByTag;}if(!this.brokenStarGEBTN){r=null;
}for(o=0;q=j[o++];){this.push(q,r,c,m,n,p);}}},">":function(k,c,m,j,i,l){if((k=k.firstChild)){do{if(k.nodeType===1){this.push(k,c,m,j,i,l);}}while((k=k.nextSibling));
}},"+":function(k,c,m,j,i,l){while((k=k.nextSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break;}}},"^":function(k,c,m,j,i,l){k=k.firstChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l);
}else{this["combinator:+"](k,c,m,j,i,l);}}},"~":function(l,c,n,k,i,m){while((l=l.nextSibling)){if(l.nodeType!==1){continue;}var j=this.getUID(l);if(this.bitUniques[j]){break;
}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}},"++":function(k,c,m,j,i,l){this["combinator:+"](k,c,m,j,i,l);this["combinator:!+"](k,c,m,j,i,l);},"~~":function(k,c,m,j,i,l){this["combinator:~"](k,c,m,j,i,l);
this["combinator:!~"](k,c,m,j,i,l);},"!":function(k,c,m,j,i,l){while((k=k.parentNode)){if(k!==this.document){this.push(k,c,m,j,i,l);}}},"!>":function(k,c,m,j,i,l){k=k.parentNode;
if(k!==this.document){this.push(k,c,m,j,i,l);}},"!+":function(k,c,m,j,i,l){while((k=k.previousSibling)){if(k.nodeType===1){this.push(k,c,m,j,i,l);break;
}}},"!^":function(k,c,m,j,i,l){k=k.lastChild;if(k){if(k.nodeType===1){this.push(k,c,m,j,i,l);}else{this["combinator:!+"](k,c,m,j,i,l);}}},"!~":function(l,c,n,k,i,m){while((l=l.previousSibling)){if(l.nodeType!==1){continue;
}var j=this.getUID(l);if(this.bitUniques[j]){break;}this.bitUniques[j]=true;this.push(l,c,n,k,i,m);}}};for(var h in a){b["combinator:"+h]=a[h];}var g={empty:function(c){var i=c.firstChild;
return !(i&&i.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,i){return !this.matchNode(c,i);},contains:function(c,i){return(c.innerText||c.textContent||"").indexOf(i)>-1;
},"first-child":function(c){while((c=c.previousSibling)){if(c.nodeType===1){return false;}}return true;},"last-child":function(c){while((c=c.nextSibling)){if(c.nodeType===1){return false;
}}return true;},"only-child":function(j){var i=j;while((i=i.previousSibling)){if(i.nodeType===1){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeType===1){return false;
}}return true;},"nth-child":b.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":b.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":b.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":b.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(i,c){return this["pseudo:nth-child"](i,""+c+1);
},even:function(i,c){return this["pseudo:nth-child"](i,"2n");},odd:function(i,c){return this["pseudo:nth-child"](i,"2n+1");},"first-of-type":function(c){var i=c.nodeName;
while((c=c.previousSibling)){if(c.nodeName===i){return false;}}return true;},"last-of-type":function(c){var i=c.nodeName;while((c=c.nextSibling)){if(c.nodeName===i){return false;
}}return true;},"only-of-type":function(j){var i=j,k=j.nodeName;while((i=i.previousSibling)){if(i.nodeName===k){return false;}}var c=j;while((c=c.nextSibling)){if(c.nodeName===k){return false;
}}return true;},enabled:function(c){return(c.disabled===false);},disabled:function(c){return(c.disabled===true);},checked:function(c){return c.checked||c.selected;
},focus:function(c){return this.isHTMLDocument&&this.document.activeElement===c&&(c.href||c.type||this.hasAttribute(c,"tabindex"));},root:function(c){return(c===this.root);
},selected:function(c){return c.selected;}};for(var d in g){b["pseudo:"+d]=g[d];}b.attributeGetters={"class":function(){return("className" in this)?this.className:this.getAttribute("class");
},"for":function(){return("htmlFor" in this)?this.htmlFor:this.getAttribute("for");},href:function(){return("href" in this)?this.getAttribute("href",2):this.getAttribute("href");
},style:function(){return(this.style)?this.style.cssText:this.getAttribute("style");}};b.getAttribute=function(j,c){var k=this.attributeGetters[c];if(k){return k.call(j);
}var i=j.getAttributeNode(c);return i?i.nodeValue:null;};b.overrides=[];b.override=function(c,i){this.overrides.push({regexp:c,method:i});};var f=/\[.*[*$^]=(?:["']{2})?\]/;
b.override(/./,function(p,n,o){if(!this.querySelectorAll||this.nodeType!=9||!b.isHTMLDocument||b.brokenMixedCaseQSA||(b.brokenCheckedQSA&&p.indexOf(":checked")>-1)||(b.brokenEmptyAttributeQSA&&f.test(p))||e.disableQSA){return false;
}var j,m;try{if(o){return this.querySelector(p)||null;}else{j=this.querySelectorAll(p);}}catch(k){return false;}var l,c=!!(n.length);if(b.starSelectsClosedQSA){for(l=0;
m=j[l++];){if(m.nodeName>"@"&&(!c||!b.uniques[b.getUIDHTML(m)])){n.push(m);}}}else{for(l=0;m=j[l++];){if(!c||!b.uniques[b.getUIDHTML(m)]){n.push(m);}}}if(c){b.sort(n);
}return true;});b.override(/^[\w-]+$|^\*$/,function(p,n,o){var j=p;if(j=="*"&&b.brokenStarGEBTN){return false;}var k=this.getElementsByTagName(j);if(o){return k[0]||null;
}var l,m,c=!!(n.length);for(l=0;m=k[l++];){if(!c||!b.uniques[b.getUID(m)]){n.push(m);}}if(c){b.sort(n);}return true;});b.override(/^\.[\w-]+$/,function(o,q,m){if(!b.isHTMLDocument||(!this.getElementsByClassName&&this.querySelectorAll)){return false;
}var c,k,l,j=!!(q&&q.length),p=o.substring(1);if(this.getElementsByClassName&&!b.brokenGEBCN){c=this.getElementsByClassName(p);if(m){return c[0]||null;
}for(l=0;k=c[l++];){if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}else{var n=new RegExp("(^|\\s)"+e.escapeRegExp(p)+"(\\s|$)");c=this.getElementsByTagName("*");
for(l=0;k=c[l++];){p=k.className;if(!p||!n.test(p)){continue;}if(m){return k;}if(!j||!b.uniques[b.getUIDHTML(k)]){q.push(k);}}}if(j){b.sort(q);}return(m)?null:true;
});b.override(/^#[\w-]+$/,function(l,j,k){if(!b.isHTMLDocument||this.nodeType!=9){return false;}var m=l.substring(1),i=this.getElementById(m);if(!i){return j;
}if(b.idGetsName&&i.getAttributeNode("id").nodeValue!=m){return false;}if(k){return i||null;}var c=!!(j.length);if(!c||!b.uniques[b.getUIDHTML(i)]){j.push(i);
}if(c){b.sort(j);}return true;});if(typeof document!="undefined"){b.setDocument(document);}var e=b.Slick=(this.Slick||{});e.version="0.9dev";e.search=function(i,j,c){return b.search(i,j,c);
};e.find=function(c,i){return b.search(c,i,null,true);};e.contains=function(c,i){b.setDocument(c);return b.contains(c,i);};e.getAttribute=function(i,c){return b.getAttribute(i,c);
};e.match=function(i,c){if(!(i&&c)){return false;}if(!c||c===i){return true;}if(typeof c!="string"){return false;}b.setDocument(i);return b.matchNode(i,c);
};e.defineAttributeGetter=function(c,i){b.attributeGetters[c]=i;return this;};e.lookupAttributeGetter=function(c){return b.attributeGetters[c];};e.definePseudo=function(c,i){b["pseudo:"+c]=function(k,j){return i.call(k,j);
};return this;};e.lookupPseudo=function(c){var i=b["pseudo:"+c];if(i){return function(j){return i.call(this,j);};}return null;};e.override=function(i,c){b.override(i,c);
return this;};e.isXML=b.isXML;e.uidOf=function(c){return b.getUIDHTML(c);};if(!this.Slick){this.Slick=e;}}).apply((typeof exports!="undefined")?exports:this);
var Element=function(b,g){var h=Element.Constructors[b];if(h){return h(g);}if(typeof b!="string"){return document.id(b).set(g);}if(!g){g={};}if(!b.test(/^[\w-]+$/)){var e=Slick.parse(b).expressions[0][0];
b=(e.tag=="*")?"div":e.tag;if(e.id&&g.id==null){g.id=e.id;}var d=e.attributes;if(d){for(var f=0,c=d.length;f<c;f++){var a=d[f];if(a.value!=null&&a.operator=="="&&g[a.key]==null){g[a.key]=a.value;
}}}if(e.classList&&g["class"]==null){g["class"]=e.classList.join(" ");}}return document.newElement(b,g);};if(Browser.Element){Element.prototype=Browser.Element.prototype;
}new Type("Element",Element).mirror(function(a){if(Array.prototype[a]){return;}var b={};b[a]=function(){var h=[],e=arguments,j=true;for(var g=0,d=this.length;
g<d;g++){var f=this[g],c=h[g]=f[a].apply(f,e);j=(j&&typeOf(c)=="element");}return(j)?new Elements(h):h;};Elements.implement(b);});if(!Browser.Element){Element.parent=Object;
Element.Prototype={"$family":Function.from("element").hide()};Element.mirror(function(a,b){Element.Prototype[a]=b;});}Element.Constructors={};Element.Constructors=new Hash;
var IFrame=new Type("IFrame",function(){var e=Array.link(arguments,{properties:Type.isObject,iframe:function(f){return(f!=null);}});var c=e.properties||{},b;
if(e.iframe){b=document.id(e.iframe);}var d=c.onload||function(){};delete c.onload;c.id=c.name=[c.id,c.name,b?(b.id||b.name):"IFrame_"+String.uniqueID()].pick();
b=new Element(b||"iframe",c);var a=function(){d.call(b.contentWindow);};if(window.frames[c.id]){a();}else{b.addListener("load",a);}return b;});var Elements=this.Elements=function(a){if(a&&a.length){var e={},d;
for(var c=0;d=a[c++];){var b=Slick.uidOf(d);if(!e[b]){e[b]=true;this.push(d);}}}};Elements.prototype={length:0};Elements.parent=Array;new Type("Elements",Elements).implement({filter:function(a,b){if(!a){return this;
}return new Elements(Array.filter(this,(typeOf(a)=="string")?function(c){return c.match(a);}:a,b));}.protect(),push:function(){var d=this.length;for(var b=0,a=arguments.length;
b<a;b++){var c=document.id(arguments[b]);if(c){this[d++]=c;}}return(this.length=d);}.protect(),concat:function(){var b=new Elements(this);for(var c=0,a=arguments.length;
c<a;c++){var d=arguments[c];if(Type.isEnumerable(d)){b.append(d);}else{b.push(d);}}return b;}.protect(),append:function(c){for(var b=0,a=c.length;b<a;b++){this.push(c[b]);
}return this;}.protect(),empty:function(){while(this.length){delete this[--this.length];}return this;}.protect()});(function(){var g=Array.prototype.splice,b={"0":0,"1":1,length:2};
g.call(b,1,1);if(b[1]==1){Elements.implement("splice",function(){var e=this.length;g.apply(this,arguments);while(e>=this.length){delete this[e--];}return this;
}.protect());}Elements.implement(Array.prototype);Array.mirror(Elements);var f;try{var a=document.createElement("<input name=x>");f=(a.name=="x");}catch(c){}var d=function(e){return(""+e).replace(/&/g,"&amp;").replace(/"/g,"&quot;");
};Document.implement({newElement:function(e,h){if(h&&h.checked!=null){h.defaultChecked=h.checked;}if(f&&h){e="<"+e;if(h.name){e+=' name="'+d(h.name)+'"';
}if(h.type){e+=' type="'+d(h.type)+'"';}e+=">";delete h.name;delete h.type;}return this.id(this.createElement(e)).set(h);}});})();Document.implement({newTextNode:function(a){return this.createTextNode(a);
},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var a={string:function(d,c,b){d=Slick.find(b,"#"+d.replace(/(\W)/g,"\\$1"));
return(d)?a.element(d,c):null;},element:function(b,c){$uid(b);if(!c&&!b.$family&&!(/^object|embed$/i).test(b.tagName)){Object.append(b,Element.Prototype);
}return b;},object:function(c,d,b){if(c.toElement){return a.element(c.toElement(b),d);}return null;}};a.textnode=a.whitespace=a.window=a.document=function(b){return b;
};return function(c,e,d){if(c&&c.$family&&c.uid){return c;}var b=typeOf(c);return(a[b])?a[b](c,e,d||document):null;};})()});if(window.$==null){Window.implement("$",function(a,b){return document.id(a,b,this.document);
});}Window.implement({getDocument:function(){return this.document;},getWindow:function(){return this;}});[Document,Element].invoke("implement",{getElements:function(a){return Slick.search(this,a,new Elements);
},getElement:function(a){return document.id(Slick.find(this,a));}});(function(b,d,a){this.Selectors={};var e=this.Selectors.Pseudo=new Hash();var c=function(){for(var f in e){if(e.hasOwnProperty(f)){Slick.definePseudo(f,e[f]);
delete e[f];}}};Slick.search=function(g,h,f){c();return b.call(this,g,h,f);};Slick.find=function(f,g){c();return d.call(this,f,g);};Slick.match=function(g,f){c();
return a.call(this,g,f);};})(Slick.search,Slick.find,Slick.match);if(window.$$==null){Window.implement("$$",function(a){var f=new Elements;if(arguments.length==1&&typeof a=="string"){return Slick.search(this.document,a,f);
}var c=Array.flatten(arguments);for(var d=0,b=c.length;d<b;d++){var e=c[d];switch(typeOf(e)){case"element":f.push(e);break;case"string":Slick.search(this.document,e,f);
}}return f;});}if(window.$$==null){Window.implement("$$",function(a){if(arguments.length==1){if(typeof a=="string"){return Slick.search(this.document,a,new Elements);
}else{if(Type.isEnumerable(a)){return new Elements(a);}}}return new Elements(arguments);});}(function(){var j={},h={};var l={input:"checked",option:"selected",textarea:"value"};
var d=function(o){return(h[o]||(h[o]={}));};var i=function(p){if(p.removeEvents){p.removeEvents();}if(p.clearAttributes){p.clearAttributes();}var o=p.uid;
if(o!=null){delete j[o];delete h[o];}return p;};var n=["defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];
var c=["compact","nowrap","ismap","declare","noshade","checked","disabled","readOnly","multiple","selected","noresize","defer"];var f={html:"innerHTML","class":"className","for":"htmlFor",text:(function(){var o=document.createElement("div");
return(o.innerText==null)?"textContent":"innerText";})()};var m=["type"];var g=["value","defaultValue"];var k=/^(?:href|src|usemap)$/i;c=c.associate(c);
n=n.associate(n.map(String.toLowerCase));m=m.associate(m);Object.append(f,g.associate(g));var b={before:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o);
}},after:function(p,o){var q=o.parentNode;if(q){q.insertBefore(p,o.nextSibling);}},bottom:function(p,o){o.appendChild(p);},top:function(p,o){o.insertBefore(p,o.firstChild);
}};b.inside=b.bottom;Object.each(b,function(p,q){q=q.capitalize();var o={};o["inject"+q]=function(r){p(this,document.id(r,true));return this;};o["grab"+q]=function(r){p(document.id(r,true),this);
return this;};Element.implement(o);});var a=function(r,q){if(!r){return q;}r=Slick.parse(r);var p=r.expressions;for(var o=p.length;o--;){p[o][0].combinator=q;
}return r;};Element.implement({set:function(q,p){var o=Element.Properties[q];(o&&o.set)?o.set.call(this,p):this.setProperty(q,p);}.overloadSetter(),get:function(p){var o=Element.Properties[p];
return(o&&o.get)?o.get.apply(this):this.getProperty(p);}.overloadGetter(),erase:function(p){var o=Element.Properties[p];(o&&o.erase)?o.erase.apply(this):this.removeProperty(p);
return this;},setProperty:function(p,q){p=n[p]||p;if(q==null){return this.removeProperty(p);}var o=f[p];(o)?this[o]=q:(c[p])?this[p]=!!q:this.setAttribute(p,""+q);
return this;},setProperties:function(o){for(var p in o){this.setProperty(p,o[p]);}return this;},getProperty:function(p){p=n[p]||p;var o=f[p]||m[p];return(o)?this[o]:(c[p])?!!this[p]:(k.test(p)?this.getAttribute(p,2):(o=this.getAttributeNode(p))?o.nodeValue:null)||null;
},getProperties:function(){var o=Array.from(arguments);return o.map(this.getProperty,this).associate(o);},removeProperty:function(p){p=n[p]||p;var o=f[p];
(o)?this[o]="":(c[p])?this[p]=false:this.removeAttribute(p);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;
},hasClass:function(o){return this.className.clean().contains(o," ");},addClass:function(o){if(!this.hasClass(o)){this.className=(this.className+" "+o).clean();
}return this;},removeClass:function(o){this.className=this.className.replace(new RegExp("(^|\\s)"+o+"(?:\\s|$)"),"$1");return this;},toggleClass:function(o,p){if(p==null){p=!this.hasClass(o);
}return(p)?this.addClass(o):this.removeClass(o);},adopt:function(){var r=this,o,t=Array.flatten(arguments),s=t.length;if(s>1){r=o=document.createDocumentFragment();
}for(var q=0;q<s;q++){var p=document.id(t[q],true);if(p){r.appendChild(p);}}if(o){this.appendChild(o);}return this;},appendText:function(p,o){return this.grab(this.getDocument().newTextNode(p),o);
},grab:function(p,o){b[o||"bottom"](document.id(p,true),this);return this;},inject:function(p,o){b[o||"bottom"](this,document.id(p,true));return this;},replaces:function(o){o=document.id(o,true);
o.parentNode.replaceChild(this,o);return this;},wraps:function(p,o){p=document.id(p,true);return this.replaces(p).grab(p,o);},getPrevious:function(o){return document.id(Slick.find(this,a(o,"!~")));
},getAllPrevious:function(o){return Slick.search(this,a(o,"!~"),new Elements);},getNext:function(o){return document.id(Slick.find(this,a(o,"~")));},getAllNext:function(o){return Slick.search(this,a(o,"~"),new Elements);
},getFirst:function(o){return document.id(Slick.search(this,a(o,">"))[0]);},getLast:function(o){return document.id(Slick.search(this,a(o,">")).getLast());
},getParent:function(o){return document.id(Slick.find(this,a(o,"!")));},getParents:function(o){return Slick.search(this,a(o,"!"),new Elements);},getSiblings:function(o){return Slick.search(this,a(o,"~~"),new Elements);
},getChildren:function(o){return Slick.search(this,a(o,">"),new Elements);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;
},getElementById:function(o){return document.id(Slick.find(this,"#"+(""+o).replace(/(\W)/g,"\\$1")));},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(o){return o.selected;
}));},toQueryString:function(){var o=[];this.getElements("input, select, textarea").each(function(q){var p=q.type;if(!q.name||q.disabled||p=="submit"||p=="reset"||p=="file"||p=="image"){return;
}var r=(q.get("tag")=="select")?q.getSelected().map(function(s){return document.id(s).get("value");}):((p=="radio"||p=="checkbox")&&!q.checked)?null:q.get("value");
Array.from(r).each(function(s){if(typeof s!="undefined"){o.push(encodeURIComponent(q.name)+"="+encodeURIComponent(s));}});});return o.join("&");},clone:function(r,p){r=r!==false;
var w=this.cloneNode(r);var v=function(C,B){if(!p){C.removeAttribute("id");}if(Browser.ie){C.clearAttributes();C.mergeAttributes(B);C.removeAttribute("uid");
if(C.options){var D=C.options,z=B.options;for(var A=D.length;A--;){D[A].selected=z[A].selected;}}}var E=l[B.tagName.toLowerCase()];if(E&&B[E]){C[E]=B[E];
}};var s;if(r){var o=w.getElementsByTagName("*"),q=this.getElementsByTagName("*");for(s=o.length;s--;){v(o[s],q[s]);}}v(w,this);if(Browser.ie){var u=this.getElementsByTagName("object"),t=w.getElementsByTagName("object"),y=u.length,x=t.length;
for(s=0;s<y&&s<x;s++){t[s].outerHTML=u[s].outerHTML;}}return document.id(w);},destroy:function(){var o=i(this).getElementsByTagName("*");Array.each(o,i);
Element.dispose(this);return null;},empty:function(){Array.from(this.childNodes).each(Element.dispose);return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;
},match:function(o){return !o||Slick.match(this,o);}});var e={contains:function(o){return Slick.contains(this,o);}};if(!document.contains){Document.implement(e);
}if(!document.createElement("div").contains){Element.implement(e);}Element.implement("hasChild",function(o){return this!==o&&this.contains(o);});[Element,Window,Document].invoke("implement",{addListener:function(r,q){if(r=="unload"){var o=q,p=this;
q=function(){p.removeListener("unload",q);o();};}else{j[this.uid]=this;}if(this.addEventListener){this.addEventListener(r,q,false);}else{this.attachEvent("on"+r,q);
}return this;},removeListener:function(p,o){if(this.removeEventListener){this.removeEventListener(p,o,false);}else{this.detachEvent("on"+p,o);}return this;
},retrieve:function(p,o){var r=d(this.uid),q=r[p];if(o!=null&&q==null){q=r[p]=o;}return q!=null?q:null;},store:function(p,o){var q=d(this.uid);q[p]=o;return this;
},eliminate:function(o){var p=d(this.uid);delete p[o];return this;}});if(window.attachEvent&&!window.addEventListener){window.addListener("unload",function(){Object.each(j,i);
if(window.CollectGarbage){CollectGarbage();}});}})();Element.Properties={};Element.Properties=new Hash;Element.Properties.style={set:function(a){this.style.cssText=a;
},get:function(){return this.style.cssText;},erase:function(){this.style.cssText="";}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase();
}};(function(a){if(a!=null){Element.Properties.maxlength=Element.Properties.maxLength={get:function(){var b=this.getAttribute("maxLength");return b==a?null:b;
}};}})(document.createElement("input").getAttribute("maxLength"));Element.Properties.html=(function(){var c=Function.attempt(function(){var e=document.createElement("table");
e.innerHTML="<tr><td></td></tr>";});var d=document.createElement("div");var a={table:[1,"<table>","</table>"],select:[1,"<select>","</select>"],tbody:[2,"<table><tbody>","</tbody></table>"],tr:[3,"<table><tbody><tr>","</tr></tbody></table>"]};
a.thead=a.tfoot=a.tbody;var b={set:function(){var f=Array.flatten(arguments).join("");var g=(!c&&a[this.get("tag")]);if(g){var h=d;h.innerHTML=g[1]+f+g[2];
for(var e=g[0];e--;){h=h.firstChild;}this.empty().adopt(h.childNodes);}else{this.innerHTML=f;}}};b.erase=b.set;return b;})();(function(){var c=document.html;
Element.Properties.styles={set:function(f){this.setStyles(f);}};var e=(c.style.opacity!=null);var d=/alpha\(opacity=([\d.]+)\)/i;var b=function(g,f){if(!g.currentStyle||!g.currentStyle.hasLayout){g.style.zoom=1;
}if(e){g.style.opacity=f;}else{f=(f==1)?"":"alpha(opacity="+f*100+")";var h=g.style.filter||g.getComputedStyle("filter")||"";g.style.filter=h.test(d)?h.replace(d,f):h+f;
}};Element.Properties.opacity={set:function(g){var f=this.style.visibility;if(g==0&&f!="hidden"){this.style.visibility="hidden";}else{if(g!=0&&f!="visible"){this.style.visibility="visible";
}}b(this,g);},get:(e)?function(){var f=this.style.opacity||this.getComputedStyle("opacity");return(f=="")?1:f;}:function(){var f,g=(this.style.filter||this.getComputedStyle("filter"));
if(g){f=g.match(d);}return(f==null||g==null)?1:(f[1]/100);}};var a=(c.style.cssFloat==null)?"styleFloat":"cssFloat";Element.implement({getComputedStyle:function(h){if(this.currentStyle){return this.currentStyle[h.camelCase()];
}var g=Element.getDocument(this).defaultView,f=g?g.getComputedStyle(this,null):null;return(f)?f.getPropertyValue((h==a)?"float":h.hyphenate()):null;},setOpacity:function(f){b(this,f);
return this;},getOpacity:function(){return this.get("opacity");},setStyle:function(g,f){switch(g){case"opacity":return this.set("opacity",parseFloat(f));
case"float":g=a;}g=g.camelCase();if(typeOf(f)!="string"){var h=(Element.Styles[g]||"@").split(" ");f=Array.from(f).map(function(k,j){if(!h[j]){return"";
}return(typeOf(k)=="number")?h[j].replace("@",Math.round(k)):k;}).join(" ");}else{if(f==String(Number(f))){f=Math.round(f);}}this.style[g]=f;return this;
},getStyle:function(l){switch(l){case"opacity":return this.get("opacity");case"float":l=a;}l=l.camelCase();var f=this.style[l];if(!f||l=="zIndex"){f=[];
for(var k in Element.ShortStyles){if(l!=k){continue;}for(var j in Element.ShortStyles[k]){f.push(this.getStyle(j));}return f.join(" ");}f=this.getComputedStyle(l);
}if(f){f=String(f);var h=f.match(/rgba?\([\d\s,]+\)/);if(h){f=f.replace(h[0],h[0].rgbToHex());}}if(Browser.opera||(Browser.ie&&isNaN(parseFloat(f)))){if(l.test(/^(height|width)$/)){var g=(l=="width")?["left","right"]:["top","bottom"],i=0;
g.each(function(m){i+=this.getStyle("border-"+m+"-width").toInt()+this.getStyle("padding-"+m).toInt();},this);return this["offset"+l.capitalize()]-i+"px";
}if(Browser.opera&&String(f).indexOf("px")!=-1){return f;}if(l.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return f;},setStyles:function(g){for(var f in g){this.setStyle(f,g[f]);
}return this;},getStyles:function(){var f={};Array.flatten(arguments).each(function(g){f[g]=this.getStyle(g);},this);return f;}});Element.Styles={left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"};
Element.Styles=new Hash(Element.Styles);Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(l){var k=Element.ShortStyles;
var g=Element.Styles;["margin","padding"].each(function(m){var n=m+l;k[m][n]=g[n]="@px";});var j="border"+l;k.border[j]=g[j]="@px @ rgb(@, @, @)";var i=j+"Width",f=j+"Style",h=j+"Color";
k[j]={};k.borderWidth[i]=k[j][i]=g[i]="@px";k.borderStyle[f]=k[j][f]=g[f]="@";k.borderColor[h]=k[j][h]=g[h]="rgb(@, @, @)";});})();(function(){Element.Properties.events={set:function(c){this.addEvents(c);
}};[Element,Window,Document].invoke("implement",{addEvent:function(g,i){var j=this.retrieve("events",{});if(!j[g]){j[g]={keys:[],values:[]};}if(j[g].keys.contains(i)){return this;
}j[g].keys.push(i);var h=g,c=Element.Events[g],e=i,k=this;if(c){if(c.onAdd){c.onAdd.call(this,i);}if(c.condition){e=function(l){if(c.condition.call(this,l)){return i.call(this,l);
}return true;};}h=c.base||h;}var f=function(){return i.call(k);};var d=Element.NativeEvents[h];if(d){if(d==2){f=function(l){l=new Event(l,k.getWindow());
if(e.call(k,l)===false){l.stop();}};}this.addListener(h,f);}j[g].values.push(f);return this;},removeEvent:function(f,e){var d=this.retrieve("events");if(!d||!d[f]){return this;
}var i=d[f];var c=i.keys.indexOf(e);if(c==-1){return this;}var h=i.values[c];delete i.keys[c];delete i.values[c];var g=Element.Events[f];if(g){if(g.onRemove){g.onRemove.call(this,e);
}f=g.base||f;}return(Element.NativeEvents[f])?this.removeListener(f,h):this;},addEvents:function(c){for(var d in c){this.addEvent(d,c[d]);}return this;
},removeEvents:function(c){var e;if(typeOf(c)=="object"){for(e in c){this.removeEvent(e,c[e]);}return this;}var d=this.retrieve("events");if(!d){return this;
}if(!c){for(e in d){this.removeEvents(e);}this.eliminate("events");}else{if(d[c]){d[c].keys.each(function(f){this.removeEvent(c,f);},this);delete d[c];
}}return this;},fireEvent:function(f,d,c){var e=this.retrieve("events");if(!e||!e[f]){return this;}d=Array.from(d);e[f].keys.each(function(g){if(c){g.delay(c,this,d);
}else{g.apply(this,d);}},this);return this;},cloneEvents:function(f,e){f=document.id(f);var d=f.retrieve("events");if(!d){return this;}if(!e){for(var c in d){this.cloneEvents(f,c);
}}else{if(d[e]){d[e].keys.each(function(g){this.addEvent(e,g);},this);}}return this;}});try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent;
}}catch(b){}Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};
var a=function(c){var d=c.relatedTarget;if(d==null){return true;}if(!d){return false;}return(d!=this&&d.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(d));
};Element.Events={mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}};
Element.Events=new Hash(Element.Events);})();(function(){Element.implement({scrollTo:function(h,i){if(b(this)){this.getWindow().scrollTo(h,i);}else{this.scrollLeft=h;
this.scrollTop=i;}return this;},getSize:function(){if(b(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(b(this)){return this.getWindow().getScrollSize();
}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(b(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};
},getScrolls:function(){var i=this.parentNode,h={x:0,y:0};while(i&&!b(i)){h.x+=i.scrollLeft;h.y+=i.scrollTop;i=i.parentNode;}return h;},getOffsetParent:function(){var h=this;
if(b(h)){return null;}if(!Browser.ie){return h.offsetParent;}while((h=h.parentNode)){if(d(h,"position")!="static"||b(h)){return h;}}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var m=this.getBoundingClientRect(),j=document.id(this.getDocument().documentElement),l=j.getScroll(),o=this.getScrolls(),n=(d(this,"position")=="fixed");
return{x:m.left.toInt()+o.x+((n)?0:l.x)-j.clientLeft,y:m.top.toInt()+o.y+((n)?0:l.y)-j.clientTop};}var i=this,h={x:0,y:0};if(b(this)){return h;}while(i&&!b(i)){h.x+=i.offsetLeft;
h.y+=i.offsetTop;if(Browser.firefox){if(!f(i)){h.x+=c(i);h.y+=g(i);}var k=i.parentNode;if(k&&d(k,"overflow")!="visible"){h.x+=c(k);h.y+=g(k);}}else{if(i!=this&&Browser.safari){h.x+=c(i);
h.y+=g(i);}}i=i.offsetParent;}if(Browser.firefox&&!f(this)){h.x-=c(this);h.y-=g(this);}return h;},getPosition:function(k){if(b(this)){return{x:0,y:0};}var l=this.getOffsets(),i=this.getScrolls();
var h={x:l.x-i.x,y:l.y-i.y};if(k&&(k=document.id(k))){var j=k.getPosition();return{x:h.x-j.x-c(k),y:h.y-j.y-g(k)};}return h;},getCoordinates:function(j){if(b(this)){return this.getWindow().getCoordinates();
}var h=this.getPosition(j),i=this.getSize();var k={left:h.x,top:h.y,width:i.x,height:i.y};k.right=k.left+k.width;k.bottom=k.top+k.height;return k;},computePosition:function(h){return{left:h.x-e(this,"margin-left"),top:h.y-e(this,"margin-top")};
},setPosition:function(h){return this.setStyles(this.computePosition(h));}});[Document,Window].invoke("implement",{getSize:function(){var h=a(this);return{x:h.clientWidth,y:h.clientHeight};
},getScroll:function(){var i=this.getWindow(),h=a(this);return{x:i.pageXOffset||h.scrollLeft,y:i.pageYOffset||h.scrollTop};},getScrollSize:function(){var j=a(this),i=this.getSize(),h=this.getDocument().body;
return{x:Math.max(j.scrollWidth,h.scrollWidth,i.x),y:Math.max(j.scrollHeight,h.scrollHeight,i.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var h=this.getSize();
return{top:0,left:0,bottom:h.y,right:h.x,height:h.y,width:h.x};}});var d=Element.getComputedStyle;function e(h,i){return d(h,i).toInt()||0;}function f(h){return d(h,"-moz-box-sizing")=="border-box";
}function g(h){return e(h,"border-top-width");}function c(h){return e(h,"border-left-width");}function b(h){return(/^(?:body|html)$/i).test(h.tagName);
}function a(h){var i=h.getDocument();return(!i.compatMode||i.compatMode=="CSS1Compat")?i.html:i.body;}})();Element.alias({position:"setPosition"});[Window,Document,Element].invoke("implement",{getHeight:function(){return this.getSize().y;
},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;
},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;
},getLeft:function(){return this.getPosition().x;}});(function(){var e=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(g){this.subject=this.subject||this;
this.setOptions(g);},getTransition:function(){return function(g){return -(Math.cos(Math.PI*g)-1)/2;};},step:function(){var g=Date.now();if(g<this.time+this.options.duration){var h=this.transition((g-this.time)/this.options.duration);
this.set(this.compute(this.from,this.to,h));}else{this.set(this.compute(this.from,this.to,1));this.complete();}},set:function(g){return g;},compute:function(i,h,g){return e.compute(i,h,g);
},check:function(){if(!this.timer){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));
return false;}return false;},start:function(i,h){if(!this.check(i,h)){return this;}var g=this.options.duration;this.options.duration=e.Durations[g]||g.toInt();
this.from=i;this.to=h;this.time=0;this.transition=this.getTransition();this.startTimer();this.onStart();return this;},complete:function(){if(this.stopTimer()){this.onComplete();
}return this;},cancel:function(){if(this.stopTimer()){this.onCancel();}return this;},onStart:function(){this.fireEvent("start",this.subject);},onComplete:function(){this.fireEvent("complete",this.subject);
if(!this.callChain()){this.fireEvent("chainComplete",this.subject);}},onCancel:function(){this.fireEvent("cancel",this.subject).clearChain();},pause:function(){this.stopTimer();
return this;},resume:function(){this.startTimer();return this;},stopTimer:function(){if(!this.timer){return false;}this.time=Date.now()-this.time;this.timer=f(this);
return true;},startTimer:function(){if(this.timer){return false;}this.time=Date.now()-this.time;this.timer=b(this);return true;}});e.compute=function(i,h,g){return(h-i)*g+i;
};e.Durations={"short":250,normal:500,"long":1000};var d={},c={};var a=function(){for(var g=this.length;g--;){if(this[g]){this[g].step();}}};var b=function(g){var i=g.options.fps,h=d[i]||(d[i]=[]);
h.push(g);if(!c[i]){c[i]=a.periodical(Math.round(1000/i),h);}return true;};var f=function(g){var i=g.options.fps,h=d[i]||[];h.erase(g);if(!h.length&&c[i]){c[i]=clearInterval(c[i]);
}return false;};})();Fx.CSS=new Class({Extends:Fx,prepare:function(c,d,b){b=Array.from(b);if(b[1]==null){b[1]=b[0];b[0]=c.getStyle(d);}var a=b.map(this.parse);
return{from:a[0],to:a[1]};},parse:function(a){a=Function.from(a)();a=(typeof a=="string")?a.split(" "):Array.from(a);return a.map(function(c){c=String(c);
var b=false;Object.each(Fx.CSS.Parsers,function(f,e){if(b){return;}var d=f.parse(c);if(d||d===0){b={value:d,parser:f};}});b=b||{value:c,parser:Fx.CSS.Parsers.String};
return b;});},compute:function(d,c,b){var a=[];(Math.min(d.length,c.length)).times(function(e){a.push({value:d[e].parser.compute(d[e].value,c[e].value,b),parser:d[e].parser});
});a.$family=Function.from("fx:css:value");return a;},serve:function(c,b){if(typeOf(c)!="fx:css:value"){c=this.parse(c);}var a=[];c.each(function(d){a=a.concat(d.parser.serve(d.value,b));
});return a;},render:function(a,d,c,b){a.setStyle(d,this.serve(c,b));},search:function(a){if(Fx.CSS.Cache[a]){return Fx.CSS.Cache[a];}var b={};Array.each(document.styleSheets,function(e,d){var c=e.href;
if(c&&c.contains("://")&&!c.contains(document.domain)){return;}var f=e.rules||e.cssRules;Array.each(f,function(j,g){if(!j.style){return;}var h=(j.selectorText)?j.selectorText.replace(/^\w+/,function(i){return i.toLowerCase();
}):null;if(!h||!h.test("^"+a+"$")){return;}Element.Styles.each(function(k,i){if(!j.style[i]||Element.ShortStyles[i]){return;}k=String(j.style[i]);b[i]=(k.test(/^rgb/))?k.rgbToHex():k;
});});});return Fx.CSS.Cache[a]=b;}});Fx.CSS.Cache={};Fx.CSS.Parsers={Color:{parse:function(a){if(a.match(/^#[0-9a-f]{3,6}$/i)){return a.hexToRgb(true);
}return((a=a.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[a[1],a[2],a[3]]:false;},compute:function(c,b,a){return c.map(function(e,d){return Math.round(Fx.compute(c[d],b[d],a));
});},serve:function(a){return a.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(b,a){return(a)?b+a:b;}},String:{parse:Function.from(false),compute:function(b,a){return a;
},serve:function(a){return a;}}};Fx.CSS.Parsers=new Hash(Fx.CSS.Parsers);Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);
this.parent(a);},set:function(b,a){if(arguments.length==1){a=b;b=this.property||this.options.property;}this.render(this.element,b,a,this.options.unit);
return this;},start:function(c,e,d){if(!this.check(c,e,d)){return this;}var b=Array.flatten(arguments);this.property=this.options.property||b.shift();var a=this.prepare(this.element,this.property,b);
return this.parent(a.from,a.to);}});Element.Properties.tween={set:function(a){this.get("tween").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("tween");
if(!a){a=new Fx.Tween(this,{link:"cancel"});this.store("tween",a);}return a;}};Element.implement({tween:function(a,c,b){this.get("tween").start(arguments);
return this;},fade:function(c){var e=this.get("tween"),d="opacity",a;c=[c,"toggle"].pick();switch(c){case"in":e.start(d,1);break;case"out":e.start(d,0);
break;case"show":e.set(d,1);break;case"hide":e.set(d,0);break;case"toggle":var b=this.retrieve("fade:flag",this.get("opacity")==1);e.start(d,(b)?0:1);this.store("fade:flag",!b);
a=true;break;default:e.start(d,arguments);}if(!a){this.eliminate("fade:flag");}return this;},highlight:function(c,a){if(!a){a=this.retrieve("highlight:original",this.getStyle("background-color"));
a=(a=="transparent")?"#fff":a;}var b=this.get("tween");b.start("background-color",c||"#ffff88",a).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original"));
b.callChain();}.bind(this));return this;}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);this.parent(a);
},set:function(a){if(typeof a=="string"){a=this.search(a);}for(var b in a){this.render(this.element,b,a[b],this.options.unit);}return this;},compute:function(e,d,c){var a={};
for(var b in e){a[b]=this.parent(e[b],d[b],c);}return a;},start:function(b){if(!this.check(b)){return this;}if(typeof b=="string"){b=this.search(b);}var e={},d={};
for(var c in b){var a=this.prepare(this.element,c,b[c]);e[c]=a.from;d[c]=a.to;}return this.parent(e,d);}});Element.Properties.morph={set:function(a){this.get("morph").cancel().setOptions(a);
return this;},get:function(){var a=this.retrieve("morph");if(!a){a=new Fx.Morph(this,{link:"cancel"});this.store("morph",a);}return a;}};Element.implement({morph:function(a){this.get("morph").start(a);
return this;}});Fx.implement({getTransition:function(){var a=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof a=="string"){var b=a.split(":");
a=Fx.Transitions;a=a[b[0]]||a[b[0].capitalize()];if(b[1]){a=a["ease"+b[1].capitalize()+(b[2]?b[2].capitalize():"")];}}return a;}});Fx.Transition=function(b,a){a=Array.from(a);
return Object.append(b,{easeIn:function(c){return b(c,a);},easeOut:function(c){return 1-b(1-c,a);},easeInOut:function(c){return(c<=0.5)?b(2*c,a)/2:(2-b(2*(1-c),a))/2;
}});};Fx.Transitions={linear:function(a){return a;}};Fx.Transitions=new Hash(Fx.Transitions);Fx.Transitions.extend=function(a){for(var b in a){Fx.Transitions[b]=new Fx.Transition(a[b]);
}};Fx.Transitions.extend({Pow:function(b,a){return Math.pow(b,a&&a[0]||6);},Expo:function(a){return Math.pow(2,8*(a-1));},Circ:function(a){return 1-Math.sin(Math.acos(a));
},Sine:function(a){return 1-Math.sin((1-a)*Math.PI/2);},Back:function(b,a){a=a&&a[0]||1.618;return Math.pow(b,2)*((a+1)*b-a);},Bounce:function(f){var e;
for(var d=0,c=1;1;d+=c,c/=2){if(f>=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2);break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a&&a[0]||1)/3);
}});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,[a+2]);});});(function(){var a=("onprogress" in new Browser.Request);
var c=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(d){this.xhr=new Browser.Request();
this.setOptions(d);this.headers=this.options.headers;},onStateChange:function(){var d=this.xhr;if(d.readyState!=4||!this.running){return;}this.running=false;
this.status=0;Function.attempt(function(){var e=d.status;this.status=(e==1223)?204:e;}.bind(this));d.onreadystatechange=function(){};clearTimeout(this.timer);
this.response={text:this.xhr.responseText||"",xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status)){this.success(this.response.text,this.response.xml);
}else{this.failure();}},isSuccess:function(){var d=this.status;return(d>=200&&d<300);},isRunning:function(){return !!this.running;},processScripts:function(d){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(d);
}return d.stripScripts(this.options.evalScripts);},success:function(e,d){this.onSuccess(this.processScripts(e),d);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain();
},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},loadstart:function(d){this.fireEvent("loadstart",[d,this.xhr]);
},progress:function(d){this.fireEvent("progress",[d,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(d,e){this.headers[d]=e;
return this;},getHeader:function(d){return Function.attempt(function(){return this.xhr.getResponseHeader(d);}.bind(this));},check:function(){if(!this.running){return true;
}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.pass(arguments,this));return false;}return false;},send:function(n){if(!this.check(n)){return this;
}this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var k=typeOf(n);if(k=="string"||k=="element"){n={data:n};}var g=this.options;
n=Object.append({data:g.data,url:g.url,method:g.method},n);var i=n.data,e=String(n.url),d=n.method.toLowerCase();switch(typeOf(i)){case"element":i=document.id(i).toQueryString();
break;case"object":case"hash":i=Object.toQueryString(i);}if(this.options.format){var l="format="+this.options.format;i=(i)?l+"&"+i:l;}if(this.options.emulation&&!["get","post"].contains(d)){var j="_method="+d;
i=(i)?j+"&"+i:j;d="post";}if(this.options.urlEncoded&&["post","put"].contains(d)){var f=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+f;
}if(!e){e=document.location.pathname;}var h=e.lastIndexOf("/");if(h>-1&&(h=e.indexOf("#"))>-1){e=e.substr(0,h);}if(this.options.noCache){e+=(e.contains("?")?"&":"?")+String.uniqueID();
}if(i&&d=="get"){e+=(e.contains("?")?"&":"?")+i;i=null;}var m=this.xhr;if(a){m.onloadstart=this.loadstart.bind(this);m.onprogress=this.progress.bind(this);
}m.open(d.toUpperCase(),e,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in m){m.withCredentials=true;
}m.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(p,o){try{m.setRequestHeader(o,p);}catch(q){this.fireEvent("exception",[o,p]);
}},this);this.fireEvent("request");m.send(i);if(!this.options.async){this.onStateChange();}if(this.options.timeout){this.timer=this.timeout.delay(this.options.timeout,this);
}return this;},cancel:function(){if(!this.running){return this;}this.running=false;var d=this.xhr;d.abort();clearTimeout(this.timer);d.onreadystatechange=d.onprogress=d.onloadstart=function(){};
this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(d){b[d]=function(e){return this.send({data:e,method:d});
};});c.implement(b);Element.Properties.send={set:function(d){var e=this.get("send").cancel();e.setOptions(d);return this;},get:function(){var d=this.retrieve("send");
if(!d){d=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")});this.store("send",d);}return d;}};Element.implement({send:function(d){var e=this.get("send");
e.send({data:this,url:d||e.options.url});return this;}});})();Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:"text/html, application/xml, text/xml, */*"}},success:function(e){var d=this.options,b=this.response;
b.html=e.stripScripts(function(f){b.javascript=f;});var c=b.html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);if(c){b.html=c[1];}var a=new Element("div").set("html",b.html);
b.tree=a.childNodes;b.elements=a.getElements("*");if(d.filter){b.tree=b.elements.filter(d.filter);}if(d.update){document.id(d.update).empty().set("html",b.html);
}else{if(d.append){document.id(d.append).adopt(a.getChildren());}}if(d.evalScripts){Browser.exec(b.javascript);}this.onSuccess(b.tree,b.elements,b.html,b.javascript);
}});Element.Properties.load={set:function(a){var b=this.get("load").cancel();b.setOptions(a);return this;},get:function(){var a=this.retrieve("load");if(!a){a=new Request.HTML({data:this,link:"cancel",update:this,method:"get"});
this.store("load",a);}return a;}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Type.isObject,url:Type.isString}));
return this;}});if(!this.JSON){this.JSON={};}JSON=new Hash({stringify:JSON.stringify,parse:JSON.parse});Object.append(JSON,{$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(a){return JSON.$specialChars[a]||"\\u00"+Math.floor(a.charCodeAt()/16).toString(16)+(a.charCodeAt()%16).toString(16);
},encode:function(b){switch(typeOf(b)){case"string":return'"'+b.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(b.map(JSON.encode).clean())+"]";
case"object":case"hash":var a=[];Object.each(b,function(e,d){var c=JSON.encode(e);if(c){a.push(JSON.encode(d)+":"+c);}});return"{"+a+"}";case"number":case"boolean":return String(b);
case"null":return"null";}return null;},decode:function(string,secure){if(typeOf(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null;
}return eval("("+string+")");}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);Object.append(this.headers,{Accept:"application/json","X-Request":"JSON"});
},success:function(c){var b=this.options.secure;var a=this.response.json=Function.attempt(function(){return JSON.decode(c,b);});if(a==null){this.onFailure();
}else{this.onSuccess(a,c);}}});var Cookie=new Class({Implements:Options,options:{path:"/",domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(b,a){this.key=b;
this.setOptions(a);},write:function(b){if(this.options.encode){b=encodeURIComponent(b);}if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path;
}if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure";
}this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)");
return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write("");return this;}});
Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose();
};(function(j,l){var m,g,f=[],c,b,n=true;try{n=j.frameElement!=null;}catch(i){}var h=function(){clearTimeout(b);if(m){return;}Browser.loaded=m=true;l.removeListener("DOMContentLoaded",h).removeListener("readystatechange",a);
l.fireEvent("domready");j.fireEvent("domready");};var a=function(){for(var e=f.length;e--;){if(f[e]()){h();return true;}}return false;};var k=function(){clearTimeout(b);
if(!a()){b=setTimeout(k,10);}};l.addListener("DOMContentLoaded",h);var d=l.createElement("div");if(d.doScroll&&!n){f.push(function(){try{d.doScroll();return true;
}catch(o){}return false;});c=true;}if(l.readyState){f.push(function(){var e=l.readyState;return(e=="loaded"||e=="complete");});}if("onreadystatechange" in l){l.addListener("readystatechange",a);
}else{c=true;}if(c){k();}Element.Events.domready={onAdd:function(e){if(m){e.call(this);}}};Element.Events.load={base:"load",onAdd:function(e){if(g&&this==j){e.call(this);
}},condition:function(){if(this==j){h();delete Element.Events.load;}return true;}};j.addEvent("load",function(){g=true;});})(window,document);(function(){var id=0;
var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"window",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;
},initialize:function(path,options){this.instance="Swiff_"+id++;this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;
var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;
var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments);
};})(callBacks[callBack]);vars[callBack]="Swiff.CallBacks."+this.instance+"."+callBack;}params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
params.movie=path;}else{properties.type="application/x-shockwave-flash";}properties.data=path;var build='<object id="'+id+'"';for(var property in properties){build+=" "+property+'="'+properties[property]+'"';
}build+=">";for(var param in params){if(params[param]){build+='<param name="'+param+'" value="'+params[param]+'" />';}}build+="</object>";this.object=((container)?container.empty():new Element("div")).set("html",build).firstChild;
},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement());
return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>");
return eval(rs);};})();
// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more/7744574c7e2b6993f4fe767f958fb26f 
// Or build this file again with packager using: packager build More/Date.Extras More/Form.Validator.Inline More/Form.Validator.Extras More/OverText More/Fx.Accordion More/Fx.Scroll More/Locale More/Locale.Set.From More/Locale.en-US.Date More/Locale.en-US.Form.Validator More/Locale.en-GB.Date
/*
---
copyrights:
  - [MooTools](http://mootools.net)

licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
MooTools.More={version:"1.3.0.1",build:"6dce99bed2792dffcbbbb4ddc15a1fb9a41994b5"};(function(){var a=function(b){return b!=null;};Object.extend({getFromPath:function(e,d){var f=d.split(".");
for(var c=0,b=f.length;c<b;c++){if(e.hasOwnProperty(f[c])){e=e[f[c]];}else{return null;}}return e;},cleanValues:function(b,c){c=c||a;for(key in b){if(!c(b[key])){delete b[key];
}}return b;},erase:function(b,c){if(b.hasOwnProperty(c)){delete b[c];}return b;},run:function(c){var b=Array.slice(arguments,1);for(key in c){if(c[key].apply){c[key].apply(c,b);
}}return c;}});})();(function(){var b=null,a={},e={};var d=function(g){if(instanceOf(g,f.Set)){return g;}else{return a[g];}};var f=this.Locale={define:function(g,k,i,j){var h;
if(instanceOf(g,f.Set)){h=g.name;if(h){a[h]=g;}}else{h=g;if(!a[h]){a[h]=new f.Set(h);}g=a[h];}if(k){g.define(k,i,j);}if(k=="cascade"){return f.inherit(h,i);
}if(!b){b=g;}return g;},use:function(g){g=d(g);if(g){b=g;this.fireEvent("change",g);this.fireEvent("langChange",g.name);}return this;},getCurrent:function(){return b;
},get:function(h,g){return(b)?b.get(h,g):"";},inherit:function(g,h,i){g=d(g);if(g){g.inherit(h,i);}return this;},list:function(){return Object.keys(a);
}};Object.append(f,new Events);f.Set=new Class({sets:{},inherits:{locales:[],sets:{}},initialize:function(g){this.name=g||"";},define:function(j,h,i){var g=this.sets[j];
if(!g){g={};}if(h){if(typeOf(h)=="object"){g=Object.merge(g,h);}else{g[h]=i;}}this.sets[j]=g;return this;},get:function(s,k,r){var q=Object.getFromPath(this.sets,s);
if(q!=null){var n=typeOf(q);if(n=="function"){q=q.apply(null,Array.from(k));}else{if(n=="object"){q=Object.clone(q);}}return q;}var j=s.indexOf("."),p=j<0?s:s.substr(0,j),m=(this.inherits.sets[p]||[]).combine(this.inherits.locales).include("en-US");
if(!r){r=[];}for(var h=0,g=m.length;h<g;h++){if(r.contains(m[h])){continue;}r.include(m[h]);var o=a[m[h]];if(!o){continue;}q=o.get(s,k,r);if(q!=null){return q;
}}return"";},inherit:function(h,i){h=Array.from(h);if(i&&!this.inherits.sets[i]){this.inherits.sets[i]=[];}var g=h.length;while(g--){(i?this.inherits.sets[i]:this.inherits.locales).unshift(h[g]);
}return this;}});var c=MooTools.lang={};Object.append(c,f,{setLanguage:f.use,getCurrentLanguage:function(){var g=f.getCurrent();return(g)?g.name:null;},set:function(){f.define.apply(this,arguments);
return this;},get:function(i,h,g){if(h){i+="."+h;}return f.get(i,g);}});})();Locale.define("en-US","Date",{months:["January","February","March","April","May","June","July","August","September","October","November","December"],months_abbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],days_abbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dateOrder:["month","date","year"],shortDate:"%m/%d/%Y",shortTime:"%I:%M%p",AM:"AM",PM:"PM",ordinal:function(a){return(a>3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)];
},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});
(function(){var i=this.Date;i.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(p){i.Methods[p.toLowerCase()]=p;
});var d=function(r,q,p){if(!p){p="0";}return new Array(q-String(r).length+1).join(p)+r;};i.implement({set:function(r,q){r=r.toLowerCase();var p=i.Methods;
if(p[r]){this["set"+p[r]](q);}return this;}.overloadSetter(),get:function(q){q=q.toLowerCase();var p=i.Methods;if(p[q]){return this["get"+p[q]]();}return null;
},clone:function(){return new i(this.get("time"));},increment:function(p,r){p=p||"day";r=r!=null?r:1;switch(p){case"year":return this.increment("month",r*12);
case"month":var q=this.get("date");this.set("date",1).set("mo",this.get("mo")+r);return this.set("date",q.min(this.get("lastdayofmonth")));case"week":return this.increment("day",r*7);
case"day":return this.set("date",this.get("date")+r);}if(!i.units[p]){throw new Error(p+" is not a supported interval");}return this.set("time",this.get("time")+r*i.units[p]());
},decrement:function(p,q){return this.increment(p,-1*(q!=null?q:1));},isLeapYear:function(){return i.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});
},diff:function(q,p){if(typeOf(q)=="string"){q=i.parse(q);}return((q-this)/i.units[p||"day"](3,3)).round();},getLastDayOfMonth:function(){return i.daysInMonth(this.get("mo"),this.get("year"));
},getDayOfYear:function(){return(i.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-i.UTC(this.get("year"),0,1))/i.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil();
},getOrdinal:function(p){return i.getMsg("ordinal",p||this.get("date"));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");
},getGMTOffset:function(){var p=this.get("timezoneOffset");return((p>0)?"-":"+")+d((p.abs()/60).floor(),2)+d(p%60,2);},setAMPM:function(p){p=p.toUpperCase();
var q=this.get("hr");if(q>11&&p=="AM"){return this.decrement("hour",12);}else{if(q<12&&p=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";
},parse:function(p){this.set("time",i.parse(p));return this;},isValid:function(p){return !isNaN((p||this).valueOf());},format:function(p){if(!this.isValid()){return"invalid date";
}p=p||"%x %X";p=k[p.toLowerCase()]||p;var q=this;return p.replace(/%([a-z%])/gi,function(s,r){switch(r){case"a":return i.getMsg("days_abbr")[q.get("day")];
case"A":return i.getMsg("days")[q.get("day")];case"b":return i.getMsg("months_abbr")[q.get("month")];case"B":return i.getMsg("months")[q.get("month")];
case"c":return q.format("%a %b %d %H:%m:%S %Y");case"d":return d(q.get("date"),2);case"e":return d(q.get("date"),2," ");case"H":return d(q.get("hr"),2);
case"I":return d((q.get("hr")%12)||12,2);case"j":return d(q.get("dayofyear"),3);case"k":return d(q.get("hr"),2," ");case"l":return d((q.get("hr")%12)||12,2," ");
case"L":return d(q.get("ms"),3);case"m":return d((q.get("mo")+1),2);case"M":return d(q.get("min"),2);case"o":return q.get("ordinal");case"p":return i.getMsg(q.get("ampm"));
case"s":return Math.round(q/1000);case"S":return d(q.get("seconds"),2);case"U":return d(q.get("week"),2);case"w":return q.get("day");case"x":return q.format(i.getMsg("shortDate"));
case"X":return q.format(i.getMsg("shortTime"));case"y":return q.get("year").toString().substr(2);case"Y":return q.get("year");case"T":return q.get("GMTOffset");
case"z":return q.get("GMTOffset");case"Z":return q.get("Timezone");}return r;});},toISOString:function(){return this.format("iso8601");}});i.alias("toJSON","toISOString");
i.alias("compare","diff");i.alias("strftime","format");var k={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S",iso8601:"%Y-%m-%dT%H:%M:%S%T",rfc822:"%a, %d %b %Y %H:%M:%S %Z","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};
var g=[];var e=i.parse;var n=function(s,u,r){var q=-1;var t=i.getMsg(s+"s");switch(typeOf(u)){case"object":q=t[u.get(s)];break;case"number":q=t[u];if(!q){throw new Error("Invalid "+s+" index: "+u);
}break;case"string":var p=t.filter(function(v){return this.test(v);},new RegExp("^"+u,"i"));if(!p.length){throw new Error("Invalid "+s+" string");}if(p.length>1){throw new Error("Ambiguous "+s);
}q=p[0];}return(r)?t.indexOf(q):q;};i.extend({getMsg:function(q,p){return Locale.get("Date."+q,p);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(q,p){var r=new i;
return i.daysInMonth(q!=null?q:r.get("mo"),p!=null?p:r.get("year"))*86400000;},year:function(p){p=p||new i().get("year");return i.isLeapYear(p)?31622400000:31536000000;
}},daysInMonth:function(q,p){return[31,i.isLeapYear(p)?29:28,31,30,31,30,31,31,30,31,30,31][q];},isLeapYear:function(p){return((p%4===0)&&(p%100!==0))||(p%400===0);
},parse:function(r){var q=typeOf(r);if(q=="number"){return new i(r);}if(q!="string"){return r;}r=r.clean();if(!r.length){return null;}var p;g.some(function(t){var s=t.re.exec(r);
return(s)?(p=t.handler(s)):false;});return p||new i(e(r));},parseDay:function(p,q){return n("day",p,q);},parseMonth:function(q,p){return n("month",q,p);
},parseUTC:function(q){var p=new i(q);var r=i.UTC(p.get("year"),p.get("mo"),p.get("date"),p.get("hr"),p.get("min"),p.get("sec"),p.get("ms"));return new i(r);
},orderIndex:function(p){return i.getMsg("dateOrder").indexOf(p)+1;},defineFormat:function(p,q){k[p]=q;},defineFormats:function(p){for(var q in p){i.defineFormat(q,p[q]);
}},parsePatterns:g,defineParser:function(p){g.push((p.re&&p.handler)?p:l(p));},defineParsers:function(){Array.flatten(arguments).each(i.defineParser);},define2DigitYearStart:function(p){h=p%100;
m=p-h;}});var m=1900;var h=70;var j=function(p){return new RegExp("(?:"+i.getMsg(p).map(function(q){return q.substr(0,3);}).join("|")+")[a-z]*");};var a=function(p){switch(p){case"x":return((i.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?";
case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var o={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};
o.m=o.I;o.S=o.M;var c;var b=function(p){c=p;o.a=o.A=j("days");o.b=o.B=j("months");g.each(function(r,q){if(r.format){g[q]=l(r.format);}});};var l=function(r){if(!c){return{format:r};
}var p=[];var q=(r.source||r).replace(/%([a-z])/gi,function(t,s){return a(s)||t;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(t,s){var u=o[s];
if(!u){return s;}p.push(s);return"("+u.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:r,re:new RegExp("^"+q+"$","i"),handler:function(v){v=v.slice(1).associate(p);
var s=new i().clearTime(),u=v.y||v.Y;if(u!=null){f.call(s,"y",u);}if("d" in v){f.call(s,"d",1);}if("m" in v||"b" in v||"B" in v){f.call(s,"m",1);}for(var t in v){f.call(s,t,v[t]);
}return s;}};};var f=function(p,q){if(!q){return this;}switch(p){case"a":case"A":return this.set("day",i.parseDay(q,true));case"b":case"B":return this.set("mo",i.parseMonth(q,true));
case"d":return this.set("date",q);case"H":case"I":return this.set("hr",q);case"m":return this.set("mo",q-1);case"M":return this.set("min",q);case"p":return this.set("ampm",q.replace(/\./g,""));
case"S":return this.set("sec",q);case"s":return this.set("ms",("0."+q)*1000);case"w":return this.set("day",q);case"Y":return this.set("year",q);case"y":q=+q;
if(q<100){q+=m+(q<h?100:0);}return this.set("year",q);case"T":if(q=="Z"){q="+00";}var r=q.match(/([+-])(\d{2}):?(\d{2})?/);r=(r[1]+"1")*(r[2]*60+(+r[3]||0))+this.getTimezoneOffset();
return this.set("time",this-r*60000);}return this;};i.defineParsers("%Y([-./]%m([-./]%d((T| )%X)?)?)?","%Y%m%d(T%H(%M%S?)?)?","%x( %X)?","%d%o( %b( %Y)?)?( %X)?","%b( %d%o)?( %Y)?( %X)?","%Y %b( %d%o( %X)?)?","%o %b %d %X %T %Y");
Locale.addEvent("change",function(p){if(Locale.get("Date")){b(p);}}).fireEvent("change",Locale.getCurrent());})();Date.implement({timeDiffInWords:function(a){return Date.distanceOfTimeInWords(this,a||new Date);
},timeDiff:function(g,b){if(g==null){g=new Date;}var f=((g-this)/1000).toInt();if(!f){return"0s";}var a={s:60,m:60,h:24,d:365,y:0};var e,d=[];for(var c in a){if(!f){break;
}if((e=a[c])){d.unshift((f%e)+c);f=(f/e).toInt();}else{d.unshift(f+c);}}return d.join(b||":");}});Date.alias("timeAgoInWords","timeDiffInWords");Date.extend({distanceOfTimeInWords:function(b,a){return Date.getTimePhrase(((a-b)/1000).toInt());
},getTimePhrase:function(f){var d=(f<0)?"Until":"Ago";if(f<0){f*=-1;}var b={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var e="lessThanMinute";
for(var c in b){var a=b[c];if(f<1.5*a){if(f>0.75*a){e=c;}break;}f/=a;e=c+"s";}f=f.round();return Date.getMsg(e+d,f).substitute({delta:f});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(a){var b=new Date().clearTime();
switch(a[0]){case"tom":return b.increment();case"yes":return b.decrement();default:return b;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(e){var f=new Date().clearTime();
var b=f.getDay();var c=Date.parseDay(e[2],true);var a=c-b;if(c<=b){a+=7;}if(e[1]=="last"){a-=7;}return f.set("date",f.getDate()+a);}});Class.Mutators.Binds=function(a){return a;
};Class.Mutators.initialize=function(a){return function(){Array.from(this.Binds).each(function(b){var c=this[b];if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);
};};(function(){var c={a:/[àáâãäå??]/g,A:/[ÀÁÂÃÄÅ??]/g,c:/[??ç]/g,C:/[??Ç]/g,d:/[??]/g,D:/[?Ð]/g,e:/[èéêë??]/g,E:/[ÈÉÊË??]/g,g:/[?]/g,G:/[?]/g,i:/[ìíîï]/g,I:/[ÌÍÎÏ]/g,l:/[???]/g,L:/[???]/g,n:/[ñ??]/g,N:/[Ñ??]/g,o:/[òóôõöø?]/g,O:/[ÒÓÔÕÖØ]/g,r:/[??]/g,R:/[??]/g,s:/[???]/g,S:/[???]/g,t:/[??]/g,T:/[??]/g,ue:/[ü]/g,UE:/[Ü]/g,u:/[ùúû?µ]/g,U:/[ÙÚÛ?]/g,y:/[ÿý]/g,Y:/[?Ý]/g,z:/[???]/g,Z:/[???]/g,th:/[þ]/g,TH:/[Þ]/g,dh:/[ð]/g,DH:/[Ð]/g,ss:/[ß]/g,oe:/[?]/g,OE:/[?]/g,ae:/[æ]/g,AE:/[Æ]/g},b={" ":/[\xa0\u2002\u2003\u2009]/g,"*":/[\xb7]/g,"'":/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,"...":/[\u2026]/g,"-":/[\u2013]/g,"&raquo;":/[\uFFFD]/g};
var a=function(f,g){var e=f;for(key in g){e=e.replace(g[key],key);}return e;};var d=function(e,f){e=e||"";var g=f?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)</"+e+"(?!\\w)>":"</?"+e+"([^>]+)?>";
reg=new RegExp(g,"gi");return reg;};String.implement({standardize:function(){return a(this,c);},repeat:function(e){return new Array(e+1).join(this);},pad:function(e,h,g){if(this.length>=e){return this;
}var f=(h==null?" ":""+h).repeat(e-this.length).substr(0,e-this.length);if(!g||g=="right"){return this+f;}if(g=="left"){return f+this;}return f.substr(0,(f.length/2).floor())+this+f.substr(0,(f.length/2).ceil());
},getTags:function(e,f){return this.match(d(e,f))||[];},stripTags:function(e,f){return this.replace(d(e,f),"");},tidy:function(){return a(this,b);}});})();
Element.implement({tidy:function(){this.set("value",this.get("value").tidy());},getTextInRange:function(b,a){return this.get("value").substring(b,a);},getSelectedText:function(){if(this.setSelectionRange){return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd());
}return document.selection.createRange().text;},getSelectedRange:function(){if(this.selectionStart!=null){return{start:this.selectionStart,end:this.selectionEnd};
}var e={start:0,end:0};var a=this.getDocument().selection.createRange();if(!a||a.parentElement()!=this){return e;}var c=a.duplicate();if(this.type=="text"){e.start=0-c.moveStart("character",-100000);
e.end=e.start+a.text.length;}else{var b=this.get("value");var d=b.length;c.moveToElementText(this);c.setEndPoint("StartToEnd",a);if(c.text.length){d-=b.match(/[\n\r]*$/)[0].length;
}e.end=d-c.text.length;c.setEndPoint("StartToStart",a);e.start=d-c.text.length;}return e;},getSelectionStart:function(){return this.getSelectedRange().start;
},getSelectionEnd:function(){return this.getSelectedRange().end;},setCaretPosition:function(a){if(a=="end"){a=this.get("value").length;}this.selectRange(a,a);
return this;},getCaretPosition:function(){return this.getSelectedRange().start;},selectRange:function(e,a){if(this.setSelectionRange){this.focus();this.setSelectionRange(e,a);
}else{var c=this.get("value");var d=c.substr(e,a-e).replace(/\r/g,"").length;e=c.substr(0,e).replace(/\r/g,"").length;var b=this.createTextRange();b.collapse(true);
b.moveEnd("character",e+d);b.moveStart("character",e);b.select();}return this;},insertAtCursor:function(b,a){var d=this.getSelectedRange();var c=this.get("value");
this.set("value",c.substring(0,d.start)+b+c.substring(d.end,c.length));if(a!==false){this.selectRange(d.start,d.start+b.length);}else{this.setCaretPosition(d.start+b.length);
}return this;},insertAroundCursor:function(b,a){b=Object.append({before:"",defaultMiddle:"",after:""},b);var c=this.getSelectedText()||b.defaultMiddle;
var g=this.getSelectedRange();var f=this.get("value");if(g.start==g.end){this.set("value",f.substring(0,g.start)+b.before+c+b.after+f.substring(g.end,f.length));
this.selectRange(g.start+b.before.length,g.end+b.before.length+c.length);}else{var d=f.substring(g.start,g.end);this.set("value",f.substring(0,g.start)+b.before+d+b.after+f.substring(g.end,f.length));
var e=g.start+b.before.length;if(a!==false){this.selectRange(e,e+d.length);}else{this.setCaretPosition(e+f.length);}}return this;}});Locale.define("en-US","FormValidator",{required:"This field is required.",minLength:"Please enter at least {minLength} characters (you entered {length} characters).",maxLength:"Please enter no more than {maxLength} characters (you entered {length} characters).",integer:"Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.",numeric:'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").',digits:"Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).",alpha:"Please use only letters (a-z) within this field. No spaces or other characters are allowed.",alphanum:"Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.",dateSuchAs:"Please enter a valid date such as {date}",dateInFormatMDY:'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")',email:'Please enter a valid email address. For example "fred@domain.com".',url:"Please enter a valid URL such as http://www.google.com.",currencyDollar:"Please enter a valid $ amount. For example $100.00 .",oneRequired:"Please enter something for at least one of these inputs.",errorPrefix:"Error: ",warningPrefix:"Warning: ",noSpace:"There can be no spaces in this input.",reqChkByNode:"No items are selected.",requiredChk:"This field is required.",reqChkByName:"Please select a {label}.",match:"This field needs to match the {matchName} field",startDate:"the start date",endDate:"the end date",currendDate:"the current date",afterDate:"The date should be the same or after {label}.",beforeDate:"The date should be the same or before {label}.",startMonth:"Please select a start month",sameMonth:"These two dates must be in the same month - you must change one or the other.",creditcard:"The credit card number entered is invalid. Please check the number and try again. {length} digits entered."});
Element.implement({isDisplayed:function(){return this.getStyle("display")!="none";},isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";
},toggle:function(){return this[this.isDisplayed()?"hide":"show"]();},hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;
}return this.store("element:_originalDisplay",b||"").setStyle("display","none");},show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";
return this.setStyle("display",(a=="none")?"block":a);},swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(document.selection&&document.selection.empty){document.selection.empty();
}else{if(window.getSelection){var a=window.getSelection();if(a&&a.removeAllRanges){a.removeAllRanges();}}}}});if(!window.Form){window.Form={};}var InputValidator=new Class({Implements:[Options],options:{errorMsg:"Validation failed.",test:function(a){return true;
}},initialize:function(b,a){this.setOptions(a);this.className=b;},test:function(b,a){if(document.id(b)){return this.options.test(document.id(b),a||this.getProps(b));
}else{return false;}},getError:function(c,a){var b=this.options.errorMsg;if(typeOf(b)=="function"){b=b(document.id(c),a||this.getProps(c));}return b;},getProps:function(a){if(!document.id(a)){return{};
}return a.get("validatorProps");}});Element.Properties.validatorProps={set:function(a){return this.eliminate("$moo:validatorProps").store("$moo:validatorProps",a);
},get:function(a){if(a){this.set(a);}if(this.retrieve("$moo:validatorProps")){return this.retrieve("$moo:validatorProps");}if(this.getProperty("$moo:validatorProps")){try{this.store("$moo:validatorProps",JSON.decode(this.getProperty("$moo:validatorProps")));
}catch(c){return{};}}else{var b=this.get("class").split(" ").filter(function(d){return d.test(":");});if(!b.length){this.store("$moo:validatorProps",{});
}else{a={};b.each(function(d){var f=d.split(":");if(f[1]){try{a[f[0]]=JSON.decode(f[1]);}catch(g){}}});this.store("$moo:validatorProps",a);}}return this.retrieve("$moo:validatorProps");
}};Form.Validator=new Class({Implements:[Options,Events],Binds:["onSubmit"],options:{fieldSelectors:"input, select, textarea",ignoreHidden:true,ignoreDisabled:true,useTitles:false,evaluateOnSubmit:true,evaluateFieldsOnBlur:true,evaluateFieldsOnChange:true,serial:true,stopOnFailure:true,warningPrefix:function(){return Form.Validator.getMsg("warningPrefix")||"Warning: ";
},errorPrefix:function(){return Form.Validator.getMsg("errorPrefix")||"Error: ";}},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);
this.element.store("validator",this);this.warningPrefix=Function.from(this.options.warningPrefix)();this.errorPrefix=Function.from(this.options.errorPrefix)();
if(this.options.evaluateOnSubmit){this.element.addEvent("submit",this.onSubmit);}if(this.options.evaluateFieldsOnBlur||this.options.evaluateFieldsOnChange){this.watchFields(this.getFields());
}},toElement:function(){return this.element;},getFields:function(){return(this.fields=this.element.getElements(this.options.fieldSelectors));},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false],this));
}if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true],this));}},this);},validationMonitor:function(){clearTimeout(this.timer);
this.timer=this.validateField.delay(50,this,arguments);},onSubmit:function(a){if(!this.validate(a)&&a){a.preventDefault();}else{this.reset();}},reset:function(){this.getFields().each(this.resetField,this);
return this;},validate:function(b){var a=this.getFields().map(function(c){return this.validateField(c,true);},this).every(function(c){return c;});this.fireEvent("formValidate",[a,this.element,b]);
if(this.options.stopOnFailure&&!a&&b){b.preventDefault();}return a;},validateField:function(i,a){if(this.paused){return true;}i=document.id(i);var d=!i.hasClass("validation-failed");
var f,h;if(this.options.serial&&!a){f=this.element.getElement(".validation-failed");h=this.element.getElement(".warning");}if(i&&(!f||a||i.hasClass("validation-failed")||(f&&!this.options.serial))){var c=i.className.split(" ").some(function(j){return this.getValidator(j);
},this);var g=[];i.className.split(" ").each(function(j){if(j&&!this.test(j,i)){g.include(j);}},this);d=g.length===0;if(c&&!i.hasClass("warnOnly")){if(d){i.addClass("validation-passed").removeClass("validation-failed");
this.fireEvent("elementPass",i);}else{i.addClass("validation-failed").removeClass("validation-passed");this.fireEvent("elementFail",[i,g]);}}if(!h){var e=i.className.split(" ").some(function(j){if(j.test("^warn-")||i.hasClass("warnOnly")){return this.getValidator(j.replace(/^warn-/,""));
}else{return null;}},this);i.removeClass("warning");var b=i.className.split(" ").map(function(j){if(j.test("^warn-")||i.hasClass("warnOnly")){return this.test(j.replace(/^warn-/,""),i,true);
}else{return null;}},this);}}return d;},test:function(b,d,e){d=document.id(d);if((this.options.ignoreHidden&&!d.isVisible())||(this.options.ignoreDisabled&&d.get("disabled"))){return true;
}var a=this.getValidator(b);e=e!=null?e:false;if(d.hasClass("warnOnly")){e=true;}var c=d.hasClass("ignoreValidation")||(a?a.test(d):true);if(a){this.fireEvent("elementValidate",[c,d,b,e]);
}if(e){return true;}return c;},resetField:function(a){a=document.id(a);if(a){a.className.split(" ").each(function(b){if(b.test("^warn-")){b=b.replace(/^warn-/,"");
}a.removeClass("validation-failed");a.removeClass("warning");a.removeClass("validation-passed");},this);}return this;},stop:function(){this.paused=true;
return this;},start:function(){this.paused=false;return this;},ignoreField:function(a,b){a=document.id(a);if(a){this.enforceField(a);if(b){a.addClass("warnOnly");
}else{a.addClass("ignoreValidation");}}return this;},enforceField:function(a){a=document.id(a);if(a){a.removeClass("warnOnly").removeClass("ignoreValidation");
}return this;}});Form.Validator.getMsg=function(a){return Locale.get("FormValidator."+a);};Form.Validator.adders={validators:{},add:function(b,a){this.validators[b]=new InputValidator(b,a);
if(!this.initialize){this.implement({validators:this.validators});}},addAllThese:function(a){Array.from(a).each(function(b){this.add(b[0],b[1]);},this);
},getValidator:function(a){return this.validators[a.split(":")[0]];}};Object.append(Form.Validator,Form.Validator.adders);Form.Validator.implement(Form.Validator.adders);
Form.Validator.add("IsEmpty",{errorMsg:false,test:function(a){if(a.type=="select-one"||a.type=="select"){return !(a.selectedIndex>=0&&a.options[a.selectedIndex].value!="");
}else{return((a.get("value")==null)||(a.get("value").length==0));}}});Form.Validator.addAllThese([["required",{errorMsg:function(){return Form.Validator.getMsg("required");
},test:function(a){return !Form.Validator.getValidator("IsEmpty").test(a);}}],["minLength",{errorMsg:function(a,b){if(typeOf(b.minLength)!="null"){return Form.Validator.getMsg("minLength").substitute({minLength:b.minLength,length:a.get("value").length});
}else{return"";}},test:function(a,b){if(typeOf(b.minLength)!="null"){return(a.get("value").length>=(b.minLength||0));}else{return true;}}}],["maxLength",{errorMsg:function(a,b){if(typeOf(b.maxLength)!="null"){return Form.Validator.getMsg("maxLength").substitute({maxLength:b.maxLength,length:a.get("value").length});
}else{return"";}},test:function(a,b){return(a.get("value").length<=(b.maxLength||10000));}}],["validate-integer",{errorMsg:Form.Validator.getMsg.pass("integer"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(-?[1-9]\d*|0)$/).test(a.get("value"));
}}],["validate-numeric",{errorMsg:Form.Validator.getMsg.pass("numeric"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(a.get("value"));
}}],["validate-digits",{errorMsg:Form.Validator.getMsg.pass("digits"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[\d() .:\-\+#]+$/.test(a.get("value")));
}}],["validate-alpha",{errorMsg:Form.Validator.getMsg.pass("alpha"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[a-zA-Z]+$/).test(a.get("value"));
}}],["validate-alphanum",{errorMsg:Form.Validator.getMsg.pass("alphanum"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||!(/\W/).test(a.get("value"));
}}],["validate-date",{errorMsg:function(a,b){if(Date.parse){var c=b.dateFormat||"%x";return Form.Validator.getMsg("dateSuchAs").substitute({date:new Date().format(c)});
}else{return Form.Validator.getMsg("dateInFormatMDY");}},test:function(a,b){if(Form.Validator.getValidator("IsEmpty").test(a)){return true;}var g;if(Date.parse){var f=b.dateFormat||"%x";
g=Date.parse(a.get("value"));var e=g.format(f);if(e!="invalid date"){a.set("value",e);}return !isNaN(g);}else{var c=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!c.test(a.get("value"))){return false;
}g=new Date(a.get("value").replace(c,"$1/$2/$3"));return(parseInt(RegExp.$1,10)==(1+g.getMonth()))&&(parseInt(RegExp.$2,10)==g.getDate())&&(parseInt(RegExp.$3,10)==g.getFullYear());
}}}],["validate-email",{errorMsg:Form.Validator.getMsg.pass("email"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i).test(a.get("value"));
}}],["validate-url",{errorMsg:Form.Validator.getMsg.pass("url"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(a.get("value"));
}}],["validate-currency-dollar",{errorMsg:Form.Validator.getMsg.pass("currencyDollar"),test:function(a){return Form.Validator.getValidator("IsEmpty").test(a)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(a.get("value"));
}}],["validate-one-required",{errorMsg:Form.Validator.getMsg.pass("oneRequired"),test:function(a,b){var c=document.id(b["validate-one-required"])||a.getParent(b["validate-one-required"]);
return c.getElements("input").some(function(d){if(["checkbox","radio"].contains(d.get("type"))){return d.get("checked");}return d.get("value");});}}]]);
Element.Properties.validator={set:function(a){var b=this.retrieve("validator");if(b){b.setOptions(a);}return this.store("$moo:validator:options",a);},get:function(a){if(a||!this.retrieve("validator")){if(a||!this.retrieve("$moo:validator:options")){this.set("validator",a);
}this.store("validator",new Form.Validator(this,this.retrieve("$moo:validator:options")));}return this.retrieve("validator");}};Element.implement({validate:function(a){if(a){this.set("validator",a);
}return this.get("validator",a).validate();}});var FormValidator=Form.Validator;Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(a){if(a.reveal){a.reveal();
}else{a.setStyle("display","block");}},hideError:function(a){if(a.dissolve){a.dissolve();}else{a.setStyle("display","none");}},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:"quad:out",offset:{y:-20}}},initialize:function(b,a){this.parent(b,a);
this.addEvent("onElementValidate",function(g,f,e,h){var d=this.getValidator(e);if(!g&&d.getError(f)){if(h){f.addClass("warning");}var c=this.makeAdvice(e,f,d.getError(f),h);
this.insertAdvice(c,f);this.showAdvice(e,f);}else{this.hideAdvice(e,f);}});},makeAdvice:function(d,f,c,g){var e=(g)?this.warningPrefix:this.errorPrefix;
e+=(this.options.useTitles)?f.title||c:c;var a=(g)?"warning-advice":"validation-advice";var b=this.getAdvice(d,f);if(b){b=b.set("html",e);}else{b=new Element("div",{html:e,styles:{display:"none"},id:"advice-"+d.split(":")[0]+"-"+this.getFieldId(f)}).addClass(a);
}f.store("$moo:advice-"+d,b);return b;},getFieldId:function(a){return a.id?a.id:a.id="input_"+a.name;},showAdvice:function(b,c){var a=this.getAdvice(b,c);
if(a&&!c.retrieve("$moo:"+this.getPropName(b))&&(a.getStyle("display")=="none"||a.getStyle("visiblity")=="hidden"||a.getStyle("opacity")==0)){c.store("$moo:"+this.getPropName(b),true);
this.options.showError(a);this.fireEvent("showAdvice",[c,a,b]);}},hideAdvice:function(b,c){var a=this.getAdvice(b,c);if(a&&c.retrieve("$moo:"+this.getPropName(b))){c.store("$moo:"+this.getPropName(b),false);
this.options.hideError(a);this.fireEvent("hideAdvice",[c,a,b]);}},getPropName:function(a){return"advice"+a;},resetField:function(a){a=document.id(a);if(!a){return this;
}this.parent(a);a.className.split(" ").each(function(b){this.hideAdvice(b,a);},this);return this;},getAllAdviceMessages:function(d,c){var b=[];if(d.hasClass("ignoreValidation")&&!c){return b;
}var a=d.className.split(" ").some(function(g){var e=g.test("^warn-")||d.hasClass("warnOnly");if(e){g=g.replace(/^warn-/,"");}var f=this.getValidator(g);
if(!f){return;}b.push({message:f.getError(d),warnOnly:e,passed:f.test(),validator:f});},this);return b;},getAdvice:function(a,b){return b.retrieve("$moo:advice-"+a);
},insertAdvice:function(a,c){var b=c.get("validatorProps");if(!b.msgPos||!document.id(b.msgPos)){if(c.type&&c.type.toLowerCase()=="radio"){c.getParent().adopt(a);
}else{a.inject(document.id(c),"after");}}else{document.id(b.msgPos).grab(a);}},validateField:function(g,f,b){var a=this.parent(g,f);if(((this.options.scrollToErrorsOnSubmit&&b==null)||b)&&!a){var c=document.id(this).getElement(".validation-failed");
var d=document.id(this).getParent();while(d!=document.body&&d.getScrollSize().y==d.getSize().y){d=d.getParent();}var e=d.retrieve("$moo:fvScroller");if(!e&&window.Fx&&Fx.Scroll){e=new Fx.Scroll(d,this.options.scrollFxOptions);
d.store("$moo:fvScroller",e);}if(c){if(e){e.toElement(c);}else{d.scrollTo(d.getScroll().x,c.getPosition(d).y-20);}}}return a;},watchFields:function(a){a.each(function(b){if(this.options.evaluateFieldsOnBlur){b.addEvent("blur",this.validationMonitor.pass([b,false,this.options.scrollToErrorsOnBlur],this));
}if(this.options.evaluateFieldsOnChange){b.addEvent("change",this.validationMonitor.pass([b,true,this.options.scrollToErrorsOnChange],this));}},this);}});
Form.Validator.addAllThese([["validate-enforce-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");if(!c){return true;}(b.toEnforce||document.id(b.enforceChildrenOf).getElements("input, select, textarea")).map(function(d){if(a.checked){c.enforceField(d);
}else{c.ignoreField(d);c.resetField(d);}});return true;}}],["validate-ignore-oncheck",{test:function(a,b){var c=a.getParent("form").retrieve("validator");
if(!c){return true;}(b.toIgnore||document.id(b.ignoreChildrenOf).getElements("input, select, textarea")).each(function(d){if(a.checked){c.ignoreField(d);
c.resetField(d);}else{c.enforceField(d);}});return true;}}],["validate-nospace",{errorMsg:function(){return Form.Validator.getMsg("noSpace");},test:function(a,b){return !a.get("value").test(/\s/);
}}],["validate-toggle-oncheck",{test:function(b,c){var d=b.getParent("form").retrieve("validator");if(!d){return true;}var a=c.toToggle||document.id(c.toToggleChildrenOf).getElements("input, select, textarea");
if(!b.checked){a.each(function(e){d.ignoreField(e);d.resetField(e);});}else{a.each(function(e){d.enforceField(e);});}return true;}}],["validate-reqchk-bynode",{errorMsg:function(){return Form.Validator.getMsg("reqChkByNode");
},test:function(a,b){return(document.id(b.nodeId).getElements(b.selector||"input[type=checkbox], input[type=radio]")).some(function(c){return c.checked;
});}}],["validate-required-check",{errorMsg:function(a,b){return b.useTitle?a.get("title"):Form.Validator.getMsg("requiredChk");},test:function(a,b){return !!a.checked;
}}],["validate-reqchk-byname",{errorMsg:function(a,b){return Form.Validator.getMsg("reqChkByName").substitute({label:b.label||a.get("type")});},test:function(b,d){var c=d.groupName||b.get("name");
var a=$$(document.getElementsByName(c)).some(function(g,f){return g.checked;});var e=b.getParent("form").retrieve("validator");if(a&&e){e.resetField(b);
}return a;}}],["validate-match",{errorMsg:function(a,b){return Form.Validator.getMsg("match").substitute({matchName:b.matchName||document.id(b.matchInput).get("name")});
},test:function(b,c){var d=b.get("value");var a=document.id(c.matchInput)&&document.id(c.matchInput).get("value");return d&&a?d==a:true;}}],["validate-after-date",{errorMsg:function(a,b){return Form.Validator.getMsg("afterDate").substitute({label:b.afterLabel||(b.afterElement?Form.Validator.getMsg("startDate"):Form.Validator.getMsg("currentDate"))});
},test:function(b,c){var d=document.id(c.afterElement)?Date.parse(document.id(c.afterElement).get("value")):new Date();var a=Date.parse(b.get("value"));
return a&&d?a>=d:true;}}],["validate-before-date",{errorMsg:function(a,b){return Form.Validator.getMsg("beforeDate").substitute({label:b.beforeLabel||(b.beforeElement?Form.Validator.getMsg("endDate"):Form.Validator.getMsg("currentDate"))});
},test:function(b,c){var d=Date.parse(b.get("value"));var a=document.id(c.beforeElement)?Date.parse(document.id(c.beforeElement).get("value")):new Date();
return a&&d?a>=d:true;}}],["validate-custom-required",{errorMsg:function(){return Form.Validator.getMsg("required");},test:function(a,b){return a.get("value")!=b.emptyValue;
}}],["validate-same-month",{errorMsg:function(a,b){var c=document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value");var d=a.get("value");if(d!=""){return Form.Validator.getMsg(c?"sameMonth":"startMonth");
}},test:function(a,b){var d=Date.parse(a.get("value"));var c=Date.parse(document.id(b.sameMonthAs)&&document.id(b.sameMonthAs).get("value"));return d&&c?d.format("%B")==c.format("%B"):true;
}}],["validate-cc-num",{errorMsg:function(a){var b=a.get("value").replace(/[^0-9]/g,"");return Form.Validator.getMsg("creditcard").substitute({length:b.length});
},test:function(c){if(Form.Validator.getValidator("IsEmpty").test(c)){return true;}var g=c.get("value");g=g.replace(/[^0-9]/g,"");var a=false;if(g.test(/^4[0-9]{12}([0-9]{3})?$/)){a="Visa";
}else{if(g.test(/^5[1-5]([0-9]{14})$/)){a="Master Card";}else{if(g.test(/^3[47][0-9]{13}$/)){a="American Express";}else{if(g.test(/^6011[0-9]{12}$/)){a="Discover";
}}}}if(a){var d=0;var e=0;for(var b=g.length-1;b>=0;--b){e=g.charAt(b).toInt();if(e==0){continue;}if((g.length-b)%2==0){e+=e;}if(e>9){e=e.toString().charAt(0).toInt()+e.toString().charAt(1).toInt();
}d+=e;}if((d%10)==0){return true;}}var f="";while(g!=""){f+=" "+g.substr(0,4);g=g.substr(4);}c.getParent("form").retrieve("validator").ignoreField(c);c.set("value",f.clean());
c.getParent("form").retrieve("validator").enforceField(c);return false;}}]]);Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);
var a=b.retrieve(c||this.property);if(a&&this.occluded!=null){return this.occluded=a;}this.occluded=false;b.store(c||this.property,this);return this.occluded;
}});(function(){var a=function(d,c){var e=[];Object.each(c,function(f){Object.each(f,function(g){d.each(function(h){e.push(h+"-"+g+(h=="border"?"-width":""));
});});});return e;};var b=function(e,d){var c=0;Object.each(d,function(g,f){if(f.test(e)){c=c+g.toInt();}});return c;};Element.implement({measure:function(h){var d=function(j){return !!(!j||j.offsetHeight||j.offsetWidth);
};if(d(this)){return h.apply(this);}var g=this.getParent(),i=[],e=[];while(!d(g)&&g!=document.body){e.push(g.expose());g=g.getParent();}var f=this.expose();
var c=h.apply(this);f();e.each(function(j){j();});return c;},expose:function(){if(this.getStyle("display")!="none"){return function(){};}var c=this.style.cssText;
this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=c;}.bind(this);},getDimensions:function(c){c=Object.merge({computeSize:false},c);
var h={x:0,y:0};var g=function(i,e){return(e.computeSize)?i.getComputedSize(e):i.getSize();};var d=this.getParent("body");if(d&&this.getStyle("display")=="none"){h=this.measure(function(){return g(this,c);
});}else{if(d){try{h=g(this,c);}catch(f){}}}return Object.append(h,(h.x||h.x===0)?{width:h.x,height:h.y}:{x:h.width,y:h.height});},getComputedSize:function(c){if(c&&c.plains){c.planes=c.plains;
}c=Object.merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},c);var e={},d={width:0,height:0};if(c.mode=="vertical"){delete d.width;
delete c.planes.width;}else{if(c.mode=="horizontal"){delete d.height;delete c.planes.height;}}a(c.styles,c.planes).each(function(f){e[f]=this.getStyle(f).toInt();
},this);Object.each(c.planes,function(g,f){var h=f.capitalize();e[f]=this.getStyle(f).toInt();d["total"+h]=e[f];g.each(function(j){var i=b(j,e);d["computed"+j.capitalize()]=i;
d["total"+h]+=i;});},this);return Object.append(d,e);}});})();(function(){var a=Element.prototype.position;Element.implement({position:function(g){if(g&&(g.x!=null||g.y!=null)){return a?a.apply(this,arguments):this;
}Object.each(g||{},function(u,t){if(u==null){delete g[t];}});g=Object.merge({relativeTo:document.body,position:{x:"center",y:"center"},offset:{x:0,y:0}},g);
var r={x:0,y:0},e=false;var c=this.measure(function(){return document.id(this.getOffsetParent());});if(c&&c!=this.getDocument().body){r=c.measure(function(){return this.getPosition();
});e=c!=document.id(g.relativeTo);g.offset.x=g.offset.x-r.x;g.offset.y=g.offset.y-r.y;}var s=function(t){if(typeOf(t)!="string"){return t;}t=t.toLowerCase();
var u={};if(t.test("left")){u.x="left";}else{if(t.test("right")){u.x="right";}else{u.x="center";}}if(t.test("upper")||t.test("top")){u.y="top";}else{if(t.test("bottom")){u.y="bottom";
}else{u.y="center";}}return u;};g.edge=s(g.edge);g.position=s(g.position);if(!g.edge){if(g.position.x=="center"&&g.position.y=="center"){g.edge={x:"center",y:"center"};
}else{g.edge={x:"left",y:"top"};}}this.setStyle("position","absolute");var f=document.id(g.relativeTo)||document.body,d=f==document.body?window.getScroll():f.getPosition(),l=d.y,h=d.x;
var n=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});var j={},o=g.offset.y,q=g.offset.x,k=window.getSize();switch(g.position.x){case"left":j.x=h+q;
break;case"right":j.x=h+q+f.offsetWidth;break;default:j.x=h+((f==document.body?k.x:f.offsetWidth)/2)+q;break;}switch(g.position.y){case"top":j.y=l+o;break;
case"bottom":j.y=l+o+f.offsetHeight;break;default:j.y=l+((f==document.body?k.y:f.offsetHeight)/2)+o;break;}if(g.edge){var b={};switch(g.edge.x){case"left":b.x=0;
break;case"right":b.x=-n.x-n.computedRight-n.computedLeft;break;default:b.x=-(n.totalWidth/2);break;}switch(g.edge.y){case"top":b.y=0;break;case"bottom":b.y=-n.y-n.computedTop-n.computedBottom;
break;default:b.y=-(n.totalHeight/2);break;}j.x+=b.x;j.y+=b.y;}j={left:((j.x>=0||e||g.allowNegative)?j.x:0).toInt(),top:((j.y>=0||e||g.allowNegative)?j.y:0).toInt()};
var i={left:"x",top:"y"};["minimum","maximum"].each(function(t){["left","top"].each(function(u){var v=g[t]?g[t][i[u]]:null;if(v!=null&&((t=="minimum")?j[u]<v:j[u]>v)){j[u]=v;
}});});if(f.getStyle("position")=="fixed"||g.relFixedPosition){var m=window.getScroll();j.top+=m.y;j.left+=m.x;}if(g.ignoreScroll){var p=f.getScroll();
j.top-=p.y;j.left-=p.x;}if(g.ignoreMargins){j.left+=(g.edge.x=="right"?n["margin-right"]:g.edge.x=="center"?-n["margin-left"]+((n["margin-right"]+n["margin-left"])/2):-n["margin-left"]);
j.top+=(g.edge.y=="bottom"?n["margin-bottom"]:g.edge.y=="center"?-n["margin-top"]+((n["margin-bottom"]+n["margin-top"])/2):-n["margin-top"]);}j.left=Math.ceil(j.left);
j.top=Math.ceil(j.top);if(g.returnPos){return j;}else{this.setStyles(j);}return this;}});})();var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(this.element);OverText.instances.push(this);if(this.options.poll){this.poll();}return this;
},toElement:function(){return this.element;},attach:function(){var a=this.options.textOverride||this.element.get("alt")||this.element.get("title");if(!a){return;
}this.text=new Element(this.options.element,{"class":"overTxtLabel",styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:a,events:{click:this.hide.pass(this.options.element=="label",this)}}).inject(this.element,"after");
if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime());}this.text.set("for",this.element.get("id"));
}if(this.options.wrap){this.textHolder=new Element("div",{styles:{lineHeight:"normal",position:"relative"},"class":"overTxtWrapper"}).adopt(this.text).inject(this.element,"before");
}return this.enable();},destroy:function(){this.element.eliminate("OverTextDiv").eliminate("OverText");this.disable();if(this.text){this.text.destroy();
}if(this.textHolder){this.textHolder.destroy();}return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});
window.removeEvent("resize",this.reposition);this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});
window.addEvent("resize",this.reposition);this.assert(true);this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime());
}this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this;
}var b=function(){if(!this.pollingPaused){this.assert(true);}}.bind(this);if(a){clearInterval(this.poller);}else{this.poller=b.periodical(this.options.pollInterval,this);
}return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return;
}this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]);
this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show();
this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},assert:function(a){this[this.test()?"show":"hide"](a);
},test:function(){var a=this.element.get("value");return !a;},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide();
}if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[];
Object.append(OverText,{each:function(a){return OverText.instances.map(function(c,b){if(c.element&&c.text){return a.apply(OverText,[c,b]);}return null;
});},update:function(){return OverText.each(function(a){return a.reposition();});},hideAll:function(){return OverText.each(function(a){return a.hide(true,true);
});},showAll:function(){return OverText.each(function(a){return a.show();});}});if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.ie?"select, input, textarea, object, embed, .overTxtLabel":false});
}Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(g,h,j){var c={};for(var d in g){var a=g[d],e=h[d],f=c[d]={};
for(var b in a){f[b]=this.parent(a[b],e[b],j);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue;}var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit);
}}return this;},start:function(c){if(!this.check(c)){return this;}var h={},j={};for(var d in c){if(!this.elements[d]){continue;}var f=c[d],a=h[d]={},g=j[d]={};
for(var b in f){var e=this.prepare(this.elements[d],b,f[b]);a[b]=e.from;g[b]=e.to;}}return this.parent(h,j);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var d=function(e){return e!=null;
};var c=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:d,elements:d});this.parent(c.elements,c.options);this.togglers=$$(c.togglers);
this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide){this.options.wait=true;}if(this.options.show||this.options.show===0){this.options.display=false;
this.previous=this.options.show;}if(this.options.start){this.options.display=false;this.options.show=false;}this.effects={};if(this.options.opacity){this.effects.opacity="fullOpacity";
}if(this.options.width){this.effects.width=this.options.fixedWidth?"fullWidth":"offsetWidth";}if(this.options.height){this.effects.height=this.options.fixedHeight?"fullHeight":"scrollHeight";
}for(var b=0,a=this.togglers.length;b<a;b++){this.addSection(this.togglers[b],this.elements[b]);}this.elements.each(function(f,e){if(this.options.show===e){this.fireEvent("active",[this.togglers[e],f]);
}else{for(var g in this.effects){f.setStyle(g,0);}}},this);if(this.options.display||this.options.display===0||this.options.initialDisplayFx===false){this.display(this.options.display,this.options.initialDisplayFx);
}if(this.options.fixedHeight!==false){this.options.returnHeightToAuto=false;}this.addEvent("complete",this.internalChain.callChain.bind(this.internalChain));
},addSection:function(e,c){e=document.id(e);c=document.id(c);this.togglers.include(e);this.elements.include(c);var f=this.togglers.contains(e);var a=this.togglers.indexOf(e);
var b=this.display.pass(a,this);e.store("accordion:display",b).addEvent(this.options.trigger,b);if(this.options.height){c.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"});
}if(this.options.width){c.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"});}c.fullOpacity=1;if(this.options.fixedWidth){c.fullWidth=this.options.fixedWidth;
}if(this.options.fixedHeight){c.fullHeight=this.options.fixedHeight;}c.setStyle("overflow","hidden");if(!f){for(var d in this.effects){c.setStyle(d,0);
}}return this;},removeSection:function(e,b){var a=this.togglers.indexOf(e);var c=this.elements[a];var d=function(){this.togglers.erase(e);this.elements.erase(c);
this.detach(e);}.bind(this);if(this.now==a||b!=null){this.display(b!=null?b:(a-1>=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display"));
}.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(a,b){if(!this.check(a,b)){return this;}b=b!=null?b:true;a=(typeOf(a)=="element")?this.elements.indexOf(a):a;
if(a==this.previous&&!this.options.alwaysHide){return this;}if(this.options.returnHeightToAuto){var d=this.elements[this.previous];if(d&&!this.selfHidden){for(var c in this.effects){d.setStyle(c,d[this.effects[c]]);
}}}if((this.timer&&this.options.wait)||(a===this.previous&&!this.options.alwaysHide)){return this;}this.previous=a;var e={};this.elements.each(function(h,g){e[g]={};
var f;if(g!=a){f=true;}else{if(this.options.alwaysHide&&((h.offsetHeight>0&&this.options.height)||h.offsetWidth>0&&this.options.width)){f=true;this.selfHidden=true;
}}this.fireEvent(f?"background":"active",[this.togglers[g],h]);for(var j in this.effects){e[g][j]=f?0:h[this.effects[j]];}},this);this.internalChain.clearChain();
this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var f=this.elements[a];if(f){f.setStyle("height","auto");}}}.bind(this));
return b?this.start(e):this.set(e);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var a=Array.link(arguments,{container:Type.isElement});
this.container=a.container;},addSection:function(c,b,e){c=document.id(c);b=document.id(b);var d=this.togglers.contains(c);var a=this.togglers.length;if(a&&(!d||e)){e=e!=null?e:a-1;
c.inject(this.togglers[e],"before");b.inject(c,"after");}else{if(this.container&&!d){c.inject(this.container);b.inject(this.container);}}return this.parent.apply(this,arguments);
}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c);
this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this);
this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments);
if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0]+this.options.offset.x,b[1]+this.options.offset.y);},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b);
});},start:function(c,h){if(!this.check(c,h)){return this;}var e=this.element,f=e.getScrollSize(),b=e.getScroll(),d=e.getSize();values={x:c,y:h};for(var g in values){if(!values[g]&&values[g]!==0){values[g]=b[g];
}if(typeOf(values[g])!="number"){values[g]=f[g]-d[g];}values[g]+=this.options.offset[g];}return this.parent([b.x,b.y],[values.x,values.y]);},toTop:function(){return this.start(false,0);
},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start("right",false);},toBottom:function(){return this.start(false,"bottom");
},toElement:function(d){var c=document.id(d).getPosition(this.element),b=a(this.element)?{x:0,y:0}:this.element.getScroll();return this.start(c.x+b.x,c.y+b.y);
},scrollIntoView:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y};
["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]<h[k]){i[k]=f[k];}}if(i[k]==null){i[k]=h[k];}if(e&&e[k]){i[k]=i[k]+e[k];
}},this);if(i.x!=h.x||i.y!=h.y){this.start(i.x,i.y);}return this;},scrollToCenter:function(e,f,h){f=f?Array.from(f):["x","y"];e=document.id(e);var i={},c=e.getPosition(this.element),d=e.getSize(),b=this.element.getScroll(),g=this.element.getSize();
["x","y"].each(function(j){if(f.contains(j)){i[j]=c[j]-(g[j]-d[j])/2;}if(i[j]==null){i[j]=b[j];}if(h&&h[j]){i[j]=i[j]+h[j];}},this);if(i.x!=b.x||i.y!=b.y){this.start(i.x,i.y);
}return this;}});function a(b){return(/^(?:body|html)$/i).test(b.tagName);}})();(function(){var a={json:JSON.decode};Locale.Set.defineParser=function(b,c){a[b]=c;
};Locale.Set.from=function(c,b){if(instanceOf(c,Locale.Set)){return c;}if(!b&&typeOf(c)=="string"){b="json";}if(a[b]){c=a[b](c);}locale=new Locale.Set;
locale.sets=c.sets||{};if(c.inherits){locale.inherits.locales=Array.from(c.inherits.locales);locale.inherits.sets=c.inherits.sets||{};}return locale;};
})();Locale.define("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).inherit("en-US","Date");
var Tabs = new Class ({
    Implements: Options,

    options : {
        index: 0,
        requests: null,
        hashTagCheck : false
    },

    initialize : function (id, options) {
        this.setOptions(options);
        this.index = this.options.index;
        this.id = id;
        this.setButtons();
        this.setAreas();
        this.createEvents();
        this.createTweens();
        this.checkTagHash();
    },

    setButtons : function() {
        this.buttons = $$('#' + this.id + ' .tabs a');
    },

    setAreas : function() {
        this.areas = [];
        this.areas.include($$('#' + this.id + " .slide"));
    },

    createEvents : function () {
        this.buttons.each(function(item,index) {
            item.removeProperty('href');
            if (item.hasClass('disabled') ) {
                item.disabled = true;
            } else {
                item.addEvent('click', this.buttonClick.bind(this, [index]));
            }
        }.bind(this));
    },

    buttonClick : function(index) {
        this.index = index;
        this.closeAllAreas();
        this.handleRequest();
        this.activateTab();
        return false;
    },

    createTweens : function() {
        this.areas.each(function(arrayItem) {
            arrayItem.each(function(item) {
                item.set('tween', {
                    property: 'opacity',
                    duration: 'long',
                    onComplete: this.tweenComplete.bind(item)
                });
            }.bind(this));
        }.bind(this));
    },


    closeAllAreas: function () {
        this.areas.each(function(arrayItem) {
            arrayItem.each(function(item) {
                if (!item.hasClass("hidden")) {
                    item.addClass("hidden");
                }
            });
        });
    },

    openArea: function() {
        this.areas.each(function(arrayItem) {
            arrayItem[this.index].setStyle('opacity','0');
            arrayItem[this.index].removeClass("hidden");
            arrayItem[this.index].get('tween').start(0,1);
        }.bind(this));
    },

    handleRequest : function() {
        var hasLoaded = true;
        this.areas.each(function(item) {
            if ( hasLoaded ) hasLoaded = item[this.index].getChildren().length > 0;
        }.bind(this));

        if (hasLoaded || this.options.requests == null) {
            this.openArea();
        } else {
            this.requestData();
        }
    },

    requestData : function() {
        new Request.HTML({
            method: 'post',
            url: this.options.requests[this.index],
            update: this.areas[0][this.index],
            evalScripts: true,
            onFailure: function() { console.log("ouch, you've broken the internet ..."); },
            onSuccess: this.openArea.bind(this)
        }).send();
    },

    deactivateAllTabs: function() {
        this.buttons.each(function(item) {
            item.getParent().removeClass("active");
        });
    },

    activateTab: function () {
        this.buttons.each(function(item) {
            if ( item.getParent().hasClass("active")) {
                item.getParent().removeClass("active");
            }
        });
        this.buttons[this.index].getParent().addClass("active");
    },

    tweenComplete : function() {
        this.setStyle('opacity','1');
    },

    checkTagHash : function() {
        if (this.options.hashTagCheck) {
            if (document.location.hash != undefined && document.location.hash != "" && !Utils.isStaticAnchor()) {
                this.closeAllAreas();
                this.deactivateAllTabs();
                this.buttons.each(function(item,index) {
                    if (item.getProperty('id') == 'to-' + document.location.hash.replace("#","") ) {
                        this.index = index;
                        this.activateTab();
                        this.handleRequest();
                    }
                }.bind(this));
            }
        }
    },

    addArea : function(areasSelector) {
        var newAreasArray = $$(areasSelector);
        this.areas.include(newAreasArray);
        this.createTweens();
    },

    setIndexFromDescription : function(description) {
        var obj = this;
        var origIndex = this.index;
        this.buttons.each(function(item,index) {
            if ( item.getProperty('id').test(description, 'i') ) obj.index = index;
        });
        return origIndex != this.index;
    }
});
var AutoScrollTabs = new Class ({
    Extends : Tabs,

    options : {
		interval : 5000
    },

	timer : null,
	timerRunning : false,

    initialize: function(options) {
        this.parent(options);
        this.setOptions(options);
        if(this.buttons.length > 1){
            this.areas.each(function(el) {
                el.addEvents({
                    'mouseover':this.mouseOver.bind(this),
                    'mouseout':this.mouseOut.bind(this)
                });
            }.bind(this));
            this.startTimer();
        }
    },

	mouseOver : function() {
		this.stopTimer();
	},

	mouseOut : function() {
		this.startTimer();
	},

    buttonClick : function(index) {
		this.stopTimer();
        this.parent(index);
		this.startTimer();
        return false;
    },

    moveNextTab : function(resetTimer) {
        this.index++;
        if (this.index > this.buttons.length - 1) this.index = 0;
        this.moveTab(resetTimer);
    },

    movePrevTab : function(resetTimer) {
        this.index--;
        if (this.index < 0) this.index = this.buttons.length - 1;
        this.moveTab(resetTimer);
    },

    moveTab : function(resetTimer) {
        this.closeAllAreas();
        this.handleRequest();
        this.activateTab();
		if (resetTimer) this.startTimer();
    },

    updateButtons : function() {
        if (this.index == this.buttons.length - 1) {
            this.nextButton.removeClass('active').addClass('hidden');
            this.prevButton.removeClass('hidden').addClass('active');
        } else if (this.index == 0) {
            this.prevButton.removeClass('active').addClass('hidden');
            this.nextButton.removeClass('hidden').addClass('active');
        } else{
            this.prevButton.removeClass('hidden').addClass('active');
            this.nextButton.removeClass('hidden').addClass('active');
        }
    },

	pause : function() {
		if (this.timerRunning) this.stopTimer();
	},

	play : function() {
		if (!this.timerRunning) this.startTimer();
	},

	startTimer : function() {
        this.stopTimer() // make sure we clear it if its going
		this.timerRunning = true;
		this.timer = this.moveNextTab.periodical(this.options.interval, this);
	},

	stopTimer : function() {
		this.timerRunning = false;
        window.clearInterval(this.timer);
		//$clear(this.timer);
	}
});
var Slider = new Class({
    initialize: function(containerEl, slidesEl) {
        this.currentSlide = 0;
        this.slides = slidesEl;
        this.nextButton = containerEl.getElements('.next');
        this.previousBtn = containerEl.getElements('.prev');
        this.setNextButton();
        this.setPreviousButton();
    },
    setNextButton: function() {
        this.nextButton.each(function(item){
            item.addEvent('click',function(e) {
                e.preventDefault();
                if (this.slides[this.currentSlide+1]) {
                    this.slides[this.currentSlide].fade('out').get('tween').chain(function() {
                        this.slides.addClass('hidden');
                        this.slides[this.currentSlide].removeClass('hidden');
                        this.slides[this.currentSlide].fade('in');
                    }.bind(this));
                    this.currentSlide = this.currentSlide+1;                     
                }
            }.bind(this));
        }.bind(this));
    },
    setPreviousButton: function() {
        this.previousBtn.each(function(item){
            item.addEvent('click',function(e) {
                e.preventDefault();
                if (this.slides[this.currentSlide-1]) {
                    this.slides[this.currentSlide].fade('out').get('tween').chain(function() {
                        this.slides.addClass('hidden');
                        this.slides[this.currentSlide].removeClass('hidden');
                        this.slides[this.currentSlide].fade('in');
                    }.bind(this));
                    this.currentSlide = this.currentSlide-1;
                }
            }.bind(this));
        }.bind(this));
    }
});
/**
 * @package		CeraBox
 *
 * @author 		Sven
 * @since 		13-01-2011
 * @version 	1.2.19-r
 *
 * This package requires MooTools 1.3.* + MooTools More Assets
 *
 * @license The MIT License
 *
 * Copyright (c) 2011-2012 Ceramedia, <http://ceramedia.net/>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
var CeraBox=new Class({Implements:[Options],loaderTimer:null,timeOuter:null,vars:{items:new Array(),cerabox:null,windowOpen:false,busy:false,currentIndex:[0,0]},options:{group:true,errorLoadingMessage:"The requested content cannot be loaded. Please try again later.",addContentProtectionLayer:false,events:{onClose:function(){},onOpen:function(){},onChange:function(){},onAnimationEnd:function(){},_onClose:null,_onOpen:null,_onChange:null,_onAnimationEnd:null}},initialize:function(a){this.setOptions(a);this.initHTML();if(Browser.ie6){document.id("cerabox-loading").addClass("ceraboxbox-ie6")}window.addEvent("resize",this._resize.bind(this));document.id("cerabox-loading").addEvent("click",function(b){b.stop();this.close(true)}.bind(this));document.addEvent("keyup",function(b){if(b.key=="esc"){this.close()}if(b.target.get("tag")=="input"||b.target.get("tag")=="select"||b.target.get("tag")=="textarea"){return}if(b.key=="left"){this.vars.cerabox.getElement(".cerabox-left").fireEvent("click",b)}if(b.key=="right"){this.vars.cerabox.getElement(".cerabox-right").fireEvent("click",b)}}.bind(this))},addItems:function(a,c){var b=$$(a);if(b.length<1){throw"Empty container"}var d=this.vars.items.length;this.vars.items[d]=[];c=c?c:{};Array.each(b,function(f,e){if(c.group===false||(c.group!==true&&this.options.group===false)){this.vars.items[d]=[];this.vars.items[d][0]=f;e=[d,0];d=d+1}else{this.vars.items[d][e]=f;e=[d,e]}if(typeof c.ajax!="undefined"){f.addEvent("click",function(g){if(g){g.preventDefault()}if(this.vars.busy){return}this.vars.busy=true;this._addCallbacks((typeof c.events!="undefined")?c.events:null);this.vars.cerabox.getElement(".cerabox-content-protection").setStyle("display","none");this.vars.cerabox.setStyle("cursor","auto").removeEvents("click");if(true===c.clickToClose){this.vars.cerabox.setStyle("cursor","pointer").addEvent("click",function(h){h.stop();this.close()}.bind(this))}this._showInit();this.showAjax(e,c)}.bind(this))}else{if(f.get("href").test(/^#/i)){f.addEvent("click",function(g){if(g){g.preventDefault()}if(this.vars.busy){return}this.vars.busy=true;this._addCallbacks((typeof c.events!="undefined")?c.events:null);this.vars.cerabox.getElement(".cerabox-content-protection").setStyle("display","none");this.vars.cerabox.setStyle("cursor","auto").removeEvents("click");if(true===c.clickToClose){this.vars.cerabox.setStyle("cursor","pointer").addEvent("click",function(h){h.stop();this.close()}.bind(this))}this._showInit();this.showInline(e,c)}.bind(this))}else{if(f.get("href").replace(/(\?.*)/,"").test(/\.jpg|jpeg|png|gif$/i)){f.addEvent("click",function(g){if(g){g.preventDefault()}if(this.vars.busy){return}this.vars.busy=true;this._addCallbacks((typeof c.events!="undefined")?c.events:null);if(true===this.options.addContentProtectionLayer){this.vars.cerabox.getElement(".cerabox-content-protection").setStyle("display","block")}this.vars.cerabox.setStyle("cursor","auto").removeEvents("click");if(true===c.clickToClose){this.vars.cerabox.setStyle("cursor","pointer").addEvent("click",function(h){h.stop();this.close()}.bind(this))}this._showInit();this.showImage(e,c)}.bind(this))}else{if(f.get("href").test(/\.swf$/i)){f.addEvent("click",function(g){if(g){g.preventDefault()}if(this.vars.busy){return}this.vars.busy=true;this._addCallbacks((typeof c.events!="undefined")?c.events:null);this.vars.cerabox.getElement(".cerabox-content-protection").setStyle("display","none");this.vars.cerabox.setStyle("cursor","auto").removeEvents("click");if(true===c.clickToClose){this.vars.cerabox.setStyle("cursor","pointer").addEvent("click",function(h){h.stop();this.close()}.bind(this))}this._showInit();this.showSwf(e,c)}.bind(this))}else{f.addEvent("click",function(g){if(g){g.preventDefault()}if(this.vars.busy){return}this.vars.busy=true;this._addCallbacks((typeof c.events!="undefined")?c.events:null);this.vars.cerabox.getElement(".cerabox-content-protection").setStyle("display","none");this.vars.cerabox.setStyle("cursor","auto").removeEvents("click");if(true===c.clickToClose){this.vars.cerabox.setStyle("cursor","pointer").addEvent("click",function(h){h.stop();this.close()}.bind(this))}this._showInit();this.showIframe(e,c)}.bind(this))}}}}}.bind(this))},showAjax:function(c,b){var e=this;var a=this.vars.items[c[0]];var d=a[c[1]];this.loaderTimer=this._displayLoader.delay(200,this,[b.loaderAtItem,d]);var f=new Request.HTML({url:d.get("href"),method:b.ajax.method?b.ajax.method:"post",data:b.ajax.data?b.ajax.data:"",onSuccess:function(h){if(false===e.vars.busy){return}clearInterval(e.loaderTimer);document.id("cerabox-loading").setStyle("display","none");if(false!==b.displayOverlay){e._displayOverlay()}var i=e.vars.cerabox.getElement("#cerabox-ajaxPreLoader").empty().adopt(h);e.vars.cerabox.setStyle("display","block");i.setStyle("width",b.width?b.width:i.getScrollSize().x+"px");i.setStyle("height",b.height?b.height:i.getScrollSize().y+"px");var g=e._getSizeElement(i,(true===b.fullSize?true:false));i=i.get("html");e.vars.cerabox.getElement("#cerabox-ajaxPreLoader").empty().setStyles({width:"auto",height:"auto"});e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();if(e.vars.windowOpen==true){e._transformItem(g.width,g.height)}e.vars.cerabox.getElement(".cerabox-content").set("tween",{duration:300}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");if(false===e.vars.busy){return}if(false!==b.displayTitle){e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","block").set("text",(a.length>1?"Item "+(c[1]+1)+" / "+a.length+" ":"")+(d.get("title")?d.get("title"):""))}e.vars.cerabox.getElement(".cerabox-content").empty().set("opacity",0).set("html",i);e._openWindow(g.width,g.height,b.animation?b.animation:"fade",c)})},onTimeout:function(){e._timedOut(c,b)},onFailure:function(){e._timedOut(c,b)},onException:function(){e._timedOut(c,b)}}).send()},showInline:function(c,b){var e=this;var a=this.vars.items[c[0]];var d=a[c[1]];var h=(d.get("href").test(/^#\$/i)&&typeof window[d.get("href").replace(/^#\$/i,"")]!="undefined")?((typeof window[d.get("href").replace(/^#\$/i,"")]!="object")?new Element("div",{html:window[d.get("href").replace(/^#\$/i,"")]}):window[d.get("href").replace(/^#\$/i,"")]):(document.id(document.body).getElement(d.get("href"))?document.id(document.body).getElement(d.get("href")).clone(true,true):null);if(null!==h){if(false!==b.displayOverlay){e._displayOverlay()}var f=e.vars.cerabox.getElement("#cerabox-ajaxPreLoader").empty().adopt(h.clone(true,true));e.vars.cerabox.setStyle("display","block");f.setStyle("width",b.width?b.width:f.getScrollSize().x+"px");f.setStyle("height",b.height?b.height:f.getSize().y+"px");var g=e._getSizeElement(f,(true===b.fullSize?true:false));e.vars.cerabox.getElement("#cerabox-ajaxPreLoader").empty().setStyles({width:"auto",height:"auto"});e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();if(e.vars.windowOpen==true){e._transformItem(g.width,g.height)}e.vars.cerabox.getElement(".cerabox-content").set("tween",{duration:300}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");if(false===e.vars.busy){return}if(false!==b.displayTitle){e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","block").set("text",(a.length>1?"Item "+(c[1]+1)+" / "+a.length+" ":"")+(d.get("title")?d.get("title"):""))}e.vars.cerabox.getElement(".cerabox-content").empty().set("opacity",0).adopt(h);e._openWindow(g.width,g.height,b.animation?b.animation:"fade",c)})}else{e._timedOut(c,b)}},showImage:function(c,b){var e=this;var a=this.vars.items[c[0]];var d=a[c[1]];this.loaderTimer=this._displayLoader.delay(200,this,[b.loaderAtItem,d]);var f=new Asset.image(d.get("href"),{onload:function(){if(false===e.vars.busy){return}document.id("cerabox-loading").setStyle("display","none");if(false!==b.displayOverlay){e._displayOverlay()}clearInterval(e.loaderTimer);this.set("width",b.width?b.width:this.get("width"));this.set("height",b.height?b.height:this.get("height"));var g=e._getSizeElement(this,(true===b.fullSize?true:false));e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();if(e.vars.windowOpen==true){e._transformItem(g.width,g.height)}e.vars.cerabox.getElement(".cerabox-content").set("tween",{duration:300}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");if(false===e.vars.busy){return}if(false!==b.displayTitle){e.vars.cerabox.getElement(".cerabox-title span").setStyle("display","block").set("text",(a.length>1?"Item "+(c[1]+1)+" / "+a.length+" ":"")+(d.get("title")?d.get("title"):""))}e.vars.cerabox.getElement(".cerabox-content").empty().set("opacity","0").adopt(f);e._openWindow(g.width,g.height,b.animation?b.animation:"fade",c)})},onerror:function(){e._timedOut(c,b)}})},showSwf:function(d,c){var f=this;var a=this.vars.items[d[0]];var e=a[d[1]];f.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();var g={width:c.width?c.width:500,height:c.height?c.height:400};var b=new Swiff(e.get("href"),{width:g.width,height:g.height,params:{wMode:"opaque"}});if(false!==c.displayOverlay){f._displayOverlay()}if(f.vars.windowOpen==true){f._transformItem(g.width,g.height)}f.vars.cerabox.getElement(".cerabox-content").set("tween",{duration:300}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");if(false===f.vars.busy){return}if(false!==c.displayTitle){f.vars.cerabox.getElement(".cerabox-title span").setStyle("display","block").set("text",(a.length>1?"Item "+(d[1]+1)+" / "+a.length+" ":"")+(e.get("title")?e.get("title"):""))}f.vars.cerabox.getElement(".cerabox-content").empty().set("opacity",0).adopt(b);f._openWindow(g.width,g.height,c.animation?c.animation:"fade",d)})},showIframe:function(c,b){var f=this;var a=this.vars.items[c[0]];var e=a[c[1]];this.loaderTimer=this._displayLoader.delay(200,this,[b.loaderAtItem,e]);this.timeOuter=this._timedOut.delay(10000,this,[c,b]);var d=new IFrame({src:e.get("href"),styles:{width:1,height:1,border:"0px"},events:{load:function(){if(false===f.vars.busy&&f.vars.windowOpen!==true){return}clearInterval(f.timeOuter);clearInterval(f.loaderTimer);document.id("cerabox-loading").setStyle("display","none");if(false!==b.displayOverlay){f._displayOverlay()}this.setStyles({width:b.width?b.width:"1px",height:b.height?b.height:"1px",border:"0"});f.vars.cerabox.setStyle("display","block");var g=f._getSizeElement(this,(true===b.fullSize?true:false));f.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();if(f.vars.windowOpen==true){f._transformItem(g.width,g.height)}f._openWindow(g.width,g.height,b.animation?b.animation:"fade",c)}}});d.set("border","0");d.set("frameborder","0");this.vars.cerabox.getElement(".cerabox-content").empty().set("opacity",0).adopt(d)},close:function(b){if(this.vars.busy&&!b){return}this.vars.busy=!b;clearInterval(this.timeOuter);clearInterval(this.loaderTimer);document.id("cerabox-loading").setStyle("display","none");var a=this;a.vars.cerabox.set("tween",{duration:50}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");this.element.setStyle("display","none");document.id("cerabox-background").set("tween",{duration:150,link:"chain"}).tween("opacity","0").tween("display","none").get("tween").addEvent("chainComplete",function(){this.removeEvents("chainComplete");a.vars.cerabox.getElement(".cerabox-content").empty();a.vars.cerabox.getElement(".cerabox-left").removeEvents("click").setStyle("display","none");a.vars.cerabox.getElement(".cerabox-right").removeEvents("click").setStyle("display","none");var d=a.vars.items[a.vars.currentIndex[0]];var c=d[a.vars.currentIndex[1]];if(a.vars.windowOpen){if(null!==a.options.events._onClose){a.options.events._onClose.call(a,c,d)}else{a.options.events.onClose.call(a,c,d)}}a.vars.windowOpen=false;a.vars.busy=false})})},initHTML:function(){var a=document.id(document.body);a.adopt([new Element("div",{id:"cerabox-loading"}).adopt(new Element("div")),new Element("div",{id:"cerabox-background",styles:{height:a.getScrollSize().y+"px"},events:{click:function(b){b.stop();this.close()}.bind(this)}}),this.vars.cerabox=new Element("div",{id:"cerabox"}).adopt([new Element("div",{"class":"cerabox-content"}),new Element("div",{"class":"cerabox-title"}).adopt(new Element("span")),new Element("a",{"class":"cerabox-close",events:{click:function(b){b.stop();this.close()}.bind(this)}}),new Element("a",{"class":"cerabox-left"}).adopt(new Element("span")),new Element("a",{"class":"cerabox-right"}).adopt(new Element("span")),new Element("div",{"class":"cerabox-content-protection"}),new Element("div",{id:"cerabox-ajaxPreLoader",styles:{"float":"left",overflow:"hidden",display:"block"}})])])},_timedOut:function(c,b){this.vars.busy=true;clearInterval(this.loaderTimer);document.id("cerabox-loading").setStyle("display","none");this._displayOverlay();this.vars.cerabox.getElement(".cerabox-title span").setStyle("display","none").empty();var d=this;var a=this.vars.items[c[0]];this.vars.cerabox.getElement(".cerabox-content").set("tween",{duration:300}).tween("opacity","0").get("tween").addEvent("complete",function(){this.removeEvents("complete");if(false===d.vars.busy){return}d.vars.cerabox.getElement(".cerabox-content").empty().set("opacity",0).adopt(new Element("span",{text:d.options.errorLoadingMessage})).set("tween",{duration:100}).tween("opacity","1");d._openWindow(250,50,b.animation?b.animation:"fade",c)});if(d.vars.windowOpen==true){d._transformItem(250,50)}},_addNavButtons:function(a){var b=this;if(true===b.vars.busy){return}this.vars.cerabox.getElement(".cerabox-left").removeEvents("click").setStyle("display","none");this.vars.cerabox.getElement(".cerabox-right").removeEvents("click").setStyle("display","none");if(this.vars.items[a[0]][(a[1]-1)]){this.vars.cerabox.getElement(".cerabox-left").setStyle("display","block").addEvent("click",function(c){c.stopPropagation();this.setStyle("display","none").removeEvents("click");b.vars.items[a[0]][(a[1]-1)].fireEvent("click",c)})}if(this.vars.items[a[0]][(a[1]+1)]){this.vars.cerabox.getElement(".cerabox-right").setStyle("display","block").addEvent("click",function(c){c.stopPropagation();this.setStyle("display","none").removeEvents("click");b.vars.items[a[0]][(a[1]+1)].fireEvent("click",c)})}},_transformItem:function(c,a){var b={display:"block",width:c,height:a,opacity:1};if(window.getSize().x>this.vars.cerabox.getSize().x+40&&window.getSize().x>c+40){this.vars.cerabox.setStyles({left:((window.getSize().x/2))+"px",right:"auto"});b["margin-left"]=((-c/2)+document.id(document.body).getScroll().x)+"px"}else{this.vars.cerabox.setStyles({"margin-left":"0",left:"auto",right:"20px"})}if(window.getSize().y>this.vars.cerabox.getSize().y+40&&window.getSize().y>a+40){this.vars.cerabox.setStyles({top:((window.getSize().y/2))+"px"});b["margin-top"]=((-a/2)+document.id(document.body).getScroll().y)+"px"}else{if(a+40>(document.id(document.body).getScrollSize().y-document.id(document.body).getScroll().y)){this.vars.cerabox.setStyles({"margin-top":"0",top:(document.id(document.body).getScrollSize().y-(a+60)>20?document.id(document.body).getScrollSize().y-(a+60):20)+"px"})}else{this.vars.cerabox.setStyles({"margin-top":"0",top:document.id(document.body).getScroll().y+20+"px"})}}return this.vars.cerabox.set("morph",{duration:150}).morph(b).get("morph")},_showInit:function(){clearInterval(this.timeOuter);clearInterval(this.loaderTimer);document.id("cerabox-loading").setStyle("display","none")},_openWindow:function(f,a,g,c){if(this.vars.cerabox.getElement(".cerabox-content iframe")){this.vars.cerabox.getElement(".cerabox-content iframe").setStyles({width:f,height:a})}this.vars.currentIndex=c=c?c:this.vars.currentIndex;var e=this.vars.items[c[0]][c[1]];var d=this;if(this.vars.windowOpen==true){this.vars.cerabox.getElement(".cerabox-content").set("opacity",0).set("tween",{duration:200}).tween("opacity","1").get("tween").addEvent("complete",function(){this.removeEvents("complete");d.vars.busy=false;d._addNavButtons(c);if(null!==d.options.events._onChange){d.options.events._onChange.call(d,e,d.vars.items[c[0]])}else{d.options.events.onChange.call(d,e,d.vars.items[c[0]])}});return}this.vars.cerabox.getElement(".cerabox-content").set("opacity","1");if(null!==this.options.events._onOpen){this.options.events._onOpen.call(this,e,this.vars.items[c[0]])}else{this.options.events.onOpen.call(this,e,this.vars.items[c[0]])}var b={};if(window.getSize().x>f+40){Object.append(b,{"margin-left":(f>0?((-f/2)+document.id(document.body).getScroll().x):0)+"px",left:((window.getSize().x/2))+"px",right:"auto"})}else{Object.append(b,{"margin-left":"0",left:((window.getSize().x-(f+20))+document.id(document.body).getScroll().x)+"px",right:"20px"})}if(window.getSize().y>a+40){Object.append(b,{"margin-top":(a>0?((-a/2)+document.id(document.body).getScroll().y):0)+"px",top:((window.getSize().y/2))+"px",bottom:"auto"})}else{if(a+40>(document.id(document.body).getScrollSize().y-document.id(document.body).getScroll().y)){Object.append(b,{"margin-top":"0",top:(document.id(document.body).getScrollSize().y-(a+60)>20?document.id(document.body).getScrollSize().y-(a+60):20)+"px"})}else{Object.append(b,{"margin-top":"0",top:document.id(document.body).getScroll().y+20+"px"})}}switch(g){case"ease":Object.append(b,{width:f,height:a,opacity:"1"});this.vars.cerabox.setStyles({display:"block",left:e.getPosition().x+"px",top:e.getPosition().y+"px",width:e.getSize().x+"px",height:e.getSize().y+"px",margin:0,opacity:0}).set("morph",{duration:200}).morph(b).get("morph").addEvent("complete",function(){this.removeEvents("complete");d.vars.busy=false;d._addNavButtons(c);if(null!==d.options.events._onAnimationEnd){d.options.events._onAnimationEnd.call(d,e,d.vars.items[c[0]])}else{d.options.events.onAnimationEnd.call(d,e,d.vars.items[c[0]])}});break;case"fade":default:Object.append(b,{display:"block",width:f,height:a,opacity:0});this.vars.cerabox.setStyles(b).set("tween",{duration:200}).tween("opacity","1").get("tween").addEvent("complete",function(){this.removeEvents("complete");d.vars.busy=false;d._addNavButtons(c);if(null!==d.options.events._onAnimationEnd){d.options.events._onAnimationEnd.call(d,e,d.vars.items[c[0]])}else{d.options.events.onAnimationEnd.call(d,e,d.vars.items[c[0]])}});break}e.blur();this.vars.windowOpen=true},_displayOverlay:function(){document.id("cerabox-background").setStyles({display:"block",opacity:".5",height:document.id(document.body).getScrollSize().y+"px",width:document.id(document.body).getScrollSize().x+"px"})},_displayLoader:function(b,a){if(true===b&&!this.vars.windowOpen){document.id("cerabox-loading").setStyles({position:"absolute",top:(((a.getSize().y/2)-(document.id("cerabox-loading").getStyle("height").toInt()/2))+a.getPosition().y)+"px",left:(((a.getSize().x/2)-(document.id("cerabox-loading").getStyle("width").toInt()/2))+a.getPosition().x)+"px","margin-left":0,"margin-top":0})}else{document.id("cerabox-loading").set("style","")}document.id("cerabox-loading").setStyle("display","block");this._loaderAnimation()},_loaderAnimation:function(a){if(!a){a=0}document.id("cerabox-loading").getElement("div").setStyle("top",(a*-40)+"px");a=(a+1)%12;if(document.id("cerabox-loading").getStyle("display")!="none"){this._loaderAnimation.delay(60,this,a)}},_getSizeElement:function(b,f){var a=0,e=0;if(b.tagName=="IFRAME"){try{a=(b.get("width")?this._sizeStringToInt(b.get("width"),"x"):(b.getStyle("width").toInt()>1?this._sizeStringToInt(b.getStyle("width"),"x"):(b.contentWindow.document.getScrollWidth()?b.contentWindow.document.getScrollWidth():window.getSize().x*0.75)))}catch(d){a=window.getSize().x*0.75;this._log(d)}try{e=(b.get("height")?this._sizeStringToInt(b.get("height"),"y"):(b.getStyle("height").toInt()>1?this._sizeStringToInt(b.getStyle("height"),"y"):(b.contentWindow.document.getScrollHeight()?b.contentWindow.document.getScrollHeight():window.getSize().y*0.75)))}catch(d){e=window.getSize().y*0.75;this._log(d)}if(Browser.ie){e=e+20}if(false===f){if((window.getSize().y-100)<e){a=a+(Browser.Platform.mac?15:17)}return{width:(window.getSize().x-50)<a?(window.getSize().x-50):a,height:(window.getSize().y-100)<e?(window.getSize().y-100):e}}else{return{width:a,height:e}}}a=(b.get("width")?this._sizeStringToInt(b.get("width"),"x"):(b.getStyle("width")&&b.getStyle("width")!="auto"?this._sizeStringToInt(b.getStyle("width"),"x"):window.getSize().x-50));e=(b.get("height")?this._sizeStringToInt(b.get("height"),"y"):(b.getStyle("height")&&b.getStyle("height")!="auto"?this._sizeStringToInt(b.getStyle("height"),"y"):window.getSize().y-100));if(false===f){var c=Math.min(Math.min(window.getSize().x-50,a)/a,Math.min(window.getSize().y-100,e)/e);return{width:Math.round(c*a),height:Math.round(c*e)}}else{return{width:a,height:e}}},_sizeStringToInt:function(a,b){return(typeof a=="string"&&a.test("%")?window.getSize()[b]*(a.toInt()/100):a.toInt())},_resize:function(){if(this.vars.windowOpen==true){document.id("cerabox-background").setStyles({height:window.getSize().y+"px",width:window.getSize().x+"px"});if(window.getSize().x>this.vars.cerabox.getSize().x+40){this.vars.cerabox.setStyles({"margin-left":(this.vars.cerabox.getSize().x>0?((-this.vars.cerabox.getSize().x/2)+document.id(document.body).getScroll().x):0)+"px",left:((window.getSize().x/2))+"px",right:"auto"})}else{this.vars.cerabox.setStyles({"margin-left":"0",left:"auto",right:"20px"})}if(window.getSize().y>this.vars.cerabox.getSize().y+40){this.vars.cerabox.setStyles({"margin-top":(this.vars.cerabox.getSize().y>0?((-this.vars.cerabox.getSize().y/2)+document.id(document.body).getScroll().y):0)+"px",top:((window.getSize().y/2))+"px",bottom:"auto"})}else{if(this.vars.cerabox.getSize().y+40>(document.id(document.body).getScrollSize().y-document.id(document.body).getScroll().y)){this.vars.cerabox.setStyles({"margin-top":"0",top:(document.id(document.body).getScrollSize().y-(this.vars.cerabox.getSize().y+60)>20?document.id(document.body).getScrollSize().y-(this.vars.cerabox.getSize().y+60):20)+"px"})}else{this.vars.cerabox.setStyles({"margin-top":"0",top:document.id(document.body).getScroll().y+20+"px"})}}document.id("cerabox-background").setStyles({height:document.id(document.body).getScrollSize().y+"px",width:document.id(document.body).getScrollSize().x+"px"})}},_addCallbacks:function(a){this.options.events._onClose=null;this.options.events._onOpen=null;this.options.events._onChange=null;this.options.events._onAnimationEnd=null;if(null!==a){if(typeof a.onClose=="function"){this.options.events._onClose=a.onClose}if(typeof a.onOpen=="function"){this.options.events._onOpen=a.onOpen}if(typeof a.onChange=="function"){this.options.events._onChange=a.onChange}if(typeof a.onAnimationEnd=="function"){this.options.events._onAnimationEnd=a.onAnimationEnd}}},_log:function(a,c){try{console.log(a)}catch(b){if(c){alert(a)}}}});
/*
 ---
 description: Date picker that works in an iframe and allows for keyboard navigation.

 license: MIT-style

 authors:
 - Micah Nolte

 requires:
 - core:1.2.4
 - core:1.2.4/Array
 - core:1.2.4/String
 - /MooTools.More
 - /Date
 - /IFrameShim

 provides: [SlimPicker]

 ...
 */

var SlimPicker = new Class({

    Implements: [Options, Events],

    options: {
        containerClass: 'sp_container',   // This will always start at the top left of the input's location.
        calendarClass: 'sp_cal',          // Use this to alter the placement of the calendar in the CSS.
        hoverClass: 'sp_hover',           // If using the keyboard, this gets moved around the calendar by arrow keys.
        selectedClass: 'sp_selected',     // The date picked up from what was in the input field.
        todayClass: 'sp_today',           // Always just on today. The sp_selected usually overrides this.
        emptyClass: 'sp_empty',           // Placed on the <td> of a date with no day in it.
        dayClass: 'sp_day',               // Placed on the <td> with a day in it.
        monthClass: 'sp_month',           // On the dropdown for month.
        yearClass: 'sp_year',             // On the dropdown for year.

        fadeDuration: 200,                // How fast the calendar fades in and out.
        hideDelay: 500,                   // How long to wait to close the calendar after the mouse leaves.
        extendedDelay: 5000,              // After a dropdown is open, how long to wait before we give up and hide the calendar.
        showMonth: true,                  // Add the dropdown select for month.
        showYear: true,                   // Add the dropdown select for year.
        autoHide: true,                   // Without this, it won't set a timer to hide the calendar whenever you move away.
        forceDocBoundary: true,           // If the calendar would be shown outside the document, then flip the direction it shows up.
        destroyWhenDone: false,           // After selecting a date, true will remove the calendar completely, and false just hides it.

        // Settings for the calendar itself
        dayChars: 1,
        monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
        dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
        daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], // Leap year is added later
        format: 'dd/mm/yyyy',                                          // How the output looks after selection
        yearStart: (new Date().getFullYear() -
                    5),                     // Default starting year for dropdown options is 5 years ago
        yearRange: 20,                                                 // Show a 10 year span
        yearOrder: 'asc',                                              // Counting up in years
        startDay: 7                       // 1 = week starts on Monday, 7 = week starts on Sunday
    },

    initialize: function(el, options) {

        // There are two ways to set the options on the fly.

        // They can be passed in when this class is started up.
        this.setOptions(options);

        // Saving the input field
        this.input = $(el);

        // Any options in the alt attribute will overwrite ones passed into the initializer
        if (this.input.get('alt')) this.setOptions(JSON.decode(this.input.get('alt')));

        // Saving the document, in case it's in a frame window.
        this.doc = this.input.ownerDocument;
        this.docSize = this.doc.getScrollSize();

        // This sets several instance variables
        this.setCurrentDate();

        // Adding onClick and onFocus events
        this.input.addEvent('click', this.show.bind(this)).addEvent('focus', this.show.bind(this));

        // Watch the keyboard clicks. Since we can't remove this later, just add it once.
        this.doc.addEvent((Browser.Engine.trident || Browser.Engine.webkit) ? 'keydown' :
                          'keypress', this.checkKeys.bindWithEvent(this));

        // Setting the state of the calendar as off.
        this.open = false;
        this.dropDownShowing = false;
    },

    setCurrentDate: function() {
        var inputValue = this.input.get('value');
        this.now = new Date();
        if (inputValue != '') {
            this.current = new Date.parse(inputValue);
        } else {
            this.current = this.now;
        }
        // The date to show on the calendar
        this.currentYear = this.calendarYear = this.current.getFullYear();
        this.currentMonth = this.calendarMonth = this.current.getMonth();
        this.currentDay = this.current.getDate();

        // Keeping track of today to show on the calendar
        this.nowYear = this.now.getFullYear();
        this.nowMonth = this.now.getMonth();
        this.nowDay = this.now.getDate();
    },

    show: function() {
        if (this.open) return true;
        this.open = true;
        if (!this.container) this.create();
        this.draw();
        if (this.shim) this.shim.show();
        this.container.set('tween', {duration: this.options.fadeDuration}).fade(1);
    },

    close: function() {
        this.open = false;
        this.dropDownShowing = false;
        this.removeTimer();
        if (!this.container) return false;
        this.container.set('tween', {onComplete: this.destroyCal.bind(this)}).fade(0);
        if (this.shim) this.shim.hide();
    },

    destroyCal: function() {
        if (!this.options.destroyWhenDone) return true;
        this.container.destroy();
        this.container = false;
    },

    checkKeys: function(e) {
        if (!this.open) {
            return true;
        }
        var availableKeys = ['tab', 'esc', 'enter', 'up', 'down', 'left', 'right']
        if (availableKeys.contains(e.key)) {
            switch (e.key) {
                // If there's a selected day, use that one.
                case 'enter':
                    e.stop();
                    this.tryHoverSelect();
                    break;

                case 'esc':
                    e.stop();
                    this.close();
                    break;

                // Change the focus?
                case 'tab':
                // On a shift-tab, reverse direction
                    this.close();
                //					this.moveFocus(e.shift);
                    break;

                // The rest are the directions
                default:
                    e.stop();
                    this.moveSelection(e.key);
                    break;
            }
        }
    },

    tryHoverSelect: function() {
        var link = this.hoveredDay.getElement('a');
        if (link) {
            this.useSelection(link);
        }
    },

    useSelection: function(el) {
        if (!el) return false;
        var dateArray = el.get('href').split('#')[1].split('|');
        this.input.value = this.formatValue(dateArray[0], dateArray[1], dateArray[2]);
        this.close();
    },

    // Keyboard arrow keys. Wraps around horizontally, but will access the dropdowns and wrap if you move up.
    moveSelection: function(direction) {
        switch (direction) {
            case 'up':
                this.hoverRow = this.hoverRow - 1;
                if (this.hoverRow < 1) {
                    this.hoverRow = this.calendarRows;
                }
                break;
            case 'down':
                this.hoverRow = this.hoverRow + 1;
                if (this.hoverRow > this.calendarRows) {
                    this.hoverRow = 1;
                }
                break;
            case 'left':
            // Row 0 is the dropdown row
                this.hoverCol = this.hoverCol - 1;
                if (this.hoverCol < 0) {
                    this.hoverCol = 6;
                }
                break;
            case 'right':
                this.hoverCol = this.hoverCol + 1;
                if (this.hoverCol > 6) {
                    this.hoverCol = 0;
                }
                break;
        }
        this.markHoveredDay();
    },

    // Just applies whatever is saved as the hovered day to the calendar.
    // If there aren't that many rows, it pushes it up until there is one.
    markHoveredDay: function() {
        if (this.hoverRow > this.calendarRows) this.hoverRow = this.calendarRows;
        // Row 0 is the dropdown selector one.
        if (this.hoverRow == 0) {
            // Since there's only two, either left or right
            this.calendar.getElements('.' + this.options.hoverClass).removeClass(this.options.hoverClass);

        } else {
            var row = this.calendar.getElements('tbody tr')[this.hoverRow];
            this.hoveredDay = row.getElements('td')[this.hoverCol];
            this.calendar.getElements('.' + this.options.hoverClass).removeClass(this.options.hoverClass);
            this.hoveredDay.addClass(this.options.hoverClass);
        }
    },

    // TODO: Not currently implemented, due to usability issues.
    // If both are showing, this just switches which one it is.
    // If there's one, it gives it focus.
    moveAndFocusDropdown: function() {
        // Make sure at lease one dropdown is there before doing anything.
        if (!this.options.showMonth && !this.options.showYear) {
            return true;
        }
        // If nothing has been selected, pick the first one.
        if (!this.hoveredDropdown) {
            this.hoveredDropdown = 0;
            // Both dropdowns need to be showing for this to do anything
        } else if (this.options.showMonth && this.options.showYear) {

        }
        this.thead.getElement('select')[this.hoveredDropdown].focus();
    },

    // TODO?
    moveFocus: function(reverse) {
        // Should it start on the month or year dropdown, or the calendar itself?
        // After tabbing away, should it just close the calendar, or determine the next form field?
        // Should there by a highlighting to show what has focus?
    },

    create: function() {
        // Don't need to create it if it already exists.
        if (this.container) {
            return false;
        }
        // Prevent cursor in input field.
        this.input.set('readonly', 'true').set('autocomplete', 'off');
        // The "new Element" doesn't work in frames in IE, so creating it old-school.
        this.container = $(this.doc.createElement('div'));
        // Adding it to the bottom of the document. This allows it to overlay anything we need it to.
        this.container
                .addClass(this.options.containerClass)
                .setStyle('opacity', 0)
                .inject(this.doc.body);

        // Set the transparent container at the top left of the input field.
        this.position();

        // Add a timer for if you move your mouse away from it
        if (this.options.autoHide) {
            this.container.addEvent('mouseenter', this.removeTimer.bind(this)).addEvent('mouseleave', this.addTimer.bind(this));
        }
        this.calendar = $(this.doc.createElement('div'));
        this.calendar.addClass(this.options.calendarClass).inject(this.container);
//        this.shim = new IframeShim(this.calendar);
    },

    // String building is such fun.

    draw: function() {
        var str = '<table>';

        // Making dropdowns
        if (this.options.showMonth || this.options.showYear) {
            str += this.addMonthYearDropdowns();
        }
        str += '<tbody>';

        var calendarDate = new Date();
        calendarDate.setFullYear(this.calendarYear, this.calendarMonth, 1);
        // Leap year
        this.options.daysInMonth[1] = (calendarDate.isLeapYear() ? 29 : 28);

        // The first day is set as current
        var currentDay = (1 - (7 + calendarDate.getDay() - this.options.startDay) % 7);

        str += '<tr>';
        this.options.dayNames.each(function(name, index) {
            str +=
            '<th>' + this.options.dayNames[(this.options.startDay + index) % 7].substr(0, this.options.dayChars) +
            '</th>';
        }, this);
        str += '</tr>';

        // Keeping track of row for hoveredDay purposes
        var row = 0;
        while (currentDay <= this.options.daysInMonth[this.calendarMonth]) {
            row += 1;
            str += '<tr>';
            for (i = 0; i < 7; i++) {
                if ((currentDay <= this.options.daysInMonth[this.calendarMonth]) && (currentDay > 0)) {
                    str +=
                    '<td><a href="#' + this.calendarYear + '|' + (parseInt(this.calendarMonth) + 1) + '|' + currentDay +
                    '" class="' + this.options.dayClass;
                    // Show the currently selected day
                    if ((currentDay == this.currentDay) && (this.calendarMonth == this.currentMonth) &&
                        (this.calendarYear == this.currentYear)) {
                        str += ' ' + this.options.selectedClass;
                        this.hoverRow = row;
                        this.hoverCol = i;
                    }
                    // Show today
                    if ((currentDay == this.nowDay) && (this.calendarMonth == this.nowMonth) &&
                        (this.calendarYear == this.nowYear)) {
                        str += ' ' + this.options.todayClass;
                    }
                    str += '">' + currentDay + '</a></td>';
                } else {
                    str += '<td class="' + this.options.emptyClass + '"> </td>';
                }
                currentDay++;
            }
            str += '</tr>';
        }

        str += '</tbody></table>';

        this.calendar.set('html', str);
        this.calendarRows = row;
        this.position();
        this.addCalendarEvents();
    },

    addMonthYearDropdowns: function () {
        var str = '<thead><tr><th colspan="7">';
        if (this.options.showMonth) {
            str += '<select tabindex="' + this.tabIndex + '" class="' + this.options.monthClass + '">';
            this.options.monthNames.each(function(name, index) {
                str += this.addOption(index, name, parseInt(this.calendarMonth));
            }, this);
            str += '</select>';
        }
        if (this.options.showYear) {
            str += '<select tabindex="' + this.tabIndex + '" class="' + this.options.yearClass + '">';
            if (this.options.yearOrder == 'desc') {
                for (var y = this.options.yearStart; y > (this.options.yearStart - this.options.yearRange - 1); y--) {
                    str += this.addOption(y, y, parseInt(this.calendarYear));
                }
            } else {
                for (var y = this.options.yearStart; y < (this.options.yearStart + this.options.yearRange + 1); y++) {
                    str += this.addOption(y, y, parseInt(this.calendarYear));
                }
            }
            str += '</select>';
        }
        str += '</th></tr></thead>';
        return str;
    },

    addOption: function(value, name, selected) {
        str = '<option value="' + value + '"';
        if (selected && (selected == value)) {
            str += ' selected="selected"';
        }
        str += '>' + name + '</option>';
        return str;
    },

    addCalendarEvents: function() {
        this.tbody = this.calendar.getElement('tbody');
        this.tbody.addEvent('click', this.calendarClick.bindWithEvent(this));
        // Save the dropdown row for accessing with the keyboard later
        this.thead = this.calendar.getElement('thead');
        // Only get and set events for the month/year dropdowns if the options allow it.
        if (this.options.showYear) {
            this.yearSelect = this.calendar.getElement('.' + this.options.yearClass);
            this.yearSelect.addEvent('focus', this.markDropdownShowing.bind(this)).addEvent('change', this.selectChanged.bind(this));
        }
        if (this.options.showMonth) {
            this.monthSelect = this.calendar.getElement('.' + this.options.monthClass);
            this.monthSelect.addEvent('focus', this.markDropdownShowing.bind(this)).addEvent('change', this.selectChanged.bind(this));
        }
    },

    // Get the location/dimensions of the input field and set the container to the same
    position: function() {
        if (!this.input || !this.container) return false;
        var coords = this.input.getCoordinates();
        this.container.setStyles({
            height: coords.height,
            width: coords.width,
            left: coords.left,
            top: coords.top
        });
        if (this.calendar && this.options.forceDocBoundary) this.checkDocBoundary();
        if (this.shim) this.shim.position();
    },

    // If the calendar would show up below the document, make it go up instead
    checkDocBoundary: function() {
        var calSize = this.calendar.getCoordinates();
        if (calSize.right > this.docSize.x) {
            this.calendar.setStyles({left: 'auto', right: 0});
        }
        if (calSize.bottom > this.docSize.y) {
            this.calendar.setStyles({top: 'auto', bottom: 0});
        }
        if (calSize.left < 0) {
            this.calendar.setStyles({left: 0, right: 'auto'});
        }
        if (calSize.top < 0) {
            this.calendar.setStyles({top: 0,bottom: 'auto'});
        }
    },

    // Whenever the dropdown is out, we disable the timer that makes the calendar disappear.
    // We also set a longer timer, in case they don't actually make a selection.
    markDropdownShowing: function() {
        this.dropDownShowing = true;
        this.extendedTimer = this.close.bind(this).delay(this.options.extendedDelay);
    },

    // They made a selection in one of the month/year dropdowns
    selectChanged: function() {
        this.dropDownShowing = false;
        $clear(this.extendedTimer);
        this.calendarMonth = this.monthSelect.get('value');
        this.calendarYear = this.yearSelect.get('value');
        this.draw();
    },

    // A click on the <tbody> happened, so go up until you get a link, or hit the top.
    calendarClick: function(e) {
        var target = $(e.target);
        var target_tag = target.get('tag');
        while ((target_tag != 'a') && (target_tag != 'input') && (target_tag != 'html')) {
            target = target.getParent();
            if (!target) return;
            target_tag = target.get('tag');
        }
        if (target.hasClass(this.options.dayClass)) {
            e.stop();
            this.useSelection(target);
        }
    },

    addTimer: function() {
        // Checks the "dropDownShowing" in case they have a dropdown open
        if (!this.dropDownShowing) this.timer = this.close.bind(this).delay(this.options.hideDelay);
    },

    removeTimer: function() {
        $clear(this.timer);
    },

    formatValue: function(year, month, day) {
        var dateStr = '';
        if (day < 10) day = '0' + day;
        if (month < 10) month = '0' + month;
        dateStr = this.options.format.replace(/dd/i, day).replace(/mm/i, month).replace(/yyyy/i, year);
        this.currentYear = this.calendarYear = year;
        this.currentMonth = this.calendarMonth = '' + (month - 1) + '';
        this.currentDay = day;
        return dateStr;
    }

});

var MultiAdder = new Class({

    addButton: null,
    selectBox: null,
    selectedTable: null,
    addURI: null,
    removeURI: null,
    data: null,

    initialize: function (addButton, selectBox, selectedTable, addURI, removeURI, data) {
        var itemRow;
        this.addButton = addButton;
        this.selectBox = selectBox;
        this.selectedTable = selectedTable;
        this.addURI = addURI;
        this.removeURI = removeURI;
        this.data = data == undefined ? {} : data;
        this.addButton.addEvent('click', function () {
            var id = selectBox.get('value');
            var name = selectBox.getSelected().get('html')[0];
            if (id != '') {
                this.add(id, name);
            }
            return false;
        }.bind(this));
        selectedTable.getChildren().getChildren()[0].each(function (itemRow) {
            itemRow.getElementsByClassName('remove_button')[0].addEvent('click', function () {
                this.remove(itemRow.get('id'));
                return false;
            }.bind(this));
        }.bind(this));
    },

    add : function (id, name) {
        var itemRow;
        if (this.selectedTable.getElementById(id)) {
            return; //Item has already been added
        }
        itemRow = new Element('tr', {html: '<td>' + name + '</td><td class="remove"><a>Remove</a></td>', id: id});
        itemRow.inject(this.selectedTable.getChildren()[0]);
        itemRow.getElements('a')[0].addEvent('click', function () { this.remove(id); }.bind(this));
        new Request.JSON({
            url: this.addURI,
            data : Object.merge(this.data, {'countryID' : id})
        }).send();
    },

    remove : function (id) {
        var itemRow = this.selectedTable.getElementById(id);
        itemRow.dispose();
        new Request.JSON({
            url: this.removeURI,
            data : Object.merge(this.data, {'countryID' : id})
        }).send();
    }

});
var MBA = {

    init : function () {
        MBA.setupIndex();
        if ($('contact-us')) {
            MBA.setupContactUs();
        }
    },

    setupIndex : function () {
        new AutoScrollTabs('testimonials');
        if ($('featuredIn')) {
            new Slider($('featuredIn'), $('featuredIn').getElements('div.slide'));
        }
        if ($('awardsReceived')) {
            new Slider($('awardsReceived'), $('awardsReceived').getElements('div.slide'));
        }
        if ($('caseStudies')) {
            new Slider($('caseStudies'), $('caseStudies').getElements('div.slide'));
        }
        if ($('clientPromos')) {
            new Slider($('clientPromos'), $('clientPromos').getElements('div.slide'));
        }
    },

    setupContactUs : function () {
        $('contact-us').getElements('[type=text]').each(function (e) {
            new OverText(e);
        });
        new Form.Validator.Inline($('contact-us'));
    }

};

document.addEvent('domready', MBA.init);
var MBA_REGISTRATION = {

    _FORM_BASE_NAME : "mba_registration_form",
    _MAXIMUM_INDUSTRIES_SELECTED : 5,
    _MAXIMUM_FUNCTIONS_SELECTED : 5,
    _MAXIMUM_COUNTRIES_SELECTED : 5,

    init : function () {
        Locale.use('en-GB');
        var currentStep;
        var form;
        for (var i = 1; i < 6; i++) {
            form = $(MBA_REGISTRATION._FORM_BASE_NAME + '_step_' + i);
            if (form) {
                currentStep = i;
                form.getElements('[type=text]').each(function (el) {
                    new OverText(el);
                });
                MBA_REGISTRATION.currentStepFormValidator = new Form.Validator.Inline(form, {
                    onFormValidate: eval("MBA_REGISTRATION.validateStep" + i),
                    evaluateFieldsOnBlur:false,
                    evaluateFieldsOnChange:false,
                    useTitles:true
                });
                break;
            }
        }
        $$('a').each(function (e) {
            if (e.hasClass('external')) {
                e.setProperty('target', '_blank');
            }
        });
        if ($('recaptcha_response_field') && form) {
            $('password').addClass('validate-alphanum minLength:6 maxLength:100');
            $('cv').addClass('required');
        }
        switch (currentStep) {
            case 1:
                MBA_REGISTRATION.setupStep1();
                break;
            case 2:
                MBA_REGISTRATION.setupStep2();
                break;
            case 3:
                MBA_REGISTRATION.setupStep3();
                break;
            case 4:
                MBA_REGISTRATION.setupStep4();
                break;
            case 5:
                MBA_REGISTRATION.setupStep5();
                break;
        }
    },

    validateStep1 : function (passed, form, event) {
        //
    },

    validateStep2 : function (passed, form, event) {
        //
    },

    validateStep3 : function (passed, form, event) {
        var areasToCheck = ['validate-typeOfRole','validate-industry','validate-function','validate-country','validate-eligable'];
        var error = false;
        for (var i = 0; i < areasToCheck.length; i++) {
            var selected = false;
            var countSelected = 0;
            $$('#' + areasToCheck[i] + ' input').each(function (e) {
                if (e.checked) {
                    selected = true;
                    countSelected++;
                }
            });
            $(areasToCheck[i] + '-error').style.display = !selected ? 'block' : 'none';
            if (areasToCheck[i] == 'validate-industry') {
                if (countSelected > MBA_REGISTRATION._MAXIMUM_INDUSTRIES_SELECTED) {
                    error = true;
                }
                $('validation-error-industry-max-5').style.display = countSelected > MBA_REGISTRATION._MAXIMUM_INDUSTRIES_SELECTED ? 'block' : 'none';
            } else if (areasToCheck[i] == 'validate-function') {
                if (countSelected > MBA_REGISTRATION._MAXIMUM_FUNCTIONS_SELECTED) {
                    error = true;
                }
                $('validation-error-function-max-5').style.display = countSelected > MBA_REGISTRATION._MAXIMUM_COUNTRIES_SELECTED ? 'block' : 'none';
            } else if (areasToCheck[i] == 'validate-country') {
                if (countSelected > MBA_REGISTRATION._MAXIMUM_COUNTRIES_SELECTED) {
                    error = true;
                }
                $('validation-error-country-max-5').style.display = countSelected > MBA_REGISTRATION._MAXIMUM_COUNTRIES_SELECTED ? 'block' : 'none';
            } else if (areasToCheck[i] == 'validate-eligable') {
                if (countSelected > MBA_REGISTRATION._MAXIMUM_COUNTRIES_SELECTED) {
                    error = true;
                }
                $('validation-error-eligable-max-5').style.display = countSelected > MBA_REGISTRATION._MAXIMUM_COUNTRIES_SELECTED ? 'block' : 'none';
            }
            if (!selected) {
                error = true;
            }
        }
        if (error) {
            $('validation-error').style.display = 'block';
            event.preventDefault();
        }
    },

    validateStep4 : function (passed, form, event) {
        //
    },

    validateStep5 : function (passed, form, event) {
        //
    },

    setupStep1 : function () {
        MBA_REGISTRATION.setupNextSave(1);
    },

    setupStep2 : function () {
        var acadExpItems;
        var langExpItems;
        MBA_REGISTRATION.setupNextSave(2);
        acadExpItems = $('acadexptable').getElementsByTagName('tr');
        for (var i = 0; i < acadExpItems.length; i++) {
            $(acadExpItems[i]).getChildren()[0].addEvent('click', function () {
                new Request.JSON({
                    url: 'mbauser.academicexperience.get.do?academicExperienceID=' + this.parentNode.id,
                    onSuccess: function (academicExperience) {
                        $('academicExperience_institution_id').value = academicExperience.institutionID;
                        $('academicExperience_specialisation').value = academicExperience.specialisation;
                        $('academicExperience_qualification_id').value = academicExperience.qualificationID;
                        $('academicExperience_graduationYear').value = academicExperience.graduationYear;
                        if (academicExperience.isExpected) {
                            $('academicExperience_expected').checked = true;
                        }
                    }
                }).send();
                new Request.JSON({url: 'mbauser.academicexperience.remove.do?academicExperience.id=' + this.parentNode.id}).send();
                this.parentNode.dispose();
                return false;
            });
        }
        langExpItems = $('langexptable').getElementsByTagName('tr');
        for (var i = 0; i < langExpItems.length; i++) {
            $(langExpItems[i]).getChildren()[0].addEvent('click', function () {
                new Request.JSON({
                    url: 'mbauser.languageexperience.get.do?languageExperienceID=' + this.parentNode.id,
                    onSuccess: function (languageExperience) {
                        $('languageExperience_language_id').value = languageExperience.languageID;
                        $('languageExperience_languageProficiency_id').value = languageExperience.languageProficiencyID;
                    }
                }).send();
                new Request.JSON({url: 'mbauser.languageexperience.remove.do?languageExperience.id=' +
                                       this.parentNode.id}).send();
                this.parentNode.dispose();
                return false;
            });
        }
        $('academicExperience_graduationYear').addEvent('change', function (e) {
            if (parseInt(this.value) > 2011) {
                $('academicExperience_obtained').checked = false;
                $('academicExperience_expected').checked = true;
            } else {
                $('academicExperience_obtained').checked = true;
                $('academicExperience_expected').checked = false;
            }
        });
        new Form.Validator.Inline($(MBA_REGISTRATION._FORM_BASE_NAME + '_add_academicexperience'));
        new Form.Validator.Inline($(MBA_REGISTRATION._FORM_BASE_NAME + '_add_languageexperience'));
    },

    setupStep3 : function () {
        var accordionOptions = {
            onActive: function (toggler, element) {
                $$(this.togglers).each(function (element) {
                    element.getElements('span').addClass('more');
                    element.getElements('span').removeClass('collapse');
                });
                toggler.getElements('span').addClass('collapse');
                toggler.getElements('span').removeClass('more');
            }
        }
        var updateRemunerationRanges = function (type, payRate) {
            JMS.updateRemunerationRanges($(type + 'Currency').get('value'), payRate, $(type + 'From'), $(type + 'To'));
        };
        new Fx.Accordion($$('#validate-country h5'), $$('#validate-country ul'), accordionOptions);
        new Fx.Accordion($$('#validate-eligable h5'), $$('#validate-eligable ul'), accordionOptions);
        updateRemunerationRanges('dailyRate', 0);
        updateRemunerationRanges('monthlyRate', 1);
        updateRemunerationRanges('salaryRate', 2);
        $('dailyRateCurrency').addEvent('change', function () { updateRemunerationRanges('dailyRate', 0); });
        $('monthlyRateCurrency').addEvent('change', function () { updateRemunerationRanges('monthlyRate', 1); });
        $('salaryRateCurrency').addEvent('change', function () { updateRemunerationRanges('salaryRate', 2); });
        MBA_REGISTRATION.setupNextSave(3);
    },

    setupStep4 : function () {
        var startPicker;
        var endPicker;
        var profExpItems;
        MBA_REGISTRATION.setupNextSave(4);
        $('mbaUser_keywords').addEvent('focus', function () {
            $('keywords_caption').fade('in');
        });
        $('mbaUser_keywords').addEvent('blur', function () {
            $('keywords_caption').fade('out');
        });
        new Form.Validator.Inline($(MBA_REGISTRATION._FORM_BASE_NAME + '_add_professionalexperience'), {
            onFormValidate: function () {
                $('mbaUser_keywords_hidden').value = $('mbaUser_keywords').value;
            }
        });
        profExpItems = $('profexptable').getElementsByTagName('tr');
        for (var i = 0; i < profExpItems.length; i++) {
            //TODO This gives an 'object doesn't support this property or method' error on IE 7 and 8
            $(profExpItems[i]).getChildren()[0].addEvent('click', function () {
                new Request.JSON({
                    url: 'mbauser.professionalexperience.get.do?professionalExperienceID=' + this.parentNode.id,
                    onSuccess: function (professionalExperience) {
                        $('professionalExperience_industry_id').value = professionalExperience.industryID;
                        $('professionalExperience_companyName').value = professionalExperience.companyName;
                        $('professionalExperience_function_id').value = professionalExperience.functionID;
                        $('fromDate').value = professionalExperience.from;
                        if (professionalExperience.isOngoing) {
                            $('ongoing').checked = true;
                        }
                        $('toDate').value = professionalExperience.to;
                        $('professionalExperience_region_id').value = professionalExperience.regionID;
                        professionalExperience_region_idRedirect($('professionalExperience_region_id').options.selectedIndex);
                        $('professionalExperience_country_id').value = professionalExperience.countryID;
                        $('professionalExperience_achievements').value = professionalExperience.achievements;
                    }
                }).send();
                new Request.JSON({url: 'mbauser.professionalexperience.remove.do?professionalExperience.id=' +
                                       this.parentNode.id}).send();
                this.parentNode.dispose();
                return false;
            });
        }
        startPicker = new SlimPicker($('fromDate'));
        startPicker.options.yearRange = 60;
        startPicker.options.yearStart = new Date().getFullYear() - startPicker.options.yearRange;
        endPicker = new SlimPicker($('toDate'));
        endPicker.options.yearRange = 60;
        endPicker.options.yearStart = new Date().getFullYear() - endPicker.options.yearRange;
        $$('input[name=status]').addEvent('change', function () {
            if ($$('input[name=status]:checked')[0].value == 'past') {
                $('toDate').setStyle('text-align', 'left');
                $('toDate').setStyle('font-style', 'normal');
                $('toDate').set('value', '');
                $('toDate').disabled = false;
                $('toDate').toggleClass('required');
            } else {
                $('toDate').setStyle('text-align', 'center');
                $('toDate').setStyle('font-style', 'italic');
                $('toDate').set('value', 'Ongoing');
                $('toDate').disabled = true;
                $('toDate').toggleClass('required');
            }
        });
    },

    setupStep5 : function () {
        MBA_REGISTRATION.setupNextSave(5);
    },

    setupNextSave : function (stepNumber) {
        if ($('step' + stepNumber + '_next')) {
            $('step' + stepNumber + '_next').addEvent('click', function () {
                MBA_REGISTRATION.submitStep(stepNumber);
            });
        }
        if ($('step' + stepNumber + '_save')) {
            $('step' + stepNumber + '_save').addEvent('click', function () {
                MBA_REGISTRATION.saveStep(stepNumber);
            });
        }
        if ($('step' + stepNumber + '_back')) {
            $('step' + stepNumber + '_back').addEvent('click', function () {
                MBA_REGISTRATION.backStep(stepNumber);
            });
        }
    },

    submitStep : function (stepNumber) {
        $(MBA_REGISTRATION._FORM_BASE_NAME + '_saved').value = false;
        if (MBA_REGISTRATION.currentStepFormValidator.validate()) {
            $(MBA_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    },

    saveStep : function (stepNumber) {
        $(MBA_REGISTRATION._FORM_BASE_NAME + '_saved').value = true;
        if (MBA_REGISTRATION.currentStepFormValidator.validate()) {
            $(MBA_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    },

    backStep : function (stepNumber) {
        $(MBA_REGISTRATION._FORM_BASE_NAME + '_back').value = true;
        if (MBA_REGISTRATION.currentStepFormValidator.validate()) {
            $(MBA_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    }

}
var COMPANY_REGISTRATION = {

    _FORM_BASE_NAME : "company_registration_form",

    init : function () {
        var currentStep;
        var form;
        Locale.use('en-GB');
        for (var i = 1; i < 4; i++) {
            form = $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_step_' + i);
            if (form) {
                currentStep = i;
                form.getElements('[type=text]').each(function (el) {
                    new OverText(el);
                });
                COMPANY_REGISTRATION.currentStepFormValidator = new Form.Validator.Inline(form, {
                    onFormValidate: eval("COMPANY_REGISTRATION.validateStep" + i),
                    evaluateFieldsOnBlur:false,
                    evaluateFieldsOnChange:false,
                    useTitles:true
                });
                break;
            }
        }
        $$('a').each(function (el) {
            if (el.hasClass('external')) {
                el.setProperty('target', '_blank');
            }
        });
        switch (currentStep) {
            case 1:
                COMPANY_REGISTRATION.setupStep1();
                break;
            case 2:
                COMPANY_REGISTRATION.setupStep2();
                break;
            case 3:
                COMPANY_REGISTRATION.setupStep3();
                break;
        }
    },

    validateStep1 : function (passed, form, event) {
        //
    },

    validateStep2 : function (passed, form, event) {
        //
    },

    validateStep3 : function (passed, form, event) {
        var error = false;
        if (!$('acceptTCs').checked) {
            error = true;
        }
        if (error) {
            $('validation-error').style.display = 'block';
            event.preventDefault();
        }
    },

    setupStep1 : function () {
        var jobSummaryLink = $('job_summary');
        COMPANY_REGISTRATION.setupNextSave(2);
        if (jobSummaryLink) {
            jobSummaryLink.setStyle('color', 'grey'); //Disabled
        }
    },

    setupStep2 : function () {
        var startPicker;
        var endPicker;
        var jobSummaryLink = $('job_summary');
        var isProject = $('jobEndDate') != null;
        var updateRemunerationRanges = function () {
            JMS.updateRemunerationRanges($('currency').get('value'), (isProject ? 3 : 2), $('remunerationFrom'), $('remunerationTo'));
        };
        COMPANY_REGISTRATION.setupNextSave(2);
        if (jobSummaryLink) {
            jobSummaryLink.addEvent('click', function (e) {
                if(!COMPANY_REGISTRATION.currentStepFormValidator.validate()) {
                    e.preventDefault();
                }
                else {
                      $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_step_2').submit()
                }
            });
        }
        new MultiAdder($('jobcountryadd'), $('countryID'), $('countriesconcerntable'), 'job.country.add.do','job.country.remove.do', {'jobID': $('countriesconcerntable').get('name')});
        updateRemunerationRanges();
        $('currency').addEvent('change', updateRemunerationRanges);
        startPicker = new SlimPicker($('jobStartDate'));
        startPicker.options.yearStart = new Date().getFullYear();
        startPicker.options.yearRange = 10;
        if ($('jobEndDate')) { //Check if element exists since job does not have an end date
            endPicker = new SlimPicker($('jobEndDate'));
            endPicker.options.yearStart = new Date().getFullYear();
            endPicker.options.yearRange = 10;
        }
    },

    setupStep3 : function () {
        COMPANY_REGISTRATION.setupNextSave(3);
    },

    setupNextSave : function (stepNumber) {
        if ($('step' + stepNumber + '_next')) {
            $('step' + stepNumber + '_next').addEvent('click', function () {
                COMPANY_REGISTRATION.submitStep(stepNumber);
            });
        }
        if ($('step' + stepNumber + '_save')) {
            $('step' + stepNumber + '_save').addEvent('click', function () {
                COMPANY_REGISTRATION.saveStep(stepNumber);
            });
        }
        if ($('step' + stepNumber + '_back')) {
            $('step' + stepNumber + '_back').addEvent('click', function () {
                COMPANY_REGISTRATION.backStep(stepNumber);
            });
        }
    },

    submitStep : function (stepNumber) {
        $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_saved').value = false;
        if (COMPANY_REGISTRATION.currentStepFormValidator.validate()) {
            $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    },

    saveStep : function (stepNumber) {
        $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_saved').value = true;
        if (COMPANY_REGISTRATION.currentStepFormValidator.validate()) {
            $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    },

    backStep : function (stepNumber) {
        $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_back').value = true;
        if (COMPANY_REGISTRATION.currentStepFormValidator.validate()) {
            $(COMPANY_REGISTRATION._FORM_BASE_NAME + '_step_' + stepNumber).submit();
        }
    }

}
var MBA_DASHBOARD = {

    init : function() {
        if ($('tab_mba_dashboard')) {
            this.setupPopup();
        }
    },

    setupPopup : function () {
        var popupBox;
        var cookie = Cookie.read('returningvisitor');
        if (cookie == null) {
            cookie = Cookie.write('returningvisitor', 'true', {duration: 9999});
            popupBox = new CeraBox({
                events: {
                    onOpen: function() {
                        $$('.cerabox-content #webform_3').addEvent('submit', function (event) {
                            event.preventDefault();
                            if ($$('.cerabox-content #popup-feedback')[0].get('value') == '') {
                                this.close();
                            } else {
                                $$('.cerabox-content #webform_3')[0].submit();
                            }
                        }.bind(this));
                    }
                }
            });
            popupBox.addItems('a#showpopup', {animation: 'ease', displayTitle: false, width: 540, height: 240});
            $('showpopup').fireEvent('click');
        }
    }

}
var COMPANY_DASHBOARD = {

    init : function() {
        if ($('jobedit')) {
            this.setupJobEdit();
        }
    },

    setupJobEdit : function () {
        var startPicker;
        var endPicker;
        var isProject = $('jobEndDate') != null;
        var updateRemunerationRanges = function () {
            JMS.updateRemunerationRanges($('currency').get('value'), (isProject ? 3 : 2), $('remunerationFrom'), $('remunerationTo'));
        };
        new MultiAdder($('jobcountryadd'), $('countryID'), $('countriesconcerntable'), 'job.country.add.do', 'job.country.remove.do', {'jobID': $('countriesconcerntable').get('name')});
        updateRemunerationRanges();
        $('currency').addEvent('change', updateRemunerationRanges);
        startPicker = new SlimPicker($('jobStartDate'));
        startPicker.options.yearStart = new Date().getFullYear();
        startPicker.options.yearRange = 10;
        if ($('jobEndDate')) { //Check if element exists since job does not have an end date
            endPicker = new SlimPicker($('jobEndDate'));
            endPicker.options.yearStart = new Date().getFullYear();
            endPicker.options.yearRange = 10;
        }
    }

}
var JOB_APPLICATION = {

    MILESTONE_ERROR_NO_DESCRIPTION : 'Error: Please provide a description for this milestone.',
    MILESTONE_ERROR_NO_DUE_DATE : 'Error: Please provide a due date for this milestone.',
    milestonesTable : null,
    milestonesErrors : null,
    milestoneDescription : null,
    milestoneDueDate : null,
    milestoneAddButton : null,
    jobApplicationID : null,

    init : function () {
        if ($('covering_letter')) {
            this.initMilestones();
            var milestoneDueDate = new SlimPicker($('duedate'));
            milestoneDueDate.options.yearStart = new Date().getFullYear();
            milestoneDueDate.options.yearRange = 10;
        }
    },

    initMilestones: function () {
        this.milestonesTable = $('milestones');
        this.milestonesErrors = $('milestone_errors');
        this.milestoneDescription = $('description');
        this.milestoneDueDate = $('duedate');
        this.milestoneAddButton = $('add_milestone');
        this.jobApplicationID = this.milestonesTable.get('name');
        this.milestoneAddButton.addEvent('click', function (e) {
            e.preventDefault();
            JOB_APPLICATION.addMilestone();
        });
        this.milestonesTable.getChildren().getChildren()[0].each(function (itemRow) {
            if (itemRow.getElementsByClassName('edit_milestone').length > 0) { //Not the header...
                itemRow.getElementsByClassName('edit_milestone')[0].addEvent('click', function () {
                    JOB_APPLICATION.editMilestone(itemRow);
                });
            }
        });
        this.milestonesTable.getChildren().getChildren()[0].each(function (itemRow) {
            if (itemRow.getElementsByClassName('remove_milestone').length > 0) { //Not the header...
                itemRow.getElementsByClassName('remove_milestone')[0].addEvent('click', function () {
                    JOB_APPLICATION.removeMilestone(itemRow);
                });
            }
        });
    },

    addMilestone : function () {
        var newDueDate = this.milestoneDueDate.get('value');
        var newDescription = this.milestoneDescription.get('value');
        if (newDueDate == '') {
            this.milestonesErrors.set('html', JOB_APPLICATION.MILESTONE_ERROR_NO_DUE_DATE);
            return false;
        }
        if (newDescription == '') {
            this.milestonesErrors.set('html', JOB_APPLICATION.MILESTONE_ERROR_NO_DESCRIPTION);
            return false;
        }
        this.milestonesErrors.set('html', '');
        this.milestoneDescription.set('value', '');
        this.milestoneDueDate.set('value', '');
        new Request.JSON({
            url: 'jobapplication.milestone.add.do',
            data : {'jobApplicationID' : this.jobApplicationID, 'description' : newDescription, 'dueDate' : newDueDate},
            onComplete: function (milestoneID) {
                var milestoneHTML = '<td class="milestone_description">' + newDescription + '</td>'
                                    + '<td class="milestone_due_date">' + newDueDate + '</td>'
                                    + '<td class="edit_milestone"><a>Edit</a></td>'
                                    + '<td class="remove_milestone"><a>Remove</a></td>';
                var milestoneRow = new Element('tr', {html: milestoneHTML, id: milestoneID});
                milestoneRow.inject(JOB_APPLICATION.milestonesTable.getChildren()[0]);
                milestoneRow.getElementsByClassName('edit_milestone')[0].addEvent('click', function () {
                    JOB_APPLICATION.editMilestone(milestoneRow);
                });
                milestoneRow.getElementsByClassName('remove_milestone')[0].addEvent('click', function () {
                    JOB_APPLICATION.removeMilestone(milestoneRow);
                });
            }
        }).send();
        return false;
    },

    editMilestone : function (itemRow) {
        var thisDescription = itemRow.getElementsByClassName('milestone_description')[0].get('text');
        var thisDueDate = itemRow.getElementsByClassName('milestone_due_date')[0].get('text');
        this.removeMilestone(itemRow);
        this.milestoneDescription.set('value', thisDescription);
        this.milestoneDueDate.set('value', thisDueDate);
        return false;
    },

    removeMilestone : function (itemRow) {
        new Request.JSON({
            url: 'jobapplication.milestone.remove.do',
            data : {'milestoneID' : itemRow.get('id')}
        }).send();
        itemRow.dispose();
        return false;
    }

}
var JOB_WORKFLOW = {

    init : function () {
        if ($('job_workflow_companyreview')) {
            this.setupCompanyReview();
        }
        if ($('job_workflow_mbareview')) {
            this.setupMBAUserReview();
        }
    },

    setupCompanyReview : function () {
        var score;
        var recalculateScore = function () {
            score = 0;
            score += parseInt($('job_workflow_companyreview').getElement('input[name=companyReview.briefQuality]:checked').value, 10);
            score += parseInt($('job_workflow_companyreview').getElement('input[name=companyReview.responsiveness]:checked').value, 10);
            score += parseInt($('job_workflow_companyreview').getElement('input[name=companyReview.experienceGained]:checked').value, 10);
            score += parseInt($('job_workflow_companyreview').getElement('input[name=companyReview.workWithClientAgain]:checked').value, 10);
            score = score / 4;
            $('score').set('html', score.toFixed(2));
        }
        recalculateScore();
        $$('[name=companyReview.briefQuality]').addEvent('change', recalculateScore);
        $$('[name=companyReview.responsiveness]').addEvent('change', recalculateScore);
        $$('[name=companyReview.experienceGained]').addEvent('change', recalculateScore);
        $$('[name=companyReview.workWithClientAgain]').addEvent('change', recalculateScore);
    },

    setupMBAUserReview : function () {
        var score;
        var recalculateScore = function () {
            score = 0;
            score += parseInt($('job_workflow_mbareview').getElement('input[name=mbaUserReview.productQuality]:checked').value, 10);
            score += parseInt($('job_workflow_mbareview').getElement('input[name=mbaUserReview.responsiveness]:checked').value, 10);
            score += parseInt($('job_workflow_mbareview').getElement('input[name=mbaUserReview.value]:checked').value, 10);
            score += parseInt($('job_workflow_mbareview').getElement('input[name=mbaUserReview.professionalism]:checked').value, 10);
            score = score / 4;
            $('score').set('html', score.toFixed(2));
        }
        recalculateScore();
        $$('[name=mbaUserReview.productQuality]').addEvent('change', recalculateScore);
        $$('[name=mbaUserReview.responsiveness]').addEvent('change', recalculateScore);
        $$('[name=mbaUserReview.value]').addEvent('change', recalculateScore);
        $$('[name=mbaUserReview.professionalism]').addEvent('change', recalculateScore);
    }

}
var JMS = {

    REMUNERATION_GBP_DAILY : [125, 300, 500, 600, 700, 800, 900, 1000, 1200],
    REMUNERATION_GBP_MONTHLY : [2500, 6000, 10000, 12000, 14000, 16000, 18000, 20000, 24000],
    REMUNERATION_GBP_SALARY : [30000, 40000, 50000, 60000, 75000, 100000, 150000, 250000, 500000],
    REMUNERATION_GBP_PROJECT : [0, 500, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 15000, 20000, 25000, 30000, 40000, 50000],
    REMUNERATION_EUR_DAILY : [125, 300, 500, 600, 700, 800, 900, 1000, 1200],
    REMUNERATION_EUR_MONTHLY : [2500, 6000, 10000, 12000, 14000, 16000, 18000, 20000, 24000],
    REMUNERATION_EUR_SALARY : [30000, 40000, 50000, 60000, 75000, 100000, 150000, 250000, 500000],
    REMUNERATION_EUR_PROJECT : [0, 500, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 15000, 20000, 25000, 30000, 40000, 50000],
    REMUNERATION_USD_DAILY : [125, 300, 500, 600, 700, 800, 900, 1000, 1200],
    REMUNERATION_USD_MONTHLY : [2500, 6000, 10000, 12000, 14000, 16000, 18000, 20000, 24000],
    REMUNERATION_USD_SALARY : [30000, 40000, 50000, 60000, 75000, 100000, 150000, 250000, 500000],
    REMUNERATION_USD_PROJECT : [0, 500, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 15000, 20000, 25000, 30000, 40000, 50000],

    init : function () {
        MBA_REGISTRATION.init();
        COMPANY_REGISTRATION.init();
        MBA_DASHBOARD.init();
        COMPANY_DASHBOARD.init();
        JOB_APPLICATION.init();
        JOB_WORKFLOW.init();
    },

    updateRemunerationRanges : function (currency, payRate, selectFrom, selectTo) {
        var ranges = [[this.REMUNERATION_GBP_DAILY, this.REMUNERATION_GBP_MONTHLY, this.REMUNERATION_GBP_SALARY, this.REMUNERATION_GBP_PROJECT],
                      [this.REMUNERATION_EUR_DAILY, this.REMUNERATION_EUR_MONTHLY, this.REMUNERATION_EUR_SALARY, this.REMUNERATION_EUR_PROJECT],
                      [this.REMUNERATION_USD_DAILY, this.REMUNERATION_USD_MONTHLY, this.REMUNERATION_USD_SALARY, this.REMUNERATION_USD_PROJECT]];
        var range = ranges[currency][payRate];
        var option;
        selectFrom.empty();
        selectTo.empty();
        for (var i = 0; i < range.length; i++) {
            option = document.createElement('option');
            option.value = range[i];
            option.innerHTML = this.formatCurrency(range[i]);
            selectFrom.appendChild(option);
        }
        option = document.createElement('option');
        option.value = -1;
        option.innerHTML = this.formatCurrency(-1);
        option.selected = true;
        selectFrom.appendChild(option);
        for (var i = 0; i < range.length; i++) {
            if (range[i] > selectFrom.get('value') || selectFrom.get('value') == -1) {
                option = document.createElement('option');
                option.value = range[i];
                option.innerHTML = this.formatCurrency(range[i]);
                selectTo.appendChild(option);
            }
        }
        option = document.createElement('option');
        option.value = -1;
        option.innerHTML = this.formatCurrency(-1);
        option.selected = true;
        selectTo.appendChild(option);
    },

    formatCurrency : function (amount) {
        var digits;
        if (amount == -1) {
            return 'Any';
        }
        digits = amount.toFixed(2).split('.');
        digits[0] = digits[0].split('').reverse().join('').replace(/(\d{3})(?=\d)/g, '$1,').split('').reverse().join('');
        return digits.join('.');
    }

};

document.addEvent('domready', JMS.init);



