var Prototype={Version:"1.7",Browser:(function(){var b=navigator.userAgent;var a=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!a,Opera:a,WebKit:b.indexOf("AppleWebKit/")>-1,Gecko:b.indexOf("Gecko")>-1&&b.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(b)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var a=window.Element||window.HTMLElement;return !!(a&&a.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var c=document.createElement("div"),b=document.createElement("form"),a=false;if(c.__proto__&&(c.__proto__!==b.__proto__)){a=true}c=b=null;return a})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(a){return a}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Class=(function(){var d=(function(){for(var e in {toString:1}){if(e==="toString"){return false}}return true})();function a(){}function b(){var h=null,g=$A(arguments);if(Object.isFunction(g[0])){h=g.shift()}function e(){this.initialize.apply(this,arguments)}Object.extend(e,Class.Methods);e.superclass=h;e.subclasses=[];if(h){a.prototype=h.prototype;e.prototype=new a;h.subclasses.push(e)}for(var f=0,j=g.length;f<j;f++){e.addMethods(g[f])}if(!e.prototype.initialize){e.prototype.initialize=Prototype.emptyFunction}e.prototype.constructor=e;return e}function c(l){var g=this.superclass&&this.superclass.prototype,f=Object.keys(l);if(d){if(l.toString!=Object.prototype.toString){f.push("toString")}if(l.valueOf!=Object.prototype.valueOf){f.push("valueOf")}}for(var e=0,h=f.length;e<h;e++){var k=f[e],j=l[k];if(g&&Object.isFunction(j)&&j.argumentNames()[0]=="$super"){var m=j;j=(function(n){return function(){return g[n].apply(this,arguments)}})(k).wrap(m);j.valueOf=m.valueOf.bind(m);j.toString=m.toString.bind(m)}this.prototype[k]=j}return this}return{create:b,Methods:{addMethods:c}}})();(function(){var D=Object.prototype.toString,C="Null",p="Undefined",w="Boolean",f="Number",t="String",I="Object",u="[object Function]",z="[object Boolean]",g="[object Number]",m="[object String]",h="[object Array]",y="[object Date]",j=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";function l(K){switch(K){case null:return C;case (void 0):return p}var J=typeof K;switch(J){case"boolean":return w;case"number":return f;case"string":return t}return I}function A(J,L){for(var K in L){J[K]=L[K]}return J}function H(J){try{if(c(J)){return"undefined"}if(J===null){return"null"}return J.inspect?J.inspect():String(J)}catch(K){if(K instanceof RangeError){return"..."}throw K}}function E(J){return G("",{"":J},[])}function G(S,P,Q){var R=P[S],O=typeof R;if(l(R)===I&&typeof R.toJSON==="function"){R=R.toJSON(S)}var L=D.call(R);switch(L){case g:case z:case m:R=R.valueOf()}switch(R){case null:return"null";case true:return"true";case false:return"false"}O=typeof R;switch(O){case"string":return R.inspect(true);case"number":return isFinite(R)?String(R):"null";case"object":for(var K=0,J=Q.length;K<J;K++){if(Q[K]===R){throw new TypeError()}}Q.push(R);var N=[];if(L===h){for(var K=0,J=R.length;K<J;K++){var M=G(K,R,Q);N.push(typeof M==="undefined"?"null":M)}N="["+N.join(",")+"]"}else{var T=Object.keys(R);for(var K=0,J=T.length;K<J;K++){var S=T[K],M=G(S,R,Q);if(typeof M!=="undefined"){N.push(S.inspect(true)+":"+M)}}N="{"+N.join(",")+"}"}Q.pop();return N}}function x(J){return JSON.stringify(J)}function k(J){return $H(J).toQueryString()}function q(J){return J&&J.toHTML?J.toHTML():String.interpret(J)}function s(J){if(l(J)!==I){throw new TypeError()}var K=[];for(var L in J){if(J.hasOwnProperty(L)){K.push(L)}}return K}function d(J){var K=[];for(var L in J){K.push(J[L])}return K}function B(J){return A({},J)}function v(J){return !!(J&&J.nodeType==1)}function n(J){return D.call(J)===h}var b=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(b){n=Array.isArray}function e(J){return J instanceof Hash}function a(J){return D.call(J)===u}function o(J){return D.call(J)===m}function r(J){return D.call(J)===g}function F(J){return D.call(J)===y}function c(J){return typeof J==="undefined"}A(Object,{extend:A,inspect:H,toJSON:j?x:E,toQueryString:k,toHTML:q,keys:Object.keys||s,values:d,clone:B,isElement:v,isArray:n,isHash:e,isFunction:a,isString:o,isNumber:r,isDate:F,isUndefined:c})})();Object.extend(Function.prototype,(function(){var l=Array.prototype.slice;function d(p,m){var o=p.length,n=m.length;while(n--){p[o+n]=m[n]}return p}function j(n,m){n=l.call(n,0);return d(n,m)}function g(){var m=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return m.length==1&&!m[0]?[]:m}function h(o){if(arguments.length<2&&Object.isUndefined(arguments[0])){return this}var m=this,n=l.call(arguments,1);return function(){var p=j(n,arguments);return m.apply(o,p)}}function f(o){var m=this,n=l.call(arguments,1);return function(q){var p=d([q||window.event],n);return m.apply(o,p)}}function k(){if(!arguments.length){return this}var m=this,n=l.call(arguments,0);return function(){var o=j(n,arguments);return m.apply(this,o)}}function e(o){var m=this,n=l.call(arguments,1);o=o*1000;return window.setTimeout(function(){return m.apply(m,n)},o)}function a(){var m=d([0.01],arguments);return this.delay.apply(this,m)}function c(n){var m=this;return function(){var o=d([m.bind(this)],arguments);return n.apply(this,o)}}function b(){if(this._methodized){return this._methodized}var m=this;return this._methodized=function(){var n=d([this],arguments);return m.apply(null,n)}}return{argumentNames:g,bind:h,bindAsEventListener:f,curry:k,delay:e,defer:a,wrap:c,methodize:b}})());(function(c){function b(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function a(){return this.toISOString()}if(!c.toISOString){c.toISOString=b}if(!c.toJSON){c.toJSON=a}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(a){return String(a).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(b,a){this.callback=b;this.frequency=a;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(a){this.currentlyExecuting=false;throw a}}}});Object.extend(String,{interpret:function(a){return a==null?"":String(a)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||pattern.source)){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi,"")}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function unescapeHTML(){return this.stripTags().replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern){return this.lastIndexOf(pattern,0)===0}function endsWith(pattern){var d=this.length-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:startsWith,endsWith:endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(a,b){this.template=a.toString();this.pattern=b||Template.Pattern},evaluate:function(a){if(a&&Object.isFunction(a.toTemplateReplacements)){a=a.toTemplateReplacements()}return this.template.gsub(this.pattern,function(d){if(a==null){return(d[1]+"")}var f=d[1]||"";if(f=="\\"){return d[2]}var b=a,g=d[3],e=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;d=e.exec(g);if(d==null){return f}while(d!=null){var c=d[1].startsWith("[")?d[2].replace(/\\\\]/g,"]"):d[1];b=b[c];if(null==b||""==d[3]){break}g=g.substring("["==d[3]?d[1].length:d[0].length);d=e.exec(g)}return f+String.interpret(b)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function c(z,y){var x=0;try{this._each(function(B){z.call(y,B,x++)})}catch(A){if(A!=$break){throw A}}return this}function s(A,z,y){var x=-A,B=[],C=this.toArray();if(A<1){return C}while((x+=A)<C.length){B.push(C.slice(x,x+A))}return B.collect(z,y)}function b(z,y){z=z||Prototype.K;var x=true;this.each(function(B,A){x=x&&!!z.call(y,B,A);if(!x){throw $break}});return x}function j(z,y){z=z||Prototype.K;var x=false;this.each(function(B,A){if(x=!!z.call(y,B,A)){throw $break}});return x}function k(z,y){z=z||Prototype.K;var x=[];this.each(function(B,A){x.push(z.call(y,B,A))});return x}function u(z,y){var x;this.each(function(B,A){if(z.call(y,B,A)){x=B;throw $break}});return x}function h(z,y){var x=[];this.each(function(B,A){if(z.call(y,B,A)){x.push(B)}});return x}function g(A,z,y){z=z||Prototype.K;var x=[];if(Object.isString(A)){A=new RegExp(RegExp.escape(A))}this.each(function(C,B){if(A.match(C)){x.push(z.call(y,C,B))}});return x}function a(x){if(Object.isFunction(this.indexOf)){if(this.indexOf(x)!=-1){return true}}var y=false;this.each(function(z){if(z==x){y=true;throw $break}});return y}function r(y,x){x=Object.isUndefined(x)?null:x;return this.eachSlice(y,function(z){while(z.length<y){z.push(x)}return z})}function m(x,z,y){this.each(function(B,A){x=z.call(y,x,B,A)});return x}function w(y){var x=$A(arguments).slice(1);return this.map(function(z){return z[y].apply(z,x)})}function q(z,y){z=z||Prototype.K;var x;this.each(function(B,A){B=z.call(y,B,A);if(x==null||B>=x){x=B}});return x}function o(z,y){z=z||Prototype.K;var x;this.each(function(B,A){B=z.call(y,B,A);if(x==null||B<x){x=B}});return x}function e(A,y){A=A||Prototype.K;var z=[],x=[];this.each(function(C,B){(A.call(y,C,B)?z:x).push(C)});return[z,x]}function f(y){var x=[];this.each(function(z){x.push(z[y])});return x}function d(z,y){var x=[];this.each(function(B,A){if(!z.call(y,B,A)){x.push(B)}});return x}function n(y,x){return this.map(function(A,z){return{value:A,criteria:y.call(x,A,z)}}).sort(function(C,B){var A=C.criteria,z=B.criteria;return A<z?-1:A>z?1:0}).pluck("value")}function p(){return this.map()}function t(){var y=Prototype.K,x=$A(arguments);if(Object.isFunction(x.last())){y=x.pop()}var z=[this].concat(x).map($A);return this.map(function(B,A){return y(z.pluck(A))})}function l(){return this.toArray().length}function v(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:c,eachSlice:s,all:b,every:b,any:j,some:j,collect:k,map:k,detect:u,findAll:h,select:h,filter:h,grep:g,include:a,member:a,inGroupsOf:r,inject:m,invoke:w,max:q,min:o,partition:e,pluck:f,reject:d,sortBy:n,toArray:p,entries:p,zip:t,size:l,inspect:v,find:u}})();function $A(c){if(!c){return[]}if("toArray" in Object(c)){return c.toArray()}var b=c.length||0,a=new Array(b);while(b--){a[b]=c[b]}return a}function $w(a){if(!Object.isString(a)){return[]}a=a.strip();return a?a.split(/\s+/):[]}Array.from=$A;(function(){var s=Array.prototype,n=s.slice,p=s.forEach;function b(x,w){for(var v=0,y=this.length>>>0;v<y;v++){if(v in this){x.call(w,this[v],v,this)}}}if(!p){p=b}function m(){this.length=0;return this}function d(){return this[0]}function g(){return this[this.length-1]}function j(){return this.select(function(v){return v!=null})}function u(){return this.inject([],function(w,v){if(Object.isArray(v)){return w.concat(v.flatten())}w.push(v);return w})}function h(){var v=n.call(arguments,0);return this.select(function(w){return !v.include(w)})}function f(v){return(v===false?this.toArray():this)._reverse()}function l(v){return this.inject([],function(y,x,w){if(0==w||(v?y.last()!=x:!y.include(x))){y.push(x)}return y})}function q(v){return this.uniq().findAll(function(w){return v.detect(function(x){return w===x})})}function r(){return n.call(this,0)}function k(){return this.length}function t(){return"["+this.map(Object.inspect).join(", ")+"]"}function a(x,v){v||(v=0);var w=this.length;if(v<0){v=w+v}for(;v<w;v++){if(this[v]===x){return v}}return -1}function o(w,v){v=isNaN(v)?this.length:(v<0?this.length+v:v)+1;var x=this.slice(0,v).reverse().indexOf(w);return(x<0)?x:v-x-1}function c(){var A=n.call(this,0),y;for(var w=0,x=arguments.length;w<x;w++){y=arguments[w];if(Object.isArray(y)&&!("callee" in y)){for(var v=0,z=y.length;v<z;v++){A.push(y[v])}}else{A.push(y)}}return A}Object.extend(s,Enumerable);if(!s._reverse){s._reverse=s.reverse}Object.extend(s,{_each:p,clear:m,first:d,last:g,compact:j,flatten:u,without:h,reverse:f,uniq:l,intersect:q,clone:r,toArray:r,size:k,inspect:t});var e=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(e){s.concat=c}if(!s.indexOf){s.indexOf=a}if(!s.lastIndexOf){s.lastIndexOf=o}})();function $H(a){return new Hash(a)}var Hash=Class.create(Enumerable,(function(){function e(q){this._object=Object.isHash(q)?q.toObject():Object.clone(q)}function f(r){for(var q in this._object){var s=this._object[q],t=[q,s];t.key=q;t.value=s;r(t)}}function k(q,r){return this._object[q]=r}function c(q){if(this._object[q]!==Object.prototype[q]){return this._object[q]}}function n(q){var r=this._object[q];delete this._object[q];return r}function p(){return Object.clone(this._object)}function o(){return this.pluck("key")}function m(){return this.pluck("value")}function g(r){var q=this.detect(function(s){return s.value===r});return q&&q.key}function j(q){return this.clone().update(q)}function d(q){return new Hash(q).inject(this,function(r,s){r.set(s.key,s.value);return r})}function b(q,r){if(Object.isUndefined(r)){return q}return q+"="+encodeURIComponent(String.interpret(r))}function a(){return this.inject([],function(u,x){var t=encodeURIComponent(x.key),r=x.value;if(r&&typeof r=="object"){if(Object.isArray(r)){var w=[];for(var s=0,q=r.length,v;s<q;s++){v=r[s];w.push(b(t,v))}return u.concat(w)}}else{u.push(b(t,r))}return u}).join("&")}function l(){return"#<Hash:{"+this.map(function(q){return q.map(Object.inspect).join(": ")}).join(", ")+"}>"}function h(){return new Hash(this)}return{initialize:e,_each:f,set:k,get:c,unset:n,toObject:p,toTemplateReplacements:p,keys:o,values:m,index:g,merge:j,update:d,toQueryString:a,inspect:l,toJSON:p,clone:h}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function d(){return this.toPaddedString(2,16)}function b(){return this+1}function h(k,j){$R(0,this,true).each(k,j);return this}function g(l,k){var j=this.toString(k||10);return"0".times(l-j.length)+j}function a(){return Math.abs(this)}function c(){return Math.round(this)}function e(){return Math.ceil(this)}function f(){return Math.floor(this)}return{toColorPart:d,succ:b,times:h,toPaddedString:g,abs:a,round:c,ceil:e,floor:f}})());function $R(c,a,b){return new ObjectRange(c,a,b)}var ObjectRange=Class.create(Enumerable,(function(){function b(f,d,e){this.start=f;this.end=d;this.exclusive=e}function c(d){var e=this.start;while(this.include(e)){d(e);e=e.succ()}}function a(d){if(d<this.start){return false}if(this.exclusive){return d<this.end}return d<=this.end}return{initialize:b,_each:c,include:a}})());var Abstract={};var Try={these:function(){var c;for(var b=0,d=arguments.length;b<d;b++){var a=arguments[b];try{c=a();break}catch(f){}}return c}};var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(a){this.responders._each(a)},register:function(a){if(!this.include(a)){this.responders.push(a)}},unregister:function(a){this.responders=this.responders.without(a)},dispatch:function(d,b,c,a){this.each(function(f){if(Object.isFunction(f[d])){try{f[d].apply(f,[b,c,a])}catch(g){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(a){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,a||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,b,a){$super(a);this.transport=Ajax.getTransport();this.request(b)},request:function(b){this.url=b;this.method=this.options.method;var d=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){d+=(d?"&":"")+"_method="+this.method;this.method="post"}if(d&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+d}this.parameters=d.toQueryParams();try{var a=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(a)}Ajax.Responders.dispatch("onCreate",this,a);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||d):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(c){this.dispatchException(c)}},onStateChange:function(){var a=this.transport.readyState;if(a>1&&!((a==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var e={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){e["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){e.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var c=this.options.requestHeaders;if(Object.isFunction(c.push)){for(var b=0,d=c.length;b<d;b+=2){e[c[b]]=c[b+1]}}else{$H(c).each(function(f){e[f.key]=f.value})}}for(var a in e){this.transport.setRequestHeader(a,e[a])}},success:function(){var a=this.getStatus();return !a||(a>=200&&a<300)||a==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(a){return 0}},respondToReadyState:function(a){var c=Ajax.Request.Events[a],b=new Ajax.Response(this);if(c=="Complete"){try{this._complete=true;(this.options["on"+b.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(b,b.headerJSON)}catch(d){this.dispatchException(d)}var f=b.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&f&&f.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+c]||Prototype.emptyFunction)(b,b.headerJSON);Ajax.Responders.dispatch("on"+c,this,b,b.headerJSON)}catch(d){this.dispatchException(d)}if(c=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var a=this.url.match(/^\s*https?:\/\/[^\/]*/);return !a||(a[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(a){try{return this.transport.getResponseHeader(a)||null}catch(b){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(a){(this.options.onException||Prototype.emptyFunction)(this,a);Ajax.Responders.dispatch("onException",this,a)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(c){this.request=c;var d=this.transport=c.transport,a=this.readyState=d.readyState;if((a>2&&!Prototype.Browser.IE)||a==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(d.responseText);this.headerJSON=this._getHeaderJSON()}if(a==4){var b=d.responseXML;this.responseXML=Object.isUndefined(b)?null:b;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(a){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(a){return null}},getResponseHeader:function(a){return this.transport.getResponseHeader(a)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var a=this.getHeader("X-JSON");if(!a){return null}a=decodeURIComponent(escape(a));try{return a.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(b){this.request.dispatchException(b)}},_getResponseJSON:function(){var a=this.request.options;if(!a.evalJSON||(a.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(a.sanitizeJSON||!this.request.isSameOrigin())}catch(b){this.request.dispatchException(b)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,a,c,b){this.container={success:(a.success||a),failure:(a.failure||(a.success?null:a))};b=Object.clone(b);var d=b.onComplete;b.onComplete=(function(e,f){this.updateContent(e.responseText);if(Object.isFunction(d)){d(e,f)}}).bind(this);$super(c,b)},updateContent:function(d){var c=this.container[this.success()?"success":"failure"],a=this.options;if(!a.evalScripts){d=d.stripScripts()}if(c=$(c)){if(a.insertion){if(Object.isString(a.insertion)){var b={};b[a.insertion]=d;c.insert(b)}else{a.insertion(c,d)}}else{c.update(d)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,a,c,b){$super(b);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=a;this.url=c;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(a){if(this.options.decay){this.decay=(a.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=a.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});function $(b){if(arguments.length>1){for(var a=0,d=[],c=arguments.length;a<c;a++){d.push($(arguments[a]))}return d}if(Object.isString(b)){b=document.getElementById(b)}return Element.extend(b)}if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(f,a){var c=[];var e=document.evaluate(f,$(a)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var b=0,d=e.snapshotLength;b<d;b++){c.push(Element.extend(e.snapshotItem(b)))}return c}}if(!Node){var Node={}}if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}(function(c){function d(f,e){if(f==="select"){return false}if("type" in e){return false}return true}var b=(function(){try{var e=document.createElement('<input name="x">');return e.tagName.toLowerCase()==="input"&&e.name==="x"}catch(f){return false}})();var a=c.Element;c.Element=function(g,f){f=f||{};g=g.toLowerCase();var e=Element.cache;if(b&&f.name){g="<"+g+' name="'+f.name+'">';delete f.name;return Element.writeAttribute(document.createElement(g),f)}if(!e[g]){e[g]=Element.extend(document.createElement(g))}var h=d(g,f)?e[g].cloneNode(false):document.createElement(g);return Element.writeAttribute(h,f)};Object.extend(c.Element,a||{});if(a){c.Element.prototype=a.prototype}})(this);Element.idCounter=1;Element.cache={};Element._purgeElement=function(b){var a=b._prototypeUID;if(a){Element.stopObserving(b);b._prototypeUID=void 0;delete Element.Storage[a]}};Element.Methods={visible:function(a){return $(a).style.display!="none"},toggle:function(a){a=$(a);Element[Element.visible(a)?"hide":"show"](a);return a},hide:function(a){a=$(a);a.style.display="none";return a},show:function(a){a=$(a);a.style.display="";return a},remove:function(a){a=$(a);a.parentNode.removeChild(a);return a},update:(function(){var d=(function(){var g=document.createElement("select"),h=true;g.innerHTML='<option value="test">test</option>';if(g.options&&g.options[0]){h=g.options[0].nodeName.toUpperCase()!=="OPTION"}g=null;return h})();var b=(function(){try{var g=document.createElement("table");if(g&&g.tBodies){g.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var j=typeof g.tBodies[0]=="undefined";g=null;return j}}catch(h){return true}})();var a=(function(){try{var g=document.createElement("div");g.innerHTML="<link>";var j=(g.childNodes.length===0);g=null;return j}catch(h){return true}})();var c=d||b||a;var f=(function(){var g=document.createElement("script"),j=false;try{g.appendChild(document.createTextNode(""));j=!g.firstChild||g.firstChild&&g.firstChild.nodeType!==3}catch(h){j=true}g=null;return j})();function e(l,m){l=$(l);var g=Element._purgeElement;var n=l.getElementsByTagName("*"),k=n.length;while(k--){g(n[k])}if(m&&m.toElement){m=m.toElement()}if(Object.isElement(m)){return l.update().insert(m)}m=Object.toHTML(m);var j=l.tagName.toUpperCase();if(j==="SCRIPT"&&f){l.text=m;return l}if(c){if(j in Element._insertionTranslations.tags){while(l.firstChild){l.removeChild(l.firstChild)}Element._getContentFromAnonymousElement(j,m.stripScripts()).each(function(o){l.appendChild(o)})}else{if(a&&Object.isString(m)&&m.indexOf("<link")>-1){while(l.firstChild){l.removeChild(l.firstChild)}var h=Element._getContentFromAnonymousElement(j,m.stripScripts(),true);h.each(function(o){l.appendChild(o)})}else{l.innerHTML=m.stripScripts()}}}else{l.innerHTML=m.stripScripts()}m.evalScripts.bind(m).defer();return l}return e})(),replace:function(b,c){b=$(b);if(c&&c.toElement){c=c.toElement()}else{if(!Object.isElement(c)){c=Object.toHTML(c);var a=b.ownerDocument.createRange();a.selectNode(b);c.evalScripts.bind(c).defer();c=a.createContextualFragment(c.stripScripts())}}b.parentNode.replaceChild(c,b);return b},insert:function(c,e){c=$(c);if(Object.isString(e)||Object.isNumber(e)||Object.isElement(e)||(e&&(e.toElement||e.toHTML))){e={bottom:e}}var d,f,b,g;for(var a in e){d=e[a];a=a.toLowerCase();f=Element._insertionTranslations[a];if(d&&d.toElement){d=d.toElement()}if(Object.isElement(d)){f(c,d);continue}d=Object.toHTML(d);b=((a=="before"||a=="after")?c.parentNode:c).tagName.toUpperCase();g=Element._getContentFromAnonymousElement(b,d.stripScripts());if(a=="top"||a=="after"){g.reverse()}g.each(f.curry(c));d.evalScripts.bind(d).defer()}return c},wrap:function(b,c,a){b=$(b);if(Object.isElement(c)){$(c).writeAttribute(a||{})}else{if(Object.isString(c)){c=new Element(c,a)}else{c=new Element("div",c)}}if(b.parentNode){b.parentNode.replaceChild(c,b)}c.appendChild(b);return c},inspect:function(b){b=$(b);var a="<"+b.tagName.toLowerCase();$H({id:"id",className:"class"}).each(function(f){var e=f.first(),c=f.last(),d=(b[e]||"").toString();if(d){a+=" "+c+"="+d.inspect(true)}});return a+">"},recursivelyCollect:function(a,c,d){a=$(a);d=d||-1;var b=[];while(a=a[c]){if(a.nodeType==1){b.push(Element.extend(a))}if(b.length==d){break}}return b},ancestors:function(a){return Element.recursivelyCollect(a,"parentNode")},descendants:function(a){return Element.select(a,"*")},firstDescendant:function(a){a=$(a).firstChild;while(a&&a.nodeType!=1){a=a.nextSibling}return $(a)},immediateDescendants:function(b){var a=[],c=$(b).firstChild;while(c){if(c.nodeType===1){a.push(Element.extend(c))}c=c.nextSibling}return a},previousSiblings:function(a,b){return Element.recursivelyCollect(a,"previousSibling")},nextSiblings:function(a){return Element.recursivelyCollect(a,"nextSibling")},siblings:function(a){a=$(a);return Element.previousSiblings(a).reverse().concat(Element.nextSiblings(a))},match:function(b,a){b=$(b);if(Object.isString(a)){return Prototype.Selector.match(b,a)}return a.match(b)},up:function(b,d,a){b=$(b);if(arguments.length==1){return $(b.parentNode)}var c=Element.ancestors(b);return Object.isNumber(d)?c[d]:Prototype.Selector.find(c,d,a)},down:function(b,c,a){b=$(b);if(arguments.length==1){return Element.firstDescendant(b)}return Object.isNumber(c)?Element.descendants(b)[c]:Element.select(b,c)[a||0]},previous:function(b,c,a){b=$(b);if(Object.isNumber(c)){a=c,c=false}if(!Object.isNumber(a)){a=0}if(c){return Prototype.Selector.find(b.previousSiblings(),c,a)}else{return b.recursivelyCollect("previousSibling",a+1)[a]}},next:function(b,d,a){b=$(b);if(Object.isNumber(d)){a=d,d=false}if(!Object.isNumber(a)){a=0}if(d){return Prototype.Selector.find(b.nextSiblings(),d,a)}else{var c=Object.isNumber(a)?a+1:1;return b.recursivelyCollect("nextSibling",a+1)[a]}},select:function(a){a=$(a);var b=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(b,a)},adjacent:function(a){a=$(a);var b=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(b,a.parentNode).without(a)},identify:function(a){a=$(a);var b=Element.readAttribute(a,"id");if(b){return b}do{b="anonymous_element_"+Element.idCounter++}while($(b));Element.writeAttribute(a,"id",b);return b},readAttribute:function(c,a){c=$(c);if(Prototype.Browser.IE){var b=Element._attributeTranslations.read;if(b.values[a]){return b.values[a](c,a)}if(b.names[a]){a=b.names[a]}if(a.include(":")){return(!c.attributes||!c.attributes[a])?null:c.attributes[a].value}}return c.getAttribute(a)},writeAttribute:function(e,c,f){e=$(e);var b={},d=Element._attributeTranslations.write;if(typeof c=="object"){b=c}else{b[c]=Object.isUndefined(f)?true:f}for(var a in b){c=d.names[a]||a;f=b[a];if(d.values[a]){c=d.values[a](e,f)}if(f===false||f===null){e.removeAttribute(c)}else{if(f===true){e.setAttribute(c,c)}else{e.setAttribute(c,f)}}}return e},getHeight:function(a){return Element.getDimensions(a).height},getWidth:function(a){return Element.getDimensions(a).width},classNames:function(a){return new Element.ClassNames(a)},hasClassName:function(a,b){if(!(a=$(a))){return}var c=a.className;return(c.length>0&&(c==b||new RegExp("(^|\\s)"+b+"(\\s|$)").test(c)))},addClassName:function(a,b){if(!(a=$(a))){return}if(!Element.hasClassName(a,b)){a.className+=(a.className?" ":"")+b}return a},removeClassName:function(a,b){if(!(a=$(a))){return}a.className=a.className.replace(new RegExp("(^|\\s+)"+b+"(\\s+|$)")," ").strip();return a},toggleClassName:function(a,b){if(!(a=$(a))){return}return Element[Element.hasClassName(a,b)?"removeClassName":"addClassName"](a,b)},cleanWhitespace:function(b){b=$(b);var c=b.firstChild;while(c){var a=c.nextSibling;if(c.nodeType==3&&!/\S/.test(c.nodeValue)){b.removeChild(c)}c=a}return b},empty:function(a){return $(a).innerHTML.blank()},descendantOf:function(b,a){b=$(b),a=$(a);if(b.compareDocumentPosition){return(b.compareDocumentPosition(a)&8)===8}if(a.contains){return a.contains(b)&&a!==b}while(b=b.parentNode){if(b==a){return true}}return false},scrollTo:function(a){a=$(a);var b=Element.cumulativeOffset(a);window.scrollTo(b[0],b[1]);return a},getStyle:function(b,c){b=$(b);c=c=="float"?"cssFloat":c.camelize();var d=b.style[c];if(!d||d=="auto"){var a=document.defaultView.getComputedStyle(b,null);d=a?a[c]:null}if(c=="opacity"){return d?parseFloat(d):1}return d=="auto"?null:d},getOpacity:function(a){return $(a).getStyle("opacity")},setStyle:function(b,c){b=$(b);var e=b.style,a;if(Object.isString(c)){b.style.cssText+=";"+c;return c.include("opacity")?b.setOpacity(c.match(/opacity:\s*(\d?\.?\d*)/)[1]):b}for(var d in c){if(d=="opacity"){b.setOpacity(c[d])}else{e[(d=="float"||d=="cssFloat")?(Object.isUndefined(e.styleFloat)?"cssFloat":"styleFloat"):d]=c[d]}}return b},setOpacity:function(a,b){a=$(a);a.style.opacity=(b==1||b==="")?"":(b<0.00001)?0:b;return a},makePositioned:function(a){a=$(a);var b=Element.getStyle(a,"position");if(b=="static"||!b){a._madePositioned=true;a.style.position="relative";if(Prototype.Browser.Opera){a.style.top=0;a.style.left=0}}return a},undoPositioned:function(a){a=$(a);if(a._madePositioned){a._madePositioned=undefined;a.style.position=a.style.top=a.style.left=a.style.bottom=a.style.right=""}return a},makeClipping:function(a){a=$(a);if(a._overflow){return a}a._overflow=Element.getStyle(a,"overflow")||"auto";if(a._overflow!=="hidden"){a.style.overflow="hidden"}return a},undoClipping:function(a){a=$(a);if(!a._overflow){return a}a.style.overflow=a._overflow=="auto"?"":a._overflow;a._overflow=null;return a},clonePosition:function(b,d){var a=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});d=$(d);var e=Element.viewportOffset(d),f=[0,0],c=null;b=$(b);if(Element.getStyle(b,"position")=="absolute"){c=Element.getOffsetParent(b);f=Element.viewportOffset(c)}if(c==document.body){f[0]-=document.body.offsetLeft;f[1]-=document.body.offsetTop}if(a.setLeft){b.style.left=(e[0]-f[0]+a.offsetLeft)+"px"}if(a.setTop){b.style.top=(e[1]-f[1]+a.offsetTop)+"px"}if(a.setWidth){b.style.width=d.offsetWidth+"px"}if(a.setHeight){b.style.height=d.offsetHeight+"px"}return b}};Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(d,b,c){switch(c){case"height":case"width":if(!Element.visible(b)){return null}var e=parseInt(d(b,c),10);if(e!==b["offset"+c.capitalize()]){return e+"px"}var a;if(c==="height"){a=["border-top-width","padding-top","padding-bottom","border-bottom-width"]}else{a=["border-left-width","padding-left","padding-right","border-right-width"]}return a.inject(e,function(f,g){var h=d(b,g);return h===null?f:f-parseInt(h,10)})+"px";default:return d(b,c)}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(c,a,b){if(b==="title"){return a.title}return c(a,b)})}else{if(Prototype.Browser.IE){Element.Methods.getStyle=function(a,b){a=$(a);b=(b=="float"||b=="cssFloat")?"styleFloat":b.camelize();var c=a.style[b];if(!c&&a.currentStyle){c=a.currentStyle[b]}if(b=="opacity"){if(c=(a.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){if(c[1]){return parseFloat(c[1])/100}}return 1}if(c=="auto"){if((b=="width"||b=="height")&&(a.getStyle("display")!="none")){return a["offset"+b.capitalize()]+"px"}return null}return c};Element.Methods.setOpacity=function(b,e){function f(g){return g.replace(/alpha\([^\)]*\)/gi,"")}b=$(b);var a=b.currentStyle;if((a&&!a.hasLayout)||(!a&&b.style.zoom=="normal")){b.style.zoom=1}var d=b.getStyle("filter"),c=b.style;if(e==1||e===""){(d=f(d))?c.filter=d:c.removeAttribute("filter");return b}else{if(e<0.00001){e=0}}c.filter=f(d)+"alpha(opacity="+(e*100)+")";return b};Element._attributeTranslations=(function(){var b="className",a="for",c=document.createElement("div");c.setAttribute(b,"x");if(c.className!=="x"){c.setAttribute("class","x");if(c.className==="x"){b="class"}}c=null;c=document.createElement("label");c.setAttribute(a,"x");if(c.htmlFor!=="x"){c.setAttribute("htmlFor","x");if(c.htmlFor==="x"){a="htmlFor"}}c=null;return{read:{names:{"class":b,className:b,"for":a,htmlFor:a},values:{_getAttr:function(d,e){return d.getAttribute(e)},_getAttr2:function(d,e){return d.getAttribute(e,2)},_getAttrNode:function(d,f){var e=d.getAttributeNode(f);return e?e.value:""},_getEv:(function(){var d=document.createElement("div"),g;d.onclick=Prototype.emptyFunction;var e=d.getAttribute("onclick");if(String(e).indexOf("{")>-1){g=function(f,h){h=f.getAttribute(h);if(!h){return null}h=h.toString();h=h.split("{")[1];h=h.split("}")[0];return h.strip()}}else{if(e===""){g=function(f,h){h=f.getAttribute(h);if(!h){return null}return h.strip()}}}d=null;return g})(),_flag:function(d,e){return $(d).hasAttribute(e)?e:null},style:function(d){return d.style.cssText.toLowerCase()},title:function(d){return d.title}}}}})();Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(a,b){a.checked=!!b},style:function(a,b){a.style.cssText=b?b:""}}};Element._attributeTranslations.has={};$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder").each(function(a){Element._attributeTranslations.write.names[a.toLowerCase()]=a;Element._attributeTranslations.has[a.toLowerCase()]=a});(function(a){Object.extend(a,{href:a._getAttr2,src:a._getAttr2,type:a._getAttr,action:a._getAttrNode,disabled:a._flag,checked:a._flag,readonly:a._flag,multiple:a._flag,onload:a._getEv,onunload:a._getEv,onclick:a._getEv,ondblclick:a._getEv,onmousedown:a._getEv,onmouseup:a._getEv,onmouseover:a._getEv,onmousemove:a._getEv,onmouseout:a._getEv,onfocus:a._getEv,onblur:a._getEv,onkeypress:a._getEv,onkeydown:a._getEv,onkeyup:a._getEv,onsubmit:a._getEv,onreset:a._getEv,onselect:a._getEv,onchange:a._getEv})})(Element._attributeTranslations.read.values);if(Prototype.BrowserFeatures.ElementExtensions){(function(){function a(e){var b=e.getElementsByTagName("*"),d=[];for(var c=0,f;f=b[c];c++){if(f.tagName!=="!"){d.push(f)}}return d}Element.Methods.down=function(c,d,b){c=$(c);if(arguments.length==1){return c.firstDescendant()}return Object.isNumber(d)?a(c)[d]:Element.select(c,d)[b||0]}})()}}else{if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(a,b){a=$(a);a.style.opacity=(b==1)?0.999999:(b==="")?"":(b<0.00001)?0:b;return a}}else{if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(a,b){a=$(a);a.style.opacity=(b==1||b==="")?"":(b<0.00001)?0:b;if(b==1){if(a.tagName.toUpperCase()=="IMG"&&a.width){a.width++;a.width--}else{try{var d=document.createTextNode(" ");a.appendChild(d);a.removeChild(d)}catch(c){}}}return a}}}}}if("outerHTML" in document.documentElement){Element.Methods.replace=function(c,e){c=$(c);if(e&&e.toElement){e=e.toElement()}if(Object.isElement(e)){c.parentNode.replaceChild(e,c);return c}e=Object.toHTML(e);var d=c.parentNode,b=d.tagName.toUpperCase();if(Element._insertionTranslations.tags[b]){var f=c.next(),a=Element._getContentFromAnonymousElement(b,e.stripScripts());d.removeChild(c);if(f){a.each(function(g){d.insertBefore(g,f)})}else{a.each(function(g){d.appendChild(g)})}}else{c.outerHTML=e.stripScripts()}e.evalScripts.bind(e).defer();return c}}Element._returnOffset=function(b,c){var a=[b,c];a.left=b;a.top=c;return a};Element._getContentFromAnonymousElement=function(e,d,f){var g=new Element("div"),c=Element._insertionTranslations.tags[e];var a=false;if(c){a=true}else{if(f){a=true;c=["","",0]}}if(a){g.innerHTML="&nbsp;"+c[0]+d+c[1];g.removeChild(g.firstChild);for(var b=c[2];b--;){g=g.firstChild}}else{g.innerHTML=d}return $A(g.childNodes)};Element._insertionTranslations={before:function(a,b){a.parentNode.insertBefore(b,a)},top:function(a,b){a.insertBefore(b,a.firstChild)},bottom:function(a,b){a.appendChild(b)},after:function(a,b){a.parentNode.insertBefore(b,a.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};(function(){var a=Element._insertionTranslations.tags;Object.extend(a,{THEAD:a.TBODY,TFOOT:a.TBODY,TH:a.TD})})();Element.Methods.Simulated={hasAttribute:function(a,c){c=Element._attributeTranslations.has[c]||c;var b=$(a).getAttributeNode(c);return !!(b&&b.specified)}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);(function(a){if(!Prototype.BrowserFeatures.ElementExtensions&&a.__proto__){window.HTMLElement={};window.HTMLElement.prototype=a.__proto__;Prototype.BrowserFeatures.ElementExtensions=true}a=null})(document.createElement("div"));Element.extend=(function(){function c(g){if(typeof window.Element!="undefined"){var j=window.Element.prototype;if(j){var l="_"+(Math.random()+"").slice(2),h=document.createElement(g);j[l]="x";var k=(h[l]!=="x");delete j[l];h=null;return k}}return false}function b(h,g){for(var k in g){var j=g[k];if(Object.isFunction(j)&&!(k in h)){h[k]=j.methodize()}}}var d=c("object");if(Prototype.BrowserFeatures.SpecificElementExtensions){if(d){return function(h){if(h&&typeof h._extendedByPrototype=="undefined"){var g=h.tagName;if(g&&(/^(?:object|applet|embed)$/i.test(g))){b(h,Element.Methods);b(h,Element.Methods.Simulated);b(h,Element.Methods.ByTag[g.toUpperCase()])}}return h}}return Prototype.K}var a={},e=Element.Methods.ByTag;var f=Object.extend(function(j){if(!j||typeof j._extendedByPrototype!="undefined"||j.nodeType!=1||j==window){return j}var g=Object.clone(a),h=j.tagName.toUpperCase();if(e[h]){Object.extend(g,e[h])}b(j,g);j._extendedByPrototype=Prototype.emptyFunction;return j},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(a,Element.Methods);Object.extend(a,Element.Methods.Simulated)}}});f.refresh();return f})();if(document.documentElement.hasAttribute){Element.hasAttribute=function(a,b){return a.hasAttribute(b)}}else{Element.hasAttribute=Element.Methods.Simulated.hasAttribute}Element.addMethods=function(c){var j=Prototype.BrowserFeatures,d=Element.Methods.ByTag;if(!c){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}if(arguments.length==2){var b=c;c=arguments[1]}if(!b){Object.extend(Element.Methods,c||{})}else{if(Object.isArray(b)){b.each(g)}else{g(b)}}function g(l){l=l.toUpperCase();if(!Element.Methods.ByTag[l]){Element.Methods.ByTag[l]={}}Object.extend(Element.Methods.ByTag[l],c)}function a(n,m,l){l=l||false;for(var p in n){var o=n[p];if(!Object.isFunction(o)){continue}if(!l||!(p in m)){m[p]=o.methodize()}}}function e(o){var l;var n={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(n[o]){l="HTML"+n[o]+"Element"}if(window[l]){return window[l]}l="HTML"+o+"Element";if(window[l]){return window[l]}l="HTML"+o.capitalize()+"Element";if(window[l]){return window[l]}var m=document.createElement(o),p=m.__proto__||m.constructor.prototype;m=null;return p}var h=window.HTMLElement?HTMLElement.prototype:Element.prototype;if(j.ElementExtensions){a(Element.Methods,h);a(Element.Methods.Simulated,h,true)}if(j.SpecificElementExtensions){for(var k in Element.Methods.ByTag){var f=e(k);if(Object.isUndefined(f)){continue}a(d[k],f.prototype)}}Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh){Element.extend.refresh()}Element.cache={}};document.viewport={getDimensions:function(){return{width:this.getWidth(),height:this.getHeight()}},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)}};(function(b){var g=Prototype.Browser,e=document,c,d={};function a(){if(g.WebKit&&!e.evaluate){return document}if(g.Opera&&window.parseFloat(window.opera.version())<9.5){return document.body}return document.documentElement}function f(h){if(!c){c=a()}d[h]="client"+h;b["get"+h]=function(){return c[d[h]]};return b["get"+h]()}b.getWidth=f.curry("Width");b.getHeight=f.curry("Height")})(document.viewport);Element.Storage={UID:1};Element.addMethods({getStorage:function(b){if(!(b=$(b))){return}var a;if(b===window){a=0}else{if(typeof b._prototypeUID==="undefined"){b._prototypeUID=Element.Storage.UID++}a=b._prototypeUID}if(!Element.Storage[a]){Element.Storage[a]=$H()}return Element.Storage[a]},store:function(b,a,c){if(!(b=$(b))){return}if(arguments.length===2){Element.getStorage(b).update(a)}else{Element.getStorage(b).set(a,c)}return b},retrieve:function(c,b,a){if(!(c=$(c))){return}var e=Element.getStorage(c),d=e.get(b);if(Object.isUndefined(d)){e.set(b,a);d=a}return d},clone:function(c,a){if(!(c=$(c))){return}var e=c.cloneNode(a);e._prototypeUID=void 0;if(a){var d=Element.select(e,"*"),b=d.length;while(b--){d[b]._prototypeUID=void 0}}return Element.extend(e)},purge:function(c){if(!(c=$(c))){return}var a=Element._purgeElement;a(c);var d=c.getElementsByTagName("*"),b=d.length;while(b--){a(d[b])}return null}});(function(){function h(w){var v=w.match(/^(\d+)%?$/i);if(!v){return null}return(Number(v[1])/100)}function p(G,H,w){var z=null;if(Object.isElement(G)){z=G;G=z.getStyle(H)}if(G===null){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(G)){return window.parseFloat(G)}var B=G.include("%"),x=(w===document.viewport);if(/\d/.test(G)&&z&&z.runtimeStyle&&!(B&&x)){var v=z.style.left,F=z.runtimeStyle.left;z.runtimeStyle.left=z.currentStyle.left;z.style.left=G||0;G=z.style.pixelLeft;z.style.left=v;z.runtimeStyle.left=F;return G}if(z&&B){w=w||z.parentNode;var y=h(G);var C=null;var A=z.getStyle("position");var E=H.include("left")||H.include("right")||H.include("width");var D=H.include("top")||H.include("bottom")||H.include("height");if(w===document.viewport){if(E){C=document.viewport.getWidth()}else{if(D){C=document.viewport.getHeight()}}}else{if(E){C=$(w).measure("width")}else{if(D){C=$(w).measure("height")}}}return(C===null)?0:C*y}return 0}function g(v){if(Object.isString(v)&&v.endsWith("px")){return v}return v+"px"}function k(w){var v=w;while(w&&w.parentNode){var x=w.getStyle("display");if(x==="none"){return false}w=$(w.parentNode)}return true}var d=Prototype.K;if("currentStyle" in document.documentElement){d=function(v){if(!v.currentStyle.hasLayout){v.style.zoom=1}return v}}function f(v){if(v.include("border")){v=v+"-width"}return v.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,w,v){$super();this.element=$(w);Element.Layout.PROPERTIES.each(function(x){this._set(x,null)},this);if(v){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(w,v){return Hash.prototype.set.call(this,w,v)},set:function(w,v){throw"Properties of Element.Layout are read-only."},get:function($super,w){var v=$super(w);return v===null?this._compute(w):v},_begin:function(){if(this._prepared){return}var z=this.element;if(k(z)){this._prepared=true;return}var B={position:z.style.position||"",width:z.style.width||"",visibility:z.style.visibility||"",display:z.style.display||""};z.store("prototype_original_styles",B);var C=z.getStyle("position"),v=z.getStyle("width");if(v==="0px"||v===null){z.style.display="block";v=z.getStyle("width")}var w=(C==="fixed")?document.viewport:z.parentNode;z.setStyle({position:"absolute",visibility:"hidden",display:"block"});var x=z.getStyle("width");var y;if(v&&(x===v)){y=p(z,"width",w)}else{if(C==="absolute"||C==="fixed"){y=p(z,"width",w)}else{var D=z.parentNode,A=$(D).getLayout();y=A.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}z.setStyle({width:y+"px"});this._prepared=true},_end:function(){var w=this.element;var v=w.retrieve("prototype_original_styles");w.store("prototype_original_styles",null);w.setStyle(v);this._prepared=false},_compute:function(w){var v=Element.Layout.COMPUTATIONS;if(!(w in v)){throw"Property not found."}return this._set(w,v[w].call(this,this.element))},toObject:function(){var v=$A(arguments);var w=(v.length===0)?Element.Layout.PROPERTIES:v.join(" ").split(" ");var x={};w.each(function(y){if(!Element.Layout.PROPERTIES.include(y)){return}var z=this.get(y);if(z!=null){x[y]=z}},this);return x},toHash:function(){var v=this.toObject.apply(this,arguments);return new Hash(v)},toCSS:function(){var v=$A(arguments);var x=(v.length===0)?Element.Layout.PROPERTIES:v.join(" ").split(" ");var w={};x.each(function(y){if(!Element.Layout.PROPERTIES.include(y)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(y)){return}var z=this.get(y);if(z!=null){w[f(y)]=z+"px"}},this);return w},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(x){if(!this._preComputing){this._begin()}var v=this.get("border-box-height");if(v<=0){if(!this._preComputing){this._end()}return 0}var y=this.get("border-top"),w=this.get("border-bottom");var A=this.get("padding-top"),z=this.get("padding-bottom");if(!this._preComputing){this._end()}return v-y-w-A-z},width:function(x){if(!this._preComputing){this._begin()}var w=this.get("border-box-width");if(w<=0){if(!this._preComputing){this._end()}return 0}var A=this.get("border-left"),v=this.get("border-right");var y=this.get("padding-left"),z=this.get("padding-right");if(!this._preComputing){this._end()}return w-A-v-y-z},"padding-box-height":function(w){var v=this.get("height"),y=this.get("padding-top"),x=this.get("padding-bottom");return v+y+x},"padding-box-width":function(v){var w=this.get("width"),x=this.get("padding-left"),y=this.get("padding-right");return w+x+y},"border-box-height":function(w){if(!this._preComputing){this._begin()}var v=w.offsetHeight;if(!this._preComputing){this._end()}return v},"border-box-width":function(v){if(!this._preComputing){this._begin()}var w=v.offsetWidth;if(!this._preComputing){this._end()}return w},"margin-box-height":function(w){var v=this.get("border-box-height"),x=this.get("margin-top"),y=this.get("margin-bottom");if(v<=0){return 0}return v+x+y},"margin-box-width":function(x){var w=this.get("border-box-width"),y=this.get("margin-left"),v=this.get("margin-right");if(w<=0){return 0}return w+y+v},top:function(v){var w=v.positionedOffset();return w.top},bottom:function(v){var y=v.positionedOffset(),w=v.getOffsetParent(),x=w.measure("height");var z=this.get("border-box-height");return x-z-y.top},left:function(v){var w=v.positionedOffset();return w.left},right:function(x){var z=x.positionedOffset(),y=x.getOffsetParent(),v=y.measure("width");var w=this.get("border-box-width");return v-w-z.left},"padding-top":function(v){return p(v,"paddingTop")},"padding-bottom":function(v){return p(v,"paddingBottom")},"padding-left":function(v){return p(v,"paddingLeft")},"padding-right":function(v){return p(v,"paddingRight")},"border-top":function(v){return p(v,"borderTopWidth")},"border-bottom":function(v){return p(v,"borderBottomWidth")},"border-left":function(v){return p(v,"borderLeftWidth")},"border-right":function(v){return p(v,"borderRightWidth")},"margin-top":function(v){return p(v,"marginTop")},"margin-bottom":function(v){return p(v,"marginBottom")},"margin-left":function(v){return p(v,"marginLeft")},"margin-right":function(v){return p(v,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(w){var x=d(w.getOffsetParent());var y=w.getBoundingClientRect(),v=x.getBoundingClientRect();return(v.right-y.right).round()},bottom:function(w){var x=d(w.getOffsetParent());var y=w.getBoundingClientRect(),v=x.getBoundingClientRect();return(v.bottom-y.bottom).round()}})}Element.Offset=Class.create({initialize:function(w,v){this.left=w.round();this.top=v.round();this[0]=this.left;this[1]=this.top},relativeTo:function(v){return new Element.Offset(this.left-v.left,this.top-v.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function s(w,v){return new Element.Layout(w,v)}function b(v,w){return $(v).getLayout().get(w)}function o(w){w=$(w);var A=Element.getStyle(w,"display");if(A&&A!=="none"){return{width:w.offsetWidth,height:w.offsetHeight}}var x=w.style;var v={visibility:x.visibility,position:x.position,display:x.display};var z={visibility:"hidden",display:"block"};if(v.position!=="fixed"){z.position="absolute"}Element.setStyle(w,z);var y={width:w.offsetWidth,height:w.offsetHeight};Element.setStyle(w,v);return y}function m(v){v=$(v);if(e(v)||c(v)||n(v)||l(v)){return $(document.body)}var w=(Element.getStyle(v,"display")==="inline");if(!w&&v.offsetParent){return $(v.offsetParent)}while((v=v.parentNode)&&v!==document.body){if(Element.getStyle(v,"position")!=="static"){return l(v)?$(document.body):$(v)}}return $(document.body)}function u(w){w=$(w);var v=0,x=0;if(w.parentNode){do{v+=w.offsetTop||0;x+=w.offsetLeft||0;w=w.offsetParent}while(w)}return new Element.Offset(x,v)}function q(w){w=$(w);var x=w.getLayout();var v=0,z=0;do{v+=w.offsetTop||0;z+=w.offsetLeft||0;w=w.offsetParent;if(w){if(n(w)){break}var y=Element.getStyle(w,"position");if(y!=="static"){break}}}while(w);z-=x.get("margin-top");v-=x.get("margin-left");return new Element.Offset(z,v)}function a(w){var v=0,x=0;do{v+=w.scrollTop||0;x+=w.scrollLeft||0;w=w.parentNode}while(w);return new Element.Offset(x,v)}function t(z){w=$(w);var v=0,y=0,x=document.body;var w=z;do{v+=w.offsetTop||0;y+=w.offsetLeft||0;if(w.offsetParent==x&&Element.getStyle(w,"position")=="absolute"){break}}while(w=w.offsetParent);w=z;do{if(w!=x){v-=w.scrollTop||0;y-=w.scrollLeft||0}}while(w=w.parentNode);return new Element.Offset(y,v)}function r(v){v=$(v);if(Element.getStyle(v,"position")==="absolute"){return v}var z=m(v);var y=v.viewportOffset(),w=z.viewportOffset();var A=y.relativeTo(w);var x=v.getLayout();v.store("prototype_absolutize_original_styles",{left:v.getStyle("left"),top:v.getStyle("top"),width:v.getStyle("width"),height:v.getStyle("height")});v.setStyle({position:"absolute",top:A.top+"px",left:A.left+"px",width:x.get("width")+"px",height:x.get("height")+"px"});return v}function j(w){w=$(w);if(Element.getStyle(w,"position")==="relative"){return w}var v=w.retrieve("prototype_absolutize_original_styles");if(v){w.setStyle(v)}return w}if(Prototype.Browser.IE){m=m.wrap(function(x,w){w=$(w);if(e(w)||c(w)||n(w)||l(w)){return $(document.body)}var v=w.getStyle("position");if(v!=="static"){return x(w)}w.setStyle({position:"relative"});var y=x(w);w.setStyle({position:v});return y});q=q.wrap(function(y,w){w=$(w);if(!w.parentNode){return new Element.Offset(0,0)}var v=w.getStyle("position");if(v!=="static"){return y(w)}var x=w.getOffsetParent();if(x&&x.getStyle("position")==="fixed"){d(x)}w.setStyle({position:"relative"});var z=y(w);w.setStyle({position:v});return z})}else{if(Prototype.Browser.Webkit){u=function(w){w=$(w);var v=0,x=0;do{v+=w.offsetTop||0;x+=w.offsetLeft||0;if(w.offsetParent==document.body){if(Element.getStyle(w,"position")=="absolute"){break}}w=w.offsetParent}while(w);return new Element.Offset(x,v)}}}Element.addMethods({getLayout:s,measure:b,getDimensions:o,getOffsetParent:m,cumulativeOffset:u,positionedOffset:q,cumulativeScrollOffset:a,viewportOffset:t,absolutize:r,relativize:j});function n(v){return v.nodeName.toUpperCase()==="BODY"}function l(v){return v.nodeName.toUpperCase()==="HTML"}function e(v){return v.nodeType===Node.DOCUMENT_NODE}function c(v){return v!==document.body&&!Element.descendantOf(v,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(v){v=$(v);if(c(v)){return new Element.Offset(0,0)}var w=v.getBoundingClientRect(),x=document.documentElement;return new Element.Offset(w.left-x.clientLeft,w.top-x.clientTop)}})}})();window.$$=function(){var a=$A(arguments).join(", ");return Prototype.Selector.select(a,document)};Prototype.Selector=(function(){function a(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function c(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function d(l,m,h){h=h||0;var g=Prototype.Selector.match,k=l.length,f=0,j;for(j=0;j<k;j++){if(g(l[j],m)&&h==f++){return Element.extend(l[j])}}}function e(h){for(var f=0,g=h.length;f<g;f++){Element.extend(h[f])}return h}var b=Prototype.K;return{select:a,match:c,find:d,extendElements:(Element.extend===b)?b:e,extendElement:Element.extend}})();
/*
* Sizzle CSS Selector Engine - v1.0
*  Copyright 2009, The Dojo Foundation
*  Released under the MIT, BSD, and GPL Licenses.
*  More information: http://sizzlejs.com/
*/
(function(){var r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,k=0,d=Object.prototype.toString,p=false,j=true;[0,0].sort(function(){j=false;return 0});var b=function(F,v,C,x){C=C||[];var e=v=v||document;if(v.nodeType!==1&&v.nodeType!==9){return[]}if(!F||typeof F!=="string"){return C}var D=[],E,A,J,I,B,u,t=true,y=q(v),H=F;while((r.exec(""),E=r.exec(H))!==null){H=E[3];D.push(E[1]);if(E[2]){u=E[3];break}}if(D.length>1&&l.exec(F)){if(D.length===2&&f.relative[D[0]]){A=g(D[0]+D[1],v)}else{A=f.relative[D[0]]?[v]:b(D.shift(),v);while(D.length){F=D.shift();if(f.relative[F]){F+=D.shift()}A=g(F,A)}}}else{if(!x&&D.length>1&&v.nodeType===9&&!y&&f.match.ID.test(D[0])&&!f.match.ID.test(D[D.length-1])){var K=b.find(D.shift(),v,y);v=K.expr?b.filter(K.expr,K.set)[0]:K.set[0]}if(v){var K=x?{expr:D.pop(),set:a(x)}:b.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&v.parentNode?v.parentNode:v,y);A=K.expr?b.filter(K.expr,K.set):K.set;if(D.length>0){J=a(A)}else{t=false}while(D.length){var w=D.pop(),z=w;if(!f.relative[w]){w=""}else{z=D.pop()}if(z==null){z=v}f.relative[w](J,z,y)}}else{J=D=[]}}if(!J){J=A}if(!J){throw"Syntax error, unrecognized expression: "+(w||F)}if(d.call(J)==="[object Array]"){if(!t){C.push.apply(C,J)}else{if(v&&v.nodeType===1){for(var G=0;J[G]!=null;G++){if(J[G]&&(J[G]===true||J[G].nodeType===1&&h(v,J[G]))){C.push(A[G])}}}else{for(var G=0;J[G]!=null;G++){if(J[G]&&J[G].nodeType===1){C.push(A[G])}}}}}else{a(J,C)}if(u){b(u,e,C,x);b.uniqueSort(C)}return C};b.uniqueSort=function(t){if(c){p=j;t.sort(c);if(p){for(var e=1;e<t.length;e++){if(t[e]===t[e-1]){t.splice(e--,1)}}}}return t};b.matches=function(e,t){return b(e,null,null,t)};b.find=function(z,e,A){var y,w;if(!z){return[]}for(var v=0,u=f.order.length;v<u;v++){var x=f.order[v],w;if((w=f.leftMatch[x].exec(z))){var t=w[1];w.splice(1,1);if(t.substr(t.length-1)!=="\\"){w[1]=(w[1]||"").replace(/\\/g,"");y=f.find[x](w,e,A);if(y!=null){z=z.replace(f.match[x],"");break}}}}if(!y){y=e.getElementsByTagName("*")}return{set:y,expr:z}};b.filter=function(C,B,F,v){var u=C,H=[],z=B,x,e,y=B&&B[0]&&q(B[0]);while(C&&B.length){for(var A in f.filter){if((x=f.match[A].exec(C))!=null){var t=f.filter[A],G,E;e=false;if(z==H){H=[]}if(f.preFilter[A]){x=f.preFilter[A](x,z,F,H,v,y);if(!x){e=G=true}else{if(x===true){continue}}}if(x){for(var w=0;(E=z[w])!=null;w++){if(E){G=t(E,x,w,z);var D=v^!!G;if(F&&G!=null){if(D){e=true}else{z[w]=false}}else{if(D){H.push(E);e=true}}}}}if(G!==undefined){if(!F){z=H}C=C.replace(f.match[A],"");if(!e){return[]}break}}}if(C==u){if(e==null){throw"Syntax error, unrecognized expression: "+C}else{break}}u=C}return z};var f=b.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(z,e,y){var w=typeof e==="string",A=w&&!/\W/.test(e),x=w&&!A;if(A&&!y){e=e.toUpperCase()}for(var v=0,u=z.length,t;v<u;v++){if((t=z[v])){while((t=t.previousSibling)&&t.nodeType!==1){}z[v]=x||t&&t.nodeName===e?t||false:t===e}}if(x){b.filter(e,z,true)}},">":function(y,t,z){var w=typeof t==="string";if(w&&!/\W/.test(t)){t=z?t:t.toUpperCase();for(var u=0,e=y.length;u<e;u++){var x=y[u];if(x){var v=x.parentNode;y[u]=v.nodeName===t?v:false}}}else{for(var u=0,e=y.length;u<e;u++){var x=y[u];if(x){y[u]=w?x.parentNode:x.parentNode===t}}if(w){b.filter(t,y,true)}}},"":function(v,t,x){var u=k++,e=s;if(!/\W/.test(t)){var w=t=x?t:t.toUpperCase();e=o}e("parentNode",t,u,v,w,x)},"~":function(v,t,x){var u=k++,e=s;if(typeof t==="string"&&!/\W/.test(t)){var w=t=x?t:t.toUpperCase();e=o}e("previousSibling",t,u,v,w,x)}},find:{ID:function(t,u,v){if(typeof u.getElementById!=="undefined"&&!v){var e=u.getElementById(t[1]);return e?[e]:[]}},NAME:function(u,x,y){if(typeof x.getElementsByName!=="undefined"){var t=[],w=x.getElementsByName(u[1]);for(var v=0,e=w.length;v<e;v++){if(w[v].getAttribute("name")===u[1]){t.push(w[v])}}return t.length===0?null:t}},TAG:function(e,t){return t.getElementsByTagName(e[1])}},preFilter:{CLASS:function(v,t,u,e,y,z){v=" "+v[1].replace(/\\/g,"")+" ";if(z){return v}for(var w=0,x;(x=t[w])!=null;w++){if(x){if(y^(x.className&&(" "+x.className+" ").indexOf(v)>=0)){if(!u){e.push(x)}}else{if(u){t[w]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(t,e){for(var u=0;e[u]===false;u++){}return e[u]&&q(e[u])?t[1]:t[1].toUpperCase()},CHILD:function(e){if(e[1]=="nth"){var t=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=="even"&&"2n"||e[2]=="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(t[1]+(t[2]||1))-0;e[3]=t[3]-0}e[0]=k++;return e},ATTR:function(w,t,u,e,x,y){var v=w[1].replace(/\\/g,"");if(!y&&f.attrMap[v]){w[1]=f.attrMap[v]}if(w[2]==="~="){w[4]=" "+w[4]+" "}return w},PSEUDO:function(w,t,u,e,x){if(w[1]==="not"){if((r.exec(w[3])||"").length>1||/^\w/.test(w[3])){w[3]=b(w[3],null,null,t)}else{var v=b.filter(w[3],t,u,true^x);if(!u){e.push.apply(e,v)}return false}}else{if(f.match.POS.test(w[0])||f.match.CHILD.test(w[0])){return true}}return w},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(u,t,e){return !!b(e[3],u).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toUpperCase()==="BUTTON"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(t,e){return e===0},last:function(u,t,e,v){return t===v.length-1},even:function(t,e){return e%2===0},odd:function(t,e){return e%2===1},lt:function(u,t,e){return t<e[3]-0},gt:function(u,t,e){return t>e[3]-0},nth:function(u,t,e){return e[3]-0==t},eq:function(u,t,e){return e[3]-0==t}},filter:{PSEUDO:function(y,u,v,z){var t=u[1],w=f.filters[t];if(w){return w(y,v,u,z)}else{if(t==="contains"){return(y.textContent||y.innerText||"").indexOf(u[3])>=0}else{if(t==="not"){var x=u[3];for(var v=0,e=x.length;v<e;v++){if(x[v]===y){return false}}return true}}}},CHILD:function(e,v){var y=v[1],t=e;switch(y){case"only":case"first":while((t=t.previousSibling)){if(t.nodeType===1){return false}}if(y=="first"){return true}t=e;case"last":while((t=t.nextSibling)){if(t.nodeType===1){return false}}return true;case"nth":var u=v[2],B=v[3];if(u==1&&B==0){return true}var x=v[0],A=e.parentNode;if(A&&(A.sizcache!==x||!e.nodeIndex)){var w=0;for(t=A.firstChild;t;t=t.nextSibling){if(t.nodeType===1){t.nodeIndex=++w}}A.sizcache=x}var z=e.nodeIndex-B;if(u==0){return z==0}else{return(z%u==0&&z/u>=0)}}},ID:function(t,e){return t.nodeType===1&&t.getAttribute("id")===e},TAG:function(t,e){return(e==="*"&&t.nodeType===1)||t.nodeName===e},CLASS:function(t,e){return(" "+(t.className||t.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(x,v){var u=v[1],e=f.attrHandle[u]?f.attrHandle[u](x):x[u]!=null?x[u]:x.getAttribute(u),y=e+"",w=v[2],t=v[4];return e==null?w==="!=":w==="="?y===t:w==="*="?y.indexOf(t)>=0:w==="~="?(" "+y+" ").indexOf(t)>=0:!t?y&&e!==false:w==="!="?y!=t:w==="^="?y.indexOf(t)===0:w==="$="?y.substr(y.length-t.length)===t:w==="|="?y===t||y.substr(0,t.length+1)===t+"-":false},POS:function(w,t,u,x){var e=t[2],v=f.setFilters[e];if(v){return v(w,u,t,x)}}}};var l=f.match.POS;for(var n in f.match){f.match[n]=new RegExp(f.match[n].source+/(?![^\[]*\])(?![^\(]*\))/.source);f.leftMatch[n]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[n].source)}var a=function(t,e){t=Array.prototype.slice.call(t,0);if(e){e.push.apply(e,t);return e}return t};try{Array.prototype.slice.call(document.documentElement.childNodes,0)}catch(m){a=function(w,v){var t=v||[];if(d.call(w)==="[object Array]"){Array.prototype.push.apply(t,w)}else{if(typeof w.length==="number"){for(var u=0,e=w.length;u<e;u++){t.push(w[u])}}else{for(var u=0;w[u];u++){t.push(w[u])}}}return t}}var c;if(document.documentElement.compareDocumentPosition){c=function(t,e){if(!t.compareDocumentPosition||!e.compareDocumentPosition){if(t==e){p=true}return 0}var u=t.compareDocumentPosition(e)&4?-1:t===e?0:1;if(u===0){p=true}return u}}else{if("sourceIndex" in document.documentElement){c=function(t,e){if(!t.sourceIndex||!e.sourceIndex){if(t==e){p=true}return 0}var u=t.sourceIndex-e.sourceIndex;if(u===0){p=true}return u}}else{if(document.createRange){c=function(v,t){if(!v.ownerDocument||!t.ownerDocument){if(v==t){p=true}return 0}var u=v.ownerDocument.createRange(),e=t.ownerDocument.createRange();u.setStart(v,0);u.setEnd(v,0);e.setStart(t,0);e.setEnd(t,0);var w=u.compareBoundaryPoints(Range.START_TO_END,e);if(w===0){p=true}return w}}}}(function(){var t=document.createElement("div"),u="script"+(new Date).getTime();t.innerHTML="<a name='"+u+"'/>";var e=document.documentElement;e.insertBefore(t,e.firstChild);if(!!document.getElementById(u)){f.find.ID=function(w,x,y){if(typeof x.getElementById!=="undefined"&&!y){var v=x.getElementById(w[1]);return v?v.id===w[1]||typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id").nodeValue===w[1]?[v]:undefined:[]}};f.filter.ID=function(x,v){var w=typeof x.getAttributeNode!=="undefined"&&x.getAttributeNode("id");return x.nodeType===1&&w&&w.nodeValue===v}}e.removeChild(t);e=t=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(t,x){var w=x.getElementsByTagName(t[1]);if(t[1]==="*"){var v=[];for(var u=0;w[u];u++){if(w[u].nodeType===1){v.push(w[u])}}w=v}return w}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(t){return t.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,u=document.createElement("div");u.innerHTML="<p class='TEST'></p>";if(u.querySelectorAll&&u.querySelectorAll(".TEST").length===0){return}b=function(y,x,v,w){x=x||document;if(!w&&x.nodeType===9&&!q(x)){try{return a(x.querySelectorAll(y),v)}catch(z){}}return e(y,x,v,w)};for(var t in e){b[t]=e[t]}u=null})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(t,u,v){if(typeof u.getElementsByClassName!=="undefined"&&!v){return u.getElementsByClassName(t[1])}};e=null})()}function o(t,y,x,C,z,B){var A=t=="previousSibling"&&!B;for(var v=0,u=C.length;v<u;v++){var e=C[v];if(e){if(A&&e.nodeType===1){e.sizcache=x;e.sizset=v}e=e[t];var w=false;while(e){if(e.sizcache===x){w=C[e.sizset];break}if(e.nodeType===1&&!B){e.sizcache=x;e.sizset=v}if(e.nodeName===y){w=e;break}e=e[t]}C[v]=w}}}function s(t,y,x,C,z,B){var A=t=="previousSibling"&&!B;for(var v=0,u=C.length;v<u;v++){var e=C[v];if(e){if(A&&e.nodeType===1){e.sizcache=x;e.sizset=v}e=e[t];var w=false;while(e){if(e.sizcache===x){w=C[e.sizset];break}if(e.nodeType===1){if(!B){e.sizcache=x;e.sizset=v}if(typeof y!=="string"){if(e===y){w=true;break}}else{if(b.filter(y,[e]).length>0){w=e;break}}}e=e[t]}C[v]=w}}}var h=document.compareDocumentPosition?function(t,e){return t.compareDocumentPosition(e)&16}:function(t,e){return t!==e&&(t.contains?t.contains(e):true)};var q=function(e){return e.nodeType===9&&e.documentElement.nodeName!=="HTML"||!!e.ownerDocument&&e.ownerDocument.documentElement.nodeName!=="HTML"};var g=function(e,z){var v=[],w="",x,u=z.nodeType?[z]:z;while((x=f.match.PSEUDO.exec(e))){w+=x[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var y=0,t=u.length;y<t;y++){b(e,u[y],v)}return b.filter(w,v)};window.Sizzle=b})();Prototype._original_property=window.Sizzle;(function(c){var d=Prototype.Selector.extendElements;function a(e,f){return d(c(e,f||document))}function b(f,e){return c.matches(e,[f]).length==1}Prototype.Selector.engine=c;Prototype.Selector.select=a;Prototype.Selector.match=b})(Sizzle);window.Sizzle=Prototype._original_property;delete Prototype._original_property;var Form={reset:function(a){a=$(a);a.reset();return a},serializeElements:function(h,d){if(typeof d!="object"){d={hash:!!d}}else{if(Object.isUndefined(d.hash)){d.hash=true}}var e,g,a=false,f=d.submit,b,c;if(d.hash){c={};b=function(j,k,l){if(k in j){if(!Object.isArray(j[k])){j[k]=[j[k]]}j[k].push(l)}else{j[k]=l}return j}}else{c="";b=function(j,k,l){return j+(j?"&":"")+encodeURIComponent(k)+"="+encodeURIComponent(l)}}return h.inject(c,function(j,k){if(!k.disabled&&k.name){e=k.name;g=$(k).getValue();if(g!=null&&k.type!="file"&&(k.type!="submit"||(!a&&f!==false&&(!f||e==f)&&(a=true)))){j=b(j,e,g)}}return j})}};Form.Methods={serialize:function(b,a){return Form.serializeElements(Form.getElements(b),a)},getElements:function(e){var f=$(e).getElementsByTagName("*"),d,a=[],c=Form.Element.Serializers;for(var b=0;d=f[b];b++){a.push(d)}return a.inject([],function(g,h){if(c[h.tagName.toLowerCase()]){g.push(Element.extend(h))}return g})},getInputs:function(g,c,d){g=$(g);var a=g.getElementsByTagName("input");if(!c&&!d){return $A(a).map(Element.extend)}for(var e=0,h=[],f=a.length;e<f;e++){var b=a[e];if((c&&b.type!=c)||(d&&b.name!=d)){continue}h.push(Element.extend(b))}return h},disable:function(a){a=$(a);Form.getElements(a).invoke("disable");return a},enable:function(a){a=$(a);Form.getElements(a).invoke("enable");return a},findFirstElement:function(b){var c=$(b).getElements().findAll(function(d){return"hidden"!=d.type&&!d.disabled});var a=c.findAll(function(d){return d.hasAttribute("tabIndex")&&d.tabIndex>=0}).sortBy(function(d){return d.tabIndex}).first();return a?a:c.find(function(d){return/^(?:input|select|textarea)$/i.test(d.tagName)})},focusFirstElement:function(b){b=$(b);var a=b.findFirstElement();if(a){a.activate()}return b},request:function(b,a){b=$(b),a=Object.clone(a||{});var d=a.parameters,c=b.readAttribute("action")||"";if(c.blank()){c=window.location.href}a.parameters=b.serialize(true);if(d){if(Object.isString(d)){d=d.toQueryParams()}Object.extend(a.parameters,d)}if(b.hasAttribute("method")&&!a.method){a.method=b.method}return new Ajax.Request(c,a)}};Form.Element={focus:function(a){$(a).focus();return a},select:function(a){$(a).select();return a}};Form.Element.Methods={serialize:function(a){a=$(a);if(!a.disabled&&a.name){var b=a.getValue();if(b!=undefined){var c={};c[a.name]=b;return Object.toQueryString(c)}}return""},getValue:function(a){a=$(a);var b=a.tagName.toLowerCase();return Form.Element.Serializers[b](a)},setValue:function(a,b){a=$(a);var c=a.tagName.toLowerCase();Form.Element.Serializers[c](a,b);return a},clear:function(a){$(a).value="";return a},present:function(a){return $(a).value!=""},activate:function(a){a=$(a);try{a.focus();if(a.select&&(a.tagName.toLowerCase()!="input"||!(/^(?:button|reset|submit)$/i.test(a.type)))){a.select()}}catch(b){}return a},disable:function(a){a=$(a);a.disabled=true;return a},enable:function(a){a=$(a);a.disabled=false;return a}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers=(function(){function b(h,j){switch(h.type.toLowerCase()){case"checkbox":case"radio":return f(h,j);default:return e(h,j)}}function f(h,j){if(Object.isUndefined(j)){return h.checked?h.value:null}else{h.checked=!!j}}function e(h,j){if(Object.isUndefined(j)){return h.value}else{h.value=j}}function a(k,n){if(Object.isUndefined(n)){return(k.type==="select-one"?c:d)(k)}var j,l,o=!Object.isArray(n);for(var h=0,m=k.length;h<m;h++){j=k.options[h];l=this.optionValue(j);if(o){if(l==n){j.selected=true;return}}else{j.selected=n.include(l)}}}function c(j){var h=j.selectedIndex;return h>=0?g(j.options[h]):null}function d(l){var h,m=l.length;if(!m){return null}for(var k=0,h=[];k<m;k++){var j=l.options[k];if(j.selected){h.push(g(j))}}return h}function g(h){return Element.hasAttribute(h,"value")?h.value:h.text}return{input:b,inputSelector:f,textarea:e,select:a,selectOne:c,selectMany:d,optionValue:g,button:e}})();Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,a,b,c){$super(c,b);this.element=$(a);this.lastValue=this.getValue()},execute:function(){var a=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(a)?this.lastValue!=a:String(this.lastValue)!=String(a)){this.callback(this.element,a);this.lastValue=a}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element)}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element)}});Abstract.EventObserver=Class.create({initialize:function(a,b){this.element=$(a);this.callback=b;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=="form"){this.registerFormCallbacks()}else{this.registerCallback(this.element)}},onElementEvent:function(){var a=this.getValue();if(this.lastValue!=a){this.callback(this.element,a);this.lastValue=a}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this)},registerCallback:function(a){if(a.type){switch(a.type.toLowerCase()){case"checkbox":case"radio":Event.observe(a,"click",this.onElementEvent.bind(this));break;default:Event.observe(a,"change",this.onElementEvent.bind(this));break}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element)}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element)}});(function(){var D={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{}};var f=document.documentElement;var E="onmouseenter" in f&&"onmouseleave" in f;var a=function(F){return false};if(window.attachEvent){if(window.addEventListener){a=function(F){return !(F instanceof window.Event)}}else{a=function(F){return true}}}var s;function B(G,F){return G.which?(G.which===F+1):(G.button===F)}var p={0:1,1:4,2:2};function z(G,F){return G.button===p[F]}function C(G,F){switch(F){case 0:return G.which==1&&!G.metaKey;case 1:return G.which==2||(G.which==1&&G.metaKey);case 2:return G.which==3;default:return false}}if(window.attachEvent){if(!window.addEventListener){s=z}else{s=function(G,F){return a(G)?z(G,F):B(G,F)}}}else{if(Prototype.Browser.WebKit){s=C}else{s=B}}function w(F){return s(F,0)}function u(F){return s(F,1)}function o(F){return s(F,2)}function d(H){H=D.extend(H);var G=H.target,F=H.type,I=H.currentTarget;if(I&&I.tagName){if(F==="load"||F==="error"||(F==="click"&&I.tagName.toLowerCase()==="input"&&I.type==="radio")){G=I}}if(G.nodeType==Node.TEXT_NODE){G=G.parentNode}return Element.extend(G)}function q(G,H){var F=D.element(G);if(!H){return F}while(F){if(Object.isElement(F)&&Prototype.Selector.match(F,H)){return Element.extend(F)}F=F.parentNode}}function t(F){return{x:c(F),y:b(F)}}function c(H){var G=document.documentElement,F=document.body||{scrollLeft:0};return H.pageX||(H.clientX+(G.scrollLeft||F.scrollLeft)-(G.clientLeft||0))}function b(H){var G=document.documentElement,F=document.body||{scrollTop:0};return H.pageY||(H.clientY+(G.scrollTop||F.scrollTop)-(G.clientTop||0))}function r(F){D.extend(F);F.preventDefault();F.stopPropagation();F.stopped=true}D.Methods={isLeftClick:w,isMiddleClick:u,isRightClick:o,element:d,findElement:q,pointer:t,pointerX:c,pointerY:b,stop:r};var y=Object.keys(D.Methods).inject({},function(F,G){F[G]=D.Methods[G].methodize();return F});if(window.attachEvent){function j(G){var F;switch(G.type){case"mouseover":case"mouseenter":F=G.fromElement;break;case"mouseout":case"mouseleave":F=G.toElement;break;default:return null}return Element.extend(F)}var v={stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}};D.extend=function(G,F){if(!G){return false}if(!a(G)){return G}if(G._extendedByPrototype){return G}G._extendedByPrototype=Prototype.emptyFunction;var H=D.pointer(G);Object.extend(G,{target:G.srcElement||F,relatedTarget:j(G),pageX:H.x,pageY:H.y});Object.extend(G,y);Object.extend(G,v);return G}}else{D.extend=Prototype.K}if(window.addEventListener){D.prototype=window.Event.prototype||document.createEvent("HTMLEvents").__proto__;Object.extend(D.prototype,y)}function n(J,I,K){var H=Element.retrieve(J,"prototype_event_registry");if(Object.isUndefined(H)){e.push(J);H=Element.retrieve(J,"prototype_event_registry",$H())}var F=H.get(I);if(Object.isUndefined(F)){F=[];H.set(I,F)}if(F.pluck("handler").include(K)){return false}var G;if(I.include(":")){G=function(L){if(Object.isUndefined(L.eventName)){return false}if(L.eventName!==I){return false}D.extend(L,J);K.call(J,L)}}else{if(!E&&(I==="mouseenter"||I==="mouseleave")){if(I==="mouseenter"||I==="mouseleave"){G=function(M){D.extend(M,J);var L=M.relatedTarget;while(L&&L!==J){try{L=L.parentNode}catch(N){L=J}}if(L===J){return}K.call(J,M)}}}else{G=function(L){D.extend(L,J);K.call(J,L)}}}G.handler=K;F.push(G);return G}function h(){for(var F=0,G=e.length;F<G;F++){D.stopObserving(e[F]);e[F]=null}}var e=[];if(Prototype.Browser.IE){window.attachEvent("onunload",h)}if(Prototype.Browser.WebKit){window.addEventListener("unload",Prototype.emptyFunction,false)}var m=Prototype.K,g={mouseenter:"mouseover",mouseleave:"mouseout"};if(!E){m=function(F){return(g[F]||F)}}function x(I,H,J){I=$(I);var G=n(I,H,J);if(!G){return I}if(H.include(":")){if(I.addEventListener){I.addEventListener("dataavailable",G,false)}else{I.attachEvent("ondataavailable",G);I.attachEvent("onlosecapture",G)}}else{var F=m(H);if(I.addEventListener){I.addEventListener(F,G,false)}else{I.attachEvent("on"+F,G)}}return I}function l(L,I,M){L=$(L);var H=Element.retrieve(L,"prototype_event_registry");if(!H){return L}if(!I){H.each(function(O){var N=O.key;l(L,N)});return L}var J=H.get(I);if(!J){return L}if(!M){J.each(function(N){l(L,I,N.handler)});return L}var K=J.length,G;while(K--){if(J[K].handler===M){G=J[K];break}}if(!G){return L}if(I.include(":")){if(L.removeEventListener){L.removeEventListener("dataavailable",G,false)}else{L.detachEvent("ondataavailable",G);L.detachEvent("onlosecapture",G)}}else{var F=m(I);if(L.removeEventListener){L.removeEventListener(F,G,false)}else{L.detachEvent("on"+F,G)}}H.set(I,J.without(G));return L}function A(I,H,G,F){I=$(I);if(Object.isUndefined(F)){F=true}if(I==document&&document.createEvent&&!I.dispatchEvent){I=document.documentElement}var J;if(document.createEvent){J=document.createEvent("HTMLEvents");J.initEvent("dataavailable",F,true)}else{J=document.createEventObject();J.eventType=F?"ondataavailable":"onlosecapture"}J.eventName=H;J.memo=G||{};if(document.createEvent){I.dispatchEvent(J)}else{I.fireEvent(J.eventType,J)}return D.extend(J)}D.Handler=Class.create({initialize:function(H,G,F,I){this.element=$(H);this.eventName=G;this.selector=F;this.callback=I;this.handler=this.handleEvent.bind(this)},start:function(){D.observe(this.element,this.eventName,this.handler);return this},stop:function(){D.stopObserving(this.element,this.eventName,this.handler);return this},handleEvent:function(G){var F=D.findElement(G,this.selector);if(F){this.callback.call(this.element,G,F)}}});function k(H,G,F,I){H=$(H);if(Object.isFunction(F)&&Object.isUndefined(I)){I=F,F=null}return new D.Handler(H,G,F,I).start()}Object.extend(D,D.Methods);Object.extend(D,{fire:A,observe:x,stopObserving:l,on:k});Element.addMethods({fire:A,observe:x,stopObserving:l,on:k});Object.extend(document,{fire:A.methodize(),observe:x.methodize(),stopObserving:l.methodize(),on:k.methodize(),loaded:false});if(window.Event){Object.extend(window.Event,D)}else{window.Event=D}})();(function(){var d;function a(){if(document.loaded){return}if(d){window.clearTimeout(d)}document.loaded=true;document.fire("dom:loaded")}function c(){if(document.readyState==="complete"){document.stopObserving("readystatechange",c);a()}}function b(){try{document.documentElement.doScroll("left")}catch(f){d=b.defer();return}a()}if(document.addEventListener){document.addEventListener("DOMContentLoaded",a,false)}else{document.observe("readystatechange",c);if(window==top){d=b.defer()}}Event.observe(window,"load",a)})();Element.addMethods();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(a,b){return Element.insert(a,{before:b})},Top:function(a,b){return Element.insert(a,{top:b})},Bottom:function(a,b){return Element.insert(a,{bottom:b})},After:function(a,b){return Element.insert(a,{after:b})}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},within:function(b,a,c){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(b,a,c)}this.xcomp=a;this.ycomp=c;this.offset=Element.cumulativeOffset(b);return(c>=this.offset[1]&&c<this.offset[1]+b.offsetHeight&&a>=this.offset[0]&&a<this.offset[0]+b.offsetWidth)},withinIncludingScrolloffsets:function(b,a,d){var c=Element.cumulativeScrollOffset(b);this.xcomp=a+c[0]-this.deltaX;this.ycomp=d+c[1]-this.deltaY;this.offset=Element.cumulativeOffset(b);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+b.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+b.offsetWidth)},overlap:function(b,a){if(!b){return 0}if(b=="vertical"){return((this.offset[1]+a.offsetHeight)-this.ycomp)/a.offsetHeight}if(b=="horizontal"){return((this.offset[0]+a.offsetWidth)-this.xcomp)/a.offsetWidth}},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(a){Position.prepare();return Element.absolutize(a)},relativize:function(a){Position.prepare();return Element.relativize(a)},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(b,c,a){a=a||{};return Element.clonePosition(c,b,a)}};if(!document.getElementsByClassName){document.getElementsByClassName=function(b){function a(c){return c.blank()?null:"[contains(concat(' ', @class, ' '), ' "+c+" ')]"}b.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(c,e){e=e.toString().strip();var d=/\s/.test(e)?$w(e).map(a).join(""):a(e);return d?document._getElementsByXPath(".//*"+d,c):[]}:function(e,f){f=f.toString().strip();var g=[],h=(/\s/.test(f)?$w(f):null);if(!h&&!f){return g}var c=$(e).getElementsByTagName("*");f=" "+f+" ";for(var d=0,k,j;k=c[d];d++){if(k.className&&(j=" "+k.className+" ")&&(j.include(f)||(h&&h.all(function(l){return !l.toString().blank()&&j.include(" "+l+" ")})))){g.push(Element.extend(k))}}return g};return function(d,c){return $(c||document.body).getElementsByClassName(d)}}(Element.Methods)}Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(a){this.element=$(a)},_each:function(a){this.element.className.split(/\s+/).select(function(b){return b.length>0})._each(a)},set:function(a){this.element.className=a},add:function(a){if(this.include(a)){return}this.set($A(this).concat(a).join(" "))},remove:function(a){if(!this.include(a)){return}this.set($A(this).without(a).join(" "))},toString:function(){return $A(this).join(" ")}};Object.extend(Element.ClassNames.prototype,Enumerable);(function(){window.Selector=Class.create({initialize:function(a){this.expression=a.strip()},findElements:function(a){return Prototype.Selector.select(this.expression,a)},match:function(a){return Prototype.Selector.match(a,this.expression)},toString:function(){return this.expression},inspect:function(){return"#<Selector: "+this.expression+">"}});Object.extend(Selector,{matchElements:function(f,g){var a=Prototype.Selector.match,d=[];for(var c=0,e=f.length;c<e;c++){var b=f[c];if(a(b,g)){d.push(Element.extend(b))}}return d},findElement:function(f,g,b){b=b||0;var a=0,d;for(var c=0,e=f.length;c<e;c++){d=f[c];if(Prototype.Selector.match(d,g)&&b===a++){return Element.extend(d)}}},findChildElements:function(b,c){var a=c.toArray().join(", ");return Prototype.Selector.select(a,b||document)}})})();
/*
*  script.aculo.us version 2.0.0_b1
*  (c) 2005-2010 Thomas Fuchs
*
*  script.aculo.us is freely distributable under the terms of an MIT-style license.
*----------------------------------------------------------------------------------*/
var S2={Version:"2.0.0_b1",Extensions:{}};Function.prototype.optionize=function(){var a=this,c=a.argumentNames(),b=this.length-1;var d=function(){var f=$A(arguments);var e=(typeof f.last()==="object")?f.pop():{};var g=[];if(b>0){g=((f.length>0?f:[null]).inGroupsOf(b).flatten()).concat(e)}return a.apply(this,g)};d.argumentNames=function(){return c};return d};Function.ABSTRACT=function(){throw"Abstract method. Implement in subclass."};Object.extend(Number.prototype,{constrain:function(e,d){var c=(e<d)?e:d;var a=(e<d)?d:e;var b=Number(this);if(b<c){b=c}if(b>a){b=a}return b},nearer:function(c,b){var a=Number(this);var e=Math.abs(a-c);var d=Math.abs(a-b);return(e<d)?c:b},tween:function(b,a){return this+(b-this)*a}});Object.propertize=function(b,a){return Object.isString(b)?a[b]:b};S2.CSS={PROPERTY_MAP:{backgroundColor:"color",borderBottomColor:"color",borderBottomWidth:"length",borderLeftColor:"color",borderLeftWidth:"length",borderRightColor:"color",borderRightWidth:"length",borderSpacing:"length",borderTopColor:"color",borderTopWidth:"length",bottom:"length",color:"color",fontSize:"length",fontWeight:"integer",height:"length",left:"length",letterSpacing:"length",lineHeight:"length",marginBottom:"length",marginLeft:"length",marginRight:"length",marginTop:"length",maxHeight:"length",maxWidth:"length",minHeight:"length",minWidth:"length",opacity:"number",outlineColor:"color",outlineOffset:"length",outlineWidth:"length",paddingBottom:"length",paddingLeft:"length",paddingRight:"length",paddingTop:"length",right:"length",textIndent:"length",top:"length",width:"length",wordSpacing:"length",zIndex:"integer",zoom:"number"},VENDOR:{PREFIX:null,LOOKUP_PREFIXES:["webkit","Moz","O"],LOOKUP_PROPERTIES:$w("BorderRadius BoxShadow Transform Transition TransitionDuration TransitionTimingFunction TransitionProperty TransitionDelay BorderTopLeftRadius BorderTopRightRadius BorderBottomLeftRadius BorderBottomRightRadius"),LOOKUP_EDGE_CASES:{BorderTopLeftRadius:"BorderRadiusTopleft",BorderTopRightRadius:"BorderRadiusTopright",BorderBottomLeftRadius:"BorderRadiusBottomleft",BorderBottomRightRadius:"BorderRadiusBottomright"},PROPERTY_MAP:{}},LENGTH:/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/,NUMBER:/([\+-]*\d+\.?\d*)/,__parseStyleElement:document.createElement("div"),parseStyle:function(a){S2.CSS.__parseStyleElement.innerHTML='<div style="'+a+'"></div>';var c=S2.CSS.__parseStyleElement.childNodes[0].style,b={};S2.CSS.NUMERIC_PROPERTIES.each(function(d){if(c[d]){b[d]=c[d]}});S2.CSS.COLOR_PROPERTIES.each(function(d){if(c[d]){b[d]=S2.CSS.colorFromString(c[d])}});if(Prototype.Browser.IE&&a.include("opacity")){b.opacity=a.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]}return b},parse:function(a){return S2.CSS.parseStyle(a)},normalize:function(b,c){if(Object.isHash(c)){c=c.toObject()}if(typeof c==="string"){c=S2.CSS.parseStyle(c)}var a={},e;for(var d in c){e=b.getStyle(d);if(c[d]!==e){a[d]=c[d]}}return a},serialize:function(b){if(Object.isHash(b)){b=b.toObject()}var a="",d;for(var c in b){d=b[c];c=this.vendorizeProperty(c);a+=(c+": "+d+";")}return a},vendorizeProperty:function(a){a=a.underscore().dasherize();if(a in S2.CSS.VENDOR.PROPERTY_MAP){a=S2.CSS.VENDOR.PROPERTY_MAP[a]}return a},normalizeColor:function(a){if(!a||a=="rgba(0, 0, 0, 0)"||a=="transparent"){a="#ffffff"}a=S2.CSS.colorFromString(a);return[parseInt(a.slice(1,3),16),parseInt(a.slice(3,5),16),parseInt(a.slice(5,7),16)]},colorFromString:function(a){var c="#",d,b;if(a.slice(0,4)=="rgb("){d=a.slice(4,a.length-1).split(",");b=3;while(b--){c+=parseInt(d[2-b]).toColorPart()}}else{if(a.slice(0,1)=="#"){if(a.length==4){for(b=1;b<4;b++){c+=(a.charAt(b)+a.charAt(b)).toLowerCase()}}if(a.length==7){c=a.toLowerCase()}}else{c=a}}return(c.length==7?c:(arguments[1]||c))},interpolateColor:function(c,b,a){c=S2.CSS.normalizeColor(c);b=S2.CSS.normalizeColor(b);return"#"+[0,1,2].map(function(d){return Math.max(Math.min(c[d].tween(b[d],a).round(),255),0).toColorPart()}).join("")},interpolateNumber:function(c,b,a){return 1*((c||0).tween(b,a).toFixed(3))},interpolateLength:function(c,b,a){if(!c||parseFloat(c)===0){c="0"+b.gsub(S2.CSS.NUMBER,"")}b.scan(S2.CSS.NUMBER,function(d){b=1*(d[1])});return c.gsub(S2.CSS.NUMBER,function(d){return(1*(parseFloat(d[1]).tween(b,a).toFixed(3))).toString()})},interpolateInteger:function(c,b,a){return parseInt(c).tween(b,a).round()},interpolate:function(b,d,c,a){return S2.CSS["interpolate"+S2.CSS.PROPERTY_MAP[b.camelize()].capitalize()](d,c,a)},ElementMethods:{getStyles:function(b){var a=document.defaultView.getComputedStyle($(b),null);return S2.CSS.PROPERTIES.inject({},function(c,d){c[d]=a[d];return c})}}};S2.CSS.PROPERTIES=[];for(var property in S2.CSS.PROPERTY_MAP){S2.CSS.PROPERTIES.push(property)}S2.CSS.NUMERIC_PROPERTIES=S2.CSS.PROPERTIES.findAll(function(a){return !a.endsWith("olor")});S2.CSS.COLOR_PROPERTIES=S2.CSS.PROPERTIES.findAll(function(a){return a.endsWith("olor")});if(!(document.defaultView&&document.defaultView.getComputedStyle)){S2.CSS.ElementMethods.getStyles=function(b){b=$(b);var a=b.currentStyle,c;c=S2.CSS.PROPERTIES.inject({},function(e,d){e[d]=a[d];return e});if(!c.opacity){c.opacity=b.getOpacity()}return c}}Element.addMethods(S2.CSS.ElementMethods);(function(){var e=document.createElement("div");var b=e.style,c=null;var d=S2.CSS.VENDOR.LOOKUP_EDGE_CASES;var a=function(g,f){if(f){g="-"+f.toLowerCase()+"-"+a(g)}return g.underscore().dasherize()};S2.CSS.VENDOR.LOOKUP_PROPERTIES.each(function(f){if(!c){c=S2.CSS.VENDOR.LOOKUP_PREFIXES.detect(function(g){return !Object.isUndefined(b[g+f])})}if(c){if((c+f) in b){S2.CSS.VENDOR.PROPERTY_MAP[a(f)]=a(f,c)}else{if(f in d&&(c+d[f]) in b){S2.CSS.VENDOR.PROPERTY_MAP[a(f)]=a(d[f],c)}}}});S2.CSS.VENDOR.PREFIX=c;e=null})();S2.FX=(function(){var c=[],g,f,e=0;function d(i){e+=i;if(e>0){f.start()}else{f.stop()}}function b(){var l=f.getTimestamp();for(var k=0,j;j=c[k];k++){j.render(l)}}function a(i){if(g){return}c.push(g=new S2.FX.Queue());S2.FX.DefaultOptions.queue=g;f=i||new S2.FX.Heartbeat();document.observe("effect:heartbeat",b).observe("effect:queued",d.curry(1)).observe("effect:dequeued",d.curry(-1))}function h(i){if(!i){i=(new Date()).valueOf()}var j=new Date(i);return j.getSeconds()+"."+j.getMilliseconds()+"s"}return{initialize:a,getQueues:function(){return c},addQueue:function(i){c.push(i)},getHeartbeat:function(){return f},setHeartbeat:function(i){f=i},formatTimestamp:h}})();Object.extend(S2.FX,{DefaultOptions:{transition:"sinusoidal",position:"parallel",fps:60,duration:0.2},elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},parseOptions:function(a){if(Object.isNumber(a)){a={duration:a}}else{if(Object.isFunction(a)){a={after:a}}else{if(Object.isString(a)){a={duration:a=="slow"?1:a=="fast"?0.1:0.2}}}}return a||{}},ready:function(b){if(!b){return}var c=this._ready;var a=b._prototypeUID;if(!a){return true}bool=c[a];return Object.isUndefined(bool)?true:bool},setReady:function(c,a){if(!c){return}var d=this._ready,b=c._prototypeUID;if(!b){c.getStorage();b=c._prototypeUID}d[b]=a},_ready:{}});S2.FX.Base=Class.create({initialize:function(a){S2.FX.initialize();this.updateWithoutWrappers=this.update;if(a&&a.queue&&!S2.FX.getQueues().include(a.queue)){S2.FX.addQueue(a.queue)}this.setOptions(a);this.duration=this.options.duration*1000;this.state="idle";["after","before"].each(function(b){this[b]=function(c){c(this);return this}},this)},setOptions:function(a){a=S2.FX.parseOptions(a);this.options=Object.extend(this.options||Object.extend({},S2.FX.DefaultOptions),a);if(a.tween){this.options.transition=a.tween}if(this.options.beforeUpdate||this.options.afterUpdate){this.update=this.updateWithoutWrappers.wrap(function(c,b){if(this.options.beforeUpdate){this.options.beforeUpdate(this,b)}c(b);if(this.options.afterUpdate){this.options.afterUpdate(this,b)}}.bind(this))}if(this.options.transition===false){this.options.transition=S2.FX.Transitions.linear}this.options.transition=Object.propertize(this.options.transition,S2.FX.Transitions)},play:function(a){this.setOptions(a);this.frameCount=0;this.state="idle";this.options.queue.add(this);this.maxFrames=this.options.fps*this.duration/1000;return this},render:function(b){if(this.options.debug){}if(b>=this.startsAt){if(this.state=="idle"&&(!this.element||S2.FX.ready(this.element))){this.debug("starting the effect at "+S2.FX.formatTimestamp(b));this.endsAt=this.startsAt+this.duration;this.start();this.frameCount++;return this}if(b>=this.endsAt&&this.state!=="finished"){this.debug("stopping the effect at "+S2.FX.formatTimestamp(b));this.finish();return this}if(this.state==="running"){var a=1-(this.endsAt-b)/this.duration;if((this.maxFrames*a).floor()>this.frameCount){this.update(this.options.transition(a));this.frameCount++}}}return this},start:function(){if(this.options.before){this.options.before(this)}if(this.setup){this.setup()}this.state="running";this.update(this.options.transition(0))},cancel:function(a){if(this.state!=="running"){return}if(this.teardown){this.teardown()}if(a&&this.options.after){this.options.after(this)}this.state="finished"},finish:function(){if(this.state!=="running"){return}this.update(this.options.transition(1));this.cancel(true)},inspect:function(){return"#<S2.FX:"+[this.state,this.startsAt,this.endsAt].inspect()+">"},update:Prototype.emptyFunction,debug:function(a){if(!this.options.debug){return}if(window.console&&console.log){console.log(a)}}});S2.FX.Element=Class.create(S2.FX.Base,{initialize:function($super,b,a){if(!(this.element=$(b))){throw (S2.FX.elementDoesNotExistError)}this.operators=[];return $super(a)},animate:function(){var b=$A(arguments),a=b.shift();a=a.charAt(0).toUpperCase()+a.substring(1);this.operators.push(new S2.FX.Operators[a](this,b[0],b[1]||{}))},play:function($super,b,a){if(b){this.element=$(b)}this.operators=[];return $super(a)},update:function(a){for(var c=0,b;b=this.operators[c];c++){b.render(a)}}});S2.FX.Heartbeat=Class.create({initialize:function(a){this.options=Object.extend({framerate:Prototype.Browser.MobileSafari?20:60},a);this.beat=this.beat.bind(this)},start:function(){if(this.heartbeatInterval){return}this.heartbeatInterval=setInterval(this.beat,1000/this.options.framerate);this.updateTimestamp()},stop:function(){if(!this.heartbeatInterval){return}clearInterval(this.heartbeatInterval);this.heartbeatInterval=null;this.timestamp=null},beat:function(){this.updateTimestamp();document.fire("effect:heartbeat")},getTimestamp:function(){return this.timestamp||this.generateTimestamp()},generateTimestamp:function(){return new Date().getTime()},updateTimestamp:function(){this.timestamp=this.generateTimestamp()}});S2.FX.Queue=(function(){return function(){var b=this;var e=[];function f(){return e}function h(){return e.length>0}function g(i){c(i);e.push(i);document.fire("effect:queued",b);return b}function a(i){e=e.without(i);document.fire("effect:dequeued",b);delete i;return b}function d(l){for(var j=0,k;k=e[j];j++){k.render(l);if(k.state==="finished"){a(k)}}return b}function c(m){var i=m.options.position||"parallel",l=S2.FX.getHeartbeat().getTimestamp();var j;if(i==="end"){j=e.without(m).pluck("endsAt").max()||l;if(j<l){j=l}}else{j=l}var k=(m.options.delay||0)*1000;m.startsAt=j+k;var n=(m.options.duration||1)*1000;m.endsAt=m.startsAt+n}Object.extend(b,{getEffects:f,active:h,add:g,remove:a,render:d})}})();S2.FX.Attribute=Class.create(S2.FX.Base,{initialize:function($super,b,e,d,a,c){b=Object.isString(b)?$(b):b;this.method=Object.isFunction(c)?c.bind(b):Object.isFunction(b[c])?b[c].bind(b):function(f){b[c]=f};this.to=d;this.from=e;return $super(a)},update:function(a){this.method(this.from.tween(this.to,a))}});S2.FX.Style=Class.create(S2.FX.Element,{setup:function(){this.animate("style",this.element,{style:this.options.style})}});S2.FX.Operators={};S2.FX.Operators.Base=Class.create({initialize:function(c,b,a){this.effect=c;this.object=b;this.options=Object.extend({transition:Prototype.K},a)},inspect:function(){return"#<S2.FX.Operators.Base:"+this.lastValue+">"},setup:function(){},valueAt:function(a){},applyValue:function(a){},render:function(a){var b=this.valueAt(this.options.transition(a));this.applyValue(b);this.lastValue=b}});S2.FX.Operators.Style=Class.create(S2.FX.Operators.Base,{initialize:function($super,g,a,h){$super(g,a,h);this.element=$(this.object);this.style=Object.isString(this.options.style)?S2.CSS.parseStyle(this.options.style):this.options.style;var b=this.options.propertyTransitions||{};this.tweens=[];for(var f in this.style){var e=f.underscore().dasherize(),d=this.element.getStyle(e),c=this.style[f];if(d!=c){this.tweens.push([e,S2.CSS.interpolate.curry(e,d,c),f in b?Object.propertize(b[f],S2.FX.Transitions):Prototype.K])}}},valueAt:function(a){return this.tweens.map(function(b){return b[0]+":"+b[1](b[2](a))}).join(";")},applyValue:function(a){if(this.currentStyle==a){return}this.element.setStyle(a);this.currentStyle=a}});S2.FX.Morph=Class.create(S2.FX.Element,{setup:function(){if(this.options.change){this.setupWrappers()}else{if(this.options.style){this.animate("style",this.destinationElement||this.element,{style:this.options.style,propertyTransitions:this.options.propertyTransitions||{}})}}},teardown:function(){if(this.options.change){this.teardownWrappers()}},setupWrappers:function(){var a=this.element.getStyle("float"),f,b,d,c,e;this.transitionElement=new Element("div").setStyle({position:"relative",overflow:"hidden","float":a});this.element.setStyle({"float":"none"}).insert({before:this.transitionElement});this.sourceElementWrapper=this.element.cloneWithoutIDs().wrap("div");this.destinationElementWrapper=this.element.wrap("div");this.transitionElement.insert(this.sourceElementWrapper).insert(this.destinationElementWrapper);f=this.sourceElementWrapper.getHeight();b=this.sourceElementWrapper.getWidth();this.options.change();d=this.destinationElementWrapper.getHeight();c=this.destinationElementWrapper.getWidth();this.outerWrapper=new Element("div");this.transitionElement.insert({before:this.outerWrapper});this.outerWrapper.setStyle({overflow:"hidden",height:f+"px",width:b+"px"}).appendChild(this.transitionElement);e=Math.max(d,f),maxWidth=Math.max(c,b);this.transitionElement.setStyle({height:f+"px",width:b+"px"});this.sourceElementWrapper.setStyle({position:"absolute",height:e+"px",width:maxWidth+"px",top:0,left:0});this.destinationElementWrapper.setStyle({position:"absolute",height:e+"px",width:maxWidth+"px",top:0,left:0,opacity:0,zIndex:2000});this.outerWrapper.insert({before:this.transitionElement}).remove();this.animate("style",this.transitionElement,{style:"height:"+d+"px; width:"+c+"px"});this.animate("style",this.destinationElementWrapper,{style:"opacity: 1.0"})},teardownWrappers:function(){var a=this.destinationElementWrapper.down();if(a){this.transitionElement.insert({before:a})}this.transitionElement.remove()}});S2.FX.Parallel=Class.create(S2.FX.Base,{initialize:function($super,b,a){this.effects=b||[];return $super(a||{})},setup:function(){this.effects.invoke("setup")},update:function(a){this.effects.invoke("update",a)}});S2.FX.Operators.Scroll=Class.create(S2.FX.Operators.Base,{initialize:function($super,c,b,a){$super(c,b,a);this.start=b.scrollTop;this.end=this.options.scrollTo},valueAt:function(a){return this.start+((this.end-this.start)*a)},applyValue:function(a){this.object.scrollTop=a.round()}});S2.FX.Scroll=Class.create(S2.FX.Element,{setup:function(){this.animate("scroll",this.element,{scrollTo:this.options.to})}});S2.FX.SlideDown=Class.create(S2.FX.Element,{setup:function(){var a=this.destinationElement||this.element;var c=a.getLayout();var b={height:c.get("height")+"px",paddingTop:c.get("padding-top")+"px",paddingBottom:c.get("padding-bottom")+"px"};a.setStyle({height:"0",paddingTop:"0",paddingBottom:"0",overflow:"hidden"}).show();this.animate("style",a,{style:b,propertyTransitions:{}})},teardown:function(){var a=this.destinationElement||this.element;a.setStyle({height:"",paddingTop:"",paddingBottom:"",overflow:"visible"})}});S2.FX.SlideUp=Class.create(S2.FX.Morph,{setup:function(){var a=this.destinationElement||this.element;var c=a.getLayout();var b={height:"0px",paddingTop:"0px",paddingBottom:"0px"};a.setStyle({overflow:"hidden"});this.animate("style",a,{style:b,propertyTransitions:{}})},teardown:function(){var a=this.destinationElement||this.element;a.setStyle({height:"",paddingTop:"",paddingBottom:"",overflow:"visible"}).hide()}});S2.FX.Transitions={linear:Prototype.K,sinusoidal:function(a){return(-Math.cos(a*Math.PI)/2)+0.5},reverse:function(a){return 1-a},mirror:function(b,a){a=a||S2.FX.Transitions.sinusoidal;if(b<0.5){return a(b*2)}else{return a(1-(b-0.5)*2)}},flicker:function(a){var a=a+(Math.random()-0.5)/5;return S2.FX.Transitions.sinusoidal(a<0?0:a>1?1:a)},wobble:function(a){return(-Math.cos(a*Math.PI*(9*a))/2)+0.5},pulse:function(b,a){return(-Math.cos((b*((a||5)-0.5)*2)*Math.PI)/2)+0.5},blink:function(b,a){return Math.round(b*(a||5))%2},spring:function(a){return 1-(Math.cos(a*4.5*Math.PI)*Math.exp(-a*6))},none:Prototype.K.curry(0),full:Prototype.K.curry(1)};
/*
*  Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions are met:
*
*  1. Redistributions of source code must retain the above copyright notice,
*  this list of conditions and the following disclaimer.
*
*  2. Redistributions in binary form must reproduce the above copyright notice,
*  this list of conditions and the following disclaimer in the documentation
*  and/or other materials provided with the distribution.
*
*  3. Neither the name of the copyright holder(s) nor the names of any
*  contributors may be used to endorse or promote products derived from
*  this software without specific prior written permission.
*
*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
*  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
*  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
*  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
*  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
*  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
*  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
*  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
*  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function(){function a(p,d,c,l,k,b){var o=0,u=0,f=0,m=0,r=0,e=0;function j(v){return((o*v+u)*v+f)*v}function i(v){return((m*v+r)*v+e)*v}function s(v){return(3*o*v+2*u)*v+f}function n(t){return 1/(200*t)}function h(t,v){return i(g(t,v))}function q(t){if(t>=0){return t}else{return 0-t}}function g(t,C){var B,A,y,v,z,w;for(y=t,w=0;w<8;w++){v=j(y)-t;if(q(v)<C){return y}z=s(y);if(q(z)<0.000001){break}y=y-v/z}B=0;A=1;y=t;if(y<B){return B}if(y>A){return A}while(B<A){v=j(y);if(q(v-t)<C){return y}if(t>v){B=y}else{A=y}y=(A-B)*0.5+B}return y}f=3*d;u=3*(l-d)-f;o=1-f-u;e=3*c;r=3*(k-c)-e;m=1-e-r;return h(p,n(b))}S2.FX.cubicBezierTransition=function(c,e,b,d){return(function(f){return a(f,c,e,b,d,1)})}})();S2.FX.Transitions.webkitCubic=S2.FX.cubicBezierTransition(0.25,0.1,0.25,1);S2.FX.Transitions.webkitEaseInOut=S2.FX.cubicBezierTransition(0.42,0,0.58,1);
/*
*  TERMS OF USE - EASING EQUATIONS
*  Open source under the BSD License.
*  Easing Equations (c) 2003 Robert Penner, all rights reserved.
*/
Object.extend(S2.FX.Transitions,{easeInQuad:function(a){return Math.pow(a,2)},easeOutQuad:function(a){return -(Math.pow((a-1),2)-1)},easeInOutQuad:function(a){if((a/=0.5)<1){return 0.5*Math.pow(a,2)}return -0.5*((a-=2)*a-2)},easeInCubic:function(a){return Math.pow(a,3)},easeOutCubic:function(a){return(Math.pow((a-1),3)+1)},easeInOutCubic:function(a){if((a/=0.5)<1){return 0.5*Math.pow(a,3)}return 0.5*(Math.pow((a-2),3)+2)},easeInQuart:function(a){return Math.pow(a,4)},easeOutQuart:function(a){return -(Math.pow((a-1),4)-1)},easeInOutQuart:function(a){if((a/=0.5)<1){return 0.5*Math.pow(a,4)}return -0.5*((a-=2)*Math.pow(a,3)-2)},easeInQuint:function(a){return Math.pow(a,5)},easeOutQuint:function(a){return(Math.pow((a-1),5)+1)},easeInOutQuint:function(a){if((a/=0.5)<1){return 0.5*Math.pow(a,5)}return 0.5*(Math.pow((a-2),5)+2)},easeInSine:function(a){return -Math.cos(a*(Math.PI/2))+1},easeOutSine:function(a){return Math.sin(a*(Math.PI/2))},easeInOutSine:function(a){return(-0.5*(Math.cos(Math.PI*a)-1))},easeInExpo:function(a){return(a==0)?0:Math.pow(2,10*(a-1))},easeOutExpo:function(a){return(a==1)?1:-Math.pow(2,-10*a)+1},easeInOutExpo:function(a){if(a==0){return 0}if(a==1){return 1}if((a/=0.5)<1){return 0.5*Math.pow(2,10*(a-1))}return 0.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return -(Math.sqrt(1-(a*a))-1)},easeOutCirc:function(a){return Math.sqrt(1-Math.pow((a-1),2))},easeInOutCirc:function(a){if((a/=0.5)<1){return -0.5*(Math.sqrt(1-a*a)-1)}return 0.5*(Math.sqrt(1-(a-=2)*a)+1)},easeOutBounce:function(a){if((a)<(1/2.75)){return(7.5625*a*a)}else{if(a<(2/2.75)){return(7.5625*(a-=(1.5/2.75))*a+0.75)}else{if(a<(2.5/2.75)){return(7.5625*(a-=(2.25/2.75))*a+0.9375)}else{return(7.5625*(a-=(2.625/2.75))*a+0.984375)}}}},easeInBack:function(b){var a=1.70158;return(b)*b*((a+1)*b-a)},easeOutBack:function(b){var a=1.70158;return(b=b-1)*b*((a+1)*b+a)+1},easeInOutBack:function(b){var a=1.70158;if((b/=0.5)<1){return 0.5*(b*b*(((a*=(1.525))+1)*b-a))}return 0.5*((b-=2)*b*(((a*=(1.525))+1)*b+a)+2)},elastic:function(a){return -1*Math.pow(4,-8*a)*Math.sin((a*6-1)*(2*Math.PI)/2)+1},swingFromTo:function(b){var a=1.70158;return((b/=0.5)<1)?0.5*(b*b*(((a*=(1.525))+1)*b-a)):0.5*((b-=2)*b*(((a*=(1.525))+1)*b+a)+2)},swingFrom:function(b){var a=1.70158;return b*b*((a+1)*b-a)},swingTo:function(b){var a=1.70158;return(b-=1)*b*((a+1)*b+a)+1},bounce:function(a){if(a<(1/2.75)){return(7.5625*a*a)}else{if(a<(2/2.75)){return(7.5625*(a-=(1.5/2.75))*a+0.75)}else{if(a<(2.5/2.75)){return(7.5625*(a-=(2.25/2.75))*a+0.9375)}else{return(7.5625*(a-=(2.625/2.75))*a+0.984375)}}}},bouncePast:function(a){if(a<(1/2.75)){return(7.5625*a*a)}else{if(a<(2/2.75)){return 2-(7.5625*(a-=(1.5/2.75))*a+0.75)}else{if(a<(2.5/2.75)){return 2-(7.5625*(a-=(2.25/2.75))*a+0.9375)}else{return 2-(7.5625*(a-=(2.625/2.75))*a+0.984375)}}}},easeFromTo:function(a){if((a/=0.5)<1){return 0.5*Math.pow(a,4)}return -0.5*((a-=2)*Math.pow(a,3)-2)},easeFrom:function(a){return Math.pow(a,4)},easeTo:function(a){return Math.pow(a,0.25)}});(function(j){Hash.addMethods({hasKey:function(l){return(l in this._object)}});var a=false;var e=false;var c=null;function d(){var l=navigator.userAgent,m=navigator.appVersion;return(!l.include("Chrome")&&m.include("10_6"))||Prototype.Browser.MobileSafari}(function(){var o={WebKitTransitionEvent:"webkitTransitionEnd",TransitionEvent:"transitionend",OTransitionEvent:"oTransitionEnd"};if(S2.CSS.VENDOR.PREFIX){var n=S2.CSS.VENDOR.PREFIX;o[n+"TransitionEvent"]=n+"TransitionEnd"}for(var m in o){try{document.createEvent(m);c=o[m];a=true;if(m=="WebKitTransitionEvent"){e=d()}return}catch(l){}}})();if(!a){return}Prototype.BrowserFeatures.CSSTransitions=true;S2.Extensions.CSSTransitions=true;S2.Extensions.HardwareAcceleratedCSSTransitions=e;if(e){Object.extend(j.DefaultOptions,{accelerate:true})}function k(l){return S2.CSS.vendorizeProperty(l)}var g=$w("border-top-left-radius border-top-right-radius border-bottom-left-radius border-bottom-right-radius background-size transform").map(function(l){return k(l).camelize()});g.each(function(l){S2.CSS.PROPERTIES.push(l)});S2.CSS.NUMERIC_PROPERTIES=S2.CSS.PROPERTIES.findAll(function(l){return !l.endsWith("olor")});CSS_TRANSITIONS_HARDWARE_ACCELERATED_PROPERTIES=S2.Extensions.HardwareAcceleratedCSSTransitions?$w("top left bottom right opacity"):[];var h=new Template("translate(#{0}px, #{1}px)");var f=j.Operators;f.CssTransition=Class.create(f.Base,{initialize:function($super,o,m,l){$super(o,m,l);this.element=$(this.object);var n=this.options.style;this.style=Object.isString(n)?S2.CSS.normalize(this.element,n):n;this.style=$H(this.style);this.targetStyle=S2.CSS.serialize(this.style);this.running=false},_canHardwareAccelerate:function(){if(this.effect.options.accelerate===false){return false}var n=this.style.toObject(),p=this.style.keys();var m=this.element;if(p.length===0){return false}var q=p.any(function(r){return !CSS_TRANSITIONS_HARDWARE_ACCELERATED_PROPERTIES.include(r)});if(q){return false}var o={left:m.getStyle("left"),right:m.getStyle("right"),top:m.getStyle("top"),bottom:m.getStyle("bottom")};function l(r){if(r.top&&r.bottom){return true}if(r.left&&r.right){return true}return false}if(l(o)){return false}if(l(n)){return false}return true},_adjustForHardwareAcceleration:function(n){var m=0,l=0;$w("top bottom left right").each(function(s){if(!n.hasKey(s)){return}var r=window.parseInt(this.element.getStyle(s),10);var q=window.parseInt(n.get(s),10);if(s==="top"){l+=(q-r)}else{if(s==="bottom"){l+=(r-q)}else{if(s==="left"){m+=(q-r)}else{if(s==="right"){m+=(r-q)}}}}n.unset(s)},this);var o=k("transform");if(m!==0||l!==0){var p=h.evaluate([m,l]);n.set(o,p)}this.targetStyle+=o+": translate(0px, 0px);";return n},render:function(){if(this.running===true){return}var o=this.style.clone(),n=this.effect;if(this._canHardwareAccelerate()){n.accelerated=true;o=this._adjustForHardwareAcceleration(o)}else{n.accelerated=false}var m=this.element.style;var l={};$w("transition-property transition-duration transition-timing-function").each(function(p){p=k(p).camelize();l[p]=m[p]});this.element.store("s2.targetStyle",this.targetStyle);this.element.store("s2.originalTransitionStyle",l);m[k("transition-property").camelize()]=o.keys().join(",");m[k("transition-duration").camelize()]=(n.duration/1000).toFixed(3)+"s";m[k("transition-timing-function").camelize()]=b(n.options.transition);if(Prototype.Browser.Opera){this._setStyle.bind(this).defer(o.toObject())}else{this._setStyle(o.toObject())}this.running=true;this.render=Prototype.emptyFunction},_setStyle:function(l){this.element.setStyle(l)}});f.CssTransition.TIMING_MAP={linear:"linear",sinusoidal:"ease-in-out"};function b(o){var n=null,m=j.Operators.CssTransition.TIMING_MAP;for(var l in m){if(j.Transitions[l]===o){n=m[l];break}}return n}function i(m){if(!S2.Extensions.CSSTransitions){return false}var l=m.options;if((l.engine||"")==="javascript"){return false}if(!b(l.transition)){return false}if(l.propertyTransitions){return false}return true}j.Morph=Class.create(j.Morph,{setup:function(){if(this.options.change){this.setupWrappers()}else{if(this.options.style){this.engine="javascript";var m="style";var o=Object.isString(this.options.style)?S2.CSS.parseStyle(this.options.style):o;var n=S2.CSS.normalize(this.destinationElement||this.element,o);var l=Object.keys(n).length>0;if(l&&i(this)){this.engine="css-transition";m="CssTransition";this.update=function(p){this.element.store("s2.effect",this);S2.FX.setReady(this.element,false);for(var r=0,q;q=this.operators[r];r++){q.render(p)}this.render=Prototype.emptyFunction}}this.animate(m,this.destinationElement||this.element,{style:this.options.style,propertyTransitions:this.options.propertyTransitions||{}})}}}});document.observe(c,function(o){var m=o.element();if(!m){return}var n=m.retrieve("s2.effect");if(!n||n.state==="finished"){return}function p(s,t){var r=s.retrieve("s2.targetStyle");if(!r){return}s.setStyle(r);var u=s.retrieve("s2.originalTransitionStyle");var v=s.getStorage();v.unset("s2.targetStyle");v.unset("s2.originalTransitionStyle");v.unset("s2.effect");if(u){s.setStyle(u)}S2.FX.setReady(s)}var l=k("transition-duration").camelize();m.style[l]="";p(m,n);n.state="finished";var q=n.options.after;if(q){q(n)}})})(S2.FX);Element.__scrollTo=Element.scrollTo;Element.addMethods({scrollTo:function(b,c,a){if(arguments.length==1){return Element.__scrollTo(b)}new S2.FX.Scroll(b,Object.extend(a||{},{to:c})).play();return b}});Element.addMethods({effect:function(b,c,a){if(Object.isFunction(c)){c=new c(b,a)}else{if(Object.isString(c)){c=new S2.FX[c.charAt(0).toUpperCase()+c.substring(1)](b,a)}}c.play(b,a);return b},morph:function(b,c,a){a=S2.FX.parseOptions(a);if(!a.queue){a.queue=b.retrieve("S2.FX.Queue");if(!a.queue){b.store("S2.FX.Queue",a.queue=new S2.FX.Queue())}}if(!a.position){a.position="end"}return b.effect("morph",Object.extend(a,{style:c}))}.optionize(),appear:function(b,a){return b.setStyle("opacity: 0;").show().morph("opacity: 1",a)},fade:function(b,a){a=Object.extend({after:Element.hide.curry(b)},a||{});return b.morph("opacity: 0",a)},cloneWithoutIDs:function(a){a=$(a);var b=a.cloneNode(true);b.id="";$(b).select("*[id]").each(function(c){c.id=""});return b}});(function(){var a;if(window.CSSMatrix){a=function(c,b){c.style.transform="scale("+(b.scale||1)+") rotate("+(b.rotation||0)+"rad)";return c}}else{if(window.WebKitCSSMatrix){a=function(c,b){c.style.webkitTransform="scale("+(b.scale||1)+") rotate("+(b.rotation||0)+"rad)";return c}}else{if(Prototype.Browser.Gecko){a=function(c,b){c.style.MozTransform="scale("+(b.scale||1)+") rotate("+(b.rotation||0)+"rad)";return c}}else{if(Prototype.Browser.IE){a=function(d,b){if(!d._oDims){d._oDims=[d.offsetWidth,d.offsetHeight]}var g=Math.cos(b.rotation||0)*1,f=Math.sin(b.rotation||0)*1,e="progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',M11="+g+",M12="+(-f)+",M21="+f+",M22="+g+")";d.style.filter=e;d.style.marginLeft=(d._oDims[0]-d.offsetWidth)/2+"px";d.style.marginTop=(d._oDims[1]-d.offsetHeight)/2+"px";return d}}else{a=function(b){return b}}}}}Element.addMethods({transform:a})})();S2.viewportOverlay=function(){var a=document.viewport.getDimensions(),b=document.viewport.getScrollOffsets();return new Element("div").setStyle({position:"absolute",left:b.left+"px",top:b.top+"px",width:a.width+"px",height:a.height+"px"})};S2.FX.Helpers={fitIntoRectangle:function(a,d,g,b){var e=a/d,c=g/b;return e<c?[(g-(a*(b/d)))/2,0,a*(b/d),b]:[0,(b-(d*(g/a)))/2,g,d*(g/a)]}};S2.FX.Operators.Zoom=Class.create(S2.FX.Operators.Style,{initialize:function($super,d,c,b){var a=document.viewport.getDimensions(),e=document.viewport.getScrollOffsets(),h=c.getDimensions(),g=S2.FX.Helpers.fitIntoRectangle(h.width,h.height,a.width-(b.borderWidth||0)*2,a.height-(b.borderWidth||0)*2);Object.extend(b,{style:{left:g[0]+(b.borderWidth||0)+e.left+"px",top:g[1]+(b.borderWidth||0)+e.top+"px",width:g[2]+"px",height:g[3]+"px"}});$super(d,c,b)}});S2.FX.Zoom=Class.create(S2.FX.Element,{setup:function(){this.clone=this.element.cloneWithoutIDs();this.element.insert({before:this.clone});this.clone.absolutize().setStyle({zIndex:9999});this.overlay=S2.viewportOverlay();if(this.options.overlayClassName){this.overlay.addClassName(this.options.overlayClassName)}else{this.overlay.setStyle({backgroundColor:"#000",opacity:"0.9"})}$$("body")[0].insert(this.overlay);this.animate("zoom",this.clone,{borderWidth:this.options.borderWidth,propertyTransitions:this.options.propertyTransitions||{}})},teardown:function(){this.clone.observe("click",function(){this.overlay.remove();this.clone.morph("opacity:0",{duration:0.2,after:function(){this.clone.remove()}.bind(this)})}.bind(this))}});
Prototype.a11y = {
focusTimer: false,
prepareBuffer: function() {
var objHidden = document.createElement('input');
objHidden.setAttribute('type', 'hidden');
objHidden.setAttribute('value', '1');
objHidden.setAttribute('id', 'virtualbufferupdate');
objHidden.setAttribute('name', 'virtualbufferupdate');
document.body.appendChild(objHidden);
},
updateBuffer: function() {
var objHidden = $('virtualbufferupdate');
if (objHidden)
{
if (objHidden.readAttribute('value') == '1'){
objHidden.writeAttribute('value', '0');
} else {
objHidden.writeAttribute('value', '1');
}
}
},
// inspired by Paul Ratcliffe - http://www.communis.co.uk/blog/2009-06-02-skip-links-chrome-safari-and-added-wai-aria
fixFocus: function() {
var container = $('sitenav');
if(!container) {	return false;	}
if (Prototype.Browser.WebKit || Prototype.Browser.IE) {
container.select('a').each(function(el){
var target = el.href.substr(el.href.indexOf('#')+1);
el.targetElement = $(target);
if(el.targetElement) {
el.observe('click', function(ev) {
var el = ev.findElement('a');
if(el.targetElement.tagName == 'A') {
el.targetElement.up().setFocus();
} else {
el.targetElement.setFocus();
}
});
}
});
}
}
}
var a11yElement = {
setTabIndex: function(element,index) {
var element = $(element);
if(Prototype.Browser.IE) {
return element.writeAttribute('tabIndex',index);
} else {
return element.writeAttribute('tabindex',index);
}
},
removeTabIndex: function(element,index) {
var element = $(element);
if(Prototype.Browser.IE) {
return element.removeAttribute('tabIndex');
} else {
return element.removeAttribute('tabindex');
}
},
setFocus: function(element,time){
if(!time) {var time = 0 };
var element = $(element);
clearTimeout(Prototype.a11y.focusTimer);
element.setTabIndex('-1');
setTimeout(Prototype.a11y.updateBuffer, 0);
Prototype.a11y.focusTimer = setTimeout(function(){
try{
element.focus();
} catch(e){}
}, time || 1);
return this;
},
hide: function(element) {
var element = $(element);
element.style.display = 'none';
element.writeAttribute('aria-hidden', 'true');
element.setTabIndex('-1');
return element;
},
show: function(element) {
var element = $(element);
element.style.display = '';
element.writeAttribute('aria-hidden', 'false');
element.removeTabIndex();
return element;
}
}
Element.addMethods(a11yElement);
// -----------------------------------------------------------------------------------
//
//	search
//	by Sindre Wimberger - wimberger@echonet.at
//	27.10.2009
//
// -----------------------------------------------------------------------------------
//var Isearch = Class.create ({
var Isearch = {
tagstat: true,
tagupdate: false,
closestat: true,
howtostat: true,
options: {
form: 'freiwillig-form',
container: 'result',
debug: false
},
initialize: function(options,json) {
this.json = json;
this.options  = Object.extend(Object.extend({ },this.options), options || {});
this._debug(this.options);
//		this.container = $(this.options.container);
//		this._addARIALive(this.container,'all','true','assertive');
//		this._addARIARole(this.container,'application');
this.form = $(this.options.form);
this._addARIALive(this.form,'all','true','assertive');
if($('aufwand')) {
this._createSlider($('aufwand'));
}
//		new selectCarousel({
//			selectid : 'jahreskreis',
//			onChange: Isearch._submit.bind(this)
//		});
//		this._createSlider($('gruppenalter'));
this._checkMask();
//		this._createLayoutControl();
//this._createClose();
//this._createHowTo();
this.tagupdate = true;
//		this._createTagClose();
this._createLoader();
//		this._initForm(this.form);
//		this._observeDetailLinks();
},
_addARIALive: function(el,rel,ato,liv) {
if(!el) return false;
if(rel) { el.setAttribute('aria-relevant',rel);	}
if(ato) { el.setAttribute('aria-atomic',ato);	}
if(liv) { el.setAttribute('aria-live',liv);	}
},
_addARIARole: function(el, strRole) {
if(!el) return false;
el.setAttribute('role', strRole);
},
_createSlider: function(el) {
this._debug('_createSlider id: '+el);
// Remove the onload event as we are creating the sliders with a JS call
var opta = [];
el.select('option').each(function(opt, index) {
if(opt.value != null) {
opta.push(opt.value);
}
}.bind(this));
this._debug(opta);
fdSliderController.removeOnLoadEvent();
// Create an Object to hold the slider's initialisation data
var options = {
// A reference to the input
inp:    el,
// A String containing the increment value (and the return precision, in this case 2 decimal places "x.20")
inc:            "1",
// Maximum keyboard increment (automatically uses double the normal increment if not given)
//							maxInc:         "0.4",
// Numeric range
range:          [0,el.select('option').length-1],
// Callback functions
callbacks:      {"update":[]},		//{"update":[Isearch._submit.bind(this)]},
//							callbacks:      {/*"update":Isearch._submit, "create":[setUpVerticalSliderOutput, myObject.callback]*/ },
// String representing the classNames to give the created slider
classNames:     "verticalclass",
// Tween the handle onclick?
tween:          true,
// Is this a vertical slider
vertical:       false,
// Do we hide the associated input on slider creation
hideInput:      true,
// Does the handle jump to the nearest click value point when the bar is clicked (tween cannot then be true)
clickJump:      true,
// Full ARIA required
fullARIA:       false,
// Do we disable the mouseWheel for this slider
noMouseWheel:   true
};
// Create the slider
fdSliderController.createSlider(options);
},
_checkMask: function() {
this.tagchecks = this.form.select('input[type=checkbox]');
this.tagchecks.each(function(check, index) {
if(check.getAttribute('id')) {
check.label = this._checkLabel(check.getAttribute('id'),check);
//				check.nrcontainer = check.label.appendChild(new Element('span'));
check.nrcontainer = check.label.firstDescendant();
check.observe('click', function(ev){
var el = ev.findElement();
if (el.checked) {
el.label.removeClassName('unchecked');
el.label.addClassName('checked');
} else {
el.label.removeClassName('checked');
el.label.addClassName('unchecked');
}
//					this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}
}.bind(this));
},
_checkLabel: function (id,checkbox) {
var label = this.form.select('label[for='+id+']')[0];
label.box = checkbox;
if (checkbox.checked) {
label.addClassName('checked');
} else {
label.addClassName('unchecked');
}
label.observe('mouseenter', this._checkFocus.bindAsEventListener(this)).observe('mouseleave', this._checkBlur.bindAsEventListener(this));
return label;
},
_checkFocus: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var input = el;
//			var label = el.label;
//			label.addClassName('focus');
//		} else if(el.tagName == 'LABEL') {
//			var input = el.input;
if(el) {
el.addClassName('focus');
}
//		}
},
_checkBlur: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var label = el.label;
//			label.removeClassName('focus');
//		} else if(el.tagName == 'LABEL') {
if(el) {
el.removeClassName('focus');
}
//		}
},
_createLayoutControl: function() {
/*	 this.fieldset = $('tagfield');
this.radios = [];
var field = new Element('fieldset', {'id':'layoutfield','class':'grey'});
var legend = new Element('legend', {'class':'none'}).update('Listendarstellung');
var grouplabel = new Element('label', {'class':'layout-label'}).update('» Darstellung der Suchergebnisse');
var ul = new Element('ul', {'class':'formgroup tarn'});
var li1 = new Element('li');
var input1 = new Element('input', {'type':'radio','name':'layout','class':'layout-radio','id':'layout1','value':'1'});
var label1 = new Element('label', {'for':'layout1','class':'layout-label','id':'layoutlabel1'}).update('Box');
input1.classview = 'box';
input1.label = label1;
label1.input = input1;
this.radios.push(input1);
var li2 = new Element('li');
var input2 = new Element('input', {'type':'radio','name':'layout','class':'layout-radio','id':'layout2','value':'2'});
this.radios.push(input2);
var label2 = new Element('label', {'for':'layout2','class':'layout-label','id':'layoutlabel2'}).update('Liste');
input2.classview = 'liste';
input2.label = label2;
label2.input = input2;
var li3 = new Element('li');
var input3 = new Element('input', {'type':'radio','name':'layout','class':'layout-radio','id':'layout3','value':'3','checked':'checked'});
this.radios.push(input3);
var label3 = new Element('label', {'for':'layout3','class':'layout-label','id':'layoutlabel3'}).update('Details');
input3.classview = 'details';
input3.label = label3;
label3.input = input3;
li1.appendChild(input1);
li1.appendChild(label1);
li2.appendChild(input2);
li2.appendChild(label2);
li3.appendChild(input3);
li3.appendChild(label3);
ul.appendChild(li1);
ul.appendChild(li2);
ul.appendChild(li3);
field.appendChild(legend);
field.appendChild(grouplabel);
field.appendChild(ul);
this.fieldset.insert({'after':field});*/
this.radios = this.form.select('input[name=layout]');
this.radios.each(function(radio, index) {
radio.label = this._checkLabel(radio.getAttribute('id'),radio);
radio.observe('click', function(ev){
//				var el = ev.findElement();
this._checkRadio();
//				this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}.bind(this));
this._checkRadio();
},
_checkRadio: function(form) {
this.radios.each(function(radio, index) {
if (radio.checked) {
radio.label.removeClassName('unselected').addClassName('selected');
this.container.className = '';
this.container.addClassName(radio.value);
} else {
radio.label.removeClassName('selected').addClassName('unselected');
}
}.bind(this));
},
_createClose: function() {
this._debug('_createClose');
this.closebutton = new Element('p', {'id':'fold','class':'in'});
var anchorel = new Element('a', {'href':'#'}).update('Suchfenster ausblenden');
anchorel.observe('click', function(ev){
if (ev) {
Event.stop(ev);
var el = ev.findElement();
this._toggleClose(el);
}
}.bind(this));
this.closebutton.appendChild(anchorel);
this.form.insert({'before':this.closebutton});
},
_toggleClose: function(el) {
if(!this.closestat) {return false;}
this._debug('_toggleClose');
this.closestat = false;
if(this.closebutton.hasClassName('in')) {
this.closebutton.removeClassName('in').addClassName('out');
new Effect.BlindUp(this.form, {
afterFinish: function(){
this.closestat = true;
}.bind(this),
duration:'0.2'
});
} else {
this.closebutton.removeClassName('out').addClassName('in');
new Effect.BlindDown(this.form, {
afterFinish: function(){
this.closestat = true;
}.bind(this),
duration:'0.2'
});
}
},
_createHowTo: function() {
this._debug('_createHowTo');
this.howtobutton = new Element('p', {'id':'howto','class':'out'});
this.howtoanchor = new Element('a', {'href':'#'}).update('Wie funktioniert diese Suche?');
this.howtoanchor .observe('click', function(ev){
if (ev) {
Event.stop(ev);
var el = ev.findElement();
this._toggleHowTo(el);
}
}.bind(this));
this.howtobutton.appendChild(this.howtoanchor);
this.howtocontainer = $('howtocontainer')
$('resetbutton').insert({'after':this.howtobutton});
},
_toggleHowTo: function(el) {
if(!this.howtostat) {return false;}
this._debug('_toggleHowTo');
this.howtostat = false;
if(this.howtobutton.hasClassName('in')) {
this.howtobutton.removeClassName('in').addClassName('out');
this.howtoanchor.update('Wie funktioniert diese Suche?');
new Effect.BlindUp(this.howtocontainer, {
afterFinish: function(){
this.howtostat = true;
}.bind(this),
duration:'0.2'
});
} else {
this.howtobutton.removeClassName('out').addClassName('in');
this.howtoanchor.update('Erklärung ausblenden');
new Effect.BlindDown(this.howtocontainer, {
afterFinish: function(){
this.howtostat = true;
}.bind(this),
duration:'0.2'
});
}
},
_createTagClose: function() {
this._debug('_createTaglist');
this.tagcontainer = $('taglist');
this.tagcontainer.hide();
this.tagclosebutton = new Element('a', {'href':'#','class':'in'}).update('einblenden');
this.tagclosebutton.observe('click', function(ev){
if (ev) {
Event.stop(ev);
var el = ev.findElement();
this._toggleTaglist(el);
}
}.bind(this));
$('tagfold').appendChild(this.tagclosebutton);
},
_toggleTaglist: function(el) {
if(!this.tagstat) {return false;}
this._debug('_toggleTaglist');
this.tagstat = false;
if(this.tagclosebutton.hasClassName('in')) {
this.tagclosebutton.removeClassName('in').addClassName('out').update('ausblenden');
new Effect.BlindDown(this.tagcontainer, {
afterFinish: function(){
this.tagstat = true;
}.bind(this),
duration:'0.2'
});
this.tagupdate = true;
this._updateTaglist();
} else {
this.tagclosebutton.removeClassName('out').addClassName('in').update('einblenden');
new Effect.BlindUp(this.tagcontainer, {
afterFinish: function(){
this.tagstat = true;
}.bind(this),
duration:'0.2'
});
this.tagupdate = false;
}
},
_updateTaglist: function() {
if(this.tagupdate) {
var tags = $H(this.tagjson);
tags.each(function(tag, index){
var tagel = $('tag-'+tag.key);
if(tagel) {
tagel.nrcontainer.update(" ("+tag.value+")");
if(tag.value == 0) {
tagel.label.addClassName("zerotag");
} else {
tagel.label.removeClassName("zerotag");
}
/*					if(tag.value == tagel.tagvalue) {
if (tagel.label.hasClassName('checked')) {
new Effect.Highlight(tagel.label, { startcolor: '#AA0A65', endcolor: '#99CC00' });
} else {
new Effect.Highlight(tagel.label, { startcolor: '#AA0A65', endcolor: '#F5F5F6' });
}
}
tagel.tagvalue = tag.value;
*/				}
});
}
},
_initForm: function(form) {
this._debug('_initForm form: '+form);
this.ajaxurl = form.action;
this.ajaxmethod = form.getAttribute('method');
form.observe('submit', function(ev) {
if (ev) {
Event.stop(ev);
}
this._submit();
}.bind(this));
//		new Form.Observer(form, 0.4, function(ev) {this._submit();}.bind(this));
/*		if($('submitfield')) {
$('submitfield').hide();
}*/
var submitbutton = $('submitbutton');
if(submitbutton) {
submitbutton.observe('click', function(ev) {
if (ev) {
Event.stop(ev);
}
this._request();
}.bind(this));
}
if($('resetbutton')) {
$('resetbutton').observe('click', function(ev) {
if (ev) {
Event.stop(ev);
}
this._reset();
}.bind(this));
}
},
_formDisable: function() {
//		this.form.disable();
},
_formEnable: function() {
//		this.form.enable();
},
_getParameters: function() {
return this.form.serialize()+"&content=json";
},
_request: function() {
this._debug('_request');
if(this.delay) {
clearTimeout(this.delay);
}
this._formDisable();
if($('searchstart')) {
$('searchstart').hide();
}
this._showLoader();
new Ajax.Request(this.ajaxurl, {
parameters : this._getParameters(),
method: this.ajaxmethod,
onFailure : function(resp,ex) {this._error(resp.statusText,ex);}.bind(this),
onException : function(resp,ex) {this._error(resp.statusText,ex);}.bind(this),
onComplete:function(resp){
//				this.result = Object.toJSON(resp.responseJSON);
//			if(resp.responseJSON != null) {
var mydata = resp.responseJSON;
this.tagjson = mydata.tag;
this.container.update(mydata.html);
this._updateTaglist();
this._updateLoader();
this._observeDetailLinks();
Lightview.updateViews();
this._formEnable();
//			}
}.bind(this)}
);
},
_submit: function() {
this._debug('_submit');
if(this.delay) {
clearTimeout(this.delay);
}
this.delay = setTimeout(this._request.bind(this), 4000);
},
_reset: function() {
this._debug('_reset');
document.cookie = 'ideenkisteFS=restart; expires=Thu, 01-Jan-70 00:00:01 GMT;';
location.reload();
},
_observeDetailLinks: function() {
/*		this.container.select('a.ajax').invoke('observe','click',function(ev) {
if (ev) {
Event.stop(ev);
var el = ev.findElement('a');
var parentli = el.up('li');
this._requestLink(el.href,parentli);
}
}.bind(this));
*/		this.container.select('ul.browse a').invoke('observe','click',function(ev) {
if (ev) {
Event.stop(ev);
var el = ev.findElement('a');
this._requestLink(el.href,this.container);
}
}.bind(this));
},
_requestLink: function(url,container) {
this._debug('_requestLink url:'+url);
if(this.delay) {
clearTimeout(this.delay);
}
new Ajax.Request(url, {
parameters : 'content=html',
method: 'post',
onFailure : function(resp,ex) {this._error(resp.statusText,ex);}.bind(this),
onException : function(resp,ex) {this._error(resp.statusText,ex);}.bind(this),
onComplete:function(resp){
//				this.result = Object.toJSON(resp.responseJSON);
container.update(resp.responseText);
if(container== this.container) {
this._observeDetailLinks();
Lightview.updateViews();
container.scrollTo();
}
}.bind(this)}
);
},
_createLoader: function() {
this._debug('_createLoader');
this.loader = new Element('div', {'id':'loader'});
this.loader.setStyle({
opacity:0.5,
backgroundColor:'#ffffff',
position:'absolute',
left:'0',
top:'0',
height:'100%',
width:'100%',
display:'none',
zIndex:'1000'
});
this.loadmsg = new Element('div', {'id':'loadmsg'});
this.loadmsg.setStyle({
position:'absolute',
left:'0',
top:'40%',
width:'100%',
margin:'0',
textAlign:'center',
display:'none',
zIndex:'1001',
fontSize:'1.5em'
});
this.form.insert({'bottom':this.loader});
this.form.insert({'bottom':this.loadmsg});
},
_showLoader: function() {
this.loadmsg.update('<img src="/assets/content/ajax-loader.gif" alt="Suchergebnis wird geladen" />').show();
this.loader.show();
},
_updateLoader: function() {
if(this.loaderdelay) {
clearTimeout(this.loaderdelay);
}
if($('total')) {
var msgcontainer = $('total');
} else if($('empty')) {
var msgcontainer = $('empty');
} else {
var msgcontainer = false;
}
if(msgcontainer) {
this.loadmsg.update(msgcontainer.innerHTML);
msgcontainer.setStyle({'visibility':'hidden'});
}
this.loaderdelay = setTimeout(function() {
new Effect.Morph(this.loadmsg,
{ style: {
top:'100%',
opacity:'0',
left:'-30%',
fontSize:'1em'
},
afterFinish: function(){
if(msgcontainer) {
msgcontainer.setStyle({'visibility':'visible'});
}
this.loader.hide();
this.loadmsg.hide();
this.loadmsg.setStyle({'top':'40%','left':'0','opacity':'1','fontSize':'1.5em'});
}.bind(this),
duration:'0.3'
});
}.bind(this), 2000);
},
_debug: function(msg) {
if(this.options.debug) {
console.info(msg);
}
},
_error: function(txt,ex) {
if(this.options.debug) {
console.info(txt);
console.info(ex);
}
}
}
document.observe("dom:loaded", function() {
//	Event.observe(window, 'load', function() {
if($('freiwillig-form')){
Isearch.initialize();
}
});
var selectCarousel = Class.create ({
position: 0,
space: 0,
move: 0,
stat: true,
selectstat: 0,
onChange: false,
options: {
selectid :'',
debug: false
},
initialize: function(options) {
this.options  = Object.extend(Object.extend({ },this.options), options || {});
this.selectbox = $(this.options.selectid);
this.seloptions = this.selectbox.select('option');
this._createDom();
this._getDimension();
this._moveSlide(this.selectstat,true);
this._navStatus();
this._createObserve();
},
_createDom: function() {
this._debug('_createDom selectid: '+this.options.selectid);
this.container = new Element('div', {'id':this.options.selectid+'Carousel'});
this.bleft = new Element('button', {'id':this.options.selectid+'left'}).update('zurück');
this.bleft.observe('click', function(ev){
if(ev) {
Event.stop(ev);
}
if(this.prevstat) {
this._moveSlide(this.selectstat-1);
}
}.bind(this));
this.bright = new Element('button', {'id':this.options.selectid+'right'}).update('weiter');
this.bright.observe('click', function(ev){
if(ev) {
Event.stop(ev);
}
if(this.nextstat) {
this._moveSlide(this.selectstat+1);
}
}.bind(this));
this.wrapper = new Element('div', {'id':this.options.selectid+'wrapper'});
this.list = new Element('ol', {'id':this.options.selectid+'List'});
this.selectbox.wrap(this.container);
this.container.insert({'top':this.bleft});
this.wrapper.appendChild(this.list);
this.container.appendChild(this.wrapper);
this.container.appendChild(this.bright);
//		this.selectbox.insert({'before':this.container});
this.listitems = [];
this.seloptions.each(function(opt, index) {
if(opt.selected) {
var el = new Element('li', {'class':'selected'}).update(opt.text);
this.selectstat = index;
} else {
var el = new Element('li').update(opt.text);
}
el.observe('click', function(ev){
if(ev) {
Event.stop(ev);
}
var litem = ev.findElement();
this._moveSlide(litem.index);
this.selectbox.focus();
}.bind(this));
this.listitems.push(el);
this.list.insert(el);
el.index = index;
}.bind(this));
this.listlength = this.listitems.length-1;
},
_createObserve: function() {
this.selectbox.observe('keyup', function(ev){
var index = this.selectbox.selectedIndex;
this._debug('keypress selectedIndex: '+index);
this._moveSlide(index);
}.bind(this)).observe('focus', function(ev){ this.wrapper.addClassName('focused');}.bind(this)).observe('blur', function(ev){this.wrapper.removeClassName('focused');}.bind(this));
},
_onChange: function(index,init) {
this._debug('_onChange index: '+index);
this._resetList();
this._debug(this.listitems);
this.listitems[index].addClassName('selected');
this.seloptions[index].selected = true;
this.selectbox.selectedIndex = index;
if(this.options.onChange && !init) {
this.options.onChange();
}
this._debug('_onChange selectedIndex: '+this.selectbox.selectedIndex);
},
_resetList: function(index) {
this.listitems.each(function(itm, index) {
if(itm.hasClassName('selected')) {
itm.removeClassName('selected');
throw $break;
}
}.bind(this));
},
_getDimension: function() {
this.wrapper.dim = this.wrapper.getDimensions();
this._debug('wrapper width: '+this.wrapper.dim.width);
this.center = this.wrapper.dim.width/2;
},
_moveSlide: function(index,init) {
if(this.stat) {
this.selectstat = index;
this.stat = false;
var listdim = Element.positionedOffset(this.listitems[this.selectstat]);
var listwidth = this.listitems[this.selectstat].getWidth();
this._debug('listleft: '+listdim.left+', listwidth: '+listwidth);
this._onChange(this.selectstat,init);
//      new Effect.Opacity(this.wrapper, {duration:0.1, from:1.0, to:0.7}, {queue: 'front'});
var listcenter = this.center - listwidth/2;
this._debug('listcenter: '+listcenter);
this.space = (listcenter - listdim.left);
this._debug('this.space: '+this.space);
this._debug('before this.position: '+this.position);
this.move = this.space - this.position;
this.position  = this.position + this.move;
this._debug('after this.position: '+this.position);
this._debug('_moveSlide by: '+this.move);
new Effect.MoveBy(this.list, 0, this.move, {
afterFinish: function(){
this._navStatus();
//	      new Effect.Opacity(this.wrapper, {duration:0.1, from:0.7, to:1.0}, {queue: 'front'});
this.stat = true;
}.bind(this),
//				queue: {position:'front', scope: 'slidescope', limit:10},
duration:0.3
});
}
},
_navStatus: function() {
this._debug('_navStatus selectstat: '+this.selectstat);
if (this.selectstat == this.listlength ) {
this._debug('next deactive '+this.bright);
this.bright.addClassName('nde');
this.bright.setAttribute('disabled','disabled');
this.nextstat = false;
}	else {
this.bright.removeClassName('nde');
this.bright.removeAttribute('disabled');
this.nextstat = true;
}
if (this.selectstat == 0) {
this._debug('prev deactive');
this.bleft.addClassName('pde');
this.bleft.setAttribute('disabled','disabled');
this.prevstat = false;
}	else {
this.bleft.removeClassName('pde');
this.bleft.removeAttribute('disabled');
this.prevstat = true;
}
},
_debug: function(msg) {
if(this.options.debug) {
console.info(msg);
}
}
});
/*
Unobtrusive Slider Control by frequency decoder v2.6 (http://www.frequency-decoder.com/)
Released under a creative commons Attribution-Share Alike 3.0 Unported license (http://creativecommons.org/licenses/by-sa/3.0/)
You are free:
* to copy, distribute, display, and perform the work
* to make derivative works
* to make commercial use of the work
Under the following conditions:
by Attribution.
--------------
You must attribute the work in the manner specified by the author or licensor.
sa
--
Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one.
* For any reuse or distribution, you must make clear to others the license terms of this work.
* Any of these conditions can be waived if you get permission from the copyright holder.
*/
var fdSliderController = (function() {
var sliders           = {},
uniqueid          = 0,
mouseWheelEnabled = true;
var removeMouseWheelSupport = function() {
mouseWheelEnabled = false;
};
var addEvent = function(obj, type, fn) {
if( obj.attachEvent ) {
obj["e"+type+fn] = fn;
obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
obj.attachEvent( "on"+type, obj[type+fn] );
} else { obj.addEventListener( type, fn, true ); }
};
var removeEvent = function(obj, type, fn) {
if( obj.detachEvent ) {
try {
obj.detachEvent( "on"+type, obj[type+fn] );
obj[type+fn] = null;
} catch(err) { };
} else { obj.removeEventListener( type, fn, true ); }
};
var stopEvent = function(e) {
if(e == null) e = document.parentWindow.event;
if(e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
};
/*@cc_on@*/
/*@if(@_win32)
e.cancelBubble = true;
e.returnValue = false;
/*@end@*/
return false;
};
var joinNodeLists = function() {
if(!arguments.length) { return []; };
var nodeList = [];
for (var i = 0; i < arguments.length; i++) {
for (var j = 0, item; item = arguments[i][j]; j++) { nodeList[nodeList.length] = item; };
};
return nodeList;
};
// Function by Artem B. with a minor change by f.d.
var parseCallbacks = function(cbs) {
if(cbs == null) { return {}; };
var func,
type,
cbObj = {},
parts,
obj;
for(var i = 0, fn; fn = cbs[i]; i++) {
type = fn.match(/(fd_slider_cb_(update|create|destroy|redraw|move|focus|blur|enable|disable)_)([^\s|$]+)/i)[1];
fn   = fn.replace(new RegExp("^"+type), "").replace(/-/g, ".");
type = type.replace(/^fd_slider_cb_/i, "").replace(/_$/, "");
try {
if(fn.indexOf(".") != -1) {
parts = fn.split('.');
obj   = window;
for (var x = 0, part; part = obj[parts[x]]; x++) {
if(part instanceof Function) {
(function() {
var method = part;
func = function (data) { method.apply(obj, [data]) };
})();
} else {
obj = part;
};
};
} else {
func = window[fn];
};
if(!(func instanceof Function)) continue;
if(!(type in cbObj)) { cbObj[type] = []; };
cbObj[type][cbObj[type].length] = func;
} catch (err) {};
};
return cbObj;
};
var parseClassNames = function(cbs) {
if(cbs == null) { return ""; };
var cns = [];
for(var i = 0, cn; cn = cbs[i]; i++) {
cns[cns.length] = cn.replace(/^fd_slider_cn_/, "");
};
return cns.join(" ");
};
var createSlider = function(options) {
if(!options || !options.inp || !options.inp.id) { return false; };
destroySingleSlider(options.inp.id);
sliders[options.inp.id] = new fdSlider(options);
return true;
};
var init = function( elem ) {
var ranges     = /fd_range_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/i,
increment  = /fd_inc_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/,
kIncrement = /fd_maxinc_([-]{0,1}[0-9]+(d[0-9]+){0,1}){1}/,
callbacks  = /((fd_slider_cb_(update|create|destroy|redraw|move|focus|blur|enable|disable)_)([^\s|$]+))/ig,
classnames = /(fd_slider_cn_([a-zA-Z0-9_\-]+))/ig,
inputs     = elem && elem.tagName && elem.tagName.search(/input|select/i) != -1 ? [elem] : joinNodeLists(document.getElementsByTagName('input'), document.getElementsByTagName('select')),
range,
tmp,
options;
/*for(var i = 0, inp; inp = inputs[i]; i++) {
if((inp.tagName.toLowerCase() == "input" && inp.type == "text" && (inp.className.search(ranges) != -1 || inp.className.search(/fd_slider/) != -1)) || (inp.tagName.toLowerCase() == "select" && inp.className.search(/fd_slider/) != -1)) {
// If we haven't been passed a specific id and the slider exists then continue
if(!elem && inp.id && document.getElementById("fd-slider-"+inp.id)) { continue; };
// Create an id if necessary
if(!inp.id) { inp.id == "sldr" + uniqueid++; };
options = {
inp:            inp,
inc:            inp.className.search(increment)  != -1 ? inp.className.match(increment)[0].replace("fd_inc_", "").replace("d",".") : "1",
maxInc:         inp.className.search(kIncrement) != -1 ? inp.className.match(kIncrement)[0].replace("fd_maxinc_", "").replace("d",".") : false,
range:          [0,100],
callbacks:      parseCallbacks(inp.className.match(callbacks)),
classNames:     parseClassNames(inp.className.match(classnames)),
tween:          inp.className.search(/fd_tween/i) != -1,
vertical:       inp.className.search(/fd_vertical/i) != -1,
hideInput:      inp.className.search(/fd_hide_input/i) != -1,
clickJump:      inp.className.search(/fd_jump/i) != -1,
fullARIA:       inp.className.search(/fd_full_aria/i) != -1,
noMouseWheel:   inp.className.search(/fd_disable_mousewheel/i) != -1
};
if(inp.tagName.toLowerCase() == "select") {
options.range = [0, inp.options.length - 1];
} else if(inp.className.search(ranges) != -1) {
range = inp.className.match(ranges)[0].replace("fd_range_", "").replace(/d/g,".").split("_");
options.range = [range[0], range[1]];
};
createSlider(options);
};
};*/
return true;
};
var destroySingleSlider = function(id) {
if(id in sliders) {
sliders[id].destroy();
delete sliders[id];
return true;
};
return false;
};
var destroyAllsliders = function(e) {
for(slider in sliders) { sliders[slider].destroy(); };
};
var unload = function(e) {
destroyAllsliders();
sliders = null;
removeEvent(window, "unload", unload);
removeEvent(window, "resize", resize);
removeOnloadEvent();
};
var resize = function(e) {
for(slider in sliders) { sliders[slider].onResize(); };
};
var removeOnloadEvent = function() {
removeEvent(window, "load", init);
/*@cc_on@*/
/*@if(@_win32)
removeEvent(window, "load",   function() { setTimeout(onload, 200) });
/*@end@*/
};
function fdSlider(options) {
var inp         = options.inp,
disabled    = false,
tagName     = inp.tagName.toLowerCase(),
min         = +options.range[0],
max         = +options.range[1],
range       = Math.abs(max - min),
inc         = tagName == "select" ? 1 : +options.inc||1,
maxInc      = options.maxInc ? options.maxInc : inc * 2,
precision   = options.inc.search(".") != -1 ? options.inc.substr(options.inc.indexOf(".")+1, options.inc.length - 1).length : 0,
steps       = Math.ceil(range / inc),
useTween    = !!options.tween,
fullARIA    = !!options.fullARIA,
hideInput   = !!options.hideInput,
clickJump   = useTween ? false : !!options.clickJump,
vertical    = !!options.vertical,
callbacks   = options.callbacks,
classNames  = options.classNames,
noMWheel    = !!options.noMouseWheel,
timer       = null,
kbEnabled   = true,
sliderH     = 0,
sliderW     = 0,
tweenX      = 0,
tweenB      = 0,
tweenC      = 0,
tweenD      = 0,
frame       = 0,
x           = 0,
y           = 0,
maxPx       = 0,
handlePos   = 0,
destPos     = 0,
mousePos    = 0,
deltaPx     = 0,
stepPx      = 0,
self        = this,
changeList  = {},
initVal     = null,
outerWrapper,
wrapper,
handle,
bar;
if(max < min) {
inc    = -inc;
maxInc = -maxInc;
};
function disableSlider(noCallback) {
if(disabled && !noCallback) { return; };
try {
removeEvent(outerWrapper, "mouseover", onMouseOver);
removeEvent(outerWrapper, "mouseout",  onMouseOut);
removeEvent(outerWrapper, "mousedown", onMouseDown);
removeEvent(handle, "focus",     onFocus);
removeEvent(handle, "blur",      onBlur);
if(!window.opera) {
removeEvent(handle, "keydown",   onKeyDown);
removeEvent(handle, "keypress",  onKeyPress);
} else {
removeEvent(handle, "keypress",  onKeyDown);
};
removeEvent(handle, "mousedown", onHandleMouseDown);
removeEvent(handle, "mouseup",   onHandleMouseUp);
if(mouseWheelEnabled && !noMWheel) {
if (window.addEventListener && !window.devicePixelRatio) window.removeEventListener('DOMMouseScroll', trackMouseWheel, false);
else {
removeEvent(document, "mousewheel", trackMouseWheel);
removeEvent(window,   "mousewheel", trackMouseWheel);
};
};
} catch(err) {};
clearTimeout(timer);
outerWrapper.className = outerWrapper.className.replace("slider-disabled", "") + " slider-disabled";
outerWrapper.setAttribute("aria-disabled", true);
inp.disabled = disabled = true;
if(!noCallback) {
callback("disable");
};
};
function enableSlider(noCallback) {
if(!disabled && !noCallback) return;
addEvent(outerWrapper, "mouseover", onMouseOver);
addEvent(outerWrapper, "mouseout",  onMouseOut);
addEvent(outerWrapper, "mousedown", onMouseDown);
if(!window.opera) {
addEvent(handle, "keydown",   onKeyDown);
addEvent(handle, "keypress",  onKeyPress);
} else {
addEvent(handle, "keypress",  onKeyDown);
};
addEvent(handle, "focus",     onFocus);
addEvent(handle, "blur",      onBlur);
addEvent(handle, "mousedown", onHandleMouseDown);
addEvent(handle, "mouseup",   onHandleMouseUp);
outerWrapper.className = outerWrapper.className.replace("slider-disabled", "");
outerWrapper.setAttribute("aria-disabled", false);
inp.disabled = disabled = false;
if(!noCallback) {
callback("enable");
};
};
function destroySlider() {
try {
disableSlider();
outerWrapper.parentNode.removeChild(outerWrapper);
} catch(err) {};
wrapper = bar = handle = outerWrapper = timer = null;
callback("destroy");
callbacks = null;
};
function redraw() {
locate();
// Internet Explorer requires the try catch
try {
var sW = outerWrapper.offsetWidth,
sH = outerWrapper.offsetHeight,
hW = handle.offsetWidth,
hH = handle.offsetHeight,
bH = bar.offsetHeight,
bW = bar.offsetWidth;
maxPx     = vertical ? sH - hH : sW - hW;
stepPx    = maxPx / steps;
deltaPx   = maxPx / Math.ceil(range / maxInc);
sliderW = sW;
sliderH = sH;
//																if(!document.getElementById(inp.id+'stepnr-right')) {
/* */
//																if(inp.tagName.toLowerCase() == "select") {
var spanElements = outerWrapper.getElementsByTagName('span');
for(var j = 0, stp = steps; j <= spanElements.length-1; ++j){
spanElements[j].remove();
}
optionElements = inp.getElementsByTagName('option');
stepElements = [];
for(var i = 0, stp = steps; i <= stp; ++i){
stepElements[i] = document.createElement('span');
stepElements[i].innerHTML = optionElements[i].text;
stepElements[i].className = "stepnr";
/*	if(i == stp) {
stepElements[i].style.right = "0px";
stepElements[i].className = "stepnr stepnr-right";
stepElements[i].id = inp.id+"stepnr-right";
} else if (i == 0) {
stepElements[i].style.left = "0px";
stepElements[i].className = "stepnr stepnr-left";
} else {
stepElements[i].style.left = ((i*stepPx)-(stepElements[i].offsetWidth/2)+(hW/2))+"px";
}*/
if(i == stp) {
stepElements[i].style.right = "0px";
stepElements[i].id = inp.id+"stepnr-right";
} else {
stepElements[i].style.left = (i*13.5)+"%";
}
outerWrapper.appendChild(stepElements[i]);
};
//																}
//																}
valueToPixels();
} catch(err) { };
callback("redraw");
};
function callback(type) {
var cbObj = {"elem":inp, "value":tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value};
if(type in callbacks) {
for(var i = 0, func; func = callbacks[type][i]; i++) {
func(cbObj);
};
};
};
function onFocus(e) {
outerWrapper.className = outerWrapper.className.replace('focused','') + ' focused';
if(mouseWheelEnabled && !noMWheel) {
addEvent(window, 'DOMMouseScroll', trackMouseWheel);
addEvent(document, 'mousewheel', trackMouseWheel);
if(!window.opera) addEvent(window,   'mousewheel', trackMouseWheel);
};
callback("focus");
};
function onBlur(e) {
outerWrapper.className = outerWrapper.className.replace(/focused|fd-fc-slider-hover|fd-slider-hover/g,'');
if(mouseWheelEnabled && !noMWheel) {
removeEvent(document, 'mousewheel', trackMouseWheel);
removeEvent(window, 'DOMMouseScroll', trackMouseWheel);
if(!window.opera) removeEvent(window,   'mousewheel', trackMouseWheel);
};
callback("blur");
};
function trackMouseWheel(e) {
if(!kbEnabled) return;
e = e || window.event;
var delta = 0;
if (e.wheelDelta) {
delta = e.wheelDelta/120;
if (window.opera && window.opera.version() < 9.2) delta = -delta;
} else if(e.detail) {
delta = -e.detail/3;
};
if(vertical) { delta = -delta; };
if(delta) {
var xtmp = vertical ? handle.offsetTop : handle.offsetLeft;
xtmp = (delta < 0) ? Math.ceil(xtmp + deltaPx) : Math.floor(xtmp - deltaPx);
pixelsToValue(Math.min(Math.max(xtmp, 0), maxPx));
}
return stopEvent(e);
};
function onKeyPress(e) {
e = e || document.parentWindow.event;
if ((e.keyCode >= 33 && e.keyCode <= 40) || !kbEnabled || e.keyCode == 45 || e.keyCode == 46) {
return stopEvent(e);
};
return true;
};
function onKeyDown(e) {
if(!kbEnabled) return true;
e = e || document.parentWindow.event;
var kc = e.keyCode != null ? e.keyCode : e.charCode;
if ( kc < 33 || (kc > 40 && (kc != 45 && kc != 46))) return true;
var value = tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
if( kc == 37 || kc == 40 || kc == 46 || kc == 34) {
// left, down, ins, page down
value -= (e.ctrlKey || kc == 34 ? maxInc : inc)
} else if( kc == 39 || kc == 38 || kc == 45 || kc == 33) {
// right, up, del, page up
value += (e.ctrlKey || kc == 33 ? maxInc : inc)
} else if( kc == 35 ) {
// max
value = max;
} else if( kc == 36 ) {
// min
value = min;
};
valueToPixels(value);
callback("update");
// Opera doesn't let us cancel key events so the up/down arrows and home/end buttons will scroll the screen - which sucks
return stopEvent(e);
};
function onMouseOver( e ) {
/*@cc_on@*/
/*@if(@_jscript_version <= 5.6)
if(this.className.search(/focused/) != -1) {
this.className = this.className.replace("fd-fc-slider-hover", "") +' fd-fc-slider-hover';
return;
}
/*@end@*/
this.className = this.className.replace(/fd\-slider\-hover/g,"") +' fd-slider-hover';
};
function onMouseOut( e ) {
/*@cc_on@*/
/*@if(@_jscript_version <= 5.6)
if(this.className.search(/focused/) != -1) {
this.className = this.className.replace("fd-fc-slider-hover", "");
return;
}
/*@end@*/
this.className = this.className.replace(/fd\-slider\-hover/g,"");
};
function onHandleMouseUp(e) {
e = e || window.event;
removeEvent(document, 'mousemove', trackMouse);
removeEvent(document, 'mouseup',   onHandleMouseUp);
kbEnabled = true;
// Opera fires the blur event when the mouseup event occurs on a button, so we attept to force a focus
if(window.opera) try { setTimeout(function() { onfocus(); }, 0); } catch(err) {};
document.body.className = document.body.className.replace(/slider-drag-vertical|slider-drag-horizontal/g, "");
return stopEvent(e);
};
function onHandleMouseDown(e) {
e = e || window.event;
mousePos  = vertical ? e.clientY : e.clientX;
handlePos = parseInt(vertical ? handle.offsetTop : handle.offsetLeft)||0;
kbEnabled = false;
clearTimeout(timer);
timer = null;
addEvent(document, 'mousemove', trackMouse);
addEvent(document, 'mouseup', onHandleMouseUp);
// Force a "focus" on the button on mouse events
if(window.devicePixelRatio || (document.all && !window.opera)) try { setTimeout(function() { handle.focus(); }, 0); } catch(err) {};
document.body.className += " slider-drag-" + (vertical ? "vertical" : "horizontal");
};
function onMouseUp( e ) {
e = e || window.event;
removeEvent(document, 'mouseup', onMouseUp);
if(!useTween) {
clearTimeout(timer);
timer = null;
kbEnabled = true;
};
return stopEvent(e);
};
function trackMouse( e ) {
e = e || window.event;
pixelsToValue(snapToNearestValue(handlePos + (vertical ? e.clientY - mousePos : e.clientX - mousePos)));
};
function onMouseDown( e ) {
e = e || window.event;
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) targ = targ.parentNode;
if(targ.className.search("fd-slider-handle") != -1) { return true; };
try { setTimeout(function() { handle.focus(); }, 0); } catch(err) { };
clearTimeout(timer);
locate();
timer     = null;
kbEnabled = false;
var posx        = 0,
sLft        = 0,
sTop        = 0;
// Internet Explorer doctype woes
if (document.documentElement && document.documentElement.scrollTop) {
sTop = document.documentElement.scrollTop;
sLft = document.documentElement.scrollLeft;
} else if (document.body) {
sTop = document.body.scrollTop;
sLft = document.body.scrollLeft;
};
if (e.pageX)            posx = vertical ? e.pageY : e.pageX;
else if (e.clientX)     posx = vertical ? e.clientY + sTop : e.clientX + sLft;
posx -= vertical ? y + Math.round(handle.offsetHeight / 2) : x + Math.round(handle.offsetWidth / 2);
posx = snapToNearestValue(posx);
if(useTween) {
tweenTo(posx);
} else if(clickJump) {
pixelsToValue(posx);
} else {
addEvent(document, 'mouseup', onMouseUp);
destPos = posx;
onTimer();
};
};
function incrementHandle(numOfSteps) {
var value = tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
value += inc * numOfSteps;
valueToPixels(value);
};
function snapToNearestValue(px) {
var rem = px % stepPx;
if(rem && rem >= (stepPx / 2)) { px += (stepPx - rem); }
else { px -= rem;  };
return Math.min(Math.max(parseInt(px, 10), 0), maxPx);
};
function locate(){
var curleft = 0,
curtop  = 0,
obj     = outerWrapper;
// Try catch for IE's benefit
try {
while (obj.offsetParent) {
curleft += obj.offsetLeft;
curtop  += obj.offsetTop;
obj      = obj.offsetParent;
};
} catch(err) {};
x = curleft;
y = curtop;
};
function onTimer() {
var xtmp = vertical ? handle.offsetTop : handle.offsetLeft;
xtmp = Math.round((destPos < xtmp) ? Math.max(destPos, Math.floor(xtmp - deltaPx)) : Math.min(destPos, Math.ceil(xtmp + deltaPx)));
pixelsToValue(xtmp);
if(xtmp != destPos) timer = setTimeout(onTimer, steps > 20 ? 50 : 100);
else kbEnabled = true;
};
var tween = function(){
frame++;
var c = tweenC,
d = 20,
t = frame,
b = tweenB,
x = Math.ceil((t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b);
pixelsToValue(t == d ? tweenX : x);
callback("move");
if(t!=d) timer = setTimeout(tween, 20);
else {
clearTimeout(timer);
timer     = null;
kbEnabled = true;
};
};
function tweenTo(tx){
kbEnabled = false;
tweenX = parseInt(tx, 10);
tweenB = parseInt(vertical ? handle.style.top : handle.style.left, 10);
tweenC = tweenX - tweenB;
tweenD = 20;
frame  = 0;
if(!timer) timer = setTimeout(tween, 20);
};
function pixelsToValue(px) {
handle.style[vertical ? "top" : "left"] = px + "px";
var val = min + (Math.round(px / stepPx) * inc);
setInputValue((tagName == "select" || inc == 1) ? Math.round(val) : val);
};
function valueToPixels(val) {
var value = isNaN(val) ? tagName == "input" ? parseFloat(inp.value) : inp.selectedIndex : val;
if(isNaN(value) || value < Math.min(min,max)) value = Math.min(min,max);
else if(value > Math.max(min,max)) value = Math.max(min,max);
setInputValue(value);
handle.style[vertical ? "top" : "left"] = Math.round(((value - min) / inc) * stepPx) + "px";
};
function setInputValue(val) {
val = isNaN(val) ? min : val;
if(tagName == "select") {
try {
val = parseInt(val, 10);
if(inp.selectedIndex == val) return;
inp.options[val].selected = true;
} catch (err) {};
} else {
val = (min + (Math.round((val - min) / inc) * inc)).toFixed(precision);
if(inp.value == val) return;
inp.value = val;
};
updateAriaValues();
callback("update");
};
function findLabel() {
var label;
if(inp.parentNode && inp.parentNode.tagName.toLowerCase() == "label") label = inp.parentNode;
else {
var labelList = document.getElementsByTagName('label');
// loop through label array attempting to match each 'for' attribute to the id of the current element
for(var i = 0, lbl; lbl = labelList[i]; i++) {
// Internet Explorer requires the htmlFor test
if((lbl['htmlFor'] && lbl['htmlFor'] == inp.id) || (lbl.getAttribute('for') == inp.id)) {
label = lbl;
break;
};
};
};
if(label && !label.id) { label.id = inp.id + "_label"; };
return label;
};
function updateAriaValues() {
handle.setAttribute("aria-valuenow",  tagName == "select" ? inp.options[inp.selectedIndex].value : inp.value);
handle.setAttribute("aria-valuetext", tagName == "select" ? inp.options[inp.selectedIndex].text  : inp.value);
};
function onChange( e ) {
valueToPixels();
callback("update");
return true;
};
(function() {
if(hideInput) { inp.className += " fd_hide_slider_input"; }
else { addEvent(inp, 'change', onChange); };
outerWrapper              = document.createElement('div');
outerWrapper.className    = "fd-slider" + (vertical ? "-vertical " : " ") + classNames;
outerWrapper.id           = "fd-slider-" + inp.id;
wrapper                   = document.createElement('span');
wrapper.className         = "fd-slider-inner";
bar                       = document.createElement('span');
bar.className             = "fd-slider-bar";
if(fullARIA) {
handle            = document.createElement('span');
handle.setAttribute(!/*@cc_on!@*/false ? "tabIndex" : "tabindex", "0");
} else {
handle            = document.createElement('button');
handle.setAttribute("type", "button");
};
handle.className          = "fd-slider-handle";
handle.appendChild(document.createTextNode(String.fromCharCode(160)));
outerWrapper.appendChild(wrapper);
outerWrapper.appendChild(bar);
outerWrapper.appendChild(handle);
inp.parentNode.insertBefore(outerWrapper, inp);
/*@cc_on@*/
/*@if(@_win32)
handle.unselectable       = "on";
bar.unselectable          = "on";
wrapper.unselectable      = "on";
outerWrapper.unselectable = "on";
/*@end@*/
// Add ARIA accessibility info programmatically
handle.setAttribute("role",           "slider");
handle.setAttribute("aria-valuemin",  min);
handle.setAttribute("aria-valuemax",  max);
var lbl = findLabel();
if(lbl) {
handle.setAttribute("aria-labelledby", lbl.id);
handle.id = "fd-slider-handle-" + inp.id;
/*@cc_on
/*@if(@_win32)
lbl.setAttribute("htmlFor", handle.id);
@else @*/
lbl.setAttribute("for", handle.id);
/*@end
@*/
};
// Are there page instructions - the creation of the instructions has been left up to you fine reader...
if(document.getElementById("fd_slider_describedby")) {
handle.setAttribute("aria-describedby", "fd_slider_describedby");  // aaa:describedby
};
if(inp.getAttribute("disabled") == true) {
disableSlider(true);
} else {
enableSlider(true);
};
updateAriaValues();
callback("create");
redraw();
})();
return {
onResize:       function(e) { if(outerWrapper.offsetHeight != sliderH || outerWrapper.offsetWidth != sliderW) { }; },
destroy:        function()  { destroySlider(); },
reset:          function()  { valueToPixels(); },
increment:      function(n) { incrementHandle(n); },
disable:        function()  { disableSlider(); },
enable:         function()  { enableSlider(); }
};
};
addEvent(window, "load",   init);
addEvent(window, "unload", unload);
addEvent(window, "resize", resize);
/*@cc_on@*/
/*@if(@_win32)
var onload = function(e) {
for(slider in sliders) { sliders[slider].reset(); }
};
addEvent(window, "load", function() { setTimeout(onload, 200) });
/*@end@*/
return {
create:                 function(elem) { init(elem) },
createSlider:           function(opts) { createSlider(opts); },
destroyAll:             function() { destroyAllsliders(); },
destroySlider:          function(id) { return destroySingleSlider(id); },
redrawAll:              function() { resize(); },
increment:              function(id, numSteps) { if(!(id in sliders)) { return false; }; sliders[id].increment(numSteps); },
addEvent:               addEvent,
removeEvent:            removeEvent,
stopEvent:              stopEvent,
updateSlider:           function(id) { if(!(id in sliders)) { return false; }; sliders[id].reset(); },
disableMouseWheel:      function() { removeMouseWheelSupport(); },
removeOnLoadEvent:      function() { removeOnloadEvent(); },
disableSlider:          function(id) { if(!(id in sliders)) { return false; }; sliders[id].disable(); },
enableSlider:           function(id) { if(!(id in sliders)) { return false; }; sliders[id].enable(); }
}
})();
/*! Respond.js v1.0.1pre: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */
(function(e,h){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=h;if(h){return}var u=e.document,r=u.documentElement,i=[],k=[],p=[],o={},g=30,f=u.getElementsByTagName("head")[0]||r,b=f.getElementsByTagName("link"),d=[],a=function(){var B=b,w=B.length,z=0,y,x,A,v;for(;z<w;z++){y=B[z],x=y.href,A=y.media,v=y.rel&&y.rel.toLowerCase()==="stylesheet";if(!!x&&v&&!o[x]){if(y.styleSheet&&y.styleSheet.rawCssText){m(y.styleSheet.rawCssText,x,A);o[x]=true}else{if(!/^([a-zA-Z]+?:(\/\/)?)/.test(x)||x.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:x,media:A})}}}}t()},t=function(){if(d.length){var v=d.shift();n(v.href,function(w){m(w,v.href,v.media);o[v.href]=true;t()})}},m=function(G,v,x){var E=G.match(/@media[^\{]+\{([^\{\}]+\{[^\}\{]+\})+/gi),H=E&&E.length||0,v=v.substring(0,v.lastIndexOf("/")),w=function(I){return I.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+v+"$2$3")},y=!H&&x,B=0,A,C,D,z,F;if(v.length){v+="/"}if(y){H=1}for(;B<H;B++){A=0;if(y){C=x;k.push(w(G))}else{C=E[B].match(/@media ([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&w(RegExp.$2))}z=C.split(",");F=z.length;for(;A<F;A++){D=z[A];i.push({media:D.match(/(only\s+)?([a-zA-Z]+)(\sand)?/)&&RegExp.$2,rules:k.length-1,minw:D.match(/\(min\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1),maxw:D.match(/\(max\-width:[\s]*([\s]*[0-9]+)px[\s]*\)/)&&parseFloat(RegExp.$1)})}}j()},l,q,j=function(E){var v="clientWidth",x=r[v],D=u.compatMode==="CSS1Compat"&&x||u.body[v]||x,z={},C=u.createDocumentFragment(),B=b[b.length-1],w=(new Date()).getTime();if(E&&l&&w-l<g){clearTimeout(q);q=setTimeout(j,g);return}else{l=w}for(var y in i){var F=i[y];if(!F.minw&&!F.maxw||(!F.minw||F.minw&&D>=F.minw)&&(!F.maxw||F.maxw&&D<=F.maxw)){if(!z[F.media]){z[F.media]=[]}z[F.media].push(k[F.rules])}}for(var y in p){if(p[y]&&p[y].parentNode===f){f.removeChild(p[y])}}for(var y in z){var G=u.createElement("style"),A=z[y].join("\n");G.type="text/css";G.media=y;if(G.styleSheet){G.styleSheet.cssText=A}else{G.appendChild(u.createTextNode(A))}C.appendChild(G);p.push(G)}f.insertBefore(C,B.nextSibling)},n=function(v,x){var w=c();if(!w){return}w.open("GET",v,true);w.onreadystatechange=function(){if(w.readyState!=4||w.status!=200&&w.status!=304){return}x(w.responseText)};if(w.readyState==4){return}w.send(null)},c=(function(){var v=false;try{v=new XMLHttpRequest()}catch(w){v=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return v}})();a();respond.update=a;function s(){j(true)}if(e.addEventListener){e.addEventListener("resize",s,false)}else{if(e.attachEvent){e.attachEvent("onresize",s)}}})(this,(function(f){if(f.matchMedia){return true}var e,i=document,c=i.documentElement,g=c.firstElementChild||c.firstChild,h=!i.body,d=i.body||i.createElement("body"),b=i.createElement("div"),a="only all";b.id="mq-test-1";b.style.cssText="position:absolute;top:-99em";d.appendChild(b);b.innerHTML='_<style media="'+a+'"> #mq-test-1 { width: 9px; }</style>';if(h){c.insertBefore(d,g)}b.removeChild(b.firstChild);e=b.offsetWidth==9;if(h){c.removeChild(d)}else{d.removeChild(b)}return e})(this));
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
* Build: http://modernizr.com/download/#-opacity-cssanimations-csstransforms-csstransforms3d-csstransitions-inlinesvg-svg-touch-shiv-mq-cssclasses-addtest-teststyles-testprop-testallprops-prefixes-domprefixes-load
*/
;window.Modernizr=function(a,b,c){function B(a){j.cssText=a}function C(a,b){return B(m.join(a+";")+(b||""))}function D(a,b){return typeof a===b}function E(a,b){return!!~(""+a).indexOf(b)}function F(a,b){for(var d in a){var e=a[d];if(!E(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,"function")?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return D(b,"string")||D(b,"undefined")?F(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),G(e,b,c))}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={svg:"http://www.w3.org/2000/svg"},r={},s={},t={},u=[],v=u.slice,w,x=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},y=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b)&&c(b).matches||!1;var d;return x("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},z={}.hasOwnProperty,A;!D(z,"undefined")&&!D(z.call,"undefined")?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e}),r.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:x(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},r.opacity=function(){return C("opacity:.55"),/^0.55$/.test(j.opacity)},r.cssanimations=function(){return H("animationName")},r.csstransforms=function(){return!!H("transform")},r.csstransforms3d=function(){var a=!!H("perspective");return a&&"webkitPerspective"in g.style&&x("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},r.csstransitions=function(){return H("transition")},r.svg=function(){return!!b.createElementNS&&!!b.createElementNS(q.svg,"svg").createSVGRect},r.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==q.svg};for(var I in r)A(r,I)&&(w=I.toLowerCase(),e[w]=r[I](),u.push((e[w]?"":"no-")+w));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)A(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},B(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(s,b.frag)}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.mq=y,e.testProp=function(a){return F([a])},e.testAllProps=H,e.testStyles=x,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+u.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))};
/* clickVisible
* @author: sindre wimberger // wimberger@echonet.at
* @version: 0.7 2011-02-22
* @changelog:
0.4 - added option margin bottom
added ARIA Support
0.5 - removed ARIA role Button
added focuslinks option (focus on invisible links opens container)
0.6 - change ANimations to Scripty2, minor Imrovments
0.7 - added complete ARIA Support from http://www.oaa-accessibility.org/example/15/
* @depencies: prototype, s2
* aria example: http://www.oaa-accessibility.org/example/15/
* @usage:
new clickVisible({
container: 'clicklist',
selection: 'a.click',
containerclass : 'cc',
activeclass: 'active',
inactiveclass: 'inactive',
marginbottom: '0 0 10px 0',
survillance: true,
focuslinks: false
});
*/
var clickVisible = Class.create ({
stat: true,
options: {
container: 'clicklist',
selection: 'a.click',
containerclass : 'cc',
activeclass: 'active',
inactiveclass: 'inactive',
marginbottom: '0 0 10px 0',
duration: 0.3,
survillance: true,
focuslinks: true
},
initialize: function(options) {
if(location.href.match("error")){
return;
//$("buttonc-login").removeClassName("inactive").addClassName("active");
//alert(location.href);
}
this.options  = Object.extend(Object.extend({ },this.options), options || {});
this.container = $(this.options.container);
if(!this.container) {return false;}
this.container.addClassName('cvready');
if(this.options.survillance) {
this.getAnchor();
}
this._enableClicks();
},
getAnchor: function() {
this.anchor = unescape(self.document.location.hash.substring(1));
if(this.anchor != '') {
if($(this.anchor)) {
var anchorelement = $(this.anchor);
anchorelement.addClassName(this.options.activeclass);
var ancestors = anchorelement.ancestors();
ancestors.each(function(el) {
if(el.hasClassName(this.options.containerclass)) {
el.addClassName(this.options.activeclass);
}
}.bind(this));
}
}
},
_enableClicks: function() {
this._toggle = this._toggle.bindAsEventListener(this);
this.clicks = this.container.select(this.options.selection);
this.clicks.each(function(clk){
if(clk.getAttribute('href')) {
var clkID = clk.getAttribute('href').split("#")[1];
if($(clkID)) {
clk.id = 'button'+clkID;
clk.setAttribute('role', 'button');
clk.setAttribute('aria-controls', clkID);
clk.setAttribute('id', clk.id);
clk.container = $(clkID);
clk.listitem = clk;
clk.container.setAttribute('role', 'region');
if(!this.options.focuslinks) {
clk.container.setTabIndex('-1');
}
if(clk.id) {
clk.container.setAttribute('aria-labelledby',clk.id);
}
clk.containerheight = clk.container.getHeight();
if(clk.listitem.hasClassName(this.options.activeclass)) {
//						clk.addClassName(this.options.activeclass);
this._show(clk);
this._ariaVisible(clk);
} else {
this._hide(clk.container);
this._ariaHidden(clk);
}
Event.observe(clk, 'click', this._toggle.bind(this));
if(this.options.focuslinks) {
Event.observe(clk, 'focus', this._toggleFocus.bind(this));
clk.container.select('a').each(function(lnk){
lnk.container = clk.container;
lnk.clk = clk;
lnk.observe('focus', function(e) {
var lnk = Event.findElement(e);
if (lnk.container.style.height == '0px') {
this._appear(clk);
}
}.bind(this));
}.bind(this));
}
//					Event.observe(clk, 'focus', this._toggle.bindAsEventListener(this));
}
}
}.bind(this));
},
_toggle: function(e) {
Event.stop(e);
if(this.stat) {
this.stat = false;
var clk = Event.findElement(e, 'a');
if (clk.container.style.height != '0px') {
this._fade(clk);
} else {
this._appear(clk);
}
}
},
_toggleFocus: function(e) {
Event.stop(e);
if(this.stat) {
var clk = Event.findElement(e, 'a');
if (clk.container.style.height != '0px') {
//				this._fade(clk);
} else {
this.stat = false;
this._appear(clk);
}
}
},
_appear: function(clk) {
try {
var fx = new S2.FX.Morph(clk.container, {
style: 'height:'+clk.containerheight+'px;',
duration: this.options.duration,
after: function() {
clk.container.setStyle({overflow:'visible', margin:this.options.marginbottom});
this._ariaVisible(clk);
clk.container.setFocus();
}.bind(this)
});
fx.play();
} catch(e) {
this._show(clk.container);
this._ariaVisible(clk);
clk.container.setFocus();
}
},
_fade: function(clk){
var html = document.documentElement;
//		var html = $$('body')[0];
var dimen = html.getDimensions();
try {
var fx = new S2.FX.Morph(clk.container, {
style: 'height:0px;',
duration: this.options.duration,
before: function() {
html.style.height = dimen.height+'px';
clk.container.setStyle({overflow:'hidden', margin:'0px'}).removeClassName(this.options.activeclass).addClassName(this.options.inactiveclass);
}.bind(this),
after: function() {
html.style.height = 'auto';
//					 clk.container.setAttribute('aria-expanded','false');
this._ariaHidden(clk);
}.bind(this)
});
fx.play();
} catch(e) {
this._hide(clk.container);
this._ariaHidden(clk);
}
},
_show: function(clk){
clk.container.setStyle({height:clk.containerheight+'px',overflow:'visible',margin:this.options.marginbottom});
},
_hide: function(el){
el.setStyle({height:'0px',overflow:'hidden',margin:'0px'}).removeClassName(this.options.activeclass).addClassName(this.options.inactiveclass);
},
_ariaVisible: function(el){
el.listitem.removeClassName(this.options.inactiveclass).addClassName(this.options.activeclass);
//		el.setAttribute('aria-expanded','true');
el.container.setAttribute('aria-expanded','true');
this.stat = true;
},
_ariaHidden: function(el){
el.listitem.removeClassName(this.options.activeclass).addClassName(this.options.inactiveclass);
//		el.setAttribute('aria-expanded','false');
el.container.setAttribute('aria-expanded','false');
this.stat = true;
},
showAll: function() {
this.clicks.each(function(clk){
if(clk.getAttribute('href')) {
var clkID = clk.getAttribute('href').split("#")[1];
if($(clkID)) {
var clkContainer = $(clkID);
clk.listitem.removeClassName(this.options.inactiveclass).addClassName(this.options.activeclass);
this._show(clkContainer);
this._ariaVisible(clk);
Event.stopObserving(clk, 'click', this._toggle);
if(this.options.focuslinks) {
Event.stopObserving(clk, 'focus', this._toggle);
}
}
}
}.bind(this));
}
});
/*
JSTarget function by Roger Johansson, www.456bereastreet.com
*/
var JSTarget = {
init: function(att,val,warning) {
if (document.getElementById && document.createElement && document.appendChild) {
var strAtt = ((typeof att == 'undefined') || (att == null)) ? 'rel' : att;
var strVal = ((typeof val == 'undefined') || (val == null)) ? 'external' : val;
var arrLinks = document.getElementsByTagName('a');
var oLink;
var oRegExp = new RegExp("(^|\\s)" + strVal + "(\\s|$)");
for (var i = 0; i < arrLinks.length; i++) {
oLink = arrLinks[i];
if ((strAtt == 'class') && (oRegExp.test(oLink.className)) || (oRegExp.test(oLink.getAttribute(strAtt)))) {
oLink.onclick = JSTarget.openWin;
}
}
oWarning = null;
}
},
openWin: function(e) {
var event = (!e) ? window.event : e;
if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return true;
else {
var oWin = window.open(this.getAttribute('href'), '_blank');
if (oWin) {
if (oWin.focus) oWin.focus();
return false;
}
oWin = null;
return true;
}
}
};
function checkDelete(event) {
var answer=confirm('Sind Sie sicher das dieser Eintrag gelöscht werden soll?');
if(answer){
alert('Gelöscht');
}
else {
event.preventDefault();
}
}
// -----------------------------------------------------------------------------------
if( document.getElementsByTagName("html")[0].className.match(/ie8/) ) {
//
}
function slideExampleInit() {
var	controller = document.getElementById("user-box-anchor"),
slider = document.getElementById("user-box"),
slideractive = false,
shilfeactive = false,
aloginactive = false,
ulMenu = document.getElementById("nav"),
soforthilfeClick = document.getElementById("soforthilfe-a"),
soforthilfeSlider = document.getElementById("soforthilfe-box"),
soforthilfeWrapper = document.getElementById("soforthilfewrapper"),
soforthilfeIcon = document.getElementById("toggleLogin"),
anbieterlogin = document.getElementById("anbieterlogin"),
anbieterloginInner = document.getElementById("anbieterlogin-inner");
var sliderheight = slider.getHeight();
if(ulMenu){
ulMenuheight = ulMenu.getHeight();
}
if(ulMenu){
ulMenu.setStyle({height:'0px'});
}
if(slider.hasClassName("loginerror")){
slider.setStyle({height:sliderheight+'px'});
controller.addClassName("active");
slideractive=true;
} else {
slider.setStyle({height:'0px'});
}
controller.onclick = function() {
if(slideractive){
var fx = new S2.FX.Morph(slider, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
controller.removeClassName("active");
//slider - soforthilfeSliderHeight;
slideractive = false;
} else {
var fx = new S2.FX.Morph(slider, {
style: 'height:'+sliderheight+'px;',
duration: 0.3
});
fx.play();
ulMenuactive = false;
menuClick.removeClassName("active");
if(ulMenu){
ulMenu.style.height = "0";
}
controller.addClassName("active");
slideractive = true;
}
autoResize();
};
var ulMenuactive = false,
menuClick = document.getElementById("mobile-menu");
menuClick.onclick = function() {
if(ulMenuactive) {
var fx = new S2.FX.Morph(ulMenu, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
ulMenu.removeClassName("active");
menuClick.removeClassName("active");
ulMenuactive = false;
} else {
var fx = new S2.FX.Morph(ulMenu, {
style: 'height:'+ulMenuheight+'px;',
duration: 0.3
});
fx.play();
controller.removeClassName("active");
slider.style.height = "0";
ulMenu.addClassName("active");
menuClick.addClassName("active");
ulMenuactive = true;
}
autoResize();
};
if(typeof soforthilfeSlider !== 'undefined' && soforthilfeSlider !== null){
//Soforthilfe Slider
var soforthilfeSliderHeight = soforthilfeSlider.getHeight();
if(soforthilfeSlider.hasClassName("loginerror")){
soforthilfeSlider.setStyle({height:soforthilfeSliderHeight+'px'});
soforthilfeWrapper.addClassName("active");
shilfeactive=true;
} else {
soforthilfeSlider.setStyle({height:'0px'});
soforthilfeWrapper.removeClassName("active");
}
//soforthilfeClick.removeClassName("active");
soforthilfeClick.onclick = function() {
if(anbieterlogin.hasClassName("active")){
anbieterlogin.removeClassName("active");
var fx = new S2.FX.Morph(anbieterloginInner, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
aloginactive = false;
}
if(shilfeactive){
var fx = new S2.FX.Morph(soforthilfeSlider, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
soforthilfeClick.removeClassName("active");
shilfeactive = false;
} else {
var fx = new S2.FX.Morph(soforthilfeSlider, {
style: 'height:'+soforthilfeSliderHeight+'px;',
duration: 0.3
});
fx.play();
soforthilfeClick.addClassName("active");
shilfeactive = true;
}
};
}
if(typeof anbieterlogin !== 'undefined' && anbieterlogin !== null){
anbieterlogin.addClassName("active");
var anbieterloginInnerHeight = anbieterloginInner.getHeight();
if(anbieterlogin.hasClassName("active")){
anbieterloginInner.setStyle({height:anbieterloginInnerHeight+'px'});
aloginactive=true;
} else {
anbieterloginInner.setStyle({height:'0px'});
}
anbieterlogin.onclick = function() {
if(typeof soforthilfeClick !== 'undefined' && soforthilfeClick !== null){
if(soforthilfeClick.hasClassName("active")){
soforthilfeClick.removeClassName("active");
var fx = new S2.FX.Morph(soforthilfeSlider, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
shilfeactive = false;
}
}
anbieterlogin.removeClassName("active");
if(aloginactive){
var fx = new S2.FX.Morph(anbieterloginInner, {
style: 'height:0px;',
duration: 0.3
});
fx.play();
anbieterlogin.removeClassName("active");
aloginactive = false;
} else {
var fx = new S2.FX.Morph(anbieterloginInner, {
style: 'height:'+anbieterloginInnerHeight+'px;',
duration: 0.3
});
fx.play();
anbieterlogin.addClassName("active");
aloginactive = true;
}
};
}
$$('.loginbox').each(function(element) {
element.observe('click', openLogin);
})
function openLogin(){
var fx = new S2.FX.Morph(slider, {
style: 'height:'+sliderheight+'px;',
duration: 0.3
});
fx.play();
ulMenuactive = false;
menuClick.removeClassName("active");
ulMenu.style.height = "0";
controller.addClassName("active");
slideractive = true;
var fx = new S2.FX.Morph(anbieterloginInner, {
style: 'height:0px;',
duration: 0
});
fx.play();
anbieterlogin.removeClassName("active");
aloginactive = false;
var fx = new S2.FX.Morph(soforthilfeSlider, {
style: 'height:'+soforthilfeSliderHeight+'px;',
duration: 0.3
});
fx.play();
soforthilfeClick.addClassName("active");
shilfeactive = true;
}
}
// -----------------------------------------------------------------------------------
function focusLabels() {
if (!document.getElementsByTagName) return false;
var labels = document.getElementsByTagName("label");
if (labels.length < 0) return false;
for (var i=0; i<labels.length; i++) {
if (!labels[i].getAttribute("for")) continue;
labels[i].onclick = function() {
var id = this.getAttribute("for");
if (!document.getElementById(id)) return false;
var element = document.getElementById(id);
element.focus();
}
}
}
/**
* Add this script to document that use <input autofocus type="text" />
* or <input type="text" placeholder="username" /> and it'll plug support for browser
* without these attributes
* modified version of http://gist.github.com/330318
*/
function extendInputs() {
if (!document.getElementsByTagName) return false;
var i = document.createElement('input'), inputs = $$('input');
if (inputs.length < 0) return false;
if (!('placeholder' in i)) {
// placeholder fix
inputs.each(function (el) {
// note - we're using el instead of this across the board because it compresses better
var lastValue = el.value, placeholder = el.getAttribute('placeholder');
if(placeholder) {
if(lastValue != '' && lastValue != null) {return false;}
el.addClassName('placeholder');
var focus = function () {
if (el.value == placeholder) {
el.value = '';
el.removeClassName('placeholder');
}
};
var blur = function () {
if (el.value == '') {
el.value = placeholder;
el.addClassName('placeholder');
}
};
Event.observe(el,'focus', focus);
Event.observe(el,'blur', blur);
// remove the placeholder if the page is reload or the form is submitted
Event.observe(el.form,'submit', function () { focus.call(el); });
Event.observe(window, 'unload', function () { focus.call(el); });
// set the default state
if (el.value == '') {
blur.call(el);
}
}
});
}
if (!('autofocus' in i)) {
// auto focus
inputs.each(function (el) {
if (el.getAttribute('autofocus') != null) {
el.focus();
return false; // "there can only be one"
}
});
}
}
// -----------------------------------------------------------------------------------
function lightviewcolor() {
}
// -----------------------------------------------------------------------------------
function checkCheckbox(id) {
var labelid = document.getElementById("l"+id);
if ($(id).readAttribute('checked') == "checked") {
//writeAttribute($(id), 'checked', 'unchecked');
$("l"+id).removeClassName('checked');
}
else {
//writeAttribute($(id), 'checked', 'checked');
$("l"+id).addClassName('checked');
}
}
function tinyOnChangeHandler(inst){
var htmlstr = inst.getBody().innerHTML;
/*console.log(htmlstr);
var htmlstr2 = htmlstr.replace("\"", encodeURI("'"));
console.log(htmlstr2);*/
//var htmlstr2 = htmlstr.replace("ü", encodeURI("&uuml;"));
//htmlstr2 = htmlstr.replace("Ü", encodeURI("&Uuml;"));
document.getElementById("beschreibung").innerHTML = encodeURI(htmlstr);
document.getElementById("beschreibung_hidden").value = encodeURI(htmlstr);
}
function tinyOnSubmitHandler(){
var htmlstr = document.getElementById("beschreibung_ifr").getBody().innerHTML;
document.getElementById("beschreibung").innerHTML = encodeURI(htmlstr);
document.getElementById("beschreibung_hidden").value = encodeURI(htmlstr);
}
// -----------------------------------------------------------------------------------
function disableAnalytics(){
optoutactive=getCookie("disablega");
if(optoutactive && optoutactive != "false"){
$('gaoptout').hide();
}
else{
$('gaoptin').hide();
}
$('gaoptout').observe('click', function(){
document.cookie = "disablega=true;path=/;expires=Thu, 31 Dec 2099 23:59:59 UTC";
$('gaoptout').hide();
$('gaoptin').show();
});
$('gaoptin').observe('click', function(){
document.cookie = "disablega=false;path=/;expires=Thu, 01 Jan 1970 00:00:01 GMT";
$('gaoptin').hide();
$('gaoptout').show();
});
}
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function observeGeo(){
document.addEventListener('keydown', function(event) {
if (event.which === 13) {
activeel=document.activeElement;
if(activeel.id=="address" || activeel.id == "city"){
event.preventDefault();
console.log('keydown');
showAddress(document.freiwilligform.address.value+', '+document.freiwilligform.city.value);
}
}
if (event.which === 9) {
activeel=document.activeElement;
if(activeel.id == "address"){
showAddress(document.freiwilligform.address.value+', '+document.freiwilligform.city.value);
}
}
});
}
function autoResize() {
var offset = 0;
if (window.parent.frames.length > 0) {
var height = document.body.offsetHeight + offset;
if (window.parent.postMessage) {
window.parent.postMessage(height, "*");
}
}
}
// -----------------------------------------------------------------------------------
var echonet = function () {
function loadJS(url) {
if(url) {
var ds = document.createElement('script');
ds.type = 'text/javascript';
ds.async = true;
ds.src = url;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ds, s);
}
}
function loadCSS(url) {
if(url) {
var ds = document.createElement('link');
ds.type = 'text/css';
ds.media = 'all';
ds.rel ="stylesheet";
ds.href = url;
var s = document.getElementsByTagName('link')[0];
s.parentNode.insertBefore(ds, s);
}
}
var notloaded = true;
function onLoad() {
if(notloaded) {
notloaded = false;
/*			var lnk = $('content').select('a[class~=lightview], area[class~=lightview]');
if(lnk.length > 0) {
//				loadJS('/assets/js/?f=effects.js%2Clightview-config.js%2Clightview-2.7.1.js');
}		*/
//			if ($('print')) { $('print').show(); }
if($('slideshow') != undefined) {
loadJS('/assets/js/?f=jquery-1.10.2.js%2Cjquery.cycle2.min.js%2Cslideshow.js');
}
if($('userlang') != undefined) {
loadJS('/assets/js/?f=chosen.proto.min.js%2Cselectarray.js');
loadCSS('/assets/style/?f=chosen.css');
}
if($('request-timeslots') != undefined) {
loadJS('/assets/js/?f=scriptaculous-js-1.9.0.min.js%2Cdatepicker.js,jquery-1.10.2.js,tabnav.js');
loadCSS('/assets/style/?f=datepicker.css');
}
if($('tabnav') != undefined) {
//loadJS('/assets/js/?f=jquery-1.10.2.js,tabnav.js');
}
//checkboxen für gemeinden
if($('userort') != undefined) {
loadJS('/assets/js/?f=jquery-1.10.2.js,userort.js');
}
Prototype.a11y.prepareBuffer();
Prototype.a11y.fixFocus();
extendInputs();
focusLabels();
JSTarget.init();
new clickVisible({
container: 'content',
selection: 'a.click',
containerclass : 'cc',
activeclass: 'active',
inactiveclass: 'inactive',
marginbottom: '0 0 0 0',
survillance: false,
focuslinks: false
});
slideExampleInit();
if($("beschreibung") != undefined){
tinymce.init({
selector: 'textarea#beschreibung',
language: 'de_AT',
height: 200,
menubar: false,
plugins: "paste lists link",
invalid_elements: "form, script",
/*paste_text_sticky: true,
paste_text_sticky_default: true,
paste_as_text: true,*/
block_formats: 'Absatz=p;Überschrift 2=h2;Überschrift 3=h3;Überschrift 4=h4;Überschrift 5=h5;Überschrift 6=h6',
paste_word_valid_elements: "b,strong,i,em,h2,h3,h4,h5,h6,ul,ol,br",
paste_retain_style_properties: "all",
toolbar: 'formatselect | bold italic color backcolor  | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat',
setup: function (ed) {
ed.on("change", function () {
tinyOnChangeHandler(ed);
})
}
});
document.getElementById("beschreibung_hidden").value = encodeURI(document.getElementById("beschreibung_hidden").value);
}
if($("gaoptout")){
disableAnalytics();
}
if($("geoort")){
observeGeo();
}
autoResize();
setInterval(autoResize,500);
}
}
document.observe("dom:loaded", function() {
onLoad();
});
Event.observe(window, 'load', function() {
onLoad();
});
document.observe("resize", function() {
autoResize();
});
Event.observe(window, 'resize', function() {
autoResize();
});
return{
loadJS:loadJS,
loadCSS:loadCSS,
init:onLoad
};
}();
// -----------------------------------------------------------------------------------
//
//	search
//	by Sindre Wimberger - wimberger@echonet.at
//	27.10.2009
//
// -----------------------------------------------------------------------------------
//var Iformmail = Class.create ({
var Iformmail = {
tagstat: true,
tagupdate: false,
closestat: true,
howtostat: true,
options: {
form: 'formmail',
container: 'result',
debug: false
},
initialize: function(options,json) {
this.json = json;
this.options  = Object.extend(Object.extend({ },this.options), options || {});
this._debug(this.options);
//		this.container = $(this.options.container);
//		this._addARIALive(this.container,'all','true','assertive');
//		this._addARIARole(this.container,'application');
this.form = $(this.options.form);
this._addARIALive(this.form,'all','true','assertive');
if($('aufwand')) {
this._createSlider($('aufwand'));
}
//		new selectCarousel({
//			selectid : 'jahreskreis',
//			onChange: Iformmail._submit.bind(this)
//		});
//		this._createSlider($('gruppenalter'));
this._checkMask();
this._checkRMask();
//		this._createLayoutControl();
//this._createClose();
//this._createHowTo();
this.tagupdate = true;
//		this._createTagClose();
this._createLoader();
//		this._initForm(this.form);
//		this._observeDetailLinks();
},
_addARIALive: function(el,rel,ato,liv) {
if(!el) return false;
if(rel) { el.setAttribute('aria-relevant',rel);	}
if(ato) { el.setAttribute('aria-atomic',ato);	}
if(liv) { el.setAttribute('aria-live',liv);	}
},
_checkMask: function() {
this.tagchecks = this.form.select('input[type=checkbox]');
this.tagchecks.each(function(check, index) {
if(check.getAttribute('id')) {
check.label = this._checkLabel(check.getAttribute('id'),check);
//				check.nrcontainer = check.label.appendChild(new Element('span'));
check.nrcontainer = check.label.firstDescendant();
check.observe('click', function(ev){
var el = ev.findElement();
if (el.checked) {
el.label.removeClassName('unchecked');
el.label.addClassName('checked');
} else {
el.label.removeClassName('checked');
el.label.addClassName('unchecked');
}
//					this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}
}.bind(this));
},
_checkLabel: function (id,checkbox) {
var label = this.form.select('.formmail_check li label[for='+id+']')[0];
label.box = checkbox;
if (checkbox.checked) {
label.addClassName('checked');
} else {
label.addClassName('unchecked');
}
label.observe('mouseenter', this._checkFocus.bindAsEventListener(this)).observe('mouseleave', this._checkBlur.bindAsEventListener(this));
return label;
},
_checkRLabel: function (id,radio) {
var label = this.form.select('.formmail_radio li label[for='+id+']')[0];
label.box = radio;
if (radio.checked) {
label.addClassName('selected');
} else {
label.addClassName('unselected');
}
label.observe('mouseenter', this._checkFocus.bindAsEventListener(this)).observe('mouseleave', this._checkBlur.bindAsEventListener(this));
return label;
},
_checkRMask: function() {
this.radios = this.form.select('input[type=radio]');
this.radios.each(function(radio, index) {
radio.label = this._checkRLabel(radio.getAttribute('id'),radio);
radio.observe('click', function(ev){
//				var el = ev.findElement();
this._checkRadio();
//				this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}.bind(this));
this._checkRadio();
},
_checkRadio: function(form) {
this.radios.each(function(radio, index) {
if (radio.checked) {
radio.label.removeClassName('unselected').addClassName('selected');
//this.container.className = '';
//this.container.addClassName(radio.value);
} else {
radio.label.removeClassName('selected').addClassName('unselected');
}
}.bind(this));
},
_checkFocus: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var input = el;
//			var label = el.label;
//			label.addClassName('focus');
//		} else if(el.tagName == 'LABEL') {
//			var input = el.input;
if(el) {
el.addClassName('focus');
}
//		}
},
_checkBlur: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var label = el.label;
//			label.removeClassName('focus');
//		} else if(el.tagName == 'LABEL') {
if(el) {
el.removeClassName('focus');
}
//		}
},
_createLoader: function() {
this._debug('_createLoader');
this.loader = new Element('div', {'id':'loader'});
this.loader.setStyle({
opacity:0.5,
backgroundColor:'#ffffff',
position:'absolute',
left:'0',
top:'0',
height:'100%',
width:'100%',
display:'none',
zIndex:'1000'
});
this.loadmsg = new Element('div', {'id':'loadmsg'});
this.loadmsg.setStyle({
position:'absolute',
left:'0',
top:'40%',
width:'100%',
margin:'0',
textAlign:'center',
display:'none',
zIndex:'1001',
fontSize:'1.5em'
});
this.form.insert({'bottom':this.loader});
this.form.insert({'bottom':this.loadmsg});
},
_debug: function(msg) {
if(this.options.debug) {
console.info(msg);
}
},
_error: function(txt,ex) {
if(this.options.debug) {
console.info(txt);
console.info(ex);
}
}
}
document.observe("dom:loaded", function() {
//	Event.observe(window, 'load', function() {
if($('formmail')){
Iformmail.initialize();
}
});
/* gMap
*	@author: sindre wimberger // wimberger@echonet.at
* @version: 0.6.1 - 2011-03-22
* @changelog:
*  v 0.1 - bei intialisierung wird ein Container ID übergeben. Wenn diese im HTML gefunden wird, ladet die google maps in dieses Element.
*          wenn ein HTML Element mit der ID "googleplaner" gefunden wird, lädt ein Routenplaner in dieses.
*  v 0.2 - options werden bei der initialisierung angegeben
*  v 0.3 - GKeyboard Tastatursteuerung der google maps
*  v 0.4 - Anfahrtsplanfunktion neu geschrieben, accessible refresh und fokus auf Anfahrtsbeschreibung
*  v 0.5 - Umstellung auf google maps API 3
*  v 0.5.1 - Bugfixing, only one infoWindow
*  v 0.5.2 - Bugfixing route options, prototypw.a11y compability
*  v 0.5.3 - Bugfixing Directions/ Route Language, geolocation usability enhancements
*  v 0.5.4 - New Static Google Map API, changed default language of route to english, english route translation added
*  v 0.6 - gMapLoader extended - handles multiple depencies and executes callback functions accordingly
geoLocation added - browser geolocation function (removed from Directions)
gCoder added - observes form and gets lat/lon form a input address via google geocoder, including geoLocation on startup
*  v 0.6.1 - automatic selection of https protocol, added some missing google map api options
* @depencies: prototype
* @usage:
#Javascript
gMap.initialize();
#HTML - Möglicher statischer HTML Code, karte wird auch ohne Javascript angezeigt
<div id="googlemap">
<a href="http://maps.google.com/maps?f=q&amp;output=html&amp;q=48.199278+16.343366&amp;hl=de" title="Google Maps" class="noextern">
<img src="http://maps.google.com/maps/api/staticmap?language=de&amp;center=48.199278,16.343366&amp;markers=icon:http%3A%2F%2Fechonet.at%2Fassets%2Fcontent%2Ficon-googlemaps.png|48.199278,16.343366&amp;zoom=15&amp;size=480x400&amp;maptype=roadmap&amp;sensor=false" alt="Lageplan echonet communication GmbH, Schottenfeldgasse 24, 1070 Wien" width="480" height="400" />
</a>
</div>
#CSS
.gmap {height:400px;margin:1.23em 0;width:100%;}
.gmap img {vertical-align:bottom;}
.gmap span.note {display: none;}
.gmap button {background: transparent;border-style: solid;border-width: 0;cursor: pointer;height: 100%;left: -2px;margin: 2px;overflow: hidden;padding: 2px;position: absolute;text-indent: -100em;top: -2px;width: 100%;}
.gmap a:link, .gmap a:visited, .gmap a:focus, .gmap a:hover, .gmap a:active {background-image:none !important;padding-left:0 !important;}
.gmap a:focus, .gmap a:hover, .gmap a:active, .gmap button:focus, gmap button:hover, .gmap button:active {background: transparent;outline: 2px dashed; }
.gmapInfoWindow {height:65px;}
*/
gMapLoader = function(){
var ifunc = [];
var lang;
var script;
var init = false;
var loaded = false;
function check(func){
if(loaded) {
func();
}  else {
ifunc.push(func);
if(!init) {
init = true;
load();
}
}
}
function load(){
lang = document.getElementsByTagName('HTML')[0].getAttribute('lang');
script = document.createElement("script");
script.type = "text/javascript";
script.src = ('https:' == document.location.protocol ? 'https://maps-api-ssl.google.com/maps/api/js?v=3&' : 'http://maps.google.com/maps/api/js?') + 'sensor=false&key=AIzaSyAuc1u7Di181VL3whgXxULWBLGfRpCecNk&callback=gMapLoader.init&locale='+lang+'&language='+lang;
script.setAttribute("id", "googlemaploader");
document.body.appendChild(script);
}
function funcInit(){
loaded = true;
ifunc.each(function(func){
func();
});
}
return{
check:check,
init:funcInit
}
}();
var gMap = {
options: {
id : 'googlemap',
cssclass : 'gmap',
icons: {
base: {
imagepath : "/assets/content/icon_pin.png",
// Defines an image to be used as the icon or shadow for a Marker. 'origin' and 'size' are used to select a segment of a sprite image and 'anchor' overrides the position of the anchor point from its default bottom middle position.
//				shadowpath : "/assets/content/icon-googlemaps.png",
size : [20, 31],
//				shadowSize : [34, 39], //
origin : [0, 0],
windowanchor: [10,31]
}
},
markers: [
//			{lat:48.199278,lng:16.343366,title:'echonet',info:'<strong>echonet communication GmbH</strong><br />Schottenfeldgasse 24 <br />1070 Wien'}
//			,{lat:48.299278,lng:16.443366,title:'echonet',info:'<strong>echonet communication GmbH</strong><br />Schottenfeldgasse 24 <br />1070 Wien',iconset:'base'}
],
route:false, // false, true oder nummer welchen markers - beginnend mit null
fixzoom : false, // false oder true - erzwingt unter 'zoom' angegeben wert auch bei automatischer Ausschnittwahl mehrere Marker
center: true,
zoom: 12,
map: {
backgroundColor: '#ffffff',
disableDoubleClickZoom: false,
keyboardShortcuts: true,
draggable: true,
mapTypeControl: true,
mapTypeControlOptions: {
style: 'DEFAULT'
// DEFAULT | DROPDOWN_MENU | HORIZONTAL_BAR
//				,position: 'TOP_RIGHT'
// http://code.google.com/apis/maps/documentation/javascript/reference.html#ControlPosition
},
mapTypeId: 'ROADMAP',
// HYBRID | ROADMAP | SATELLITE | TERRAIN http://code.google.com/apis/maps/documentation/javascript/reference.html#MapTypeId
zoomControl: true,
zoomControlOptions : {
style: 'DEFAULT'
// ANDROID | DEFAULT | SMALL | ZOOM_PAN http://code.google.com/apis/maps/documentation/javascript/reference.html#NavigationControlStyle
//				,position: 'TOP_LEFT'
// http://code.google.com/apis/maps/documentation/javascript/reference.html#ControlPosition
},
scaleControl : true,
scaleControlOptions: {
//				position: 'BOTTOM_LEFT'
// http://code.google.com/apis/maps/documentation/javascript/reference.html#ControlPosition
},
streetViewControl: false,
streetViewControlOptions: {
//				position: 'TOP_LEFT'
// http://code.google.com/apis/maps/documentation/javascript/reference.html#StreetViewControlOptions
},
rotateControl: false,
rotateControlOptions: {
//				position:
// http://code.google.com/apis/maps/documentation/javascript/reference.html#RotateControlOptions
},
panControl: false,
panControlOptions: {
//				position:
// http://code.google.com/apis/maps/documentation/javascript/reference.html#PanControlOptions
},
overviewMapControl: false,
overviewMapControlOptions: {
opened: false // boolean
// http://code.google.com/apis/maps/documentation/javascript/reference.html#OverviewMapControlOptions
},
scrollwheel : true,
center: [48.199278,16.343366],
zoom: 14,
//maxZoom: 16,
minZoom: 10
}
},
initialize: function(options) {
this.options  = Object.extend(this.options, options || {});
this.container = $(this.options.id);
if(!this.container) { return false; }
this.mop = this.options.map;
this.mop.center = this.options.center;
this.mop.zoom = this.options.zoom;
gMapLoader.check(gMap.create.bind(this));
},
create: function() {
//		window.onunload=GUnload();
//   window.onunload=google.maps.Unload;
var opt = this.options;
this.mop.mapTypeId = google.maps.MapTypeId[this.mop.mapTypeId];
this.mop.mapTypeControlOptions.style = this.mop.mapTypeControlOptions.style ? google.maps.MapTypeControlStyle[this.mop.mapTypeControlOptions.style] : google.maps.MapTypeControlStyle.DEFAULT;
this.mop.mapTypeControlOptions.position = this.mop.mapTypeControlOptions.position ? google.maps.ControlPosition[this.mop.mapTypeControlOptions.position] : google.maps.ControlPosition.TOP_RIGHT;
this.mop.zoomControlOptions.style = this.mop.zoomControlOptions.style ? google.maps.ZoomControlStyle[this.mop.zoomControlOptions.style] : google.maps.ZoomControlStyle.DEFAULT;
this.mop.zoomControlOptions.position = this.mop.zoomControlOptions.position ? google.maps.ControlPosition[this.mop.zoomControlOptions.position] : google.maps.ControlPosition.TOP_LEFT;
this.mop.scaleControlOptions.position = this.mop.scaleControlOptions.position ? google.maps.ControlPosition[this.mop.scaleControlOptions.position] : google.maps.ControlPosition.BOTTOM_LEFT;
this.mop.streetViewControlOptions.position = this.mop.streetViewControlOptions.position ? google.maps.ControlPosition[this.mop.streetViewControlOptions.position] : google.maps.ControlPosition.TOP_LEFT;
this.mop.rotateControlOptions.position = this.mop.rotateControlOptions.position ? google.maps.ControlPosition[this.mop.rotateControlOptions.position] : google.maps.ControlPosition.TOP_LEFT;
this.mop.panControlOptions.position = this.mop.panControlOptions.position ? google.maps.ControlPosition[this.mop.panControlOptions.position] : google.maps.ControlPosition.TOP_LEFT;
this.container.addClassName(opt.cssclass);
/*		if(opt.GKeyboard && opt.GSmallMapControl) {
new google.maps.KeyboardHandler(this.map);
GEvent.addDomListener( this.map, 'load', function() {
setTimeout( 'gMap.GKeyboardPatch( gMap.map );', 3000 );
}.bind(this));
};
*/
this.setupUserIcons();
/*if(!this.mop.center && opt.markers.length > 5) {
this.bounds = new google.maps.fitLatLngBounds();
} else if(!this.mop.center && opt.markers.length < 5) {
this.bounds = new google.maps.fitLatLngBounds();
}*/
this.bounds = new google.maps.LatLngBounds();
if(!this.mop.center) {
this.mop.center = [];
this.mop.center[0] = opt.markers[0].lat;
this.mop.center[1] = opt.markers[0].lng;
}
this.mop.center  = new google.maps.LatLng(this.mop.center[0],this.mop.center[1]);
this.map = new google.maps.Map(this.container, this.mop);
var centermarker = new google.maps.Marker({ position:this.mop.center,map:this.map });
this.bounds.extend(this.mop.center);
this.setupUserMarkers();
if(typeof this.bounds !='undefined') {
if (opt.fixzoom && this.mop.zoom) {
this.map.panToBounds(this.bounds);
this.map.setZoom(this.mop.zoom);
} else {
this.map.fitBounds(this.bounds);
}
}
//this.map.setZoom(zoomOverride);
if(opt.route === false) {
opt.route = -1;
}
if(opt.route >= 0) {
if(opt.route === true) {
opt.route = 0;
}
if(opt.markers[opt.route].lat && opt.markers[opt.route].lng) {
GDirection.initialize(this.map,this.container,opt.markers[opt.route].lat,opt.markers[opt.route].lng);
}
}
},
setupUserIcons: function() {
var icons = this.options.icons;
Object.keys(icons).each(function(it){
var vars = icons[it];
var size = vars.size ? new google.maps.Size(vars.size[0],vars.size[1]) : null ;
var origin = vars.origin ? new google.maps.Point(vars.origin[0],vars.origin[1]) : null ;
var windowanchor = vars.windowanchor ? new google.maps.Point(vars.windowanchor[0],vars.windowanchor[1]) : null ;
vars.icon = new google.maps.MarkerImage(vars.imagepath,size,origin,windowanchor);
if(vars.shadowpath) {
var shadowSize = vars.shadowSize ? new google.maps.Size(vars.shadowSize[0],vars.shadowSize[1]) : null ;
vars.shadow = new google.maps.MarkerImage(vars.shadowpath,shadowSize,origin,windowanchor);
}
// Shapes define the clickable region of the icon.
// The type defines an HTML &lt;area&gt; element 'poly' which
// traces out a polygon as a series of X,Y points. The final
// coordinate closes the poly by connecting to the first
// coordinate.
/*					iconvar.shape = {
coord: [1, 1, 1, 20, 18, 20, 18 , 1],
type: 'poly'
};				*/
});
},
setupUserMarkers: function() {
this.infowindow = new google.maps.InfoWindow();	// nur ein Infowindow, damit immer nur eines offen.
this.options.markers.each(function(mark, index){
mark.position = new google.maps.LatLng(mark.lat,mark.lng);
//			if(typeof mark.icon == 'undefined') { mark.iconset = 'base';	}
if(typeof this.bounds != 'undefined' && index < 5) { this.bounds.extend(mark.position); }
this.createMarker(mark);
}.bind(this));
},
createMarker: function(mark) {
var map = this.map;
mark.map = map;
var icon = this.options.icons[mark.iconset];
if(typeof icon != 'undefined') {
mark  = Object.extend(mark, icon || {});
}
var marker = new google.maps.Marker(mark);
marker.infowindow = this.infowindow;
/*	var infowindow = new google.maps.InfoWindow({
content: '<div class="gmapInfoWindow">'+mark.info+'</div>'
});	*/
google.maps.event.addListener(marker, 'click', function(ev) {
this.infowindow.close();
this.infowindow.setContent('<div class="gmapInfoWindow">'+this.info+'</div>');
this.infowindow.open(this.map,this);
});
},
GKeyboardPatch: function( map ) {
var button, divs = map.getContainer().getElementsByTagName( 'div' );
var i = 0;
while ( divs[i] ) {
if ( divs[i].getAttribute( 'log' ) || ( divs[i].getAttribute( 'title' ) && divs[i].getAttribute( 'title' ) != '' ) ) {
button = document.createElement( 'button' );
button.setAttribute( 'value', divs[i].getAttribute( 'title' ) );
divs[i].appendChild( button );
if ( divs[i].getAttribute( 'log' ) ) { // only control buttons
// override the IE opacity filter that Google annoyingly sets
divs[i].style.filter = '';
// should really set to 'transparent'
divs[i].style.background = 'url( http://www.google.com/intl/en_ALL/mapfiles/transparent.png )';
}
}
i++;
}
}
};
var GDirection = {
geoinfo: false,
geoaccuracy: 500000, //in metern
idform: 'GDform',
idirection : 'GDirection',
idgeo : 'GDform-geoinfo',
lang : {
de : {
locale : 'de_AT',
legend : 'Anfahrtsplan',
info : 'Geben Sie Ihren momentanen Standort ein und erstellen Sie Ihren persönlichen Anfahrtsplan.',
placeholder : 'Strasse Hausnummer, PLZ Ort',
button : 'Anfahrtsplan erstellen',
error: 'Fehler. Bitte überprüfen Sie Ihre Angaben.',
NOT_FOUND: 'Die angegebene Adresse konnte nicht gefunden werden. Entweder sie ist relativ neu, oder fehlerhaft.'
},
en : {
locale : 'en_US',
legend : 'Route planner',
info : 'Please fill in your address to calculate route.',
placeholder : 'street, zip-code, city',
button : 'go',
error: 'An unknown error occurred.',
NOT_FOUND: 'No corresponding geographic location could be found for one of the specified addresses. GDirection may be due to the fact that the address is relatively new, or it may be incorrect.'
},
it : {
locale : 'it_IT',
legend : 'descrizione f di un viaggio',
info : 'Inserisci il tuo indirizzo per calcolare il percorso.',
placeholder : 'Indirizzo, CAP, Città',
button : 'crea',
error: 'AÈ verificato un errore. Si prega di verificare i vostri dati.',
NOT_FOUND: 'indirizzo specificato non è stato trovato.'
}
},
template : new Template('<form id="#{id}"><fieldset><legend>#{legend}</legend><label class="full" id="GDform-info" for="GDform-standpunkt">#{info}</label><input id="GDform-standpunkt" name="standpunkt" aria-required="true" placeholder="#{placeholder}" /><input type="submit" class="button" value="+ #{button}" /></fieldset></form><div id="#{idirect}" class="c"></div>'),
errortemplate: new Template('<div class="error">#{msg}</div>'),
initialize: function(map,mapcontainer,tolat,tolng) {
this.dService = new google.maps.DirectionsService();
this.dDisplay = new google.maps.DirectionsRenderer();
this.dDisplay.setMap(map);
this.to = tolat+','+tolng;
var lang = document.getElementsByTagName('HTML')[0].getAttribute('lang');
if(lang == "de") {
this.txt = this.lang.de;
} else if (lang == "it") {
this.txt = this.lang.it;
}	else {
this.txt = this.lang.en;
}
if(!$(this.idform)) {
var form = this.template.evaluate({id:this.idform, legend:this.txt.legend, info:this.txt.info, placeholder:this.txt.placeholder, button:this.txt.button, idirect:this.idirection});
mapcontainer.insert({after : form});
if(typeof Prototype.a11y != 'undefined') {
Prototype.a11y.updateBuffer();
}
}
this.direction = $(this.idirection);
this.dDisplay.setPanel(this.direction);
this.form = $(this.idform);
this.form.observe('submit', function(ev) {
ev.preventDefault();
this.setDirections($F('GDform-standpunkt'));
}.bind(this));
this.direction.setTabIndex('-1');
this.geoLocation();
},
geoLocation: function() {
geoLocation.get("address",this.geoaccuracy,GDirection.setLocation.bind(this));
},
setLocation: function(georesult) {
var input = $('GDform-standpunkt');
this.geoinfo = $(this.idgeo);
if(georesult == false) {
extendInputs();
}else if(georesult == 'noaccuracy') { //no accuracy
extendInputs();
if(!this.geoinfo) {
var error = geoLocation.tplerror(this.idgeo,'GDform-standpunkt');
input.insert({before:error});
}
this.geoinfo = $(this.idgeo);
this.geoinfo.setFocus();
} else { //success
input.value = georesult;
if(!this.geoinfo) {
var info = geoLocation.tplinfo(this.idgeo,'GDform-standpunkt');
input.insert({before:info});
}
this.geoinfo = $(this.idgeo);
this.geoinfo.setFocus();
}
},
setDirections: function(fromAddress) {
var request = {
origin:fromAddress,
destination:this.to,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
this.dService.route(request, function(response, status) {
this.removeGeoinfo();
if (status == google.maps.DirectionsStatus.OK) {
this.dDisplay.setDirections(response);
this.requestLoad();
} else {
this.requestErrors(status);
}
}.bind(this));
},
removeGeoinfo: function (){
if(this.geoinfo) {
this.geoinfo.remove();
this.geoinfo = false;
}
},
requestErrors: function (status){
if(this.txt[status]) {
this.error(this.txt[status]);
} else {
this.error(this.txt.error);
}
},
requestLoad: function (){
this.direction.removeClassName('error-msg').update('');
this.direction.setFocus();
},
error: function (msg) {
this.direction.addClassName('error-msg').update(this.errortemplate.evaluate({msg:msg}));
this.direction.setFocus();
}
}
geoLocation = function(){
var lang = 'de';
var langtxt = {
de : {
geoinfo : 'Der von Ihrem Browser übergebene Standort wurde für den Anfahrtsplan vorausgefüllt.',
geoinfoError : 'Der von Ihrem Browser übergebene Standort ist für einen Anfahrtsplan zu ungenau.'
},
en : {
geoinfo : 'The position your browser identified has been prefilled.',
geoinfoError : 'The position your browser identified is imprecise.'
},
it : {
geoinfo : 'Il sito dato è stato riempito.',
geoinfoError : 'La posizione del tuo browser identificati è imprecisa.'
}
};
var txt;
var result;
var geotemplate = new Template('<label id="#{id}" class="full info" for="#{fori}">#{geoinfo}</label>');
function setLanguage(){
lang = document.getElementsByTagName('HTML')[0].getAttribute('lang');
if(lang == "de") {
txt = langtxt.de;
} else if (lang == "it") {
txt = langtxt.it;
}	else {
txt = langtxt.en;
}
}
function getTemplateError(id,input){
return geotemplate.evaluate({id:id,fori:input,geoinfo:txt.geoinfoError});
}
function getTemplateInfo(id,input){
return geotemplate.evaluate({id:id,fori:input,geoinfo:txt.geoinfo});
}
function getLocation(format,accuracy,func){
setLanguage();
if (navigator.geolocation) { // browser unterstützt Geolocation
var geocoder = new google.maps.Geocoder();
if (geocoder) {
navigator.geolocation.getCurrentPosition(
function (position) { // position konnte ermittelt werden (zustimmung durch user)
if(parseFloat(position.coords.accuracy) > accuracy) { // Positionbestimmung nicht genau genug
func("noaccuracy");
} else {
var lat = parseFloat(position.coords.latitude);
var lng = parseFloat(position.coords.longitude);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'latLng': latlng, 'language':lang}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) { // zur Position konnte Adresse zugeordnet werden
if(format === "address") { // es wird nur die Adresse zurückgegeben
if (results[0]) {
func(results[0].formatted_address);
}	else { // Keine Adresse im JSON
func(false);
}
} else { // es wird das komplette JSON zurückgegeben
func(results);
}
} else { // zur Position konnte keine Adresse zugeordnet werden
func("noaccuracy");
}
});
}
},
function () { // positon konnte nicht ermittelt werden (technisch und/oder ablehnung durch user)
func(false);
},
{timeout: 5000}
);
}
}	else { // browser unterstützt keine Geolocation
func(false);
}
}
return{
get:getLocation,
tplerror: getTemplateError,
tplinfo: getTemplateInfo
}
}();
var gCoder = {
options: {
form : 'location',
address : 'address',
lat: 'lat',
lon:'lon',
geoaccuracy: 500000 //in metern
},
idgeo: "garage-geoinfo",
initialize: function(options) {
this.options  = Object.extend(this.options, options || {});
this.form = $(this.options.form);
this.address = $(this.options.address);
this.lat = $(this.options.lat);
this.lon = $(this.options.lon);
if(!this.form || !this.address || !this.lat || !this.lon) { return false; }
gMapLoader.check(gCoder.create.bind(this));
},
create: function() {
this.form.observe('submit', function(ev){
if (ev) {
Event.stop(ev);
}
this.addressvalue = $F(this.options.address);
this.placeholder = this.address.readAttribute('placeholder');
if(this.addressvalue != null && this.addressvalue != '' && this.addressvalue != this.placeholder) {
this.form.disable();
if(!this.geocoder) {
this.geocoder = new google.maps.Geocoder();
}
this.geocoder.geocode( { 'address': this.addressvalue}, function(results, status) {
this.form.enable();
if (status == google.maps.GeocoderStatus.OK) {
this.lat.setValue(results[0].geometry.location.lat());
this.lon.setValue(results[0].geometry.location.lng());
this.form.submit();
} else {
alert("Adresse konnte nicht gefunden werden. Bitte überprüfen Sie diese.");
this.address.focus();
}
}.bind(this));
} else {
this.form.submit();
}
}.bind(this));
this.getLocation();
},
getLocation: function() {
geoLocation.get("address",this.options.geoaccuracy,gCoder.setLocation.bind(this));
},
setLocation: function(georesult) {
var geoinfo = $(this.idgeo);
if(georesult == false) {
extendInputs();
}else if(georesult == 'noaccuracy') { //no accuracy
extendInputs();
if(!geoinfo) {
var error = geoLocation.tplerror(this.idgeo,this.options.address);
this.form.insert({before:error});
}
geoinfo = $(this.idgeo);
geoinfo.setFocus();
} else { //success
this.address.value = georesult;
if(!geoinfo) {
var info = geoLocation.tplinfo(this.idgeo,this.options.address);
this.form.insert({before:info});
}
geoinfo = $(this.idgeo);
geoinfo.setFocus();
}
}
}
// -----------------------------------------------------------------------------------
//
//	search
//	by Sindre Wimberger - wimberger@echonet.at
//	27.10.2009
//
// -----------------------------------------------------------------------------------
//var Iregister = Class.create ({
var Iregister = {
tagstat: true,
tagupdate: false,
closestat: true,
howtostat: true,
options: {
form: 'register',
container: 'result',
debug: false
},
initialize: function(options,json) {
this.json = json;
this.options  = Object.extend(Object.extend({ },this.options), options || {});
this._debug(this.options);
//		this.container = $(this.options.container);
//		this._addARIALive(this.container,'all','true','assertive');
//		this._addARIARole(this.container,'application');
this.form = $(this.options.form);
this._addARIALive(this.form,'all','true','assertive');
if($('aufwand')) {
this._createSlider($('aufwand'));
}
//		new selectCarousel({
//			selectid : 'jahreskreis',
//			onChange: Iregister._submit.bind(this)
//		});
//		this._createSlider($('gruppenalter'));
this._checkMask();
//this._checkRMask();
//		this._createLayoutControl();
//this._createClose();
//this._createHowTo();
this.tagupdate = true;
//		this._createTagClose();
this._createLoader();
//		this._initForm(this.form);
//		this._observeDetailLinks();
},
_addARIALive: function(el,rel,ato,liv) {
if(!el) return false;
if(rel) { el.setAttribute('aria-relevant',rel);	}
if(ato) { el.setAttribute('aria-atomic',ato);	}
if(liv) { el.setAttribute('aria-live',liv);	}
},
_checkMask: function() {
this.tagchecks = this.form.select('input[type=checkbox]');
this.tagchecks.each(function(check, index) {
if(check.getAttribute('id')) {
check.label = this._checkLabel(check.getAttribute('id'),check);
//				check.nrcontainer = check.label.appendChild(new Element('span'));
check.nrcontainer = check.label.firstDescendant();
check.observe('click', function(ev){
var el = ev.findElement();
if (el.checked) {
el.label.removeClassName('unchecked');
el.label.addClassName('checked');
} else {
el.label.removeClassName('checked');
el.label.addClassName('unchecked');
}
//					this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}
}.bind(this));
},
_checkLabel: function (id,checkbox) {
var label = this.form.select('.type li label[for='+id+']')[0];
label.box = checkbox;
if (checkbox.checked) {
label.addClassName('checked');
} else {
label.addClassName('unchecked');
}
label.observe('mouseenter', this._checkFocus.bindAsEventListener(this)).observe('mouseleave', this._checkBlur.bindAsEventListener(this));
return label;
},
_checkRLabel: function (id,radio) {
var label = this.form.select('.formmail_radio li label[for='+id+']')[0];
label.box = radio;
if (radio.checked) {
label.addClassName('selected');
} else {
label.addClassName('unselected');
}
label.observe('mouseenter', this._checkFocus.bindAsEventListener(this)).observe('mouseleave', this._checkBlur.bindAsEventListener(this));
return label;
},
_checkRMask: function() {
this.radios = this.form.select('input[type=radio]');
this.radios.each(function(radio, index) {
radio.label = this._checkRLabel(radio.getAttribute('id'),radio);
radio.observe('click', function(ev){
//				var el = ev.findElement();
this._checkRadio();
//				this._submit();
}.bind(this)).observe('focus', this._checkFocus.bindAsEventListener(this)).observe('blur', this._checkBlur.bindAsEventListener(this)).addClassName('checkboxhidden');
}.bind(this));
this._checkRadio();
},
_checkRadio: function(form) {
this.radios.each(function(radio, index) {
if (radio.checked) {
radio.label.removeClassName('unselected').addClassName('selected');
//this.container.className = '';
//this.container.addClassName(radio.value);
} else {
radio.label.removeClassName('selected').addClassName('unselected');
}
}.bind(this));
},
_checkFocus: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var input = el;
//			var label = el.label;
//			label.addClassName('focus');
//		} else if(el.tagName == 'LABEL') {
//			var input = el.input;
if(el) {
el.addClassName('focus');
}
//		}
},
_checkBlur: function (ev) {
var el = ev.findElement('label');
//		if(el.tagName == 'INPUT') {
//			var label = el.label;
//			label.removeClassName('focus');
//		} else if(el.tagName == 'LABEL') {
if(el) {
el.removeClassName('focus');
}
//		}
},
_createLoader: function() {
this._debug('_createLoader');
this.loader = new Element('div', {'id':'loader'});
this.loader.setStyle({
opacity:0.5,
backgroundColor:'#ffffff',
position:'absolute',
left:'0',
top:'0',
height:'100%',
width:'100%',
display:'none',
zIndex:'1000'
});
this.loadmsg = new Element('div', {'id':'loadmsg'});
this.loadmsg.setStyle({
position:'absolute',
left:'0',
top:'40%',
width:'100%',
margin:'0',
textAlign:'center',
display:'none',
zIndex:'1001',
fontSize:'1.5em'
});
this.form.insert({'bottom':this.loader});
this.form.insert({'bottom':this.loadmsg});
},
_debug: function(msg) {
if(this.options.debug) {
console.info(msg);
}
},
_error: function(txt,ex) {
if(this.options.debug) {
console.info(txt);
console.info(ex);
}
}
}
document.observe("dom:loaded", function() {
//	Event.observe(window, 'load', function() {
if($('register')){
Iregister.initialize();
}
});