

(function(){this.MooTools={version:"1.3.1",build:"af48c8d589f43f32212f9bb8ff68a127e6a3ba6c"};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 u=this.instanceOf=function(w,i){if(w==null){return false;}var v=w.$constructor||w.constructor;
while(v){if(v===i){return true;}v=v.parent;}return w instanceof i;};var f=this.Function;var r=true;for(var q in {toString:1}){r=null;}if(r){r=["hasOwnProperty","valueOf","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","constructor"];
}f.prototype.overloadSetter=function(v){var i=this;return function(x,w){if(x==null){return this;}if(v||typeof x!="string"){for(var y in x){i.call(this,y,x[y]);
}if(r){for(var z=r.length;z--;){y=r[z];if(x.hasOwnProperty(y)){i.call(this,y,x[y]);}}}}else{i.call(this,x,w);}return this;};};f.prototype.overloadGetter=function(v){var i=this;
return function(x){var y,w;if(v||typeof x!="string"){y=x;}else{if(arguments.length>1){y=arguments;}}if(y){w={};for(var z=0;z<y.length;z++){w[y[z]]=i.call(this,y[z]);
}}else{w=i.call(this,x);}return w;};};f.prototype.extend=function(i,v){this[i]=v;}.overloadSetter();f.prototype.implement=function(i,v){this.prototype[i]=v;
}.overloadSetter();var o=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:o.call(i):[i];};Number.from=function(v){var i=parseFloat(v);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(x,w){if(x){var v=x.toLowerCase();var i=function(y){return(e(y)==v);};k["is"+x]=i;if(w!=null){w.prototype.$family=(function(){return v;
}).hide();w.type=i;}}if(w==null){return null;}w.extend(this);w.$constructor=k;w.prototype.$constructor=w;return w;};var p=Object.prototype.toString;k.isEnumerable=function(i){return(i!=null&&typeof i.length=="number"&&p.call(i)!="[object Function]");
};var b={};var d=function(i){var v=e(i.prototype);return b[v]||(b[v]=[]);};var h=function(w,A){if(A&&A.$hidden){return;}var v=d(this);for(var x=0;x<v.length;
x++){var z=v[x];if(e(z)=="type"){h.call(z,w,A);}else{z.call(this,w,A);}}var y=this.prototype[w];if(y==null||!y.$protected){this.prototype[w]=A;}if(this[w]==null&&e(A)=="function"){t.call(this,w,function(i){return A.apply(i,o.call(arguments,1));
});}};var t=function(i,w){if(w&&w.$hidden){return;}var v=this[i];if(v==null||!v.$protected){this[i]=w;}};k.implement({implement:h.overloadSetter(),extend:t.overloadSetter(),alias:function(i,v){h.call(this,i,this.prototype[v]);
}.overloadSetter(),mirror:function(i){d(this).push(i);return this;}});new k("Type",k);var c=function(v,z,x){var w=(z!=Object),D=z.prototype;if(w){z=new k(v,z);
}for(var A=0,y=x.length;A<y;A++){var E=x[A],C=z[E],B=D[E];if(C){C.protect();}if(w&&B){delete D[E];D[E]=B.protect();}}if(w){z.implement(D);}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=t.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(v,i){return Math.floor(Math.random()*(i-v+1)+v);});var l=Object.prototype.hasOwnProperty;Object.extend("forEach",function(i,w,x){for(var v in i){if(l.call(i,v)){w.call(x,i[v],v,i);
}}});Object.each=Object.forEach;Array.implement({forEach:function(x,y){for(var w=0,v=this.length;w<v;w++){if(w in this){x.call(y,this[w],w,this);}}},each:function(i,v){Array.forEach(this,i,v);
return this;}});var s=function(i){switch(e(i)){case"array":return i.clone();case"object":return Object.clone(i);default:return i;}};Array.implement("clone",function(){var v=this.length,w=new Array(v);
while(v--){w[v]=s(this[v]);}return w;});var a=function(v,i,w){switch(e(w)){case"object":if(e(v[i])=="object"){Object.merge(v[i],w);}else{v[i]=Object.clone(w);
}break;case"array":v[i]=w.clone();break;default:v[i]=w;}return v;};Object.extend({merge:function(C,y,x){if(e(y)=="string"){return a(C,y,x);}for(var B=1,w=arguments.length;
B<w;B++){var z=arguments[B];for(var A in z){a(C,A,z[A]);}}return C;},clone:function(i){var w={};for(var v in i){w[v]=s(i[v]);}return w;},append:function(z){for(var y=1,w=arguments.length;
y<w;y++){var v=arguments[y]||{};for(var x in v){z[x]=v[x];}}return z;}});["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 v in i){this[v]=i[v];}return this;});g.implement({forEach:function(i,v){Object.forEach(this,i,v);},getClean:function(){var v={};for(var i in this){if(this.hasOwnProperty(i)){v[i]=this[i];
}}return v;},getLength:function(){var v=0;for(var i in this){if(this.hasOwnProperty(i)){v++;}}return v;}});g.alias("each","forEach");Object.type=k.isObject;
var n=this.Native=function(i){return new k(i.name,i.initialize);};n.type=k.type;n.implement=function(x,v){for(var w=0;w<x.length;w++){x[w].implement(v);
}return n;};var m=Array.type;Array.type=function(i){return u(i,Array)||m(i);};this.$A=function(i){return Array.from(i).slice();};this.$arguments=function(v){return function(){return arguments[v];
};};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(w,v,x){var i=e(w);((i=="arguments"||i=="collection"||i=="array"||i=="elements")?Array:Object).each(w,v,x);};this.$empty=function(){};
this.$extend=function(v,i){return Object.append(v,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 v=e(i);if(v=="elements"){return"array";}return(v=="null")?false:v;};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;}};}).call(this);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==null?[]:a),c),b);
},periodical:function(c,b,a){return setInterval(this.pass((a==null?[]: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;(function(){var a=Object.prototype.hasOwnProperty;Object.extend({subset:function(d,g){var f={};for(var e=0,b=g.length;e<b;
e++){var c=g[e];f[c]=d[c];}return f;},map:function(b,e,f){var d={};for(var c in b){if(a.call(b,c)){d[c]=e.call(f,b[c],c,b);}}return d;},filter:function(b,d,e){var c={};
Object.each(b,function(g,f){if(d.call(e,g,f,b)){c[f]=g;}});return c;},every:function(b,d,e){for(var c in b){if(a.call(b,c)&&!d.call(e,b[c],c)){return false;
}}return true;},some:function(b,d,e){for(var c in b){if(a.call(b,c)&&d.call(e,b[c],c)){return true;}}return false;},keys:function(b){var d=[];for(var c in b){if(a.call(b,c)){d.push(c);
}}return d;},values:function(c){var b=[];for(var d in c){if(a.call(c,d)){b.push(c[d]);}}return b;},getLength:function(b){return Object.keys(b).length;},keyOf:function(b,d){for(var c in b){if(a.call(b,c)&&b[c]===d){return c;
}}return null;},contains:function(b,c){return Object.keyOf(b,c)!=null;},toQueryString:function(b,c){var d=[];Object.each(b,function(h,g){if(c){g=c+"["+g+"]";
}var f;switch(typeOf(h)){case"object":f=Object.toQueryString(h,g);break;case"array":var e={};h.each(function(k,j){e[j]=k;});f=Object.toQueryString(e,g);
break;default:f=g+"="+encodeURIComponent(h);}if(h!=null){d.push(f);}});return d.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;}).call(this);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={},q=null,h,l,b,p;while(k&&k.nodeType==3){k=k.parentNode;}if(n.indexOf("key")!=-1){b=a.which||a.keyCode;p=Object.keyOf(Event.Keys,b);
if(n=="keydown"){var d=b-111;if(d>0&&d<13){p="f"+d;}}if(!p){p=String.fromCharCode(b).toLowerCase();}}else{if((/click|mouse|menu/i).test(n)){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((/DOMMouseScroll|mousewheel/).test(n)){l=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}h=(a.which==3)||(a.button==2);if((/over|out/).test(n)){q=a.relatedTarget||a[(n=="mouseover"?"from":"to")+"Element"];
var j=function(){while(q&&q.nodeType==3){q=q.parentNode;}return true;};var g=(Browser.firefox2)?j.attempt():j();q=(g)?q:null;}}else{if((/gesture|touch/i).test(n)){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(q),target:document.id(k),code:b,key:p,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);}};}).call(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--;){if(b in c){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){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;}});}).call(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[k.raw]=(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,function(p){return"\\"+p;});};var j=new RegExp("^(?:\\s*(,)\\s*|\\s*(<combinator>+)\\s*|(\\s+)|(<unicode>+|\\*)|\\#(<unicode>+)|\\.(<unicode>+)|\\[\\s*(<unicode1>+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|(:+)(<unicode>+)(?:\\((?:(?:([\"'])([^\\13]*)\\13)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".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,G,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(G){w=w||p;w=w?w.replace(m,""):null;if(!o.pseudos){o.pseudos=[];}o.pseudos.push({key:G.replace(m,""),value:w,type:F.length==1?"class":"element"});
}else{if(B){B=B.replace(m,"");u=(u||"").replace(m,"");var E,H;switch(A){case"^=":H=new RegExp("^"+f(u));break;case"$=":H=new RegExp(f(u)+"$");break;case"~=":H=new RegExp("(^|\\s)"+f(u)+"(\\s|$)");
break;case"|=":H=new RegExp("^"+f(u)+"(-|$)");break;case"=":E=function(I){return u==I;};break;case"*=":E=function(I){return I&&I.indexOf(u)>-1;};break;
case"!=":E=function(I){return u!=I;};break;default:E=function(I){return !!I;};}if(u==""&&(/^[*$^]=$/).test(A)){E=function(){return false;};}if(!E){E=function(I){return I&&H.test(I);
};}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 j={},l={},b=Object.prototype.toString;
j.isNativeCode=function(c){return(/\{\s*\[native code\]\s*\}/).test(""+c);};j.isXML=function(c){return(!!c.xmlVersion)||(!!c.xml)||(b.call(c)=="[object XMLDocument]")||(c.nodeType==9&&c.documentElement.nodeName!="HTML");
};j.setDocument=function(w){var t=w.nodeType;if(t==9){}else{if(t){w=w.ownerDocument;}else{if(w.navigator){w=w.document;}else{return;}}}if(this.document===w){return;
}this.document=w;var y=w.documentElement,u=this.getUIDXML(y),o=l[u],A;if(o){for(A in o){this[A]=o[A];}return;}o=l[u]={};o.root=y;o.isXMLDocument=this.isXML(w);
o.brokenStarGEBTN=o.starSelectsClosedQSA=o.idGetsName=o.brokenMixedCaseQSA=o.brokenGEBCN=o.brokenCheckedQSA=o.brokenEmptyAttributeQSA=o.isHTMLDocument=o.nativeMatchesSelector=false;
var m,n,x,q,r;var s,c="slick_uniqueid";var z=w.createElement("div");var p=w.body||w.getElementsByTagName("body")[0]||y;p.appendChild(z);try{z.innerHTML='<a id="'+c+'"></a>';
o.isHTMLDocument=!!w.getElementById(c);}catch(v){}if(o.isHTMLDocument){z.style.display="none";z.appendChild(w.createComment(""));n=(z.getElementsByTagName("*").length>1);
try{z.innerHTML="foo</foo>";s=z.getElementsByTagName("*");m=(s&&!!s.length&&s[0].nodeName.charAt(0)=="/");}catch(v){}o.brokenStarGEBTN=n||m;try{z.innerHTML='<a name="'+c+'"></a><b id="'+c+'"></b>';
o.idGetsName=w.getElementById(c)===z.firstChild;}catch(v){}if(z.getElementsByClassName){try{z.innerHTML='<a class="f"></a><a class="b"></a>';z.getElementsByClassName("b").length;
z.firstChild.className="b";q=(z.getElementsByClassName("b").length!=2);}catch(v){}try{z.innerHTML='<a class="a"></a><a class="f b a"></a>';x=(z.getElementsByClassName("a").length!=2);
}catch(v){}o.brokenGEBCN=q||x;}if(z.querySelectorAll){try{z.innerHTML="foo</foo>";s=z.querySelectorAll("*");o.starSelectsClosedQSA=(s&&!!s.length&&s[0].nodeName.charAt(0)=="/");
}catch(v){}try{z.innerHTML='<a class="MiX"></a>';o.brokenMixedCaseQSA=!z.querySelectorAll(".MiX").length;}catch(v){}try{z.innerHTML='<select><option selected="selected">a</option></select>';
o.brokenCheckedQSA=(z.querySelectorAll(":checked").length==0);}catch(v){}try{z.innerHTML='<a class=""></a>';o.brokenEmptyAttributeQSA=(z.querySelectorAll('[class*=""]').length!=0);
}catch(v){}}try{z.innerHTML='<form action="s"><input id="action"/></form>';r=(z.firstChild.getAttribute("action")!="s");}catch(v){}o.nativeMatchesSelector=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector;
if(o.nativeMatchesSelector){try{o.nativeMatchesSelector.call(y,":slick");o.nativeMatchesSelector=null;}catch(v){}}}try{y.slick_expando=1;delete y.slick_expando;
o.getUID=this.getUIDHTML;}catch(v){o.getUID=this.getUIDXML;}p.removeChild(z);z=s=p=null;o.getAttribute=(o.isHTMLDocument&&r)?function(D,B){var E=this.attributeGetters[B];
if(E){return E.call(D);}var C=D.getAttributeNode(B);return(C)?C.nodeValue:null;}:function(C,B){var D=this.attributeGetters[B];return(D)?D.call(C):C.getAttribute(B);
};o.hasAttribute=(y&&this.isNativeCode(y.hasAttribute))?function(C,B){return C.hasAttribute(B);}:function(C,B){C=C.getAttributeNode(B);return !!(C&&(C.specified||C.nodeValue));
};o.contains=(y&&this.isNativeCode(y.contains))?function(B,C){return B.contains(C);}:(y&&y.compareDocumentPosition)?function(B,C){return B===C||!!(B.compareDocumentPosition(C)&16);
}:function(B,C){if(C){do{if(C===B){return true;}}while((C=C.parentNode));}return false;};o.documentSorter=(y.compareDocumentPosition)?function(C,B){if(!C.compareDocumentPosition||!B.compareDocumentPosition){return 0;
}return C.compareDocumentPosition(B)&4?-1:C===B?0:1;}:("sourceIndex" in y)?function(C,B){if(!C.sourceIndex||!B.sourceIndex){return 0;}return C.sourceIndex-B.sourceIndex;
}:(w.createRange)?function(E,C){if(!E.ownerDocument||!C.ownerDocument){return 0;}var D=E.ownerDocument.createRange(),B=C.ownerDocument.createRange();D.setStart(E,0);
D.setEnd(E,0);B.setStart(C,0);B.setEnd(C,0);return D.compareBoundaryPoints(Range.START_TO_END,B);}:null;y=null;for(A in o){this[A]=o[A];}};var e=/^([#.]?)((?:[\w-]+|\*))$/,g=/\[.+[*$^]=(?:""|'')?\]/,f={};
j.search=function(q,D,O,v){var B=this.found=(v)?null:(O||[]);if(!q){return B;}else{if(q.navigator){q=q.document;}else{if(!q.nodeType){return B;}}}var z,N,s=this.uniques={},y=!!(O&&O.length),c=(q.nodeType==9);
if(this.document!==(c?q:q.ownerDocument)){this.setDocument(q);}if(y){for(N=B.length;N--;){s[this.getUID(B[N])]=true;}}if(typeof D=="string"){var C=D.match(e);
simpleSelectors:if(C){var K=C[1],V=C[2],I,G;if(!K){if(V=="*"&&this.brokenStarGEBTN){break simpleSelectors;}G=q.getElementsByTagName(V);if(v){return G[0]||null;
}for(N=0;I=G[N++];){if(!(y&&s[this.getUID(I)])){B.push(I);}}}else{if(K=="#"){if(!this.isHTMLDocument||!c){break simpleSelectors;}I=q.getElementById(V);
if(!I){return B;}if(this.idGetsName&&I.getAttributeNode("id").nodeValue!=V){break simpleSelectors;}if(v){return I||null;}if(!(y&&s[this.getUID(I)])){B.push(I);
}}else{if(K=="."){if(!this.isHTMLDocument||((!q.getElementsByClassName||this.brokenGEBCN)&&q.querySelectorAll)){break simpleSelectors;}if(q.getElementsByClassName&&!this.brokenGEBCN){G=q.getElementsByClassName(V);
if(v){return G[0]||null;}for(N=0;I=G[N++];){if(!(y&&s[this.getUID(I)])){B.push(I);}}}else{var u=new RegExp("(^|\\s)"+d.escapeRegExp(V)+"(\\s|$)");G=q.getElementsByTagName("*");
for(N=0;I=G[N++];){className=I.className;if(!(className&&u.test(className))){continue;}if(v){return I;}if(!(y&&s[this.getUID(I)])){B.push(I);}}}}}}if(y){this.sort(B);
}return(v)?null:B;}querySelector:if(q.querySelectorAll){if(!this.isHTMLDocument||this.brokenMixedCaseQSA||f[D]||(this.brokenCheckedQSA&&D.indexOf(":checked")>-1)||(this.brokenEmptyAttributeQSA&&g.test(D))||d.disableQSA){break querySelector;
}var A=D;if(!c){var M=q.getAttribute("id"),p="slickid__";q.setAttribute("id",p);A="#"+p+" "+A;}try{if(v){return q.querySelector(A)||null;}else{G=q.querySelectorAll(A);
}}catch(P){f[D]=1;break querySelector;}finally{if(!c){if(M){q.setAttribute("id",M);}else{q.removeAttribute("id");}}}if(this.starSelectsClosedQSA){for(N=0;
I=G[N++];){if(I.nodeName>"@"&&!(y&&s[this.getUID(I)])){B.push(I);}}}else{for(N=0;I=G[N++];){if(!(y&&s[this.getUID(I)])){B.push(I);}}}if(y){this.sort(B);
}return B;}z=this.Slick.parse(D);if(!z.length){return B;}}else{if(D==null){return B;}else{if(D.Slick){z=D;}else{if(this.contains(q.documentElement||q,D)){(B)?B.push(D):B=D;
return B;}else{return B;}}}}this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!y&&(v||(z.length==1&&z.expressions[0].length==1)))?this.pushArray:this.pushUID;
if(B==null){B=[];}var L,H,F;var J,U,E,T,Q,x,t;var w,r,o,R,S=z.expressions;search:for(N=0;(r=S[N]);N++){for(L=0;(o=r[L]);L++){J="combinator:"+o.combinator;
if(!this[J]){continue search;}U=(this.isXMLDocument)?o.tag:o.tag.toUpperCase();E=o.id;T=o.classList;Q=o.classes;x=o.attributes;t=o.pseudos;R=(L===(r.length-1));
this.bitUniques={};if(R){this.uniques=s;this.found=B;}else{this.uniques={};this.found=[];}if(L===0){this[J](q,U,E,Q,x,t,T);if(v&&R&&B.length){break search;
}}else{if(v&&R){for(H=0,F=w.length;H<F;H++){this[J](w[H],U,E,Q,x,t,T);if(B.length){break search;}}}else{for(H=0,F=w.length;H<F;H++){this[J](w[H],U,E,Q,x,t,T);
}}}w=this.found;}}if(y||(z.expressions.length>1)){this.sort(B);}return(v)?(B[0]||null):B;};j.uidx=1;j.uidk="slick-uniqueid";j.getUIDXML=function(m){var c=m.getAttribute(this.uidk);
if(!c){c=this.uidx++;m.setAttribute(this.uidk,c);}return c;};j.getUIDHTML=function(c){return c.uniqueNumber||(c.uniqueNumber=this.uidx++);};j.sort=function(c){if(!this.documentSorter){return c;
}c.sort(this.documentSorter);return c;};j.cacheNTH={};j.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;j.parseNTHArgument=function(p){var n=p.match(this.matchNTH);
if(!n){return false;}var o=n[2]||false;var m=n[1]||1;if(m=="-"){m=-1;}var c=+n[3]||0;n=(o=="n")?{a:m,b:c}:(o=="odd")?{a:2,b:1}:(o=="even")?{a:2,b:0}:{a:0,b:m};
return(this.cacheNTH[p]=n);};j.createNTHPseudo=function(o,m,c,n){return function(r,p){var t=this.getUID(r);if(!this[c][t]){var z=r.parentNode;if(!z){return false;
}var q=z[o],s=1;if(n){var y=r.nodeName;do{if(q.nodeName!=y){continue;}this[c][this.getUID(q)]=s++;}while((q=q[m]));}else{do{if(q.nodeType!=1){continue;
}this[c][this.getUID(q)]=s++;}while((q=q[m]));}}p=p||"n";var u=this.cacheNTH[p]||this.parseNTHArgument(p);if(!u){return false;}var x=u.a,w=u.b,v=this[c][t];
if(x==0){return w==v;}if(x>0){if(v<w){return false;}}else{if(w<v){return false;}}return((v-w)%x)==0;};};j.pushArray=function(o,c,q,n,m,p){if(this.matchSelector(o,c,q,n,m,p)){this.found.push(o);
}};j.pushUID=function(p,c,r,o,m,q){var n=this.getUID(p);if(!this.uniques[n]&&this.matchSelector(p,c,r,o,m,q)){this.uniques[n]=true;this.found.push(p);}};
j.matchNode=function(m,n){if(this.isHTMLDocument&&this.nativeMatchesSelector){try{return this.nativeMatchesSelector.call(m,n.replace(/\[([^=]+)=\s*([^'"\]]+?)\s*\]/g,'[$1="$2"]'));
}catch(u){}}var t=this.Slick.parse(n);if(!t){return true;}var r=t.expressions,p,s=0,q;for(q=0;(currentExpression=r[q]);q++){if(currentExpression.length==1){var o=currentExpression[0];
if(this.matchSelector(m,(this.isXMLDocument)?o.tag:o.tag.toUpperCase(),o.id,o.classes,o.attributes,o.pseudos)){return true;}s++;}}if(s==t.length){return false;
}var c=this.search(this.document,t),v;for(q=0;v=c[q++];){if(v===m){return true;}}return false;};j.matchPseudo=function(p,c,o){var m="pseudo:"+c;if(this[m]){return this[m](p,o);
}var n=this.getAttribute(p,c);return(o)?o==n:!!n;};j.matchSelector=function(n,u,c,o,p,r){if(u){var s=(this.isXMLDocument)?n.nodeName:n.nodeName.toUpperCase();
if(u=="*"){if(s<"@"){return false;}}else{if(s!=u){return false;}}}if(c&&n.getAttribute("id")!=c){return false;}var q,m,t;if(o){for(q=o.length;q--;){t=n.getAttribute("class")||n.className;
if(!(t&&o[q].regexp.test(t))){return false;}}}if(p){for(q=p.length;q--;){m=p[q];if(m.operator?!m.test(this.getAttribute(n,m.key)):!this.hasAttribute(n,m.key)){return false;
}}}if(r){for(q=r.length;q--;){m=r[q];if(!this.matchPseudo(n,m.key,m.value)){return false;}}}return true;};var i={" ":function(p,v,m,q,r,t,o){var s,u,n;
if(this.isHTMLDocument){getById:if(m){u=this.document.getElementById(m);if((!u&&p.all)||(this.idGetsName&&u&&u.getAttributeNode("id").nodeValue!=m)){n=p.all[m];
if(!n){return;}if(!n[0]){n=[n];}for(s=0;u=n[s++];){var c=u.getAttributeNode("id");if(c&&c.nodeValue==m){this.push(u,v,null,q,r,t);break;}}return;}if(!u){if(this.contains(this.root,p)){return;
}else{break getById;}}else{if(this.document!==p&&!this.contains(p,u)){return;}}this.push(u,v,null,q,r,t);return;}getByClass:if(q&&p.getElementsByClassName&&!this.brokenGEBCN){n=p.getElementsByClassName(o.join(" "));
if(!(n&&n.length)){break getByClass;}for(s=0;u=n[s++];){this.push(u,v,m,null,r,t);}return;}}getByTag:{n=p.getElementsByTagName(v);if(!(n&&n.length)){break getByTag;
}if(!this.brokenStarGEBTN){v=null;}for(s=0;u=n[s++];){this.push(u,v,m,q,r,t);}}},">":function(o,c,q,n,m,p){if((o=o.firstChild)){do{if(o.nodeType==1){this.push(o,c,q,n,m,p);
}}while((o=o.nextSibling));}},"+":function(o,c,q,n,m,p){while((o=o.nextSibling)){if(o.nodeType==1){this.push(o,c,q,n,m,p);break;}}},"^":function(o,c,q,n,m,p){o=o.firstChild;
if(o){if(o.nodeType==1){this.push(o,c,q,n,m,p);}else{this["combinator:+"](o,c,q,n,m,p);}}},"~":function(p,c,r,o,m,q){while((p=p.nextSibling)){if(p.nodeType!=1){continue;
}var n=this.getUID(p);if(this.bitUniques[n]){break;}this.bitUniques[n]=true;this.push(p,c,r,o,m,q);}},"++":function(o,c,q,n,m,p){this["combinator:+"](o,c,q,n,m,p);
this["combinator:!+"](o,c,q,n,m,p);},"~~":function(o,c,q,n,m,p){this["combinator:~"](o,c,q,n,m,p);this["combinator:!~"](o,c,q,n,m,p);},"!":function(o,c,q,n,m,p){while((o=o.parentNode)){if(o!==this.document){this.push(o,c,q,n,m,p);
}}},"!>":function(o,c,q,n,m,p){o=o.parentNode;if(o!==this.document){this.push(o,c,q,n,m,p);}},"!+":function(o,c,q,n,m,p){while((o=o.previousSibling)){if(o.nodeType==1){this.push(o,c,q,n,m,p);
break;}}},"!^":function(o,c,q,n,m,p){o=o.lastChild;if(o){if(o.nodeType==1){this.push(o,c,q,n,m,p);}else{this["combinator:!+"](o,c,q,n,m,p);}}},"!~":function(p,c,r,o,m,q){while((p=p.previousSibling)){if(p.nodeType!=1){continue;
}var n=this.getUID(p);if(this.bitUniques[n]){break;}this.bitUniques[n]=true;this.push(p,c,r,o,m,q);}}};for(var h in i){j["combinator:"+h]=i[h];}var k={empty:function(c){var m=c.firstChild;
return !(m&&m.nodeType==1)&&!(c.innerText||c.textContent||"").length;},not:function(c,m){return !this.matchNode(c,m);},contains:function(c,m){return(c.innerText||c.textContent||"").indexOf(m)>-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(n){var m=n;while((m=m.previousSibling)){if(m.nodeType==1){return false;}}var c=n;while((c=c.nextSibling)){if(c.nodeType==1){return false;
}}return true;},"nth-child":j.createNTHPseudo("firstChild","nextSibling","posNTH"),"nth-last-child":j.createNTHPseudo("lastChild","previousSibling","posNTHLast"),"nth-of-type":j.createNTHPseudo("firstChild","nextSibling","posNTHType",true),"nth-last-of-type":j.createNTHPseudo("lastChild","previousSibling","posNTHTypeLast",true),index:function(m,c){return this["pseudo:nth-child"](m,""+c+1);
},even:function(c){return this["pseudo:nth-child"](c,"2n");},odd:function(c){return this["pseudo:nth-child"](c,"2n+1");},"first-of-type":function(c){var m=c.nodeName;
while((c=c.previousSibling)){if(c.nodeName==m){return false;}}return true;},"last-of-type":function(c){var m=c.nodeName;while((c=c.nextSibling)){if(c.nodeName==m){return false;
}}return true;},"only-of-type":function(n){var m=n,o=n.nodeName;while((m=m.previousSibling)){if(m.nodeName==o){return false;}}var c=n;while((c=c.nextSibling)){if(c.nodeName==o){return false;
}}return true;},enabled:function(c){return !c.disabled;},disabled:function(c){return c.disabled;},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 a in k){j["pseudo:"+a]=k[a];}j.attributeGetters={"class":function(){return this.getAttribute("class")||this.className;
},"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");},tabindex:function(){var c=this.getAttributeNode("tabindex");return(c&&c.specified)?c.nodeValue:null;
},type:function(){return this.getAttribute("type");}};var d=j.Slick=(this.Slick||{});d.version="1.1.5";d.search=function(m,n,c){return j.search(m,n,c);
};d.find=function(c,m){return j.search(c,m,null,true);};d.contains=function(c,m){j.setDocument(c);return j.contains(c,m);};d.getAttribute=function(m,c){return j.getAttribute(m,c);
};d.match=function(m,c){if(!(m&&c)){return false;}if(!c||c===m){return true;}j.setDocument(m);return j.matchNode(m,c);};d.defineAttributeGetter=function(c,m){j.attributeGetters[c]=m;
return this;};d.lookupAttributeGetter=function(c){return j.attributeGetters[c];};d.definePseudo=function(c,m){j["pseudo:"+c]=function(o,n){return m.call(o,n);
};return this;};d.lookupPseudo=function(c){var m=j["pseudo:"+c];if(m){return function(n){return m.call(this,n);};}return null;};d.override=function(m,c){j.override(m,c);
return this;};d.isXML=j.isXML;d.uidOf=function(c){return j.getUIDHTML(c);};if(!this.Slick){this.Slick=d;}}).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(!(/^[\w-]+$/).test(b)){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(),unshift:function(){var b=[];for(var c=0,a=arguments.length;
c<a;c++){var d=document.id(arguments[c]);if(d){b.push(d);}}return Array.prototype.unshift.apply(this,b);}.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()});Elements.alias("extend","append");
(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 k={},i={};var n={input:"checked",option:"selected",textarea:"value"};
var e=function(p){return(i[p]||(i[p]={}));};var j=function(q){var p=q.uid;if(q.removeEvents){q.removeEvents();}if(q.clearAttributes){q.clearAttributes();
}if(p!=null){delete k[p];delete i[p];}return q;};var o=["defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];
var d=["compact","nowrap","ismap","declare","noshade","checked","disabled","readOnly","multiple","selected","noresize","defer","defaultChecked"];var g={html:"innerHTML","class":"className","for":"htmlFor",text:(function(){var p=document.createElement("div");
return(p.textContent==null)?"innerText":"textContent";})()};var m=["type"];var h=["value","defaultValue"];var l=/^(?:href|src|usemap)$/i;d=d.associate(d);
o=o.associate(o.map(String.toLowerCase));m=m.associate(m);Object.append(g,h.associate(h));var c={before:function(q,p){var r=p.parentNode;if(r){r.insertBefore(q,p);
}},after:function(q,p){var r=p.parentNode;if(r){r.insertBefore(q,p.nextSibling);}},bottom:function(q,p){p.appendChild(q);},top:function(q,p){p.insertBefore(q,p.firstChild);
}};c.inside=c.bottom;Object.each(c,function(q,r){r=r.capitalize();var p={};p["inject"+r]=function(s){q(this,document.id(s,true));return this;};p["grab"+r]=function(s){q(document.id(s,true),this);
return this;};Element.implement(p);});var b=function(s,r){if(!s){return r;}s=Object.clone(Slick.parse(s));var q=s.expressions;for(var p=q.length;p--;){q[p][0].combinator=r;
}return s;};Element.implement({set:function(r,q){var p=Element.Properties[r];(p&&p.set)?p.set.call(this,q):this.setProperty(r,q);}.overloadSetter(),get:function(q){var p=Element.Properties[q];
return(p&&p.get)?p.get.apply(this):this.getProperty(q);}.overloadGetter(),erase:function(q){var p=Element.Properties[q];(p&&p.erase)?p.erase.apply(this):this.removeProperty(q);
return this;},setProperty:function(q,r){q=o[q]||q;if(r==null){return this.removeProperty(q);}var p=g[q];(p)?this[p]=r:(d[q])?this[q]=!!r:this.setAttribute(q,""+r);
return this;},setProperties:function(p){for(var q in p){this.setProperty(q,p[q]);}return this;},getProperty:function(q){q=o[q]||q;var p=g[q]||m[q];return(p)?this[p]:(d[q])?!!this[q]:(l.test(q)?this.getAttribute(q,2):(p=this.getAttributeNode(q))?p.nodeValue:null)||null;
},getProperties:function(){var p=Array.from(arguments);return p.map(this.getProperty,this).associate(p);},removeProperty:function(q){q=o[q]||q;var p=g[q];
(p)?this[p]="":(d[q])?this[q]=false:this.removeAttribute(q);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;
},hasClass:function(p){return this.className.clean().contains(p," ");},addClass:function(p){if(!this.hasClass(p)){this.className=(this.className+" "+p).clean();
}return this;},removeClass:function(p){this.className=this.className.replace(new RegExp("(^|\\s)"+p+"(?:\\s|$)"),"$1");return this;},toggleClass:function(p,q){if(q==null){q=!this.hasClass(p);
}return(q)?this.addClass(p):this.removeClass(p);},adopt:function(){var s=this,p,u=Array.flatten(arguments),t=u.length;if(t>1){s=p=document.createDocumentFragment();
}for(var r=0;r<t;r++){var q=document.id(u[r],true);if(q){s.appendChild(q);}}if(p){this.appendChild(p);}return this;},appendText:function(q,p){return this.grab(this.getDocument().newTextNode(q),p);
},grab:function(q,p){c[p||"bottom"](document.id(q,true),this);return this;},inject:function(q,p){c[p||"bottom"](this,document.id(q,true));return this;},replaces:function(p){p=document.id(p,true);
p.parentNode.replaceChild(this,p);return this;},wraps:function(q,p){q=document.id(q,true);return this.replaces(q).grab(q,p);},getPrevious:function(p){return document.id(Slick.find(this,b(p,"!~")));
},getAllPrevious:function(p){return Slick.search(this,b(p,"!~"),new Elements);},getNext:function(p){return document.id(Slick.find(this,b(p,"~")));},getAllNext:function(p){return Slick.search(this,b(p,"~"),new Elements);
},getFirst:function(p){return document.id(Slick.search(this,b(p,">"))[0]);},getLast:function(p){return document.id(Slick.search(this,b(p,">")).getLast());
},getParent:function(p){return document.id(Slick.find(this,b(p,"!")));},getParents:function(p){return Slick.search(this,b(p,"!"),new Elements);},getSiblings:function(p){return Slick.search(this,b(p,"~~"),new Elements);
},getChildren:function(p){return Slick.search(this,b(p,">"),new Elements);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;
},getElementById:function(p){return document.id(Slick.find(this,"#"+(""+p).replace(/(\W)/g,"\\$1")));},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(p){return p.selected;
}));},toQueryString:function(){var p=[];this.getElements("input, select, textarea").each(function(r){var q=r.type;if(!r.name||r.disabled||q=="submit"||q=="reset"||q=="file"||q=="image"){return;
}var s=(r.get("tag")=="select")?r.getSelected().map(function(t){return document.id(t).get("value");}):((q=="radio"||q=="checkbox")&&!r.checked)?null:r.get("value");
Array.from(s).each(function(t){if(typeof t!="undefined"){p.push(encodeURIComponent(r.name)+"="+encodeURIComponent(t));}});});return p.join("&");},destroy:function(){var p=j(this).getElementsByTagName("*");
Array.each(p,j);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(p){return !p||Slick.match(this,p);}});var a=function(t,s,q){if(!q){t.setAttributeNode(document.createAttribute("id"));}if(t.clearAttributes){t.clearAttributes();
t.mergeAttributes(s);t.removeAttribute("uid");if(t.options){var u=t.options,p=s.options;for(var r=u.length;r--;){u[r].selected=p[r].selected;}}}var v=n[s.tagName.toLowerCase()];
if(v&&s[v]){t[v]=s[v];}};Element.implement("clone",function(r,p){r=r!==false;var w=this.cloneNode(r),q;if(r){var s=w.getElementsByTagName("*"),u=this.getElementsByTagName("*");
for(q=s.length;q--;){a(s[q],u[q],p);}}a(w,this,p);if(Browser.ie){var t=w.getElementsByTagName("object"),v=this.getElementsByTagName("object");for(q=t.length;
q--;){t[q].outerHTML=v[q].outerHTML;}}return document.id(w);});var f={contains:function(p){return Slick.contains(this,p);}};if(!document.contains){Document.implement(f);
}if(!document.createElement("div").contains){Element.implement(f);}Element.implement("hasChild",function(p){return this!==p&&this.contains(p);});[Element,Window,Document].invoke("implement",{addListener:function(s,r){if(s=="unload"){var p=r,q=this;
r=function(){q.removeListener("unload",r);p();};}else{k[$uid(this)]=this;}if(this.addEventListener){this.addEventListener(s,r,!!arguments[2]);}else{this.attachEvent("on"+s,r);
}return this;},removeListener:function(q,p){if(this.removeEventListener){this.removeEventListener(q,p,!!arguments[2]);}else{this.detachEvent("on"+q,p);
}return this;},retrieve:function(q,p){var s=e($uid(this)),r=s[q];if(p!=null&&r==null){r=s[q]=p;}return r!=null?r:null;},store:function(q,p){var r=e($uid(this));
r[q]=p;return this;},eliminate:function(p){var q=e($uid(this));delete q[p];return this;}});if(window.attachEvent&&!window.addEventListener){window.addListener("unload",function(){Object.each(k,j);
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=d.test(h)?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((/^(height|width)$/).test(l)){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((/^border(.+)Width|margin|padding/).test(l)){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(@, @, @)";});}).call(this);(function(){Element.Properties.events={set:function(b){this.addEvents(b);
}};[Element,Window,Document].invoke("implement",{addEvent:function(f,h){var i=this.retrieve("events",{});if(!i[f]){i[f]={keys:[],values:[]};}if(i[f].keys.contains(h)){return this;
}i[f].keys.push(h);var g=f,b=Element.Events[f],d=h,j=this;if(b){if(b.onAdd){b.onAdd.call(this,h);}if(b.condition){d=function(k){if(b.condition.call(this,k)){return h.call(this,k);
}return true;};}g=b.base||g;}var e=function(){return h.call(j);};var c=Element.NativeEvents[g];if(c){if(c==2){e=function(k){k=new Event(k,j.getWindow());
if(d.call(j,k)===false){k.stop();}};}this.addListener(g,e,arguments[2]);}i[f].values.push(e);return this;},removeEvent:function(e,d){var c=this.retrieve("events");
if(!c||!c[e]){return this;}var h=c[e];var b=h.keys.indexOf(d);if(b==-1){return this;}var g=h.values[b];delete h.keys[b];delete h.values[b];var f=Element.Events[e];
if(f){if(f.onRemove){f.onRemove.call(this,d);}e=f.base||e;}return(Element.NativeEvents[e])?this.removeListener(e,g,arguments[2]):this;},addEvents:function(b){for(var c in b){this.addEvent(c,b[c]);
}return this;},removeEvents:function(b){var d;if(typeOf(b)=="object"){for(d in b){this.removeEvent(d,b[d]);}return this;}var c=this.retrieve("events");
if(!c){return this;}if(!b){for(d in c){this.removeEvents(d);}this.eliminate("events");}else{if(c[b]){c[b].keys.each(function(e){this.removeEvent(b,e);},this);
delete c[b];}}return this;},fireEvent:function(e,c,b){var d=this.retrieve("events");if(!d||!d[e]){return this;}c=Array.from(c);d[e].keys.each(function(f){if(b){f.delay(b,this,c);
}else{f.apply(this,c);}},this);return this;},cloneEvents:function(e,d){e=document.id(e);var c=e.retrieve("events");if(!c){return this;}if(!d){for(var b in c){this.cloneEvents(e,b);
}}else{if(c[d]){c[d].keys.each(function(f){this.addEvent(d,f);},this);}}return this;}});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(b){var c=b.relatedTarget;if(c==null){return true;}if(!c){return false;}return(c!=this&&c.prefix!="xul"&&typeOf(this)!="document"&&!this.contains(c));
};Element.Events={mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.firefox)?"DOMMouseScroll":"mousewheel"}};
Element.Events=new Hash(Element.Events);}).call(this);(function(){var h=document.createElement("div"),e=document.createElement("div");h.style.height="0";
h.appendChild(e);var d=(e.offsetParent===h);h=e=null;var l=function(m){return k(m,"position")!="static"||a(m);};var i=function(m){return l(m)||(/^(?:table|td|th)$/i).test(m.tagName);
};Element.implement({scrollTo:function(m,n){if(a(this)){this.getWindow().scrollTo(m,n);}else{this.scrollLeft=m;this.scrollTop=n;}return this;},getSize:function(){if(a(this)){return this.getWindow().getSize();
}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(a(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight};
},getScroll:function(){if(a(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var n=this.parentNode,m={x:0,y:0};
while(n&&!a(n)){m.x+=n.scrollLeft;m.y+=n.scrollTop;n=n.parentNode;}return m;},getOffsetParent:d?function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null;
}var n=(k(m,"position")=="static")?i:l;while((m=m.parentNode)){if(n(m)){return m;}}return null;}:function(){var m=this;if(a(m)||k(m,"position")=="fixed"){return null;
}try{return m.offsetParent;}catch(n){}return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var r=this.getBoundingClientRect(),o=document.id(this.getDocument().documentElement),q=o.getScroll(),t=this.getScrolls(),s=(k(this,"position")=="fixed");
return{x:r.left.toInt()+t.x+((s)?0:q.x)-o.clientLeft,y:r.top.toInt()+t.y+((s)?0:q.y)-o.clientTop};}var n=this,m={x:0,y:0};if(a(this)){return m;}while(n&&!a(n)){m.x+=n.offsetLeft;
m.y+=n.offsetTop;if(Browser.firefox){if(!c(n)){m.x+=b(n);m.y+=g(n);}var p=n.parentNode;if(p&&k(p,"overflow")!="visible"){m.x+=b(p);m.y+=g(p);}}else{if(n!=this&&Browser.safari){m.x+=b(n);
m.y+=g(n);}}n=n.offsetParent;}if(Browser.firefox&&!c(this)){m.x-=b(this);m.y-=g(this);}return m;},getPosition:function(p){if(a(this)){return{x:0,y:0};}var q=this.getOffsets(),n=this.getScrolls();
var m={x:q.x-n.x,y:q.y-n.y};if(p&&(p=document.id(p))){var o=p.getPosition();return{x:m.x-o.x-b(p),y:m.y-o.y-g(p)};}return m;},getCoordinates:function(o){if(a(this)){return this.getWindow().getCoordinates();
}var m=this.getPosition(o),n=this.getSize();var p={left:m.x,top:m.y,width:n.x,height:n.y};p.right=p.left+p.width;p.bottom=p.top+p.height;return p;},computePosition:function(m){return{left:m.x-j(this,"margin-left"),top:m.y-j(this,"margin-top")};
},setPosition:function(m){return this.setStyles(this.computePosition(m));}});[Document,Window].invoke("implement",{getSize:function(){var m=f(this);return{x:m.clientWidth,y:m.clientHeight};
},getScroll:function(){var n=this.getWindow(),m=f(this);return{x:n.pageXOffset||m.scrollLeft,y:n.pageYOffset||m.scrollTop};},getScrollSize:function(){var o=f(this),n=this.getSize(),m=this.getDocument().body;
return{x:Math.max(o.scrollWidth,m.scrollWidth,n.x),y:Math.max(o.scrollHeight,m.scrollHeight,n.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var m=this.getSize();
return{top:0,left:0,bottom:m.y,right:m.x,height:m.y,width:m.x};}});var k=Element.getComputedStyle;function j(m,n){return k(m,n).toInt()||0;}function c(m){return k(m,"-moz-box-sizing")=="border-box";
}function g(m){return j(m,"border-top-width");}function b(m){return j(m,"border-left-width");}function a(m){return(/^(?:body|html)$/i).test(m.tagName);
}function f(m){var n=m.getDocument();return(!n.compatMode||n.compatMode=="CSS1Compat")?n.html:n.body;}}).call(this);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 f=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:60,unit:false,duration:500,frames:null,frameSkip:true,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(g){if(this.options.frameSkip){var h=(this.time!=null)?(g-this.time):0,i=h/this.frameInterval;
this.time=g;this.frame+=i;}else{this.frame++;}if(this.frame<this.frames){var j=this.transition(this.frame/this.frames);this.set(this.compute(this.from,this.to,j));
}else{this.frame=this.frames;this.set(this.compute(this.from,this.to,1));this.stop();}},set:function(g){return g;},compute:function(i,h,g){return f.compute(i,h,g);
},check:function(){if(!this.isRunning()){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(k,j){if(!this.check(k,j)){return this;}this.from=k;this.to=j;this.frame=(this.options.frameSkip)?0:-1;this.time=null;
this.transition=this.getTransition();var i=this.options.frames,h=this.options.fps,g=this.options.duration;this.duration=f.Durations[g]||g.toInt();this.frameInterval=1000/h;
this.frames=i||Math.round(this.duration/this.frameInterval);this.fireEvent("start",this.subject);b.call(this,h);return this;},stop:function(){if(this.isRunning()){this.time=null;
d.call(this,this.options.fps);if(this.frames==this.frame){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject);
}}else{this.fireEvent("stop",this.subject);}}return this;},cancel:function(){if(this.isRunning()){this.time=null;d.call(this,this.options.fps);this.frame=this.frames;
this.fireEvent("cancel",this.subject).clearChain();}return this;},pause:function(){if(this.isRunning()){this.time=null;d.call(this,this.options.fps);}return this;
},resume:function(){if((this.frame<this.frames)&&!this.isRunning()){b.call(this,this.options.fps);}return this;},isRunning:function(){var g=e[this.options.fps];
return g&&g.contains(this);}});f.compute=function(i,h,g){return(h-i)*g+i;};f.Durations={"short":250,normal:500,"long":1000};var e={},c={};var a=function(){var h=Date.now();
for(var j=this.length;j--;){var g=this[j];if(g){g.step(h);}}};var b=function(h){var g=e[h]||(e[h]=[]);g.push(this);if(!c[h]){c[h]=a.periodical(Math.round(1000/h),g);
}};var d=function(h){var g=e[h];if(g){g.erase(this);if(!g.length&&c[h]){delete e[h];c[h]=clearInterval(c[h]);}}};}).call(this);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 c={},b=new RegExp("^"+a.escapeRegExp()+"$");
Array.each(document.styleSheets,function(f,e){var d=f.href;if(d&&d.contains("://")&&!d.contains(document.domain)){return;}var g=f.rules||f.cssRules;Array.each(g,function(k,h){if(!k.style){return;
}var j=(k.selectorText)?k.selectorText.replace(/^\w+/,function(i){return i.toLowerCase();}):null;if(!j||!b.test(j)){return;}Object.each(Element.Styles,function(l,i){if(!k.style[i]||Element.ShortStyles[i]){return;
}l=String(k.style[i]);c[i]=((/^rgb/).test(l))?l.rgbToHex():l;});});});return Fx.CSS.Cache[a]=c;}});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(c,b){b=Array.from(b);
var a=function(d){return c(d,b);};return Object.append(a,{easeIn:a,easeOut:function(d){return 1-c(1-d,b);},easeInOut:function(d){return(d<=0.5?c(2*d,b):(2-c(2*(1-d),b)))/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.cos(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 d=function(){},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(e){this.xhr=new Browser.Request();
this.setOptions(e);this.headers=this.options.headers;},onStateChange:function(){var e=this.xhr;if(e.readyState!=4||!this.running){return;}this.running=false;
this.status=0;Function.attempt(function(){var f=e.status;this.status=(f==1223)?204:f;}.bind(this));e.onreadystatechange=d;if(a){e.onprogress=e.onloadstart=d;
}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 e=this.status;return(e>=200&&e<300);},isRunning:function(){return !!this.running;},processScripts:function(e){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return Browser.exec(e);
}return e.stripScripts(this.options.evalScripts);},success:function(f,e){this.onSuccess(this.processScripts(f),e);},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(e){this.fireEvent("loadstart",[e,this.xhr]);
},progress:function(e){this.fireEvent("progress",[e,this.xhr]);},timeout:function(){this.fireEvent("timeout",this.xhr);},setHeader:function(e,f){this.headers[e]=f;
return this;},getHeader:function(e){return Function.attempt(function(){return this.xhr.getResponseHeader(e);}.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(o){if(!this.check(o)){return this;
}this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var l=typeOf(o);if(l=="string"||l=="element"){o={data:o};}var h=this.options;
o=Object.append({data:h.data,url:h.url,method:h.method},o);var j=o.data,f=String(o.url),e=o.method.toLowerCase();switch(typeOf(j)){case"element":j=document.id(j).toQueryString();
break;case"object":case"hash":j=Object.toQueryString(j);}if(this.options.format){var m="format="+this.options.format;j=(j)?m+"&"+j:m;}if(this.options.emulation&&!["get","post"].contains(e)){var k="_method="+e;
j=(j)?k+"&"+j:k;e="post";}if(this.options.urlEncoded&&["post","put"].contains(e)){var g=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers["Content-type"]="application/x-www-form-urlencoded"+g;
}if(!f){f=document.location.pathname;}var i=f.lastIndexOf("/");if(i>-1&&(i=f.indexOf("#"))>-1){f=f.substr(0,i);}if(this.options.noCache){f+=(f.contains("?")?"&":"?")+String.uniqueID();
}if(j&&e=="get"){f+=(f.contains("?")?"&":"?")+j;j=null;}var n=this.xhr;if(a){n.onloadstart=this.loadstart.bind(this);n.onprogress=this.progress.bind(this);
}n.open(e.toUpperCase(),f,this.options.async,this.options.user,this.options.password);if(this.options.user&&"withCredentials" in n){n.withCredentials=true;
}n.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(q,p){try{n.setRequestHeader(p,q);}catch(r){this.fireEvent("exception",[p,q]);
}},this);this.fireEvent("request");n.send(j);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 e=this.xhr;e.abort();clearTimeout(this.timer);e.onreadystatechange=d;
if(a){e.onprogress=e.onloadstart=d;}this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});var b={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(e){b[e]=function(g){var f={method:e};
if(g!=null){f.data=g;}return this.send(f);};});c.implement(b);Element.Properties.send={set:function(e){var f=this.get("send").cancel();f.setOptions(e);
return this;},get:function(){var e=this.retrieve("send");if(!e){e=new c({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")});
this.store("send",e);}return e;}};Element.implement({send:function(e){var f=this.get("send");f.send({data:this,url:e||f.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(typeof JSON=="undefined"){this.JSON={};}JSON=new Hash({stringify:JSON.stringify,parse:JSON.parse});(function(){var special={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};
var escape=function(chr){return special[chr]||"\\u"+("0000"+chr.charCodeAt(0).toString(16)).slice(-4);};JSON.validate=function(string){string=string.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"");
return(/^[\],:{}\s]*$/).test(string);};JSON.encode=JSON.stringify?function(obj){return JSON.stringify(obj);}:function(obj){if(obj&&obj.toJSON){obj=obj.toJSON();
}switch(typeOf(obj)){case"string":return'"'+obj.replace(/[\x00-\x1f\\"]/g,escape)+'"';case"array":return"["+obj.map(JSON.encode).clean()+"]";case"object":case"hash":var string=[];
Object.each(obj,function(value,key){var json=JSON.encode(value);if(json){string.push(JSON.encode(key)+":"+json);}});return"{"+string+"}";case"number":case"boolean":return""+obj;
case"null":return"null";}return null;};JSON.decode=function(string,secure){if(!string||typeOf(string)!="string"){return null;}if(secure||JSON.secure){if(JSON.parse){return JSON.parse(string);
}if(!JSON.validate(string)){throw new Error("JSON could not decode the input; security is enabled and the value is not secure.");}}return eval("("+string+")");
};}).call(this);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;try{b=this.response.json=JSON.decode(c,this.options.secure);}catch(a){this.fireEvent("error",[c,a]);return;}if(b==null){this.onFailure();
}else{this.onSuccess(b,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 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_"+String.uniqueID();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()].append(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);};}).call(this);

// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more/860948cc6951b1d186e3afa4d31feff9 
// Or build this file again with packager using: packager build More/More More/Events.Pseudos More/Class.Refactor More/Class.Binds More/Class.Occlude More/Chain.Wait More/Array.Extras More/Date More/Date.Extras More/Number.Format More/Object.Extras More/String.Extras More/String.QueryString More/URI More/URI.Relative More/Hash More/Hash.Extras More/Element.Forms More/Elements.From More/Element.Event.Pseudos More/Element.Event.Pseudos.Keys More/Element.Delegation More/Element.Measure More/Element.Pin More/Element.Position More/Element.Shortcuts More/Form.Request More/Form.Request.Append More/OverText More/Fx.Elements More/Fx.Accordion More/Fx.Move More/Fx.Reveal More/Fx.Scroll More/Fx.Slide More/Fx.SmoothScroll More/Fx.Sort More/Drag More/Drag.Move More/Slider More/Sortables More/Request.JSONP More/Request.Queue More/Request.Periodical More/Assets More/Color More/Group More/Hash.Cookie More/IframeShim More/HtmlTable More/HtmlTable.Zebra More/HtmlTable.Sort More/HtmlTable.Select More/Keyboard More/Keyboard.Extras More/Mask More/Scroller More/Tips More/Spinner More/Locale More/Locale.en-US.Date More/Locale.en-US.Number

MooTools.More={version:"1.3.1.1",build:"0292a3af1eea242b817fecf9daa127417d10d4ce"};Events.Pseudos=function(g,c,e){var b="monitorEvents:";var a=function(h){return{store:h.store?function(i,j){h.store(b+i,j);
}:function(i,j){(h.$monitorEvents||(h.$monitorEvents={}))[i]=j;},retrieve:h.retrieve?function(i,j){return h.retrieve(b+i,j);}:function(i,j){if(!h.$monitorEvents){return j;
}return h.$monitorEvents[i]||j;}};};var f=function(j){if(j.indexOf(":")==-1||!g){return null;}var i=Slick.parse(j).expressions[0][0],m=i.pseudos,h=m.length,k=[];
while(h--){if(g[m[h].key]){k.push({event:i.tag,value:m[h].value,pseudo:m[h].key,original:j});}}return k.length?k:null;};var d=function(h){return Object.merge.apply(this,h.map(function(i){return g[i.pseudo].options||{};
}));};return{addEvent:function(m,p,j){var n=f(m);if(!n){return c.call(this,m,p,j);}var k=a(this),s=k.retrieve(m,[]),h=n[0].event,t=d(n),o=p,i=t[h]||{},l=Array.slice(arguments,2),r=this,q;
if(i.args){l.append(Array.from(i.args));}if(i.base){h=i.base;}if(i.onAdd){i.onAdd(this);}n.each(function(u){var v=o;o=function(){(i.listener||g[u.pseudo].listener).call(r,u,v,arguments,q,t);
};});q=o.bind(this);s.include({event:p,monitor:q});k.store(m,s);c.apply(this,[m,p].concat(l));return c.apply(this,[h,q].concat(l));},removeEvent:function(l,n){var m=f(l);
if(!m){return e.call(this,l,n);}var j=a(this),o=j.retrieve(l);if(!o){return this;}var h=m[0].event,p=d(m),i=p[h]||{},k=Array.slice(arguments,2);if(i.args){k.append(Array.from(i.args));
}if(i.base){h=i.base;}if(i.onRemove){i.onRemove(this);}e.apply(this,[l,n].concat(k));o.each(function(q,r){if(!n||q.event==n){e.apply(this,[h,q.monitor].concat(k));
}delete o[r];},this);j.store(l,o);return this;}};};(function(){var b={once:{listener:function(e,f,d,c){f.apply(this,d);this.removeEvent(e.event,c).removeEvent(e.original,f);
}},throttle:{listener:function(d,e,c){if(!e._throttled){e.apply(this,c);e._throttled=setTimeout(function(){e._throttled=false;},d.value||250);}}},pause:{listener:function(d,e,c){clearTimeout(e._pause);
e._pause=e.delay(d.value||250,this,c);}}};Events.definePseudo=function(c,d){b[c]=Type.isFunction(d)?{listener:d}:d;return this;};Events.lookupPseudo=function(c){return b[c];
};var a=Events.prototype;Events.implement(Events.Pseudos(b,a.addEvent,a.removeEvent));["Request","Fx"].each(function(c){if(this[c]){this[c].implement(Events.prototype);
}});}).call(this);Class.refactor=function(b,a){Object.each(a,function(e,d){var c=b.prototype[d];if(c&&c.$origin){c=c.$origin;}b.implement(d,(typeof e=="function")?function(){var f=this.previous;
this.previous=c||function(){};var g=e.apply(this,arguments);this.previous=f;return g;}:e);});return b;};Class.Mutators.Binds=function(a){if(!this.prototype.initialize){this.implement("initialize",function(){});
}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);};};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){return(this.occluded=a);
}this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var a={wait:function(b){return this.chain(function(){this.callChain.delay(b==null?500:b,this);
}.bind(this));}};Chain.implement(a);if(this.Fx){Fx.implement(a);}if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(b){Array.from(b||["tween","morph","reveal"]).each(function(c){c=this.get(c);
if(!c){return;}c.setOptions({link:"chain"});},this);return this;},pauseFx:function(c,b){this.chains(b).get(b||"tween").wait(c);return this;}});}}).call(this);
(function(a){Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;
},sum:function(){var b=0,c=this.length;if(c){while(c--){b+=this[c];}}return b;},unique:function(){return[].combine(this);},shuffle:function(){for(var c=this.length;
c&&--c;){var b=this[c],d=Math.floor(Math.random()*(c+1));this[c]=this[d];this[d]=b;}return this;},reduce:function(d,e){for(var c=0,b=this.length;c<b;c++){if(c in this){e=e===a?this[c]:d.call(null,e,this[c],c,this);
}}return e;},reduceRight:function(c,d){var b=this.length;while(b--){if(b in this){d=d===a?this[b]:c.call(null,d,this[b],b,this);}}return d;}});}).call(this);
(function(){var b=function(c){return c!=null;};var a=Object.prototype.hasOwnProperty;Object.extend({getFromPath:function(e,f){if(typeof f=="string"){f=f.split(".");
}for(var d=0,c=f.length;d<c;d++){if(a.call(e,f[d])){e=e[f[d]];}else{return null;}}return e;},cleanValues:function(c,e){e=e||b;for(var d in c){if(!e(c[d])){delete c[d];
}}return c;},erase:function(c,d){if(a.call(c,d)){delete c[d];}return c;},run:function(d){var c=Array.slice(arguments,1);for(var e in d){if(d[e].apply){d[e].apply(d,c);
}}return d;}});}).call(this);(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);}});}).call(this);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",firstDayOfWeek:0,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 a=this.Date;var f=a.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(t){a.Methods[t.toLowerCase()]=t;
});var p=function(v,u,t){if(u==1){return v;}return v<Math.pow(10,u-1)?(t||"0")+p(v,u-1,t):v;};a.implement({set:function(v,t){v=v.toLowerCase();var u=f[v]&&"set"+f[v];
if(u&&this[u]){this[u](t);}return this;}.overloadSetter(),get:function(u){u=u.toLowerCase();var t=f[u]&&"get"+f[u];if(t&&this[t]){return this[t]();}return null;
}.overloadGetter(),clone:function(){return new a(this.get("time"));},increment:function(t,v){t=t||"day";v=v!=null?v:1;switch(t){case"year":return this.increment("month",v*12);
case"month":var u=this.get("date");this.set("date",1).set("mo",this.get("mo")+v);return this.set("date",u.min(this.get("lastdayofmonth")));case"week":return this.increment("day",v*7);
case"day":return this.set("date",this.get("date")+v);}if(!a.units[t]){throw new Error(t+" is not a supported interval");}return this.set("time",this.get("time")+v*a.units[t]());
},decrement:function(t,u){return this.increment(t,-1*(u!=null?u:1));},isLeapYear:function(){return a.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});
},diff:function(u,t){if(typeOf(u)=="string"){u=a.parse(u);}return((u-this)/a.units[t||"day"](3,3)).round();},getLastDayOfMonth:function(){return a.daysInMonth(this.get("mo"),this.get("year"));
},getDayOfYear:function(){return(a.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-a.UTC(this.get("year"),0,1))/a.units.day();},setDay:function(u,t){if(t==null){t=a.getMsg("firstDayOfWeek");
if(t===""){t=1;}}u=(7+a.parseDay(u,true)-t)%7;var v=(7+this.get("day")-t)%7;return this.increment("day",u-v);},getWeek:function(w){if(w==null){w=a.getMsg("firstDayOfWeek");
if(w===""){w=1;}}var y=this,v=(7+y.get("day")-w)%7,u=0,x;if(w==1){var z=y.get("month"),t=y.get("date")-v;if(z==11&&t>28){return 1;}if(z==0&&t<-2){y=new a(y).decrement("day",v);
v=0;}x=new a(y.get("year"),0,1).get("day")||7;if(x>4){u=-7;}}else{x=new a(y.get("year"),0,1).get("day");}u+=y.get("dayofyear");u+=6-v;u+=(7+x-w)%7;return(u/7);
},getOrdinal:function(t){return a.getMsg("ordinal",t||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 t=this.get("timezoneOffset");return((t>0)?"-":"+")+p((t.abs()/60).floor(),2)+p(t%60,2);},setAMPM:function(t){t=t.toUpperCase();
var u=this.get("hr");if(u>11&&t=="AM"){return this.decrement("hour",12);}else{if(u<12&&t=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";
},parse:function(t){this.set("time",a.parse(t));return this;},isValid:function(t){return !isNaN((t||this).valueOf());},format:function(u){if(!this.isValid()){return"invalid date";
}if(!u){u="%x %X";}var t=u.toLowerCase();if(s[t]){return s[t](this);}u=g[t]||u;var v=this;return u.replace(/%([a-z%])/gi,function(x,w){switch(w){case"a":return a.getMsg("days_abbr")[v.get("day")];
case"A":return a.getMsg("days")[v.get("day")];case"b":return a.getMsg("months_abbr")[v.get("month")];case"B":return a.getMsg("months")[v.get("month")];
case"c":return v.format("%a %b %d %H:%M:%S %Y");case"d":return p(v.get("date"),2);case"e":return p(v.get("date"),2," ");case"H":return p(v.get("hr"),2);
case"I":return p((v.get("hr")%12)||12,2);case"j":return p(v.get("dayofyear"),3);case"k":return p(v.get("hr"),2," ");case"l":return p((v.get("hr")%12)||12,2," ");
case"L":return p(v.get("ms"),3);case"m":return p((v.get("mo")+1),2);case"M":return p(v.get("min"),2);case"o":return v.get("ordinal");case"p":return a.getMsg(v.get("ampm"));
case"s":return Math.round(v/1000);case"S":return p(v.get("seconds"),2);case"T":return v.format("%H:%M:%S");case"U":return p(v.get("week"),2);case"w":return v.get("day");
case"x":return v.format(a.getMsg("shortDate"));case"X":return v.format(a.getMsg("shortTime"));case"y":return v.get("year").toString().substr(2);case"Y":return v.get("year");
case"z":return v.get("GMTOffset");case"Z":return v.get("Timezone");}return w;});},toISOString:function(){return this.format("iso8601");}}).alias({toJSON:"toISOString",compare:"diff",strftime:"format"});
var g={db:"%Y-%m-%d %H:%M:%S",compact:"%Y%m%dT%H%M%S","short":"%d %b %H:%M","long":"%B %d, %Y %H:%M"};var k=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
var s={rfc822:function(t){return k[t.get("day")]+t.format(", %d ")+h[t.get("month")]+t.format(" %Y %H:%M:%S %Z");},rfc2822:function(t){return k[t.get("day")]+t.format(", %d ")+h[t.get("month")]+t.format(" %Y %H:%M:%S %z");
},iso8601:function(t){return(t.getUTCFullYear()+"-"+p(t.getUTCMonth()+1,2)+"-"+p(t.getUTCDate(),2)+"T"+p(t.getUTCHours(),2)+":"+p(t.getUTCMinutes(),2)+":"+p(t.getUTCSeconds(),2)+"."+p(t.getUTCMilliseconds(),3)+"Z");
}};var c=[],n=a.parse;var r=function(w,y,v){var u=-1,x=a.getMsg(w+"s");switch(typeOf(y)){case"object":u=x[y.get(w)];break;case"number":u=x[y];if(!u){throw new Error("Invalid "+w+" index: "+y);
}break;case"string":var t=x.filter(function(z){return this.test(z);},new RegExp("^"+y,"i"));if(!t.length){throw new Error("Invalid "+w+" string");}if(t.length>1){throw new Error("Ambiguous "+w);
}u=t[0];}return(v)?x.indexOf(u):u;};var i=1900,o=70;a.extend({getMsg:function(u,t){return Locale.get("Date."+u,t);},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(u,t){var v=new a;
return a.daysInMonth(u!=null?u:v.get("mo"),t!=null?t:v.get("year"))*86400000;},year:function(t){t=t||new a().get("year");return a.isLeapYear(t)?31622400000:31536000000;
}},daysInMonth:function(u,t){return[31,a.isLeapYear(t)?29:28,31,30,31,30,31,31,30,31,30,31][u];},isLeapYear:function(t){return((t%4===0)&&(t%100!==0))||(t%400===0);
},parse:function(w){var v=typeOf(w);if(v=="number"){return new a(w);}if(v!="string"){return w;}w=w.clean();if(!w.length){return null;}var u;c.some(function(x){var t=x.re.exec(w);
return(t)?(u=x.handler(t)):false;});if(!(u&&u.isValid())){u=new a(n(w));if(!(u&&u.isValid())){u=new a(w.toInt());}}return u;},parseDay:function(t,u){return r("day",t,u);
},parseMonth:function(u,t){return r("month",u,t);},parseUTC:function(u){var t=new a(u);var v=a.UTC(t.get("year"),t.get("mo"),t.get("date"),t.get("hr"),t.get("min"),t.get("sec"),t.get("ms"));
return new a(v);},orderIndex:function(t){return a.getMsg("dateOrder").indexOf(t)+1;},defineFormat:function(t,u){g[t]=u;return this;},defineFormats:function(t){for(var u in t){a.defineFormat(u,t[u]);
}return this;},parsePatterns:c,defineParser:function(t){c.push((t.re&&t.handler)?t:l(t));return this;},defineParsers:function(){Array.flatten(arguments).each(a.defineParser);
return this;},define2DigitYearStart:function(t){o=t%100;i=t-o;return this;}});var d=function(t){return new RegExp("(?:"+a.getMsg(t).map(function(u){return u.substr(0,3);
}).join("|")+")[a-z]*");};var m=function(t){switch(t){case"T":return"%H:%M:%S";case"x":return((a.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?";
case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?";}return null;};var j={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}/,z:/Z|[+-]\d{2}(?::?\d{2})?/};
j.m=j.I;j.S=j.M;var e;var b=function(t){e=t;j.a=j.A=d("days");j.b=j.B=d("months");c.each(function(v,u){if(v.format){c[u]=l(v.format);}});};var l=function(v){if(!e){return{format:v};
}var t=[];var u=(v.source||v).replace(/%([a-z])/gi,function(x,w){return m(w)||x;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(x,w){var y=j[w];
if(!y){return w;}t.push(w);return"("+y.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff;&]");return{format:v,re:new RegExp("^"+u+"$","i"),handler:function(z){z=z.slice(1).associate(t);
var w=new a().clearTime(),y=z.y||z.Y;if(y!=null){q.call(w,"y",y);}if("d" in z){q.call(w,"d",1);}if("m" in z||z.b||z.B){q.call(w,"m",1);}for(var x in z){q.call(w,x,z[x]);
}return w;}};};var q=function(t,u){if(!u){return this;}switch(t){case"a":case"A":return this.set("day",a.parseDay(u,true));case"b":case"B":return this.set("mo",a.parseMonth(u,true));
case"d":return this.set("date",u);case"H":case"I":return this.set("hr",u);case"m":return this.set("mo",u-1);case"M":return this.set("min",u);case"p":return this.set("ampm",u.replace(/\./g,""));
case"S":return this.set("sec",u);case"s":return this.set("ms",("0."+u)*1000);case"w":return this.set("day",u);case"Y":return this.set("year",u);case"y":u=+u;
if(u<100){u+=i+(u<o?100:0);}return this.set("year",u);case"z":if(u=="Z"){u="+00";}var v=u.match(/([+-])(\d{2}):?(\d{2})?/);v=(v[1]+"1")*(v[2]*60+(+v[3]||0))+this.getTimezoneOffset();
return this.set("time",this-v*60000);}return this;};a.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 %z %Y","%T","%H:%M( ?%p)?");
Locale.addEvent("change",function(t){if(Locale.get("Date")){b(t);}}).fireEvent("change",Locale.getCurrent());}).call(this);Date.implement({timeDiffInWords:function(a){return Date.distanceOfTimeInWords(this,a||new Date);
},timeDiff:function(f,c){if(f==null){f=new Date;}var h=((f-this)/1000).floor();var e=[],a=[60,60,24,365,0],d=["s","m","h","d","y"],g,b;for(var i=0;i<a.length;
i++){if(i&&!h){break;}g=h;if((b=a[i])){g=(h%b);h=(h/b).floor();}e.unshift(g+(d[i]||""));}return e.join(c||":");}}).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});}}).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);}}).alias("timeAgoInWords","timeDiffInWords");
Locale.define("en-US","Number",{decimal:".",group:",",currency:{prefix:"$ "}});Number.implement({format:function(q){var n=this;if(!q){q={};}var a=function(i){if(q[i]!=null){return q[i];
}return Locale.get("Number."+i);};var f=n<0,h=a("decimal"),k=a("precision"),o=a("group"),c=a("decimals");if(f){var e=Locale.get("Number.negative")||{};
if(e.prefix==null&&e.suffix==null){e.prefix="-";}Object.each(e,function(r,i){q[i]=(i=="prefix"||i=="suffix")?(a(i)+r):r;});n=-n;}var l=a("prefix"),p=a("suffix");
if(c!==""&&c>=0&&c<=20){n=n.toFixed(c);}if(k>=1&&k<=21){n=(+n).toPrecision(k);}n+="";var m;if(a("scientific")===false&&n.indexOf("e")>-1){var j=n.split("e"),b=+j[1];
n=j[0].replace(".","");if(b<0){b=-b-1;m=j[0].indexOf(".");if(m>-1){b-=m-1;}while(b--){n="0"+n;}n="0."+n;}else{m=j[0].lastIndexOf(".");if(m>-1){b-=j[0].length-m-1;
}while(b--){n+="0";}}}if(h!="."){n=n.replace(".",h);}if(o){m=n.lastIndexOf(h);m=(m>-1)?m:n.length;var d=n.substring(m),g=m;while(g--){if((m-g-1)%3==0&&g!=(m-1)){d=o+d;
}d=n.charAt(g)+d;}n=d;}if(l){n=l+n;}if(p){n+=p;}return n;},formatCurrency:function(){var a=Locale.get("Number.currency")||{};if(a.scientific==null){a.scientific=false;
}if(a.decimals==null){a.decimals=2;}return this.format(a);},formatPercentage:function(){var a=Locale.get("Number.percentage")||{};if(a.suffix==null){a.suffix="%";
}if(a.decimals==null){a.decimals=2;}return this.format(a);}});(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,h){var e=f,g;for(g in h){e=e.replace(h[g],g);}return e;};var d=function(e,g){e=e||"";var h=g?"<"+e+"(?!\\w)[^>]*>([\\s\\S]*?)</"+e+"(?!\\w)>":"</?"+e+"([^>]+)?>",f=new RegExp(h,"gi");
return f;};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);},truncate:function(e,f,i){var h=this;
if(f==null&&arguments.length==1){f="…";}if(h.length>e){h=h.substring(0,e);if(i){var g=h.lastIndexOf(i);if(g!=-1){h=h.substr(0,g);}}if(f){h+=f;}}return h;
}});}).call(this);String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(!c.length){return b;
}c.each(function(i){var e=i.indexOf("=")+1,g=e?i.substr(e):"",f=e?i.substr(0,e-1).match(/([^\]\[]+|(\B)(?=\]))/g):[i],h=b;if(!f){return;}if(a){g=decodeURIComponent(g);
}f.each(function(k,j){if(d){k=decodeURIComponent(k);}var l=h[k];if(j<f.length-1){h=h[k]=l||{};}else{if(typeOf(l)=="array"){l.push(g);}else{h[k]=l!=null?[l,g]:g;
}}});});return b;},cleanQueryString:function(a){return this.split("&").filter(function(e){var b=e.indexOf("="),c=b<0?"":e.substr(0,b),d=e.substr(b+1);return a?a.call(null,c,d):(d||d===0);
}).join("&");}});(function(){var b=function(){return this.get("value");};var a=this.URI=new Class({Implements:Options,options:{},regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:["scheme","user","password","host","port","directory","file","query","fragment"],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(d,c){this.setOptions(c);
var e=this.options.base||a.base;if(!d){d=e;}if(d&&d.parsed){this.parsed=Object.clone(d.parsed);}else{this.set("value",d.href||d.toString(),e?new a(e):false);
}},parse:function(e,d){var c=e.match(this.regex);if(!c){return false;}c.shift();return this.merge(c.associate(this.parts),d);},merge:function(d,c){if((!d||!d.scheme)&&(!c||!c.scheme)){return false;
}if(c){this.parts.every(function(e){if(d[e]){return false;}d[e]=c[e]||"";return true;});}d.port=d.port||this.schemes[d.scheme.toLowerCase()];d.directory=d.directory?this.parseDirectory(d.directory,c?c.directory:""):"/";
return d;},parseDirectory:function(d,e){d=(d.substr(0,1)=="/"?"":(e||"/"))+d;if(!d.test(a.regs.directoryDot)){return d;}var c=[];d.replace(a.regs.endSlash,"").split("/").each(function(f){if(f==".."&&c.length>0){c.pop();
}else{if(f!="."){c.push(f);}}});return c.join("/")+"/";},combine:function(c){return c.value||c.scheme+"://"+(c.user?c.user+(c.password?":"+c.password:"")+"@":"")+(c.host||"")+(c.port&&c.port!=this.schemes[c.scheme]?":"+c.port:"")+(c.directory||"/")+(c.file||"")+(c.query?"?"+c.query:"")+(c.fragment?"#"+c.fragment:"");
},set:function(d,f,e){if(d=="value"){var c=f.match(a.regs.scheme);if(c){c=c[1];}if(c&&this.schemes[c.toLowerCase()]==null){this.parsed={scheme:c,value:f};
}else{this.parsed=this.parse(f,(e||this).parsed)||(c?{scheme:c,value:f}:{value:f});}}else{if(d=="data"){this.setData(f);}else{this.parsed[d]=f;}}return this;
},get:function(c,d){switch(c){case"value":return this.combine(this.parsed,d?d.parsed:false);case"data":return this.getData();}return this.parsed[c]||"";
},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(e,d){var c=this.get(d||"query");if(!(c||c===0)){return e?null:{};
}var f=c.parseQueryString();return e?f[e]:f;},setData:function(c,f,d){if(typeof c=="string"){var e=this.getData();e[arguments[0]]=arguments[1];c=e;}else{if(f){c=Object.merge(this.getData(),c);
}}return this.set(d||"query",Object.toQueryString(c));},clearData:function(c){return this.set(c||"query","");},toString:b,valueOf:b});a.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};
a.base=new a(Array.from(document.getElements("base[href]",true)).getLast(),{base:document.location});String.implement({toURI:function(c){return new a(this,c);
}});}).call(this);URI=Class.refactor(URI,{combine:function(f,e){if(!e||f.scheme!=e.scheme||f.host!=e.host||f.port!=e.port){return this.previous.apply(this,arguments);
}var a=f.file+(f.query?"?"+f.query:"")+(f.fragment?"#"+f.fragment:"");if(!e.directory){return(f.directory||(f.file?"":"./"))+a;}var d=e.directory.split("/"),c=f.directory.split("/"),g="",h;
var b=0;for(h=0;h<d.length&&h<c.length&&d[h]==c[h];h++){}for(b=0;b<d.length-h-1;b++){g+="../";}for(b=h;b<c.length-1;b++){g+=c[b]+"/";}return(g||(f.file?"":"./"))+a;
},toAbsolute:function(a){a=new URI(a);if(a){a.set("directory","").set("file","");}return this.toRelative(a);},toRelative:function(a){return this.get("value",new URI(a));
}});(function(){if(this.Hash){return;}var a=this.Hash=new Type("Hash",function(b){if(typeOf(b)=="hash"){b=Object.clone(b.getClean());}for(var c in b){this[c]=b[c];
}return this;});this.$H=function(b){return new a(b);};a.implement({forEach:function(b,c){Object.forEach(this,b,c);},getClean:function(){var c={};for(var b in this){if(this.hasOwnProperty(b)){c[b]=this[b];
}}return c;},getLength:function(){var c=0;for(var b in this){if(this.hasOwnProperty(b)){c++;}}return c;}});a.alias("each","forEach");a.implement({has:Object.prototype.hasOwnProperty,keyOf:function(b){return Object.keyOf(this,b);
},hasValue:function(b){return Object.contains(this,b);},extend:function(b){a.each(b||{},function(d,c){a.set(this,c,d);},this);return this;},combine:function(b){a.each(b||{},function(d,c){a.include(this,c,d);
},this);return this;},erase:function(b){if(this.hasOwnProperty(b)){delete this[b];}return this;},get:function(b){return(this.hasOwnProperty(b))?this[b]:null;
},set:function(b,c){if(!this[b]||this.hasOwnProperty(b)){this[b]=c;}return this;},empty:function(){a.each(this,function(c,b){delete this[b];},this);return this;
},include:function(b,c){if(this[b]==undefined){this[b]=c;}return this;},map:function(b,c){return new a(Object.map(this,b,c));},filter:function(b,c){return new a(Object.filter(this,b,c));
},every:function(b,c){return Object.every(this,b,c);},some:function(b,c){return Object.some(this,b,c);},getKeys:function(){return Object.keys(this);},getValues:function(){return Object.values(this);
},toQueryString:function(b){return Object.toQueryString(this,b);}});a.alias({indexOf:"keyOf",contains:"hasValue"});}).call(this);Hash.implement({getFromPath:function(a){return Object.getFromPath(this,a);
},cleanValues:function(a){return new Hash(Object.cleanValues(this,a));},run:function(){Object.run(arguments);}});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;}});Elements.from=function(e,d){if(d||d==null){e=e.stripScripts();
}var b,c=e.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i);if(c){b=new Element("table");var a=c[1].toLowerCase();if(["td","th","tr"].contains(a)){b=new Element("tbody").inject(b);
if(a!="tr"){b=new Element("tr").inject(b);}}}return(b||new Element("div")).set("html",e).getChildren();};(function(){var d={},c=["once","throttle","pause"],b=c.length;
while(b--){d[c[b]]=Events.lookupPseudo(c[b]);}Event.definePseudo=function(e,f){d[e]=Type.isFunction(f)?{listener:f}:f;return this;};var a=Element.prototype;
[Element,Window,Document].invoke("implement",Events.Pseudos(d,a.addEvent,a.removeEvent));}).call(this);(function(){var a="$moo:keys-pressed",b="$moo:keys-keyup";
Event.definePseudo("keys",function(d,e,c){var g=c[0],f=[],h=this.retrieve(a,[]);f.append(d.value.replace("++",function(){f.push("+");return"";}).split("+"));
h.include(g.key);if(f.every(function(j){return h.contains(j);})){e.apply(this,c);}this.store(a,h);if(!this.retrieve(b)){var i=function(j){(function(){h=this.retrieve(a,[]).erase(j.key);
this.store(a,h);}).delay(0,this);};this.store(b,i).addEvent("keyup",i);}});Object.append(Event.Keys,{shift:16,control:17,alt:18,capslock:20,pageup:33,pagedown:34,end:35,home:36,numlock:144,scrolllock:145,";":186,"=":187,",":188,"-":Browser.firefox?109:189,".":190,"/":191,"`":192,"[":219,"\\":220,"]":221,"'":222,"+":107});
}).call(this);(function(){var b=!(window.attachEvent&&!window.addEventListener),e=Element.NativeEvents;e.focusin=2;e.focusout=2;var c=function(g,j,h){var i=Element.Events[g.event],k;
if(i){k=i.condition;}return Slick.match(j,g.value)&&(!k||k.call(j,h));};var f=function(g){var h="$delegation:";return{base:"focusin",onRemove:function(i){i.retrieve(h+"forms",[]).each(function(j){j.retrieve(h+"listeners",[]).each(function(k){j.removeEvent(g,k);
});j.eliminate(h+g+"listeners").eliminate(h+g+"originalFn");});},listener:function(q,r,p,s,t){var j=p[0],i=this.retrieve(h+"forms",[]),o=j.target,l=(o.get("tag")=="form")?o:j.target.getParent("form"),n=l.retrieve(h+"originalFn",[]),k=l.retrieve(h+"listeners",[]);
i.include(l);this.store(h+"forms",i);if(!n.contains(r)){var m=function(u){if(c(q,this,u)){r.call(this,u);}};l.addEvent(g,m);n.push(r);k.push(m);l.store(h+g+"originalFn",n).store(h+g+"listeners",k);
}}};};var a=function(g){return{base:"focusin",listener:function(j,k,h){var i={blur:function(){this.removeEvents(i);}};i[g]=function(l){if(c(j,this,l)){k.call(this,l);
}};h[0].target.addEvents(i);}};};var d={mouseenter:{base:"mouseover"},mouseleave:{base:"mouseout"},focus:{base:"focus"+(b?"":"in"),args:[true]},blur:{base:b?"blur":"focusout",args:[true]}};
if(!b){Object.append(d,{submit:f("submit"),reset:f("reset"),change:a("change"),select:a("select")});}Event.definePseudo("relay",{listener:function(j,k,i,g,h){var l=i[0];
for(var n=l.target;n&&n!=this;n=n.parentNode){var m=document.id(n);if(c(j,m,l)){if(m){k.call(m,l,m);}return;}}},options:d});}).call(this);(function(){var b=function(e,d){var f=[];
Object.each(d,function(g){Object.each(g,function(h){e.each(function(i){f.push(i+"-"+h+(i=="border"?"-width":""));});});});return f;};var c=function(f,e){var d=0;
Object.each(e,function(h,g){if(g.test(f)){d=d+h.toInt();}});return d;};var a=function(d){return !!(!d||d.offsetHeight||d.offsetWidth);};Element.implement({measure:function(h){if(a(this)){return h.call(this);
}var g=this.getParent(),e=[];while(!a(g)&&g!=document.body){e.push(g.expose());g=g.getParent();}var f=this.expose(),d=h.call(this);f();e.each(function(i){i();
});return d;},expose:function(){if(this.getStyle("display")!="none"){return function(){};}var d=this.style.cssText;this.setStyles({display:"block",position:"absolute",visibility:"hidden"});
return function(){this.style.cssText=d;}.bind(this);},getDimensions:function(d){d=Object.merge({computeSize:false},d);var i={x:0,y:0};var h=function(j,e){return(e.computeSize)?j.getComputedSize(e):j.getSize();
};var f=this.getParent("body");if(f&&this.getStyle("display")=="none"){i=this.measure(function(){return h(this,d);});}else{if(f){try{i=h(this,d);}catch(g){}}}return Object.append(i,(i.x||i.x===0)?{width:i.x,height:i.y}:{x:i.width,y:i.height});
},getComputedSize:function(d){if(d&&d.plains){d.planes=d.plains;}d=Object.merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},d);
var g={},e={width:0,height:0},f;if(d.mode=="vertical"){delete e.width;delete d.planes.width;}else{if(d.mode=="horizontal"){delete e.height;delete d.planes.height;
}}b(d.styles,d.planes).each(function(h){g[h]=this.getStyle(h).toInt();},this);Object.each(d.planes,function(i,h){var k=h.capitalize(),j=this.getStyle(h);
if(j=="auto"&&!f){f=this.getDimensions();}j=g[h]=(j=="auto")?f[h]:j.toInt();e["total"+k]=j;i.each(function(m){var l=c(m,g);e["computed"+m.capitalize()]=l;
e["total"+k]+=l;});},this);return Object.append(e,g);}});}).call(this);(function(){var a=false,b=false;var c=function(){var d=new Element("div").setStyles({position:"fixed",top:0,right:0}).inject(document.body);
a=(d.offsetTop===0);d.dispose();b=true;};Element.implement({pin:function(h,f){if(!b){c();}if(this.getStyle("display")=="none"){return this;}var j,k=window.getScroll(),l,e;
if(h!==false){j=this.getPosition(a?document.body:this.getOffsetParent());if(!this.retrieve("pin:_pinned")){var g={top:j.y-k.y,left:j.x-k.x};if(a&&!f){this.setStyle("position","fixed").setStyles(g);
}else{l=this.getOffsetParent();var i=this.getPosition(l),m=this.getStyles("left","top");if(l&&m.left=="auto"||m.top=="auto"){this.setPosition(i);}if(this.getStyle("position")=="static"){this.setStyle("position","absolute");
}i={x:m.left.toInt()-k.x,y:m.top.toInt()-k.y};e=function(){if(!this.retrieve("pin:_pinned")){return;}var n=window.getScroll();this.setStyles({left:i.x+n.x,top:i.y+n.y});
}.bind(this);this.store("pin:_scrollFixer",e);window.addEvent("scroll",e);}this.store("pin:_pinned",true);}}else{if(!this.retrieve("pin:_pinned")){return this;
}l=this.getParent();var d=(l.getComputedStyle("position")!="static"?l:l.getOffsetParent());j=this.getPosition(d);this.store("pin:_pinned",false);e=this.retrieve("pin:_scrollFixer");
if(!e){this.setStyles({position:"absolute",top:j.y+k.y,left:j.x+k.x});}else{this.store("pin:_scrollFixer",null);window.removeEvent("scroll",e);}this.removeClass("isPinned");
}return this;},unpin:function(){return this.pin(false);},togglePin:function(){return this.pin(!this.retrieve("pin:_pinned"));}});Element.alias("togglepin","togglePin");
}).call(this);(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;}});}).call(this);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(window.getSelection){var a=window.getSelection();
if(a&&a.removeAllRanges){a.removeAllRanges();}}else{if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(b){}}}}});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.ie6||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt();
if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c);
}c=((this.options.zIndex!=null||this.options.zIndex===0)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this);
var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a);
}else{a();}}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this;
}var a=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2);
this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset});
return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block");
}return this.position();},dispose:function(){if(this.shim){this.shim.dispose();}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this;
}});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body);
this.target.store("mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+String.uniqueID(),styles:Object.merge({},this.options.style,{display:"none"}),events:{click:function(a){this.fireEvent("click",a);
if(this.options.hideOnClick){this.hide();}}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(b,a){a=a||(this.options.inject?this.options.inject.where:"")||this.target==document.body?"inside":"after";
b=b||(this.options.inject&&this.options.inject.target)||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions);
this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height);
this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this;
},resize:function(a,e){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){this.element.setStyles({width:0,height:0});
var c=window.getScrollSize();if(d.totalHeight<c.y){d.totalHeight=c.y;}if(d.totalWidth<c.x){d.totalWidth=c.x;}}this.element.setStyles({width:Array.pick([a,d.totalWidth,d.x]),height:Array.pick([e,d.totalHeight,d.y])});
return this;},show:function(){if(!this.hidden){return this;}window.addEvent("resize",this.position);this.position();this.showMask.apply(this,arguments);
return this;},showMask:function(){this.element.setStyle("display","block");this.hidden=false;this.fireEvent("show");},hide:function(){if(this.hidden){return this;
}window.removeEvent("resize",this.position);this.hideMask.apply(this,arguments);if(this.options.destroyOnHide){return this.destroy();}return this;},hideMask:function(){this.element.setStyle("display","none");
this.hidden=true;this.fireEvent("hide");},toggle:function(){this[this.hidden?"show":"hide"]();},destroy:function(){this.hide();this.element.destroy();this.fireEvent("destroy");
this.target.eliminate("mask");}});Element.Properties.mask={set:function(b){var a=this.retrieve("mask");if(a){a.destroy();}return this.eliminate("mask").store("mask:options",b);
},get:function(){var a=this.retrieve("mask");if(!a){a=new Mask(this,this.retrieve("mask:options"));this.store("mask",a);}return a;}};Element.implement({mask:function(a){if(a){this.set("mask",a);
}this.get("mask").show();return this;},unmask:function(){this.get("mask").hide();return this;}});var Spinner=new Class({Extends:Mask,Implements:Chain,options:{"class":"spinner",containerPosition:{},content:{"class":"spinner-content"},messageContainer:{"class":"spinner-msg"},img:{"class":"spinner-img"},fxOptions:{link:"chain"}},initialize:function(c,a){this.target=document.id(c)||document.id(document.body);
this.target.store("spinner",this);this.setOptions(a);this.render();this.inject();var b=function(){this.active=false;}.bind(this);this.addEvents({hide:b,show:b});
},render:function(){this.parent();this.element.set("id",this.options.id||"spinner-"+String.uniqueID());this.content=document.id(this.options.content)||new Element("div",this.options.content);
this.content.inject(this.element);if(this.options.message){this.msg=document.id(this.options.message)||new Element("p",this.options.messageContainer).appendText(this.options.message);
this.msg.inject(this.content);}if(this.options.img){this.img=document.id(this.options.img)||new Element("div",this.options.img);this.img.inject(this.content);
}this.element.set("tween",this.options.fxOptions);},show:function(a){if(this.active){return this.chain(this.show.bind(this));}if(!this.hidden){this.callChain.delay(20,this);
return this;}this.active=true;return this.parent(a);},showMask:function(a){var b=function(){this.content.position(Object.merge({relativeTo:this.element},this.options.containerPosition));
}.bind(this);if(a){this.parent();b();}else{if(!this.options.style.opacity){this.options.style.opacity=this.element.getStyle("opacity").toFloat();}this.element.setStyles({display:"block",opacity:0}).tween("opacity",this.options.style.opacity);
b();this.hidden=false;this.fireEvent("show");this.callChain();}},hide:function(a){if(this.active){return this.chain(this.hide.bind(this));}if(this.hidden){this.callChain.delay(20,this);
return this;}this.active=true;return this.parent(a);},hideMask:function(a){if(a){return this.parent();}this.element.tween("opacity",0).get("tween").chain(function(){this.element.setStyle("display","none");
this.hidden=true;this.fireEvent("hide");this.callChain();}.bind(this));},destroy:function(){this.content.destroy();this.parent();this.target.eliminate("spinner");
}});Request=Class.refactor(Request,{options:{useSpinner:false,spinnerOptions:{},spinnerTarget:false},initialize:function(a){this._send=this.send;this.send=function(b){var c=this.getSpinner();
if(c){c.chain(this._send.pass(b,this)).show();}else{this._send(b);}return this;};this.previous(a);},getSpinner:function(){if(!this.spinner){var b=document.id(this.options.spinnerTarget)||document.id(this.options.update);
if(this.options.useSpinner&&b){b.set("spinner",this.options.spinnerOptions);var a=this.spinner=b.get("spinner");["complete","exception","cancel"].each(function(c){this.addEvent(c,a.hide.bind(a));
},this);}}return this.spinner;}});Element.Properties.spinner={set:function(a){var b=this.retrieve("spinner");if(b){b.destroy();}return this.eliminate("spinner").store("spinner:options",a);
},get:function(){var a=this.retrieve("spinner");if(!a){a=new Spinner(this,this.retrieve("spinner:options"));this.store("spinner",a);}return a;}};Element.implement({spin:function(a){if(a){this.set("spinner",a);
}this.get("spinner").show();return this;},unspin:function(){this.get("spinner").hide();return this;}});if(!window.Form){window.Form={};}(function(){Form.Request=new Class({Binds:["onSubmit","onFormValidate"],Implements:[Options,Events,Class.Occlude],options:{requestOptions:{evalScripts:true,useSpinner:true,emulation:false,link:"ignore"},sendButtonClicked:true,extraData:{},resetForm:true},property:"form.request",initialize:function(b,c,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.update=document.id(c);this.setOptions(a);this.makeRequest();if(this.options.resetForm){this.request.addEvent("success",function(){Function.attempt(function(){this.element.reset();
}.bind(this));if(window.OverText){OverText.update();}}.bind(this));}this.attach();},toElement:function(){return this.element;},makeRequest:function(){this.request=new Request.HTML(Object.merge({update:this.update,emulation:false,spinnerTarget:this.element,method:this.element.get("method")||"post"},this.options.requestOptions)).addEvents({success:function(b,d,c,a){["complete","success"].each(function(e){this.fireEvent(e,[this.update,b,d,c,a]);
},this);}.bind(this),failure:function(){this.fireEvent("complete",arguments).fireEvent("failure",arguments);}.bind(this),exception:function(){this.fireEvent("failure",arguments);
}.bind(this)});},attach:function(a){if(a==null){a=true;}var c=a?"addEvent":"removeEvent";this.element[c]("click:relay(button, input[type=submit])",this.saveClickedButton.bind(this));
var b=this.element.retrieve("validator");if(b){b[c]("onFormValidate",this.onFormValidate);}else{this.element[c]("submit",this.onSubmit);}},detach:function(){this.attach(false);
return this;},enable:function(){this.attach();return this;},disable:function(){this.detach();return this;},onFormValidate:function(c,b,a){if(!a){return;
}var d=this.element.retrieve("validator");if(c||(d&&!d.options.stopOnFailure)){a.stop();this.send();}},onSubmit:function(a){var b=this.element.retrieve("validator");
if(b){this.element.removeEvent("submit",this.onSubmit);b.addEvent("onFormValidate",this.onFormValidate);this.element.validate();return;}if(a){a.stop();
}this.send();},saveClickedButton:function(a,b){if(!this.options.sendButtonClicked||!b.get("name")){return;}this.options.extraData[b.get("name")]=b.get("value")||true;
this.clickedCleaner=function(){delete this.options.extraData[b.get("name")];this.clickedCleaner=function(){};}.bind(this);},clickedCleaner:function(){},send:function(){var b=this.element.toQueryString().trim(),a=Object.toQueryString(this.options.extraData);
if(b){b+="&"+a;}else{b=a;}this.fireEvent("send",[this.element,b.parseQueryString()]);this.request.send({data:b,url:this.options.requestOptions.url||this.element.get("action")});
this.clickedCleaner();return this;}});Element.Properties.formRequest={set:function(){var a=Array.link(arguments,{options:Type.isObject,update:Type.isElement,updateId:Type.isString}),c=a.update||a.updateId,b=this.retrieve("form.request");
if(c){if(b){b.update=document.id(c);}this.store("form.request:update",c);}if(a.options){if(b){b.setOptions(a.options);}this.store("form.request:options",a.options);
}return this;},get:function(){var a=Array.link(arguments,{options:Type.isObject,update:Type.isElement,updateId:Type.isString}),b=a.update||a.updateId;if(a.options||b||!this.retrieve("form.request")){if(a.options||!this.retrieve("form.request:options")){this.set("form.request",a.options);
}if(b){this.set("form.request",b);}this.store("form.request",new Form.Request(this,this.retrieve("form.request:update"),this.retrieve("form.request:options")));
}return this.retrieve("form.request");}};Element.implement({formUpdate:function(b,a){this.get("formRequest",b,a).send();return this;}});}).call(this);(function(){var a=function(d){var b=d.options.hideInputs;
if(window.OverText){var c=[null];OverText.each(function(e){c.include("."+e.options.labelClass);});if(c){b+=c.join(", ");}}return(b)?d.element.getElements(b):null;
};Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:"cancel",styles:["padding","border","margin"],transitionOpacity:!Browser.ie6,mode:"vertical",display:function(){return this.element.get("tag")!="tr"?"block":"table-row";
},opacity:1,hideInputs:Browser.ie?"select, input, textarea, object, embed":null},dissolve:function(){if(!this.hiding&&!this.showing){if(this.element.getStyle("display")!="none"){this.hiding=true;
this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
if(this.options.transitionOpacity){d.opacity=this.options.opacity;}var c={};Object.each(d,function(f,e){c[e]=[f,0];});this.element.setStyles({display:Function.from(this.options.display).call(this),overflow:"hidden"});
var b=a(this);if(b){b.setStyle("visibility","hidden");}this.$chain.unshift(function(){if(this.hidden){this.hiding=false;this.element.style.cssText=this.cssText;
this.element.setStyle("display","none");if(b){b.setStyle("visibility","visible");}}this.fireEvent("hide",this.element);this.callChain();}.bind(this));this.start(c);
}else{this.callChain.delay(10,this);this.fireEvent("complete",this.element);this.fireEvent("hide",this.element);}}else{if(this.options.link=="chain"){this.chain(this.dissolve.bind(this));
}else{if(this.options.link=="cancel"&&!this.hiding){this.cancel();this.dissolve();}}}return this;},reveal:function(){if(!this.showing&&!this.hiding){if(this.element.getStyle("display")=="none"){this.hiding=false;
this.showing=true;this.hidden=false;this.cssText=this.element.style.cssText;var d;this.element.measure(function(){d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
}.bind(this));if(this.options.heightOverride!=null){d.height=this.options.heightOverride.toInt();}if(this.options.widthOverride!=null){d.width=this.options.widthOverride.toInt();
}if(this.options.transitionOpacity){this.element.setStyle("opacity",0);d.opacity=this.options.opacity;}var c={height:0,display:Function.from(this.options.display).call(this)};
Object.each(d,function(f,e){c[e]=0;});c.overflow="hidden";this.element.setStyles(c);var b=a(this);if(b){b.setStyle("visibility","hidden");}this.$chain.unshift(function(){this.element.style.cssText=this.cssText;
this.element.setStyle("display",Function.from(this.options.display).call(this));if(!this.hidden){this.showing=false;}if(b){b.setStyle("visibility","visible");
}this.callChain();this.fireEvent("show",this.element);}.bind(this));this.start(d);}else{this.callChain();this.fireEvent("complete",this.element);this.fireEvent("show",this.element);
}}else{if(this.options.link=="chain"){this.chain(this.reveal.bind(this));}else{if(this.options.link=="cancel"&&!this.showing){this.cancel();this.reveal();
}}}return this;},toggle:function(){if(this.element.getStyle("display")=="none"){this.reveal();}else{this.dissolve();}return this;},cancel:function(){this.parent.apply(this,arguments);
if(this.cssText!=null){this.element.style.cssText=this.cssText;}this.hiding=false;this.showing=false;return this;}});Element.Properties.reveal={set:function(b){this.get("reveal").cancel().setOptions(b);
return this;},get:function(){var b=this.retrieve("reveal");if(!b){b=new Fx.Reveal(this);this.store("reveal",b);}return b;}};Element.Properties.dissolve=Element.Properties.reveal;
Element.implement({reveal:function(b){this.get("reveal").setOptions(b).reveal();return this;},dissolve:function(b){this.get("reveal").setOptions(b).dissolve();
return this;},nix:function(b){var c=Array.link(arguments,{destroy:Type.isBoolean,options:Type.isObject});this.get("reveal").setOptions(b).dissolve().chain(function(){this[c.destroy?"destroy":"dispose"]();
}.bind(this));return this;},wink:function(){var c=Array.link(arguments,{duration:Type.isNumber,options:Type.isObject});var b=this.get("reveal").setOptions(c.options);
b.reveal().chain(function(){(function(){b.dissolve();}).delay(c.duration||2000);});}});}).call(this);Form.Request.Append=new Class({Extends:Form.Request,options:{useReveal:true,revealOptions:{},inject:"bottom"},makeRequest:function(){this.request=new Request.HTML(Object.merge({url:this.element.get("action"),method:this.element.get("method")||"post",spinnerTarget:this.element},this.options.requestOptions,{evalScripts:false})).addEvents({success:function(b,g,f,a){var c;
var d=Elements.from(f);if(d.length==1){c=d[0];}else{c=new Element("div",{styles:{display:"none"}}).adopt(d);}c.inject(this.update,this.options.inject);
if(this.options.requestOptions.evalScripts){Browser.exec(a);}this.fireEvent("beforeEffect",c);var e=function(){this.fireEvent("success",[c,this.update,b,g,f,a]);
}.bind(this);if(this.options.useReveal){c.set("reveal",this.options.revealOptions).get("reveal").chain(e);c.reveal();}else{e();}}.bind(this),failure:function(a){this.fireEvent("failure",a);
}.bind(this)});}});var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",labelClass:"overTxtLabel",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){b=this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(b);OverText.instances.push(this);if(this.options.poll){this.poll();}},toElement:function(){return this.element;
},attach:function(){var b=this.element,a=this.options,c=a.textOverride||b.get("alt")||b.get("title");if(!c){return this;}var d=this.text=new Element(a.element,{"class":a.labelClass,styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:c,events:{click:this.hide.pass(a.element=="label",this)}}).inject(b,"after");
if(a.element=="label"){if(!b.get("id")){b.set("id","input_"+String.uniqueID());}d.set("for",b.get("id"));}if(a.wrap){this.textHolder=new Element("div.overTxtWrapper",{styles:{lineHeight:"normal",position:"relative"}}).grab(d).inject(b,"before");
}return this.enable();},destroy:function(){this.element.eliminate(this.property);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_"+String.uniqueID());
}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;
}if(a){clearInterval(this.poller);}else{this.poller=(function(){if(!this.pollingPaused){this.assert(true);}}).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;
}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;},test:function(){return !this.element.get("value");
},assert:function(a){return this[this.test()?"show":"hide"](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.each(function(c,b){if(c.element&&c.text){a.call(OverText,c,b);}});},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();
});}});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,resetHeight:true},initialize:function(){var g=function(h){return h!=null;
};var f=Array.link(arguments,{container:Type.isElement,options:Type.isObject,togglers:g,elements:g});this.parent(f.elements,f.options);var b=this.options,e=this.togglers=$$(f.togglers);
this.previous=-1;this.internalChain=new Chain();if(b.alwaysHide){this.options.link="chain";}if(b.show||this.options.show===0){b.display=false;this.previous=b.show;
}if(b.start){b.display=false;b.show=false;}var d=this.effects={};if(b.opacity){d.opacity="fullOpacity";}if(b.width){d.width=b.fixedWidth?"fullWidth":"offsetWidth";
}if(b.height){d.height=b.fixedHeight?"fullHeight":"scrollHeight";}for(var c=0,a=e.length;c<a;c++){this.addSection(e[c],this.elements[c]);}this.elements.each(function(j,h){if(b.show===h){this.fireEvent("active",[e[h],j]);
}else{for(var k in d){j.setStyle(k,0);}}},this);if(b.display||b.display===0||b.initialDisplayFx===false){this.display(b.display,b.initialDisplayFx);}if(b.fixedHeight!==false){b.resetHeight=false;
}this.addEvent("complete",this.internalChain.callChain.bind(this.internalChain));},addSection:function(g,d){g=document.id(g);d=document.id(d);this.togglers.include(g);
this.elements.include(d);var f=this.togglers,c=this.options,h=f.contains(g),a=f.indexOf(g),b=this.display.pass(a,this);g.store("accordion:display",b).addEvent(c.trigger,b);
if(c.height){d.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"});}if(c.width){d.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"});
}d.fullOpacity=1;if(c.fixedWidth){d.fullWidth=c.fixedWidth;}if(c.fixedHeight){d.fullHeight=c.fixedHeight;}d.setStyle("overflow","hidden");if(!h){for(var e in this.effects){d.setStyle(e,0);
}}return this;},removeSection:function(f,b){var e=this.togglers,a=e.indexOf(f),c=this.elements[a];var d=function(){e.erase(f);this.elements.erase(c);this.detach(f);
}.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(b,c){if(!this.check(b,c)){return this;}var h={},g=this.elements,a=this.options,f=this.effects;
if(c==null){c=true;}if(typeOf(b)=="element"){b=g.indexOf(b);}if(b==this.previous&&!a.alwaysHide){return this;}if(a.resetHeight){var e=g[this.previous];
if(e&&!this.selfHidden){for(var d in f){e.setStyle(d,e[f[d]]);}}}if((this.timer&&a.link=="chain")||(b===this.previous&&!a.alwaysHide)){return this;}this.previous=b;
this.selfHidden=false;g.each(function(l,k){h[k]={};var j;if(k!=b){j=true;}else{if(a.alwaysHide&&((l.offsetHeight>0&&a.height)||l.offsetWidth>0&&a.width)){j=true;
this.selfHidden=true;}}this.fireEvent(j?"background":"active",[this.togglers[k],l]);for(var m in f){h[k][m]=j?0:l[f[m]];}if(!c&&!j&&a.resetHeight){h[k].height="auto";
}},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(a.resetHeight&&!this.selfHidden){var i=g[b];if(i){i.setStyle("height","auto");
}}}.bind(this));return c?this.start(h):this.set(h);}});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);}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left");
if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true})));
}});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"});
this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(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],b[1]);},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b);
});},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f};
for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0));
},toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false));
},toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll();
var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y));
},toElementEdge: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;},toElementCenter: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;}});Fx.Scroll.implement({scrollToCenter:function(){return this.toElementCenter.apply(this,arguments);},scrollIntoView:function(){return this.toElementEdge.apply(this,arguments);
}});function a(b){return(/^(?:body|html)$/i).test(b.tagName);}}).call(this);Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",wrapper:false,hideOverflow:true,resetHeight:false},initialize:function(b,a){b=this.element=this.subject=document.id(b);
this.parent(a);a=this.options;var d=b.retrieve("wrapper"),c=b.getStyles("margin","position","overflow");if(a.hideOverflow){c=Object.append(c,{overflow:"hidden"});
}if(a.wrapper){d=document.id(a.wrapper).setStyles(c);}if(!d){d=new Element("div",{styles:c}).wraps(b);}b.store("wrapper",d).setStyle("margin",0);if(b.getStyle("overflow")=="visible"){b.setStyle("overflow","hidden");
}this.now=[];this.open=true;this.wrapper=d;this.addEvent("complete",function(){this.open=(d["offset"+this.layout.capitalize()]!=0);if(this.open&&a.resetHeight){d.setStyle("height","");
}},true);},vertical:function(){this.margin="margin-top";this.layout="height";this.offset=this.element.offsetHeight;},horizontal:function(){this.margin="margin-left";
this.layout="width";this.offset=this.element.offsetWidth;},set:function(a){this.element.setStyle(this.margin,a[0]);this.wrapper.setStyle(this.layout,a[1]);
return this;},compute:function(c,b,a){return[0,1].map(function(d){return Fx.compute(c[d],b[d],a);});},start:function(b,e){if(!this.check(b,e)){return this;
}this[e||this.options.mode]();var d=this.element.getStyle(this.margin).toInt(),c=this.wrapper.getStyle(this.layout).toInt(),a=[[d,c],[0,this.offset]],g=[[d,c],[-this.offset,0]],f;
switch(b){case"in":f=a;break;case"out":f=g;break;case"toggle":f=(c==0)?a:g;}return this.parent(f[0],f[1]);},slideIn:function(a){return this.start("in",a);
},slideOut:function(a){return this.start("out",a);},hide:function(a){this[a||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(a){this[a||this.options.mode]();
this.open=true;return this.set([0,this.offset]);},toggle:function(a){return this.start("toggle",a);}});Element.Properties.slide={set:function(a){this.get("slide").cancel().setOptions(a);
return this;},get:function(){var a=this.retrieve("slide");if(!a){a=new Fx.Slide(this,{link:"cancel"});this.store("slide",a);}return a;}};Element.implement({slide:function(d,e){d=d||"toggle";
var b=this.get("slide"),a;switch(d){case"hide":b.hide(e);break;case"show":b.show(e);break;case"toggle":var c=this.retrieve("slide:flag",b.open);b[c?"slideOut":"slideIn"](e);
this.store("slide:flag",!c);a=true;break;default:b.start(d,e);}if(!a){this.eliminate("slide:flag");}return this;}});var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,options:{axes:["x","y"]},initialize:function(c,d){d=d||document;
this.doc=d.getDocument();this.parent(this.doc,c);var e=d.getWindow(),a=e.location.href.match(/^[^#]*/)[0]+"#",b=$$(this.options.links||this.doc.links);
b.each(function(g){if(g.href.indexOf(a)!=0){return;}var f=g.href.substr(a.length);if(f){this.useLink(g,f);}},this);this.addEvent("complete",function(){e.location.hash=this.anchor;
this.element.scrollTo(this.to[0],this.to[1]);},true);},useLink:function(b,a){b.addEvent("click",function(d){var c=document.id(a)||this.doc.getElement("a[name="+a+"]");
if(!c){return;}d.preventDefault();this.toElement(c,this.options.axes).chain(function(){this.fireEvent("scrolledTo",[b,c]);}.bind(this));this.anchor=a;}.bind(this));
return this;}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:"vertical"},initialize:function(b,a){this.parent(b,a);this.elements.each(function(c){if(c.getStyle("position")=="static"){c.setStyle("position","relative");
}});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(b,a){return a;});},sort:function(){if(!this.check(arguments)){return this;
}var e=Array.flatten(arguments);var i=0,a=0,c={},h={},d=this.options.mode=="vertical";var f=this.elements.map(function(m,k){var l=m.getComputedSize({styles:["border","padding","margin"]});
var n;if(d){n={top:i,margin:l["margin-top"],height:l.totalHeight};i+=n.height-l["margin-top"];}else{n={left:a,margin:l["margin-left"],width:l.totalWidth};
a+=n.width;}var j=d?"top":"left";h[k]={};var o=m.getStyle(j).toInt();h[k][j]=o||0;return n;},this);this.set(h);e=e.map(function(j){return j.toInt();});
if(e.length!=this.elements.length){this.currentOrder.each(function(j){if(!e.contains(j)){e.push(j);}});if(e.length>this.elements.length){e.splice(this.elements.length-1,e.length-this.elements.length);
}}var b=0;i=a=0;e.each(function(k){var j={};if(d){j.top=i-f[k].top-b;i+=f[k].height;}else{j.left=a-f[k].left;a+=f[k].width;}b=b+f[k].margin;c[k]=j;},this);
var g={};Array.clone(e).sort().each(function(j){g[j]=c[j];});this.start(g);this.currentOrder=e;return this;},rearrangeDOM:function(a){a=a||this.currentOrder;
var b=this.elements[0].getParent();var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0}));
},this);this.elements.setStyle("opacity",1);this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a;
});},getCurrentOrder:function(){return this.currentOrder;},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());
},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b);
},this));},swap:function(c,b){if(typeOf(c)=="element"){c=this.elements.indexOf(c);}if(typeOf(b)=="element"){b=this.elements.indexOf(b);}var a=Array.clone(this.currentOrder);
a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c;return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null;
}});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false);
Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)};
this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
return this;},start:function(a){var k=this.options;if(a.rightClick){return;}if(k.preventDefault){a.preventDefault();}if(k.stopPropagation){a.stopPropagation();
}this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=k.limit;this.limit={x:[],y:[]};var j=this.element.getStyles("left","right","top","bottom");
this._invert={x:k.modifiers.x=="left"&&j.left=="auto"&&!isNaN(j.right.toInt())&&(k.modifiers.x="right"),y:k.modifiers.y=="top"&&j.top=="auto"&&!isNaN(j.bottom.toInt())&&(k.modifiers.y="bottom")};
var e,g;for(e in k.modifiers){if(!k.modifiers[e]){continue;}var b=this.element.getStyle(k.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());
}b=g[k.modifiers[e]];}if(k.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[k.modifiers[e]];}if(k.invert){this.value.now[e]*=-1;
}if(this._invert[e]){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e];if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;
}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}var h={mousemove:this.bound.check,mouseup:this.bound.cancel};
h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault();}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));
if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);
}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault();}this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;
}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1;}if(this._invert[c]){this.value.now[c]*=-1;}if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];
}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]<this.limit[c][0])){this.value.now[c]=this.limit[c][0];}}}if(a.grid[c]){this.value.now[c]-=((this.value.now[c]-(this.limit[c][0]||0))%a.grid[c]);
}if(a.style){this.element.setStyle(a.modifiers[c],this.value.now[c]+a.unit);}else{this.element[a.modifiers[c]]=this.value.now[c];}}this.fireEvent("drag",[this.element,b]);
},cancel:function(a){this.document.removeEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});if(a){this.document.removeEvent(this.selection,this.bound.eventStop);
this.fireEvent("cancel",this.element);}},stop:function(b){var a={mousemove:this.bound.drag,mouseup:this.bound.stop};a[this.selection]=this.bound.eventStop;
this.document.removeEvents(a);if(b){this.fireEvent("complete",[this.element,b]);}}});Element.implement({makeResizable:function(a){var b=new Drag(this,Object.merge({modifiers:{x:"width",y:"height"}},a));
this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(b,a){this.parent(b,a);
b=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&typeOf(this.container)!="element"){this.container=document.id(this.container.getDocument().body);
}if(this.options.style){if(this.options.modifiers.x=="left"&&this.options.modifiers.y=="top"){var e,c=b.getOffsetParent();var d=b.getStyles("left","top");
if(c&&(d.left=="auto"||d.top=="auto")){b.setPosition(b.getPosition(c));}}if(b.getStyle("position")=="static"){b.setStyle("position","absolute");}}this.addEvent("start",this.checkDroppables,true);
this.overed=null;},start:function(a){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(b){return b.getCoordinates();
});}this.parent(a);},calculateLimit:function(){var j=this.element,e=this.container,d=document.id(j.getOffsetParent())||document.body,h=e.getCoordinates(d),c={},b={},k={},g={},m={};
["top","right","bottom","left"].each(function(q){c[q]=j.getStyle("margin-"+q).toInt();b[q]=j.getStyle("border-"+q).toInt();k[q]=e.getStyle("margin-"+q).toInt();
g[q]=e.getStyle("border-"+q).toInt();m[q]=d.getStyle("padding-"+q).toInt();},this);var f=j.offsetWidth+c.left+c.right,p=j.offsetHeight+c.top+c.bottom,i=0,l=0,o=h.right-g.right-f,a=h.bottom-g.bottom-p;
if(this.options.includeMargins){i+=c.left;l+=c.top;}else{o+=c.right;a+=c.bottom;}if(j.getStyle("position")=="relative"){var n=j.getCoordinates(d);n.left-=j.getStyle("left").toInt();
n.top-=j.getStyle("top").toInt();i-=n.left;l-=n.top;if(e.getStyle("position")!="relative"){i+=g.left;l+=g.top;}o+=c.left-n.left;a+=c.top-n.top;if(e!=d){i+=k.left+m.left;
l+=((Browser.ie6||Browser.ie7)?0:k.top)+m.top;}}else{i-=c.left;l-=c.top;if(e!=d){i+=h.left+g.left;l+=h.top+g.top;}}return{x:[i,o],y:[l,a]};},getDroppableCoordinates:function(c){var b=c.getCoordinates();
if(c.getStyle("position")=="fixed"){var a=window.getScroll();b.left+=a.x;b.right+=a.x;b.top+=a.y;b.bottom+=a.y;}return b;},checkDroppables:function(){var a=this.droppables.filter(function(d,c){d=this.positions?this.positions[c]:this.getDroppableCoordinates(d);
var b=this.mouse.now;return(b.x>d.left&&b.x<d.right&&b.y<d.bottom&&b.y>d.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);
}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();
}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);
this.store("dragger",b);return b;}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){this.setKnobPosition(a);
},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e);e=this.options;this.element=document.id(f);
a=this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var b={},d={x:false,y:false},g;switch(e.mode){case"vertical":this.axis="y";
this.property="top";this.offset="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";this.offset="offsetWidth";}this.setSliderDimensions();
this.setRange(e.range);if(a.getStyle("position")=="static"){a.setStyle("position","relative");}a.setStyle(this.property,-e.offset);d[this.axis]=this.property;
b[this.axis]=[-e.offset,this.full-e.offset];var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;
}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};
if(e.snap){this.setSnap(c);}this.drag=new Drag(a,c);this.attach();if(e.initialStep!=null){this.set(e.initialStep);}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);
if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement);}this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement).element.removeEvent("mousewheel",this.scrolledElement);
this.drag.detach();return this;},autosize:function(){this.setSliderDimensions().setKnobPosition(this.toPosition(this.step));this.drag.options.limit[this.axis]=[-this.options.offset,this.full-this.options.offset];
if(this.options.snap){this.setSnap();}return this;},setSnap:function(a){if(!a){a=this.drag.options;}a.grid=Math.ceil(this.stepWidth);a.limit[this.axis][1]=this.full;
return this;},setKnobPosition:function(a){if(this.options.snap){a=this.toPosition(this.step);}this.knob.setStyle(this.property,a);return this;},setSliderDimensions:function(){this.full=this.element.measure(function(){this.half=this.knob[this.offset]/2;
return this.element[this.offset]-this.knob[this.offset]+(this.options.offset*2);}.bind(this));return this;},set:function(a){if(!((this.range>0)^(a<this.min))){a=this.min;
}if(!((this.range>0)^(a>this.max))){a=this.max;}this.step=Math.round(a);return this.checkStep().fireEvent("tick",this.toPosition(this.step)).end();},setRange:function(a,b){this.min=Array.pick([a[0],0]);
this.max=Array.pick([a[1],this.options.steps]);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;
this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(a){this.set(Array.pick([b,this.step]).floor(this.min).max(this.max));}return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return;
}var b=this.range<0?-1:1,a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset);
this.step=Math.round(this.min+b*this.toStep(a));this.checkStep().fireEvent("tick",a).end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0);
this.set(this.step+(b?-1:1)*this.stepSize);a.stop();},draggedKnob:function(){var b=this.range<0?-1:1,a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset);
this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){var a=this.step;if(this.previousChange!=a){this.previousChange=a;
this.fireEvent("change",a);}return this;},end:function(){var a=this.step;if(this.previousEnd!==a){this.previousEnd=a;this.fireEvent("complete",a+"");}return this;
},toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset;
}});var Sortables=new Class({Implements:[Events,Options],options:{opacity:1,clone:false,revert:false,handle:false,dragOptions:{},snap:4,constrain:false,preventDefault:false},initialize:function(a,b){this.setOptions(b);
this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,Object.merge({duration:250,link:"cancel"},this.options.revert));
}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a);
var b=a.retrieve("sortables:start",function(c){this.start.call(this,c,a);}.bind(this));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b);
},this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.include(a);this.addItems(a.getChildren());},this);return this;
},removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b);
return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a;
},this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if(typeOf(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list);
}var c=a.clone(true).setStyles({margin:0,position:"absolute",visibility:"hidden",width:a.getStyle("width")}).addEvent("mousedown",function(d){a.fireEvent("mousedown",d);
});if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,e){d.set("name","clone_"+e);if(d.get("checked")){a.getElements("input[type=radio]")[e].set("checked",true);
}});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));},getDroppables:function(){var a=this.list.getChildren().erase(this.clone).erase(this.element);
if(!this.options.constrain){a.append(this.lists).erase(this.list);}return a;},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b;
this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]);
},start:function(b,a){if(!this.idle||b.rightClick||["button","input","a"].contains(b.target.get("tag"))){return;}this.idle=false;this.element=a;this.opacity=a.get("opacity");
this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,Object.merge({preventDefault:this.options.preventDefault,snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables()},this.options.dragOptions)).addEvents({onSnap:function(){b.stop();
this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.end.bind(this),onComplete:this.end.bind(this)});
this.clone.inject(this.element,"before");this.drag.start(b);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var b=this.element.getStyles("width","height"),d=this.clone,c=d.computePosition(this.element.getPosition(this.clone.getOffsetParent()));
var a=function(){this.removeEvent("cancel",a);d.destroy();};this.effect.element=d;this.effect.start({top:c.top,left:c.left,width:b.width,height:b.height,opacity:0.25}).addEvent("cancel",a).chain(a);
}else{this.clone.destroy();}this.reset();},reset:function(){this.idle=true;this.fireEvent("complete",this.element);},serialize:function(){var c=Array.link(arguments,{modifier:Type.isFunction,index:function(d){return d!=null;
}});var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(e){return e.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0;
}return(a||a===0)&&a>=0&&a<this.lists.length?b[a]:b;}});Request.JSONP=new Class({Implements:[Chain,Events,Options],options:{onRequest:function(a){if(this.options.log&&window.console&&console.log){console.log("JSONP retrieving script with url:"+a);
}},onError:function(a){if(this.options.log&&window.console&&console.warn){console.warn("JSONP "+a+" will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs");
}},url:"",callbackKey:"callback",injectScript:document.head,data:"",link:"ignore",timeout:0,log:false},initialize:function(a){this.setOptions(a);},send:function(c){if(!Request.prototype.check.call(this,c)){return this;
}this.running=true;var d=typeOf(c);if(d=="string"||d=="element"){c={data:c};}c=Object.merge(this.options,c||{});var e=c.data;switch(typeOf(e)){case"element":e=document.id(e).toQueryString();
break;case"object":case"hash":e=Object.toQueryString(e);}var b=this.index=Request.JSONP.counter++;var f=c.url+(c.url.test("\\?")?"&":"?")+(c.callbackKey)+"=Request.JSONP.request_map.request_"+b+(e?"&"+e:"");
if(f.length>2083){this.fireEvent("error",f);}Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,b);}.bind(this);var a=this.getScript(f).inject(c.injectScript);
this.fireEvent("request",[f,a]);if(c.timeout){this.timeout.delay(c.timeout,this);}return this;},getScript:function(a){if(!this.script){this.script=new Element("script[type=text/javascript]",{async:true,src:a});
}return this.script;},success:function(b,a){if(!this.running){return false;}this.clear().fireEvent("complete",b).fireEvent("success",b).callChain();},cancel:function(){if(this.running){this.clear().fireEvent("cancel");
}return this;},isRunning:function(){return !!this.running;},clear:function(){this.running=false;if(this.script){this.script.destroy();this.script=null;
}return this;},timeout:function(){if(this.running){this.running=false;this.fireEvent("timeout",[this.script.get("src"),this.script]).fireEvent("failure").cancel();
}return this;}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:["attach","request","complete","cancel","success","failure","exception"],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(a){var b;
if(a){b=a.requests;delete a.requests;}this.setOptions(a);this.requests={};this.queue=[];this.reqBinders={};if(b){this.addRequests(b);}},addRequest:function(a,b){this.requests[a]=b;
this.attach(a,b);return this;},addRequests:function(a){Object.each(a,function(c,b){this.addRequest(b,c);},this);return this;},getName:function(a){return Object.keyOf(this.requests,a);
},attach:function(a,b){if(b._groupSend){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){if(!this.reqBinders[a]){this.reqBinders[a]={};
}this.reqBinders[a][c]=function(){this["on"+c.capitalize()].apply(this,[a,b].append(arguments));}.bind(this);b.addEvent(c,this.reqBinders[a][c]);},this);
b._groupSend=b.send;b.send=function(c){this.send(a,c);return b;}.bind(this);return this;},removeRequest:function(b){var a=typeOf(b)=="object"?this.getName(b):b;
if(!a&&typeOf(a)!="string"){return this;}b=this.requests[a];if(!b){return this;}["request","complete","cancel","success","failure","exception"].each(function(c){b.removeEvent(c,this.reqBinders[a][c]);
},this);b.send=b._groupSend;delete b._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(a){return a.running;});
},isRunning:function(){return !!(Object.keys(this.getRunning()).length);},send:function(b,a){var c=function(){this.requests[b]._groupSend(a);this.queue.erase(c);
}.bind(this);c.name=b;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure)){this.queue.push(c);}else{c();
}return this;},hasNext:function(a){return(!a)?!!this.queue.length:!!this.queue.filter(function(b){return b.name==a;}).length;},resume:function(){this.error=false;
(this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(a){if(!this.queue.length){return this;
}if(!a){this.queue[0]();}else{var b;this.queue.each(function(c){if(!b&&c.name==a){b=true;c();}});}return this;},runAll:function(){this.queue.each(function(a){a();
});return this;},clear:function(a){if(!a){this.queue.empty();}else{this.queue=this.queue.map(function(b){if(b.name!=a){return b;}else{return false;}}).filter(function(b){return b;
});}return this;},cancel:function(a){this.requests[a].cancel();return this;},onRequest:function(){this.fireEvent("request",arguments);},onComplete:function(){this.fireEvent("complete",arguments);
if(!this.queue.length){this.fireEvent("end");}},onCancel:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("cancel",arguments);
},onSuccess:function(){if(this.options.autoAdvance&&!this.error){this.runNext();}this.fireEvent("success",arguments);},onFailure:function(){this.error=true;
if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("failure",arguments);},onException:function(){this.error=true;
if(!this.options.stopOnFailure&&this.options.autoAdvance){this.runNext();}this.fireEvent("exception",arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b});
}};this.lastDelay=this.options.initialDelay;this.timer=a.delay(this.lastDelay,this);this.completeCheck=function(c){clearTimeout(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);
this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent("complete",this.completeCheck);
}});var Asset={javascript:function(f,c){if(!c){c={};}var a=new Element("script",{src:f,type:"text/javascript"}),g=c.document||document,b=0,d=c.onload||c.onLoad;
var e=d?function(){if(++b==1){d.call(this);}}:function(){};delete c.onload;delete c.onLoad;delete c.document;return a.addEvents({load:e,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){e.call(this);
}}}).set(c).inject(g.head);},css:function(d,a){if(!a){a={};}var b=new Element("link",{rel:"stylesheet",media:"screen",type:"text/css",href:d});var c=a.onload||a.onLoad,e=a.document||document;
delete a.onload;delete a.onLoad;delete a.document;if(c){b.addEvent("load",c);}return b.set(a).inject(e.head);},image:function(c,b){if(!b){b={};}var d=new Image(),a=document.id(d)||new Element("img");
["load","abort","error"].each(function(e){var g="on"+e,f="on"+e.capitalize(),h=b[g]||b[f]||function(){};delete b[f];delete b[g];d[g]=function(){if(!d){return;
}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;h.delay(1,a,a);a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);
}return a.set(b);},images:function(c,b){c=Array.from(c);var d=function(){},a=0;b=Object.merge({onComplete:d,onProgress:d,onError:d,properties:{}},b);return new Elements(c.map(function(f,e){return Asset.image(f,Object.append(b.properties,{onload:function(){a++;
b.onProgress.call(this,a,e,f);if(a==c.length){b.onComplete();}},onerror:function(){a++;b.onError.call(this,a,e,f);if(a==c.length){b.onComplete();}}}));
}));}};(function(){var a=this.Color=new Type("Color",function(c,d){if(arguments.length>=3){d="rgb";c=Array.slice(arguments,0,3);}else{if(typeof c=="string"){if(c.match(/rgb/)){c=c.rgbToHex().hexToRgb(true);
}else{if(c.match(/hsb/)){c=c.hsbToRgb();}else{c=c.hexToRgb(true);}}}}d=d||"rgb";switch(d){case"hsb":var b=c;c=c.hsbToRgb();c.hsb=b;break;case"hex":c=c.hexToRgb(true);
break;}c.rgb=c.slice(0,3);c.hsb=c.hsb||c.rgbToHsb();c.hex=c.rgbToHex();return Object.append(c,this);});a.implement({mix:function(){var b=Array.slice(arguments);
var d=(typeOf(b.getLast())=="number")?b.pop():50;var c=this.slice();b.each(function(e){e=new a(e);for(var f=0;f<3;f++){c[f]=Math.round((c[f]/100*(100-d))+(e[f]/100*d));
}});return new a(c,"rgb");},invert:function(){return new a(this.map(function(b){return 255-b;}));},setHue:function(b){return new a([b,this.hsb[1],this.hsb[2]],"hsb");
},setSaturation:function(b){return new a([this.hsb[0],b,this.hsb[2]],"hsb");},setBrightness:function(b){return new a([this.hsb[0],this.hsb[1],b],"hsb");
}});this.$RGB=function(e,d,c){return new a([e,d,c],"rgb");};this.$HSB=function(e,d,c){return new a([e,d,c],"hsb");};this.$HEX=function(b){return new a(b,"hex");
};Array.implement({rgbToHsb:function(){var c=this[0],d=this[1],k=this[2],h=0;var j=Math.max(c,d,k),f=Math.min(c,d,k);var l=j-f;var i=j/255,g=(j!=0)?l/j:0;
if(g!=0){var e=(j-c)/l;var b=(j-d)/l;var m=(j-k)/l;if(c==j){h=m-b;}else{if(d==j){h=2+e-m;}else{h=4+b-e;}}h/=6;if(h<0){h++;}}return[Math.round(h*360),Math.round(g*100),Math.round(i*100)];
},hsbToRgb:function(){var d=Math.round(this[2]/100*255);if(this[1]==0){return[d,d,d];}else{var b=this[0]%360;var g=b%60;var h=Math.round((this[2]*(100-this[1]))/10000*255);
var e=Math.round((this[2]*(6000-this[1]*g))/600000*255);var c=Math.round((this[2]*(6000-this[1]*(60-g)))/600000*255);switch(Math.floor(b/60)){case 0:return[d,c,h];
case 1:return[e,d,h];case 2:return[h,d,c];case 3:return[h,e,d];case 4:return[c,h,d];case 5:return[d,h,e];}}return false;}});String.implement({rgbToHsb:function(){var b=this.match(/\d{1,3}/g);
return(b)?b.rgbToHsb():null;},hsbToRgb:function(){var b=this.match(/\d{1,3}/g);return(b)?b.hsbToRgb():null;}});}).call(this);(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);
this.events={};this.checker={};},addEvent:function(b,a){this.checker[b]=this.checker[b]||{};this.events[b]=this.events[b]||[];if(this.events[b].contains(a)){return false;
}else{this.events[b].push(a);}this.instances.each(function(c,d){c.addEvent(b,this.check.pass([b,c,d],this));},this);return this;},check:function(c,a,b){this.checker[c][b]=true;
var d=this.instances.every(function(f,e){return this.checker[c][e]||false;},this);if(!d){return;}this.checker[c]={};this.events[c].each(function(e){e.call(this,this.instances,a);
},this);}});}).call(this);Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(b,a){this.parent(b,a);this.load();},save:function(){var a=JSON.encode(this.hash);
if(!a||a.length>4096){return false;}if(a=="{}"){this.dispose();}else{this.write(a);}return true;},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));
return this;}});Hash.each(Hash.prototype,function(b,a){if(typeof b=="function"){Hash.Cookie.implement(a,function(){var c=b.apply(this.hash,arguments);if(this.options.autoSave){this.save();
}return c;});}});var HtmlTable=new Class({Implements:[Options,Events,Class.Occlude],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[],headers:[],footers:[]},property:"HtmlTable",initialize:function(){var a=Array.link(arguments,{options:Type.isObject,table:Type.isElement,id:Type.isString});
this.setOptions(a.options);if(!a.table&&a.id){a.table=document.id(a.id);}this.element=a.table||new Element("table",this.options.properties);if(this.occlude()){return this.occluded;
}this.build();},build:function(){this.element.store("HtmlTable",this);this.body=document.id(this.element.tBodies[0])||new Element("tbody").inject(this.element);
$$(this.body.rows);if(this.options.headers.length){this.setHeaders(this.options.headers);}else{this.thead=document.id(this.element.tHead);}if(this.thead){this.head=this.getHead();
}if(this.options.footers.length){this.setFooters(this.options.footers);}this.tfoot=document.id(this.element.tFoot);if(this.tfoot){this.foot=document.id(this.tfoot.rows[0]);
}this.options.rows.each(function(a){this.push(a);},this);},toElement:function(){return this.element;},empty:function(){this.body.empty();return this;},set:function(e,a){var d=(e=="headers")?"tHead":"tFoot",b=d.toLowerCase();
this[b]=(document.id(this.element[d])||new Element(b).inject(this.element,"top")).empty();var c=this.push(a,{},this[b],e=="headers"?"th":"td");if(e=="headers"){this.head=this.getHead();
}else{this.foot=this.getHead();}return c;},getHead:function(){var a=this.thead.rows;return a.length>1?$$(a):a.length?document.id(a[0]):false;},setHeaders:function(a){this.set("headers",a);
return this;},setFooters:function(a){this.set("footers",a);return this;},push:function(f,c,e,a,b){if(typeOf(f)=="element"&&f.get("tag")=="tr"){f.inject(e||this.body,b);
return{tr:f,tds:f.getChildren("td")};}var d=f.map(function(i){var j=new Element(a||"td",i?i.properties:{}),h=(i?i.content:"")||i,g=typeOf(h);if(["element","array","collection","elements"].contains(g)){j.adopt(h);
}else{j.set("html",h);}return j;});return{tr:new Element("tr",c).inject(e||this.body,b).adopt(d),tds:d};}});["adopt","inject","wraps","grab","replaces","dispose"].each(function(a){HtmlTable.implement(a,function(){this.element[a].apply(this.element,arguments);
return this;});});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:"table-tr-odd",zebra:true},initialize:function(){this.previous.apply(this,arguments);
if(this.occluded){return this.occluded;}if(this.options.zebra){this.updateZebras();}},updateZebras:function(){Array.each(this.body.rows,this.zebra,this);
},setRowStyle:function(b,a){if(this.previous){this.previous(b,a);}this.zebra(b,a);},zebra:function(b,a){return b[((a%2)?"remove":"add")+"Class"](this.options.classZebra);
},push:function(){var a=this.previous.apply(this,arguments);if(this.options.zebra){this.updateZebras();}return a;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:"string",classSortable:"table-sortable",classHeadSort:"table-th-sort",classHeadSortRev:"table-th-sort-rev",classNoSort:"table-th-nosort",classGroupHead:"table-tr-group-head",classGroup:"table-tr-group",classCellSort:"table-td-sort",classSortSpan:"table-th-sort-span",sortable:false,thSelector:"th"},initialize:function(){this.previous.apply(this,arguments);
if(this.occluded){return this.occluded;}this.sorted={index:null,dir:1};this.bound={headClick:this.headClick.bind(this)};this.sortSpans=new Elements();if(this.options.sortable){this.enableSort();
if(this.options.sortIndex!=null){this.sort(this.options.sortIndex,this.options.sortReverse);}}},attachSorts:function(a){this.detachSorts();if(a!==false){this.element.addEvent("click:relay("+this.options.thSelector+")",this.bound.headClick);
}},detachSorts:function(){this.element.removeEvents("click:relay("+this.options.thSelector+")");},setHeaders:function(){this.previous.apply(this,arguments);
if(this.sortEnabled){this.setParsers();}},setParsers:function(){this.parsers=this.detectParsers();},detectParsers:function(){return this.head&&this.head.getElements(this.options.thSelector).flatten().map(this.detectParser,this);
},detectParser:function(a,b){if(a.hasClass(this.options.classNoSort)||a.retrieve("htmltable-parser")){return a.retrieve("htmltable-parser");}var c=new Element("div");
c.adopt(a.childNodes).inject(a);var f=new Element("span",{html:"&#160;","class":this.options.classSortSpan}).inject(c,"top");this.sortSpans.push(f);var g=this.options.parsers[b],e=this.body.rows,d;
switch(typeOf(g)){case"function":g={convert:g};d=true;break;case"string":g=g;d=true;break;}if(!d){HtmlTable.ParserPriority.some(function(k){var o=HtmlTable.Parsers[k],m=o.match;
if(!m){return false;}for(var n=0,l=e.length;n<l;n++){var h=document.id(e[n].cells[b]),p=h?h.get("html").clean():"";if(p&&m.test(p)){g=o;return true;}}});
}if(!g){g=this.options.defaultParser;}a.store("htmltable-parser",g);return g;},headClick:function(b,a){if(!this.head||a.hasClass(this.options.classNoSort)){return;
}return this.sort(Array.indexOf(this.head.getElements(this.options.thSelector).flatten(),a)%this.body.rows[0].cells.length);},setSortedState:function(b,a){if(a!=null){this.sorted.reverse=a;
}else{if(this.sorted.index==b){this.sorted.reverse=!this.sorted.reverse;}else{this.sorted.reverse=this.sorted.index==null;}}if(b!=null){this.sorted.index=b;
}},setHeadSort:function(a){var b=$$(!this.head.length?this.head.cells[this.sorted.index]:this.head.map(function(c){return c.getElements(this.options.thSelector)[this.sorted.index];
},this).clean());if(!b.length){return;}if(a){b.addClass(this.options.classHeadSort);if(this.sorted.reverse){b.addClass(this.options.classHeadSortRev);}else{b.removeClass(this.options.classHeadSortRev);
}}else{b.removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev);}},setRowSort:function(b,a){var e=b.length,d=this.body,g,f;
while(e){var h=b[--e],c=h.position,i=d.rows[c];if(i.disabled){continue;}if(!a){g=this.setGroupSort(g,i,h);this.setRowStyle(i,e);}d.appendChild(i);for(f=0;
f<e;f++){if(b[f].position>c){b[f].position--;}}}},setRowStyle:function(b,a){this.previous(b,a);b.cells[this.sorted.index].addClass(this.options.classCellSort);
},setGroupSort:function(b,c,a){if(b==a.value){c.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);}else{c.removeClass(this.options.classGroup).addClass(this.options.classGroupHead);
}return a.value;},getParser:function(){var a=this.parsers[this.sorted.index];return typeOf(a)=="string"?HtmlTable.Parsers[a]:a;},sort:function(c,b,e){if(!this.head){return;
}if(!e){this.clearSort();this.setSortedState(c,b);this.setHeadSort(true);}var f=this.getParser();if(!f){return;}var a;if(!Browser.ie){a=this.body.getParent();
this.body.dispose();}var d=this.parseData(f).sort(function(h,g){if(h.value===g.value){return 0;}return h.value>g.value?1:-1;});if(this.sorted.reverse==(f==HtmlTable.Parsers["input-checked"])){d.reverse(true);
}this.setRowSort(d,e);if(a){a.grab(this.body);}return this.fireEvent("sort",[this.body,this.sorted.index]);},parseData:function(a){return Array.map(this.body.rows,function(d,b){var c=a.convert.call(document.id(d.cells[this.sorted.index]));
return{position:b,value:c};},this);},clearSort:function(){this.setHeadSort(false);this.body.getElements("td").removeClass(this.options.classCellSort);},reSort:function(){if(this.sortEnabled){this.sort.call(this,this.sorted.index,this.sorted.reverse);
}return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.setParsers();this.sortEnabled=true;return this;
},disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(a){a.destroy();});this.sortSpans.empty();
this.sortEnabled=false;return this;}});HtmlTable.ParserPriority=["date","input-checked","input-value","float","number"];HtmlTable.Parsers={date:{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var a=Date.parse(this.get("text").stripTags());
return(typeOf(a)=="date")?a.format("db"):"";},type:"date"},"input-checked":{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement("input").checked;
}},"input-value":{match:/<input/,convert:function(){return this.getElement("input").value;}},number:{match:/^\d+[^\d.,]*$/,convert:function(){return this.get("text").stripTags().toInt();
},number:true},numberLax:{match:/^[^\d]+\d+$/,convert:function(){return this.get("text").replace(/[^-?^0-9]/,"").stripTags().toInt();},number:true},"float":{match:/^[\d]+\.[\d]+/,convert:function(){return this.get("text").replace(/[^-?^\d.]/,"").stripTags().toFloat();
},number:true},floatLax:{match:/^[^\d]+[\d]+\.[\d]+$/,convert:function(){return this.get("text").replace(/[^-?^\d.]/,"").stripTags();},number:true},string:{match:null,convert:function(){return this.get("text").stripTags().toLowerCase();
}},title:{match:null,convert:function(){return this.title;}}};HtmlTable.Parsers=new Hash(HtmlTable.Parsers);HtmlTable.defineParsers=function(a){HtmlTable.Parsers=Object.append(HtmlTable.Parsers,a);
for(var b in a){HtmlTable.ParserPriority.unshift(b);}};(function(){var a=this.Keyboard=new Class({Extends:Events,Implements:[Options],options:{defaultEventType:"keydown",active:false,manager:null,events:{},nonParsedEvents:["activate","deactivate","onactivate","ondeactivate","changed","onchanged"]},initialize:function(f){if(f&&f.manager){this._manager=f.manager;
delete f.manager;}this.setOptions(f);this._setup();},addEvent:function(h,g,f){return this.parent(a.parse(h,this.options.defaultEventType,this.options.nonParsedEvents),g,f);
},removeEvent:function(g,f){return this.parent(a.parse(g,this.options.defaultEventType,this.options.nonParsedEvents),f);},toggleActive:function(){return this[this.isActive()?"deactivate":"activate"]();
},activate:function(f){if(f){if(f.isActive()){return this;}if(this._activeKB&&f!=this._activeKB){this.previous=this._activeKB;this.previous.fireEvent("deactivate");
}this._activeKB=f.fireEvent("activate");a.manager.fireEvent("changed");}else{if(this._manager){this._manager.activate(this);}}return this;},isActive:function(){return this._manager?(this._manager._activeKB==this):(a.manager==this);
},deactivate:function(f){if(f){if(f===this._activeKB){this._activeKB=null;f.fireEvent("deactivate");a.manager.fireEvent("changed");}}else{if(this._manager){this._manager.deactivate(this);
}}return this;},relinquish:function(){if(this.isActive()&&this._manager&&this._manager.previous){this._manager.activate(this._manager.previous);}else{this.deactivate();
}return this;},manage:function(f){if(f._manager){f._manager.drop(f);}this._instances.push(f);f._manager=this;if(!this._activeKB){this.activate(f);}return this;
},drop:function(f){f.relinquish();this._instances.erase(f);if(this._activeKB==f){if(this.previous&&this._instances.contains(this.previous)){this.activate(this.previous);
}else{this._activeKB=this._instances[0];}}return this;},trace:function(){a.trace(this);},each:function(f){a.each(this,f);},_instances:[],_disable:function(f){if(this._activeKB==f){this._activeKB=null;
}},_setup:function(){this.addEvents(this.options.events);if(a.manager&&!this._manager){a.manager.manage(this);}if(this.options.active){this.activate();
}else{this.relinquish();}},_handle:function(h,g){if(h.preventKeyboardPropagation){return;}var f=!!this._manager;if(f&&this._activeKB){this._activeKB._handle(h,g);
if(h.preventKeyboardPropagation){return;}}this.fireEvent(g,h);if(!f&&this._activeKB){this._activeKB._handle(h,g);}}});var b={};var c=["shift","control","alt","meta"];
var e=/^(?:shift|control|ctrl|alt|meta)$/;a.parse=function(h,g,k){if(k&&k.contains(h.toLowerCase())){return h;}h=h.toLowerCase().replace(/^(keyup|keydown):/,function(m,l){g=l;
return"";});if(!b[h]){var f,j={};h.split("+").each(function(l){if(e.test(l)){j[l]=true;}else{f=l;}});j.control=j.control||j.ctrl;var i=[];c.each(function(l){if(j[l]){i.push(l);
}});if(f){i.push(f);}b[h]=i.join("+");}return g+":keys("+b[h]+")";};a.each=function(f,g){var h=f||a.manager;while(h){g.run(h);h=h._activeKB;}};a.stop=function(f){f.preventKeyboardPropagation=true;
};a.manager=new a({active:true});a.trace=function(f){f=f||a.manager;var g=window.console&&console.log;if(g){console.log("the following items have focus: ");
}a.each(f,function(h){if(g){console.log(document.id(h.widget)||h.wiget||h);}});};var d=function(g){var f=[];c.each(function(h){if(g[h]){f.push(h);}});if(!e.test(g.key)){f.push(g.key);
}a.manager._handle(g,g.type+":keys("+f.join("+")+")");};document.addEvents({keyup:d,keydown:d});}).call(this);Keyboard.prototype.options.nonParsedEvents.combine(["rebound","onrebound"]);
Keyboard.implement({addShortcut:function(b,a){this._shortcuts=this._shortcuts||[];this._shortcutIndex=this._shortcutIndex||{};a.getKeyboard=Function.from(this);
a.name=b;this._shortcutIndex[b]=a;this._shortcuts.push(a);if(a.keys){this.addEvent(a.keys,a.handler);}return this;},addShortcuts:function(b){for(var a in b){this.addShortcut(a,b[a]);
}return this;},removeShortcut:function(b){var a=this.getShortcut(b);if(a&&a.keys){this.removeEvent(a.keys,a.handler);delete this._shortcutIndex[b];this._shortcuts.erase(a);
}return this;},removeShortcuts:function(a){a.each(this.removeShortcut,this);return this;},getShortcuts:function(){return this._shortcuts||[];},getShortcut:function(a){return(this._shortcutIndex||{})[a];
}});Keyboard.rebind=function(b,a){Array.from(a).each(function(c){c.getKeyboard().removeEvent(c.keys,c.handler);c.getKeyboard().addEvent(b,c.handler);c.keys=b;
c.getKeyboard().fireEvent("rebound");});};Keyboard.getActiveShortcuts=function(b){var a=[],c=[];Keyboard.each(b,[].push.bind(a));a.each(function(d){c.extend(d.getShortcuts());
});return c;};Keyboard.getShortcut=function(c,b,d){d=d||{};var a=d.many?[]:null,e=d.many?function(g){var f=g.getShortcut(c);if(f){a.push(f);}}:function(f){if(!a){a=f.getShortcut(c);
}};Keyboard.each(b,e);return a;};Keyboard.getShortcuts=function(b,a){return Keyboard.getShortcut(b,a,{many:true});};HtmlTable=Class.refactor(HtmlTable,{options:{useKeyboard:true,classRowSelected:"table-tr-selected",classRowHovered:"table-tr-hovered",classSelectable:"table-selectable",shiftForMultiSelect:true,allowMultiSelect:true,selectable:false},initialize:function(){this.previous.apply(this,arguments);
if(this.occluded){return this.occluded;}this._selectedRows=new Elements();this._bound={mouseleave:this._mouseleave.bind(this),clickRow:this._clickRow.bind(this)};
if(this.options.selectable){this.enableSelect();}},empty:function(){this.selectNone();return this.previous();},enableSelect:function(){this._selectEnabled=true;
this._attachSelects();this.element.addClass(this.options.classSelectable);return this;},disableSelect:function(){this._selectEnabled=false;this._attachSelects(false);
this.element.removeClass(this.options.classSelectable);return this;},push:function(){var a=this.previous.apply(this,arguments);this._updateSelects();return a;
},isSelected:function(a){return this._selectedRows.contains(a);},toggleRow:function(a){return this[(this.isSelected(a)?"de":"")+"selectRow"](a);},selectRow:function(b,a){if(this.isSelected(b)||(!a&&!this.body.getChildren().contains(b))){return;
}if(!this.options.allowMultiSelect){this.selectNone();}if(!this.isSelected(b)){this._selectedRows.push(b);b.addClass(this.options.classRowSelected);this.fireEvent("rowFocus",[b,this._selectedRows]);
}this._focused=b;document.clearSelection();return this;},deselectRow:function(b,a){if(!this.isSelected(b)||(!a&&!this.body.getChildren().contains(b))){return;
}this._selectedRows=new Elements(Array.from(this._selectedRows).erase(b));b.removeClass(this.options.classRowSelected);this.fireEvent("rowUnfocus",[b,this._selectedRows]);
return this;},selectAll:function(a){if(!a&&!this.options.allowMultiSelect){return;}this.selectRange(0,this.body.rows.length,a);return this;},selectNone:function(){return this.selectAll(true);
},selectRange:function(b,a,f){if(!this.options.allowMultiSelect&&!f){return;}var g=f?"deselectRow":"selectRow",e=Array.clone(this.body.rows);if(typeOf(b)=="element"){b=e.indexOf(b);
}if(typeOf(a)=="element"){a=e.indexOf(a);}a=a<e.length-1?a:e.length-1;if(a<b){var d=b;b=a;a=d;}for(var c=b;c<=a;c++){this[g](e[c],true);}return this;},deselectRange:function(b,a){this.selectRange(b,a,true);
},getSelected:function(){return this._selectedRows;},_enterRow:function(a){if(this._hovered){this._hovered=this._leaveRow(this._hovered);}this._hovered=a.addClass(this.options.classRowHovered);
},_leaveRow:function(a){a.removeClass(this.options.classRowHovered);},_updateSelects:function(){Array.each(this.body.rows,function(a){var b=a.retrieve("binders");
if(!b&&!this._selectEnabled){return;}if(!b){b={mouseenter:this._enterRow.pass([a],this),mouseleave:this._leaveRow.pass([a],this)};a.store("binders",b);
}if(this._selectEnabled){a.addEvents(b);}else{a.removeEvents(b);}},this);},_shiftFocus:function(b,a){if(!this._focused){return this.selectRow(this.body.rows[0],a);
}var c=this._getRowByOffset(b);if(c===null||this._focused==this.body.rows[c]){return this;}this.toggleRow(this.body.rows[c],a);},_clickRow:function(a,b){var c=(a.shift||a.meta||a.control)&&this.options.shiftForMultiSelect;
if(!c&&!(a.rightClick&&this.isSelected(b)&&this.options.allowMultiSelect)){this.selectNone();}if(a.rightClick){this.selectRow(b);}else{this.toggleRow(b);
}if(a.shift){this.selectRange(this._rangeStart||this.body.rows[0],b,this._rangeStart?!this.isSelected(b):true);this._focused=b;}this._rangeStart=b;},_getRowByOffset:function(c){if(!this._focused){return 0;
}var b=Array.clone(this.body.rows),a=b.indexOf(this._focused)+c;if(a<0){a=null;}if(a>=b.length){a=null;}return a;},_attachSelects:function(d){d=d!=null?d:true;
var g=d?"addEvents":"removeEvents";this.element[g]({mouseleave:this._bound.mouseleave});this.body[g]({"click:relay(tr)":this._bound.clickRow,"contextmenu:relay(tr)":this._bound.clickRow});
if(this.options.useKeyboard||this.keyboard){if(!this.keyboard){var f,e;var c=function(i){var h=function(j){clearTimeout(f);j.preventDefault();var k=this.body.rows[this._getRowByOffset(i)];
if(j.shift&&k&&this.isSelected(k)){this.deselectRow(this._focused);this._focused=k;}else{if(k&&(!this.options.allowMultiSelect||!j.shift)){this.selectNone();
}this._shiftFocus(i,j);}if(e){f=h.delay(100,this,j);}else{f=(function(){e=true;h(j);}).delay(400);}}.bind(this);return h;}.bind(this);var b=function(){clearTimeout(f);
e=false;};this.keyboard=new Keyboard({events:{"keydown:shift+up":c(-1),"keydown:shift+down":c(1),"keyup:shift+up":b,"keyup:shift+down":b,"keyup:up":b,"keyup:down":b},active:true});
var a="";if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){a=" (Shift multi-selects).";}this.keyboard.addShortcuts({"Select Previous Row":{keys:"up",shortcut:"up arrow",handler:c(-1),description:"Select the previous row in the table."+a},"Select Next Row":{keys:"down",shortcut:"down arrow",handler:c(1),description:"Select the next row in the table."+a}});
}this.keyboard[d?"activate":"deactivate"]();}this._updateSelects();},_mouseleave:function(){if(this._hovered){this._leaveRow(this._hovered);}}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(a,b){this.element.scrollTo(a,b);
},fps:50},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!="element")?this.docBody:this.element;
this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});
return this;},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer);
return this;},attach:function(){this.listener.addEvent("mousemove",this.bound.getCoords);},detach:function(){this.listener.removeEvent("mousemove",this.bound.getCoords);
this.timer=clearInterval(this.timer);},getCoords:function(a){this.page=(this.listener.get("tag")=="body")?a.client:a.page;if(!this.timer){this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this);
}},scroll:function(){var c=this.element.getSize(),a=this.element.getScroll(),h=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},d=this.element.getScrollSize(),g={x:0,y:0},e=this.options.area.top||this.options.area,b=this.options.area.bottom||this.options.area;
for(var f in this.page){if(this.page[f]<(e+h[f])&&a[f]!=0){g[f]=(this.page[f]-e-h[f])*this.options.velocity;}else{if(this.page[f]+b>(c[f]+h[f])&&a[f]+c[f]!=d[f]){g[f]=(this.page[f]-c[f]+b-h[f])*this.options.velocity;
}}g[f]=g[f].round();}if(g.y||g.x){this.fireEvent("change",[a.x+g.x,a.y+g.y]);}}});(function(){var a=function(c,b){return(c)?(typeOf(c)=="function"?c(b):b.get(c)):"";
};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none");
},title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,elements:function(c){return c!=null;
}});this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});},toElement:function(){if(this.tip){return this.tip;
}this.tip=new Element("div",{"class":this.options.className,styles:{position:"absolute",top:0,left:0}}).adopt(new Element("div",{"class":"tip-top"}),this.container,new Element("div",{"class":"tip-bottom"}));
return this.tip;},attach:function(b){$$(b).each(function(d){var f=a(this.options.title,d),e=a(this.options.text,d);d.set("title","").store("tip:native",f).retrieve("tip:title",f);
d.retrieve("tip:text",e);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move");}c.each(function(h){var g=d.retrieve("tip:"+h);
if(!g){g=function(i){this["element"+h.capitalize()].apply(this,[i,d]);}.bind(this);}d.store("tip:"+h,g).addEvent("mouse"+h,g);},this);},this);return this;
},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(e){d.removeEvent("mouse"+e,d.retrieve("tip:"+e)).eliminate("tip:"+e);
});this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){clearTimeout(this.timer);
this.timer=(function(){this.container.empty();["title","text"].each(function(e){var d=b.retrieve("tip:"+e);var f=this["_"+e+"Element"]=new Element("div",{"class":"tip-"+e}).inject(this.container);
if(d){this.fill(f,d);}},this);this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){clearTimeout(this.timer);
this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},setTitle:function(b){if(this._titleElement){this._titleElement.empty();
this.fill(this._titleElement,b);}return this;},setText:function(b){if(this._textElement){this._textElement.empty();this.fill(this._textElement,b);}return this;
},fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b);
}},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this);}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},e={y:false,x2:false,y2:false,x:false},h={};
for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];if(h[d[i]]<0){e[i]=true;}if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i];
e[i+"2"]=true;}}this.fireEvent("bound",e);this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this);
}if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]);
}});}).call(this);

var contentTmpId = '';
var userTmpId = '';
var forwardTmp = '';
var tmp = '';
var tmpId = '';
var tooltipObj = '';
var isPopupTmp = true;
var elem = '';





function insertImg (value, fieldId) {

if (value != '') $(fieldId).insertAtCursor(value, false);

}




function insertTag (fieldId, type) {

var desc = $(fieldId).getSelectedText();
var value = '';

if (type == 'a') {
var url = prompt(lang['toolbar.alink'] ,'http://');
if (url) {
if (desc == '') desc = prompt(lang['toolbar.alink2'] ,'');
value = '<a href=\"'+url+'\">'+desc+'<\/a>';
}
} else if (type == 'em' || type == 'strong' || type == 'u') {
value = (desc) ? '<'+type+'>'+desc+'<\/'+type+'>' : '<'+type+'><\/'+type+'>';
} else if (type == 'blockquote' || type == 'h1' || type == 'p') {
value = (desc) ? '\n<'+type+'>'+desc+'<\/'+type+'>\n' : '\n<'+type+'><\/'+type+'>\n';
} else if (type == 'video') {
var url = prompt(lang['toolbar.videodesc'] ,'http://');
if (url) value = '<video src=\"'+url+'\" />';
} else if (type == 'li') {
value = '\n<ul>\n<li><\/li>\n<li><\/li>\n<\/ul>\n';
}

if (value != '') $(fieldId).insertAtCursor(value, false);
}




function updateElement (id,value) {
$(id).set('html', value);
}




var imageTmpId = '';

function imageDelete (id, forward, isPopup) {
imageTmpId = id;
forwardTmp = forward;
isPopupTmp = isPopup;
MessageBox.confirm(lang['images.delete.confirm'],imageDeleteReal);
}

function imageDeleteReal (Check) {

if (Check == true) {

var mySpinner = new Spinner('imageId'+imageTmpId, {message: lang['images.delete.working']}).show();

new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
if (forwardTmp != '') window.location.href = forwardTmp;
$('imageId'+imageTmpId).fade(0);
} else {
MessageBox.status(lang['images.delete.error']);
}
}}).get({'ajax': 'imagesDelete', 'image_id': imageTmpId, 'isPopup': isPopupTmp});

}

}




var documentTmpId = '';

function documentDelete (id, forward) {
documentTmpId = id;
forwardTmp = forward;
MessageBox.confirm(lang['documents.delete.confirm'],documentDeleteReal);
}

function documentDeleteReal (Check) {

if (Check == true) {

var mySpinner = new Spinner('documentId'+documentTmpId, {message: lang['documents.delete.working']}).show();

new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
if (forward != '') window.location.href = forward;
$('documentId'+documentTmpId).fade(0);
} else {
MessageBox.status(lang['documents.delete.error']);
}
}}).get({'ajax': 'documentsDelete', 'document_id': documentTmpId});

}
}





function tagsSelectInit (count) {

var formElements = document.forms['tagsselect'].elements;
var tagsList = parent.document.getElementById("tagsSelect").value;
var tagsCurrent = tagsList.split(',');

for (x=0; x<tagsCurrent.length; x++) {
tagsCurrent[x] = tagsCurrent[x].trim();
}

for (i=0; i<count; i++) {
for (x=0; x<tagsCurrent.length; x++) {
if (formElements['tagsselect_'+i].value == tagsCurrent[x]) {
formElements['tagsselect_'+i].checked = true;
}
}
}

}

function tagsSelect (count) {

var formElements = document.forms['tagsselect'].elements;
var insert = parent.document.getElementById("tagsSelect").value;
var tagsCurrent = insert.split(',');
var tagsHash = new Object();

for (x=0; x<tagsCurrent.length; x++) {
tagsCurrent[x] = tagsCurrent[x].trim();
tagsHash[tagsCurrent[x]] = 1;
}

for (i=0; i<count; i++) {
if (formElements['tagsselect_'+i].checked == true) {
if (tagsHash[formElements['tagsselect_' + i].value] != 1) {
if (insert == '') {
insert = formElements['tagsselect_' + i].value;
} else {
insert = insert + ', ' + formElements['tagsselect_' + i].value;
}
}
} else {
if (tagsHash[formElements['tagsselect_' + i].value] == 1) {
eval('var match = /\\s*\\b'+formElements['tagsselect_' + i].value+'\\b,*\\s*/');
insert = insert.replace(match, '');
}
}
}

parent.document.getElementById("tagsSelect").value = insert;
}




function updateConfig (key, elem) {
var value = (elem.checked == true) ? elem.value : 0;
new Request({method: 'get', url: config['fileWeb']}).send('ajax=updateConfig&key='+key+'&value='+value);
}




function slideOutByElement (elemHide, elemShow) {

new Fx.Slide(elemHide, {duration: 500}).hide();
elemShowFx = new Fx.Slide(elemShow, {duration: 500});
elemShowFx.hide();
$(elemShow).style.display='block';
elemShowFx.slideIn();

}




window.addEvent('load', function() {
tooltipObj = new Tips('.tooltip', {className: 'tooltipcont'});
tooltipObj.addEvent('show', function(tip){
tip.fade('in');
});
tooltipObj.addEvent('hide', function(tip){
tip.fade('out');
});
});




var idCard = null;

var Idcard = new Class({

initialize: function(elements, options){
this.toolTip = new Element('div').addClass('idcard-tip').setStyles({
'position': 'absolute',
'top': '0',
'left': '0',
'visibility': 'hidden'
}).injectInside(document.body);
this.wrapper = new Element('div').injectInside(this.toolTip);
$each(elements, function(el){
this.build($(el));
}, this);
this.fx = new Fx.Tween(this.toolTip, {property: 'opacity', onStart: Events.prototype.clearChain, duration: 200, link: 'cancel'}).set(0);
},

build: function(el){
el.myNickname = el.href ? el.href.replace('http://', '') : (el.rel || false);
if (el.title){
var dual = el.title.split('::');
if (dual.length > 0) {
el.myNickname = dual[0].trim();
el.myPortrait = dual[1].trim();
el.mySex = dual[2].trim();
el.myCity = dual[3].trim();
el.myTooltip = dual[4].trim();
}
el.removeAttribute('title');
} else {
el.myPortrait = false;
el.mySex = false;
el.myCity = false;
el.myTooltip = false;
}
if (el.myNickname && el.myNickname.length > 50) el.myNickname = el.myNickname.substr(0, 49)+"&hellip;";
el.addEvent('mouseover', function(event){
this.start(el);
this.locate(event);
}.bindWithEvent(this));
el.addEvent('mousemove', this.locate.bindWithEvent(this));
el.addEvent('mouseout', this.end.bindWithEvent(this));
},

start: function(el){
this.wrapper.set('html', '');
var idcard = new Element('div').addClass('idcard-bg').injectInside(this.wrapper)
if (el.myPortrait) {
var portrait =  (el.myPortrait != 0) ? config["pathPortrait"]+el.myPortrait+'.preview.jpg' : portrait = config["pathSystem"]+'images/user_salutation'+el.mySex+'.gif';
new Element('img').injectInside(
new Element('div').addClass('idcard-portrait').injectInside(idcard)
).setProperty('src', portrait);
}
if (el.myNickname) new Element('span').addClass('idcard-nickname').injectInside(idcard).set('html', el.myNickname);
if (el.myCity) new Element('span').addClass('idcard-city').injectInside(idcard).set('html', el.myCity);
if (el.myTooltip) new Element('span', {'html' : el.myTooltip, 'class': 'idcard-tooltip'}).injectInside(idcard);
$clear(this.timer);
this.timer = this.show.delay(100, this);
},

end: function(event){
$clear(this.timer);
this.timer = this.hide.delay(100, this);
event.stop();
},

locate: function(event){
var win = {'x': window.getWidth(), 'y': window.getHeight()};
var scroll = {'x': window.getScrollLeft(), 'y': window.getScrollTop()};
var tip = {'x': this.toolTip.offsetWidth, 'y': this.toolTip.offsetHeight};
var prop = {'x': 'left', 'y': 'top'};
for (var z in prop){
var pos = event.page[z] + 16;
if ((pos + tip[z] - scroll[z]) > win[z]) pos = event.page[z] - 16 - tip[z];
this.toolTip.setStyle(prop[z], pos + 'px');
};
event.stop();
},

show: function() {
this.fx.start(1);
},

hide: function(){
this.fx.cancel();
this.fx.start(0);
}

});

window.addEvent('load', function() {
idCard = new Idcard($$('.idcard'));
});







function changeUsersView (value) {

new Request.HTML({url:config['fileWeb'], evalResponse: true, update: $('usersListviewChange'), onSuccess: function(resp) { 
if ($('userslist')) {
var full = ($('userslist').getProperty('class').test('full')) ? ' '+value+'full' : '';
$('userslist').setProperty('class', value+full);
}
}}).get({'ajax': 'updateSessionValue', 'key': 'usersView', 'value': value});

}







var doLangKey = '';
var doActKey = '';
var doIdKey = '';
var doIdValue = '';
var doForward = '';

function doActivity (langKey, actKey, idKey, idValue, forward) {
doLangKey = langKey;
doActKey = actKey;
doIdKey = idKey;
doIdValue = idValue;
doForward = forward;
MessageBox.confirm(lang[langKey+'.confirm'],doActivityReal);
}

function doActivityReal (Check) {

if (Check == true) {

var mySpinner = new Spinner(doIdKey+doIdValue, {message: lang[doLangKey+'.working']}).show();

new Request.JSON({url: config['fileWeb']+'?'+doIdKey+'='+doIdValue, onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
if (response.forward != '') {
window.location.href = response.forward;
} else if (doForward != '') {
window.location.href = doForward;
} else {
if ($(response.idKey+response.idValue)) $(response.idKey+response.idValue).dispose();
if ($(response.idKeyMore+response.idValueMore)) $(response.idKeyMore+response.idValueMore).dispose();
}
} else {
if (response.msg != '') {
MessageBox.status(response.msg);
} else {
MessageBox.status(lang[response.langKey+'.error']);
}
}
}}).get({'ajax': doActKey, 'langKey': doLangKey, 'forward': doForward});

}

}



window.addEvent('load', function() {

SqueezeBox.assign($$('a.boxed'));

});




window.addEvent("load", function(){

['left', 'center', 'right'].each(function(item, index) {

container = new Element('span', { 'class': 'config_imageSubtitle_'+item});

$$('.align_'+item).each(function(img) {

var subtitle = img.getProperty('title');

if (subtitle != null) {

imageContainer = container.clone();
imageContainer.setStyle('width', img.offsetWidth).set('text', subtitle).injectAfter(img);
img.setProperty('title', '');
img.injectTop(imageContainer);

}
});
});

});




var showSearchForm = '';

window.addEvent("domready", function(){

if ($('searchFormEdit')) {

showSearchForm = new Fx.Slide('searchForm', {duration: 500}).hide();

$('searchForm').setStyle('display', 'block');

$('searchFormEdit').addEvent('click', function(e){

if ($('siteH1Button')) $('siteH1Button').dispose();
$('searchFormDetails').dispose();
if ($('searchFormButtons')) $('searchFormButtons').dispose();

showSearchForm.slideIn();

});

if ($('siteH1Button')) {
$('siteH1Button').addEvent('click', function(e){

if ($('siteH1Button')) $('siteH1Button').dispose();
$('searchFormDetails').dispose();
if ($('searchFormButtons')) $('searchFormButtons').dispose();

showSearchForm.slideIn();

});
}

window.addEvent('resize', function(e) {

showSearchForm.hide();
showSearchForm.show();

});

}

});






window.addEvent("load", function(){

if ($('doneList') != null) {

if ($('statusClose') != null) {

$('statusClose').setStyle('display', 'block');

$('statusClose').addEvent('click', function(e){
$('doneList').dispose();
});

}
}
});






function checkFormPhone (field) {

new Request.JSON({url: config['fileWeb']+'?ajax=checkFormPhone', onComplete: function(response){

if (response.status == "true") {

if ($(field+'_li').hasClass('error')) {

$(field+'_li').removeClass('error');
$(field+'_error').dispose();

}

} else if (response.status == "false") {

if (!$(field+'_li').hasClass('error')) {

$(field+'_li').addClass('error');

new Element('span', {'id': field+'_error', 'class': 'error'}).set('html', response.msg).inject($(field+'_li'), 'bottom');

} else {

$(field+'_error').set('html', response.msg);

}

}

}}).post({'country': $(field+'country').value, 'city': $(field+'city').value, 'number': $(field+'number').value});

}





function checkFormNumber (field) {

checkFormInput('checkFormNumber', field, field+'_li');

}



function checkFormFloat (field) {

checkFormInput('checkFormFloat', field, field+'_li');

}





function checkFormInput (ajax, field, fieldLi) {

new Request.JSON({url: config['fileWeb']+'?ajax='+ajax, onComplete: function(response){

if (response.status == "true") {

if ($(fieldLi).hasClass('error')) {

$(fieldLi).removeClass('error');
$(fieldLi+'_error').dispose();

}

} else if (response.status == "false") {

if (!$(fieldLi).hasClass('error')) {

$(fieldLi).addClass('error');

new Element('span', {'id': fieldLi+'_error', 'class': 'error'}).set('html', response.msg).inject($(fieldLi), 'bottom');

} else {

$(fieldLi+'_error').set('html', response.msg);

}

}

}}).post({'value': $(field).value});

}






function popupResize () {

var size = $('content').getSize();
size.x += 100;
size.y += 50;
parent.SqueezeBox.asset.setProperty('width',size.x);
parent.SqueezeBox.asset.setProperty('height',size.y);
parent.SqueezeBox.resize(size);

}


function popupResizeExact (x, y) {

var size = $('content').getSize();
if (x != '') {
size.x = x;
} else {
size.x += 100;
}
if (y != '') {
size.y = y;
} else {
size.y += 50;
}

var docSize = parent.document.getSize();
if (docSize.y-100 < size.y) size.y = docSize.y-100;
if (docSize.x-100 < size.x) size.x = docSize.x-100;

parent.SqueezeBox.asset.setProperty('width',size.x);
parent.SqueezeBox.asset.setProperty('height',size.y);
parent.SqueezeBox.resize(size);

}






function contentSelectAdd (item, key) {

var id = item.getProperty('name').replace(/contentId/, '');

parent.document.getElementById(key+'_allocation_preview').set('html', '<a href="'+$('contentId'+id+'Title').getProperty('href')+'" target="_blank">'+$('contentId'+id+'Title').get('html')+'</a>');
parent.document.getElementById(key+'_allocation_preview').setStyle('display', 'inline');
parent.document.getElementById(key+'_allocation_delete').setStyle('display', 'inline');
parent.document.getElementById(key+'_allocation').value = id;
parent.SqueezeBox.close();

}






window.addEvent("domready", function(){

$$('.checktrue').each(function(item) {

var id = item.getProperty('id');

if (id != null) {

if (item.checked == false) {
if ($(id+'_true')) {
if ($(id+'_true').match('div')) {
$(id+'_true').setStyle("display", "none");
} else {
$(id+'_true').setStyle("visibility", "hidden");
}
} else {
$$('.'+id+'_true').each(function(elem) {
if (elem.match('div') || elem.match('li')) {
elem.setStyle("display", "none");
} else {
elem.setStyle("visibility", "hidden");
}
});
}
}

item.addEvent('click', function(e){

if (item.checked == false) {

if ($(id+'_true')) {
if ($(id+'_true').match('div')) {
$(id+'_true').setStyle("display", "none");
} else {
$(id+'_true').setStyle("visibility", "hidden");
}
} else {
$$('.'+id+'_true').each(function(elem) {
if (elem.match('div') || elem.match('li')) {
elem.setStyle("display", "none");
} else {
elem.setStyle("visibility", "hidden");
}
});
}
} else {

if ($(id+'_true')) {
if ($(id+'_true').match('div')) {
$(id+'_true').setStyle("display", "block");
} else {
$(id+'_true').setStyle("visibility", "visible");
}
} else {
$$('.'+id+'_true').each(function(elem) {
if (elem.match('div') || elem.match('li')) {
elem.setStyle("display", "block");
} else {
elem.setStyle("visibility", "visible");
}
});
}

}

}.bind(this));

}
});

});






window.addEvent("domready", function(){

$$('.ajaxrequest').each(function(item) {

item.setStyle('display', 'inline');

var rel = item.getProperty('rel');

if (rel != null) {

item.addEvent('click', function(e){

var tmp = item.get('html');

new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { item.set('html', '<img src="'+config["pathSystem"]+'images/spinner.gif" class="icon" alt="" />'); }, onComplete: function(response){

//erfolgreicher Request
if (response.status == "true") {

if (response.updateIdValue != '' && $(response.updateId) != '') {

if ($(response.updateId) != null) $(response.updateId).value = response.updateIdValue;

}

//Fehlermeldung ausgeben
} else {

alert(response.errormsg);

}

//Inhalt zuruecksetzen
item.set('html', tmp);

}}).get({'ajax': rel});

return false;

}.bind(this));

}
});

});




function changeChartView (id, view) {

['yesterday', 'week', 'month', 'year'].each(function(item, index) {

if ($(id+'-'+item) != null) {
if (!$(id+'-'+item).hasClass('hidden')) $(id+'-'+item).addClass('hidden');
if (item == view) $(id+'-'+item).removeClass('hidden');
}

if ($(id+'-'+item+'-more') != null) {
if (!$(id+'-'+item+'-more').hasClass('hidden')) $(id+'-'+item+'-more').addClass('hidden');
if (item == view) $(id+'-'+item+'-more').removeClass('hidden');
}

});

return false;
}



var statusbarCurrent = 0;
var statusbarSteps = 0;
var statusbarStatus = 0;
var statusbarTitle = '';
var statusbarContent = '';

function runStatusbar () {

statusbarCurrent++;

if (statusbarCurrent != statusbarSteps) {

var statusbarPercent = statusbarStatus * statusbarCurrent;

$('statusbarGraphic').setStyle('width', statusbarPercent+'%');
$('statusbarCounter').set('text', statusbarPercent+' %');

} else {

$('statusbarWorking').setStyle('display', 'none');
if ($('statusbarSuccess')) $('statusbarSuccess').setStyle('display', 'block');

}

}




function formMultilineAddLine (key, field) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$(key+'Tmp').set('html', response.html);
$(key+'_'+response.index).inject($(key), 'bottom');
$(field+'_count').value = $(field+'_count').value.toInt()+1;
}
}}).get({'ajax': key+'AddLine', 'index': $(field+'_count').value});

return false;
}






function checkRadioField (field) {

$$('input[type=radio]').each(function(item, index){
if (item.get('name') == field) {
var display = (item.checked == true) ? "list-item" : "none";
$$('li.is_'+item.get('value')).each(function(li, index){
li.setStyle("display", display);
});
}
});

}





var showReelCounter = 1;
var showReelCurrent = 1;

window.addEvent("domready", function(){

if ($('showReel') != null) {

$$('.showReelItem').each(function(item){

var link = new Element('span', {id: 'showReelBar-'+showReelCounter, rel: showReelCounter}).appendText(showReelCounter).inject($('showReelBar'));
link.addEvent('click', function(e){

var id = link.getProperty('rel');
if (id != showReelCurrent) {
$('showReelBar-'+showReelCurrent).removeClass('active');
$('showReelItem-'+showReelCurrent).setStyle('display', 'none');
$('showReelItem-'+id).fade('hide');
$('showReelItem-'+id).setStyle('display', 'block');
$('showReelBar-'+id).addClass('active');
$('showReelItem-'+id).get('tween', {property: 'opacity', duration: '1000'}).start(1); 
showReelCurrent = id.toInt();
}

});

showReelCounter++;
});

if (showReelCounter != 2) {
window.setTimeout("showReelChange()",7000);
} else {
$('showReelBar').setStyle('display', 'none');
}

}

});


function showReelChange () {
var next = showReelCurrent+1;
if (next == showReelCounter) next = 1;
$('showReelBar-'+showReelCurrent).removeClass('active');
$('showReelItem-'+showReelCurrent).setStyle('display', 'none');
$('showReelItem-'+next).fade('hide');
$('showReelItem-'+next).setStyle('display', 'block');
$('showReelBar-'+next).addClass('active');
$('showReelItem-'+next).get('tween', {property: 'opacity', duration: '1000'}).start(1); 
showReelCurrent = next;

window.setTimeout("showReelChange()",7000);

}






window.addEvent("domready", function(){

$$('input.usespinner').each(function(item){

item.addEvent('click', function(e){

var id = item.getProperty('id').replace('Button', '');
if ($(id+'Block') != null) var mySpinner = new Spinner(id+'Block', {message: lang['spinner.working']}).show();

});

});

});






var myAccordion = "";

window.addEvent('domready', function() {

createMyAccordion();

});


function createMyAccordion () {

myAccordion = new Accordion($('accordion'), 'h4.toggler', 'div.element', {
opacity: false,
display: -1,
alwaysHide: true,
onActive: function(toggler, element){
toggler.addClass('active');
},
onBackground: function(toggler, element){
toggler.removeClass('active');
}
});

}






window.addEvent('domready', function() {

$$('input.isdate').each(function(el){

var obj = el.getProperty('rel');
if (obj != '') {
obj = JSON.decode(obj, false);
var picker = new SlimPicker(el.id, obj);
} else {
var picker = new SlimPicker(el.id);
}

});

});



/**
 * SqueezeBox - Expandable Lightbox
 *
 * @version1.1 rc4
 *
 * @licenseMIT-style license
 * @authorHarald Kirschner <mail [at] digitarald.de>
 * @copyrightAuthor
 */

var SqueezeBox = {

presets: {
onOpen: $empty,
onClose: $empty,
onUpdate: $empty,
onResize: $empty,
onMove: $empty,
onShow: $empty,
onHide: $empty,
size: {x: 600, y: 450},
sizeLoading: {x: 200, y: 150},
marginInner: {x: 20, y: 20},
marginImage: {x: 50, y: 75},
handler: false,
target: null,
closable: true,
closeBtn: true,
zIndex: 65555,
overlayOpacity: 0.7,
classWindow: '',
classOverlay: '',
overlayFx: {},
resizeFx: {},
contentFx: {},
parse: 'rel',
parseSecure: false,
shadow: false,
document: null,
ajaxOptions: {}
},

initialize: function(presets) {
if (this.options) return this;

this.presets = $merge(this.presets, presets);
this.doc = this.presets.document || document;
this.options = {};
this.setOptions(this.presets).build();
this.bound = {
window: this.reposition.bind(this, [null]),
scroll: this.checkTarget.bind(this),
close: this.close.bind(this),
key: this.onKey.bind(this)
};
this.isOpen = this.isLoading = false;
return this;
},

build: function() {
this.overlay = new Element('div', {
id: 'sbox-overlay',
styles: {display: 'none', zIndex: this.options.zIndex}
});
this.win = new Element('div', {
id: 'sbox-window',
styles: {display: 'none', zIndex: this.options.zIndex + 2}
});
if (this.options.shadow) {
if (Browser.Engine.webkit420) {
this.win.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)');
} else if (!Browser.Engine.trident4) {
var shadow = new Element('div', {'class': 'sbox-bg-wrap'}).inject(this.win);
var relay = function(e) {
this.overlay.fireEvent('click', [e]);
}.bind(this);
['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) {
new Element('div', {'class': 'sbox-bg sbox-bg-' + dir}).inject(shadow).addEvent('click', relay);
});
}
}
this.content = new Element('div', {id: 'sbox-content'}).inject(this.win);
this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'}).inject(this.win);
this.fx = {
overlay: new Fx.Tween(this.overlay, $merge({
property: 'opacity',
onStart: Events.prototype.clearChain,
duration: 250,
link: 'cancel'
}, this.options.overlayFx)).set(0),
win: new Fx.Morph(this.win, $merge({
onStart: Events.prototype.clearChain,
unit: 'px',
duration: 750,
transition: Fx.Transitions.Quint.easeOut,
link: 'cancel',
unit: 'px'
}, this.options.resizeFx)),
content: new Fx.Tween(this.content, $merge({
property: 'opacity',
duration: 250,
link: 'cancel'
}, this.options.contentFx)).set(0)
};
$(this.doc.body).adopt(this.overlay, this.win);
},

assign: function(to, options) {
return ($(to) || $$(to)).addEvent('click', function() {
return !SqueezeBox.fromElement(this, options);
});
},

open: function(subject, options) {
this.initialize();

if (this.element != null) this.trash();
this.element = $(subject) || false;

this.setOptions($merge(this.presets, options || {}));

if (this.element && this.options.parse) {
var obj = this.element.getProperty(this.options.parse);
if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
}
this.url = ((this.element) ? (this.element.get('href')) : subject) || this.options.url || '';

this.assignOptions();

var handler = handler || this.options.handler;
if (handler) return this.setContent(handler, this.parsers[handler].call(this, true));
var ret = false;
return this.parsers.some(function(parser, key) {
var content = parser.call(this);
if (content) {
ret = this.setContent(key, content);
return true;
}
return false;
}, this);
},

fromElement: function(from, options) {
return this.open(from, options);
},

assignOptions: function() {
this.overlay.set('class', this.options.classOverlay);
this.win.set('class', this.options.classWindow);
if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6');
},

close: function(e) {
var stoppable = ($type(e) == 'event');
if (stoppable) e.stop();
if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));
this.win.setStyle('display', 'none');
this.fireEvent('onClose', [this.content]);
this.trash();
this.toggleListeners();
this.isOpen = false;
return this;
},

trash: function() {
this.element = this.asset = null;
this.content.empty();
this.options = {};
this.removeEvents().setOptions(this.presets).callChain();
},

onError: function() {
this.asset = null;
this.setContent('string', this.options.errorMsg || 'An error occurred');
},

setContent: function(handler, content) {
if (!this.handlers[handler]) return false;
this.content.className = 'sbox-content-' + handler;
this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content));
if (this.overlay.retrieve('opacity')) return this;
this.toggleOverlay(true);
this.fx.overlay.start(this.options.overlayOpacity);
return this.reposition();
},

applyContent: function(content, size) {
if (!this.isOpen && !this.applyTimer) return;
this.applyTimer = $clear(this.applyTimer);
this.hideContent();
if (!content) {
this.toggleLoading(true);
} else {
if (this.isLoading) this.toggleLoading(false);
this.fireEvent('onUpdate', [this.content], 20);
}
if (content) {
if (['string', 'array'].contains($type(content))) this.content.set('html', content);
else if (!this.content.hasChild(content)) this.content.adopt(content);
}
this.callChain();
if (!this.isOpen) {
this.toggleListeners(true);
this.resize(size, true);
this.isOpen = true;
this.fireEvent('onOpen', [this.content]);
} else {
this.resize(size);
}
},

resize: function(size, instantly) {
this.showTimer = $clear(this.showTimer || null);
var box = this.doc.getSize(), scroll = this.doc.getScroll();
this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size);
var to = {
width: this.size.x,
height: this.size.y,
left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(),
top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt()
};
this.hideContent();
if (!instantly) {
this.fx.win.start(to).chain(this.showContent.bind(this));
} else {
this.win.setStyles(to).setStyle('display', '');
this.showTimer = this.showContent.delay(50, this);
}
return this.reposition();
},

toggleListeners: function(state) {
var fn = (state) ? 'addEvent' : 'removeEvent';
this.closeBtn[fn]('click', this.bound.close);
this.overlay[fn]('click', this.bound.close);
this.doc[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll);
this.doc.getWindow()[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window);
},

toggleLoading: function(state) {
this.isLoading = state;
this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading');
if (state) this.fireEvent('onLoading', [this.win]);
},

toggleOverlay: function(state) {
var full = this.doc.getSize().x;
this.overlay.setStyle('display', (state) ? '' : 'none');
this.doc.body[(state) ? 'addClass' : 'removeClass']('body-overlayed');
if (state) {
this.scrollOffset = this.doc.getWindow().getSize().x - full;
this.doc.body.setStyle('margin-right', this.scrollOffset);
} else {
this.doc.body.setStyle('margin-right', '');
}
},

showContent: function() {
if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]);
this.fx.content.start(1);
},

hideContent: function() {
if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]);
this.fx.content.cancel().set(0);
},

onKey: function(e) {
switch (e.key) {
case 'esc': this.close(e);
case 'up': case 'down': return false;
}
},

checkTarget: function(e) {
return this.content.hasChild(e.target);
},

reposition: function() {
var size = this.doc.getSize(), scroll = this.doc.getScroll(), ssize = this.doc.getScrollSize();
this.overlay.setStyles({
width: ssize.x + 'px',
height: ssize.y + 'px'
});
this.win.setStyles({
left: (scroll.x + (size.x - this.win.offsetWidth) / 2 - this.scrollOffset).toInt() + 'px',
top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px'
});
return this.fireEvent('onMove', [this.overlay, this.win]);
},

removeEvents: function(type){
if (!this.$events) return this;
if (!type) this.$events = null;
else if (this.$events[type]) this.$events[type] = null;
return this;
},

extend: function(properties) {
return $extend(this, properties);
},

handlers: new Hash(),

parsers: new Hash()

};

SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty));

SqueezeBox.parsers.extend({

image: function(preset) {
return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false;
},

clone: function(preset) {
if ($(this.options.target)) return $(this.options.target);
if (this.element && !this.element.parentNode) return this.element;
var bits = this.url.match(/#([\w-]+)$/);
return (bits) ? $(bits[1]) : (preset ? this.element : false);
},

ajax: function(preset) {
return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false;
},

iframe: function(preset) {
return (preset || this.url) ? this.url : false;
},

string: function(preset) {
return true;
}
});

SqueezeBox.handlers.extend({

image: function(url) {
var size, tmp = new Image();
this.asset = null;
tmp.onload = tmp.onabort = tmp.onerror = (function() {
tmp.onload = tmp.onabort = tmp.onerror = null;
if (!tmp.width) {
this.onError.delay(10, this);
return;
}
var box = this.doc.getSize();
box.x -= this.options.marginImage.x;
box.y -= this.options.marginImage.y;
size = {x: tmp.width, y: tmp.height};
for (var i = 2; i--;) {
if (size.x > box.x) {
size.y *= box.x / size.x;
size.x = box.x;
} else if (size.y > box.y) {
size.x *= box.y / size.y;
size.y = box.y;
}
}
size.x = size.x.toInt();
size.y = size.y.toInt();
this.asset = $(tmp);
tmp = null;
this.asset.width = size.x;
this.asset.height = size.y;
this.applyContent(this.asset, size);
}).bind(this);
tmp.src = url;

if(this.element.get('title') != '') {

var caption = new Element('span', {
'html' : this.element.get('title'),
'id': 'sbox-caption'
});
caption.inject($('sbox-content'));

}

if (tmp && tmp.onload && tmp.complete) tmp.onload();
return (this.asset) ? [this.asset, size] : null;
},

clone: function(el) {
if (el) return el.clone();
return this.onError();
},

adopt: function(el) {
if (el) return el;
return this.onError();
},

ajax: function(url) {
var options = this.options.ajaxOptions || {};
this.asset = new Request.HTML($merge({
method: 'get',
evalScripts: false
}, this.options.ajaxOptions)).addEvents({
onSuccess: function(resp) {
this.applyContent(resp);
if (options.evalScripts !== null && !options.evalScripts) $exec(this.asset.response.javascript);
this.fireEvent('onAjax', [resp, this.asset]);
this.asset = null;
}.bind(this),
onFailure: this.onError.bind(this)
});
this.asset.send.delay(10, this.asset, [{url: url}]);
},

iframe: function(url) {
this.asset = new Element('iframe', $merge({
src: url,
frameBorder: 0,
width: this.options.size.x,
height: this.options.size.y
}, this.options.iframeOptions));
if (this.options.iframePreload) {
this.asset.addEvent('load', function() {
this.applyContent(this.asset.setStyle('display', ''));
}.bind(this));
this.asset.setStyle('display', 'none').inject(this.content);
return false;
}
return this.asset;
},

string: function(str) {
return str;
}

});

SqueezeBox.handlers.url = SqueezeBox.handlers.ajax;
SqueezeBox.parsers.url = SqueezeBox.parsers.ajax;
SqueezeBox.parsers.adopt = SqueezeBox.parsers.clone;

var Rainbows = [];

var MooRainbow = new Class({
options: {
id: 'mooRainbow',
prefix: 'moor-',
imgPath: 'images/',
startColor: [255, 0, 0],
wheel: false,
onComplete: $empty,
onChange: $empty
},

initialize: function(el, options) {
this.element = $(el); if (!this.element) return;
this.setOptions(options);

this.sliderPos = 0;
this.pickerPos = {x: 0, y: 0};
this.backupColor = this.options.startColor;
this.currentColor = this.options.startColor;
this.sets = {
rgb: [],
hsb: [],
hex: []
};
this.pickerClick = this.sliderClick  = false;
if (!this.layout) this.doLayout();
this.OverlayEvents();
this.sliderEvents();
this.backupEvent();
this.element.addEvent('click', function(e) { this.closeAll().toggle(e); }.bind(this));

this.layout.overlay.setStyle('background-color', this.options.startColor.rgbToHex());
this.layout.backup.setStyle('background-color', this.backupColor.rgbToHex());

this.pickerPos.x = this.snippet('curPos').l + this.snippet('curSize', 'int').w;
this.pickerPos.y = this.snippet('curPos').t + this.snippet('curSize', 'int').h;

this.manualSet(this.options.startColor);

this.pickerPos.x = this.snippet('curPos').l + this.snippet('curSize', 'int').w;
this.pickerPos.y = this.snippet('curPos').t + this.snippet('curSize', 'int').h;
this.sliderPos = this.snippet('arrPos') - this.snippet('arrSize', 'int');

if (window.khtml) this.hide();
},

toggle: function() {
this[this.visible ? 'hide' : 'show']();
},

show: function() {
this.rePosition();
this.layout.setStyle('display', 'block');
this.visible = true;
},

hide: function() {
this.layout.setStyles({'display': 'none'});
this.visible = false;
},

closeAll: function() {
Rainbows.each(function(obj) { obj.hide(); });

return this;
},

manualSet: function(color, type) {
if (!type || (type != 'hsb' && type != 'hex')) type = 'rgb';
var rgb, hsb, hex;

if (type == 'rgb') { rgb = color; hsb = color.rgbToHsb(); hex = color.rgbToHex(); } 
else { hex = color; rgb = color.hexToRgb(true); hsb = rgb.rgbToHsb(); }

this.setMooRainbow(rgb);
this.autoSet(hsb);
},

autoSet: function(hsb) {
var curH = this.snippet('curSize', 'int').h;
var curW = this.snippet('curSize', 'int').w;
var oveH = this.layout.overlay.height;
var oveW = this.layout.overlay.width;
var sliH = this.layout.slider.height;
var arwH = this.snippet('arrSize', 'int');
var hue;

var posx = Math.round(((oveW * hsb[1]) / 100) - curW);
var posy = Math.round(- ((oveH * hsb[2]) / 100) + oveH - curH);

var c = Math.round(((sliH * hsb[0]) / 360)); c = (c == 360) ? 0 : c;
var position = sliH - c + this.snippet('slider') - arwH;
hue = [this.sets.hsb[0], 100, 100].hsbToRgb().rgbToHex();

this.layout.cursor.setStyles({'top': posy, 'left': posx});
this.layout.arrows.setStyle('top', position);
this.layout.overlay.setStyle('background-color', hue);
this.sliderPos = this.snippet('arrPos') - arwH;
this.pickerPos.x = this.snippet('curPos').l + curW;
this.pickerPos.y = this.snippet('curPos').t + curH;
},

setMooRainbow: function(color, type) {
if (!type || (type != 'hsb' && type != 'hex')) type = 'rgb';
var rgb, hsb, hex;

if (type == 'rgb') { rgb = color; hsb = color.rgbToHsb(); hex = color.rgbToHex(); } 
else if (type == 'hsb') { hsb = color; rgb = color.hsbToRgb(); hex = rgb.rgbToHex(); }
else { hex = color; rgb = color.hexToRgb(); hsb = rgb.rgbToHsb(); }

this.sets = {
rgb: rgb,
hsb: hsb,
hex: hex
};

if (!$chk(this.pickerPos.x))
this.autoSet(hsb);

this.RedInput.value = rgb[0];
this.GreenInput.value = rgb[1];
this.BlueInput.value = rgb[2];
this.hexInput.value = hex;

this.currentColor = rgb;

this.chooseColor.setStyle('background-color', rgb.rgbToHex());
},

parseColors: function(x, y, z) {
var s = Math.round((x * 100) / this.layout.overlay.width);
var b = 100 - Math.round((y * 100) / this.layout.overlay.height);
var h = 360 - Math.round((z * 360) / this.layout.slider.height) + this.snippet('slider') - this.snippet('arrSize', 'int');
h -= this.snippet('arrSize', 'int');
h = (h >= 360) ? 0 : (h < 0) ? 0 : h;
s = (s > 100) ? 100 : (s < 0) ? 0 : s;
b = (b > 100) ? 100 : (b < 0) ? 0 : b;

return [h, s, b];
},

OverlayEvents: function() {
var lim, curH, curW, inputs;
curH = this.snippet('curSize', 'int').h;
curW = this.snippet('curSize', 'int').w;
inputs = $A(this.arrRGB).concat(this.hexInput);

document.addEvent('click', function() { 
if(this.visible) this.hide(this.layout); 
}.bind(this));

inputs.each(function(el) {
el.addEvent('keydown', this.eventKeydown.bindWithEvent(this, el));
el.addEvent('keyup', this.eventKeyup.bindWithEvent(this, el));
}, this);
[this.element, this.layout].each(function(el) {
el.addEvents({
'click': function(e) { new Event(e).stop(); },
'keyup': function(e) {
e = new Event(e);
if(e.key == 'esc' && this.visible) this.hide(this.layout);
}.bind(this)
}, this);
}, this);

lim = {
x: [0 - curW, (this.layout.overlay.width - curW)],
y: [0 - curH, (this.layout.overlay.height - curH)]
};

this.layout.drag = new Drag(this.layout.cursor, {
limit: lim,
onBeforeStart: this.overlayDrag.bind(this),
onStart: this.overlayDrag.bind(this),
onDrag: this.overlayDrag.bind(this),
snap: 0
});

this.layout.overlay2.addEvent('mousedown', function(e){
e = new Event(e);
this.layout.cursor.setStyles({
'top': e.page.y - this.layout.overlay.getTop() - curH,
'left': e.page.x - this.layout.overlay.getLeft() - curW
});
this.layout.drag.start(e);
}.bind(this));

this.okButton.addEvent('click', function() {
if (this.currentColor == this.options.startColor) {
this.hide();
this.fireEvent('onComplete', [this.sets, this]);
} else {
this.backupColor = this.currentColor;
this.layout.backup.setStyle('background-color', this.backupColor.rgbToHex());
this.hide();
this.fireEvent('onComplete', [this.sets, this]);
}
}.bind(this));

this.cancelButton.addEvent('click', function() {
if(this.visible) this.hide(this.layout); 
}.bind(this));

this.transp.addEvent('click', function () {
this.hide();
this.fireEvent('onComplete', ['transparent', this]);
}.bind(this));
},

overlayDrag: function() {
var curH = this.snippet('curSize', 'int').h;
var curW = this.snippet('curSize', 'int').w;
this.pickerPos.x = this.snippet('curPos').l + curW;
this.pickerPos.y = this.snippet('curPos').t + curH;

this.setMooRainbow(this.parseColors(this.pickerPos.x, this.pickerPos.y, this.sliderPos), 'hsb');
this.fireEvent('onChange', [this.sets, this]);
},

sliderEvents: function() {
var arwH = this.snippet('arrSize', 'int'), lim;

lim = [0 + this.snippet('slider') - arwH, this.layout.slider.height - arwH + this.snippet('slider')];
this.layout.sliderDrag = new Drag(this.layout.arrows, {
limit: {y: lim},
modifiers: {x: false},
onBeforeStart: this.sliderDrag.bind(this),
onStart: this.sliderDrag.bind(this),
onDrag: this.sliderDrag.bind(this),
snap: 0
});

this.layout.slider.addEvent('mousedown', function(e){
e = new Event(e);

this.layout.arrows.setStyle(
'top', e.page.y - this.layout.slider.getTop() + this.snippet('slider') - arwH
);
this.layout.sliderDrag.start(e);
}.bind(this));
},

sliderDrag: function() {
var arwH = this.snippet('arrSize', 'int'), hue;

this.sliderPos = this.snippet('arrPos') - arwH;
this.setMooRainbow(this.parseColors(this.pickerPos.x, this.pickerPos.y, this.sliderPos), 'hsb');
hue = [this.sets.hsb[0], 100, 100].hsbToRgb().rgbToHex();
this.layout.overlay.setStyle('background-color', hue);
this.fireEvent('onChange', [this.sets, this]);
},

backupEvent: function() {
this.layout.backup.addEvent('click', function() {
this.manualSet(this.backupColor);
this.fireEvent('onChange', [this.sets, this]);
}.bind(this));
},

eventKeys: function(e, el, id) {
var wheel, type;
id = (!id) ? el.id : this.arrHSB[0];

if (e.type == 'keydown') {
if (e.key == 'up') wheel = 1;
else if (e.key == 'down') wheel = -1;
else return;
} else if (e.type == Element.Events.mousewheel.base) wheel = (e.wheel > 0) ? 1 : -1;

var rgb = this.sets.rgb, hsb = this.sets.hsb, prefix = this.options.prefix, pass;
var value = (el.value.toInt() || 0) + wheel;
value = (value > 255) ? 255 : (value < 0) ? 0 : value;

switch(el.className) {
case prefix + 'rInput': pass = [value, rgb[1], rgb[2]];break;
case prefix + 'gInput': pass = [rgb[0], value, rgb[2]];break;
case prefix + 'bInput':pass = [rgb[0], rgb[1], value];break;
default : pass = rgb;
}
this.manualSet(pass);
this.fireEvent('onChange', [this.sets, this]);

e.stop();
},

eventKeydown: function(e, el) {
var n = e.code, k = e.key;

if ((!el.className.test(/hexInput/) && !(n >= 48 && n <= 57)) &&
(k!='backspace' && k!='tab' && k !='delete' && k!='left' && k!='right'))
e.stop();
},

eventKeyup: function(e, el) {
var n = e.code, k = e.key, pass, prefix, chr = el.value.charAt(0);

if (!$chk(el.value)) return;
if (el.className.test(/hexInput/)) {
if (chr != "#" && el.value.length != 6) return;
if (chr == '#' && el.value.length != 7) return;
} else {
if (!(n >= 48 && n <= 57) && (!['backspace', 'tab', 'delete', 'left', 'right'].contains(k)) && el.value.length > 3) return;
}

prefix = this.options.prefix;

if (el.className.test(/(rInput|gInput|bInput)/)) {
if (el.value  < 0 || el.value > 255) return;
switch(el.className){
case prefix + 'rInput': pass = [el.value, this.sets.rgb[1], this.sets.rgb[2]]; break;
case prefix + 'gInput': pass = [this.sets.rgb[0], el.value, this.sets.rgb[2]]; break;
case prefix + 'bInput': pass = [this.sets.rgb[0], this.sets.rgb[1], el.value]; break;
default : pass = this.sets.rgb;
}
this.manualSet(pass);
this.fireEvent('onChange', [this.sets, this]);
} else {
pass = el.value.hexToRgb(true);
if (isNaN(pass[0])||isNaN(pass[1])||isNaN(pass[2])) return;

if ($chk(pass)) {
this.manualSet(pass);
this.fireEvent('onChange', [this.sets, this]);
}
}

},

doLayout: function() {
var id = this.options.id, prefix = this.options.prefix;
var idPrefix = id + ' .' + prefix;

this.layout = new Element('div', {
'styles': {'display': 'block', 'position': 'absolute'},
'id': id
}).inject(document.body);

Rainbows.push(this);

var box = new Element('div', {
'styles':  {'position': 'relative'},
'class': prefix + 'box'
}).inject(this.layout);

var div = new Element('div', {
'styles': {'position': 'absolute', 'overflow': 'hidden'},
'class': prefix + 'overlayBox'
}).inject(box);

var ar = new Element('div', {
'styles': {'position': 'absolute', 'zIndex': 1},
'class': prefix + 'arrows'
}).inject(box);
ar.width = ar.getStyle('width').toInt();
ar.height = ar.getStyle('height').toInt();

var ov = new Element('img', {
'styles': {'background-color': '#fff', 'position': 'relative', 'zIndex': 2},
'src': this.options.imgPath + 'moor_woverlay.png',
'class': prefix + 'overlay'
}).inject(div);

var ov2 = new Element('img', {
'styles': {'position': 'absolute', 'top': 0, 'left': 0, 'zIndex': 2},
'src': this.options.imgPath + 'moor_boverlay.png',
'class': prefix + 'overlay'
}).inject(div);

if (window.ie6) {
div.setStyle('overflow', '');
var src = ov.src;
ov.src = this.options.imgPath + 'blank.gif';
ov.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
src = ov2.src;
ov2.src = this.options.imgPath + 'blank.gif';
ov2.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')";
}
ov.width = ov2.width = div.getStyle('width').toInt();
ov.height = ov2.height = div.getStyle('height').toInt();

var cr = new Element('div', {
'styles': {'overflow': 'hidden', 'position': 'absolute', 'zIndex': 2},
'class': prefix + 'cursor'
}).inject(div);
cr.width = cr.getStyle('width').toInt();
cr.height = cr.getStyle('height').toInt();

var sl = new Element('img', {
'styles': {'position': 'absolute', 'z-index': 2},
'src': this.options.imgPath + 'moor_slider.png',
'class': prefix + 'slider'
}).inject(box);
this.layout.slider = document.getElement('#' + idPrefix + 'slider');
sl.width = sl.getStyle('width').toInt();
sl.height = sl.getStyle('height').toInt();

new Element('div', {
'styles': {'position': 'absolute'},
'class': prefix + 'colorBox'
}).inject(box);

new Element('div', {
'styles': {'zIndex': 2, 'position': 'absolute'},
'class': prefix + 'chooseColor'
}).inject(box);

this.layout.backup = new Element('div', {
'styles': {'zIndex': 2, 'position': 'absolute', 'cursor': 'pointer'},
'class': prefix + 'currentColor'
}).inject(box);

var R = new Element('label').inject(box).setStyle('position', 'absolute');
var G = R.clone().inject(box).addClass(prefix + 'gLabel').appendText('G: ');
var B = R.clone().inject(box).addClass(prefix + 'bLabel').appendText('B: ');
R.appendText('R: ').addClass(prefix + 'rLabel');

var inputR = new Element('input');
var inputG = inputR.clone().inject(G).addClass(prefix + 'gInput');
var inputB = inputR.clone().inject(B).addClass(prefix + 'bInput');
inputR.inject(R).addClass(prefix + 'rInput');

var hex = new Element('label').inject(box).setStyle('position', 'absolute').addClass(prefix + 'hexLabel').appendText('Wert: ').adopt(new Element('input').addClass(prefix + 'hexInput'));

var ok = new Element('input', {
'styles': {'position': 'absolute'},
'type': 'button',
'value': 'Auswählen',
'class': prefix + 'okButton'
}).inject(box);

var cancel = new Element('input', {
'styles': {'position': 'absolute'},
'type': 'button',
'value': 'Abbrechen',
'class': prefix + 'cancelButton'
}).inject(box);

var transp = new Element('a', {'style': {'position': 'absolute'}, 'href': '#', 'class': prefix + 'transp'}).set('text', 'Transparenz').inject(box);

this.rePosition();

var overlays = $$('#' + idPrefix + 'overlay');
this.layout.overlay = overlays[0];
this.layout.overlay2 = overlays[1];
this.layout.cursor = document.getElement('#' + idPrefix + 'cursor');
this.layout.arrows = document.getElement('#' + idPrefix + 'arrows');
this.chooseColor = document.getElement('#' + idPrefix + 'chooseColor');
this.layout.backup = document.getElement('#' + idPrefix + 'currentColor');
this.RedInput = document.getElement('#' + idPrefix + 'rInput');
this.GreenInput = document.getElement('#' + idPrefix + 'gInput');
this.BlueInput = document.getElement('#' + idPrefix + 'bInput');
this.hexInput = document.getElement('#' + idPrefix + 'hexInput');

this.arrRGB = [this.RedInput, this.GreenInput, this.BlueInput];
this.okButton = document.getElement('#' + idPrefix + 'okButton');
this.cancelButton = document.getElement('#' + idPrefix + 'cancelButton');
this.transp = box.getElement('.' + prefix + 'transp');

if (!window.khtml) this.hide();
},
rePosition: function() {
var coords = this.element.getCoordinates();
this.layout.setStyles({
'left': coords.left,
'top': coords.top + coords.height + 1
});
},

snippet: function(mode, type) {
var size; type = (type) ? type : 'none';

switch(mode) {
case 'arrPos':
var t = this.layout.arrows.getStyle('top').toInt();
size = t;
break;
case 'arrSize': 
var h = this.layout.arrows.height;
h = (type == 'int') ? (h/2).toInt() : h;
size = h;
break;
case 'curPos':
var l = this.layout.cursor.getStyle('left').toInt();
var t = this.layout.cursor.getStyle('top').toInt();
size = {'l': l, 't': t};
break;
case 'slider':
var t = this.layout.slider.getStyle('marginTop').toInt();
size = t;
break;
default :
var h = this.layout.cursor.height;
var w = this.layout.cursor.width;
h = (type == 'int') ? (h/2).toInt() : h;
w = (type == 'int') ? (w/2).toInt() : w;
size = {w: w, h: h};
};
return size;
}
});

MooRainbow.implement(new Options);
MooRainbow.implement(new Events);




/*
 * Farbauswahl aktivieren
 */
window.addEvent('load', function() {

//Inhaltsbereich durchlaufen
$$('.color').each(function(item) {

var colorHex = [77, 77, 77];
if (item.value != '' && item.value != 'transparent') colorHex = item.value.hexToRgb(true);

new MooRainbow(item.getProperty('id'), {
id: item.getProperty('id')+'Picker',
imgPath: config["pathSystem"]+'images/',
startColor: colorHex,
onComplete: function(color) {
if (color == 'transparent') {
item.setStyles({'background': 'transparent', 'color': '#4D4D4D', 'border-style': 'dotted'});
item.value = 'transparent';
} else {
item.setStyles({'background': color.hex, 'color': color.hex, 'border-style': 'solid'});
item.value = color.hex.toUpperCase();
}
}
});

});


});


var MessageBox = {

init: function(options) {
this.options = Object.extend({
resizeTransition: Fx.Transitions.sineInOut,
resizeDuration: 400,
initialWidth: 450,
initialHeight: 100,
animateCaption: false
}, options || {});

this.eventPosition = this.position.bind(this);

this.overlay = new Element('div').setProperty('id', 'lbOverlay').injectInside(document.body);

this.center = new Element('div').setProperty('id', 'lbCenter').setStyles({width: this.options.initialWidth+'px', height: 'auto', marginLeft: '-'+(this.options.initialWidth/2)+'px', display: 'none'}).injectInside(document.body);
this.buttons = new Element('div').setProperty('id', 'lbButtons').injectInside(this.center);

this.overlay.onclick = this.close.bind(this);

this.isOpen = this.isLoading = false;

this.fx = {
overlay: new Fx.Tween(this.overlay, {
property: 'opacity',
onStart: Events.prototype.clearChain,
duration: 500,
link: 'cancel'
}).set(0)
};
$(document.body).adopt(this.overlay);


},

open: function() {
this.position();
this.setup(true);
this.top = window.getScrollTop() + (window.getHeight() / 15) + 100;
this.center.setStyles({top: this.top+'px', display: ''});
this.fx.overlay.start(0.8);

this.isOpen = true;

return false;
},

position: function() {
this.overlay.setStyles({top: window.getScrollTop()+'px', height: window.getHeight()+'px'});
},

setup: function(open) {
var elements = $A(document.getElementsByTagName('object'));
if (window.ie) elements.extend(document.getElementsByTagName('select'));
elements.each(function(el){ el.style.visibility = open ? 'hidden' : ''; });
var fn = open ? 'addEvent' : 'removeEvent';
window[fn]('scroll', this.eventPosition)[fn]('resize', this.eventPosition);
this.step = 0;
},

    //Bestaetitung zu einer Aktion abfragen
confirm: function(confirmText, onComplete) {

this.buttons.set('html', '');

this.open();

this.confirmText = new Element('p');
this.confirmText.set('html', confirmText);

this.confirmButtonYes = new Element('input', {
'id': 'confirmButtonYes',
'type': 'submit',
'value': lang['tooltip.yes'],
'class': 'button',
'styles': {
'margin-right': '10px'
}
});

this.confirmButtonNo = new Element('input', {
'type': 'submit',
'value': lang["tooltip.no"],
'class': 'buttonsec'
});

this.confirmButtonYes.addEvent('click', function() {
this.close();
onComplete(true);
}.bind(this));

this.confirmButtonNo.addEvent('click', function() {
this.close();
return false;
}.bind(this));

this.confirmText.injectInside(this.buttons);
this.confirmButtonYes.injectInside(this.buttons);
this.confirmButtonNo.injectInside(this.buttons);

$('confirmButtonYes').focus();
    },

    //Status anzeigen
status: function(string) {

this.buttons.set('html', '');

this.open();

this.confirmText = new Element('div');
this.confirmText.set('html', string);

this.confirmButtonOk = new Element('input', {
'id': 'confirmButtonOk',
'type': 'submit',
'value': lang["tooltip.close"],
'class': 'button',
'styles': {
'margin-top': '10px',
'margin-right': '10px'
}
});

this.confirmButtonOk.addEvent('click', function() {
this.close();
                return false;
}.bind(this));

this.confirmText.injectInside(this.buttons);
this.confirmButtonOk.injectInside(this.buttons);

$('confirmButtonOk').focus();

    },

    //Eingabemaske anzeigen
input: function(introStr, buttonStr, valueDefault, onComplete) {

this.buttons.set('html', '');

this.open();

this.confirmText = new Element('p');
this.confirmText.set('html', introStr);

this.messageTextarea = new Element('textarea', {
'id': 'messageTextarea',
'class': 'text',
'value': valueDefault,
'styles': {
'display': 'block',
'height': '100px',
'width': '100%',
'margin-bottom': '20px'
}
});

this.confirmButtonYes = new Element('input', {
'id': 'confirmButtonYes',
'type': 'submit',
'value': buttonStr,
'class': 'button',
'styles': {
'margin-right': '10px'
}
});

this.confirmButtonNo = new Element('input', {
'type': 'submit',
'value': lang["tooltip.cancel"],
'class': 'buttonsec'
});

this.confirmButtonYes.addEvent('click', function() {
this.close();
                onComplete($('messageTextarea').value);
}.bind(this));

this.confirmButtonNo.addEvent('click', function() {
this.close();
                return false;
}.bind(this));

this.confirmText.injectInside(this.buttons);
this.messageTextarea.injectInside(this.buttons);
this.confirmButtonYes.injectInside(this.buttons);
this.confirmButtonNo.injectInside(this.buttons);

$('confirmButtonYes').focus();
    },

close: function(e) {
var stoppable = ($type(e) == 'event');
if (stoppable) e.stop();
if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
this.fx.overlay.start(0);
this.center.setStyle('display', 'none');
this.isOpen = false;
return this;
}

};

window.addEvent('load', MessageBox.init.bind(MessageBox));

/**
Script: Slideshow.js
Slideshow - A javascript class for Mootools to stream and animate the presentation of images on your website.

License:
MIT-style license.

Copyright:
Copyright (c) 2008 [Aeron Glemann](http://www.electricprism.com/aeron/).

*/

Slideshow = new Class({
Implements: [Chain, Events, Options],

options: {
captions: false,
center: true,
classes: [],
controller: false,
delay: 2000,
duration: 750,
fast: false,
height: false,
href: '',
hu: '',
linked: false,
loader: {'animate': ['css/loader-#.png', 12]},
loop: true,
match: /\?slide=(\d+)$/,
overlap: true,
paused: false,
properties: ['href', 'rel', 'rev', 'title'],
random: false,
replace: [/(\.[^\.]+)$/, 't$1'],
resize: 'width',
slide: 0,
thumbnails: false,
titles: true,
transition: function(p){return -(Math.cos(Math.PI * p) - 1) / 2;},
width: false
},

initialize: function(el, data, options){
this.setOptions(options);
this.slideshow = $(el);
if (!this.slideshow) 
return;
this.slideshow.set('styles', {'display': 'block', 'position': 'relative', 'z-index': 0});
var match = window.location.href.match(this.options.match);
this.slide = (this.options.match && match) ? match[1].toInt() : this.options.slide;
this.counter = this.delay = this.transition = 0;
this.direction = 'left';
this.paused = false;
if (!this.options.overlap)
this.options.duration *= 2;
var anchor = this.slideshow.getElement('a') || new Element('a');
if (!this.options.href)
this.options.href = anchor.get('href') || '';
if (this.options.hu.length && !this.options.hu.test(/\/$/)) 
this.options.hu += '/';
if (this.options.fast === true)
this.options.fast = 2;

// styles

var keys = ['slideshow', 'first', 'prev', 'play', 'pause', 'next', 'last', 'images', 'captions', 'controller', 'thumbnails', 'hidden', 'visible', 'inactive', 'active', 'loader'];
var values = keys.map(function(key, i){
return this.options.classes[i] || key;
}, this);
this.classes = values.associate(keys);
this.classes.get = function(){
var str = '.' + this.slideshow;
for (var i = 0, l = arguments.length; i < l; i++)
str += ('-' + this[arguments[i]]);
return str;
}.bind(this.classes);

// data

if (!data){
this.options.hu = '';
data = {};
var thumbnails = this.slideshow.getElements(this.classes.get('thumbnails') + ' img');
this.slideshow.getElements(this.classes.get('images') + ' img').each(function(img, i){
var src = img.get('src');
var caption = $pick(img.get('alt'), img.get('title'), '');
var parent = img.getParent();
var properties = (parent.get('tag') == 'a') ? parent.getProperties : {};
var href = img.getParent().get('href') || '';
var thumbnail = (thumbnails[i]) ? thumbnails[i].get('src') : '';
data[src] = {'caption': caption, 'href': href, 'thumbnail': thumbnail};
});
}
var loaded = this.load(data);
if (!loaded)
return; 

// events

this.events = $H({'keydown': [], 'keyup': [], 'mousemove': []});
var keyup = function(e){
switch(e.key){
case 'left': 
this.prev(e.shift); break;
case 'right': 
this.next(e.shift); break;
case 'p': 
this.pause(); break;
}
}.bind(this);
this.events.keyup.push(keyup);
document.addEvent('keyup', keyup);

// required elements
var el = this.slideshow.getElement(this.classes.get('images'));
var images = (el) ? el.empty() : new Element('div', {'class': this.classes.get('images').substr(1)}).inject(this.slideshow);
var div = images.getSize();
this.height = this.options.height || div.y;
this.width = this.options.width || div.x;
images.set({'styles': {'display': 'block', 'height': this.height, 'overflow': 'hidden', 'position': 'relative', 'width': this.width}});
this.slideshow.store('images', images);
this.a = this.image = this.slideshow.getElement('img') || new Element('img');
if (Browser.Engine.trident && Browser.Engine.version > 4)
this.a.style.msInterpolationMode = 'bicubic';
this.a.set('styles', {'display': 'none', 'position': 'absolute', 'zIndex': 1});
this.b = this.a.clone();
[this.a, this.b].each(function(img){
anchor.clone().cloneEvents(anchor).grab(img).inject(images);
});

// optional elements

if (this.options.captions)
 this._captions();
if (this.options.controller)
this._controller();
if (this.options.loader)
 this._loader();
if (this.options.thumbnails)
this._thumbnails();

// begin show

this._preload();
},

go: function(n, direction){
if ((this.slide - 1 + this.data.images.length) % this.data.images.length == n || $time() < this.transition)
return;
$clear(this.timer);
this.delay = 0;
this.direction = (direction) ? direction : ((n < this.slide) ? 'right' : 'left');
this.slide = n;
if (this.preloader) 
this.preloader = this.preloader.destroy();
this._preload(this.options.fast == 2 || (this.options.fast == 1 && this.paused));
},

first: function(){
this.prev(true); 
},

prev: function(first){
var n = 0;
if (!first){
if (this.options.random){

// if it's a random show get the previous slide from the showed array

if (this.showed.i < 2)
return;
this.showed.i -= 2;
n = this.showed.array[this.showed.i];
}
else
n = (this.slide - 2 + this.data.images.length) % this.data.images.length;
}
this.go(n, 'right');
},

pause: function(p){
if ($chk(p))
this.paused = (p) ? false : true;
if (this.paused){
this.paused = false;
this.delay = this.transition = 0;
this.timer = this._preload.delay(100, this);
[this.a, this.b].each(function(img){
['morph', 'tween'].each(function(p){
if (this.retrieve(p)) this.get(p).resume();
}, img);
});
if (this.options.controller)
this.slideshow.getElement('.' + this.classes.pause).removeClass(this.classes.play);
} 
else {
this.paused = true;
this.delay = Number.MAX_VALUE;
this.transition = 0;
$clear(this.timer);
[this.a, this.b].each(function(img){
['morph', 'tween'].each(function(p){
if (this.retrieve(p)) this.get(p).pause();
}, img);
});
if (this.options.controller)
this.slideshow.getElement('.' + this.classes.pause).addClass(this.classes.play);
}
},

next: function(last){
var n = (last) ? this.data.images.length - 1 : this.slide;
this.go(n, 'left');
},

last: function(){
this.next(true); 
},

load: function(data){
this.firstrun = true;
this.showed = {'array': [], 'i': 0};
if ($type(data) == 'array'){
this.options.captions = false;
data = new Array(data.length).associate(data.map(function(image, i){ return image + '?' + i })); 
}
this.data = {'images': [], 'captions': [], 'hrefs': [], 'thumbnails': []};
for (var image in data){
var obj = data[image] || {};
var caption = (obj.caption) ? obj.caption.trim() : '';
var href = (obj.href) ? obj.href.trim() : ((this.options.linked) ? this.options.hu + image : this.options.href);
var thumbnail = (obj.thumbnail) ? obj.thumbnail.trim() : image.replace(this.options.replace[0], this.options.replace[1]);
this.data.images.push(image);
this.data.captions.push(caption);
this.data.hrefs.push(href);
this.data.thumbnails.push(thumbnail);
}
if (this.options.random)
this.slide = $random(0, this.data.images.length - 1);

// only run when data is loaded dynamically into an existing slideshow instance

if (this.options.thumbnails && this.slideshow.retrieve('thumbnails'))
this._thumbnails();
if (this.slideshow.retrieve('images')){
[this.a, this.b].each(function(img){
['morph', 'tween'].each(function(p){
if (this.retrieve(p)) this.get(p).cancel();
}, img);
});
this.slide = this.transition = 0;
this.go(0);
}
return this.data.images.length;
},

destroy: function(p){
this.events.each(function(array, e){
array.each(function(fn){ document.removeEvent(e, fn); });
});
this.pause(1);
if (this.options.loader)
$clear(this.slideshow.retrieve('loader').retrieve('timer'));
if (this.options.thumbnails)
$clear(this.slideshow.retrieve('thumbnails').retrieve('timer'));
this.slideshow.uid = Native.UID++;
if (p)
this.slideshow[p]();
},

_preload: function(fast){
if (!this.preloader)
 this.preloader = new Asset.image(this.options.hu + this.data.images[this.slide], {'onload': function(){
this.store('loaded', true);
}});
if (this.preloader.retrieve('loaded') && $time() > this.delay && $time() > this.transition){
if (this.stopped){
if (this.options.captions)
this.slideshow.retrieve('captions').get('morph').cancel().start(this.classes.get('captions', 'hidden'));
this.pause(1);
if (this.end)
this.fireEvent('end');
this.stopped = this.end = false;
return;
}
this.image = (this.counter % 2) ? this.b : this.a;
this.image.set('styles', {'display': 'block', 'height': 'auto', 'visibility': 'hidden', 'width': 'auto', 'zIndex': this.counter});
['src', 'height', 'width'].each(function(prop){
this.image.set(prop, this.preloader.get(prop));
}, this);
this._resize(this.image);
this._center(this.image);
var anchor = this.image.getParent();
if (this.data.hrefs[this.slide])
anchor.set('href', this.data.hrefs[this.slide]);
else
anchor.erase('href');
var text = (this.data.captions[this.slide])
? this.data.captions[this.slide].replace(/<.+?>/gm, '').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, "'") 
: '';
this.image.set('alt', text);
if (this.options.titles)
anchor.set('title', text);
if (this.options.loader)
this.slideshow.retrieve('loader').fireEvent('hide');
if (this.options.captions)
this.slideshow.retrieve('captions').fireEvent('update', fast);
if (this.options.thumbnails)
this.slideshow.retrieve('thumbnails').fireEvent('update', fast);
this._show(fast);
this._loaded();
} 
else {
if ($time() > this.delay && this.options.loader)
this.slideshow.retrieve('loader').fireEvent('show');
this.timer = (this.paused && this.preloader.retrieve('loaded')) ? null : this._preload.delay(100, this, fast); 
}
},

_show: function(fast){
if (!this.image.retrieve('morph')){
var options = (this.options.overlap) ? {'duration': this.options.duration, 'link': 'cancel'} : {'duration': this.options.duration / 2, 'link': 'chain'};
$$(this.a, this.b).set('morph', $merge(options, {'onStart': this._start.bind(this), 'onComplete': this._complete.bind(this), 'transition': this.options.transition}));
}
var hidden = this.classes.get('images', ((this.direction == 'left') ? 'next' : 'prev'));
var visible = this.classes.get('images', 'visible');
var img = (this.counter % 2) ? this.a : this.b;
if (fast){
img.get('morph').cancel().set(hidden);
this.image.get('morph').cancel().set(visible);
} 
else {
if (this.options.overlap){
img.get('morph').set(visible);
this.image.get('morph').set(hidden).start(visible);
} 
else{
var fn = function(hidden, visible){
this.image.get('morph').set(hidden).start(visible);
}.pass([hidden, visible], this);
hidden = this.classes.get('images', ((this.direction == 'left') ? 'prev' : 'next'));
img.get('morph').set(visible).start(hidden).chain(fn);
}
}
},

_loaded: function(){
this.counter++;
this.delay = (this.paused) ? Number.MAX_VALUE : $time() + this.options.duration + this.options.delay;
this.direction = 'left';
this.transition = (this.options.fast == 2 || (this.options.fast == 1 && this.paused)) ? 0 : $time() + this.options.duration;
if (this.slide + 1 == this.data.images.length && !this.options.loop && !this.options.random)
this.stopped = this.end = true;
if (this.options.random){
this.showed.i++;
if (this.showed.i >= this.showed.array.length){
var n = this.slide;
if (this.showed.array.getLast() != n) this.showed.array.push(n);
while (this.slide == n)
this.slide = $random(0, this.data.images.length - 1);
}
else
this.slide = this.showed.array[this.showed.i];
}
else
this.slide = (this.slide + 1) % this.data.images.length;
if (this.image.getStyle('visibility') != 'visible')
(function(){ this.image.setStyle('visibility', 'visible'); }).delay(1, this);
if (this.preloader) 
this.preloader = this.preloader.destroy();
this._preload();
},

_center: function(img){
if (this.options.center){
var size = img.getSize();
img.set('styles', {'left': (size.x - this.width) / -2, 'top': (size.y - this.height) / -2});
}
},

_resize: function(img){
if (this.options.resize){
var h = this.preloader.get('height'), w = this.preloader.get('width');
var dh = this.height / h, dw = this.width / w, d;
if (this.options.resize == 'length')
d = (dh > dw) ? dw : dh;
else
d = (dh > dw) ? dh : dw;
img.set('styles', {height: Math.ceil(h * d), width: Math.ceil(w * d)});
}
},

_start: function(){
this.fireEvent('start');
},

_complete: function(){
if (this.firstrun && this.options.paused){
this.firstrun = false;
this.pause(1);
}
this.fireEvent('complete');
},

_captions: function(){
 if (this.options.captions === true) 
 this.options.captions = {};
var el = this.slideshow.getElement(this.classes.get('captions'));
var captions = (el) ? el.empty() : new Element('div', {'class': this.classes.get('captions').substr(1)}).inject(this.slideshow);
captions.set({
'events': {
'update': function(fast){
var captions = this.slideshow.retrieve('captions');
var empty = (this.data.captions[this.slide] === '');
if (fast){
var p = (empty) ? 'hidden' : 'visible';
captions.set('html', this.data.captions[this.slide]).get('morph').cancel().set(this.classes.get('captions', p));
}
else {
var fn = (empty) ? $empty : function(n){
this.slideshow.retrieve('captions').set('html', this.data.captions[n]).morph(this.classes.get('captions', 'visible'))
}.pass(this.slide, this);
captions.get('morph').cancel().start(this.classes.get('captions', 'hidden')).chain(fn);
}
}.bind(this)
},
'morph': $merge(this.options.captions, {'link': 'chain'})
});
this.slideshow.store('captions', captions);
},

_controller: function(){
 if (this.options.controller === true)
 this.options.controller = {};
var el = this.slideshow.getElement(this.classes.get('controller'));
var controller = (el) ? el.empty() : new Element('div', {'class': this.classes.get('controller').substr(1)}).inject(this.slideshow);
var ul = new Element('ul').inject(controller);
$H({'first': 'Shift + Leftwards Arrow', 'prev': 'Leftwards Arrow', 'pause': 'P', 'next': 'Rightwards Arrow', 'last': 'Shift + Rightwards Arrow'}).each(function(accesskey, action){
var li = new Element('li', {
'class': (action == 'pause' && this.options.paused) ? this.classes.play + ' ' + this.classes[action] : this.classes[action]
}).inject(ul);
var a = this.slideshow.retrieve(action, new Element('a', {
'title': ((action == 'pause') ? this.classes.play.capitalize() + ' / ' : '') + this.classes[action].capitalize() + ' [' + accesskey + ']'
}).inject(li));
a.set('events', {
'click': function(action){this[action]();}.pass(action, this),
'mouseenter': function(active){this.addClass(active);}.pass(this.classes.active, a),
'mouseleave': function(active){this.removeClass(active);}.pass(this.classes.active, a)
});
}, this);
controller.set({
'events': {
'hide': function(hidden){  
if (!this.retrieve('hidden'))
this.store('hidden', true).morph(hidden);
}.pass(this.classes.get('controller', 'hidden'), controller),
'show': function(visible){  
if (this.retrieve('hidden'))
this.store('hidden', false).morph(visible);
}.pass(this.classes.get('controller', 'visible'), controller)
},
'morph': $merge(this.options.controller, {'link': 'cancel'})
}).store('hidden', false);
var keydown = function(e){
if (['left', 'right', 'p'].contains(e.key)){
var controller = this.slideshow.retrieve('controller');
if (controller.retrieve('hidden'))
controller.get('morph').set(this.classes.get('controller', 'visible'));
switch(e.key){
case 'left': 
this.slideshow.retrieve((e.shift) ? 'first' : 'prev').fireEvent('mouseenter'); break;
case 'right':
this.slideshow.retrieve((e.shift) ? 'last' : 'next').fireEvent('mouseenter'); break;
default:
this.slideshow.retrieve('pause').fireEvent('mouseenter'); break;
}
}
}.bind(this);
this.events.keydown.push(keydown);
var keyup = function(e){
if (['left', 'right', 'p'].contains(e.key)){
var controller = this.slideshow.retrieve('controller');
if (controller.retrieve('hidden'))
controller.store('hidden', false).fireEvent('hide'); 
switch(e.key){
case 'left': 
this.slideshow.retrieve((e.shift) ? 'first' : 'prev').fireEvent('mouseleave'); break;
case 'right': 
this.slideshow.retrieve((e.shift) ? 'last' : 'next').fireEvent('mouseleave'); break;
default:
this.slideshow.retrieve('pause').fireEvent('mouseleave'); break;
}
}
}.bind(this);
this.events.keyup.push(keyup);
var mousemove = function(e){
var images = this.slideshow.retrieve('images').getCoordinates();
if (e.page.x > images.left && e.page.x < images.right && e.page.y > images.top && e.page.y < images.bottom)
this.slideshow.retrieve('controller').fireEvent('show');
else
this.slideshow.retrieve('controller').fireEvent('hide');
}.bind(this);
this.events.mousemove.push(mousemove);
document.addEvents({'keydown': keydown, 'keyup': keyup, 'mousemove': mousemove});
this.slideshow.retrieve('controller', controller).fireEvent('hide');
},

_loader: function(){
 if (this.options.loader === true) 
 this.options.loader = {};
var loader = new Element('div', {
'class': this.classes.get('loader').substr(1),
'morph': $merge(this.options.loader, {'link': 'cancel'})
}).store('hidden', false).store('i', 1).inject(this.slideshow.retrieve('images'));
if (this.options.loader.animate){
for (var i = 0; i < this.options.loader.animate[1]; i++)
img = new Asset.image(this.options.loader.animate[0].replace(/#/, i));
if (Browser.Engine.trident4 && this.options.loader.animate[0].contains('png'))
loader.setStyle('backgroundImage', 'none');
}
loader.set('events', {
'animate': function(){  
var loader = this.slideshow.retrieve('loader');
var i = (loader.retrieve('i').toInt() + 1) % this.options.loader.animate[1];
loader.store('i', i);
var img = this.options.loader.animate[0].replace(/#/, i);
if (Browser.Engine.trident4 && this.options.loader.animate[0].contains('png'))
loader.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + img + '", sizingMethod="scale")';
else 
loader.setStyle('backgroundImage', 'url(' + img + ')');
}.bind(this),
'hide': function(){  
var loader = this.slideshow.retrieve('loader');
if (!loader.retrieve('hidden')){
loader.store('hidden', true).morph(this.classes.get('loader', 'hidden'));
if (this.options.loader.animate)
$clear(loader.retrieve('timer'));
}
}.bind(this),
'show': function(){  
var loader = this.slideshow.retrieve('loader');
if (loader.retrieve('hidden')){
loader.store('hidden', false).morph(this.classes.get('loader', 'visible'));
if (this.options.loader.animate)
loader.store('timer', function(){this.fireEvent('animate');}.periodical(50, loader));
}
}.bind(this)
});
this.slideshow.retrieve('loader', loader).fireEvent('hide');
},

_thumbnails: function(){
 if (this.options.thumbnails === true) 
 this.options.thumbnails = {}; 
var el = this.slideshow.getElement(this.classes.get('thumbnails'));
var thumbnails = (el) ? el.empty() : new Element('div', {'class': this.classes.get('thumbnails').substr(1)}).inject(this.slideshow);
thumbnails.setStyle('overflow', 'hidden');
var ul = new Element('ul', {'tween': {'link': 'cancel'}}).inject(thumbnails);
this.data.thumbnails.each(function(thumbnail, i){
var li = new Element('li').inject(ul);
var a = new Element('a', {
'events': {
'click': function(i){
this.go(i); 
return false; 
}.pass(i, this),
'loaded': function(){
this.data.thumbnails.pop();
if (!this.data.thumbnails.length){
var div = thumbnails.getCoordinates();
var props = thumbnails.retrieve('props');
var limit = 0, pos = props[1], size = props[2];
thumbnails.getElements('li').each(function(li){
var li = li.getCoordinates();
if (li[pos] > limit) limit = li[pos];
}, this);
thumbnails.store('limit', div[size] + div[props[0]] - limit);
}
}.bind(this)
},
'href': this.options.hu + this.data.images[i],
'morph': $merge(this.options.thumbnails, {'link': 'cancel'})
}).inject(li);
if (this.data.captions[i] && this.options.titles)
a.set('title', this.data.captions[i].replace(/<.+?>/gm, '').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, "'"));
var img = new Asset.image(this.options.hu + thumbnail, {
'onload': function(){this.fireEvent('loaded');}.bind(a) 
}).inject(a);
}, this);
thumbnails.set('events', {
'scroll': function(n, fast){
var div = this.getCoordinates();
var ul = this.getElement('ul').getPosition();
var props = this.retrieve('props');
var axis = props[3], delta, pos = props[0], size = props[2], value;
var tween = this.getElement('ul').get('tween', {'property': pos});
if ($chk(n)){
var li = this.getElements('li')[n].getCoordinates();
delta = div[pos] + (div[size] / 2) - (li[size] / 2) - li[pos]
value = (ul[axis] - div[pos] + delta).limit(this.retrieve('limit'), 0);
if (fast)
tween.set(value);
else
tween.start(value);
}
else{
var area = div[props[2]] / 3, page = this.retrieve('page'), velocity = -0.2;
if (page[axis] < (div[pos] + area))
delta = (page[axis] - div[pos] - area) * velocity;
else if (page[axis] > (div[pos] + div[size] - area))
delta = (page[axis] - div[pos] - div[size] + area) * velocity;
if (delta){
value = (ul[axis] - div[pos] + delta).limit(this.retrieve('limit'), 0);
tween.set(value);
}
}
}.bind(thumbnails),
'update': function(fast){
var thumbnails = this.slideshow.retrieve('thumbnails');
thumbnails.getElements('a').each(function(a, i){
if (i == this.slide){
if (!a.retrieve('active', false)){
a.store('active', true);
var active = this.classes.get('thumbnails', 'active');
if (fast) a.get('morph').set(active);
else a.morph(active);
}
} 
else {
if (a.retrieve('active', true)){
a.store('active', false);
var inactive = this.classes.get('thumbnails', 'inactive');
if (fast) a.get('morph').set(inactive);
else a.morph(inactive);
}
}
}, this);
if (!thumbnails.retrieve('mouseover'))
thumbnails.fireEvent('scroll', [this.slide, fast]);
}.bind(this)
})
var div = thumbnails.getCoordinates();
thumbnails.store('props', (div.height > div.width) ? ['top', 'bottom', 'height', 'y'] : ['left', 'right', 'width', 'x']);
var mousemove = function(e){
var div = this.getCoordinates();
if (e.page.x > div.left && e.page.x < div.right && e.page.y > div.top && e.page.y < div.bottom){
this.store('page', e.page);
if (!this.retrieve('mouseover')){
this.store('mouseover', true);
this.store('timer', function(){this.fireEvent('scroll');}.periodical(50, this));
}
}
else {
if (this.retrieve('mouseover')){
this.store('mouseover', false);
$clear(this.retrieve('timer'));
}
}
}.bind(thumbnails);
this.events.mousemove.push(mousemove);
document.addEvent('mousemove', mousemove);
this.slideshow.store('thumbnails', thumbnails);
}
});


/**
Script: Slideshow.KenBurns.js
Slideshow.KenBurns - KenBurns extension for Slideshow, includes zooming and panning effects.

License:
MIT-style license.

Copyright:
Copyright (c) 2008 [Aeron Glemann](http://www.electricprism.com/aeron/).

Dependencies:
Slideshow.
*/

Slideshow.KenBurns = new Class({
Extends: Slideshow,

options: {
pan: [100, 100],
zoom: [50, 50]
},


initialize: function(el, data, options){
options.overlap = true;
options.resize = true;
['pan', 'zoom'].each(function(p){
if ($chk(this[p])){
if ($type(this[p]) != 'array') this[p] = [this[p], this[p]];
this[p].map(function(n){return (n.toInt() || 0).limit(0, 100);});
}
}, options);
this.parent(el, data, options);
},

_show: function(fast){
if (!this.image.retrieve('morph')){
['a', 'b'].each(function(image){
this[image].set('tween', {
'duration': this.options.duration, 'link': 'cancel', 'onStart': this._start.bind(this), 'onComplete': this._complete.bind(this), 'property': 'opacity'}
).get('morph', {
'duration': (this.options.delay + this.options.duration * 2), 'link': 'cancel', 'transition': $arguments(0)}
);
}, this);
}
this.image.set('styles', {'bottom': 'auto', 'left': 'auto', 'right': 'auto', 'top': 'auto'});
var props = ['top left', 'top right', 'bottom left', 'bottom right'][this.counter % 4].split(' ');
props.each(function(prop){this.image.setStyle(prop, 0);}, this);
dh = this.height / this.preloader.height;
dw = this.width / this.preloader.width;
delta = (dw > dh) ? dw : dh;
var values = {};
var zoom = ($random.run(this.options.zoom) / 100.0) + 1;
var pan = Math.abs(($random.run(this.options.pan) / 100.0) - 1);
['height', 'width'].each(function(prop, i){
var e = Math.ceil(this.preloader[prop] * delta);
var s = (e * zoom).toInt();
values[prop] = [s, e];
if (dw > dh || i){
e = (this[prop] - this.image[prop]);
s = (e * pan).toInt();
values[props[i]] = [s, e];
}
}, this);
var paused = (this.firstrun && this.options.paused);
if (fast || paused){
this._center(this.image);
this.image.get('morph').cancel();
if (paused)
this.image.get('tween').cancel().set(0).start(1);
else
this.image.get('tween').cancel().set(1);
} 
else{
this.image.get('morph').start(values);
this.image.get('tween').set(0).start(1);
}
}
});





var Loop = new Class({

loopCount: 0,
isStopped: true,
isLooping: false,
loopMethod: $empty,

setLoop: function(fn,delay){
if(this.isLooping) {
this.stopLoop();
var wasLooping = true;
} else {
var wasLooping = false;
}
this.loopMethod = fn;
this.loopDelay = delay || 3000;
if(wasLooping) this.startLoop();
return this;
},

stopLoop: function() {
this.isStopped = true;
this.isLooping = false;
$clear(this.periodical);
return this;
},

startLoop: function(delay) {
if(this.isStopped){
var delay = (delay) ? delay : this.loopDelay;
this.isStopped = false;
this.isLooping = true;
this.periodical = this.looper.periodical(delay,this);
};
return this;
},

resetLoop: function(){
this.loopCount = 0;
return this;
},

looper: function(){
this.loopCount++;
this.loopMethod(this.loopCount);
return this;
}

});





var SlideBullets = new Class({

Implements: [Options, Events, Loop],

options: {

delay: 7000,
transition: 'crossFade',
duration: '500',
autoplay: false
},

initialize: function(element, naviKey, options){
this.setOptions(options);
this.setLoop(this.showNext, this.options.delay);
this.element = document.id(element);
this.slides = this.element.getChildren();
this.current = this.slides[0];
this.naviKey = naviKey;
this.transitioning = false;
this.setup();
if (this.options.autoplay) this.play();
},

setup: function(){
  this.setupElement().setupSlides(true);
return this;
},

setupElement: function(){
var el = this.element;
if (el.getStyle('position') != 'absolute' && el != document.body) el.setStyle('position','relative');
return this;
},

setupSlides: function(hideFirst){
this.slides.each(function(slide, index){
this.storeTransition(slide).reset(slide);
if (hideFirst && index != 0) slide.setStyle('display','none');
}, this);
return this;
},

storeTransition: function(slide){
var classes = slide.get('class');
var transitionRegex = /transition:[a-zA-Z]+/;
var durationRegex = /duration:[0-9]+/;
var transition = (classes.match(transitionRegex)) ? classes.match(transitionRegex)[0].split(':')[1] : this.options.transition;
var duration = (classes.match(durationRegex)) ? classes.match(durationRegex)[0].split(':')[1] : this.options.duration;
slide.store('ssTransition', transition).store('ssDuration', duration);
return this;
},

resetOptions: function(options){
this.options = $merge(this.options, options);
this.setupSlides(false);
return this;
},

getTransition: function(slide){
return slide.retrieve('ssTransition');
},

getDuration: function(slide){
return slide.retrieve('ssDuration');
},

show: function(slide, options){
slide = (typeof slide == 'number') ? this.slides[slide] : slide;
if (slide != this.current && !this.transitioning){
this.transitioning = true;
var transition = (options && options.transition) ? options.transition: this.getTransition(slide),
duration = (options && options.duration) ? options.duration: this.getDuration(slide),
previous = this.current.setStyle('z-index', 1),
next = this.reset(slide);
var slideData = {
previous: {
element: previous,
index: this.slides.indexOf(previous)
}, 
next: {
element: next,
index: this.slides.indexOf(next)
}
};
this.fireEvent('show', slideData);
this.transitions[transition](previous, next, duration, this);
(function() { 
previous.setStyle('display','none');
this.fireEvent('showComplete', slideData);
this.transitioning = false;
}).bind(this).delay(duration);
this.current = next;
$(this.naviKey+(slideData.previous.index.toInt()+1)).removeClass('active');
$(this.naviKey+(slideData.next.index.toInt()+1)).addClass('active');
this.position = slideData.next.index.toInt();
}
return this;
},

reset: function(slide){
return slide.setStyles({
'position': 'absolute',
'z-index': 0,
'display': 'block',
'left': 0,
'top': 0
}).fade('show');
},

nextSlide: function(){
var next = this.current.getNext();
return (next) ? next : this.slides[0];
},

previousSlide: function(){
var previous = this.current.getPrevious();
return (previous) ? previous : this.slides.getLast();
},

showNext: function(options){
this.show(this.nextSlide(), options);
return this;
},

showPrevious: function(options){
this.show(this.previousSlide(), options);
return this;
},

play: function(){
this.startLoop();
this.fireEvent('play');
return this;
},

pause: function(){
this.stopLoop();
this.fireEvent('pause');
return this;
},

reverse: function(){
var fn = (this.loopMethod == this.showNext) ? this.showPrevious : this.showNext;
this.setLoop(fn, this.options.delay);
this.fireEvent('reverse');
return this;
},

toElement: function(){
return this.element;
}

});

Element.Properties.slideshow = {

set: function(options){
var slideshow = this.retrieve('slideshow');
if (slideshow) slideshow.pause();
return this.eliminate('slideshow').store('slideshow:options', options);
},

get: function(options){
if (options || !this.retrieve('slideshow')){
if (options || !this.retrieve('slideshow:options')) this.set('slideshow', options);
this.store('slideshow', new SlideBullets(this, this.retrieve('slideshow:options')));
}
return this.retrieve('slideshow');
}

};


Element.implement({

playSlideBullets: function(options){
this.get('slideshow', options).play();
return this;
},

pauseSlideBullets: function(options){
this.get('slideshow', options).pause();
return this;
}

});

SlideBullets.adders = {

transitions:{},

add: function(className, fn){
this.transitions[className] = fn;
this.implement({
transitions: this.transitions
});
},

addAllThese : function(transitions){
$A(transitions).each(function(transition){
this.add(transition[0], transition[1]);
}, this);
}

}

$extend(SlideBullets, SlideBullets.adders);
SlideBullets.implement(SlideBullets.adders);

SlideBullets.add('fade', function(previous, next, duration, instance){
previous.set('tween',{duration: duration}).fade('out');
return this;
});

SlideBullets.addAllThese([

['none', function(previous, next, duration, instance){
previous.setStyle('display','none');
return this;
}],

['crossFade', function(previous, next, duration, instance){
previous.set('tween',{duration: duration}).fade('out');
next.set('tween',{duration: duration}).fade('in');
return this;
}],

['fadeThroughBackground', function(previous, next, duration, instance){
var half = duration/2;
next.set('tween',{ duration: half}).fade('hide');
previous.set('tween',{
duration: half,
onComplete: function(){
next.fade('in');
}
}).fade('out');
}],

['pushLeft', function(previous, next, duration, instance){
var distance = instance.element.getSize().x;
next.setStyle('left', distance);
new Fx.Elements([previous,next],{duration: duration}).start({
0: { left: [-distance] },
1: { left: [0] }
});
return this;
}],

['pushRight', function(p,n,d,i){
var distance = i.element.getSize().x;
n.setStyle('left', -distance);
new Fx.Elements([p,n],{duration: d}).start({
0: { left: [distance] },
1: { left: [0] }
});
return this;
}],

['pushUp', function(p,n,d,i){
var distance = i.element.getSize().y;
n.setStyle('top', distance);
new Fx.Elements([p,n],{duration: d}).start({
0: { top: [-distance] },
1: { top: [0] }
});
return this;
}],

['pushDown', function(p,n,d,i){
var distance = i.element.getSize().y;
n.setStyle('top', -distance);
new Fx.Elements([p,n],{duration: d}).start({
0: { top: [distance] },
1: { top: [0] }
});
return this;
}],

['blindRight', function(p,n,d,i){
var distance = i.element.getSize().x;
n.setStyles({
left: -distance,
'z-index': 2
}).set('tween',{duration: d}).tween('left',0);
return this;
}],

['blindLeft', function(p,n,d,i){
var distance = i.element.getSize().x;
n.setStyles({
left: distance,
'z-index': 2
}).set('tween',{duration: d}).tween('left',0);
return this;
}],

['blindUp', function(p,n,d,i){
var distance = i.element.getSize().y;
n.setStyles({
top: distance,
'z-index': 2
}).set('tween',{duration: d}).tween('top',0);
return this;
}],

['blindDown', function(p,n,d,i){
var distance = i.element.getSize().y;
n.setStyles({
top: -distance,
'z-index': 2
}).set('tween',{duration: d}).tween('top',0);
return this;
}],

['blindDownFade', function(p,n,d,i){
this.blindDown(p,n,d,i).fade(p,n,d,i);
}],

['blindUpFade', function(p,n,d,i){
this.blindUp(p,n,d,i).fade(p,n,d,i);
}],

['blindLeftFade', function(p,n,d,i){
this.blindLeft(p,n,d,i).fade(p,n,d,i);
}],

['blindRightFade', function(p,n,d,i){
this.blindRight(p,n,d,i).fade(p,n,d,i);
}]

]);


/**
 * Autocompleter
 *
 * http://digitarald.de/project/autocompleter/
 *
 * @version1.1.2
 *
 * @licenseMIT-style license
 * @authorHarald Kirschner <mail [at] digitarald.de>
 * @copyrightAuthor
 */

var Autocompleter = new Class({

Implements: [Options, Events],

options: {
minLength: 1,
markQuery: true,
width: 'inherit',
maxChoices: 10,
injectChoice: null,
customChoices: null,
emptyChoices: null,
visibleChoices: true,
className: 'autocompleter-choices',
zIndex: 90,
delay: 400,
observerOptions: {},
fxOptions: {},

autoSubmit: false,
overflow: false,
overflowMargin: 25,
selectFirst: false,
filter: null,
filterCase: false,
filterSubset: false,
forceSelect: false,
selectMode: true,
choicesMatch: null,

multiple: false,
separator: ', ',
separatorSplit: /\s*[,;]\s*/,
autoTrim: false,
allowDupes: false,

cache: true,
relative: false
},

initialize: function(element, options) {
this.element = $(element);
this.setOptions(options);
this.build();
this.observer = new Observer(this.element, this.prefetch.bind(this), $merge({
'delay': this.options.delay
}, this.options.observerOptions));
this.queryValue = null;
if (this.options.filter) this.filter = this.options.filter.bind(this);
var mode = this.options.selectMode;
this.typeAhead = (mode == 'type-ahead');
this.selectMode = (mode === true) ? 'selection' : mode;
this.cached = [];
},

/**
 * build - Initialize DOM
 *
 * Builds the html structure for choices and appends the events to the element.
 * Override this function to modify the html generation.
 */
build: function() {
if ($(this.options.customChoices)) {
this.choices = this.options.customChoices;
} else {
this.choices = new Element('ul', {
'class': this.options.className,
'styles': {
'zIndex': this.options.zIndex
}
}).inject(document.body);
this.relative = false;
if (this.options.relative) {
this.choices.inject(this.element, 'after');
this.relative = this.element.getOffsetParent();
}
this.fix = new OverlayFix(this.choices);
}
if (!this.options.separator.test(this.options.separatorSplit)) {
this.options.separatorSplit = this.options.separator;
}
this.fx = (!this.options.fxOptions) ? null : new Fx.Tween(this.choices, $merge({
'property': 'opacity',
'link': 'cancel',
'duration': 200
}, this.options.fxOptions)).addEvent('onStart', Chain.prototype.clearChain).set(0);
this.element.setProperty('autocomplete', 'off')
.addEvent((Browser.Engine.trident || Browser.Engine.webkit) ? 'keydown' : 'keypress', this.onCommand.bind(this))
.addEvent('click', this.onCommand.bind(this, [false]))
.addEvent('focus', this.toggleFocus.create({bind: this, arguments: true, delay: 100}))
.addEvent('blur', this.toggleFocus.create({bind: this, arguments: false, delay: 100}));
},

destroy: function() {
if (this.fix) this.fix.destroy();
this.choices = this.selected = this.choices.destroy();
},

toggleFocus: function(state) {
this.focussed = state;
if (!state) this.hideChoices(true);
this.fireEvent((state) ? 'onFocus' : 'onBlur', [this.element]);
},

onCommand: function(e) {
if (!e && this.focussed) return this.prefetch();
if (e && e.key && !e.shift) {
switch (e.key) {
case 'enter':
if (this.element.value != this.opted) return true;
if (this.selected && this.visible) {
this.choiceSelect(this.selected);
return !!(this.options.autoSubmit);
}
break;
case 'up': case 'down':
if (!this.prefetch() && this.queryValue !== null) {
var up = (e.key == 'up');
this.choiceOver((this.selected || this.choices)[
(this.selected) ? ((up) ? 'getPrevious' : 'getNext') : ((up) ? 'getLast' : 'getFirst')
](this.options.choicesMatch), true);
}
return false;
case 'esc': case 'tab':
this.hideChoices(true);
break;
}
}
return true;
},

setSelection: function(finish) {
var input = this.selected.inputValue, value = input;
var start = this.queryValue.length, end = input.length;
if (input.substr(0, start).toLowerCase() != this.queryValue.toLowerCase()) start = 0;
if (this.options.multiple) {
var split = this.options.separatorSplit;
value = this.element.value;
start += this.queryIndex;
end += this.queryIndex;
var old = value.substr(this.queryIndex).split(split, 1)[0];
value = value.substr(0, this.queryIndex) + input + value.substr(this.queryIndex + old.length);
if (finish) {
var tokens = value.split(this.options.separatorSplit).filter(function(entry) {
return this.test(entry);
}, /[^\s,]+/);
if (!this.options.allowDupes) tokens = [].combine(tokens);
var sep = this.options.separator;
value = tokens.join(sep);
end = value.length;
}
}
this.observer.setValue(value);
this.opted = value;
if (finish || this.selectMode == 'pick') start = end;
this.element.selectRange(start, end);
this.fireEvent('onSelection', [this.element, this.selected, value, input]);
},

showChoices: function() {
var match = this.options.choicesMatch, first = this.choices.getFirst(match);
this.selected = this.selectedValue = null;
if (this.fix) {
var pos = this.element.getCoordinates(this.relative), width = this.options.width || 'auto';
this.choices.setStyles({
'left': pos.left,
'top': pos.bottom,
'width': (width === true || width == 'inherit') ? pos.width : width
});
}
if (!first) return;
if (!this.visible) {
this.visible = true;
this.choices.setStyle('display', '');
if (this.fx) this.fx.start(1);
this.fireEvent('onShow', [this.element, this.choices]);
}
if (this.options.selectFirst || this.typeAhead || first.inputValue == this.queryValue) this.choiceOver(first, this.typeAhead);
var items = this.choices.getChildren(match), max = this.options.maxChoices;
var styles = {'overflowY': 'hidden', 'height': ''};
this.overflown = false;
if (items.length > max) {
var item = items[max - 1];
styles.overflowY = 'scroll';
styles.height = item.getCoordinates(this.choices).bottom;
this.overflown = true;
};
this.choices.setStyles(styles);
this.fix.show();
if (this.options.visibleChoices) {
var scroll = document.getScroll(),
size = document.getSize(),
coords = this.choices.getCoordinates();
if (coords.right > scroll.x + size.x) scroll.x = coords.right - size.x;
if (coords.bottom > scroll.y + size.y) scroll.y = coords.bottom - size.y;
window.scrollTo(Math.min(scroll.x, coords.left), Math.min(scroll.y, coords.top));
}
},

hideChoices: function(clear) {
if (clear) {
var value = this.element.value;
if (this.options.forceSelect) value = this.opted;
if (this.options.autoTrim) {
value = value.split(this.options.separatorSplit).filter($arguments(0)).join(this.options.separator);
}
this.observer.setValue(value);
}
if (!this.visible) return;
this.visible = false;
if (this.selected) this.selected.removeClass('autocompleter-selected');
this.observer.clear();
var hide = function(){
this.choices.setStyle('display', 'none');
this.fix.hide();
}.bind(this);
if (this.fx) this.fx.start(0).chain(hide);
else hide();
this.fireEvent('onHide', [this.element, this.choices]);
},

prefetch: function() {
var value = this.element.value, query = value;
if (this.options.multiple) {
var split = this.options.separatorSplit;
var values = value.split(split);
var index = this.element.getSelectedRange().start;
var toIndex = value.substr(0, index).split(split);
var last = toIndex.length - 1;
index -= toIndex[last].length;
query = values[last];
}
if (query.length < this.options.minLength) {
this.hideChoices();
} else {
if (query === this.queryValue || (this.visible && query == this.selectedValue)) {
if (this.visible) return false;
this.showChoices();
} else {
this.queryValue = query;
this.queryIndex = index;
if (!this.fetchCached()) this.query();
}
}
return true;
},

fetchCached: function() {
return false;
if (!this.options.cache
|| !this.cached
|| !this.cached.length
|| this.cached.length >= this.options.maxChoices
|| this.queryValue) return false;
this.update(this.filter(this.cached));
return true;
},

update: function(tokens) {
this.choices.empty();
this.cached = tokens;
var type = tokens && $type(tokens);
if (!type || (type == 'array' && !tokens.length) || (type == 'hash' && !tokens.getLength())) {
(this.options.emptyChoices || this.hideChoices).call(this);
} else {
if (this.options.maxChoices < tokens.length && !this.options.overflow) tokens.length = this.options.maxChoices;
tokens.each(this.options.injectChoice || function(token){
var choice = new Element('li', {'html': this.markQueryValue(token)});
choice.inputValue = token;
this.addChoiceEvents(choice).inject(this.choices);
}, this);
this.showChoices();
}
},

choiceOver: function(choice, selection) {
if (!choice || choice == this.selected) return;
if (this.selected) this.selected.removeClass('autocompleter-selected');
this.selected = choice.addClass('autocompleter-selected');
this.fireEvent('onSelect', [this.element, this.selected, selection]);
if (!this.selectMode) this.opted = this.element.value;
if (!selection) return;
this.selectedValue = this.selected.inputValue;
if (this.overflown) {
var coords = this.selected.getCoordinates(this.choices), margin = this.options.overflowMargin,
top = this.choices.scrollTop, height = this.choices.offsetHeight, bottom = top + height;
if (coords.top - margin < top && top) this.choices.scrollTop = Math.max(coords.top - margin, 0);
else if (coords.bottom + margin > bottom) this.choices.scrollTop = Math.min(coords.bottom - height + margin, bottom);
}
if (this.selectMode) this.setSelection();
},

choiceSelect: function(choice) {
if (choice) this.choiceOver(choice);
this.setSelection(true);
this.queryValue = false;
this.hideChoices();
},

filter: function(tokens) {
return (tokens || this.tokens).filter(function(token) {
return this.test(token);
}, new RegExp(((this.options.filterSubset) ? '' : '^') + this.queryValue.escapeRegExp(), (this.options.filterCase) ? '' : 'i'));
},

/**
 * markQueryValue
 *
 * Marks the queried word in the given string with <span class="autocompleter-queried">*</span>
 * Call this i.e. from your custom parseChoices, same for addChoiceEvents
 *
 * @param{String} Text
 * @return{String} Text
 */
markQueryValue: function(str) {
return (!this.options.markQuery || !this.queryValue) ? str
: str.replace(new RegExp('(' + ((this.options.filterSubset) ? '' : '^') + this.queryValue.escapeRegExp() + ')', (this.options.filterCase) ? '' : 'i'), '<span class="autocompleter-queried">$1</span>');
},

/**
 * addChoiceEvents
 *
 * Appends the needed event handlers for a choice-entry to the given element.
 *
 * @param{Element} Choice entry
 * @return{Element} Choice entry
 */
addChoiceEvents: function(el) {
return el.addEvents({
'mouseover': this.choiceOver.bind(this, [el]),
'click': this.choiceSelect.bind(this, [el])
});
}
});

var OverlayFix = new Class({

initialize: function(el) {
if (Browser.Engine.trident) {
this.element = $(el);
this.relative = this.element.getOffsetParent();
this.fix = new Element('iframe', {
'frameborder': '0',
'scrolling': 'no',
'src': 'javascript:false;',
'styles': {
'position': 'absolute',
'border': 'none',
'display': 'none',
'filter': 'progid:DXImageTransform.Microsoft.Alpha(opacity=0)'
}
}).inject(this.element, 'after');
}
},

show: function() {
if (this.fix) {
var coords = this.element.getCoordinates(this.relative);
delete coords.right;
delete coords.bottom;
this.fix.setStyles($extend(coords, {
'display': '',
'zIndex': (this.element.getStyle('zIndex') || 1) - 1
}));
}
return this;
},

hide: function() {
if (this.fix) this.fix.setStyle('display', 'none');
return this;
},

destroy: function() {
if (this.fix) this.fix = this.fix.destroy();
}

});

Element.implement({

getSelectedRange: function() {
if (!Browser.Engine.trident) return {start: this.selectionStart, end: this.selectionEnd};
var pos = {start: 0, end: 0};
var range = this.getDocument().selection.createRange();
if (!range || range.parentElement() != this) return pos;
var dup = range.duplicate();
if (this.type == 'text') {
pos.start = 0 - dup.moveStart('character', -100000);
pos.end = pos.start + range.text.length;
} else {
var value = this.value;
var offset = value.length - value.match(/[\n\r]*$/)[0].length;
dup.moveToElementText(this);
dup.setEndPoint('StartToEnd', range);
pos.end = offset - dup.text.length;
dup.setEndPoint('StartToStart', range);
pos.start = offset - dup.text.length;
}
return pos;
},

selectRange: function(start, end) {
if (Browser.Engine.trident) {
var diff = this.value.substr(start, end - start).replace(/\r/g, '').length;
start = this.value.substr(0, start).replace(/\r/g, '').length;
var range = this.createTextRange();
range.collapse(true);
range.moveEnd('character', start + diff);
range.moveStart('character', start);
range.select();
} else {
this.focus();
this.setSelectionRange(start, end);
}
return this;
}

});



Autocompleter.Base = Autocompleter;




/**
 * Autocompleter.Request
 *
 * http://digitarald.de/project/autocompleter/
 *
 * @version1.1.2
 *
 * @licenseMIT-style license
 * @authorHarald Kirschner <mail [at] digitarald.de>
 * @copyrightAuthor
 */

Autocompleter.Request = new Class({

Extends: Autocompleter,

options: {/*
indicator: null,
indicatorClass: null,
onRequest: $empty,
onComplete: $empty,*/
postData: {},
ajaxOptions: {},
postVar: 'value'

},

query: function(){
var data = $unlink(this.options.postData) || {};
data[this.options.postVar] = this.queryValue;
var indicator = $(this.options.indicator);
if (indicator) indicator.setStyle('display', '');
var cls = this.options.indicatorClass;
if (cls) this.element.addClass(cls);
this.fireEvent('onRequest', [this.element, this.request, data, this.queryValue]);
this.request.send({'data': data});
},

/**
 * queryResponse - abstract
 *
 * Inherated classes have to extend this function and use this.parent()
 */
queryResponse: function() {
var indicator = $(this.options.indicator);
if (indicator) indicator.setStyle('display', 'none');
var cls = this.options.indicatorClass;
if (cls) this.element.removeClass(cls);
return this.fireEvent('onComplete', [this.element, this.request]);
}

});

Autocompleter.Request.JSON = new Class({

Extends: Autocompleter.Request,

initialize: function(el, url, options) {
this.parent(el, options);
this.request = new Request.JSON($merge({
'url': url,
'link': 'cancel'
}, this.options.ajaxOptions)).addEvent('onComplete', this.queryResponse.bind(this));
},

queryResponse: function(response) {
this.parent();
this.update(response);
}

});

Autocompleter.Request.HTML = new Class({

Extends: Autocompleter.Request,

initialize: function(el, url, options) {
this.parent(el, options);
this.request = new Request.HTML($merge({
'url': url,
'link': 'cancel',
'update': this.choices
}, this.options.ajaxOptions)).addEvent('onComplete', this.queryResponse.bind(this));
},

queryResponse: function(tree, elements) {
this.parent();
if (!elements || !elements.length) {
this.hideChoices();
} else {
this.choices.getChildren(this.options.choicesMatch).each(this.options.injectChoice || function(choice) {
var value = choice.innerHTML;
choice.inputValue = value;
this.addChoiceEvents(choice.set('html', this.markQueryValue(value)));
}, this);
this.showChoices();
}

}

});



Autocompleter.Ajax = {
Base: Autocompleter.Request,
Json: Autocompleter.Request.JSON,
Xhtml: Autocompleter.Request.HTML
};


/**
 * Observer - Observe formelements for changes
 *
 * - Additional code from clientside.cnet.com
 *
 * @version1.1
 *
 * @licenseMIT-style license
 * @authorHarald Kirschner <mail [at] digitarald.de>
 * @copyrightAuthor
 */
var Observer = new Class({

Implements: [Options, Events],

options: {
periodical: false,
delay: 1000
},

initialize: function(el, onFired, options){
this.element = $(el) || $$(el);
this.addEvent('onFired', onFired);
this.setOptions(options);
this.bound = this.changed.bind(this);
this.resume();
},

changed: function() {
var value = this.element.get('value');
if ($equals(this.value, value)) return;
this.clear();
this.value = value;
this.timeout = this.onFired.delay(this.options.delay, this);
},

setValue: function(value) {
this.value = value;
this.element.set('value', value);
return this.clear();
},

onFired: function() {
this.fireEvent('onFired', [this.value, this.element]);
},

clear: function() {
$clear(this.timeout || null);
return this;
},

pause: function(){
if (this.timer) $clear(this.timer);
else this.element.removeEvent('keyup', this.bound);
return this.clear();
},

resume: function(){
this.value = this.element.get('value');
if (this.options.periodical) this.timer = this.changed.periodical(this.options.periodical, this);
else this.element.addEvent('keyup', this.bound);
return this;
}

});

var $equals = function(obj1, obj2) {
return (obj1 == obj2 || JSON.encode(obj1) == JSON.encode(obj2));
};




/*
 * Autocompleter starten
 */

window.addEvent('load', function() {

if ($('searchString') != null) {
new Autocompleter.Ajax.Json('searchString', config["fileWeb"]+'?ajax=autoCompleteSearch', {

'postVar': 'search',
'minLength': 1,
'separator': ' ',
'selectMode': 'pick',
'multiple': true

});
}

});



(function(){

GrowingInput = new Class({

Implements: [Options, Events],

options: {
min: 0,
max: null,
startWidth: 2,
correction: 15
},

initialize: function(element, options){
this.setOptions(options);
this.element = $(element).store('growing', this).set('autocomplete', 'off');
this.calc = new Element('span', {
'styles': {
'float': 'left',
'display': 'inline-block',
'position': 'absolute',
'left': -1000
}
}).inject(this.element, 'after');
['font-size', 'font-family', 'padding-left', 'padding-top', 'padding-bottom', 
 'padding-right', 'border-left', 'border-right', 'border-top', 'border-bottom', 
 'word-spacing', 'letter-spacing', 'text-indent', 'text-transform'].each(function(p){
this.calc.setStyle(p, this.element.getStyle(p));
}, this);
this.resize();
var resize = this.resize.bind(this);
this.element.addEvents({blur: resize, keyup: resize, keydown: resize, keypress: resize});
},

calculate: function(chars){
this.calc.set('html', chars);
var width = this.calc.getStyle('width').toInt();
return (width ? width : this.options.startWidth) + this.options.correction;
},

resize: function(){
this.lastvalue = this.value;
this.value = this.element.value;
var value = this.value;
if($chk(this.options.min) && this.value.length < this.options.min){
if($chk(this.lastvalue) && (this.lastvalue.length <= this.options.min)) return;
value = str_pad(this.value, this.options.min, '-');
} else if($chk(this.options.max) && this.value.length > this.options.max){
if($chk(this.lastvalue) && (this.lastvalue.length >= this.options.max)) return;
value = this.value.substr(0, this.options.max);
}
this.element.setStyle('width', this.calculate(value));
return this;
}

});

var str_repeat = function(str, times){ return new Array(times + 1).join(str); };
var str_pad = function(self, length, str, dir){
if (self.length >= length) return this;
str = str || ' ';
var pad = str_repeat(str, length - self.length).substr(0, length - self.length);
if (!dir || dir == 'right') return self + pad;
if (dir == 'left') return pad + self;
return pad.substr(0, (pad.length / 2).floor()) + self + pad.substr(0, (pad.length / 2).ceil());
};

})();






var TextboxList = new Class({
          
  Implements: [Options, Events],

  plugins: [],

  options: {
    prefix: 'textboxlist',
    max: null,
unique: false,
uniqueInsensitive: true,
    endEditableBit: true,
startEditableBit: true,
hideEditableBits: true,
    inBetweenEditableBits: true,
keys: {previous: Event.Keys.left, next: Event.Keys.right},
bitsOptions: {editable: {}, box: {}},
    plugins: {},
check: function(s){ return s.clean().replace(/,/g, '') != ''; },
encode: function(o){ 
return o.map(function(v){
v = v[0]+'::'+v[1];
return $chk(v) ? v : null;
}).clean().join(','); 
},
decode: function(o){ 
values = o.split(',');
names = [];
values.each(function(item) {
r = item.split('::');
names.push([r[0],r[1]],'','');
});
return names;
}
  },
  
  initialize: function(element, options){
this.setOptions(options);
this.original = $(element).setStyle('display', 'none').set('autocomplete', 'off').addEvent('focus', this.focusLast.bind(this));
    this.container = new Element('div', {'class': this.options.prefix}).inject(element, 'after');
this.container.addEvent('click', function(e){ 
if ((e.target == this.list || e.target == this.container) && (!this.focused || $(this.current) != this.list.getLast())) this.focusLast();
}.bind(this));
    this.list = new Element('ul', {'class': this.options.prefix + '-bits'}).inject(this.container);
for (var name in this.options.plugins) this.enablePlugin(name, this.options.plugins[name]);
['check', 'encode', 'decode'].each(function(i){ this.options[i] = this.options[i].bind(this); }, this);
this.afterInit();
  },

enablePlugin: function(name, options){
this.plugins[name] = new TextboxList[name.camelCase().capitalize()](this, options);
},

afterInit: function(){
if (this.options.unique) this.index = [];
if (this.options.endEditableBit) this.create('editable', null, {tabIndex: this.original.tabIndex}).inject(this.list);
var update = this.update.bind(this);
this.addEvent('bitAdd', update, true).addEvent('bitRemove', update, true);
document.addEvents({
click: function(e){
if (!this.focused) return;
if (e.target.className.contains(this.options.prefix)){
if (e.target == this.container) return;
var parent = e.target.getParent('.' + this.options.prefix);
if (parent == this.container) return;
}
this.blur();
}.bind(this),
keydown: function(ev){
if (!this.focused || !this.current) return;
var caret = this.current.is('editable') ? this.current.getCaret() : null;
var value = this.current.getValue()[1];
var special = ['shift', 'alt', 'meta', 'ctrl'].some(function(e){ return ev[e]; });
var custom = special || (this.current.is('editable') && this.current.isSelected());
switch (ev.code){
case Event.Keys.backspace:
if (this.current.is('box')){ 
ev.stop();
return this.current.remove(); 
}
case this.options.keys.previous:
if (this.current.is('box') || ((caret == 0 || !value.length) && !custom)){
ev.stop();
this.focusRelative('previous');
}
break;
case Event.Keys['delete']:
if (this.current.is('box')){ 
ev.stop();
return this.current.remove(); 
}
case this.options.keys.next: 
if (this.current.is('box') || (caret == value.length && !custom)){
ev.stop();
this.focusRelative('next');
}
}
}.bind(this)
});
this.setValues(this.options.decode(this.original.get('value')));
},

create: function(klass, value, options){
if (klass == 'box'){
if ((!value[0] && !value[1]) || ($chk(value[1]) && !this.options.check(value[1]))) return false;
if ($chk(this.options.max) && this.list.getChildren('.' + this.options.prefix + '-bit-box').length + 1 > this.options.max) return false;
if (this.options.unique && this.index.contains(this.uniqueValue(value))) return false;
}
return new TextboxListBit[klass.capitalize()](value, this, $merge(this.options.bitsOptions[klass], options));
},

uniqueValue: function(value){
return $chk(value[0]) ? value[0] : (this.options.uniqueInsensitive ? value[1].toLowerCase() : value[1]);
},

onFocus: function(bit){
if (this.current) this.current.blur();
$clear(this.blurtimer);
this.current = bit;
this.container.addClass(this.options.prefix + '-focus');
if (!this.focused){
this.focused = true;
this.fireEvent('focus', bit);
}
},

onBlur: function(bit, all){
this.current = null;
this.container.removeClass(this.options.prefix + '-focus');
this.blurtimer = this.blur.delay(all ? 0 : 200, this);
},

onAdd: function(bit){
if (this.options.unique && bit.is('box')) this.index.push(this.uniqueValue(bit.value));
if (bit.is('box')){
var prior = this.getBit($(bit).getPrevious());
if ((prior && prior.is('box') && this.options.inBetweenEditableBits) || (!prior && this.options.startEditableBit)){
var b = this.create('editable').inject(prior || this.list, prior ? 'after' : 'top');
if (this.options.hideEditableBits) b.hide();
}
}
},

onRemove: function(bit){
if (!this.focused) return;
if (this.options.unique && bit.is('box')) this.index.erase(this.uniqueValue(bit.value));
var prior = this.getBit($(bit).getPrevious());
if (prior && prior.is('editable')) prior.remove();
this.focusRelative('next', bit);
},

focusRelative: function(dir, to){
var b = this.getBit($($pick(to, this.current))['get' + dir.capitalize()]());
if (b) b.focus();
return this;
},

focusLast: function(){
var lastElement = this.list.getLast();
if (lastElement) this.getBit(lastElement).focus();
return this;
},

blur: function(){
if (! this.focused) return this;
if (this.current) this.current.blur();
this.focused = false;
return this.fireEvent('blur');
},

add: function(plain, id, html, afterEl){
var b = this.create('box', [id, plain, html]);
if (b){
if (!afterEl) afterEl = this.list.getLast('.' + this.options.prefix + '-bit-box');
b.inject(afterEl || this.list, afterEl ? 'after' : 'top');
}
return this;
},

getBit: function(obj){
return ($type(obj) == 'element') ? obj.retrieve('textboxlist:bit') : obj;
},

getValues: function(){
return this.list.getChildren().map(function(el){
var bit = this.getBit(el);
if (bit.is('editable')) return null;
return bit.getValue();
}, this).clean();
},

setValues: function(values){
if (!values) return;
values.each(function(v){
if (v) this.add.apply(this, $type(v) == 'array' ? [v[1], v[0], v[2]] : [v]);
}, this);
},

update: function(){
this.original.set('value', this.options.encode(this.getValues()));
}
  
});

var TextboxListBit = new Class({
  
  Implements: Options,  

  initialize: function(value, textboxlist, options){

this.name = this.type.capitalize();
this.value = value;
    this.textboxlist = textboxlist;
    this.setOptions(options);            
    this.prefix = this.textboxlist.options.prefix + '-bit';
this.typeprefix = this.prefix + '-' + this.type;
    this.bit = new Element('li').addClass(this.prefix).addClass(this.typeprefix).store('textboxlist:bit', this);
this.bit.addEvents({
mouseenter: function(){ 
this.bit.addClass(this.prefix + '-hover').addClass(this.typeprefix + '-hover'); 
}.bind(this),
mouseleave: function(){
this.bit.removeClass(this.prefix + '-hover').removeClass(this.typeprefix + '-hover'); 
}.bind(this)
});
  },

inject: function(element, where){
this.bit.inject(element, where);
this.textboxlist.onAdd(this);
return this.fireBitEvent('add');
},

focus: function(){
if (this.focused) return this;
this.show();
this.focused = true;
this.textboxlist.onFocus(this);
this.bit.addClass(this.prefix + '-focus').addClass(this.prefix + '-' + this.type + '-focus');
return this.fireBitEvent('focus');
},

blur: function(){
if (!this.focused) return this;
this.focused = false;
this.textboxlist.onBlur(this);
this.bit.removeClass(this.prefix + '-focus').removeClass(this.prefix + '-' + this.type + '-focus');
return this.fireBitEvent('blur');
},

remove: function(){
this.blur();
this.textboxlist.onRemove(this);
this.bit.destroy();
return this.fireBitEvent('remove');
},

show: function(){
this.bit.setStyle('display', 'block');
return this;
},

hide: function(){
this.bit.setStyle('display', 'none');
return this;
},

fireBitEvent: function(type){
type = type.capitalize();
this.textboxlist.fireEvent('bit' + type, this).fireEvent('bit' + this.name + type, this);
return this;
},

  is: function(t){
    return this.type == t;
  },

setValue: function(v){
this.value = v;
return this;
},

getValue: function(){
return this.value;
},

toElement: function(){
return this.bit;
}
  
});

TextboxListBit.Editable = new Class({
  
Extends: TextboxListBit,

  options: {
tabIndex: null,
growing: true,
growingOptions: {},
stopEnter: true,
addOnBlur: false,
addKeys: Event.Keys.enter
  },
  
  type: 'editable',
  
  initialize: function(value, textboxlist, options){
    this.parent(value, textboxlist, options);
    this.element = new Element('input', {type: 'text', 'class': this.typeprefix + '-input', autocomplete: 'off', value: this.value ? this.value[1] : ''}).inject(this.bit);
if ($chk(this.options.tabIndex)) this.element.tabIndex = this.options.tabIndex;
if (this.options.growing) new GrowingInput(this.element, this.options.growingOptions);
this.element.addEvents({
focus: function(){ this.focus(true); }.bind(this),
blur: function(){
this.blur(true);
if (this.options.addOnBlur) this.toBox(); 
}.bind(this)
});
if (this.options.addKeys || this.options.stopEnter){
this.element.addEvent('keydown', function(ev){
if (!this.focused) return;
if (this.options.stopEnter && ev.code === Event.Keys.enter) ev.stop();
if ($splat(this.options.addKeys).contains(ev.code)){
ev.stop();
this.toBox();
}
}.bind(this));
}
  },

hide: function(){
this.parent();
this.hidden = true;
return this;
},
  
focus: function(noReal){
this.parent();
if (!noReal) this.element.focus();
return this;
},

blur: function(noReal){
this.parent();
if (!noReal) this.element.blur();
if (this.hidden && !this.element.value.length) this.hide();
return this;
},

getCaret: function(){
if (this.element.createTextRange){
    var r = document.selection.createRange().duplicate();
  r.moveEnd('character', this.element.value.length);
  if (r.text === '') return this.element.value.length;
  return this.element.value.lastIndexOf(r.text);
  } else return this.element.selectionStart;
},

getCaretEnd: function(){
if (this.element.createTextRange){
var r = document.selection.createRange().duplicate();
r.moveStart('character', -this.element.value.length);
return r.text.length;
} else return this.element.selectionEnd;
},

isSelected: function(){
return this.focused && (this.getCaret() !== this.getCaretEnd());
},

setValue: function(val){
this.element.value = $chk(val[0]) ? val[0] : val[1];
if (this.options.growing) this.element.retrieve('growing').resize();
return this;
},

getValue: function(){
return [null, this.element.value, null];
},

toBox: function(){
var value = this.getValue();
var b = this.textboxlist.create('box', value);
if (b){
b.inject(this.bit, 'before');
this.setValue([null, '', null])
return b;
}
return null;
}

});

TextboxListBit.Box = new Class({
  
Extends: TextboxListBit,

  options: {
deleteButton: true
  },
  
  type: 'box',
  
  initialize: function(value, textboxlist, options){
    this.parent(value, textboxlist, options);
this.bit.set('html', $chk(this.value[2]) ? this.value[2] : this.value[1]);
this.bit.addEvent('click', this.focus.bind(this));
if (this.options.deleteButton){
this.bit.addClass(this.typeprefix + '-deletable');
this.close = new Element('a', {href: '#', 'class': this.typeprefix + '-deletebutton', events: {click: this.remove.bind(this)}}).inject(this.bit);
}
this.bit.getChildren().addEvent('click', function(e){ e.stop(); });
  }
  
});






(function(){

TextboxList.Autocomplete = new Class({

Implements: Options,

options: {
minLength: 1,
maxResults: 10,
insensitive: true,
highlight: true,
highlightSelector: null,
mouseInteraction: true,
onlyFromValues: true,
queryRemote: false,
remote: {
url: '',
param: 'search',
extraParams: {},
loadPlaceholder: 'Bitte warten...'
},
method: 'standard',
placeholder: 'Bitte geben Sie mindestens 3 Zeichen ein...'
},

initialize: function(textboxlist, options){
this.setOptions(options);
this.textboxlist = textboxlist;
this.textboxlist.addEvent('bitEditableAdd', this.setupBit.bind(this), true)
.addEvent('bitEditableFocus', this.search.bind(this), true)
.addEvent('bitEditableBlur', this.hide.bind(this), true)
.setOptions({bitsOptions: {editable: {addKeys:[], stopEnter: false}}});
if (Browser.Engine.trident) this.textboxlist.setOptions({bitsOptions: {editable: {addOnBlur: false}}});
if (this.textboxlist.options.unique){
this.index = [];
this.textboxlist.addEvent('bitBoxRemove', function(bit){
if (bit.autoValue) this.index.erase(bit.autoValue);
}.bind(this), true);
}
this.prefix = this.textboxlist.options.prefix + '-autocomplete';
this.method = TextboxList.Autocomplete.Methods[this.options.method];
this.container = new Element('div', {'class': this.prefix}).setStyle('width', this.textboxlist.container.getStyle('width')).inject(this.textboxlist.container);
if ($chk(this.options.placeholder) || this.options.queryServer) 
this.placeholder = new Element('div', {'class': this.prefix+'-placeholder'}).inject(this.container);
this.list = new Element('ul', {'class': this.prefix + '-results'}).inject(this.container);
this.list.addEvent('click', function(ev){ ev.stop(); });
this.list.addEvent('mouseover', function() { this.currentInput.focus(); this.list.addClass('hasfocus'); }.bind(this), true);
this.list.addEvent('mouseleave', function() { this.list.removeClass('hasfocus'); }.bind(this), true);
this.values = this.results = this.searchValues = [];
this.navigate = this.navigate.bind(this);
},

setValues: function(values){
this.values = values;
},

setupBit: function(bit){
bit.element.addEvent('keydown', this.navigate, true).addEvent('keyup', function(){ this.search(); }.bind(this), true);
},

search: function(bit){
if (bit) this.currentInput = bit;
if (!this.options.queryRemote && !this.values.length) return;
var search = this.currentInput.getValue()[1];
if (search.length < this.options.minLength) this.showPlaceholder(this.options.placeholder);
if (search == this.currentSearch) return;
this.currentSearch = search;
this.list.setStyle('display', 'none');
if (search.length < this.options.minLength) return;
if (this.options.queryRemote){
if (this.searchValues[search]){
this.values = this.searchValues[search];
} else {
var data = this.options.remote.extraParams, that = this;
if ($type(data) == 'function') data = data.run([], this);
data[this.options.remote.param] = search;
if (this.currentRequest) this.currentRequest.cancel();
this.currentRequest = new Request.JSON({url: this.options.remote.url, data: data, onRequest: function(){
that.showPlaceholder(that.options.remote.loadPlaceholder);
}, onSuccess: function(data){
that.searchValues[search] = data;
that.values = data;
that.showResults(search);
}}).send();
}
} 
if (this.values.length) this.showResults(search);
},

showResults: function(search){
var results = this.method.filter(this.values, search, this.options.insensitive, this.options.maxResults);
if (this.index) results = results.filter(function(v){ return !this.index.contains(v); }, this);
this.hidePlaceholder();
if (!results.length) return;
this.blur();
this.list.empty().setStyle('display', 'block');
results.each(function(r){ this.addResult(r, search); }, this);
if (this.options.onlyFromValues) this.focusFirst();
this.results = results;
},

addResult: function(r, search){
var element = new Element('li', {'class': this.prefix + '-result', 'html': $pick(r[3], r[1])}).store('textboxlist:auto:value', r);
this.list.adopt(element);
if (this.options.highlight) $$(this.options.highlightSelector ? element.getElements(this.options.highlightSelector) : element).each(function(el){
if (el.get('html')) this.method.highlight(el, search, this.options.insensitive, this.prefix + '-highlight');
}, this);
if (this.options.mouseInteraction){
element.setStyle('cursor', 'pointer').addEvents({
mouseenter: function(){ this.focus(element); }.bind(this),
mousedown: function(ev){
ev.stop(); 
$clear(this.hidetimer);
this.doAdd = true;
}.bind(this),
mouseup: function(){
if (this.doAdd){
this.addCurrent();
this.currentInput.focus();
this.search();
this.doAdd = false;
}
}.bind(this)
});
if (!this.options.onlyFromValues) element.addEvent('mouseleave', function(){ if (this.current == element) this.blur(); }.bind(this));
}
},

hide: function(ev){
if (!this.list.hasClass('hasfocus')) {
this.hidetimer = (function(){
this.hidePlaceholder();
this.list.setStyle('display', 'none');
this.currentSearch = null;
this.currentInput.setValue([null, '', null]);
}).delay(Browser.Engine.trident ? 150 : 0, this);
}
},

showPlaceholder: function(customHTML){
if (this.placeholder){
this.placeholder.setStyle('display', 'block');
if (customHTML) this.placeholder.set('html', customHTML);
}
},

hidePlaceholder: function(){
if (this.placeholder) this.placeholder.setStyle('display', 'none');
},

focus: function(element){
if (!element) return this;
this.blur();
this.current = element.addClass(this.prefix + '-result-focus');
},

blur: function(){
if (this.current){
this.current.removeClass(this.prefix + '-result-focus');
this.current = null;
}
},

focusFirst: function(){
return this.focus(this.list.getFirst());
},

focusRelative: function(dir){
if (!this.current) return this;
return this.focus(this.current['get' + dir.capitalize()]());
},

addCurrent: function(){
var value = this.current.retrieve('textboxlist:auto:value');
var b = this.textboxlist.create('box', value.slice(0, 3));
if (b){
b.autoValue = value;
if (this.index != null) this.index.push(value);
this.currentInput.setValue([null, '', null]);
b.inject($(this.currentInput), 'before');
}
this.blur();
return this;
},

navigate: function(ev){
switch (ev.code){
case Event.Keys.up:
ev.stop();
(!this.options.onlyFromValues && this.current && this.current == this.list.getFirst()) ? this.blur() : this.focusRelative('previous');
break;
case Event.Keys.down:
ev.stop();
this.current ? this.focusRelative('next') : this.focusFirst();
break;
case Event.Keys.enter:
ev.stop();
if (this.current) this.addCurrent();
else if (!this.options.onlyFromValues){
var value = this.currentInput.getValue();
var b = this.textboxlist.create('box', value);
if (b){
b.inject($(this.currentInput), 'before');
this.currentInput.setValue([null, '', null]);
}
} else {
MessageBox.status(lang['form.tags.placeholder.error']);
}
case Event.Keys.tab:
if (this.current) {
var search = this.currentInput.getValue()[1];
if (search.length >= this.options.minLength && this.values.length) {
ev.stop();
this.addCurrent();
} else {
this.currentInput.setValue([null, '', null]);
}
} else {
this.currentInput.setValue([null, '', null]);
}
}
}

});

TextboxList.Autocomplete.Methods = {

standard: {
filter: function(values, search, insensitive, max){
var newvals = [], regexp = new RegExp('\\b' + search.escapeRegExp(), insensitive ? 'i' : '');
for (var i = 0; i < values.length; i++){
if (newvals.length === max) break;
if (values[i][1].test(regexp)) newvals.push(values[i]);
}
return newvals;
},

highlight: function(element, search, insensitive, klass){
var regex = new RegExp('(<[^>]*>)|(\\b'+ search.escapeRegExp() +')', insensitive ? 'ig' : 'g');
return element.set('html', element.get('html').replace(regex, function(a, b, c){
return (a.charAt(0) == '<') ? a : '<strong class="'+ klass +'">' + c + '</strong>'; 
}));
}
}

};

})();




TextboxList.Autocomplete.Methods.binary = {
filter: function(values, search, insensitive, max){
var method = insensitive ? 'toLowerCase' : 'toString', low = 0, high = values.length - 1, lastTry;
search = search[method]();
while (high >= low){
var mid = parseInt((low + high) / 2);
var curr = values[mid][1].substr(0, search.length)[method]();
var result = ((search == curr) ? 0 : ((search > curr) ? 1 : -1));
if (result < 0) { high = mid - 1; continue; }
if (result > 0) { low = mid + 1; continue; }
if (result === 0) break;
}
if (high < low) return [];
var newvalues = [values[mid]], checkNext = true, checkPrev = true, v1, v2;
for (var i = 1; i <= values.length - mid; i++){
if (newvalues.length === max) break;
if (checkNext) v1 = values[mid + i] ? values[mid + i][1].substr(0, search.length)[method]() : false;
if (checkPrev) v2 = values[mid - i] ? values[mid - i][1].substr(0, search.length)[method]() : false;
checkNext = checkPrev = false;
if (v1 === search) { newvalues.push(values[mid + i]); checkNext = true; }
if (v2 === search) { newvalues.unshift(values[mid - i]); checkPrev = true; }
if (! (checkNext || checkPrev)) break;
}
return newvalues;
},

highlight: function(element, search, insensitive, klass){
var regex = new RegExp('(<[^>]*>)|(\\b'+ search.escapeRegExp() +')', insensitive ? 'ig' : 'g');
return element.set('html', element.get('html').replace(regex, function(a, b, c, d){
return (a.charAt(0) == '<') ? a : '<strong class="'+ klass +'">' + c + '</strong>'; 
}));
}
};






window.addEvent('load', function() {

if ($('usersSelect') != null) {

// Autocomplete with poll the server as you type
var t5 = new TextboxList('usersSelect', {unique: true, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: true,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteUsers'}
}}});

}

if ($('usersSelect2') != null) {

// Autocomplete with poll the server as you type
var t5 = new TextboxList('usersSelect2', {unique: true, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: true,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteUsers'}
}}});

}

//Autocomplete fuer Stichwoerter vorbereiten
if ($('tagsSelectNew') != null) {

var freestyle = ($('tagsSelectNew').hasClass("freestyle")) ? false : true;

var t5 = new TextboxList('tagsSelectNew', {unique: true, max: 5, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: freestyle,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteTags'}
}}});

}
});

// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.



var MilkChart;var Point=new Class({initialize:function(a,b){this.x=a||0;this.y=b||0}});MilkChart=new Class({Implements:[Options,Events],options:{width:480,height:290,colors:["#4f81bd","#c0504d","#9bbb59","#8064a2","#4198af","#db843d"],padding:12,font:"Verdana",fontColor:"#4d4d4d",fontSize:10,background:"#FFFFFF",chartLineColor:"#878787",chartLineWeight:1,border:true,borderWeight:1,borderColor:"#878787",titleSize:18,titleFont:"Verdana",titleColor:"#000000",showRowNames:true,showValues:true,showKey:true,useZero:true,useFooter:false},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);if(Browser.Engine.trident){this.fireEvent("onFail",[this.element]);return false}this.fireEvent("onFail");this.width=this.options.width;this.height=this.options.height;this.container=new Element("div",{width:this.width,height:this.height}).inject(this.element.getParent());this._canvas=new Element("canvas",{width:this.options.width,height:this.options.height}).inject(this.container);this.ctx=this._canvas.getContext("2d");this.colNames=[];this.rowNames=[];this.rowCount=this.element.getElement("thead").getChildren()[0].getChildren().length;this.minY=(this.options.useZero)?0:10000000000;this.maxY=0;this.rows=[];this.options.title=false||this.element.title;this.bounds=[new Point(),new Point(this.width,this.height)];this.chartWidth=0;this.chartHeight=0;this.keyPadding=this.width*0.2;this.rowPadding=this.height*0.1;this.colors=this.__getColors(this.options.colors);this.shapes=[];MilkChart.Shapes.each(function(c){this.shapes.push(c)}.bind(this))},prepareCanvas:function(){this.element.setStyle("display","none");this.ctx.fillStyle=this.options.background;this.ctx.fillRect(0,0,this.width,this.height);if(this.options.border){this.ctx.lineWeight=this.options.borderWeight;this.ctx.strokeRect(0,0,this.width,this.height)}if(this.options.showValues){charPadding=0.03;this.valueColumnWidth=(this.bounds[1].x-this.bounds[0].x)*(String(this.maxY).length*charPadding);this.bounds[0].x+=this.valueColumnWidth}this.bounds[0].x+=this.options.padding;this.bounds[0].y+=this.options.padding;this.bounds[1].x-=this.options.padding*2;this.bounds[1].y-=this.options.padding*2;if(this.options.showRowNames){this.bounds[1].y-=this.rowPadding}else{this.rowPadding=0}if(this.options.showKey){this.bounds[1].x-=this.keyPadding;this.keyBounds=[new Point(this.bounds[1].x*1.02,this.bounds[0].y),new Point(this.bounds[1].x*0.5,this.bounds[1].y)]}if(this.options.title){titleHeight=this.bounds[0].y+this.height*0.1;this.bounds[0].y=titleHeight;this.titleBounds=[new Point(this.bounds[0].x,0),new Point(this.bounds[1].x,titleHeight)];this.drawTitle()}this.chartWidth=this.bounds[1].x-this.bounds[0].x;this.chartHeight=this.bounds[1].y-this.bounds[0].y},drawTitle:function(){titleHeightRatio=1.25;titleHeight=this.options.titleSize*titleHeightRatio;this.ctx.textAlign="center";this.ctx.font=this.options.titleSize+"px "+this.options.titleFont;this.ctx.fillStyle=this.options.titleColor;this.ctx.fillText(this.options.title,this.bounds[0].x+(this.bounds[1].x-this.bounds[0].x)/2,titleHeight,this.chartWidth)},drawAxes:function(){this.ctx.beginPath();this.ctx.strokeStyle=this.options.chartLineColor;this.ctx.moveTo(this.bounds[0].x+0.5,this.bounds[0].y+0.5);this.ctx.lineTo(this.bounds[0].x+0.5,this.bounds[1].y+0.5);this.ctx.moveTo(this.bounds[0].x+0.5,this.bounds[1].y+0.5);this.ctx.lineTo(this.bounds[1].x+0.5,this.bounds[1].y+0.5);this.ctx.stroke()},drawValueLines:function(){dist=[1,2,5,10,20,50,100,150,500,1000];maxLines=9;i=0;this.chartLines=1;delta=Math.floor((this.maxY-this.minY));while(Math.floor((delta/dist[i]))>maxLines){i++}this.chartLines=Math.floor((delta/dist[i]))+2;mult=dist[i];negativeScale=(this.minY<0)?(mult+this.minY):0;this.ratio=(this.chartHeight+this.options.padding)/(((this.chartLines-1)*mult)+(mult/2));this.ctx.font=this.options.fontSize+"px "+this.options.font;this.ctx.textAlign="right";this.ctx.fillStyle=this.options.fontColor;boundsHeight=this.bounds[1].y-this.bounds[0].y;lineHeight=Math.floor(boundsHeight/(this.chartLines-1));for(i=0;i<this.chartLines;i++){this.ctx.fillStyle=this.options.fontColor;lineY=this.bounds[1].y-(i*lineHeight);lineValue=(this.chartLines*mult)-((this.chartLines-i)*mult)+this.minY-negativeScale;this.ctx.beginPath();lineY+=0.5;this.ctx.moveTo(this.bounds[0].x-4,lineY);if(this.options.showValues){this.ctx.fillText(String(lineValue),this.bounds[0].x-8,lineY+3)}this.ctx.lineTo(this.bounds[1].x,lineY);this.ctx.stroke()}},getData:function(){return null},draw:function(){return null},drawKey:function(){return null},__getColors:function(c){var b=[];if(c.length==1||c.length==2){var d=new Color(c[0]);var a=(c.length==2)?new Color(c[1]):new Color("#ffffff").mix(c[0],20);var h=[(a[0]-d[0])/this.rowCount,(a[1]-d[1])/this.rowCount,(a[2]-d[2])/this.rowCount];var g=d;for(i=0;i<this.rowCount;i++){b.push(g.rgbToHex());for(j=0;j<h.length;j++){g[j]+=parseInt(h[j])}}}else{var e=0;var f=c.slice(0);while(b.length!=this.rowCount){if(f.length==0){f=c.slice(0);e+=20}newColor=new Color(f.shift()).mix("#ffffff",e);b.push(newColor.rgbToHex())}}return b}});MilkChart.Column=new Class({Extends:MilkChart,options:{columnBorder:false,columnBorderWeight:2},initialize:function(b,a){this.parent(b,a);this.getData();this.prepareCanvas();this.rowWidth=Math.round(this.chartWidth/this.rows.length);this.drawAxes();this.drawValueLines();this.draw();if(this.options.showKey){this.drawKey()}},getData:function(){this.element.getElement("thead").getChildren()[0].getChildren().each(function(a){this.colNames.push(a.get("html"))}.bind(this));if(this.options.useFooter){this.element.getElement("tfoot").getChildren()[0].getChildren().each(function(a){this.rowNames.push(a.get("html"))}.bind(this))}this.element.getElement("tbody").getChildren().each(function(b){var a=[];b.getChildren().each(function(c){val=Number(c.get("html"));if(!$type(val)){val=c.get("html")}a.push(val);if(val>this.maxY){this.maxY=val}if(val<this.minY){this.minY=val}}.bind(this));this.rows.push(a)}.bind(this));if(!this.options.useFooter){for(i=1;i<=this.rows.length;i++){this.rowNames.push("Row "+i)}}},draw:function(){y=(this.minY>=0)?this.bounds[1].y:this.bounds[1].y-Math.floor((this.chartHeight/(this.chartLines-1)));origin=new Point(this.bounds[0].x,y);rowPadding=Math.floor(this.rowWidth*0.16);colWidth=Math.ceil((this.rowWidth-(rowPadding*2))/this.rows[0].length);rowNameID=0;this.rows.each(function(a){rowOrigin=new Point(origin.x,origin.y);colorID=0;this.ctx.fillStyle=this.options.fontColor;this.ctx.textAlign="center";if(this.options.showRowNames){this.ctx.fillText(this.rowNames[rowNameID],rowOrigin.x+(this.rowWidth/2),this.bounds[1].y+(this.rowPadding/2))}a.each(function(b){this.ctx.beginPath();this.ctx.fillStyle=this.colors[colorID];colHeight=Math.ceil(b*this.ratio);this.ctx.fillStyle=this.colors[colorID];this.ctx.fillRect(rowOrigin.x+rowPadding,rowOrigin.y-colHeight,colWidth,colHeight);if(this.options.columnBorder){this.ctx.strokeStyle="#fff";this.ctx.lineWidth=this.options.columnBorderWeight;this.ctx.strokeRect(rowOrigin.x+rowPadding,rowOrigin.y-colHeight,colWidth,colHeight)}rowOrigin.x+=colWidth;colorID++}.bind(this));origin.x+=this.rowWidth;rowNameID++}.bind(this))},drawKey:function(){colorID=0;textMarginLeft=14;keyNameHeight=Math.ceil(this.height*0.05);keyHeight=this.colNames.length*keyNameHeight;keyOrigin=(this.height-keyHeight)/2;this.colNames.each(function(a){this.ctx.fillStyle=this.options.fontColor;this.ctx.textAlign="left";this.ctx.fillText(a,this.keyBounds[0].x+textMarginLeft,keyOrigin+8);this.ctx.fillStyle=this.colors[colorID];this.ctx.fillRect(Math.ceil(this.keyBounds[0].x),Math.ceil(keyOrigin),10,10);colorID++;keyOrigin+=keyNameHeight},this)}});MilkChart.Bar=new Class({Extends:MilkChart.Column,options:{},initialize:function(b,a){this.parent(b,a)},drawValueLines:function(){dist=[1,2,5,10,20,50,100,150,500,1000];maxLines=9;i=0;this.chartLines=1;delta=Math.floor((this.maxY-this.minY));while(Math.floor((delta/dist[i]))>maxLines){i++}this.chartLines=Math.floor((delta/dist[i]))+2;mult=dist[i];negativeScale=(this.minY<0)?(mult+this.minY):0;this.ratio=(this.chartWidth+this.options.padding)/(((this.chartLines-1)*mult)+1);this.ctx.font=this.options.fontSize+"px "+this.options.font;this.ctx.textAlign="center";this.ctx.fillStyle=this.options.fontColor;boundsHeight=this.bounds[1].y-this.bounds[0].y;lineHeight=Math.ceil(this.chartWidth/(this.chartLines-1));for(i=0;i<this.chartLines;i++){this.ctx.fillStyle=this.options.fontColor;lineX=this.bounds[0].x+(i*lineHeight);lineValue=(this.chartLines*mult)-((this.chartLines-i)*mult)+this.minY;this.ctx.beginPath();lineX=Math.round(lineX)+0.5;this.ctx.moveTo(lineX,this.bounds[0].y);this.ctx.fillText(String(lineValue),lineX,this.bounds[1].y+14);this.ctx.lineTo(lineX,this.bounds[1].y+4);this.ctx.stroke()}},draw:function(){origin=new Point(this.bounds[0].x,this.bounds[1].y);this.colHeight=Math.round(this.chartHeight/this.rows.length);padding=0.16;rowPadding=Math.ceil(this.colHeight*padding);colWidth=Math.ceil((this.colHeight-(rowPadding*2))/this.rows[0].length);rowNameID=0;this.rows.each(function(a){rowOrigin=new Point(origin.x,origin.y);colorID=0;this.ctx.fillStyle=this.options.fontColor;this.ctx.textAlign="center";this.ctx.fillText(this.rowNames[rowNameID],rowOrigin.x-(colWidth/2),rowOrigin.y-(this.rowPadding/2));a.each(function(b){this.ctx.beginPath();this.ctx.fillStyle=this.colors[colorID];colHeight=Math.ceil(b*this.ratio);this.ctx.fillRect(rowOrigin.x,rowOrigin.y-rowPadding,colHeight,colWidth);rowOrigin.y-=colWidth;colorID++}.bind(this));origin.y-=this.colHeight;rowNameID++}.bind(this))}});MilkChart.Line=new Class({Extends:MilkChart,options:{showTicks:false,showLines:true,lineWeight:3},initialize:function(b,a){this.parent(b,a);this.getData();this.prepareCanvas();this.rowWidth=this.chartWidth/this.rows[0].length;this.drawAxes();this.drawValueLines();this.draw();if(this.options.showKey){this.drawKey()}},getData:function(){this.rows=[];this.element.getElement("thead").getChildren()[0].getChildren().each(function(a){this.colNames.push(a.get("html"));this.rows.push([])}.bind(this));if(this.element.getElement("tfoot")){this.element.getElement("tfoot").getChildren()[0].getChildren().each(function(a){this.rowNames.push(a.get("html"))}.bind(this))}this.element.getElement("tbody").getChildren().each(function(a){a.getChildren().each(function(c,b){val=Number(c.get("html"));if(!$type(val)){val=c.get("html")}this.rows[b].push(val);if(val>this.maxY){this.maxY=val}if(val<this.minY){this.minY=val}}.bind(this))}.bind(this))},draw:function(){origin=new Point(this.bounds[0].x,this.bounds[1].y);rowCenter=this.rowWidth/2;rowNameID=0;colorID=0;y=(this.minY>=0)?this.bounds[1].y+(this.minY*this.ratio):this.bounds[1].y-Math.floor((this.chartHeight/(this.chartLines-1)));shapeIndex=0;this.rows.each(function(b,a){if(this.options.showLines){rowOrigin=new Point(origin.x,origin.y);lineOrigin=this.bounds[0].x+rowCenter;this.ctx.lineWidth=this.options.lineWeight;this.ctx.beginPath();this.ctx.strokeStyle=this.colors[colorID];this.ctx.moveTo(rowOrigin.x+rowCenter,y-(b[0]*this.ratio));b.each(function(c){pointCenter=rowOrigin.x+rowCenter;point=new Point(pointCenter,y-(c*this.ratio));this.ctx.lineTo(point.x,point.y);rowOrigin.x+=this.rowWidth}.bind(this));this.ctx.stroke()}if(this.options.showTicks){rowOrigin=new Point(origin.x,origin.y);lineOrigin=this.bounds[0].x+rowCenter;shape=this.shapes[shapeIndex];b.each(function(c){pointCenter=rowOrigin.x+rowCenter;point=new Point(pointCenter,y-(c*this.ratio));shape(this.ctx,point.x,point.y,10,this.colors[colorID]);rowOrigin.x+=this.rowWidth}.bind(this));shapeIndex++}colorID++;rowNameID++}.bind(this));this.__drawRowLabels()},drawKey:function(){keyNameHeight=Math.ceil(this.height*0.05);keyHeight=this.colNames.length*keyNameHeight;keyOrigin=(this.height-keyHeight)/2;this.colNames.each(function(b,a){this.ctx.fillStyle=this.options.fontColor;this.ctx.textAlign="left";this.ctx.fillText(b,this.keyBounds[0].x+30,keyOrigin+5);this.ctx.fillStyle=this.colors[a];this.ctx.strokeStyle=this.colors[a];this.ctx.lineWidth=3;if(this.options.showLines){this.ctx.beginPath();this.ctx.moveTo(this.keyBounds[0].x,keyOrigin+0.5);this.ctx.lineTo(this.keyBounds[0].x+20,keyOrigin+0.5);this.ctx.closePath();this.ctx.stroke()}if(this.options.showTicks){shape=this.shapes[a];shape(this.ctx,this.keyBounds[0].x+10,keyOrigin,10,this.colors[a])}keyOrigin+=keyNameHeight}.bind(this))},__drawRowLabels:function(){origin=new Point(this.bounds[0].x,this.bounds[1].y);rowCenter=this.rowWidth/2;this.ctx.fillStyle=this.options.fontColor;this.ctx.lineWidth=1;this.ctx.textAlign="center";this.rowNames.each(function(b,a){this.ctx.fillText(this.rowNames[a],origin.x+rowCenter,this.bounds[1].y+(this.rowPadding/2));origin.x+=this.rowWidth}.bind(this))}});MilkChart.Scatter=new Class({Extends:MilkChart.Line,options:{showTicks:true,showLines:false},initialize:function(b,a){this.parent(b,a)}});MilkChart.Pie=new Class({Extends:MilkChart,options:{stroke:true,strokeWeight:3,strokeColor:"#ffffff",chartTextColor:"#000000",shadow:false,chartLineWeight:2,pieBorder:false},initialize:function(b,a){this.parent(b,a);this.rowCount=this.element.getElement("tbody").getChildren().length;this.colors=this.__getColors(this.options.colors);this.options.showRowNames=false;this.getData();this.prepareCanvas();this.radius=(this.chartHeight/2);if(this.options.showKey){this.drawKey()}this.draw()},getData:function(){if(this.element.getElement("tfoot")){this.element.getElement("tfoot").getChildren()[0].getChildren().each(function(a){this.rowNames.push(a.get("html"))}.bind(this))}pieTotal=0;this.element.getElement("tbody").getChildren().each(function(a){node=a.getChildren()[0];dataRow=[];val=Number(node.get("html"));dataRow.push(val);pieTotal+=val;this.rows.push(dataRow)}.bind(this));this.rows.each(function(a){a.push((a[0]/pieTotal)*360)})},draw:function(){arcStart=0;blah=0;center=new Point((this.bounds[1].x/2)+this.options.padding,(this.bounds[1].y/2)+this.options.padding);if(this.options.shadow){var a=this.ctx.createRadialGradient(center.x,center.y,this.radius,center.x*1.03,center.y*1.03,this.radius*1.05);a.addColorStop(0.5,"#000000");a.addColorStop(0.75,"#000000");a.addColorStop(1,"rgba(0,0,0,0)");this.ctx.fillStyle=a;this.ctx.fillRect(this.bounds[0].x,this.bounds[0].y,this.width,this.height)}this.rows.each(function(c,b){this.ctx.fillStyle=this.colors[b];this.ctx.beginPath();this.ctx.arc(center.x,center.y,this.radius,(Math.PI/180)*arcStart,(Math.PI/180)*(c[1]+arcStart),false);this.ctx.lineTo(center.x,center.y);this.ctx.closePath();this.ctx.fill();if(this.options.stroke){this.ctx.strokeStyle=this.options.strokeColor;this.ctx.lineWidth=this.options.strokeWeight;this.ctx.lineJoin="round";this.ctx.beginPath();this.ctx.arc(center.x,center.y,this.radius,(Math.PI/180)*arcStart,(Math.PI/180)*(c[1]+arcStart),false);this.ctx.lineTo(center.x,center.y);this.ctx.closePath();this.ctx.stroke()}if(this.options.showValues){this.ctx.fillStyle=this.options.chartTextColor;this.ctx.textAlign="center";start=(Math.PI/180)*(arcStart);end=(Math.PI/180)*(c[1]+arcStart);centerAngle=start+((end-start)/2);percent=Math.round((c[0]/pieTotal)*100);centerDist=(percent<5)?0.95:1.75;x=this.radius*Math.cos(centerAngle)/centerDist;y=this.radius*Math.sin(centerAngle)/centerDist;this.ctx.fillText(percent+"%",center.x+x,center.y+y)}arcStart+=c[1]}.bind(this));if(this.options.pieBorder){this.ctx.lineWidth=this.options.chartLineWeight;this.ctx.strokeStyle=this.options.chartLineColor;this.ctx.beginPath();this.ctx.arc(center.x,center.y,this.radius-1,0,Math.PI*2);this.ctx.stroke()}},drawKey:function(){colorID=0;keyNameHeight=Math.ceil(this.height*0.05);keyHeight=this.rowNames.length*keyNameHeight;keyHeight=(keyHeight>this.height)?this.height*0.9:keyHeight;keyOrigin=(this.height-keyHeight)/2;this.ctx.font=this.options.fontSize+"px "+this.options.font;this.rowNames.each(function(a){this.ctx.fillStyle=this.options.fontColor;this.ctx.textAlign="left";this.ctx.fillText(a,this.keyBounds[0].x+14,keyOrigin+8);this.ctx.fillStyle=this.colors[colorID];this.ctx.fillRect(Math.ceil(this.keyBounds[0].x),Math.ceil(keyOrigin),10,10);colorID++;keyOrigin+=keyNameHeight}.bind(this))}});MilkChart.Shapes=new Hash({square:function(b,a,e,d,c){b.fillStyle=c;b.fillRect(a-(d/2),e-(d/2),d,d)},circle:function(b,a,e,d,c){b.fillStyle=c;b.beginPath();b.arc(a,e,d/2,0,(Math.PI/180)*360,true);b.closePath();b.fill()},triangle:function(b,a,e,d,c){b.fillStyle=c;b.beginPath();a-=d/2;e-=d/2;lr=new Point(a+d,e+d);b.moveTo(a,lr.y);b.lineTo(a+(d/2),e);b.lineTo(lr.x,lr.y);b.closePath();b.fill()},cross:function(b,a,e,d,c){a-=d/2;e-=d/2;b.strokeStyle=c;b.lineWidth=1;b.beginPath();b.moveTo(a,e);b.lineTo(a+d,e+d);b.moveTo(a,e+d);b.lineTo(a+d,e);b.closePath();b.stroke()},diamond:function(b,a,e,d,c){a-=d/2;e-=d/2;b.fillStyle=c;b.beginPath();b.moveTo(a+(d/2),e);b.lineTo(a+d,e+(d/2));b.lineTo(a+(d/2),e+d);b.lineTo(a,e+(d/2));b.closePath();b.fill()}});



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.
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
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() - 60),                     // Default starting year for dropdown options is 5 years ago
yearRange: 70,                                                 // Show a 10 year span
yearOrder: 'asc',                                              // Counting up in years
startDay: 1                       // 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);
this.options.monthNames = Locale.get('Date.months');
this.options.dayNames = Locale.get('Date.days');

// Saving the input field
this.input = $(el);
this.icon = $(el+"_icon");

// 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.icon.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 != '') {
Date.defineParser('%d.%m.%Y');
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) {
this.close();
return true;
}
this.open = true;
// This sets several instance variables
this.setCurrentDate();
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]);
if (this.input.getProperty('onChange') == 'updateAreasStati();') this.input.addEvent('onChange', updateAreasStati());
this.fireEvent('onChange', this.input);
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('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, 2) + '</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.
markDropdownShowing: function() {
this.dropDownShowing = true;
},

// They made a selection in one of the month/year dropdowns
selectChanged: function() {
this.dropDownShowing = false;
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;
}

});



window.addEvent('domready', function() {

$$('#configlist li h3').each(function(item) {

var id = item.getProperty('id');

var iconSlideIn = new Element('span', {'class': 'arrow', 'id': id+'Icon'}).set('html', '&rarr; ');

if (id != null) {

item.setProperty('style', 'cursor:pointer;');

iconSlideIn.inject(item, 'top');

$(id+'Form').setStyle('height','auto');
var elemShowFx = new Fx.Slide(id+'Form', {duration: 500, onComplete: function(response){ window.fireEvent('resize');}}).hide();
if ($(id+'Form').hasClass('show')) {
elemShowFx.show();
$(id+'Icon').set('html', '&darr; ');
}

item.addEvent('click', function(e) {

var buf = ($(id+'Form').hasClass('show')) ? '0' : '1';
new Request.JSON({url: config['fileWeb']}).get({'ajax': 'updateSessionValue', 'key': 'configlist', 'value': id, 'buf': buf});
var html = (buf == '0') ? '&rarr; ' : '&darr; ';
$(id+'Icon').set('html', html);
$(id+'Form').toggleClass('show');
elemShowFx.toggle();

});

item.addEvent('resize', function(e) {

elemShowFx.hide();
elemShowFx.show();

});

item.addEvent('slideIn', function(e) {

elemShowFx.slideIn();
$(id+'Icon').set('html', '&rarr; ');

});

item.addEvent('slideOut', function(e) {

elemShowFx.slideOut();
$(id+'Icon').set('html', '&darr; ');

});
}
});
});






window.addEvent('domready', function() {

$$('#configlist li ul > li').each(function(item) { configlistSlideInOut(item); });

$$('#adminconfig li').each(function(item) { configlistSlideInOut(item); });

});



function configlistSlideInOut (item) {

var id = item.getProperty('id');

if (id != null) {

var idValues = id.split('_');

//Checkbox
if (idValues[2] == null) {

if ($(idValues[1]) != null) {

if ($(idValues[1]).checked == false) {

$$('.if_'+idValues[1]).each(function(field) {
field.fade(0.3);
});

}

$(idValues[1]).addEvent('click', function(e) {

if ($(idValues[1]).checked == false) {

$$('#configlist li ul li.if_'+idValues[1]).each(function(field) {
field.fade(0.3);
});

} else if ($(idValues[1]).checked == true) {

$$('#configlist li ul li.if_'+idValues[1]).each(function(field) {
field.fade(1);
});

}

});

}

//Radio
} else {

for (var co=0; co<idValues[2]; co++) {

var elemId = idValues[1]+co;

if ($(elemId) != null) {

if ($(elemId).checked == false) {

$$('.if_'+elemId).each(function(field) {
field.fade(0.3);
});

}

$(elemId).addEvent('click', function(e) {

if ($(elemId).checked == false) {

$$('#configlist li ul li.if_'+elemId).each(function(field) {
field.fade(0.3);
});

} else if ($(elemId).checked == true) {

$$('#configlist li ul li.if_'+elemId).each(function(field) {
field.fade(1);
});

}

});

}

}

}

}
}






function pluginsConfigRefresh () {

MessageBox.confirm(lang['sidebar.admin.pluginsrefresh.confirm'],pluginsConfigRefreshReal);

}

function pluginsConfigRefreshReal (Check) {

if (Check == true) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { $('adminPluginsRefreshLink').set('html', '<img src="'+config["pathSystem"]+'images/spinner.gif" alt="" /> '+lang['sidebar.admin.pluginsrefresh.working']); }, onComplete: function(response){
if (response.status == "true") {
$('adminPluginsRefreshDesc').set('html', response.msg);
$('adminPluginsRefreshLink').dispose();
} else {
alert(lang['sidebar.admin.pluginsrefresh.error']);
}
}}).get({'ajax': 'pluginsConfigRefresh'});

}
}






function pluginsLangRefresh () {

MessageBox.confirm(lang['sidebar.admin.langrefresh.confirm'],pluginsLangRefreshReal);

}


function pluginsLangRefreshReal (Check) {

if (Check == true) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { $('adminLangRefreshLink').set('html', '<img src="'+config["pathSystem"]+'images/spinner.gif" alt="" /> '+lang['sidebar.admin.langrefresh.working']); }, onComplete: function(response){
if (response.status == "true") {
$('adminLangRefreshDesc').set('html', response.msg);
$('adminLangRefreshLink').dispose();
} else {
alert(lang['sidebar.admin.langrefresh.error']);
}
}}).get({'ajax': 'pluginsLangRefresh'});

}

}






function pluginsStatus (id) {
tmpId = id;
tooltipObj.hide();
MessageBox.confirm(lang['admin.plugins.confirm'],pluginsStatusCheck);
}

function pluginsStatusCheck (Check) {

if (Check == true) {

var mySpinner = new Spinner('plugin_'+tmpId).show();

var jsonRequest = new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == 'true') {
$('plugin_'+tmpId).set('html', response.msg);
tooltipObj.attach($$('#'+'plugin_'+tmpId+' .tooltip'));
} else {
MessageBox.status(lang['admin.plugins.error']);
}
}}).get({'ajax': 'pluginsStatus', 'plugin': tmpId});

}
}






function adminAdministratorDelete (id) {

tmpId = id;
MessageBox.confirm(lang['admin.administrator.delete.confirm'],adminAdministratorDeleteReal);

}

function adminAdministratorDeleteReal (Check) {

if (Check == true) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('admin-dt-'+tmpId).dispose();
$('admin-dd-'+tmpId).dispose();
} else {
MessageBox.status(lang['admin.administrator.delete.error']);
}
}}).get({'ajax': 'adminAdministratorDelete', 'user_id': tmpId});

}
}






function pluginsLangUpdate (code, id) {

tooltipObj.hide();

var mySpinner = new Spinner('icons.'+code+'.'+id).show();

new Request.JSON({url: config['fileWeb']+'?ajax=pluginsLangUpdate', onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
$('reset.'+code+'.'+id).setStyle('display', 'inline');
}
}}).post({'lang_code': code, 'lang_id': id, 'lang_value': $(code+'.'+id).value});

}





function pluginsLangReset (code, id) {

tooltipObj.hide();

new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$(code+'.'+id).value = response.value;
$('reset.'+code+'.'+response.id).setStyle('display', 'none');
if (code == "us") $('translate.'+code+'.'+response.id).setStyle('display', 'inline');
}
}}).get({'ajax': 'pluginsLangReset', 'lang_code': code, 'lang_id': id});

}




function pluginsLangTranslate (id) {

tooltipObj.hide();

google.language.translate($('de.'+id).value, "de", "en", function(result) {
if (!result.error) {

$('us.'+id).value = result.translation;
$('translate.us.'+id).setStyle('display', 'none');
pluginsLangUpdate('us', id);

}
});

}





window.addEvent('domready', function() {

var mySortables = new Sortables($('naviSort'), {
handles: $$('#naviSort li span img.icon'),
onComplete: function() {
var string = mySortables.serialize(0, function(element, index){
return element.getProperty('id').replace('navikey_','')
}).join(':');
$('naviElementsHidden').value = string;
}
});

});







function adminTemplatesAddCss () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('adminTemplatesCssTmp').set('html', response.html);
$('adminTemplatesCss_'+response.index).inject($('adminTemplatesCss'), 'top');
$('template_css_count').value = $('template_css_count').value.toInt()+1;
}
}}).get({'ajax': 'adminTemplatesCssAddLine', 'index': $('template_css_count').value});

}






window.addEvent('domready', function() {

$$('#infoslist li h3').each(function(item) {

var id = item.getProperty('id');

var iconSlideIn = new Element('span', {'class': 'arrow', 'id': id+'Icon'}).set('html', '&rarr; ');

if (id != null) {

item.setProperty('style', 'cursor:pointer;');

iconSlideIn.inject(item, 'bottom');

$(id+'Desc').setStyle('height','auto');
var elemShowFx = new Fx.Slide(id+'Desc', {duration: 500}).hide();

item.addEvent('click', function(e) {

var buf = (item.hasClass('active')) ? '0' : '1';
item.toggleClass('active');
elemShowFx.toggle();
var html = (buf == '0') ? '&rarr; ' : '&darr; ';
$(id+'Icon').set('html', html);

});

item.addEvent('resize', function(e) {

elemShowFx.hide();
elemShowFx.show();

});

item.addEvent('slideIn', function(e) {

elemShowFx.slideIn();
$(id+'Icon').set('html', '&rarr; ');

});

item.addEvent('slideOut', function(e) {

elemShowFx.slideOut();
$(id+'Icon').set('html', '&darr; ');

});
}
});
});







function adminFinanceBankType (item) {

if (item.checked == true) {

if (item.value == 'iban') {

$('accountnumber_li').setStyle("display", "none");
$('bankcode_li').setStyle("display", "none");
$('bankiban_li').setStyle("display", "list-item");
$('bankbic_li').setStyle("display", "list-item");
$('bankswift_li').setStyle("display", "list-item");

} else {

$('accountnumber_li').setStyle("display", "list-item");
$('bankcode_li').setStyle("display", "list-item");
$('bankiban_li').setStyle("display", "none");
$('bankbic_li').setStyle("display", "none");
$('bankswift_li').setStyle("display", "none");

}
}

}



function footerIndividualAddLine (key) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('footerIndividual'+key+'Tmp').set('html', response.html);
$('footerIndividual'+key+'_'+response.index).inject($('footerIndividual'+key), 'bottom');
$('footer_individual'+key+'_count').value = $('footer_individual'+key+'_count').value.toInt()+1;
$('configCssFooter').fireEvent('resize');
}
}}).get({'ajax': 'footerIndividualAddLine', 'index': $('footer_individual'+key+'_count').value, 'key': key});

}





window.addEvent('domready', function() {

$$('#adminIconsChange tr').each(function(item) {

var id = item.getProperty('id');

if (id != null) adminIconsReset(id);

});
});

function adminIconsReset (id) {

if ($(id+'_delete') != null) {

$(id+'_delete').addEvent('click', function(e) {

new Request.JSON({url: config['fileWeb']+'?ajax=adminLayoutIconsReset', onRequest: function(instance) { $(id+'_delete').set('src', config["pathSystem"]+'images/spinner.gif'); }, onComplete: function(response){

if (response.status == "true") {

$(id+'_size').set('text', response.size);
$(id+'_filesize').set('text', response.filesize);
$(id+'_preview').set('src', response.preview);
$(id+'_delete').dispose();

} else if (response.status == "false") {

$(id+'_delete').set('src', response.icon);

}

}}).post({'file': $(id+'_preview').get('src')});

});
}

}




window.addEvent('domready', function(){

if ($('widthrelationslider') != null) {

// First Example
var el = $('widthrelationslider');

// Create the new slider instance
new Slider(el, el.getElement('.knob'), {
steps: 28,
initialStep: $('widthRelation').value,
onChange: function(value){
$('widthRelationContent').set('text', value+50);
$('widthRelationSidebar').set('text', 50-value);
$('widthRelation').value = value;
}
}).set(font.getStyle('font-size').toInt());

}
});



window.addEvent('load', function() {

$$('.iscityform').each(function(item, index) {

var type = item.id.replace(/_place/, '');
var place = (item.id != type) ? "_place" : "";
type = type.replace(/_city/, '');
var hasCountry = ($(type+place+'_country') != null) ? 1 : 0;

new Autocompleter.Ajax.Json(item, config["fileWeb"]+'?ajax=autoCompleteCity&hascountry='+hasCountry, {

'postVar': 'search',
'minLength': 1,
'separator': 'xxxxxxx',
'selectMode': 'pick',
'onSelection': function (element, selected, value, input) {

var data = value.split(' / ');
$$('#'+type+place+'_country option').each(function(item, index) {
if (item.get('text') == data[1]) { $(type+place+'_country').set('value', item.value); $(type+place+'_city').set('value', data[0]); } 
});
}

});
});

});



window.addEvent("domready", function(){

if ($('adminNotesFormMore') != null) {

$$('#adminNotesFormMore a').each(function(item){

item.addEvent('click', function(e){

item.setStyle('display', 'none');
$$('#usersSearchForm li').each(function(formLi){
formLi.removeClass("hidden");
});

return false;
});

});

}

});






window.addEvent('load', function() {

if ($('clientsSearchFilter') != null) {
new Autocompleter.Ajax.Json('clientsSearchFilter', config["fileWeb"]+'?ajax=autoCompleteClients', {

'postVar': 'search',
'minLength': 1,
'selectMode': 'pick'

});
}

});






function clientsSelectAdd (item, type) {

var id = item.getProperty('name').replace(/clientId/, '');

$(type+'_clientid').value = id;
SqueezeBox.close();

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
if ($(type+'sFirm')) $(type+'sFirm').value = response.firm;
if ($(type+'sFirmSub')) $(type+'sFirmSub').value = response.firmsub;
if ($(type+'sType') && response.type != '') $(type+'sType').value = response.type;
if ($(type+'sSubType') && response.subtype != '') $(type+'sSubType').value = response.subtype;
if ($(type+'sClientFirstname') && response.firstname != '') $(type+'sClientFirstname').value = response.firstname;
if ($(type+'sClientLastname') && response.lastname != '') $(type+'sClientLastname').value = response.lastname;
if ($(type+'_place_city')) $(type+'_place_city').value = response.city;
if ($(type+'_place_country')) $(type+'_place_country').value = response.country;
if ($(type+'sClientEmail') && response.email != '') $(type+'sClientEmail').value = response.email;
if ($(type+'sClientHomepage') && response.homepage != '') $(type+'sClientHomepage').value = response.homepage;
}
}}).get({'ajax': 'getClientsJsonData', 'client_id': id});


}







function searchElementAdd (el) {

if ($(el+'1_li').hasClass('element_hidden')) {

$(el+'1_li').toggleClass('element_hidden').toggleClass('active');

} else if ($(el+'2_li').hasClass('element_hidden')) {

$(el+'2_li').toggleClass('element_hidden').toggleClass('active');

}

if ($(el+'1_li').hasClass('active') && $(el+'2_li').hasClass('active')) $(el+'SearchAdd').removeClass('active').addClass('element_hidden');

return false;
}

function searchElementDelete (el, nu) {

$(el+nu+'_li').toggleClass('element_hidden').toggleClass('active'); $(el+nu).value=''; 

$(el+'SearchAdd').removeClass('element_hidden').addClass('active');

return false;
}

function getClientsEventsData (el) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
if ($('eventsFirm')) $('eventsFirm').value = response.firm;
if ($('eventsFirmSub')) $('eventsFirmSub').value = response.firmsub;
if ($('eventsClientFirstname') && response.firstname != '') $('eventsClientFirstname').value = response.firstname;
if ($('eventsClientLastname') && response.lastname != '') $('eventsClientLastname').value = response.lastname;
if ($('event_place_city')) $('event_place_city').value = response.city;
if ($('event_place_country')) $('event_place_country').value = response.country;
if ($('eventsClientEmail') && response.email != '') $('eventsClientEmail').value = response.email;
if ($('eventsClientHomepage') && response.homepage != '') $('eventsClientHomepage').value = response.homepage;
}
}}).get({'ajax': 'getClientsJsonData', 'client_id': el.value});

}

function getClientsFundingsData (el) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
if ($('fundingsFirm')) $('fundingsFirm').value = response.firm;
if ($('fundingsFirmSub')) $('fundingsFirmSub').value = response.firmsub;
if ($('fundingsClientFirstname') && response.firstname != '') $('fundingsClientFirstname').value = response.firstname;
if ($('fundingsClientLastname') && response.lastname != '') $('fundingsClientLastname').value = response.lastname;
if ($('funding_place_city')) $('funding_place_city').value = response.city;
if ($('funding_place_country')) $('funding_place_country').value = response.country;
if ($('fundingsClientEmail') && response.email != '') $('fundingsClientEmail').value = response.email;
if ($('fundingsClientHomepage') && response.homepage != '') $('fundingsClientHomepage').value = response.homepage;
}
}}).get({'ajax': 'getClientsJsonData', 'client_id': el.value});

}


function fundingsPaymentsDuration (el) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('fundingsPaymentsPrice').set('text', response.str);
}
}}).get({'ajax': 'fundingsPaymentsDuration', 'duration': el.value});

}

function getClientsJobsData (el) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
if ($('jobsFirm')) $('jobsFirm').value = response.firm;
if ($('jobsFirmSub')) $('jobsFirmSub').value = response.firmsub;
if ($('jobsClientFirstname') && response.firstname != '') $('jobsClientFirstname').value = response.firstname;
if ($('jobsClientLastname') && response.lastname != '') $('jobsClientLastname').value = response.lastname;
if ($('job_place_city')) $('job_place_city').value = response.city;
if ($('job_place_country')) $('job_place_country').value = response.country;
if ($('jobsClientEmail') && response.email != '') $('jobsClientEmail').value = response.email;
if ($('jobsClientHomepage') && response.homepage != '') $('jobsClientHomepage').value = response.homepage;

}
}}).get({'ajax': 'getClientsJsonData', 'client_id': el.value});

}



function jobsPaymentsDuration (el) {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('jobsPaymentsPrice').set('text', response.str);
}
}}).get({'ajax': 'jobsPaymentsDuration', 'duration': el.value});

}



var imageCropper = new Class({

Implements : [Events, Options],

options : {
maskOpacity:0.5,
left:0,
top:0,
maskClassName:'cropperMask',
moverClassName:'cropperMove',
resizerClassName:'cropperResize',
wrapperClassName:'cropperWrapper',
mini:{x:80,y:80},
onComplete:$empty,
resizerWidth:8,
ratio:0,
resizable:true,
keepRatio:true
},

initialize : function(target,options) {

window.addEvent('domready',function() {

this.target=$(target);

if(this.target.get('tag')!='img') {
return false;
}

this.setOptions(options);

this.mini={};
this.mini.x=this.options.mini.x.toInt();
this.mini.y=this.options.mini.y.toInt();

if(!this.options.resizable){
this.options.resizerWidth=0;
}

this.runonce = false;

new Asset.image(this.target.get('src'), {

onload:function(){
if(this.runonce){
return;
}
this.runonce=true;

this.buildCropper();
this.buildMask();

this.drag = new Drag.Move(this.resizer, {
container:this.target,
handle:this.dragger,
snap:5,
onComplete:function() {
this.fireEvent('onComplete',[this.top,this.left,this.width,this.height]);
}.bind(this),
onDrag:function() {
this.updateMask();
this.top = ((this.rezr_coord.top-this.target_coord.top)*this.scaleRatio).toInt();
this.left = ((this.rezr_coord.left-this.target_coord.left)*this.scaleRatio).toInt();
this.width = Math.max((this.rezr_coord.width*this.scaleRatio).toInt(),175);
this.height = Math.max((this.rezr_coord.height*this.scaleRatio).toInt(),175);
}.bind(this)
});

if (this.options.resizable) {

if(this.options.keepRatio){
this.ratio = this.mini.x/this.mini.y;
}
this.resize = this.resizer.makeResizable({
snap:5,
limit:{
x:[(this.mini.x/this.scaleRatio).toInt()-this.margin],
y:[(this.mini.y/this.scaleRatio).toInt()-this.margin]
},
onComplete:function() {
this.drag.fireEvent('onComplete');
}.bind(this),
onDrag:function() {
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
if (this.options.keepRatio) {
this.resizer.setStyle('width',(this.rezr_coord.height*this.ratio-this.margin).toInt()+'px');
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
if (this.rezr_coord.bottom>this.target_coord.bottom) {
var bound = this.target_coord.bottom-this.rezr_coord.top;
this.resizer.setStyles({'width':(bound*this.ratio).toInt()-this.margin+'px','height':bound-this.margin+'px'});
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
}
if (this.rezr_coord.right>this.target_coord.right) {
var bound = this.target_coord.right-this.rezr_coord.left;
this.resizer.setStyles({'width':bound-this.margin+'px','height':(bound/this.ratio).toInt()-this.margin+'px'});
}
} else {
if (this.rezr_coord.right>this.target_coord.right) {
var bound = this.target_coord.right-this.rezr_coord.left-this.margin+'px';
this.resizer.setStyle('width',bound);
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
}
if (this.rezr_coord.bottom>this.target_coord.bottom) {
var bound = this.target_coord.bottom-this.rezr_coord.top-this.margin+'px';
this.resizer.setStyle('height',bound);
}
}

this.drag.fireEvent('onDrag');
}.bind(this)
});
}

this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
this.show();

}.bind(this)
});
}.bind(this));
},

buildCropper : function(){

this.wrapper = new Element('div',{
'class':this.options.wrapperClassName,
'styles':{
'position':'relative',
'width' : this.target.getSize().x,
'height' :this.target.getSize().y,
'overflow':'hidden'
}
}).wraps(this.target);

this.border = this.target.getStyle('border-left');

this.target.setStyles({
'margin':0,
'border':0,
'float':'none'
});

this.target_coord=this.target.getCoordinates(this.wrapper);

new Asset.image(this.target.get('src'), {

onload:function(image) {
this.scaleRatio = image.get('width')/this.target_coord.width;
if (this.resize) {
if(this.scaleRatio<1) {
this.resizer.setStyles({
width:(this.mini.x/this.scaleRatio).toInt()-this.margin,
height:(this.mini.y/this.scaleRatio).toInt()-this.margin
});
}
this.resize.options.limit = {
x:[175-this.margin],
y:[175-this.margin]
};
this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
}
}.bind(this)
});

if(this.target_coord.width<this.mini.x){
this.mini.y = this.target_coord.width*this.mini.y/this.mini.x;
this.mini.x = this.target_coord.width;
}
if(this.target_coord.height<this.mini.y){
this.mini.x = this.target_coord.height*this.mini.x/this.mini.y;
this.mini.y = this.target_coord.height;
}

var left = (this.options.left != 0) ? this.options.left : (this.target_coord.left+(this.target_coord.width/2)-(this.mini.x/2)).toInt();
var top = (this.options.top != 0) ? this.options.top : (this.target_coord.top+(this.target_coord.height/2)-(this.mini.y/2)).toInt();

this.resizer = new Element('div',{
'class':this.options.resizerClassName,
'styles':{
'position':'absolute',
'display':'block',
'margin':0,
'opacity':0,
'width':this.mini.x,
'height':this.mini.y,
'left':left,
'top':top,
'padding':'0 ' + this.options.resizerWidth.toInt() + 'px ' + this.options.resizerWidth.toInt()+ 'px 0',
'z-index':5
}
}).inject(this.target,'after');

this.margin=2*this.resizer.getStyle('border-width').toInt() + this.options.resizerWidth.toInt();

this.resizer.setStyles({
width:this.mini.x - this.margin + "px",
height:this.mini.y - this.margin + "px"
});

this.dragger = new Element('div',{
'class':this.options.moverClassName,
'styles':{
'display':'block',
'position':'relative',
'width':'100%',
'height':'100%',
'margin':0,
'font-size':0,
'line-height':0
},
'events':{
'mousedown':function(e){
e.stop();
}
}
}).inject(this.resizer);

},

buildMask : function(){
this.innermask=this.target.clone();
this.innermask.setStyles({
'position':'absolute',
'padding':0,
'margin':0,
'top':0,
'left':0,
'z-index':4,
'opacity':0
}).inject(this.wrapper);
this.outtermask = new Element('div',{
'class':this.options.maskClassName,
'styles':{
'position':'absolute',
'padding':0,
'margin':0,
'top':0,
'left':0,
'width':'100%',
'height':this.target_coord.height,
'z-index':3,
'opacity':0
},
events:{
'click':this.moveToClick.bind(this)
}
}).inject(this.wrapper);
this.slide = new Fx.Elements($$(this.resizer,this.innermask),{
onComplete:function(){
this.updateMask();
this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
}.bind(this)
});
},

updateMask : function(){
//update the mask position
this.rezr_coord = this.resizer.getCoordinates(this.wrapper);
this.innermask.setStyle('clip','rect('+this.rezr_coord.top+'px '+this.rezr_coord.right+'px '+this.rezr_coord.bottom+'px '+this.rezr_coord.left+'px)');
},

moveToClick : function(e){
var mouseX = e.page.x;
var mouseY = e.page.y;
var wrap_coord = this.wrapper.getPosition();
var localX = mouseX-wrap_coord.x;
var localY = mouseY-wrap_coord.y;
var top = (localY-(this.rezr_coord.height/2).toInt()).limit(0,this.target_coord.height-this.rezr_coord.height);
var left = (localX-(this.rezr_coord.width/2).toInt()).limit(0,this.target_coord.width-this.rezr_coord.width);
var right = left+this.rezr_coord.width;
var bottom = top+this.rezr_coord.height;
var effect = {
0:{
'top':top,
'left':left
},
1:{
'clip':[[this.rezr_coord.top,this.rezr_coord.right,this.rezr_coord.bottom,this.rezr_coord.left],[top,right,bottom,left]]
}
};
this.slide.start(effect);
},

hide:function(){
$$(this.resizer,this.innermask,this.outtermask).fade('out');
},

show:function(){
$$(this.resizer,this.innermask).fade('in');
this.outtermask.fade(this.options.maskOpacity);
},

toggle:function(){
if(this.resizer.getStyle('opacity')==1){
this.hide();
}else{
this.show();
}
},

destroy:function(){
this.hide();
this.target.setStyle('border',this.border);
(function(){
this.target.replaces(this.wrapper);
}).delay(600,this);
}
});





window.addEvent('load',function() {

if ($('clientsImage') != null) {

var portraitCropper = new imageCropper('clientsImage',{
maskOpacity:0.5,
mini:{
x:$('cropWidth').get('value'),
y:$('cropHeight').get('value')
},
left: $('cropX').get('value').toInt(),
top: $('cropY').get('value').toInt(),
ratio: $('cropRatio').get('value').toInt(),
onComplete:function(top,left,width,height){
$('cropY').set('value',top);
$('cropX').set('value',left);
$('cropWidth').set('value',width);
$('cropHeight').set('value',height);
}
});

}

});




function adminClientsAccessSuccess (clientsId) {

tmpId = clientsId;
var mySpinner = new Spinner('clientsId'+tmpId, {message: lang['admin.clientsaccess.success.working']}).show();

new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
$('clientsId'+tmpId).fade(0);
$('clientsId'+tmpId).dispose();
} else {
MessageBox.status(lang['admin.clientsaccess.success.error']);
}
}}).get({'ajax': 'adminClientsAccessSuccess', 'client_id': tmpId});

return false;
}

function adminClientsAccessError (descStr, valueDefault, clientsId) {

tmpId = clientsId;
MessageBox.input(descStr, 'Bestätigen', valueDefault, adminClientsAccessErrorReal);

}

function adminClientsAccessErrorReal (value) {

var mySpinner = new Spinner('clientsId'+tmpId, {message: lang['admin.clientsaccess.error.working']}).show();

new Request.JSON({url: config['fileWeb'], onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
$('clientsId'+tmpId).dispose();
} else {
MessageBox.status(lang['admin.clientsaccess.error.error']);
}
}}).get({'ajax': 'adminClientsAccessError', 'client_id': tmpId, 'value': value});

}



var commentIdTmp = '';
var commentTmpTypeId = ''
var commentTmpType = ''

function deleteComment (type, typeId, commentId) {
commentIdTmp = commentId;
commentTmpTypeId = typeId;
commentTmpType = type;
MessageBox.confirm(lang['comment.delete.confirm'],deleteCommentReal);
}

function deleteCommentReal (Check) {

if (Check == true) {

var mySpinner = new Spinner('commentId'+commentIdTmp, {message: lang['comment.delete.working']}).show();

new Request.JSON({url: config['fileWeb']+'?'+commentTmpType+'='+commentTmpTypeId, onRequest: function(instance) { mySpinner.show(true); }, onComplete: function(response){
mySpinner.destroy();
if (response.status == "true") {
if (forwardTmp != '') window.location.href = forwardTmp;
$('commentId'+commentIdTmp).fade(0);
$('commentId'+commentIdTmp).dispose();
} else {
MessageBox.status(lang['comment.delete.error']);
}
}}).get({'ajax': 'deleteComment', 'comment_id': commentIdTmp});

}
}




function commentsProtected (id) {

tooltipObj.hide();

new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('commentsProtected'+id).innerHTML = response.msg;
$$('#commentsProtected'+id+' .tooltip').each(tooltipObj.build, tooltipObj);
}
}}).get({'ajax': 'commentsProtectedStatus', 'comment_id': id});

}




window.addEvent('domready', function() {

if ($('loadMoreContentButton') != null) {

$('loadMoreContentButton').addEvent('click', function() {

var contentDetails = '';
var year = '';
 var tag = '';
var ajax = '';
var search = '';
var params = $('loadMoreContentButton').getProperty('href').replace(/#/, '').parseQueryString();
if (params.year) year = params.year;
if (params.tag) tag = params.tag;
if (params.ajax) ajax = params.ajax;
if (params.search) search = params.search;

//letzte ID ermitteln
$$('#contentList li').each(function(item, index) {
contentDetails = item.get('id');
});
contentDetails = contentDetails.split('-');

//Ajax-Request ermitteln
new Request.JSON({url: config['fileWeb'], onRequest: function(instance) {  }, onComplete: function(response){

if (response.status == "true") {

var els = Elements.from(response.html);
els.inject($('contentList'), 'bottom');

if ($('loadMoreCount') != null) $('loadMoreCount').set('text', $('loadMoreCount').get('text').toInt()+response.count.toInt());

if (response.end == "true") $('loadMoreContent').dispose();

} else {

$('loadMoreContent').dispose();

}

}}).get({'ajax': ajax, 'id': contentDetails[1], 'timestamp': contentDetails[2], 'year': year, 'search': search, 'tag': tag});

return false;
});
}
});



function documentsSelector (type, fieldId, documentPath, documentId, documentType, documentSize, documentTitle, previewId) {

var insert = '';

if (type == 'complete') {

insert = '<a href="' + documentPath + '" class="doctype_' + documentType + '">' + documentTitle + '</a>';

parent.insertImg(insert, fieldId);

} else {

insert = '<a href="' + documentPath + '" class="doctype_' + documentType + '">' + documentTitle + ' ('+documentSize+' KB)</a>';

parent.documentSelectorPreview(previewId, insert, documentId, documentTitle, documentType, documentPath, documentSize);

}

parent.SqueezeBox.close();
}




function documentSelectorPreview (previewId, documentPreview, documentId, documentTitle, documentType, documentPath, documentSize) {

$(previewId+'_document_preview').set('html', documentPreview);
$(previewId+'_document_preview').setStyle('display', 'inline');
$(previewId+'_document_delete').setStyle('display', 'inline');
$(previewId+'_document').value = documentId;
$(previewId+'_document_title').value = documentTitle;
$(previewId+'_document_type').value = documentType;
$(previewId+'_document_path').value = documentPath;
$(previewId+'_document_size').value = documentSize;

}




var documentsSortable = '';

window.addEvent('load', function() {

if ($('contentDocumentsListView') != null) documentsSortableInit();

});


function documentsSortableInit () {

documentsSortable = new Sortables($('contentDocumentsListView'), {
constrain: true,
opacity: 0.5,
handle: 'span img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';

//Sidebar durchlaufen
$$('#contentDocumentsListView > li').each(function(item) {

if (item.getProperty('id') != null) {
if (elements != '') elements += '::';
elements += item.getProperty('id').replace(/document_id/g, "");
}

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=documentsSortableSave', onComplete: function(response){
if (response.status == "false") {
alert("Die neue Reihenfolge der Bilder konnte nicht gespeichert werden!");
}
}}).post({'elements': elements});

}
});

}




window.addEvent('domready', function() {

if ($('eventStartDate') != null && $('eventEndDate') != null && $('eventStartTime') != null && $('eventEndTime') != null) {

$('eventStartDate').addEvent('change', function(e) {

var eventStartDate = 0;
var eventEndDate = 0;
if ($('eventStartDate').value.match(/^(\d\d).(\d\d).(\d\d\d\d)$/)) eventStartDate = RegExp.$3+RegExp.$2+RegExp.$1;
if ($('eventEndDate').value.match(/^(\d\d).(\d\d).(\d\d\d\d)$/)) eventEndDate = RegExp.$3+RegExp.$2+RegExp.$1;

if (eventStartDate > eventEndDate) {
$('eventEndDate').value = $('eventStartDate').value;
if ($('eventStartTime').value > $('eventEndTime').value) $('eventEndTime').value = $('eventStartTime').value;
}

});

$('eventStartTime').addEvent('change', function(e) {

if ($('eventStartDate').value == $('eventEndDate').value && $('eventStartTime').value > $('eventEndTime').value) {
$('eventEndTime').value = $('eventStartTime').value;
}

if ($('eventStartTime').value == '') {
$('eventEndMore').setStyle('display', 'none');
$('eventEndTime').value = '';
} else {
$('eventEndMore').setStyle('display', 'inline');
$('eventEndTime').value = $('eventStartTime').value;
}
});

if ($('eventStartTime').value == '') {
$('eventEndMore').setStyle('display', 'none');
$('eventEndTime').value = '';
}

}
});




function eventsVisitorsStatusUpdate (id, item) {

item.setStyle('margin-left', '20px');

var spinner = new Element('img').setProperty('src', config["pathSystem"]+'images/spinner.gif').addClass('spinner').setStyles({
'visibile': 'hidden',
'margin-left': '5px'
}).inject(item, 'after');

new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status != "true") {

alert('Ein Fehler ist beim Speichern des neuen Statuses leider aufgetreten');

}

item.setStyle('margin-left', '0');
spinner.dispose();

}}).get({'ajax': 'eventsVisitorsStatusUpdate', 'eventsvisitor_id': id, 'value': item.value});
}







function updateEventsVisitorPrice (price, item) {

var newPrice = String(((item.value.toInt() + 1) * price.toFloat()).round(2));
$('eventsVisitorPrice').set('html', newPrice.replace('.', ',') + ' Euro');

}







function eventsSearchUpdate (elem) {

var mySpinner = new Spinner('jobsSearchForm', {message: lang["spinner.working"]}).show();

var value = elem.value;
var key = elem.get('name');

new Request.JSON({url: config["fileWeb"]+'?ajax=eventsSearchUpdate', onComplete: function(response){

if (response.status == "true") {

$('eventsList').set('html', '');
$('eventsSearchErg').set('html', response.erg);

var els = Elements.from(response.list);
els.inject($('eventsList'), 'bottom');

mySpinner.destroy();

}
}}).post({'key': key, 'value': value});

}








window.addEvent('load', function() {

if ($('eventsSearchCity') != null) {
new Autocompleter.Ajax.Json('eventsSearchCity', config["fileWeb"]+'?ajax=autoCompleteEventsCity', {

'postVar': 'search',
'minLength': 1,
'selectMode': 'pick',
'onSelection': function () { eventsSearchUpdate($('eventsSearchCity')); }

});
}

//Autocomplete fuer Stichwoerter vorbereiten
if ($('eventsTagsSearch') != null) {

var tjob = new TextboxList('eventsTagsSearch', {unique: true, max: 3, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: true,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteEventsTags'}
}}});

tjob.addEvent('bitAdd', function(e){
eventsSearchUpdate($('eventsTagsSearch'));
});
tjob.addEvent('bitRemove', function(e){
eventsSearchUpdate($('eventsTagsSearch'));
});
}

});







window.addEvent('domready', function() {

if ($('loadMoreEventsButton') != null) {

$('loadMoreEventsButton').addEvent('click', function() {

var contentDetails = '';
var year = '';
 var tag = '';
var ajax = '';
var search = '';
var params = $('loadMoreEventsButton').getProperty('href').replace(/#/, '').parseQueryString();
if (params.year) year = params.year;
if (params.tag) tag = params.tag;
if (params.ajax) ajax = params.ajax;
if (params.search) search = params.search;

//letzte ID ermitteln
$$('#eventsList li').each(function(item, index) {
contentDetails = item.get('id');
});
contentDetails = contentDetails.split('-');

//Ajax-Request ermitteln
new Request.JSON({url: config['fileWeb'], onRequest: function(instance) {  }, onComplete: function(response){

if (response.status == "true") {

var els = Elements.from(response.html);
els.inject($('eventsList'), 'bottom');

if ($('loadMoreCount') != null) $('loadMoreCount').set('text', $('loadMoreCount').get('text').toInt()+response.count.toInt());

if (response.end == "true") $('loadMoreEvents').dispose();

} else {

$('loadMoreEvents').dispose();

}

}}).get({'ajax': ajax, 'id': contentDetails[1], 'timestamp': contentDetails[2], 'year': year, 'search': search, 'tag': tag});

return false;
});
}
});



function checkFundingTimeVisibility (item) {

if (item.value == 2) {
$('funding_time_details').removeClass('element_hidden');
} else {
$('funding_time_details').addClass('element_hidden');

}

}




function fundingsSearchUpdate (elem) {

var mySpinner = new Spinner('jobsSearchForm', {message: lang["spinner.working"]}).show();

var value = elem.value;
var key = elem.get('name');

new Request.JSON({url: config["fileWeb"]+'?ajax=fundingsSearchUpdate', onComplete: function(response){

if (response.status == "true") {

$('fundingsList').set('html', '');
$('fundingsSearchErg').set('html', response.erg);

var els = Elements.from(response.list);
els.inject($('fundingsList'), 'bottom');

mySpinner.destroy();

}
}}).post({'key': key, 'value': value});

}






window.addEvent('load', function() {

if ($('fundingsSearchCity') != null) {
new Autocompleter.Ajax.Json('fundingsSearchCity', config["fileWeb"]+'?ajax=autoCompleteFundingsCity', {

'postVar': 'search',
'minLength': 1,
'selectMode': 'pick',
'onSelection': function () { fundingsSearchUpdate($('fundingsSearchCity')); }

});
}

//Autocomplete fuer Stichwoerter vorbereiten
if ($('fundingsTagsSearch') != null) {

var tfund = new TextboxList('fundingsTagsSearch', {unique: true, max: 3, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: true,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteFundingsTags'}
}}});

tfund.addEvent('bitAdd', function(e){
fundingsSearchUpdate($('fundingsTagsSearch'));
});
tfund.addEvent('bitRemove', function(e){
fundingsSearchUpdate($('fundingsTagsSearch'));
});
}
});






window.addEvent('domready', function() {

if ($('loadMoreFundingsButton') != null) {

$('loadMoreFundingsButton').addEvent('click', function() {

var contentDetails = '';
var year = '';
 var tag = '';
var ajax = '';
var search = '';
var params = $('loadMoreFundingsButton').getProperty('href').replace(/#/, '').parseQueryString();
if (params.year) year = params.year;
if (params.tag) tag = params.tag;
if (params.ajax) ajax = params.ajax;
if (params.search) search = params.search;

//letzte ID ermitteln
$$('#fundingsList li').each(function(item, index) {
contentDetails = item.get('id');
});
contentDetails = contentDetails.split('-');

//Ajax-Request ermitteln
new Request.JSON({url: config['fileWeb'], onRequest: function(instance) {  }, onComplete: function(response){

if (response.status == "true") {

var els = Elements.from(response.html);
els.inject($('fundingsList'), 'bottom');

if ($('loadMoreCount') != null) $('loadMoreCount').set('text', $('loadMoreCount').get('text').toInt()+response.count.toInt());

if (response.end == "true") $('loadMoreFundings').dispose();

} else {

$('loadMoreFundings').dispose();

}

}}).get({'ajax': ajax, 'id': contentDetails[1], 'timestamp': contentDetails[2], 'year': year, 'search': search, 'tag': tag});

return false;
});
}
});



function updateAreasStati () {

new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status == "true") {

$$('.areastatus').each(function(el){

var id = el.id.replace(/area/, '').replace(/Status/, '');

if (response.banner.contains(id)) {

$(el.id).set('text', response.langclose);
$(el.id).removeClass('status1');
$(el.id).addClass('status3');

} else {

$(el.id).set('text', response.langfree);
$(el.id).removeClass('status3');
$(el.id).addClass('status1');

}

});

}

}}).get({'ajax': 'updateAreasStati', 'date': $('ad_date').value, 'duration': $('ad_duration').value});

}




function toogleAdsStatsDetails (id) {

$$('.statsdetails'+id).each(function(el){

if (el.hasClass('hidden')) {
el.removeClass('hidden');
} else {
el.addClass('hidden');
}

});

}


//Highlights per Slider abwechselnd anzeigen

window.addEvent('domready', function() {


if ($('highlightsList') != null) {

var highlightsShow = new SlideBullets('highlightsList', 'highlightsNavi', {
transition: 'fadeThroughBackground',
delay: 9000,
duration: 750,
autoplay: true
});

//Navigation fuer Slideshow  erzeugen
var highlightsNavi = new Element('ul').addClass('highlightsnavi').inject($('highlights'), 'bottom');
$$('#highlightsList li').each(function(element, index){
var highlightsNaviElement = new Element('li').setProperty('id', 'highlightsNavi'+(index+1)).set('text', index+1).inject(highlightsNavi, 'bottom');
if (index == 0) highlightsNaviElement.addClass('active');
highlightsNaviElement.addEvent('click', function(){
var currentIndex = highlightsShow.slides.indexOf(highlightsShow.current);
var transition = (currentIndex < index) ? 'pushLeft' : 'pushRight';
highlightsShow.show(index, { transition: transition });
});
});

if ($('highlightsLeft') != null) {
$('highlightsLeft').addEvent('click', function(){
highlightsShow.showPrevious({ transition: 'pushRight' });
});
}

if ($('highlightsRight') != null) {
$('highlightsRight').addEvent('click', function(){
highlightsShow.showNext({ transition: 'pushLeft' });
});
}

$('highlights').addEvent('mouseenter', function(){
highlightsShow.pause();
});

$('highlights').addEvent('mouseleave', function(){
highlightsShow.play();
});

}

});



var imagesSortable = '';

window.addEvent('load', function() {

if ($('contentImagesListView') != null) {

imagesSortableInit();

}

});


function imagesSortableInit () {

imagesSortable = new Sortables($('contentImagesListView'), {
constrain: true,
opacity: 0.5,
handle: 'span img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';
var contentId = 0;
var contentType = '';

//zugehoerigen Inhalt ermitteln
if ($('contentImagesListView').getProperty('rel') != '') {

var tmp = $('contentImagesListView').getProperty('rel').split('_');
contentId = tmp[1];
contentType = tmp[2];

}

//Sidebar durchlaufen
$$('#contentImagesListView > li').each(function(item) {

if (item.getProperty('id') != null) {
if (elements != '') elements += '::';
elements += item.getProperty('id').replace(/image_id/g, "");
}

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=imagesSortableSave&content_id='+contentId+'&content_type='+contentType, onComplete: function(response){
if (response.status == "false") {
alert("Die neue Reihenfolge der Bilder konnte nicht gespeichert werden!");
}
}}).post({'elements': elements});

}
});

}



/**
 * Swiff.Uploader - Flash FileReference Control
 *
 * @version1.2
 *
 * @licenseMIT License
 *
 * @authorHarald Kirschner <mail [at] digitarald [dot] de>
 * @copyrightAuthors
 */

Swiff.Uploader = new Class({

Extends: Swiff,

Implements: Events,

options: {
path: 'Swiff.Uploader.swf',
multiple: true,
queued: true,
typeFilter: null,
url: null,
method: 'post',
data: null,
fieldName: 'imagefile',
target: null,
height: '100%',
width: '100%',
callBacks: null
},

initialize: function(options){
if (Browser.Plugins.Flash.version < 9) return false;
this.setOptions(options);

var callBacks = this.options.callBacks || this;
if (callBacks.onLoad) this.addEvent('onLoad', callBacks.onLoad);
if (!callBacks.onBrowse) {
callBacks.onBrowse = function() {
return this.options.typeFilter;
}
}

var prepare = {}, self = this;
['onBrowse', 'onSelect', 'onAllSelect', 'onCancel', 'onBeforeOpen', 'onOpen', 'onProgress', 'onComplete', 'onError', 'onAllComplete'].each(function(index) {
var fn = callBacks[index] || $empty;
prepare[index] = function() {
self.fireEvent(index, arguments, 10);
return fn.apply(self, arguments);
};
});

prepare.onLoad = this.load.create({delay: 10, bind: this});
this.options.callBacks = prepare;

var path = this.options.path;
if (!path.contains('?')) path += '?noCache=' + $time(); // quick fix

this.parent(path);

var scroll = window.getScroll();
this.box = new Element('div', {
styles: {
position: 'absolute',
visibility: 'visible',
zIndex: 9999,
overflow: 'hidden',
height: 15, width: 15,
top: scroll.y, left: scroll.x
}
});
this.inject(this.box);
this.box.inject($(this.options.container) || document.body);

return this;
},

load: function(){
this.remote('register', this.instance, this.options.multiple, this.options.queued);
this.fireEvent('onLoad');

this.target = $(this.options.target);
if (Browser.Plugins.Flash.version >= 10 && this.target) {
this.reposition();
window.addEvent('resize', this.reposition.bind(this));
}
},

reposition: function() {
var pos = this.target.getCoordinates();
this.box.setStyles(pos);
},



browse: function(typeFilter){
this.options.typeFilter = $pick(typeFilter, this.options.typeFilter);
return this.remote('browse');
},



upload: function(options){
var current = this.options;
options = $extend({data: current.data, url: current.url, method: current.method, fieldName: current.fieldName}, options);
if ($type(options.data) == 'element') options.data = $(options.data).toQueryString();
return this.remote('upload', options);
},



removeFile: function(file){
if (file) file = {name: file.name, size: file.size};
return this.remote('removeFile', file);
},



getFileList: function(){
return this.remote('getFileList');
}

});




/**
 * Fx.ProgressBar
 *
 * @version1.0
 *
 * @licenseMIT License
 *
 * @authorHarald Kirschner <mail [at] digitarald [dot] de>
 * @copyrightAuthors
 */

Fx.ProgressBar = new Class({

Extends: Fx,

options: {
text: null,
transition: Fx.Transitions.Circ.easeOut,
link: 'cancel'
},

initialize: function(element, options) {
this.element = $(element);
this.parent(options);
this.text = $(this.options.text);
this.set(0);
},

start: function(to, total) {
return this.parent(this.now, (arguments.length == 1) ? to.limit(0, 100) : to / total * 100);
},

set: function(to) {
this.now = to;
this.element.setStyle('backgroundPosition', (100 - to) + '% 0px');
if (this.text) this.text.set('text', Math.round(to) + '%');
return this;
}

});




/**
 * FancyUpload - Flash meets Ajax for powerful and elegant uploads.
 *
 * @version2.1
 *
 * @licenseMIT License
 *
 * @authorHarald Kirschner <mail [at] digitarald [dot] de>
 * @copyrightAuthors
 */

var FancyUpload2 = new Class({

Extends: Swiff.Uploader,

options: {
limitSize: false,
limitFiles: 25,
instantStart: false,
allowDuplicates: false,
validateFile: $lambda(true), // provide a function that returns true for valid and false for invalid files.
debug: false,

fileInvalid: null, // called for invalid files with error stack as 2nd argument
fileCreate: null, // creates file element after select
fileUpload: null, // called when file is opened for upload, allows to modify the upload options (2nd argument) for every upload
fileComplete: null, // updates the file element to completed state and gets the response (2nd argument)
fileRemove: null // removes the element
/**
 * Events:
 * onBrowse, onSelect, onAllSelect, onCancel, onBeforeOpen, onOpen, onProgress, onComplete, onError, onAllComplete
 */
},

initialize: function(status, list, options) {
this.status = $(status);
this.list = $(list);

this.files = [];

if (options.callBacks) {
this.addEvents(options.callBacks);
options.callBacks = null;
}

this.parent(options);
this.render();
},

render: function() {
this.overallTitle = this.status.getElement('.overall-title');
this.currentTitle = this.status.getElement('.current-title');
this.currentText = this.status.getElement('.current-text');

var progress = this.status.getElement('.overall-progress');
this.overallProgress = new Fx.ProgressBar(progress, {
text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')
});
progress = this.status.getElement('.current-progress')
this.currentProgress = new Fx.ProgressBar(progress, {
text: new Element('span', {'class': 'progress-text'}).inject(progress, 'after')
});
},

onLoad: function() {
this.log('Uploader ready!');
},

onBeforeOpen: function(file, options) {
this.log('Initialize upload for "{name}".', file);
var fn = this.options.fileUpload;
var obj = (fn) ? fn.call(this, this.getFile(file), options) : options;
return obj;
},

onOpen: function(file, overall) {
this.log('Starting upload "{name}".', file);
file = this.getFile(file);
file.element.addClass('file-uploading');
this.currentProgress.cancel().set(0);
this.currentTitle.set('html', 'File Progress "{name}"'.substitute(file) );
},

onProgress: function(file, current, overall) {
this.overallProgress.start(overall.bytesLoaded, overall.bytesTotal);
this.currentText.set('html', 'Upload with {rate}/s. Time left: ~{timeLeft}'.substitute({
rate: (current.rate) ? this.sizeToKB(current.rate) : '- B',
timeLeft: Date.fancyDuration(current.timeLeft || 0)
}));
this.currentProgress.start(current.bytesLoaded, current.bytesTotal);
},

onSelect: function(file, index, length) {
var errors = [];
if (this.options.limitSize && (file.size > this.options.limitSize)) errors.push('size');
if (this.options.limitFiles && (this.countFiles() >= this.options.limitFiles)) errors.push('length');
if (!this.options.allowDuplicates && this.getFile(file)) errors.push('duplicate');
if (!this.options.validateFile.call(this, file, errors)) errors.push('custom');
if (errors.length) {
var fn = this.options.fileInvalid;
if (fn) fn.call(this, file, errors);
return false;
}
(this.options.fileCreate || this.fileCreate).call(this, file);
this.files.push(file);
window.fireEvent('resize');
return true;
},

onAllSelect: function(files, current, overall) {
this.log('Added ' + files.length + ' files, now we have (' + current.bytesTotal + ' bytes).', arguments);
this.updateOverall(current.bytesTotal);
this.status.removeClass('status-browsing');
if (this.files.length && this.options.instantStart) this.upload.delay(10, this);
},

onComplete: function(file, response) {
this.log('Completed upload "' + file.name + '".', arguments);
this.currentText.set('html', 'Upload complete!');
this.currentProgress.start(100);
(this.options.fileComplete || this.fileComplete).call(this, this.finishFile(file), response);
},

onError: function(file, error, info) {
this.log('Upload "' + file.name + '" failed. "{1}": "{2}".', arguments);
(this.options.fileError || this.fileError).call(this, this.finishFile(file), error, info);
},

onCancel: function() {
this.log('Filebrowser cancelled.', arguments);
this.status.removeClass('file-browsing');
},

onAllComplete: function(current) {
this.log('Completed all files, ' + current.bytesTotal + ' bytes.', arguments);
this.updateOverall(current.bytesTotal);
this.overallProgress.start(100);
this.status.removeClass('file-uploading');
},

browse: function(fileList) {
var ret = this.parent(fileList);
if (ret !== true){
if (ret) this.log('An error occured: ' + ret);
else this.log('Browse in progress.');
} else {
this.log('Browse started.');
this.status.addClass('file-browsing');
}
},

upload: function(options) {
var ret = this.parent(options);
if (ret !== true) {
this.log('Upload in progress or nothing to upload.');
if (ret) alert(ret);
} else {
this.log('Upload started.');
this.status.addClass('file-uploading');
this.overallProgress.set(0);
}
},

removeFile: function(file) {
var remove = this.options.fileRemove || this.fileRemove;
if (!file) {
this.files.each(remove, this);
this.files.empty();
this.updateOverall(0);
} else {
if (!file.element) file = this.getFile(file);
this.files.erase(file);
remove.call(this, file);
this.updateOverall(this.bytesTotal - file.size);
}
this.parent(file);
},

getFile: function(file) {
var ret = null;
this.files.some(function(value) {
if ((value.name != file.name) || (value.size != file.size)) return false;
ret = value;
return true;
});
return ret;
},

countFiles: function() {
var ret = 0;
for (var i = 0, j = this.files.length; i < j; i++) {
if (!this.files[i].finished) ret++;
}
return ret;
},

updateOverall: function(bytesTotal) {
this.bytesTotal = bytesTotal;
this.overallTitle.set('html', 'Overall Progress (' + this.sizeToKB(bytesTotal) + ')');
},

finishFile: function(file) {
file = this.getFile(file);
file.element.removeClass('file-uploading');
file.finished = true;
return file;
},

fileCreate: function(file) {
file.info = new Element('span', {'class': 'file-info'});
file.element = new Element('li', {'class': 'file'}).adopt(
new Element('span', {'class': 'file-size', 'html': this.sizeToKB(file.size)}),
new Element('img', {
'class': 'file-remove icon',
'src': config["pathSystem"] + 'images/icon_delete.gif',
'alt': 'Löschen',
'events': {
'click': function() {
this.removeFile(file);
return false;
}.bind(this)
}
}),
new Element('span', {'class': 'file-name', 'html': file.name}),
file.info
).inject(this.list);
},

fileComplete: function(file, response) {
this.options.processResponse || this
var json = $H(JSON.decode(response, true));
if (json.get('result') == 'success') {
file.element.addClass('file-success');
//file.info.set('html', json.get('size'));
} else {
file.element.addClass('file-failed');
//file.info.set('html', json.get('error') || response);
}
},

fileError: function(file, error, info) {
file.element.addClass('file-failed');
file.info.set('html', '<strong>' + error + '</strong><br />' + info);
},

fileRemove: function(file) {
file.element.fade('out').retrieve('tween').chain(Element.destroy.bind(Element, file.element));
},

sizeToKB: function(size) {
var unit = 'B';
if ((size / 1048576) > 1) {
unit = 'MB';
size /= 1048576;
} else if ((size / 1024) > 1) {
unit = 'KB';
size /= 1024;
}
return size.round(1) + ' ' + unit;
},

log: function(text, args) {
if (this.options.debug && window.console) console.log(text.substitute(args || {}));
}

});

/**
 * @todo Clean-up, into Date.js
 */
Date.parseDuration = function(sec) {
var units = {}, conv = Date.durations;
for (var unit in conv) {
var value = Math.floor(sec / conv[unit]);
if (value) {
units[unit] = value;
if (!(sec -= value * conv[unit])) break;
}
}
return units;
};

Date.fancyDuration = function(sec) {
var ret = [], units = Date.parseDuration(sec);
for (var unit in units) ret.push(units[unit] + Date.durationsAbbr[unit]);
return ret.join(', ');
};

Date.durations = {years: 31556926, months: 2629743.83, days: 86400, hours: 3600, minutes: 60, seconds: 1, milliseconds: 0.001};
Date.durationsAbbr = {
years: 'j',
months: 'm',
days: 'd',
hours: 'h',
minutes: 'min',
seconds: 'sec',
milliseconds: 'ms'
};





var StatusBox = {

init: function(options) {
this.options = Object.extend({
resizeTransition: Fx.Transitions.sineInOut,
resizeDuration: 400,// Duration of height and width resizing (ms)
initialWidth: 350,// Initial width of the box (px)
initialHeight: 100,// Initial height of the box (px)
animateCaption: false// Enable/Disable caption animation
}, options || {});

this.eventPosition = this.position.bind(this);

this.overlay = new Element('div').setProperty('id', 'lbOverlay').injectInside(document.body);

this.center = new Element('div').setProperty('id', 'lbCenter').setStyles({width: this.options.initialWidth+'px', height: 'auto', marginLeft: '-'+(this.options.initialWidth/2)+'px', display: 'none'}).injectInside(document.body);
this.buttons = new Element('div').setProperty('id', 'lbButtons').injectInside(this.center);

this.isOpen = this.isLoading = false;

this.buttons.set('html', '');

this.demoStatus = new Element('div', {
'id': 'demo-status'
});

this.demoStatus.set('html', '<strong class="overall-title">Overall progress</strong><br /><img src="'+config["pathSystem"]+'plugins/images/bar.gif" class="progress overall-progress" /></div><div><strong class="current-title">File Progress</strong><br /><img src="'+config["pathSystem"]+'plugins/images/bar.gif" class="progress current-progress" /></div><div class="current-text"></div>');

this.demoStatus.injectInside(this.buttons);

this.fx = {
overlay: new Fx.Tween(this.overlay, {
property: 'opacity',
onStart: Events.prototype.clearChain,
duration: 500,
link: 'cancel'
}).set(0)
};
$(document.body).adopt(this.overlay);


},

open: function() {
this.position();
this.setup(true);
this.top = window.getScrollTop() + (window.getHeight() / 15) + 100;
this.center.setStyles({top: this.top+'px', display: ''});
this.fx.overlay.start(0.8);

this.isOpen = true;

return false;
},

position: function() {
this.overlay.setStyles({top: window.getScrollTop()+'px', height: window.getHeight()+'px'});
},

setup: function(open) {
var elements = $A(document.getElementsByTagName('object'));
if (window.ie) elements.extend(document.getElementsByTagName('select'));
elements.each(function(el){ el.style.visibility = open ? 'hidden' : ''; });
var fn = open ? 'addEvent' : 'removeEvent';
window[fn]('scroll', this.eventPosition)[fn]('resize', this.eventPosition);
this.step = 0;
},

close: function(e) {
var stoppable = ($type(e) == 'event');
if (stoppable) e.stop();
if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this;
this.fx.overlay.start(0);
this.center.setStyle('display', 'none');
this.isOpen = false;
return this;
}

};


window.addEvent('load', StatusBox.init.bind(StatusBox));




window.addEvent('load', function() {

if ($('demo-browse') != null) {

var counter = multiCounter = 0;

var swiffy = new FancyUpload2($('demo-status'), $('demo-list'), {
'url': config["fileWeb"]+'?ajax=uploadImages',
'fieldName': 'imagefile',
'path': config['pathSystem']+'plugins/images/Swiff.Uploader.swf',
limitSize: 2.5 * 1024 * 1024, // 2Mb
'data': $('contentform'),
debug: true, // enable logs, uses console.log
target: 'demo-browse', // the element for the overlay (Flash 10 only)
'onAllComplete': function() {
StatusBox.close();
swiffy.removeFile();
counter = 0;
window.location.href = "../";
},
'onBeforeOpen': function() {
if (counter == 0) {
StatusBox.open();
counter++;
}
},
'fileUpload': function(file, options) {
multiCounter = multiCounter + 1;
options.data = options.data+'&counter='+multiCounter;
return options;
}

});

swiffy.options.typeFilter = {'Images (*.jpg, *.jpeg, *.gif, *.png)': '*.jpg; *.jpeg; *.gif; *.png'};
 
$('demo-browse').addEvent('click', function() {

swiffy.browse();
return false;
});
 
$('demo-clear').addEvent('click', function() {
swiffy.removeFile();
return false;
});
 
$('saveContentNext').addEvent('click', function() {
swiffy.upload();
return false;
});
}

});








function imageSelector (type, fieldId, imagePath, imageType, imagePreview, previewId) {

var formElements = document.forms['imagesselect'].elements;
var insert = '';
var className = '';
var source = '';

if (type == 'complete') {

//Bildausrichtung
if (formElements['image_align'][1].checked == true) {
className = ' class="align_left"';
} else if (formElements['image_align'][2].checked == true) {
className = ' class="align_center"';
} else if (formElements['image_align'][3].checked == true) {
className = ' class="align_right"';
}

//Bildvariante
if (formElements['image_source'].value != "") source = '.'+formElements['image_source'].value;

if (formElements['image_url'].value != '') insert = insert + '<a href="' + formElements['image_url'].value + '"' + className + '>';
insert = insert + '<img src="' + imagePath.replace('.'+imageType, source+'.'+imageType) + '" ';
if (formElements['image_url'].value == '') insert = insert + className;
if (formElements['image_teaser'].value != '') insert = insert + ' title="' + formElements['image_teaser'].value + '" ';
insert = insert + ' alt="" />';
if (formElements['image_url'].value != '') insert = insert + '</a>';

parent.insertImg(insert, fieldId);

} else {

parent.imageSelectorThumb(previewId, imagePreview, imagePath);

}

parent.SqueezeBox.close();
}




function imageSelectorThumb (previewId, imagePreview, imagePath) {

$(previewId+'_image_preview').set('src', imagePreview);
if ($(previewId+'_image_preview').getStyle('display') == 'none') $(previewId+'_image_preview').setStyle('display', 'inline');
$(previewId+'_image').value = imagePath;

}




function imageSelectorExtern (fieldId) {

var formElements = document.forms['imagesselectextern'].elements;
var insert = '<img src="' + formElements['image_extern'].value + '" alt="" />';

parent.insertImg(insert, fieldId);
parent.SqueezeBox.close();
}



function checkJobTimeVisibility (item) {

if (item.value == 2) {
$('job_time_details').removeClass('element_hidden');
} else {
$('job_time_details').addClass('element_hidden');

}

}




function jobsSearchUpdate (elem) {

var mySpinner = new Spinner('jobsSearchForm', {message: lang["spinner.working"]}).show();

var value = elem.value;
var key = elem.get('name');

new Request.JSON({url: config["fileWeb"]+'?ajax=jobsSearchUpdate', onComplete: function(response){

if (response.status == "true") {

$('jobsList').set('html', '');
$('jobsSearchErg').set('html', response.erg);

var els = Elements.from(response.list);
els.inject($('jobsList'), 'bottom');

mySpinner.destroy();

}
}}).post({'key': key, 'value': value});

}





window.addEvent('load', function() {

if ($('jobsSearchCity') != null) {
new Autocompleter.Ajax.Json('jobsSearchCity', config["fileWeb"]+'?ajax=autoCompleteJobsCity', {

'postVar': 'search',
'minLength': 1,
'selectMode': 'pick',
'onSelection': function () { jobsSearchUpdate($('jobsSearchCity')); }

});
}

//Autocomplete fuer Stichwoerter vorbereiten
if ($('jobsTagsSearch') != null) {

var tjob = new TextboxList('jobsTagsSearch', {unique: true, max: 3, plugins: {autocomplete: {
minLength: 3,
onlyFromValues: true,
queryRemote: true,
placeholder: lang["form.tags.placeholder"],
remote: {url: config["fileWeb"]+'?ajax=autoCompleteJobsTags'}
}}});

tjob.addEvent('bitAdd', function(e){
jobsSearchUpdate($('jobsTagsSearch'));
});
tjob.addEvent('bitRemove', function(e){
jobsSearchUpdate($('jobsTagsSearch'));
});
}

});





window.addEvent('domready', function() {

if ($('loadMoreJobsButton') != null) {

$('loadMoreJobsButton').addEvent('click', function() {

var contentDetails = '';
var year = '';
 var tag = '';
var ajax = '';
var search = '';
var params = $('loadMoreJobsButton').getProperty('href').replace(/#/, '').parseQueryString();
if (params.year) year = params.year;
if (params.tag) tag = params.tag;
if (params.ajax) ajax = params.ajax;
if (params.search) search = params.search;

//letzte ID ermitteln
$$('#jobsList li').each(function(item, index) {
contentDetails = item.get('id');
});
contentDetails = contentDetails.split('-');

//Ajax-Request ermitteln
new Request.JSON({url: config['fileWeb'], onRequest: function(instance) {  }, onComplete: function(response){

if (response.status == "true") {

var els = Elements.from(response.html);
els.inject($('jobsList'), 'bottom');

if ($('loadMoreCount') != null) $('loadMoreCount').set('text', $('loadMoreCount').get('text').toInt()+response.count.toInt());

if (response.end == "true") $('loadMoreJobs').dispose();

} else {

$('loadMoreJobs').dispose();

}

}}).get({'ajax': ajax, 'id': contentDetails[1], 'timestamp': contentDetails[2], 'year': year, 'search': search, 'tag': tag});

return false;
});
}
});



function createSpinner (imgFile, container, position) {

if ($(container) != null) {

var imgEdit = new Element('img', {
'src' : config["pathSystem"]+'images/'+imgFile,
'class': 'edit'
});

imgEdit.inject($(container), position);

}

}





var sidebarSortable = '';

window.addEvent('load', function() {

if ($('sidebarlist') != null && $('sidebarlist').getProperty('rel') == 'pageedit') {

sidebarSortableInit();

}

});

function sidebarSortableInit () {

sidebarSortable = new Sortables($('sidebarlist'), {
constrain: true,
opacity: 0.5,
handle: 'h3 img.icon',
onComplete: function(response){

//Variablen initialisieren
var elements = '';

//Sidebar durchlaufen
$$('#sidebarlist > li').each(function(item) {

if (elements != '') elements += '::';
elements += item.getProperty('rel');

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=sidebarStructureSave', onComplete: function(response){
if (response.status == "false") {
alert("Die neue Reihenfolge der Sidebar konnte nicht gespeichert werden!");
}
}}).post({'key': config["act"], 'elements': elements});

}
});

}




/**
 * Element in der Sidebar aendern
 */

function sidebarElementEdit (type, activitiy, elementId, file, act) {

var ajax = '';
ajax = 'sidebarElementEdit';
if (activitiy == 'cancel') {
ajax = 'sidebarElementCancel';
}

new Request.JSON({url: config['fileWeb'], evalScripts: true, onRequest: createSpinner('sidebar_spinner.gif','sidebarElementIcons_'+elementId,'top'), onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$(elementId).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}

sidebarSortableInit();

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}}).get({'ajax': ajax, 'type': type, 'key': elementId, 'file': file, 'act': act});

}




/**
 * Element in der Sidebar nach dem Aendern speichern
 */

function sidebarElementSave (type, elementId, file) {

var requestSave = new Request.JSON({method: 'post', url: config['fileWeb']+'?ajax=sidebarElementSave&key='+elementId+'&file='+file+'&type='+type, onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$(elementId).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}

sidebarSortableInit();

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}});
requestSave.send($('form'+elementId).toQueryString());

}


/**
 * Element in der Sidebar zuruecksetzen
 */

function sidebarElementCancel (elementId) {

new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$(elementId).set('html', response.code);
sidebarSortable.addItems($(elementId));
}

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}}).get({'ajax': 'sidebarElementCancel', 'id': elementId});


}


/**
 * Element in der Sidebar loeschen
 */

function sidebarElementDelete (elementId) {

new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {

$(elementId).destroy();

} else {
if (response.msg != '') {
alert(response.msg);
}
}
}}).get({'ajax': 'sidebarElementDelete', 'id': elementId});

}



/**
 * Element im Inhaltsbereich aendern
 */

function siteElementEdit (type, activitiy, elementId, file) {

var ajax = '';
ajax = 'siteElementEdit';
if (activitiy == 'cancel') {
ajax = 'siteElementCancel';
}

new Request.JSON({url: config['fileWeb'], evalScripts: true, onRequest: createSpinner('sidebar_spinner.gif','siteElementIcons_'+elementId,'top'), onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$('siteElement_'+elementId).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}
if (response.icons != '') {
$('siteElementIcons_'+elementId).set('html', response.icons);
}

siteSortableInit();

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}}).get({'ajax': ajax, 'type': type, 'key': elementId, 'file': file});

}


/**
 * Element im Inhaltsbereich nach dem Aendern speichern
 */

function siteElementSave (type, elementId, file) {

var requestSave = new Request.JSON({method: 'post', url: config['fileWeb']+'?ajax=siteElementSave&key='+elementId+'&file='+file+'&type='+type, onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$('siteElement_'+elementId).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}
if (response.icons != '') {
$('siteElementIcons_'+elementId).set('html', response.icons);
}

siteSortableInit();

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}});
requestSave.send($('form'+elementId).toQueryString());

}


/**
 * Element im Inhaltsbereich loeschen
 */

function siteElementDelete (elementId, file) {

$('siteElementIconDelete_'+elementId).setProperty("src", config["pathSystem"]+'images/sidebar_spinner.gif');

new Request.JSON({url: config['fileWeb'], evalScripts: true, onComplete: function(response){
if (response.status == "true") {

var myFx = new Fx.Tween('siteElement_'+elementId, { onComplete: function() { $('siteElement_'+elementId).destroy(); if ($('siteElementIcons_'+elementId) != null) { $('siteElementIcons_'+elementId).destroy(); } if ($('siteElementHeader_'+elementId) != null) { $('siteElementHeader_'+elementId).destroy(); } }});
myFx.start('opacity', '0');
if ($('siteElementIcons_'+elementId) != null) $('siteElementIcons_'+elementId).destroy();
if ($('siteElementHeader_'+elementId) != null) $('siteElementHeader_'+elementId).destroy();

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}}).get({'ajax': 'siteElementDelete', 'key': elementId, 'file': file});

}






var siteSortable = '';

window.addEvent('load', function() {

if ($('siteSortable') != null) {

siteSortableInit();

}

});


function siteSortableInit () {

siteSortable = new Sortables($('siteSortable'), {
constrain: true,
opacity: 0.5,
handle: 'img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';

//Sidebar durchlaufen
$$('#siteSortable > .siteSortableItem').each(function(item) {

if (item.getProperty('rel') != null) {
if (elements != '') elements += '::';
elements += item.getProperty('rel');
}

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=siteElementsStructure', onComplete: function(response){
if (response.status == "false") {
alert("Die neue Reihenfolge der Elemente konnte nicht gespeichert werden!");
}
}}).post({'key': config["act"], 'file': config["file"], 'elements': elements, 'lang': config["lang"]});

}

});

}






var subNaviSortable = '';

window.addEvent('load', function() {

if ($('subnavilist') != null && $('subnavilist').getProperty('rel') == 'pageedit') {

var liCount = 0;

$$('#subnavilist > li').each(function(item) { liCount++; });

if (liCount > 1) subNaviSortableInit();

}

});


function subNaviSortableInit () {

subNaviSortable = new Sortables($('subnavilist'), {
constrain: true,
opacity: 0.5,
handle: 'img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';
var naviKey = $('subnavilist').getProperty('class');

//Sidebar durchlaufen
$$('#subnavilist > li').each(function(item) {

if (item.getProperty('rel') != null) {
if (elements != '') elements += '::';
elements += item.getProperty('rel');
}

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=subNaviStructureSave', onComplete: function(response){
if (response.status == "false") {
alert("Die neue Reihenfolge der Navigation konnte nicht gespeichert werden!");
}
}}).post({'key': naviKey, 'elements': elements});

}
});

}




/**
 * Element in der Unternavigation loeschen
 */

function subNaviElementDelete (elementId, naviKey) {

new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {

$('subNaviElement_'+elementId).dispose();

} else {
if (response.msg != '') alert(response.msg);
}
}}).get({'ajax': 'subNaviElementDelete', 'navi': naviKey, 'key': elementId});

}







function siteElementAddFormChange () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status == "true") {

$('siteElementsForm').set('html', response.code);
SqueezeBox.assign($$('a.boxed'));
popupResize();

}

}}).get({'ajax': 'siteElementAddForm', 'type': $("siteElementAddType").value});

}







function vitaHistoryAddLine () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('vitaHistoryTmp').set('html', response.html);
$('vitaHistory_'+response.index).inject($('vitaHistory'), 'top');
$('vita_history_count').value = $('vita_history_count').value.toInt()+1;
}
}}).get({'ajax': 'vitaHistoryAddLine', 'index': $('vita_history_count').value});

}






function sendContactForm (formId) {

var mySpinner = new Spinner('contactform', {message: "Bitte warten"}).show();

var requestSave = new Request.JSON({method: 'post', url: config['fileWeb']+'?ajax=sendContactForm', onComplete: function(response){

//Formular zuruecksetzen
if (response.status == "true") {

if ($('contact_fullname') != null) $('contact_fullname').value = '';
if ($('contact_lasttname') != null) $('contact_lasttname').value = '';
if ($('contact_firstname') != null) $('contact_firstname').value = '';
if ($('contact_email') != null) $('contact_email').value = '';
if ($('contact_title') != null) $('contact_title').value = '';
if ($('contact_message') != null) $('contact_message').value = '';
if ($('contact_firm') != null) $('contact_firm').value = '';
if ($('contact_city') != null) $('contact_city').value = '';
if ($('contact_street') != null) $('contact_street').value = '';
if ($('contact_country') != null) $('contact_country').value = '';
if ($('contact_misc') != null) $('contact_misc').value = '';
if ($('contact_infos') != null) $('contact_infos').value = '';

}
mySpinner.destroy();

//Hinweis ausgeben
MessageBox.status(response.msg);

}});
requestSave.send($(formId).toQueryString());

}





function sidebarElementAddFormChange () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status == "true") {

$('siteElementsForm').set('html', response.code);
SqueezeBox.assign($$('a.boxed'));
popupResize();

}

}}).get({'ajax': 'sidebarElementAddForm', 'type': $("siteElementAddType").value});

}




/**
 * Text-Element im Inhaltsbereich aendern
 */

function langElementEdit (langKey, activity) {

var ajax = 'langElementEdit';
if (activity == 'cancel') ajax = 'langElementCancel';

new Request.JSON({url: config['fileWeb'], evalScripts: true, onRequest: createSpinner('sidebar_spinner.gif','siteElementIcons_'+langKey,'top'), onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$(langKey).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}}).get({'ajax': ajax, 'langKey': langKey});

}


/**
 * Text-Element im Inhaltsbereich nach dem Aendern speichern
 */

function langElementSave (langKey) {

var requestSave = new Request.JSON({method: 'post', url: config['fileWeb']+'?ajax=langElementSave&langKey='+langKey, onComplete: function(response){
if (response.status == "true") {

if (response.code != '') {
$(langKey).set('html', response.code);
}
if (response.javascript != '') {
$exec(response.javascript);
}

} else {
if (response.msg != '') {
MessageBox.status(response.msg);
}
}
}});
requestSave.send($('form.'+langKey).toQueryString());

}





function changeNaviTitleType (item) {

if (item.checked == true) {

if (item.value == 'normal') {

$('titlekey_li').setStyle("display", "none");
$('title_li').setStyle("display", "list-item");

} else {

$('title_li').setStyle("display", "none");
$('titlekey_li').setStyle("display", "list-item");

}
}

}



function changeNaviPathType (item) {

if (item.checked == true) {

if (item.value == 'normal') {

$('urlkey_li').setStyle("display", "none");
$('url_li').setStyle("display", "list-item");

} else {

$('url_li').setStyle("display", "none");
$('urlkey_li').setStyle("display", "list-item");

}
}

}




window.addEvent("load", function(){

//Slider fuer erste Navigationsebene
if ($('navi') && $('navislider') && $('navi').hasClass('edit')) naviSliderInit('navi');

//Slider fuer Unternavigation
if ($('subnavi') && $('subnavi').hasClass('edit')) {

var subNaviWidth = 0;
var subNaviCount = 0;
var subNaviPosition = 0;
var subNaviCurrent = 0;
var subNaviElements = [];

$$('#subnavilist li').each(function(item) {
subNaviWidth += item.getComputedSize().totalWidth + 10;
subNaviElements.push(item.getProperty('id'));
subNaviCount++;
});

if (subNaviWidth > $('subnavilist').getComputedSize().totalWidth) {

$('subnavislider').setStyle('width', $('subnavilist').getStyle('width'));
$('subnavilist').setStyle('width', subNaviWidth+'px');

var myFx = new Fx.Scroll('subnavislider', { duration: 500, wait: true });

var iconSliderRight = new Element('img', {
'src' : config["pathSystem"]+'images/icon_slideright_s.gif',
'class': 'sliderright'
});
var iconSliderLeft = new Element('img', {
'src' : config["pathSystem"]+'images/icon_slideleft_s.gif',
'style' : 'display: none;',
'class': 'sliderleft'
});

iconSliderRight.addEvent('click', function(event){

subNaviCurrent++;
myFx.toElement(subNaviElements[subNaviCurrent]);
(function(){ 
if (subNaviWidth + $(subNaviElements[0]).getPosition('subnavi').x - 5 < $('subnavislider').getComputedSize().totalWidth) {
iconSliderRight.setStyle('display', 'none');
} else {
iconSliderLeft.setStyle('display', 'inline');
}
}).delay(550);

}.bindWithEvent(this));

iconSliderLeft.addEvent('click', function(event){

subNaviCurrent--;
myFx.toElement(subNaviElements[subNaviCurrent]);
(function(){ 
if ($(subNaviElements[0]).getPosition('subnavi').x >= 0) {
iconSliderLeft.setStyle('display', 'none');
} else {
iconSliderRight.setStyle('display', 'inline');
}
}).delay(550);
}.bindWithEvent(this));

iconSliderRight.inject($('subnavi'));
iconSliderLeft.inject($('subnavi'));

}

}

});


function naviSliderInit (type) {

var naviWidth = 20;
var naviCount = 0;
var naviPosition = 0;
var naviCurrent = 0;
var naviElements = [];

$$('#'+type+'list li').each(function(item) {
naviWidth += item.getComputedSize().totalWidth + 2;
naviElements.push(item.getProperty('id'));
naviCount++;
});

if (naviWidth > $(type+'list').getComputedSize().totalWidth) {

$(type+'slider').setStyle('width', $(type+'list').getStyle('width'));
$(type+'list').setStyle('width', naviWidth+'px');
naviPosition = $(naviElements[0]).getPosition('#'+type+'slider').x;

var myFx = new Fx.Scroll(type+'slider', { duration: 500, wait: true });

var iconSliderRight = new Element('img', {
'src' : config["pathSystem"]+'images/icon_slideright.gif',
'id': type+'SliderRight',
'class': 'sliderright'
});
var iconSliderLeft = new Element('img', {
'src' : config["pathSystem"]+'images/icon_slideleft.gif',
'id': type+'SliderLeft',
'style' : 'display: none;',
'class': 'sliderleft'
});

iconSliderRight.addEvent('click', function(event){

naviCurrent++;
myFx.toElement(naviElements[naviCurrent]);
(function(){ 
if (naviWidth - naviPosition + $(naviElements[0]).getPosition('#'+type+'slider').x - 25 < $(type+'slider').getComputedSize().totalWidth) {
iconSliderRight.setStyle('display', 'none');
iconSliderLeft.setStyle('display', 'inline');
} else {
iconSliderLeft.setStyle('display', 'inline');
}
}).delay(550);

}.bindWithEvent(this));

iconSliderLeft.addEvent('click', function(event){

naviCurrent--;
if (naviCurrent == 0) { myFx.toLeft(); } else { myFx.toElement(naviElements[naviCurrent]); }
(function(){ 
if ($(naviElements[0]).getPosition(type).x >= -25) {
iconSliderLeft.setStyle('display', 'none');
iconSliderRight.setStyle('display', 'inline');
} else {
iconSliderRight.setStyle('display', 'inline');
}
}).delay(550);
}.bindWithEvent(this));

iconSliderRight.inject($(type));
iconSliderLeft.inject($(type));

} else {

if ($(type+'SliderLeft') != null) $(type+'SliderLeft').destroy();
if ($(type+'SliderRight') != null) $(type+'SliderRight').destroy();

}
}





window.addEvent('load', function() {

//Sortierung fuer erste Navigationsebene
if ($('navilist') != null && $('navilist').getProperty('rel') == 'pageedit') sortableNavigation('navi');

});

function sortableNavigation (type) {

var naviSortable = new Sortables($(type.toLowerCase()+'list'), {
constrain: true,
opacity: 0.5,
handle: 'img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';

//Sidebar durchlaufen
$$('#'+type.toLowerCase()+'list > li').each(function(item) {

if (item.getProperty('rel') != null) {
if (elements != '') elements += '::';
elements += item.getProperty('rel');
}

});

//Request senden
new Request.JSON({url: config['fileWeb']+'?ajax=sortableNavigation', onComplete: function(response) {

if (response.status == "false") alert("Die neue Reihenfolge der Navigation konnte nicht gespeichert werden!");

}}).post({'key': config["act"], 'type': type, 'elements': elements});

}
});

}



/**
 * Element in einer beliebigen Navigation loeschen
 */
function deleteNavigation (type, elementId) {

new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status == "true") {

$(type+'Element_'+elementId).dispose();
naviSliderInit(type.toLowerCase());

} else {

if (response.msg != '') alert(response.msg);

}

}}).get({'ajax': 'deleteNavigation', 'type': type, 'key': elementId});

}




function accordionListAddLine () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('accordionListTmp').set('html', response.html);
$('accordionList_'+response.index).inject($('accordionList'), 'bottom');
$('accordion_list_count').value = $('accordion_list_count').value.toInt()+1;
sortableAccordionList();
}
}}).get({'ajax': 'accordionListAddLine', 'index': $('accordion_list_count').value});

}





function sortableAccordionList () {

var accordionSortable = new Sortables('accordionList', {
constrain: true,
opacity: 0.5,
handle: 'img.move',
onComplete: function(response){

//Variablen initialisieren
var elements = '';

//Sidebar durchlaufen
$$('#accordionList > li').each(function(item) {

var id = item.getProperty('id').replace('accordionList_', '');
if (elements != '') elements += '::';
elements += id;

});

$('accordion_list_order').value = elements;

}
});

}



function columnsListEditLine (id) {

var count = $('columns_list_count').value.toInt();

new Request.JSON({url: config['fileWeb'], onComplete: function(response){

if (response.status == "add") {

$$('#siteElement_'+id+' .sitecolumns div').each(function(item){
var className = item.get('class');
if (className == "column12") {
item.set('class', 'column13');
} else if (className == "column22") {
item.set('class', 'column23');
}
});

var els = Elements.from(response.html);
els.inject($('sitecolumns_'+id), 'bottom');

count += 1;

SqueezeBox.assign($$('#siteElement_'+id+' .sitecolumns div a.boxed'));

} else if (response.status == "delete") {

$$('#siteElement_'+id+' .sitecolumns div').each(function(item){
var className = item.get('class');
if (className == "column33") {
item.destroy();
} else if (className == "column13") {
item.set('class', 'column12');
} else if (className == "column23") {
item.set('class', 'column22');
}
});

count -= 1;

}

$('columns_list_count').value = count;

if (response.button != '') $('sitecolumnsedit_'+id).set('html', response.button);

}}).get({'ajax': 'columnsListEditLine', 'index': count, 'key': id});

}




function contactsListAddLine () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('contactsListTmp').set('html', response.html);
$('contactsList_'+response.index).inject($('contactsList'), 'top');
$('contacts_list_count').value = $('contacts_list_count').value.toInt()+1;
}
}}).get({'ajax': 'contactsListAddLine', 'index': $('contacts_list_count').value});

}





function slideshowListAddLine () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('slideshowListTmp').set('html', response.html);
$('slideshowList_'+response.index).inject($('slideshowList'), 'top');
$('slideshow_list_count').value = $('slideshow_list_count').value.toInt()+1;
SqueezeBox.assign($('slideshow_list_'+response.index+'_image_select'), {handler:'iframe',size:{x:840,y:550}});
}
}}).get({'ajax': 'slideshowListAddLine', 'index': $('slideshow_list_count').value});

}




//Slider anzeigen

window.addEvent('domready', function() {

if ($('profilesSlide') != null) {

var profilesShow = new SlideBullets('profilesList', 'profilesNavi', {
transition: 'pushLeft',
delay: 8000,
duration: 750,
autoplay: true
});

//Navigation fuer Slideshow von Profiles erzeugen
var profilesNavi = new Element('ul').addClass('profilesNavi').inject($('profilesList'), 'after');
$$('#profilesList li').each(function(element, index){
var profilesNaviElement = new Element('li').setProperty('id', 'profilesNavi'+(index+1)).set('text', index+1).inject(profilesNavi, 'bottom');
if (index == 0) profilesNaviElement.addClass('active');
profilesNaviElement.addEvent('click', function(){
var currentIndex = profilesShow.slides.indexOf(profilesShow.current);
var transition = (currentIndex < index) ? 'pushLeft' : 'pushRight';
profilesShow.show(index, { transition: transition });
});
});
}

});





function thumbsListAddLine () {

var jsonRequest = new Request.JSON({url: config['fileWeb'], onComplete: function(response){
if (response.status == "true") {
$('thumbsListTmp').set('html', response.html);
$('thumbsList_'+response.index).inject($('thumbsList'), 'bottom');
$('thumbs_list_count').value = $('thumbs_list_count').value.toInt()+1;
SqueezeBox.assign($('thumbs_list_'+response.index+'_image_select'), {handler:'iframe',size:{x:840,y:550}});
}
}}).get({'ajax': 'thumbsListAddLine', 'index': $('thumbs_list_count').value});

}






window.addEvent('domready', function() {

if ($('loadMoreUsersButton') != null) {

$('loadMoreUsersButton').addEvent('click', function() {

var usersDetails = '';
var ajax = '';
var search = '';
var counter = 0;
var more = 0;
var params = $('loadMoreUsersButton').getProperty('href').replace(/#/, '').parseQueryString();
if (params.ajax) ajax = params.ajax;
if (params.search) search = params.search;
if (params.more) more = params.more;

//letzte ID ermitteln
$$('#userslist dt').each(function(item, index) {
usersDetails = item.get('id');
counter++;
});
usersDetails = usersDetails.split('-');

//Ajax-Request ermitteln
new Request.JSON({url: config['fileWeb'], onRequest: function(instance) {  }, onComplete: function(response){

if (response.status == "true") {

var els = Elements.from(response.html);
els.inject($('userslist'), 'bottom');

if ($('loadMoreCount') != null) $('loadMoreCount').set('text', $('loadMoreCount').get('text').toInt()+response.count.toInt());

if (response.end == "true") $('loadMoreUsers').dispose();

} else {

$('loadMoreUsers').dispose();

}

}}).get({'ajax': ajax, 'id': usersDetails[2], 'counter': counter, 'search': search, 'more': more});

return false;
});
}
});



var imageCropper = new Class({

Implements : [Events, Options],

options : {
maskOpacity:0.5,
left:0,
top:0,
maskClassName:'cropperMask',
moverClassName:'cropperMove',
resizerClassName:'cropperResize',
wrapperClassName:'cropperWrapper',
mini:{x:80,y:80},
onComplete:$empty,
resizerWidth:8,
ratio:0,
resizable:true,
keepRatio:true
},

initialize : function(target,options) {

window.addEvent('domready',function() {

this.target=$(target);

if(this.target.get('tag')!='img') {
return false;
}

this.setOptions(options);

this.mini={};
this.mini.x=this.options.mini.x.toInt();
this.mini.y=this.options.mini.y.toInt();

if(!this.options.resizable){
this.options.resizerWidth=0;
}

this.runonce = false;

new Asset.image(this.target.get('src'), {

onload:function(){
if(this.runonce){
return;
}
this.runonce=true;

this.buildCropper();
this.buildMask();

this.drag = new Drag.Move(this.resizer, {
container:this.target,
handle:this.dragger,
snap:5,
onComplete:function() {
this.fireEvent('onComplete',[this.top,this.left,this.width,this.height]);
}.bind(this),
onDrag:function() {
this.updateMask();
this.top = ((this.rezr_coord.top-this.target_coord.top)*this.scaleRatio).toInt();
this.left = ((this.rezr_coord.left-this.target_coord.left)*this.scaleRatio).toInt();
this.width = Math.max((this.rezr_coord.width*this.scaleRatio).toInt(),175);
this.height = Math.max((this.rezr_coord.height*this.scaleRatio).toInt(),175);
}.bind(this)
});

if (this.options.resizable) {

if(this.options.keepRatio){
this.ratio = this.mini.x/this.mini.y;
}
this.resize = this.resizer.makeResizable({
snap:5,
limit:{
x:[(this.mini.x/this.scaleRatio).toInt()-this.margin],
y:[(this.mini.y/this.scaleRatio).toInt()-this.margin]
},
onComplete:function() {
this.drag.fireEvent('onComplete');
}.bind(this),
onDrag:function() {
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
if (this.options.keepRatio) {
this.resizer.setStyle('width',(this.rezr_coord.height*this.ratio-this.margin).toInt()+'px');
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
if (this.rezr_coord.bottom>this.target_coord.bottom) {
var bound = this.target_coord.bottom-this.rezr_coord.top;
this.resizer.setStyles({'width':(bound*this.ratio).toInt()-this.margin+'px','height':bound-this.margin+'px'});
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
}
if (this.rezr_coord.right>this.target_coord.right) {
var bound = this.target_coord.right-this.rezr_coord.left;
this.resizer.setStyles({'width':bound-this.margin+'px','height':(bound/this.ratio).toInt()-this.margin+'px'});
}
} else {
if (this.rezr_coord.right>this.target_coord.right) {
var bound = this.target_coord.right-this.rezr_coord.left-this.margin+'px';
this.resizer.setStyle('width',bound);
this.rezr_coord=this.resizer.getCoordinates(this.wrapper);
}
if (this.rezr_coord.bottom>this.target_coord.bottom) {
var bound = this.target_coord.bottom-this.rezr_coord.top-this.margin+'px';
this.resizer.setStyle('height',bound);
}
}

this.drag.fireEvent('onDrag');
}.bind(this)
});
}

this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
this.show();

}.bind(this)
});
}.bind(this));
},

buildCropper : function(){

this.wrapper = new Element('div',{
'class':this.options.wrapperClassName,
'styles':{
'position':'relative',
'width' : this.target.getSize().x,
'height' :this.target.getSize().y,
'overflow':'hidden'
}
}).wraps(this.target);

this.border = this.target.getStyle('border-left');

this.target.setStyles({
'margin':0,
'border':0,
'float':'none'
});

this.target_coord=this.target.getCoordinates(this.wrapper);

new Asset.image(this.target.get('src'), {

onload:function(image) {
this.scaleRatio = image.get('width')/this.target_coord.width;
if (this.resize) {
if(this.scaleRatio<1) {
this.resizer.setStyles({
width:(this.mini.x/this.scaleRatio).toInt()-this.margin,
height:(this.mini.y/this.scaleRatio).toInt()-this.margin
});
}
this.resize.options.limit = {
x:[175-this.margin],
y:[175-this.margin]
};
this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
}
}.bind(this)
});

if(this.target_coord.width<this.mini.x){
this.mini.y = this.target_coord.width*this.mini.y/this.mini.x;
this.mini.x = this.target_coord.width;
}
if(this.target_coord.height<this.mini.y){
this.mini.x = this.target_coord.height*this.mini.x/this.mini.y;
this.mini.y = this.target_coord.height;
}

var left = (this.options.left != 0) ? this.options.left : (this.target_coord.left+(this.target_coord.width/2)-(this.mini.x/2)).toInt();
var top = (this.options.top != 0) ? this.options.top : (this.target_coord.top+(this.target_coord.height/2)-(this.mini.y/2)).toInt();

this.resizer = new Element('div',{
'class':this.options.resizerClassName,
'styles':{
'position':'absolute',
'display':'block',
'margin':0,
'opacity':0,
'width':this.mini.x,
'height':this.mini.y,
'left':left,
'top':top,
'padding':'0 ' + this.options.resizerWidth.toInt() + 'px ' + this.options.resizerWidth.toInt()+ 'px 0',
'z-index':5
}
}).inject(this.target,'after');

this.margin=2*this.resizer.getStyle('border-width').toInt() + this.options.resizerWidth.toInt();

this.resizer.setStyles({
width:this.mini.x - this.margin + "px",
height:this.mini.y - this.margin + "px"
});

this.dragger = new Element('div',{
'class':this.options.moverClassName,
'styles':{
'display':'block',
'position':'relative',
'width':'100%',
'height':'100%',
'margin':0,
'font-size':0,
'line-height':0
},
'events':{
'mousedown':function(e){
e.stop();
}
}
}).inject(this.resizer);

},

buildMask : function(){
this.innermask=this.target.clone();
this.innermask.setStyles({
'position':'absolute',
'padding':0,
'margin':0,
'top':0,
'left':0,
'z-index':4,
'opacity':0
}).inject(this.wrapper);
this.outtermask = new Element('div',{
'class':this.options.maskClassName,
'styles':{
'position':'absolute',
'padding':0,
'margin':0,
'top':0,
'left':0,
'width':'100%',
'height':this.target_coord.height,
'z-index':3,
'opacity':0
},
events:{
'click':this.moveToClick.bind(this)
}
}).inject(this.wrapper);
this.slide = new Fx.Elements($$(this.resizer,this.innermask),{
onComplete:function(){
this.updateMask();
this.drag.fireEvent('onDrag');
this.drag.fireEvent('onComplete');
}.bind(this)
});
},

updateMask : function(){
//update the mask position
this.rezr_coord = this.resizer.getCoordinates(this.wrapper);
this.innermask.setStyle('clip','rect('+this.rezr_coord.top+'px '+this.rezr_coord.right+'px '+this.rezr_coord.bottom+'px '+this.rezr_coord.left+'px)');
},

moveToClick : function(e){
var mouseX = e.page.x;
var mouseY = e.page.y;
var wrap_coord = this.wrapper.getPosition();
var localX = mouseX-wrap_coord.x;
var localY = mouseY-wrap_coord.y;
var top = (localY-(this.rezr_coord.height/2).toInt()).limit(0,this.target_coord.height-this.rezr_coord.height);
var left = (localX-(this.rezr_coord.width/2).toInt()).limit(0,this.target_coord.width-this.rezr_coord.width);
var right = left+this.rezr_coord.width;
var bottom = top+this.rezr_coord.height;
var effect = {
0:{
'top':top,
'left':left
},
1:{
'clip':[[this.rezr_coord.top,this.rezr_coord.right,this.rezr_coord.bottom,this.rezr_coord.left],[top,right,bottom,left]]
}
};
this.slide.start(effect);
},

hide:function(){
$$(this.resizer,this.innermask,this.outtermask).fade('out');
},

show:function(){
$$(this.resizer,this.innermask).fade('in');
this.outtermask.fade(this.options.maskOpacity);
},

toggle:function(){
if(this.resizer.getStyle('opacity')==1){
this.hide();
}else{
this.show();
}
},

destroy:function(){
this.hide();
this.target.setStyle('border',this.border);
(function(){
this.target.replaces(this.wrapper);
}).delay(600,this);
}
});





window.addEvent('load',function() {

if ($('portraitImage') != null) {

var portraitCropper = new imageCropper('portraitImage',{
maskOpacity:0.5,
mini:{
x:$('cropWidth').get('value'),
y:$('cropHeight').get('value')
},
left: $('cropX').get('value').toInt(),
top: $('cropY').get('value').toInt(),
ratio: $('cropRatio').get('value').toInt(),
onComplete:function(top,left,width,height){
$('cropY').set('value',top);
$('cropX').set('value',left);
$('cropWidth').set('value',width);
$('cropHeight').set('value',height);
}
});

}

});









Locale.define('de-DE', 'Date', {
  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],  days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],  dateOrder: ['date', 'month', 'year', '.'],  AM: 'AM',  PM: 'PM'  });Locale.define('us-US', 'Date', {
  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],  days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],  dateOrder: ['date', 'month', 'year', '.'],  AM: 'AM',  PM: 'PM'  });