var MooTools={version:"1.2.4",build:"0d9113241a90b9cd5643b926795852a2026710d4"};var Native=function(k){k=k||{};var a=k.name;var i=k.legacy;var b=k.protect;var c=k.implement;var h=k.generics;var f=k.initialize;var g=k.afterImplement||function(){};var d=f||i;h=h!==false;d.constructor=Native;d.$family={name:"native"};if(i&&f){d.prototype=i.prototype;}d.prototype.constructor=d;if(a){var e=a.toLowerCase();d.prototype.$family={name:e};Native.typize(d,e);}var j=function(n,l,o,m){if(!b||m||!n.prototype[l]){n.prototype[l]=o;}if(h){Native.genericize(n,l,b);}g.call(n,l,o);return n;};d.alias=function(n,l,p){if(typeof n=="string"){var o=this.prototype[n];if((n=o)){return j(this,l,n,p);}}for(var m in n){this.alias(m,n[m],l);}return this;};d.implement=function(m,l,o){if(typeof m=="string"){return j(this,m,l,o);}for(var n in m){j(this,n,m[n],l);}return this;};if(c){d.implement(c);}return d;};Native.genericize=function(b,c,a){if((!a||!b[c])&&typeof b.prototype[c]=="function"){b[c]=function(){var d=Array.prototype.slice.call(arguments);return b.prototype[c].apply(d.shift(),d);};}};Native.implement=function(d,c){for(var b=0,a=d.length;b<a;b++){d[b].implement(c);}};Native.typize=function(a,b){if(!a.type){a.type=function(c){return($type(c)===b);};}};(function(){var a={Array:Array,Date:Date,Function:Function,Number:Number,RegExp:RegExp,String:String};for(var h in a){new Native({name:h,initialize:a[h],protect:true});}var d={"boolean":Boolean,"native":Native,object:Object};for(var c in d){Native.typize(d[c],c);}var f={Array:["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],String:["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var e in f){for(var b=f[e].length;b--;){Native.genericize(a[e],f[e][b],true);}}})();var Hash=new Native({name:"Hash",initialize:function(a){if($type(a)=="hash"){a=$unlink(a.getClean());}for(var b in a){this[b]=a[b];}return this;}});Hash.implement({forEach:function(b,c){for(var a in this){if(this.hasOwnProperty(a)){b.call(c,this[a],a,this);}}},getClean:function(){var b={};for(var a in this){if(this.hasOwnProperty(a)){b[a]=this[a];}}return b;},getLength:function(){var b=0;for(var a in this){if(this.hasOwnProperty(a)){b++;}}return b;}});Hash.alias("forEach","each");Array.implement({forEach:function(c,d){for(var b=0,a=this.length;b<a;b++){c.call(d,this[b],b,this);}}});Array.alias("forEach","each");function $A(b){if(b.item){var a=b.length,c=new Array(a);while(a--){c[a]=b[a];}return c;}return Array.prototype.slice.call(b);}function $arguments(a){return function(){return arguments[a];};}function $chk(a){return!!(a||a===0);}function $clear(a){clearTimeout(a);clearInterval(a);return null;}function $defined(a){return(a!=undefined);}function $each(c,b,d){var a=$type(c);((a=="arguments"||a=="collection"||a=="array")?Array:Hash).each(c,b,d);}function $empty(){}function $extend(c,a){for(var b in(a||{})){c[b]=a[b];}return c;}function $H(a){return new Hash(a);}function $lambda(a){return($type(a)=="function")?a:function(){return a;};}function $merge(){var a=Array.slice(arguments);a.unshift({});return $mixin.apply(null,a);}function $mixin(e){for(var d=1,a=arguments.length;d<a;d++){var b=arguments[d];if($type(b)!="object"){continue;}for(var c in b){var g=b[c],f=e[c];e[c]=(f&&$type(g)=="object"&&$type(f)=="object")?$mixin(f,g):$unlink(g);}}return e;}function $pick(){for(var b=0,a=arguments.length;b<a;b++){if(arguments[b]!=undefined){return arguments[b];}}return null;}function $random(b,a){return Math.floor(Math.random()*(a-b+1)+b);}function $splat(b){var a=$type(b);return(a)?((a!="array"&&a!="arguments")?[b]:b):[];}var $time=Date.now||function(){return+new Date;};function $try(){for(var b=0,a=arguments.length;b<a;b++){try{return arguments[b]();}catch(c){}}return null;}function $type(a){if(a==undefined){return false;}if(a.$family){return(a.$family.name=="number"&&!isFinite(a))?false:a.$family.name;}if(a.nodeName){switch(a.nodeType){case 1:return"element";case 3:return(/\S/).test(a.nodeValue)?"textnode":"whitespace";}}else{if(typeof a.length=="number"){if(a.callee){return"arguments";}else{if(a.item){return"collection";}}}}return typeof a;}function $unlink(c){var b;switch($type(c)){case"object":b={};for(var e in c){b[e]=$unlink(c[e]);}break;case"hash":b=new Hash(c);break;case"array":b=[];for(var d=0,a=c.length;d<a;d++){b[d]=$unlink(c[d]);}break;default:return c;}return b;}var Browser=$merge({Engine:{name:"unknown",version:0},Platform:{name:(window.orientation!=undefined)?"ipod":(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector)},Plugins:{},Engines:{presto:function(){return(!window.opera)?false:((arguments.callee.caller)?960:((document.getElementsByClassName)?950:925));},trident:function(){return(!window.ActiveXObject)?false:((window.XMLHttpRequest)?((document.querySelectorAll)?6:5):4);},webkit:function(){return(navigator.taintEnabled)?false:((Browser.Features.xpath)?((Browser.Features.query)?525:420):419);},gecko:function(){return(!document.getBoxObjectFor&&window.mozInnerScreenX==null)?false:((document.getElementsByClassName)?19:18);}}},Browser||{});Browser.Platform[Browser.Platform.name]=true;Browser.detect=function(){for(var b in this.Engines){var a=this.Engines[b]();if(a){this.Engine={name:b,version:a};this.Engine[b]=this.Engine[b+a]=true;break;}}return{name:b,version:a};};Browser.detect();Browser.Request=function(){return $try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject("MSXML2.XMLHTTP");},function(){return new ActiveXObject("Microsoft.XMLHTTP");});};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var a=($try(function(){return navigator.plugins["Shockwave Flash"].description;},function(){return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");})||"0 r0").match(/\d+/g);return{version:parseInt(a[0]||0+"."+a[1],10)||0,build:parseInt(a[2],10)||0};})();function $exec(b){if(!b){return b;}if(window.execScript){window.execScript(b);}else{var a=document.createElement("script");a.setAttribute("type","text/javascript");a[(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerText":"text"]=b;document.head.appendChild(a);document.head.removeChild(a);}return b;}Native.UID=1;var $uid=(Browser.Engine.trident)?function(a){return(a.uid||(a.uid=[Native.UID++]))[0];}:function(a){return a.uid||(a.uid=Native.UID++);};var Window=new Native({name:"Window",legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(a){$uid(a);if(!a.Element){a.Element=$empty;if(Browser.Engine.webkit){a.document.createElement("iframe");}a.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{};}a.document.window=a;return $extend(a,Window.Prototype);},afterImplement:function(b,a){window[b]=Window.Prototype[b]=a;}});Window.Prototype={$family:{name:"window"}};new Window(window);var Document=new Native({name:"Document",legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(a){$uid(a);a.head=a.getElementsByTagName("head")[0];a.html=a.getElementsByTagName("html")[0];if(Browser.Engine.trident&&Browser.Engine.version<=4){$try(function(){a.execCommand("BackgroundImageCache",false,true);});}if(Browser.Engine.trident){a.window.attachEvent("onunload",function(){a.window.detachEvent("onunload",arguments.callee);a.head=a.html=a.window=null;});}return $extend(a,Document.Prototype);},afterImplement:function(b,a){document[b]=Document.Prototype[b]=a;}});Document.Prototype={$family:{name:"document"}};new Document(document);Array.implement({every:function(c,d){for(var b=0,a=this.length;b<a;b++){if(!c.call(d,this[b],b,this)){return false;}}return true;},filter:function(d,e){var c=[];for(var b=0,a=this.length;b<a;b++){if(d.call(e,this[b],b,this)){c.push(this[b]);}}return c;},clean:function(){return this.filter($defined);},indexOf:function(c,d){var a=this.length;for(var b=(d<0)?Math.max(0,a+d):d||0;b<a;b++){if(this[b]===c){return b;}}return-1;},map:function(d,e){var c=[];for(var b=0,a=this.length;b<a;b++){c[b]=d.call(e,this[b],b,this);}return c;},some:function(c,d){for(var b=0,a=this.length;b<a;b++){if(c.call(d,this[b],b,this)){return true;}}return false;},associate:function(c){var d={},b=Math.min(this.length,c.length);for(var a=0;a<b;a++){d[c[a]]=this[a];}return d;},link:function(c){var a={};for(var e=0,b=this.length;e<b;e++){for(var d in c){if(c[d](this[e])){a[d]=this[e];delete c[d];break;}}}return a;},contains:function(a,b){return this.indexOf(a,b)!=-1;},extend:function(c){for(var b=0,a=c.length;b<a;b++){this.push(c[b]);}return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null;},include:function(a){if(!this.contains(a)){this.push(a);}return this;},combine:function(c){for(var b=0,a=c.length;b<a;b++){this.include(c[b]);}return this;},erase:function(b){for(var a=this.length;a--;a){if(this[a]===b){this.splice(a,1);}}return this;},empty:function(){this.length=0;return this;},flatten:function(){var d=[];for(var b=0,a=this.length;b<a;b++){var c=$type(this[b]);if(!c){continue;}d=d.concat((c=="array"||c=="collection"||c=="arguments")?Array.flatten(this[b]):this[b]);}return d;},hexToRgb:function(b){if(this.length!=3){return null;}var a=this.map(function(c){if(c.length==1){c+=c;}return c.toInt(16);});return(b)?a:"rgb("+a+")";},rgbToHex:function(d){if(this.length<3){return null;}if(this.length==4&&this[3]==0&&!d){return"transparent";}var b=[];for(var a=0;a<3;a++){var c=(this[a]-0).toString(16);b.push((c.length==1)?"0"+c:c);}return(d)?b:"#"+b.join("");}});Function.implement({extend:function(a){for(var b in a){this[b]=a[b];}return this;},create:function(b){var a=this;b=b||{};return function(d){var c=b.arguments;c=(c!=undefined)?$splat(c):Array.slice(arguments,(b.event)?1:0);if(b.event){c=[d||window.event].extend(c);}var e=function(){return a.apply(b.bind||null,c);};if(b.delay){return setTimeout(e,b.delay);}if(b.periodical){return setInterval(e,b.periodical);}if(b.attempt){return $try(e);}return e();};},run:function(a,b){return this.apply(b,$splat(a));},pass:function(a,b){return this.create({bind:b,arguments:a});},bind:function(b,a){return this.create({bind:b,arguments:a});},bindWithEvent:function(b,a){return this.create({bind:b,arguments:a,event:true});},attempt:function(a,b){return this.create({bind:b,arguments:a,attempt:true})();},delay:function(b,c,a){return this.create({bind:c,arguments:a,delay:b})();},periodical:function(c,b,a){return this.create({bind:b,arguments:a,periodical:c})();}});Number.implement({limit:function(b,a){return Math.min(a,Math.max(b,this));},round:function(a){a=Math.pow(10,a||0);return Math.round(this*a)/a;},times:function(b,c){for(var a=0;a<this;a++){b.call(c,a,this);}},toFloat:function(){return parseFloat(this);},toInt:function(a){return parseInt(this,a||10);}});Number.alias("times","each");(function(b){var a={};b.each(function(c){if(!Number[c]){a[c]=function(){return Math[c].apply(null,[this].concat($A(arguments)));};}});Number.implement(a);})(["abs","acos","asin","atan","atan2","ceil","cos","exp","floor","log","max","min","pow","sin","sqrt","tan"]);String.implement({test:function(a,b){return((typeof a=="string")?new RegExp(a,b):a).test(this);},contains:function(a,b){return(b)?(b+this+b).indexOf(b+a+b)>-1:this.indexOf(a)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,"");},clean:function(){return this.replace(/\s+/g," ").trim();},camelCase:function(){return this.replace(/-\D/g,function(a){return a.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(a){return("-"+a.charAt(0).toLowerCase());});},capitalize:function(){return this.replace(/\b[a-z]/g,function(a){return a.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1");},toInt:function(a){return parseInt(this,a||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(b){var a=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(a)?a.slice(1).hexToRgb(b):null;},rgbToHex:function(b){var a=this.match(/\d{1,3}/g);return(a)?a.rgbToHex(b):null;},stripScripts:function(b){var a="";var c=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){a+=arguments[1]+"\n";return"";});if(b===true){$exec(a);}else{if($type(b)=="function"){b(a,c);}}return c;},substitute:function(a,b){return this.replace(b||(/\\?\{([^{}]+)\}/g),function(d,c){if(d.charAt(0)=="\\"){return d.slice(1);}return(a[c]!=undefined)?a[c]:"";});}});Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(b){for(var a in this){if(this.hasOwnProperty(a)&&this[a]===b){return a;}}return null;},hasValue:function(a){return(Hash.keyOf(this,a)!==null);},extend:function(a){Hash.each(a||{},function(c,b){Hash.set(this,b,c);},this);return this;},combine:function(a){Hash.each(a||{},function(c,b){Hash.include(this,b,c);},this);return this;},erase:function(a){if(this.hasOwnProperty(a)){delete this[a];}return this;},get:function(a){return(this.hasOwnProperty(a))?this[a]:null;},set:function(a,b){if(!this[a]||this.hasOwnProperty(a)){this[a]=b;}return this;},empty:function(){Hash.each(this,function(b,a){delete this[a];},this);return this;},include:function(a,b){if(this[a]==undefined){this[a]=b;}return this;},map:function(b,c){var a=new Hash;Hash.each(this,function(e,d){a.set(d,b.call(c,e,d,this));},this);return a;},filter:function(b,c){var a=new Hash;Hash.each(this,function(e,d){if(b.call(c,e,d,this)){a.set(d,e);}},this);return a;},every:function(b,c){for(var a in this){if(this.hasOwnProperty(a)&&!b.call(c,this[a],a)){return false;}}return true;},some:function(b,c){for(var a in this){if(this.hasOwnProperty(a)&&b.call(c,this[a],a)){return true;}}return false;},getKeys:function(){var a=[];Hash.each(this,function(c,b){a.push(b);});return a;},getValues:function(){var a=[];Hash.each(this,function(b){a.push(b);});return a;},toQueryString:function(a){var b=[];Hash.each(this,function(f,e){if(a){e=a+"["+e+"]";}var d;switch($type(f)){case"object":d=Hash.toQueryString(f,e);break;case"array":var c={};f.each(function(h,g){c[g]=h;});d=Hash.toQueryString(c,e);break;default:d=e+"="+encodeURIComponent(f);}if(f!=undefined){b.push(d);}});return b.join("&");}});Hash.alias({keyOf:"indexOf",hasValue:"contains"});var Event=new Native({name:"Event",initialize:function(a,f){f=f||window;var k=f.document;a=a||f.event;if(a.$extended){return a;}this.$extended=true;var j=a.type;var g=a.target||a.srcElement;while(g&&g.nodeType==3){g=g.parentNode;}if(j.test(/key/)){var b=a.which||a.keyCode;var m=Event.Keys.keyOf(b);if(j=="keydown"){var d=b-111;if(d>0&&d<13){m="f"+d;}}m=m||String.fromCharCode(b).toLowerCase();}else{if(j.match(/(click|mouse|menu)/i)){k=(!k.compatMode||k.compatMode=="CSS1Compat")?k.html:k.body;var i={x:a.pageX||a.clientX+k.scrollLeft,y:a.pageY||a.clientY+k.scrollTop};var c={x:(a.pageX)?a.pageX-f.pageXOffset:a.clientX,y:(a.pageY)?a.pageY-f.pageYOffset:a.clientY};if(j.match(/DOMMouseScroll|mousewheel/)){var h=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}var e=(a.which==3)||(a.button==2);var l=null;if(j.match(/over|out/)){switch(j){case"mouseover":l=a.relatedTarget||a.fromElement;break;case"mouseout":l=a.relatedTarget||a.toElement;}if(!(function(){while(l&&l.nodeType==3){l=l.parentNode;}return true;}).create({attempt:Browser.Engine.gecko})()){l=false;}}}}return $extend(this,{event:a,type:j,page:i,client:c,rightClick:e,wheel:h,relatedTarget:l,target:g,code:b,key:m,shift:a.shiftKey,control:a.ctrlKey,alt:a.altKey,meta:a.metaKey});}});Event.Keys=new Hash({enter:13,up:38,down:40,left:37,right:39,esc:27,space:32,backspace:8,tab:9,"delete":46});Event.implement({stop:function(){return this.stopPropagation().preventDefault();},stopPropagation:function(){if(this.event.stopPropagation){this.event.stopPropagation();}else{this.event.cancelBubble=true;}return this;},preventDefault:function(){if(this.event.preventDefault){this.event.preventDefault();}else{this.event.returnValue=false;}return this;}});function Class(b){if(b instanceof Function){b={initialize:b};}var a=function(){Object.reset(this);if(a._prototyping){return this;}this._current=$empty;var c=(this.initialize)?this.initialize.apply(this,arguments):this;delete this._current;delete this.caller;return c;}.extend(this);a.implement(b);a.constructor=Class;a.prototype.constructor=a;return a;}Function.prototype.protect=function(){this._protected=true;return this;};Object.reset=function(a,c){if(c==null){for(var e in a){Object.reset(a,e);}return a;}delete a[c];switch($type(a[c])){case"object":var d=function(){};d.prototype=a[c];var b=new d;a[c]=Object.reset(b);break;case"array":a[c]=$unlink(a[c]);break;}return a;};new Native({name:"Class",initialize:Class}).extend({instantiate:function(b){b._prototyping=true;var a=new b;delete b._prototyping;return a;},wrap:function(a,b,c){if(c._origin){c=c._origin;}return function(){if(c._protected&&this._current==null){throw new Error('The method "'+b+'" cannot be called.');}var e=this.caller,f=this._current;this.caller=f;this._current=arguments.callee;var d=c.apply(this,arguments);this._current=f;this.caller=e;return d;}.extend({_owner:a,_origin:c,_name:b});}});Class.implement({implement:function(a,d){if($type(a)=="object"){for(var e in a){this.implement(e,a[e]);}return this;}var f=Class.Mutators[a];if(f){d=f.call(this,d);if(d==null){return this;}}var c=this.prototype;switch($type(d)){case"function":if(d._hidden){return this;}c[a]=Class.wrap(this,a,d);break;case"object":var b=c[a];if($type(b)=="object"){$mixin(b,d);}else{c[a]=$unlink(d);}break;case"array":c[a]=$unlink(d);break;default:c[a]=d;}return this;}});Class.Mutators={Extends:function(a){this.parent=a;this.prototype=Class.instantiate(a);this.implement("parent",function(){var b=this.caller._name,c=this.caller._owner.parent.prototype[b];if(!c){throw new Error('The method "'+b+'" has no parent.');}return c.apply(this,arguments);}.protect());},Implements:function(a){$splat(a).each(function(b){if(b instanceof Function){b=Class.instantiate(b);}this.implement(b);},this);}};var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();return this;}});var Events=new Class({$events:{},addEvent:function(c,b,a){c=Events.removeOn(c);if(b!=$empty){this.$events[c]=this.$events[c]||[];this.$events[c].include(b);if(a){b.internal=true;}}return this;},addEvents:function(a){for(var b in a){this.addEvent(b,a[b]);}return this;},fireEvent:function(c,b,a){c=Events.removeOn(c);if(!this.$events||!this.$events[c]){return this;}this.$events[c].each(function(d){d.create({bind:this,delay:a,"arguments":b})();},this);return this;},removeEvent:function(b,a){b=Events.removeOn(b);if(!this.$events[b]){return this;}if(!a.internal){this.$events[b].erase(a);}return this;},removeEvents:function(c){var d;if($type(c)=="object"){for(d in c){this.removeEvent(d,c[d]);}return this;}if(c){c=Events.removeOn(c);}for(d in this.$events){if(c&&c!=d){continue;}var b=this.$events[d];for(var a=b.length;a--;a){this.removeEvent(d,b[a]);}}return this;}});Events.removeOn=function(a){return a.replace(/^on([A-Z])/,function(b,c){return c.toLowerCase();});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent){return this;}for(var a in this.options){if($type(this.options[a])!="function"||!(/^on[A-Z]/).test(a)){continue;}this.addEvent(a,this.options[a]);delete this.options[a];}return this;}});var Element=new Native({name:"Element",legacy:window.Element,initialize:function(a,b){var c=Element.Constructors.get(a);if(c){return c(b);}if(typeof a=="string"){return document.newElement(a,b);}return document.id(a).set(b);},afterImplement:function(a,b){Element.Prototype[a]=b;if(Array[a]){return;}Elements.implement(a,function(){var c=[],g=true;for(var e=0,d=this.length;e<d;e++){var f=this[e][a].apply(this[e],arguments);c.push(f);if(g){g=($type(f)=="element");}}return(g)?new Elements(c):c;});}});Element.Prototype={$family:{name:"element"}};Element.Constructors=new Hash;var IFrame=new Native({name:"IFrame",generics:false,initialize:function(){var f=Array.link(arguments,{properties:Object.type,iframe:$defined});var d=f.properties||{};var c=document.id(f.iframe);var e=d.onload||$empty;delete d.onload;d.id=d.name=$pick(d.id,d.name,c?(c.id||c.name):"IFrame_"+$time());c=new Element(c||"iframe",d);var b=function(){var g=$try(function(){return c.contentWindow.location.host;});if(!g||g==window.location.host){var h=new Window(c.contentWindow);new Document(c.contentWindow.document);$extend(h.Element.prototype,Element.Prototype);}e.call(c.contentWindow,c.contentWindow.document);};var a=$try(function(){return c.contentWindow;});((a&&a.document.body)||window.frames[d.id])?b():c.addListener("load",b);return c;}});var Elements=new Native({initialize:function(f,b){b=$extend({ddup:true,cash:true},b);f=f||[];if(b.ddup||b.cash){var g={},e=[];for(var c=0,a=f.length;c<a;c++){var d=document.id(f[c],!b.cash);if(b.ddup){if(g[d.uid]){continue;}g[d.uid]=true;}if(d){e.push(d);}}f=e;}return(b.cash)?$extend(f,this):f;}});Elements.implement({filter:function(a,b){if(!a){return this;}return new Elements(Array.filter(this,(typeof a=="string")?function(c){return c.match(a);}:a,b));}});Document.implement({newElement:function(a,b){if(Browser.Engine.trident&&b){["name","type","checked"].each(function(c){if(!b[c]){return;}a+=" "+c+'="'+b[c]+'"';if(c!="checked"){delete b[c];}});a="<"+a+">";}return document.id(this.createElement(a)).set(b);},newTextNode:function(a){return this.createTextNode(a);},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var a={string:function(d,c,b){d=b.getElementById(d);return(d)?a.element(d,c):null;},element:function(b,e){$uid(b);if(!e&&!b.$family&&!(/^object|embed$/i).test(b.tagName)){var c=Element.Prototype;for(var d in c){b[d]=c[d];}}return b;},object:function(c,d,b){if(c.toElement){return a.element(c.toElement(b),d);}return null;}};a.textnode=a.whitespace=a.window=a.document=$arguments(0);return function(c,e,d){if(c&&c.$family&&c.uid){return c;}var b=$type(c);return(a[b])?a[b](c,e,d||document):null;};})()});if(window.$==null){Window.implement({$:function(a,b){return document.id(a,b,this.document);}});}Window.implement({$$:function(a){if(arguments.length==1&&typeof a=="string"){return this.document.getElements(a);}var f=[];var c=Array.flatten(arguments);for(var d=0,b=c.length;d<b;d++){var e=c[d];switch($type(e)){case"element":f.push(e);break;case"string":f.extend(this.document.getElements(e,true));}}return new Elements(f);},getDocument:function(){return this.document;},getWindow:function(){return this;}});Native.implement([Element,Document],{getElement:function(a,b){return document.id(this.getElements(a,true)[0]||null,b);},getElements:function(a,d){a=a.split(",");var c=[];var b=(a.length>1);a.each(function(e){var f=this.getElementsByTagName(e.trim());(b)?c.extend(f):c=f;},this);return new Elements(c,{ddup:b,cash:!d});}});(function(){var h={},f={};var i={input:"checked",option:"selected",textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerHTML":"value"};var c=function(l){return(f[l]||(f[l]={}));};var g=function(n,l){if(!n){return;}var m=n.uid;if(Browser.Engine.trident){if(n.clearAttributes){var q=l&&n.cloneNode(false);n.clearAttributes();if(q){n.mergeAttributes(q);}}else{if(n.removeEvents){n.removeEvents();}}if((/object/i).test(n.tagName)){for(var o in n){if(typeof n[o]=="function"){n[o]=$empty;}}Element.dispose(n);}}if(!m){return;}h[m]=f[m]=null;};var d=function(){Hash.each(h,g);if(Browser.Engine.trident){$A(document.getElementsByTagName("object")).each(g);}if(window.CollectGarbage){CollectGarbage();}h=f=null;};var j=function(n,l,s,m,p,r){var o=n[s||l];var q=[];while(o){if(o.nodeType==1&&(!m||Element.match(o,m))){if(!p){return document.id(o,r);}q.push(o);}o=o[l];}return(p)?new Elements(q,{ddup:false,cash:!r}):null;};var e={html:"innerHTML","class":"className","for":"htmlFor",defaultValue:"defaultValue",text:(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?"innerText":"textContent"};var b=["compact","nowrap","ismap","declare","noshade","checked","disabled","readonly","multiple","selected","noresize","defer"];var k=["value","type","defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];b=b.associate(b);Hash.extend(e,b);Hash.extend(e,k.associate(k.map(String.toLowerCase)));var a={before:function(m,l){if(l.parentNode){l.parentNode.insertBefore(m,l);}},after:function(m,l){if(!l.parentNode){return;}var n=l.nextSibling;(n)?l.parentNode.insertBefore(m,n):l.parentNode.appendChild(m);},bottom:function(m,l){l.appendChild(m);},top:function(m,l){var n=l.firstChild;(n)?l.insertBefore(m,n):l.appendChild(m);}};a.inside=a.bottom;Hash.each(a,function(l,m){m=m.capitalize();Element.implement("inject"+m,function(n){l(this,document.id(n,true));return this;});Element.implement("grab"+m,function(n){l(document.id(n,true),this);return this;});});Element.implement({set:function(o,m){switch($type(o)){case"object":for(var n in o){this.set(n,o[n]);}break;case"string":var l=Element.Properties.get(o);(l&&l.set)?l.set.apply(this,Array.slice(arguments,1)):this.setProperty(o,m);}return this;},get:function(m){var l=Element.Properties.get(m);return(l&&l.get)?l.get.apply(this,Array.slice(arguments,1)):this.getProperty(m);},erase:function(m){var l=Element.Properties.get(m);(l&&l.erase)?l.erase.apply(this):this.removeProperty(m);return this;},setProperty:function(m,n){var l=e[m];if(n==undefined){return this.removeProperty(m);}if(l&&b[m]){n=!!n;}(l)?this[l]=n:this.setAttribute(m,""+n);return this;},setProperties:function(l){for(var m in l){this.setProperty(m,l[m]);}return this;},getProperty:function(m){var l=e[m];var n=(l)?this[l]:this.getAttribute(m,2);return(b[m])?!!n:(l)?n:n||null;},getProperties:function(){var l=$A(arguments);return l.map(this.getProperty,this).associate(l);},removeProperty:function(m){var l=e[m];(l)?this[l]=(l&&b[m])?false:"":this.removeAttribute(m);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},hasClass:function(l){return this.className.contains(l," ");},addClass:function(l){if(!this.hasClass(l)){this.className=(this.className+" "+l).clean();}return this;},removeClass:function(l){this.className=this.className.replace(new RegExp("(^|\\s)"+l+"(?:\\s|$)"),"$1");return this;},toggleClass:function(l){return this.hasClass(l)?this.removeClass(l):this.addClass(l);},adopt:function(){Array.flatten(arguments).each(function(l){l=document.id(l,true);if(l){this.appendChild(l);}},this);return this;},appendText:function(m,l){return this.grab(this.getDocument().newTextNode(m),l);},grab:function(m,l){a[l||"bottom"](document.id(m,true),this);return this;},inject:function(m,l){a[l||"bottom"](this,document.id(m,true));return this;},replaces:function(l){l=document.id(l,true);l.parentNode.replaceChild(this,l);return this;},wraps:function(m,l){m=document.id(m,true);return this.replaces(m).grab(m,l);},getPrevious:function(l,m){return j(this,"previousSibling",null,l,false,m);},getAllPrevious:function(l,m){return j(this,"previousSibling",null,l,true,m);},getNext:function(l,m){return j(this,"nextSibling",null,l,false,m);},getAllNext:function(l,m){return j(this,"nextSibling",null,l,true,m);},getFirst:function(l,m){return j(this,"nextSibling","firstChild",l,false,m);},getLast:function(l,m){return j(this,"previousSibling","lastChild",l,false,m);},getParent:function(l,m){return j(this,"parentNode",null,l,false,m);},getParents:function(l,m){return j(this,"parentNode",null,l,true,m);},getSiblings:function(l,m){return this.getParent().getChildren(l,m).erase(this);},getChildren:function(l,m){return j(this,"nextSibling","firstChild",l,true,m);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(o,n){var m=this.ownerDocument.getElementById(o);if(!m){return null;}for(var l=m.parentNode;l!=this;l=l.parentNode){if(!l){return null;}}return document.id(m,n);},getSelected:function(){return new Elements($A(this.options).filter(function(l){return l.selected;}));},getComputedStyle:function(m){if(this.currentStyle){return this.currentStyle[m.camelCase()];}var l=this.getDocument().defaultView.getComputedStyle(this,null);return(l)?l.getPropertyValue([m.hyphenate()]):null;},toQueryString:function(){var l=[];this.getElements("input, select, textarea",true).each(function(m){if(!m.name||m.disabled||m.type=="submit"||m.type=="reset"||m.type=="file"){return;}var n=(m.tagName.toLowerCase()=="select")?Element.getSelected(m).map(function(o){return o.value;}):((m.type=="radio"||m.type=="checkbox")&&!m.checked)?null:m.value;$splat(n).each(function(o){if(typeof o!="undefined"){l.push(m.name+"="+encodeURIComponent(o));}});});return l.join("&");},clone:function(o,l){o=o!==false;var r=this.cloneNode(o);var n=function(v,u){if(!l){v.removeAttribute("id");}if(Browser.Engine.trident){v.clearAttributes();v.mergeAttributes(u);v.removeAttribute("uid");if(v.options){var w=v.options,s=u.options;for(var t=w.length;t--;){w[t].selected=s[t].selected;}}}var x=i[u.tagName.toLowerCase()];if(x&&u[x]){v[x]=u[x];}};if(o){var p=r.getElementsByTagName("*"),q=this.getElementsByTagName("*");for(var m=p.length;m--;){n(p[m],q[m]);}}n(r,this);return document.id(r);},destroy:function(){Element.empty(this);Element.dispose(this);g(this,true);return null;},empty:function(){$A(this.childNodes).each(function(l){Element.destroy(l);});return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},hasChild:function(l){l=document.id(l,true);if(!l){return false;}if(Browser.Engine.webkit&&Browser.Engine.version<420){return $A(this.getElementsByTagName(l.tagName)).contains(l);}return(this.contains)?(this!=l&&this.contains(l)):!!(this.compareDocumentPosition(l)&16);},match:function(l){return(!l||(l==this)||(Element.get(this,"tag")==l));}});Native.implement([Element,Window,Document],{addListener:function(o,n){if(o=="unload"){var l=n,m=this;n=function(){m.removeListener("unload",n);l();};}else{h[this.uid]=this;}if(this.addEventListener){this.addEventListener(o,n,false);}else{this.attachEvent("on"+o,n);}return this;},removeListener:function(m,l){if(this.removeEventListener){this.removeEventListener(m,l,false);}else{this.detachEvent("on"+m,l);}return this;},retrieve:function(m,l){var o=c(this.uid),n=o[m];if(l!=undefined&&n==undefined){n=o[m]=l;}return $pick(n);},store:function(m,l){var n=c(this.uid);n[m]=l;return this;},eliminate:function(l){var m=c(this.uid);delete m[l];return this;}});window.addListener("unload",d);})();Element.Properties=new Hash;Element.Properties.style={set:function(a){this.style.cssText=a;},get:function(){return this.style.cssText;},erase:function(){this.style.cssText="";}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase();}};Element.Properties.html=(function(){var c=document.createElement("div");var a={table:[1,"<table>","</table>"],select:[1,"<select>","</select>"],tbody:[2,"<table><tbody>","</tbody></table>"],tr:[3,"<table><tbody><tr>","</tr></tbody></table>"]};a.thead=a.tfoot=a.tbody;var b={set:function(){var e=Array.flatten(arguments).join("");var f=Browser.Engine.trident&&a[this.get("tag")];if(f){var g=c;g.innerHTML=f[1]+e+f[2];for(var d=f[0];d--;){g=g.firstChild;}this.empty().adopt(g.childNodes);}else{this.innerHTML=e;}}};b.erase=b.set;return b;})();if(Browser.Engine.webkit&&Browser.Engine.version<420){Element.Properties.text={get:function(){if(this.innerText){return this.innerText;}var a=this.ownerDocument.newElement("div",{html:this.innerHTML}).inject(this.ownerDocument.body);var b=a.innerText;a.destroy();return b;}};}Element.Properties.events={set:function(a){this.addEvents(a);}};Native.implement([Element,Window,Document],{addEvent:function(e,g){var h=this.retrieve("events",{});h[e]=h[e]||{keys:[],values:[]};if(h[e].keys.contains(g)){return this;}h[e].keys.push(g);var f=e,a=Element.Events.get(e),c=g,i=this;if(a){if(a.onAdd){a.onAdd.call(this,g);}if(a.condition){c=function(j){if(a.condition.call(this,j)){return g.call(this,j);}return true;};}f=a.base||f;}var d=function(){return g.call(i);};var b=Element.NativeEvents[f];if(b){if(b==2){d=function(j){j=new Event(j,i.getWindow());if(c.call(i,j)===false){j.stop();}};}this.addListener(f,d);}h[e].values.push(d);return this;},removeEvent:function(c,b){var a=this.retrieve("events");if(!a||!a[c]){return this;}var f=a[c].keys.indexOf(b);if(f==-1){return this;}a[c].keys.splice(f,1);var e=a[c].values.splice(f,1)[0];var d=Element.Events.get(c);if(d){if(d.onRemove){d.onRemove.call(this,b);}c=d.base||c;}return(Element.NativeEvents[c])?this.removeListener(c,e):this;},addEvents:function(a){for(var b in a){this.addEvent(b,a[b]);}return this;},removeEvents:function(a){var c;if($type(a)=="object"){for(c in a){this.removeEvent(c,a[c]);}return this;}var b=this.retrieve("events");if(!b){return this;}if(!a){for(c in b){this.removeEvents(c);}this.eliminate("events");}else{if(b[a]){while(b[a].keys[0]){this.removeEvent(a,b[a].keys[0]);}b[a]=null;}}return this;},fireEvent:function(d,b,a){var c=this.retrieve("events");if(!c||!c[d]){return this;}c[d].keys.each(function(e){e.create({bind:this,delay:a,"arguments":b})();},this);return this;},cloneEvents:function(d,a){d=document.id(d);var c=d.retrieve("events");if(!c){return this;}if(!a){for(var b in c){this.cloneEvents(d,b);}}else{if(c[a]){c[a].keys.each(function(e){this.addEvent(a,e);},this);}}return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};(function(){var a=function(b){var c=b.relatedTarget;if(c==undefined){return true;}if(c===false){return false;}return($type(this)!="document"&&c!=this&&c.prefix!="xul"&&!this.hasChild(c));};Element.Events=new Hash({mouseenter:{base:"mouseover",condition:a},mouseleave:{base:"mouseout",condition:a},mousewheel:{base:(Browser.Engine.gecko)?"DOMMouseScroll":"mousewheel"}});})();Element.Properties.styles={set:function(a){this.setStyles(a);}};Element.Properties.opacity={set:function(a,b){if(!b){if(a==0){if(this.style.visibility!="hidden"){this.style.visibility="hidden";}}else{if(this.style.visibility!="visible"){this.style.visibility="visible";}}}if(!this.currentStyle||!this.currentStyle.hasLayout){this.style.zoom=1;}if(Browser.Engine.trident){this.style.filter=(a==1)?"":"alpha(opacity="+a*100+")";}this.style.opacity=a;this.store("opacity",a);},get:function(){return this.retrieve("opacity",1);}};Element.implement({setOpacity:function(a){return this.set("opacity",a,true);},getOpacity:function(){return this.get("opacity");},setStyle:function(b,a){switch(b){case"opacity":return this.set("opacity",parseFloat(a));case"float":b=(Browser.Engine.trident)?"styleFloat":"cssFloat";}b=b.camelCase();if($type(a)!="string"){var c=(Element.Styles.get(b)||"@").split(" ");a=$splat(a).map(function(e,d){if(!c[d]){return"";}return($type(e)=="number")?c[d].replace("@",Math.round(e)):e;}).join(" ");}else{if(a==String(Number(a))){a=Math.round(a);}}this.style[b]=a;return this;},getStyle:function(g){switch(g){case"opacity":return this.get("opacity");case"float":g=(Browser.Engine.trident)?"styleFloat":"cssFloat";}g=g.camelCase();var a=this.style[g];if(!$chk(a)){a=[];for(var f in Element.ShortStyles){if(g!=f){continue;}for(var e in Element.ShortStyles[f]){a.push(this.getStyle(e));}return a.join(" ");}a=this.getComputedStyle(g);}if(a){a=String(a);var c=a.match(/rgba?\([\d\s,]+\)/);if(c){a=a.replace(c[0],c[0].rgbToHex());}}if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(a,10)))){if(g.test(/^(height|width)$/)){var b=(g=="width")?["left","right"]:["top","bottom"],d=0;b.each(function(h){d+=this.getStyle("border-"+h+"-width").toInt()+this.getStyle("padding-"+h).toInt();},this);return this["offset"+g.capitalize()]-d+"px";}if((Browser.Engine.presto)&&String(a).test("px")){return a;}if(g.test(/(border(.+)Width|margin|padding)/)){return"0px";}}return a;},setStyles:function(b){for(var a in b){this.setStyle(a,b[a]);}return this;},getStyles:function(){var a={};Array.flatten(arguments).each(function(b){a[b]=this.getStyle(b);},this);return a;}});Element.Styles=new Hash({left:"@px",top:"@px",bottom:"@px",right:"@px",width:"@px",height:"@px",maxWidth:"@px",maxHeight:"@px",minWidth:"@px",minHeight:"@px",backgroundColor:"rgb(@, @, @)",backgroundPosition:"@px @px",color:"rgb(@, @, @)",fontSize:"@px",letterSpacing:"@px",lineHeight:"@px",clip:"rect(@px @px @px @px)",margin:"@px @px @px @px",padding:"@px @px @px @px",border:"@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)",borderWidth:"@px @px @px @px",borderStyle:"@ @ @ @",borderColor:"rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)",zIndex:"@",zoom:"@",fontWeight:"@",textIndent:"@px",opacity:"@"});Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};["Top","Right","Bottom","Left"].each(function(g){var f=Element.ShortStyles;var b=Element.Styles;["margin","padding"].each(function(h){var i=h+g;f[h][i]=b[i]="@px";});var e="border"+g;f.border[e]=b[e]="@px @ rgb(@, @, @)";var d=e+"Width",a=e+"Style",c=e+"Color";f[e]={};f.borderWidth[d]=f[e][d]=b[d]="@px";f.borderStyle[a]=f[e][a]=b[a]="@";f.borderColor[c]=f[e][c]=b[c]="rgb(@, @, @)";});(function(){Element.implement({scrollTo:function(h,i){if(b(this)){this.getWindow().scrollTo(h,i);}else{this.scrollLeft=h;this.scrollTop=i;}return this;},getSize:function(){if(b(this)){return this.getWindow().getSize();}return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(b(this)){return this.getWindow().getScrollSize();}return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(b(this)){return this.getWindow().getScroll();}return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var i=this,h={x:0,y:0};while(i&&!b(i)){h.x+=i.scrollLeft;h.y+=i.scrollTop;i=i.parentNode;}return h;},getOffsetParent:function(){var h=this;if(b(h)){return null;}if(!Browser.Engine.trident){return h.offsetParent;}while((h=h.parentNode)&&!b(h)){if(d(h,"position")!="static"){return h;}}return null;},getOffsets:function(){if(this.getBoundingClientRect){var j=this.getBoundingClientRect(),m=document.id(this.getDocument().documentElement),p=m.getScroll(),k=this.getScrolls(),i=this.getScroll(),h=(d(this,"position")=="fixed");return{x:j.left.toInt()+k.x-i.x+((h)?0:p.x)-m.clientLeft,y:j.top.toInt()+k.y-i.y+((h)?0:p.y)-m.clientTop};}var l=this,n={x:0,y:0};if(b(this)){return n;}while(l&&!b(l)){n.x+=l.offsetLeft;n.y+=l.offsetTop;if(Browser.Engine.gecko){if(!f(l)){n.x+=c(l);n.y+=g(l);}var o=l.parentNode;if(o&&d(o,"overflow")!="visible"){n.x+=c(o);n.y+=g(o);}}else{if(l!=this&&Browser.Engine.webkit){n.x+=c(l);n.y+=g(l);}}l=l.offsetParent;}if(Browser.Engine.gecko&&!f(this)){n.x-=c(this);n.y-=g(this);}return n;},getPosition:function(k){if(b(this)){return{x:0,y:0};}var l=this.getOffsets(),i=this.getScrolls();var h={x:l.x-i.x,y:l.y-i.y};var j=(k&&(k=document.id(k)))?k.getPosition():{x:0,y:0};return{x:h.x-j.x,y:h.y-j.y};},getCoordinates:function(j){if(b(this)){return this.getWindow().getCoordinates();}var h=this.getPosition(j),i=this.getSize();var k={left:h.x,top:h.y,width:i.x,height:i.y};k.right=k.left+k.width;k.bottom=k.top+k.height;return k;},computePosition:function(h){return{left:h.x-e(this,"margin-left"),top:h.y-e(this,"margin-top")};},setPosition:function(h){return this.setStyles(this.computePosition(h));}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var i=this.getWindow();return{x:i.innerWidth,y:i.innerHeight};}var h=a(this);return{x:h.clientWidth,y:h.clientHeight};},getScroll:function(){var i=this.getWindow(),h=a(this);return{x:i.pageXOffset||h.scrollLeft,y:i.pageYOffset||h.scrollTop};},getScrollSize:function(){var i=a(this),h=this.getSize();return{x:Math.max(i.scrollWidth,h.x),y:Math.max(i.scrollHeight,h.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var h=this.getSize();return{top:0,left:0,bottom:h.y,right:h.x,height:h.y,width:h.x};}});var d=Element.getComputedStyle;function e(h,i){return d(h,i).toInt()||0;}function f(h){return d(h,"-moz-box-sizing")=="border-box";}function g(h){return e(h,"border-top-width");}function c(h){return e(h,"border-left-width");}function b(h){return(/^(?:body|html)$/i).test(h.tagName);}function a(h){var i=h.getDocument();return(!i.compatMode||i.compatMode=="CSS1Compat")?i.html:i.body;}})();Element.alias("setPosition","position");Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y;},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;},getLeft:function(){return this.getPosition().x;}});Native.implement([Document,Element],{getElements:function(h,g){h=h.split(",");var c,e={};for(var d=0,b=h.length;d<b;d++){var a=h[d],f=Selectors.Utils.search(this,a,e);if(d!=0&&f.item){f=$A(f);}c=(d==0)?f:(c.item)?$A(c).concat(f):c.concat(f);}return new Elements(c,{ddup:(h.length>1),cash:!g});}});Element.implement({match:function(b){if(!b||(b==this)){return true;}var d=Selectors.Utils.parseTagAndID(b);var a=d[0],e=d[1];if(!Selectors.Filters.byID(this,e)||!Selectors.Filters.byTag(this,a)){return false;}var c=Selectors.Utils.parseSelector(b);return(c)?Selectors.Utils.filter(this,c,{}):true;}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)};Selectors.Utils={chk:function(b,c){if(!c){return true;}var a=$uid(b);if(!c[a]){return c[a]=true;}return false;},parseNthArgument:function(h){if(Selectors.Cache.nth[h]){return Selectors.Cache.nth[h];}var e=h.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!e){return false;}var g=parseInt(e[1],10);var d=(g||g===0)?g:1;var f=e[2]||false;var c=parseInt(e[3],10)||0;if(d!=0){c--;while(c<1){c+=d;}while(c>=d){c-=d;}}else{d=c;f="index";}switch(f){case"n":e={a:d,b:c,special:"n"};break;case"odd":e={a:2,b:0,special:"n"};break;case"even":e={a:2,b:1,special:"n"};break;case"first":e={a:0,special:"index"};break;case"last":e={special:"last-child"};break;case"only":e={special:"only-child"};break;default:e={a:(d-1),special:"index"};}return Selectors.Cache.nth[h]=e;},parseSelector:function(e){if(Selectors.Cache.parsed[e]){return Selectors.Cache.parsed[e];}var d,h={classes:[],pseudos:[],attributes:[]};while((d=Selectors.RegExps.combined.exec(e))){var i=d[1],g=d[2],f=d[3],b=d[5],c=d[6],j=d[7];if(i){h.classes.push(i);}else{if(c){var a=Selectors.Pseudo.get(c);if(a){h.pseudos.push({parser:a,argument:j});}else{h.attributes.push({name:c,operator:"=",value:j});}}else{if(g){h.attributes.push({name:g,operator:f,value:b});}}}}if(!h.classes.length){delete h.classes;}if(!h.attributes.length){delete h.attributes;}if(!h.pseudos.length){delete h.pseudos;}if(!h.classes&&!h.attributes&&!h.pseudos){h=null;}return Selectors.Cache.parsed[e]=h;},parseTagAndID:function(b){var a=b.match(Selectors.RegExps.tag);var c=b.match(Selectors.RegExps.id);return[(a)?a[1]:"*",(c)?c[1]:false];},filter:function(f,c,e){var d;if(c.classes){for(d=c.classes.length;d--;d){var g=c.classes[d];if(!Selectors.Filters.byClass(f,g)){return false;}}}if(c.attributes){for(d=c.attributes.length;d--;d){var b=c.attributes[d];if(!Selectors.Filters.byAttribute(f,b.name,b.operator,b.value)){return false;}}}if(c.pseudos){for(d=c.pseudos.length;d--;d){var a=c.pseudos[d];if(!Selectors.Filters.byPseudo(f,a.parser,a.argument,e)){return false;}}}return true;},getByTagAndID:function(b,a,d){if(d){var c=(b.getElementById)?b.getElementById(d,true):Element.getElementById(b,d,true);return(c&&Selectors.Filters.byTag(c,a))?[c]:[];}else{return b.getElementsByTagName(a);}},search:function(o,h,t){var b=[];var c=h.trim().replace(Selectors.RegExps.splitter,function(k,j,i){b.push(j);return":)"+i;}).split(":)");var p,e,A;for(var z=0,v=c.length;z<v;z++){var y=c[z];if(z==0&&Selectors.RegExps.quick.test(y)){p=o.getElementsByTagName(y);continue;}var a=b[z-1];var q=Selectors.Utils.parseTagAndID(y);var B=q[0],r=q[1];if(z==0){p=Selectors.Utils.getByTagAndID(o,B,r);}else{var d={},g=[];for(var x=0,w=p.length;x<w;x++){g=Selectors.Getters[a](g,p[x],B,r,d);}p=g;}var f=Selectors.Utils.parseSelector(y);if(f){e=[];for(var u=0,s=p.length;u<s;u++){A=p[u];if(Selectors.Utils.filter(A,f,t)){e.push(A);}}p=e;}}return p;}};Selectors.Getters={" ":function(h,g,j,a,e){var d=Selectors.Utils.getByTagAndID(g,j,a);for(var c=0,b=d.length;c<b;c++){var f=d[c];if(Selectors.Utils.chk(f,e)){h.push(f);}}return h;},">":function(h,g,j,a,f){var c=Selectors.Utils.getByTagAndID(g,j,a);for(var e=0,d=c.length;e<d;e++){var b=c[e];if(b.parentNode==g&&Selectors.Utils.chk(b,f)){h.push(b);}}return h;},"+":function(c,b,a,e,d){while((b=b.nextSibling)){if(b.nodeType==1){if(Selectors.Utils.chk(b,d)&&Selectors.Filters.byTag(b,a)&&Selectors.Filters.byID(b,e)){c.push(b);}break;}}return c;},"~":function(c,b,a,e,d){while((b=b.nextSibling)){if(b.nodeType==1){if(!Selectors.Utils.chk(b,d)){break;}if(Selectors.Filters.byTag(b,a)&&Selectors.Filters.byID(b,e)){c.push(b);}}}return c;}};Selectors.Filters={byTag:function(b,a){return(a=="*"||(b.tagName&&b.tagName.toLowerCase()==a));},byID:function(a,b){return(!b||(a.id&&a.id==b));},byClass:function(b,a){return(b.className&&b.className.contains&&b.className.contains(a," "));},byPseudo:function(a,d,c,b){return d.call(a,c,b);},byAttribute:function(c,d,b,e){var a=Element.prototype.getProperty.call(c,d);if(!a){return(b=="!=");}if(!b||e==undefined){return true;}switch(b){case"=":return(a==e);case"*=":return(a.contains(e));case"^=":return(a.substr(0,e.length)==e);case"$=":return(a.substr(a.length-e.length)==e);case"!=":return(a!=e);case"~=":return a.contains(e," ");case"|=":return a.contains(e,"-");}return false;}};Selectors.Pseudo=new Hash({checked:function(){return this.checked;},empty:function(){return!(this.innerText||this.textContent||"").length;},not:function(a){return!Element.match(this,a);},contains:function(a){return(this.innerText||this.textContent||"").contains(a);},"first-child":function(){return Selectors.Pseudo.index.call(this,0);},"last-child":function(){var a=this;while((a=a.nextSibling)){if(a.nodeType==1){return false;}}return true;},"only-child":function(){var b=this;while((b=b.previousSibling)){if(b.nodeType==1){return false;}}var a=this;while((a=a.nextSibling)){if(a.nodeType==1){return false;}}return true;},"nth-child":function(g,e){g=(g==undefined)?"n":g;var c=Selectors.Utils.parseNthArgument(g);if(c.special!="n"){return Selectors.Pseudo[c.special].call(this,c.a,e);}var f=0;e.positions=e.positions||{};var d=$uid(this);if(!e.positions[d]){var b=this;while((b=b.previousSibling)){if(b.nodeType!=1){continue;}f++;var a=e.positions[$uid(b)];if(a!=undefined){f=a+f;break;}}e.positions[d]=f;}return(e.positions[d]%c.a==c.b);},index:function(a){var b=this,c=0;while((b=b.previousSibling)){if(b.nodeType==1&&++c>a){return false;}}return(c==a);},even:function(b,a){return Selectors.Pseudo["nth-child"].call(this,"2n+1",a);},odd:function(b,a){return Selectors.Pseudo["nth-child"].call(this,"2n",a);},selected:function(){return this.selected;},enabled:function(){return(this.disabled===false);}});Element.Events.domready={onAdd:function(a){if(Browser.loaded){a.call(this);}}};(function(){var b=function(){if(Browser.loaded){return;}Browser.loaded=true;window.fireEvent("domready");document.fireEvent("domready");};window.addEvent("load",b);if(Browser.Engine.trident){var a=document.createElement("div");(function(){($try(function(){a.doScroll();return document.id(a).inject(document.body).set("html","temp").dispose();}))?b():arguments.callee.delay(50);})();}else{if(Browser.Engine.webkit&&Browser.Engine.version<525){(function(){(["loaded","complete"].contains(document.readyState))?b():arguments.callee.delay(50);})();}else{document.addEvent("DOMContentLoaded",b);}}})();var JSON=new Hash(this.JSON&&{stringify:JSON.stringify,parse:JSON.parse}).extend({$specialChars:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},$replaceChars:function(a){return JSON.$specialChars[a]||"\\u00"+Math.floor(a.charCodeAt()/16).toString(16)+(a.charCodeAt()%16).toString(16);},encode:function(b){switch($type(b)){case"string":return'"'+b.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case"array":return"["+String(b.map(JSON.encode).clean())+"]";case"object":case"hash":var a=[];Hash.each(b,function(e,d){var c=JSON.encode(e);if(c){a.push(JSON.encode(d)+":"+c);}});return"{"+a+"}";case"number":case"boolean":return String(b);case false:return"null";}return null;},decode:function(string,secure){if($type(string)!="string"||!string.length){return null;}if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,"@").replace(/"[^"\\\n\r]*"/g,""))){return null;}return eval("("+string+")");}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this);}});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(b,a){this.key=b;this.setOptions(a);},write:function(b){b=encodeURIComponent(b);if(this.options.domain){b+="; domain="+this.options.domain;}if(this.options.path){b+="; path="+this.options.path;}if(this.options.duration){var a=new Date();a.setTime(a.getTime()+this.options.duration*24*60*60*1000);b+="; expires="+a.toGMTString();}if(this.options.secure){b+="; secure";}this.options.document.cookie=this.key+"="+b;return this;},read:function(){var a=this.options.document.cookie.match("(?:^|;)\\s*"+this.key.escapeRegExp()+"=([^;]*)");return(a)?decodeURIComponent(a[1]):null;},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write("");return this;}});Cookie.write=function(b,c,a){return new Cookie(b,a).write(c);};Cookie.read=function(a){return new Cookie(a).read();};Cookie.dispose=function(b,a){return new Cookie(b,a).dispose();};var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:"high",allowScriptAccess:"always",wMode:"transparent",swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;},initialize:function(l,m){this.instance="Swiff_"+$time();this.setOptions(m);m=this.options;var b=this.id=m.id||this.instance;var a=document.id(m.container);Swiff.CallBacks[this.instance]={};var e=m.params,g=m.vars,f=m.callBacks;var h=$extend({height:m.height,width:m.width},m.properties);var k=this;for(var d in f){Swiff.CallBacks[this.instance][d]=(function(n){return function(){return n.apply(k.object,arguments);};})(f[d]);g[d]="Swiff.CallBacks."+this.instance+"."+d;}e.flashVars=Hash.toQueryString(g);if(Browser.Engine.trident){h.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";e.movie=l;}else{h.type="application/x-shockwave-flash";h.data=l;}var j='<object id="'+b+'"';for(var i in h){j+=" "+i+'="'+h[i]+'"';}j+=">";for(var c in e){if(e[c]){j+='<param name="'+c+'" value="'+e[c]+'" />';}}j+="</object>";this.object=((a)?a.empty():new Element("div")).set("html",j).firstChild;},replaces:function(a){a=document.id(a,true);a.parentNode.replaceChild(this.toElement(),a);return this;},inject:function(a){document.id(a,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+"</invoke>");return eval(rs);};var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:"ignore"},initialize:function(a){this.subject=this.subject||this;this.setOptions(a);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt();var b=this.options.wait;if(b===false){this.options.link="cancel";}},getTransition:function(){return function(a){return-(Math.cos(Math.PI*a)-1)/2;};},step:function(){var a=$time();if(a<this.time+this.options.duration){var b=this.transition((a-this.time)/this.options.duration);this.set(this.compute(this.from,this.to,b));}else{this.set(this.compute(this.from,this.to,1));this.complete();}},set:function(a){return a;},compute:function(c,b,a){return Fx.compute(c,b,a);},check:function(){if(!this.timer){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false;}return false;},start:function(b,a){if(!this.check(b,a)){return this;}this.from=b;this.to=a;this.time=0;this.transition=this.getTransition();this.startTimer();this.onStart();return this;},complete:function(){if(this.stopTimer()){this.onComplete();}return this;},cancel:function(){if(this.stopTimer()){this.onCancel();}return this;},onStart:function(){this.fireEvent("start",this.subject);},onComplete:function(){this.fireEvent("complete",this.subject);if(!this.callChain()){this.fireEvent("chainComplete",this.subject);}},onCancel:function(){this.fireEvent("cancel",this.subject).clearChain();},pause:function(){this.stopTimer();return this;},resume:function(){this.startTimer();return this;},stopTimer:function(){if(!this.timer){return false;}this.time=$time()-this.time;this.timer=$clear(this.timer);return true;},startTimer:function(){if(this.timer){return false;}this.time=$time()-this.time;this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);return true;}});Fx.compute=function(c,b,a){return(b-c)*a+c;};Fx.Durations={"short":250,normal:500,"long":1000};Fx.CSS=new Class({Extends:Fx,prepare:function(d,e,b){b=$splat(b);var c=b[1];if(!$chk(c)){b[1]=b[0];b[0]=d.getStyle(e);}var a=b.map(this.parse);return{from:a[0],to:a[1]};},parse:function(a){a=$lambda(a)();a=(typeof a=="string")?a.split(" "):$splat(a);return a.map(function(c){c=String(c);var b=false;Fx.CSS.Parsers.each(function(f,e){if(b){return;}var d=f.parse(c);if($chk(d)){b={value:d,parser:f};}});b=b||{value:c,parser:Fx.CSS.Parsers.String};return b;});},compute:function(d,c,b){var a=[];(Math.min(d.length,c.length)).times(function(e){a.push({value:d[e].parser.compute(d[e].value,c[e].value,b),parser:d[e].parser});});a.$family={name:"fx:css:value"};return a;},serve:function(c,b){if($type(c)!="fx:css:value"){c=this.parse(c);}var a=[];c.each(function(d){a=a.concat(d.parser.serve(d.value,b));});return a;},render:function(a,d,c,b){a.setStyle(d,this.serve(c,b));},search:function(a){if(Fx.CSS.Cache[a]){return Fx.CSS.Cache[a];}var b={};Array.each(document.styleSheets,function(e,d){var c=e.href;if(c&&c.contains("://")&&!c.contains(document.domain)){return;}var f=e.rules||e.cssRules;Array.each(f,function(j,g){if(!j.style){return;}var h=(j.selectorText)?j.selectorText.replace(/^\w+/,function(i){return i.toLowerCase();}):null;if(!h||!h.test("^"+a+"$")){return;}Element.Styles.each(function(k,i){if(!j.style[i]||Element.ShortStyles[i]){return;}k=String(j.style[i]);b[i]=(k.test(/^rgb/))?k.rgbToHex():k;});});});return Fx.CSS.Cache[a]=b;}});Fx.CSS.Cache={};Fx.CSS.Parsers=new Hash({Color:{parse:function(a){if(a.match(/^#[0-9a-f]{3,6}$/i)){return a.hexToRgb(true);}return((a=a.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[a[1],a[2],a[3]]:false;},compute:function(c,b,a){return c.map(function(e,d){return Math.round(Fx.compute(c[d],b[d],a));});},serve:function(a){return a.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(b,a){return(a)?b+a:b;}},String:{parse:$lambda(false),compute:$arguments(1),serve:$arguments(0)}});Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);this.parent(a);},set:function(b,a){if(arguments.length==1){a=b;b=this.property||this.options.property;}this.render(this.element,b,a,this.options.unit);return this;},start:function(c,e,d){if(!this.check(c,e,d)){return this;}var b=Array.flatten(arguments);this.property=this.options.property||b.shift();var a=this.prepare(this.element,this.property,b);return this.parent(a.from,a.to);}});Element.Properties.tween={set:function(a){var b=this.retrieve("tween");if(b){b.cancel();}return this.eliminate("tween").store("tween:options",$extend({link:"cancel"},a));},get:function(a){if(a||!this.retrieve("tween")){if(a||!this.retrieve("tween:options")){this.set("tween",a);}this.store("tween",new Fx.Tween(this,this.retrieve("tween:options")));}return this.retrieve("tween");}};Element.implement({tween:function(a,c,b){this.get("tween").start(arguments);return this;},fade:function(c){var e=this.get("tween"),d="opacity",a;c=$pick(c,"toggle");switch(c){case"in":e.start(d,1);break;case"out":e.start(d,0);break;case"show":e.set(d,1);break;case"hide":e.set(d,0);break;case"toggle":var b=this.retrieve("fade:flag",this.get("opacity")==1);e.start(d,(b)?0:1);this.store("fade:flag",!b);a=true;break;default:e.start(d,arguments);}if(!a){this.eliminate("fade:flag");}return this;},highlight:function(c,a){if(!a){a=this.retrieve("highlight:original",this.getStyle("background-color"));a=(a=="transparent")?"#fff":a;}var b=this.get("tween");b.start("background-color",c||"#ffff88",a).chain(function(){this.setStyle("background-color",this.retrieve("highlight:original"));b.callChain();}.bind(this));return this;}});Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(b,a){this.element=this.subject=document.id(b);this.parent(a);},set:function(a){if(typeof a=="string"){a=this.search(a);}for(var b in a){this.render(this.element,b,a[b],this.options.unit);}return this;},compute:function(e,d,c){var a={};for(var b in e){a[b]=this.parent(e[b],d[b],c);}return a;},start:function(b){if(!this.check(b)){return this;}if(typeof b=="string"){b=this.search(b);}var e={},d={};for(var c in b){var a=this.prepare(this.element,c,b[c]);e[c]=a.from;d[c]=a.to;}return this.parent(e,d);}});Element.Properties.morph={set:function(a){var b=this.retrieve("morph");if(b){b.cancel();}return this.eliminate("morph").store("morph:options",$extend({link:"cancel"},a));},get:function(a){if(a||!this.retrieve("morph")){if(a||!this.retrieve("morph:options")){this.set("morph",a);}this.store("morph",new Fx.Morph(this,this.retrieve("morph:options")));}return this.retrieve("morph");}};Element.implement({morph:function(a){this.get("morph").start(a);return this;}});Fx.implement({getTransition:function(){var a=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof a=="string"){var b=a.split(":");a=Fx.Transitions;a=a[b[0]]||a[b[0].capitalize()];if(b[1]){a=a["ease"+b[1].capitalize()+(b[2]?b[2].capitalize():"")];}}return a;}});Fx.Transition=function(b,a){a=$splat(a);return $extend(b,{easeIn:function(c){return b(c,a);},easeOut:function(c){return 1-b(1-c,a);},easeInOut:function(c){return(c<=0.5)?b(2*c,a)/2:(2-b(2*(1-c),a))/2;}});};Fx.Transitions=new Hash({linear:$arguments(0)});Fx.Transitions.extend=function(a){for(var b in a){Fx.Transitions[b]=new Fx.Transition(a[b]);}};Fx.Transitions.extend({Pow:function(b,a){return Math.pow(b,a[0]||6);},Expo:function(a){return Math.pow(2,8*(a-1));},Circ:function(a){return 1-Math.sin(Math.acos(a));},Sine:function(a){return 1-Math.sin((1-a)*Math.PI/2);},Back:function(b,a){a=a[0]||1.618;return Math.pow(b,2)*((a+1)*b-a);},Bounce:function(f){var e;for(var d=0,c=1;1;d+=c,c/=2){if(f>=(7-4*d)/11){e=c*c-Math.pow((11-6*d-11*f)/4,2);break;}}return e;},Elastic:function(b,a){return Math.pow(2,10*--b)*Math.cos(20*b*Math.PI*(a[0]||1)/3);}});["Quad","Cubic","Quart","Quint"].each(function(b,a){Fx.Transitions[b]=new Fx.Transition(function(c){return Math.pow(c,[a+2]);});});var Request=new Class({Implements:[Chain,Events,Options],options:{url:"",data:"",headers:{"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*"},async:true,format:false,method:"post",link:"ignore",isSuccess:null,emulation:true,urlEncoded:true,encoding:"utf-8",evalScripts:false,evalResponse:false,noCache:false},initialize:function(a){this.xhr=new Browser.Request();this.setOptions(a);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers);},onStateChange:function(){if(this.xhr.readyState!=4||!this.running){return;}this.running=false;this.status=0;$try(function(){this.status=this.xhr.status;}.bind(this));this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML};this.success(this.response.text,this.response.xml);}else{this.response={text:null,xml:null};this.failure();}},isSuccess:function(){return((this.status>=200)&&(this.status<300));},processScripts:function(a){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader("Content-type"))){return $exec(a);}return a.stripScripts(this.options.evalScripts);},success:function(b,a){this.onSuccess(this.processScripts(b),a);},onSuccess:function(){this.fireEvent("complete",arguments).fireEvent("success",arguments).callChain();},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent("complete").fireEvent("failure",this.xhr);},setHeader:function(a,b){this.headers.set(a,b);return this;},getHeader:function(a){return $try(function(){return this.xhr.getResponseHeader(a);}.bind(this));},check:function(){if(!this.running){return true;}switch(this.options.link){case"cancel":this.cancel();return true;case"chain":this.chain(this.caller.bind(this,arguments));return false;}return false;},send:function(k){if(!this.check(k)){return this;}this.running=true;var i=$type(k);if(i=="string"||i=="element"){k={data:k};}var d=this.options;k=$extend({data:d.data,url:d.url,method:d.method},k);var g=k.data,b=String(k.url),a=k.method.toLowerCase();switch($type(g)){case"element":g=document.id(g).toQueryString();break;case"object":case"hash":g=Hash.toQueryString(g);}if(this.options.format){var j="format="+this.options.format;g=(g)?j+"&"+g:j;}if(this.options.emulation&&!["get","post"].contains(a)){var h="_method="+a;g=(g)?h+"&"+g:h;a="post";}if(this.options.urlEncoded&&a=="post"){var c=(this.options.encoding)?"; charset="+this.options.encoding:"";this.headers.set("Content-type","application/x-www-form-urlencoded"+c);}if(this.options.noCache){var f="noCache="+new Date().getTime();g=(g)?f+"&"+g:f;}var e=b.lastIndexOf("/");if(e>-1&&(e=b.indexOf("#"))>-1){b=b.substr(0,e);}if(g&&a=="get"){b=b+(b.contains("?")?"&":"?")+g;g=null;}this.xhr.open(a.toUpperCase(),b,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(m,l){try{this.xhr.setRequestHeader(l,m);}catch(n){this.fireEvent("exception",[l,m]);}},this);this.fireEvent("request");this.xhr.send(g);if(!this.options.async){this.onStateChange();}return this;},cancel:function(){if(!this.running){return this;}this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent("cancel");return this;}});(function(){var a={};["get","post","put","delete","GET","POST","PUT","DELETE"].each(function(b){a[b]=function(){var c=Array.link(arguments,{url:String.type,data:$defined});return this.send($extend(c,{method:b}));};});Request.implement(a);})();Element.Properties.send={set:function(a){var b=this.retrieve("send");if(b){b.cancel();}return this.eliminate("send").store("send:options",$extend({data:this,link:"cancel",method:this.get("method")||"post",url:this.get("action")},a));},get:function(a){if(a||!this.retrieve("send")){if(a||!this.retrieve("send:options")){this.set("send",a);}this.store("send",new Request(this.retrieve("send:options")));}return this.retrieve("send");}};Element.implement({send:function(a){var b=this.get("send");b.send({data:this,url:a||b.options.url});return this;}});Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false},processHTML:function(c){var b=c.match(/<body[^>]*>([\s\S]*?)<\/body>/i);c=(b)?b[1]:c;var a=new Element("div");return $try(function(){var d="<root>"+c+"</root>",g;if(Browser.Engine.trident){g=new ActiveXObject("Microsoft.XMLDOM");g.async=false;g.loadXML(d);}else{g=new DOMParser().parseFromString(d,"text/xml");}d=g.getElementsByTagName("root")[0];if(!d){return null;}for(var f=0,e=d.childNodes.length;f<e;f++){var h=Element.clone(d.childNodes[f],true,true);if(h){a.grab(h);}}return a;})||a.set("html",c);},success:function(d){var c=this.options,b=this.response;b.html=d.stripScripts(function(e){b.javascript=e;});var a=this.processHTML(b.html);b.tree=a.childNodes;b.elements=a.getElements("*");if(c.filter){b.tree=b.elements.filter(c.filter);}if(c.update){document.id(c.update).empty().set("html",b.html);}else{if(c.append){document.id(c.append).adopt(a.getChildren());}}if(c.evalScripts){$exec(b.javascript);}this.onSuccess(b.tree,b.elements,b.html,b.javascript);}});Element.Properties.load={set:function(a){var b=this.retrieve("load");if(b){b.cancel();}return this.eliminate("load").store("load:options",$extend({data:this,link:"cancel",update:this,method:"get"},a));},get:function(a){if(a||!this.retrieve("load")){if(a||!this.retrieve("load:options")){this.set("load",a);}this.store("load",new Request.HTML(this.retrieve("load:options")));}return this.retrieve("load");}};Element.implement({load:function(){this.get("load").send(Array.link(arguments,{data:Object.type,url:String.type}));return this;}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(a){this.parent(a);this.headers.extend({Accept:"application/json","X-Request":"JSON"});},success:function(a){this.response.json=JSON.decode(a,this.options.secure);this.onSuccess(this.response.json,a);}});


MooTools.More={'version':'1.2.4.4','build':'6f6057dc645fdb7547689183b2311063bd653ddf'};(function(){var data={language:'en-US',languages:{'en-US':{}},cascades:['en-US']};var cascaded;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(lang){if(!data.languages[lang])return this;data.language=lang;this.load();this.fireEvent('langChange',lang);return this;},load:function(){var langs=this.cascade(this.getCurrentLanguage());cascaded={};$each(langs,function(set,setName){cascaded[setName]=this.lambda(set);},this);},getCurrentLanguage:function(){return data.language;},addLanguage:function(lang){data.languages[lang]=data.languages[lang]||{};return this;},cascade:function(lang){var cascades=(data.languages[lang]||{}).cascades||[];cascades.combine(data.cascades);cascades.erase(lang).push(lang);var langs=cascades.map(function(lng){return data.languages[lng];},this);return $merge.apply(this,langs);},lambda:function(set){(set||{}).get=function(key,args){return $lambda(set[key]).apply(this,$splat(args));};return set;},get:function(set,key,args){if(cascaded&&cascaded[set])return(key?cascaded[set].get(key,args):cascaded[set]);},set:function(lang,set,members){this.addLanguage(lang);langData=data.languages[lang];if(!langData[set])langData[set]={};$extend(langData[set],members);if(lang==this.getCurrentLanguage()){this.load();this.fireEvent('langChange',lang);}
return this;},list:function(){return Hash.getKeys(data.languages);}});})();(function(){var global=this;var log=function(){if(global.console&&console.log){try{console.log.apply(console,arguments);}catch(e){console.log(Array.slice(arguments));}}else{Log.logged.push(arguments);}
return this;};var disabled=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:disabled,resetLog:function(){this.logged.empty();return this;},enableLog:function(){this.log=log;this.logged.each(function(args){this.log.apply(this,args);},this);return this.resetLog();},disableLog:function(){this.log=disabled;return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();var Depender={options:{loadedSources:[],loadedScripts:['Core','Browser','Array','String','Function','Number','Hash','Element','Event','Element.Event','Class','DomReady','Class.Extras','Request','JSON','Request.JSON','More','Depender','Log'],useScriptInjection:true},loaded:[],sources:{},libs:{},include:function(libs){this.log('include: ',libs);this.mapLoaded=false;var loader=function(data){this.libs=$merge(this.libs,data);$each(this.libs,function(data,lib){if(data.scripts)this.loadSource(lib,data.scripts);},this);}.bind(this);if($type(libs)=='string'){this.log('fetching libs ',libs);this.request(libs,loader);}else{loader(libs);}
return this;},required:[],require:function(options){var loaded=function(){var scripts=this.calculateDependencies(options.scripts);if(options.sources){options.sources.each(function(source){scripts.combine(this.libs[source].files);},this);}
if(options.serial)scripts.combine(this.getLoadedScripts());options.scripts=scripts;this.required.push(options);this.fireEvent('require',options);this.loadScripts(options.scripts);};if(this.mapLoaded)loaded.call(this);else this.addEvent('mapLoaded',loaded.bind(this));return this;},cleanDoubleSlash:function(str){if(!str)return str;var prefix='';if(str.test(/^http:\/\//)){prefix='http://';str=str.substring(7,str.length);}
str=str.replace(/\/\//g,'/');return prefix+str;},request:function(url,callback){new Request.JSON({url:url,secure:false,onSuccess:callback}).send();},loadSource:function(lib,source){if(this.libs[lib].files){this.dataLoaded();return;}
this.log('loading source: ',source);this.request(this.cleanDoubleSlash(source+'/scripts.json'),function(result){this.log('loaded source: ',source);this.libs[lib].files=result;this.dataLoaded();}.bind(this));},dataLoaded:function(){var loaded=true;$each(this.libs,function(v,k){if(!this.libs[k].files)loaded=false;},this);if(loaded){this.mapTree();this.mapLoaded=true;this.calculateLoaded();this.lastLoaded=this.getLoadedScripts().getLength();this.fireEvent('mapLoaded');this.removeEvents('mapLoaded');}},calculateLoaded:function(){var set=function(script){this.scriptsState[script]=true;}.bind(this);if(this.options.loadedScripts)this.options.loadedScripts.each(set);if(this.options.loadedSources){this.options.loadedSources.each(function(lib){$each(this.libs[lib].files,function(dir){$each(dir,function(data,file){set(file);},this);},this);},this);}},deps:{},pathMap:{},mapTree:function(){$each(this.libs,function(data,source){$each(data.files,function(scripts,folder){$each(scripts,function(details,script){var path=source+':'+folder+':'+script;if(this.deps[path])return;this.deps[path]=details.deps;this.pathMap[script]=path;},this);},this);},this);},getDepsForScript:function(script){return this.deps[this.pathMap[script]]||[];},calculateDependencies:function(scripts){var reqs=[];$splat(scripts).each(function(script){if(script=='None'||!script)return;var deps=this.getDepsForScript(script);if(!deps){if(window.console&&console.warn)console.warn('dependencies not mapped: script: %o, map: %o, :deps: %o',script,this.pathMap,this.deps);}else{deps.each(function(scr){if(scr==script||scr=='None'||!scr)return;if(!reqs.contains(scr))reqs.combine(this.calculateDependencies(scr));reqs.include(scr);},this);}
reqs.include(script);},this);return reqs;},getPath:function(script){try{var chunks=this.pathMap[script].split(':');var lib=this.libs[chunks[0]];var dir=(lib.path||lib.scripts)+'/';chunks.shift();return this.cleanDoubleSlash(dir+chunks.join('/')+'.js');}catch(e){return script;}},loadScripts:function(scripts){scripts=scripts.filter(function(s){if(!this.scriptsState[s]&&s!='None'){this.scriptsState[s]=false;return true;}},this);if(scripts.length){scripts.each(function(scr){this.loadScript(scr);},this);}else{this.check();}},toLoad:[],loadScript:function(script){if(this.scriptsState[script]&&this.toLoad.length){this.loadScript(this.toLoad.shift());return;}else if(this.loading){this.toLoad.push(script);return;}
var finish=function(){this.loading=false;this.scriptLoaded(script);if(this.toLoad.length)this.loadScript(this.toLoad.shift());}.bind(this);var error=function(){this.log('could not load: ',scriptPath);}.bind(this);this.loading=true;var scriptPath=this.getPath(script);if(this.options.useScriptInjection){this.log('injecting script: ',scriptPath);var loaded=function(){this.log('loaded script: ',scriptPath);finish();}.bind(this);new Element('script',{src:scriptPath+(this.options.noCache?'?noCache='+new Date().getTime():''),events:{load:loaded,readystatechange:function(){if(['loaded','complete'].contains(this.readyState))loaded();},error:error}}).inject(this.options.target||document.head);}else{this.log('requesting script: ',scriptPath);new Request({url:scriptPath,noCache:this.options.noCache,onComplete:function(js){this.log('loaded script: ',scriptPath);$exec(js);finish();}.bind(this),onFailure:error,onException:error}).send();}},scriptsState:$H(),getLoadedScripts:function(){return this.scriptsState.filter(function(state){return state;});},scriptLoaded:function(script){this.log('loaded script: ',script);this.scriptsState[script]=true;this.check();var loaded=this.getLoadedScripts();var loadedLength=loaded.getLength();var toLoad=this.scriptsState.getLength();this.fireEvent('scriptLoaded',{script:script,totalLoaded:(loadedLength/toLoad*100).round(),currentLoaded:((loadedLength-this.lastLoaded)/(toLoad-this.lastLoaded)*100).round(),loaded:loaded});if(loadedLength==toLoad)this.lastLoaded=loadedLength;},lastLoaded:0,check:function(){var incomplete=[];this.required.each(function(required){var loaded=[];required.scripts.each(function(script){if(this.scriptsState[script])loaded.push(script);},this);if(required.onStep){required.onStep({percent:loaded.length/required.scripts.length*100,scripts:loaded});};if(required.scripts.length!=loaded.length)return;required.callback();this.required.erase(required);this.fireEvent('requirementLoaded',[loaded,required]);},this);}};$extend(Depender,new Events);$extend(Depender,new Options);$extend(Depender,new Log);Depender._setOptions=Depender.setOptions;Depender.setOptions=function(){Depender._setOptions.apply(Depender,arguments);if(this.options.log)Depender.enableLog();return this;};Class.refactor=function(original,refactors){$each(refactors,function(item,name){var origin=original.prototype[name];if(origin&&(origin=origin._origin)&&typeof item=='function')original.implement(name,function(){var old=this.previous;this.previous=origin;var value=item.apply(this,arguments);this.previous=old;return value;});else original.implement(name,item);});return original;};Class.Mutators.Binds=function(binds){return binds;};Class.Mutators.initialize=function(initialize){return function(){$splat(this.Binds).each(function(name){var original=this[name];if(original)this[name]=original.bind(this);},this);return initialize.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(property,element){element=document.id(element||this.element);var instance=element.retrieve(property||this.property);if(instance&&!$defined(this.occluded))
return this.occluded=instance;this.occluded=false;element.store(property||this.property,this);return this.occluded;}});(function(){var wait={wait:function(duration){return this.chain(function(){this.callChain.delay($pick(duration,500),this);}.bind(this));}};Chain.implement(wait);if(window.Fx){Fx.implement(wait);['Css','Tween','Elements'].each(function(cls){if(Fx[cls])Fx[cls].implement(wait);});}
Element.implement({chains:function(effects){$splat($pick(effects,['tween','morph','reveal'])).each(function(effect){effect=this.get(effect);if(!effect)return;effect.setOptions({link:'chain'});},this);return this;},pauseFx:function(duration,effect){this.chains(effect).get($pick(effect,'tween')).wait(duration);return this;}});})();Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var result=0,l=this.length;if(l){do{result+=this[--l];}while(l);}
return result;},unique:function(){return[].combine(this);},shuffle:function(){for(var i=this.length;i&&--i;){var temp=this[i],r=Math.floor(Math.random()*(i+1));this[i]=this[r];this[r]=temp;}
return this;}});(function(){var Date=this.Date;if(!Date.now)Date.now=$time;Date.Methods={ms:'Milliseconds',year:'FullYear',min:'Minutes',mo:'Month',sec:'Seconds',hr:'Hours'};['Date','Day','FullYear','Hours','Milliseconds','Minutes','Month','Seconds','Time','TimezoneOffset','Week','Timezone','GMTOffset','DayOfYear','LastMonth','LastDayOfMonth','UTCDate','UTCDay','UTCFullYear','AMPM','Ordinal','UTCHours','UTCMilliseconds','UTCMinutes','UTCMonth','UTCSeconds'].each(function(method){Date.Methods[method.toLowerCase()]=method;});var pad=function(what,length){return new Array(length-String(what).length+1).join('0')+what;};Date.implement({set:function(prop,value){switch($type(prop)){case'object':for(var p in prop)this.set(p,prop[p]);break;case'string':prop=prop.toLowerCase();var m=Date.Methods;if(m[prop])this['set'+m[prop]](value);}
return this;},get:function(prop){prop=prop.toLowerCase();var m=Date.Methods;if(m[prop])return this['get'+m[prop]]();return null;},clone:function(){return new Date(this.get('time'));},increment:function(interval,times){interval=interval||'day';times=$pick(times,1);switch(interval){case'year':return this.increment('month',times*12);case'month':var d=this.get('date');this.set('date',1).set('mo',this.get('mo')+times);return this.set('date',d.min(this.get('lastdayofmonth')));case'week':return this.increment('day',times*7);case'day':return this.set('date',this.get('date')+times);}
if(!Date.units[interval])throw new Error(interval+' is not a supported interval');return this.set('time',this.get('time')+times*Date.units[interval]());},decrement:function(interval,times){return this.increment(interval,-1*$pick(times,1));},isLeapYear:function(){return Date.isLeapYear(this.get('year'));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});},diff:function(date,resolution){if($type(date)=='string')date=Date.parse(date);return((date-this)/Date.units[resolution||'day'](3,3)).toInt();},getLastDayOfMonth:function(){return Date.daysInMonth(this.get('mo'),this.get('year'));},getDayOfYear:function(){return(Date.UTC(this.get('year'),this.get('mo'),this.get('date')+1)
-Date.UTC(this.get('year'),0,1))/Date.units.day();},getWeek:function(){return(this.get('dayofyear')/7).ceil();},getOrdinal:function(day){return Date.getMsg('ordinal',day||this.get('date'));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,'$1').replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,'$1$2$3');},getGMTOffset:function(){var off=this.get('timezoneOffset');return((off>0)?'-':'+')+pad((off.abs()/60).floor(),2)+pad(off%60,2);},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get('hr');if(hr>11&&ampm=='AM')return this.decrement('hour',12);else if(hr<12&&ampm=='PM')return this.increment('hour',12);return this;},getAMPM:function(){return(this.get('hr')<12)?'AM':'PM';},parse:function(str){this.set('time',Date.parse(str));return this;},isValid:function(date){return!!(date||this).valueOf();},format:function(f){if(!this.isValid())return'invalid date';f=f||'%x %X';f=formats[f.toLowerCase()]||f;var d=this;return f.replace(/%([a-z%])/gi,function($0,$1){switch($1){case'a':return Date.getMsg('days')[d.get('day')].substr(0,3);case'A':return Date.getMsg('days')[d.get('day')];case'b':return Date.getMsg('months')[d.get('month')].substr(0,3);case'B':return Date.getMsg('months')[d.get('month')];case'c':return d.toString();case'd':return pad(d.get('date'),2);case'H':return pad(d.get('hr'),2);case'I':return((d.get('hr')%12)||12);case'j':return pad(d.get('dayofyear'),3);case'm':return pad((d.get('mo')+1),2);case'M':return pad(d.get('min'),2);case'o':return d.get('ordinal');case'p':return Date.getMsg(d.get('ampm'));case'S':return pad(d.get('seconds'),2);case'U':return pad(d.get('week'),2);case'w':return d.get('day');case'x':return d.format(Date.getMsg('shortDate'));case'X':return d.format(Date.getMsg('shortTime'));case'y':return d.get('year').toString().substr(2);case'Y':return d.get('year');case'T':return d.get('GMTOffset');case'Z':return d.get('Timezone');}
return $1;});},toISOString:function(){return this.format('iso8601');}});Date.alias('toISOString','toJSON');Date.alias('diff','compare');Date.alias('format','strftime');var formats={db:'%Y-%m-%d %H:%M:%S',compact:'%Y%m%dT%H%M%S',iso8601:'%Y-%m-%dT%H:%M:%S%T',rfc822:'%a, %d %b %Y %H:%M:%S %Z','short':'%d %b %H:%M','long':'%B %d, %Y %H:%M'};var parsePatterns=[];var nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1;var translated=Date.getMsg(type+'s');switch($type(word)){case'object':ret=translated[word.get(type)];break;case'number':ret=translated[month-1];if(!ret)throw new Error('Invalid '+type+' index: '+index);break;case'string':var match=translated.filter(function(name){return this.test(name);},new RegExp('^'+word,'i'));if(!match.length)throw new Error('Invalid '+type+' string');if(match.length>1)throw new Error('Ambiguous '+type);ret=match[0];}
return(num)?translated.indexOf(ret):ret;};Date.extend({getMsg:function(key,args){return MooTools.lang.get('Date',key,args);},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth($pick(month,d.get('mo')),$pick(year,d.get('year')))*86400000;},year:function(year){year=year||new Date().get('year');return Date.isLeapYear(year)?31622400000:31536000000;}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month];},isLeapYear:function(year){return((year%4===0)&&(year%100!==0))||(year%400===0);},parse:function(from){var t=$type(from);if(t=='number')return new Date(from);if(t!='string')return from;from=from.clean();if(!from.length)return null;var parsed;parsePatterns.some(function(pattern){var bits=pattern.re.exec(from);return(bits)?(parsed=pattern.handler(bits)):false;});return parsed||new Date(nativeParse(from));},parseDay:function(day,num){return parseWord('day',day,num);},parseMonth:function(month,num){return parseWord('month',month,num);},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get('year'),localDate.get('mo'),localDate.get('date'),localDate.get('hr'),localDate.get('min'),localDate.get('sec'));return new Date(utcSeconds);},orderIndex:function(unit){return Date.getMsg('dateOrder').indexOf(unit)+1;},defineFormat:function(name,format){formats[name]=format;},defineFormats:function(formats){for(var name in formats)Date.defineFormat(name,formats[name]);},parsePatterns:parsePatterns,defineParser:function(pattern){parsePatterns.push((pattern.re&&pattern.handler)?pattern:build(pattern));},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser);},define2DigitYearStart:function(year){startYear=year%100;startCentury=year-startYear;}});var startCentury=1900;var startYear=70;var regexOf=function(type){return new RegExp('(?:'+Date.getMsg(type).map(function(name){return name.substr(0,3);}).join('|')+')[a-z]*');};var replacers=function(key){switch(key){case'x':return((Date.orderIndex('month')==1)?'%m[.-/]%d':'%d[.-/]%m')+'([.-/]%y)?';case'X':return'%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?';}
return null;};var keys={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,T:/Z|[+-]\d{2}(?::?\d{2})?/};keys.m=keys.I;keys.S=keys.M;var currentLanguage;var recompile=function(language){currentLanguage=language;keys.a=keys.A=regexOf('days');keys.b=keys.B=regexOf('months');parsePatterns.each(function(pattern,i){if(pattern.format)parsePatterns[i]=build(pattern.format);});};var build=function(format){if(!currentLanguage)return{format:format};var parsed=[];var re=(format.source||format).replace(/%([a-z])/gi,function($0,$1){return replacers($1)||$0;}).replace(/\((?!\?)/g,'(?:').replace(/ (?!\?|\*)/g,',? ').replace(/%([a-z%])/gi,function($0,$1){var p=keys[$1];if(!p)return $1;parsed.push($1);return'('+p.source+')';}).replace(/\[a-z\]/gi,'[a-z\\u00c0-\\uffff]');return{format:format,re:new RegExp('^'+re+'$','i'),handler:function(bits){bits=bits.slice(1).associate(parsed);var date=new Date().clearTime();if('d'in bits)handle.call(date,'d',1);if('m'in bits||'b'in bits||'B'in bits)handle.call(date,'m',1);for(var key in bits)handle.call(date,key,bits[key]);return date;}};};var handle=function(key,value){if(!value)return this;switch(key){case'a':case'A':return this.set('day',Date.parseDay(value,true));case'b':case'B':return this.set('mo',Date.parseMonth(value,true));case'd':return this.set('date',value);case'H':case'I':return this.set('hr',value);case'm':return this.set('mo',value-1);case'M':return this.set('min',value);case'p':return this.set('ampm',value.replace(/\./g,''));case'S':return this.set('sec',value);case's':return this.set('ms',('0.'+value)*1000);case'w':return this.set('day',value);case'Y':return this.set('year',value);case'y':value=+value;if(value<100)value+=startCentury+(value<startYear?100:0);return this.set('year',value);case'T':if(value=='Z')value='+00';var offset=value.match(/([+-])(\d{2}):?(\d{2})?/);offset=(offset[1]+'1')*(offset[2]*60+(+offset[3]||0))+this.getTimezoneOffset();return this.set('time',this-offset*60000);}
return this;};Date.defineParsers('%Y([-./]%m([-./]%d((T| )%X)?)?)?','%Y%m%d(T%H(%M%S?)?)?','%x( %X)?','%d%o( %b( %Y)?)?( %X)?','%b( %d%o)?( %Y)?( %X)?','%Y %b( %d%o( %X)?)?','%o %b %d %X %T %Y');MooTools.lang.addEvent('langChange',function(language){if(MooTools.lang.get('Date'))recompile(language);}).fireEvent('langChange',MooTools.lang.getCurrentLanguage());})();Date.implement({timeDiffInWords:function(relative_to){return Date.distanceOfTimeInWords(this,relative_to||new Date);},timeDiff:function(to,joiner){if(to==null)to=new Date;var delta=((to-this)/1000).toInt();if(!delta)return'0s';var durations={s:60,m:60,h:24,d:365,y:0};var duration,vals=[];for(var step in durations){if(!delta)break;if((duration=durations[step])){vals.unshift((delta%duration)+step);delta=(delta/duration).toInt();}else{vals.unshift(delta+step);}}
return vals.join(joiner||':');}});Date.alias('timeDiffInWords','timeAgoInWords');Date.extend({distanceOfTimeInWords:function(from,to){return Date.getTimePhrase(((to-from)/1000).toInt());},getTimePhrase:function(delta){var suffix=(delta<0)?'Until':'Ago';if(delta<0)delta*=-1;var units={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var msg='lessThanMinute';for(var unit in units){var interval=units[unit];if(delta<1.5*interval){if(delta>0.75*interval)msg=unit;break;}
delta/=interval;msg=unit+'s';}
return Date.getMsg(msg+suffix).substitute({delta:delta.round()});}});Date.defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(bits){var d=new Date().clearTime();switch(bits[0]){case'tom':return d.increment();case'yes':return d.decrement();default:return d;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(bits){var d=new Date().clearTime();var day=d.getDay();var newDay=Date.parseDay(bits[2],true);var addDays=newDay-day;if(newDay<=day)addDays+=7;if(bits[1]=='last')addDays-=7;return d.set('date',d.getDate()+addDays);}});Hash.implement({getFromPath:function(notation){var source=this.getClean();notation.replace(/\[([^\]]+)\]|\.([^.[]+)|[^[.]+/g,function(match){if(!source)return null;var prop=arguments[2]||arguments[1]||arguments[0];source=(prop in source)?source[prop]:null;return match;});return source;},cleanValues:function(method){method=method||$defined;this.each(function(v,k){if(!method(v))this.erase(k);},this);return this;},run:function(){var args=arguments;this.each(function(v,k){if($type(v)=='function')v.run(args);});}});(function(){var special=['À','à','Á','á','Â','â','Ã','ã','Ä','ä','Å','å','Ă','ă','Ą','ą','Ć','ć','Č','č','Ç','ç','Ď','ď','Đ','đ','È','è','É','é','Ê','ê','Ë','ë','Ě','ě','Ę','ę','Ğ','ğ','Ì','ì','Í','í','Î','î','Ï','ï','Ĺ','ĺ','Ľ','ľ','Ł','ł','Ñ','ñ','Ň','ň','Ń','ń','Ò','ò','Ó','ó','Ô','ô','Õ','õ','Ö','ö','Ø','ø','ő','Ř','ř','Ŕ','ŕ','Š','š','Ş','ş','Ś','ś','Ť','ť','Ť','ť','Ţ','ţ','Ù','ù','Ú','ú','Û','û','Ü','ü','Ů','ů','Ÿ','ÿ','ý','Ý','Ž','ž','Ź','ź','Ż','ż','Þ','þ','Ð','ð','ß','Œ','œ','Æ','æ','µ'];var standard=['A','a','A','a','A','a','A','a','Ae','ae','A','a','A','a','A','a','C','c','C','c','C','c','D','d','D','d','E','e','E','e','E','e','E','e','E','e','E','e','G','g','I','i','I','i','I','i','I','i','L','l','L','l','L','l','N','n','N','n','N','n','O','o','O','o','O','o','O','o','Oe','oe','O','o','o','R','r','R','r','S','s','S','s','S','s','T','t','T','t','T','t','U','u','U','u','U','u','Ue','ue','U','u','Y','y','Y','y','Z','z','Z','z','Z','z','TH','th','DH','dh','ss','OE','oe','AE','ae','u'];var tidymap={"[\xa0\u2002\u2003\u2009]":" ","\xb7":"*","[\u2018\u2019]":"'","[\u201c\u201d]":'"',"\u2026":"...","\u2013":"-","\u2014":"--","\uFFFD":"&raquo;"};var getRegForTag=function(tag,contents){tag=tag||'';var regstr=contents?"<"+tag+"[^>]*>([\\s\\S]*?)<\/"+tag+">":"<\/?"+tag+"([^>]+)?>";reg=new RegExp(regstr,"gi");return reg;};String.implement({standardize:function(){var text=this;special.each(function(ch,i){text=text.replace(new RegExp(ch,'g'),standard[i]);});return text;},repeat:function(times){return new Array(times+1).join(this);},pad:function(length,str,dir){if(this.length>=length)return this;var pad=(str==null?' ':''+str).repeat(length-this.length).substr(0,length-this.length);if(!dir||dir=='right')return this+pad;if(dir=='left')return pad+this;return pad.substr(0,(pad.length/2).floor())+this+pad.substr(0,(pad.length/2).ceil());},getTags:function(tag,contents){return this.match(getRegForTag(tag,contents))||[];},stripTags:function(tag,contents){return this.replace(getRegForTag(tag,contents),'');},tidy:function(){var txt=this.toString();$each(tidymap,function(value,key){txt=txt.replace(new RegExp(key,'g'),value);});return txt;}});})();String.implement({parseQueryString:function(){var vars=this.split(/[&;]/),res={};if(vars.length)vars.each(function(val){var index=val.indexOf('='),keys=index<0?['']:val.substr(0,index).match(/[^\]\[]+/g),value=decodeURIComponent(val.substr(index+1)),obj=res;keys.each(function(key,i){var current=obj[key];if(i<keys.length-1)
obj=obj[key]=current||{};else if($type(current)=='array')
current.push(value);else
obj[key]=$defined(current)?[current,value]:value;});});return res;},cleanQueryString:function(method){return this.split('&').filter(function(val){var index=val.indexOf('='),key=index<0?'':val.substr(0,index),value=val.substr(index+1);return method?method.run([key,value]):$chk(value);}).join('&');}});var URI=new Class({Implements:Options,options:{},regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:['scheme','user','password','host','port','directory','file','query','fragment'],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(uri,options){this.setOptions(options);var base=this.options.base||URI.base;if(!uri)uri=base;if(uri&&uri.parsed)this.parsed=$unlink(uri.parsed);else this.set('value',uri.href||uri.toString(),base?new URI(base):false);},parse:function(value,base){var bits=value.match(this.regex);if(!bits)return false;bits.shift();return this.merge(bits.associate(this.parts),base);},merge:function(bits,base){if((!bits||!bits.scheme)&&(!base||!base.scheme))return false;if(base){this.parts.every(function(part){if(bits[part])return false;bits[part]=base[part]||'';return true;});}
bits.port=bits.port||this.schemes[bits.scheme.toLowerCase()];bits.directory=bits.directory?this.parseDirectory(bits.directory,base?base.directory:''):'/';return bits;},parseDirectory:function(directory,baseDirectory){directory=(directory.substr(0,1)=='/'?'':(baseDirectory||'/'))+directory;if(!directory.test(URI.regs.directoryDot))return directory;var result=[];directory.replace(URI.regs.endSlash,'').split('/').each(function(dir){if(dir=='..'&&result.length>0)result.pop();else if(dir!='.')result.push(dir);});return result.join('/')+'/';},combine:function(bits){return bits.value||bits.scheme+'://'+
(bits.user?bits.user+(bits.password?':'+bits.password:'')+'@':'')+
(bits.host||'')+(bits.port&&bits.port!=this.schemes[bits.scheme]?':'+bits.port:'')+
(bits.directory||'/')+(bits.file||'')+
(bits.query?'?'+bits.query:'')+
(bits.fragment?'#'+bits.fragment:'');},set:function(part,value,base){if(part=='value'){var scheme=value.match(URI.regs.scheme);if(scheme)scheme=scheme[1];if(scheme&&!$defined(this.schemes[scheme.toLowerCase()]))this.parsed={scheme:scheme,value:value};else this.parsed=this.parse(value,(base||this).parsed)||(scheme?{scheme:scheme,value:value}:{value:value});}else if(part=='data'){this.setData(value);}else{this.parsed[part]=value;}
return this;},get:function(part,base){switch(part){case'value':return this.combine(this.parsed,base?base.parsed:false);case'data':return this.getData();}
return this.parsed[part]||'';},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(key,part){var qs=this.get(part||'query');if(!$chk(qs))return key?null:{};var obj=qs.parseQueryString();return key?obj[key]:obj;},setData:function(values,merge,part){if(typeof values=='string'){data=this.getData();data[arguments[0]]=arguments[1];values=data;}else if(merge){values=$merge(this.getData(),values);}
return this.set(part||'query',Hash.toQueryString(values));},clearData:function(part){return this.set(part||'query','');}});URI.prototype.toString=URI.prototype.valueOf=function(){return this.get('value');};URI.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};URI.base=new URI(document.getElements('base[href]',true).getLast(),{base:document.location});String.implement({toURI:function(options){return new URI(this,options);}});URI=Class.refactor(URI,{combine:function(bits,base){if(!base||bits.scheme!=base.scheme||bits.host!=base.host||bits.port!=base.port)
return this.previous.apply(this,arguments);var end=bits.file+(bits.query?'?'+bits.query:'')+(bits.fragment?'#'+bits.fragment:'');if(!base.directory)return(bits.directory||(bits.file?'':'./'))+end;var baseDir=base.directory.split('/'),relDir=bits.directory.split('/'),path='',offset;var i=0;for(offset=0;offset<baseDir.length&&offset<relDir.length&&baseDir[offset]==relDir[offset];offset++);for(i=0;i<baseDir.length-offset-1;i++)path+='../';for(i=offset;i<relDir.length-1;i++)path+=relDir[i]+'/';return(path||(bits.file?'':'./'))+end;},toAbsolute:function(base){base=new URI(base);if(base)base.set('directory','').set('file','');return this.toRelative(base);},toRelative:function(base){return this.get('value',new URI(base));}});Element.implement({tidy:function(){this.set('value',this.get('value').tidy());},getTextInRange:function(start,end){return this.get('value').substring(start,end);},getSelectedText:function(){if(this.setSelectionRange)return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd());return document.selection.createRange().text;},getSelectedRange:function(){if($defined(this.selectionStart))return{start:this.selectionStart,end:this.selectionEnd};var pos={start:0,end:0};var range=this.getDocument().selection.createRange();if(!range||range.parentElement()!=this)return pos;var dup=range.duplicate();if(this.type=='text'){pos.start=0-dup.moveStart('character',-100000);pos.end=pos.start+range.text.length;}else{var value=this.get('value');var offset=value.length;dup.moveToElementText(this);dup.setEndPoint('StartToEnd',range);if(dup.text.length)offset-=value.match(/[\n\r]*$/)[0].length;pos.end=offset-dup.text.length;dup.setEndPoint('StartToStart',range);pos.start=offset-dup.text.length;}
return pos;},getSelectionStart:function(){return this.getSelectedRange().start;},getSelectionEnd:function(){return this.getSelectedRange().end;},setCaretPosition:function(pos){if(pos=='end')pos=this.get('value').length;this.selectRange(pos,pos);return this;},getCaretPosition:function(){return this.getSelectedRange().start;},selectRange:function(start,end){if(this.setSelectionRange){this.focus();this.setSelectionRange(start,end);}else{var value=this.get('value');var diff=value.substr(start,end-start).replace(/\r/g,'').length;start=value.substr(0,start).replace(/\r/g,'').length;var range=this.createTextRange();range.collapse(true);range.moveEnd('character',start+diff);range.moveStart('character',start);range.select();}
return this;},insertAtCursor:function(value,select){var pos=this.getSelectedRange();var text=this.get('value');this.set('value',text.substring(0,pos.start)+value+text.substring(pos.end,text.length));if($pick(select,true))this.selectRange(pos.start,pos.start+value.length);else this.setCaretPosition(pos.start+value.length);return this;},insertAroundCursor:function(options,select){options=$extend({before:'',defaultMiddle:'',after:''},options);var value=this.getSelectedText()||options.defaultMiddle;var pos=this.getSelectedRange();var text=this.get('value');if(pos.start==pos.end){this.set('value',text.substring(0,pos.start)+options.before+value+options.after+text.substring(pos.end,text.length));this.selectRange(pos.start+options.before.length,pos.end+options.before.length+value.length);}else{var current=text.substring(pos.start,pos.end);this.set('value',text.substring(0,pos.start)+options.before+current+options.after+text.substring(pos.end,text.length));var selStart=pos.start+options.before.length;if($pick(select,true))this.selectRange(selStart,selStart+current.length);else this.setCaretPosition(selStart+text.length);}
return this;}});Elements.from=function(text,excludeScripts){if($pick(excludeScripts,true))text=text.stripScripts();var container,match=text.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i);if(match){container=new Element('table');var tag=match[1].toLowerCase();if(['td','th','tr'].contains(tag)){container=new Element('tbody').inject(container);if(tag!='tr')container=new Element('tr').inject(container);}}
return(container||new Element('div')).set('html',text).getChildren();};(function(addEvent,removeEvent){var match=/(.*?):relay\(([^)]+)\)$/,combinators=/[+>~\s]/,splitType=function(type){var bits=type.match(match);return!bits?{event:type}:{event:bits[1],selector:bits[2]};},check=function(e,selector){var t=e.target;if(combinators.test(selector=selector.trim())){var els=this.getElements(selector);for(var i=els.length;i--;){var el=els[i];if(t==el||el.hasChild(t))return el;}}else{for(;t&&t!=this;t=t.parentNode){if(Element.match(t,selector))return document.id(t);}}
return null;};Element.implement({addEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var monitors=this.retrieve('$moo:delegateMonitors',{});if(!monitors[type]){var monitor=function(e){var el=check.call(this,e,splitted.selector);if(el)this.fireEvent(type,[e,el],0,el);}.bind(this);monitors[type]=monitor;addEvent.call(this,splitted.event,monitor);}}
return addEvent.apply(this,arguments);},removeEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var events=this.retrieve('events');if(!events||!events[type]||(fn&&!events[type].keys.contains(fn)))return this;if(fn)removeEvent.apply(this,[type,fn]);else removeEvent.apply(this,type);events=this.retrieve('events');if(events&&events[type]&&events[type].keys.length==0){var monitors=this.retrieve('$moo:delegateMonitors',{});removeEvent.apply(this,[splitted.event,monitors[type]]);delete monitors[type];}
return this;}
return removeEvent.apply(this,arguments);},fireEvent:function(type,args,delay,bind){var events=this.retrieve('events');if(!events||!events[type])return this;events[type].keys.each(function(fn){fn.create({bind:bind||this,delay:delay,arguments:args})();},this);return this;}});})(Element.prototype.addEvent,Element.prototype.removeEvent);Element.implement({measure:function(fn){var vis=function(el){return!!(!el||el.offsetHeight||el.offsetWidth);};if(vis(this))return fn.apply(this);var parent=this.getParent(),restorers=[],toMeasure=[];while(!vis(parent)&&parent!=document.body){toMeasure.push(parent.expose());parent=parent.getParent();}
var restore=this.expose();var result=fn.apply(this);restore();toMeasure.each(function(restore){restore();});return result;},expose:function(){if(this.getStyle('display')!='none')return $empty;var before=this.style.cssText;this.setStyles({display:'block',position:'absolute',visibility:'hidden'});return function(){this.style.cssText=before;}.bind(this);},getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};var getSize=function(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize();};var parent=this.getParent('body');if(parent&&this.getStyle('display')=='none'){dim=this.measure(function(){return getSize(this,options);});}else if(parent){try{dim=getSize(this,options);}catch(e){}}else{dim={x:0,y:0};}
return $chk(dim.x)?$extend(dim,{width:dim.x,height:dim.y}):$extend(dim,{x:dim.width,y:dim.height});},getComputedSize:function(options){options=$merge({styles:['padding','border'],plains:{height:['top','bottom'],width:['left','right']},mode:'both'},options);var size={width:0,height:0};switch(options.mode){case'vertical':delete size.width;delete options.plains.width;break;case'horizontal':delete size.height;delete options.plains.height;break;}
var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=='border')?style+'-'+edge+'-'+'width':style+'-'+edge);});});});var styles={};getStyles.each(function(style){styles[style]=this.getComputedStyle(style);},this);var subtracted=[];$each(options.plains,function(plain,key){var capitalized=key.capitalize();size['total'+capitalized]=size['computed'+capitalized]=0;plain.each(function(edge){size['computed'+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt()||0;size['total'+capitalized]=size['total'+capitalized]+styles[style];size['computed'+edge.capitalize()]=size['computed'+edge.capitalize()]+styles[style];}
if(style.test(edge)&&key!=style&&(style.test('border')||style.test('padding'))&&!subtracted.contains(style)){subtracted.push(style);size['computed'+capitalized]=size['computed'+capitalized]-styles[style];}});});});['Width','Height'].each(function(value){var lower=value.toLowerCase();if(!$chk(size[lower]))return;size[lower]=size[lower]+this['offset'+value]+size['computed'+value];size['total'+value]=size[lower]+size['total'+value];delete size['computed'+value];},this);return $extend(styles,size);}});(function(){var supportsPositionFixed=false;window.addEvent('domready',function(){var test=new Element('div').setStyles({position:'fixed',top:0,right:0}).inject(document.body);supportsPositionFixed=(test.offsetTop===0);test.dispose();});Element.implement({pin:function(enable){if(this.getStyle('display')=='none')return null;var p,scroll=window.getScroll();if(enable!==false){p=this.getPosition();if(!this.retrieve('pinned')){var pos={top:p.y-scroll.y,left:p.x-scroll.x};if(supportsPositionFixed){this.setStyle('position','fixed').setStyles(pos);}else{this.store('pinnedByJS',true);this.setStyles({position:'absolute',top:p.y,left:p.x}).addClass('isPinned');this.store('scrollFixer',(function(){if(this.retrieve('pinned'))
var scroll=window.getScroll();this.setStyles({top:pos.top.toInt()+scroll.y,left:pos.left.toInt()+scroll.x});}).bind(this));window.addEvent('scroll',this.retrieve('scrollFixer'));}
this.store('pinned',true);}}else{var op;if(!Browser.Engine.trident){var parent=this.getParent();op=(parent.getComputedStyle('position')!='static'?parent:parent.getOffsetParent());}
p=this.getPosition(op);this.store('pinned',false);var reposition;if(supportsPositionFixed&&!this.retrieve('pinnedByJS')){reposition={top:p.y+scroll.y,left:p.x+scroll.x};}else{this.store('pinnedByJS',false);window.removeEvent('scroll',this.retrieve('scrollFixer'));reposition={top:p.y,left:p.x};}
this.setStyles($merge(reposition,{position:'absolute'})).removeClass('isPinned');}
return this;},unpin:function(){return this.pin(false);},togglepin:function(){this.pin(!this.retrieve('pinned'));}});})();(function(){var original=Element.prototype.position;Element.implement({position:function(options){if(options&&($defined(options.x)||$defined(options.y)))return original?original.apply(this,arguments):this;$each(options||{},function(v,k){if(!$defined(v))delete options[k];});options=$merge({relativeTo:document.body,position:{x:'center',y:'center'},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false,ignoreScroll:false,allowNegative:false},options);var parentOffset={x:0,y:0},parentPositioned=false;var offsetParent=this.measure(function(){return document.id(this.getOffsetParent());});if(offsetParent&&offsetParent!=this.getDocument().body){parentOffset=offsetParent.measure(function(){return this.getPosition();});parentPositioned=offsetParent!=document.id(options.relativeTo);options.offset.x=options.offset.x-parentOffset.x;options.offset.y=options.offset.y-parentOffset.y;}
var fixValue=function(option){if($type(option)!='string')return option;option=option.toLowerCase();var val={};if(option.test('left'))val.x='left';else if(option.test('right'))val.x='right';else val.x='center';if(option.test('upper')||option.test('top'))val.y='top';else if(option.test('bottom'))val.y='bottom';else val.y='center';return val;};options.edge=fixValue(options.edge);options.position=fixValue(options.position);if(!options.edge){if(options.position.x=='center'&&options.position.y=='center')options.edge={x:'center',y:'center'};else options.edge={x:'left',y:'top'};}
this.setStyle('position','absolute');var rel=document.id(options.relativeTo)||document.body,calc=rel==document.body?window.getScroll():rel.getPosition(),top=calc.y,left=calc.x;var dim=this.getDimensions({computeSize:true,styles:['padding','border','margin']});var pos={},prefY=options.offset.y,prefX=options.offset.x,winSize=window.getSize();switch(options.position.x){case'left':pos.x=left+prefX;break;case'right':pos.x=left+prefX+rel.offsetWidth;break;default:pos.x=left+((rel==document.body?winSize.x:rel.offsetWidth)/2)+prefX;break;}
switch(options.position.y){case'top':pos.y=top+prefY;break;case'bottom':pos.y=top+prefY+rel.offsetHeight;break;default:pos.y=top+((rel==document.body?winSize.y:rel.offsetHeight)/2)+prefY;break;}
if(options.edge){var edgeOffset={};switch(options.edge.x){case'left':edgeOffset.x=0;break;case'right':edgeOffset.x=-dim.x-dim.computedRight-dim.computedLeft;break;default:edgeOffset.x=-(dim.totalWidth/2);break;}
switch(options.edge.y){case'top':edgeOffset.y=0;break;case'bottom':edgeOffset.y=-dim.y-dim.computedTop-dim.computedBottom;break;default:edgeOffset.y=-(dim.totalHeight/2);break;}
pos.x+=edgeOffset.x;pos.y+=edgeOffset.y;}
pos={left:((pos.x>=0||parentPositioned||options.allowNegative)?pos.x:0).toInt(),top:((pos.y>=0||parentPositioned||options.allowNegative)?pos.y:0).toInt()};var xy={left:'x',top:'y'};['minimum','maximum'].each(function(minmax){['left','top'].each(function(lr){var val=options[minmax]?options[minmax][xy[lr]]:null;if(val!=null&&pos[lr]<val)pos[lr]=val;});});if(rel.getStyle('position')=='fixed'||options.relFixedPosition){var winScroll=window.getScroll();pos.top+=winScroll.y;pos.left+=winScroll.x;}
if(options.ignoreScroll){var relScroll=rel.getScroll();pos.top-=relScroll.y;pos.left-=relScroll.x;}
if(options.ignoreMargins){pos.left+=(options.edge.x=='right'?dim['margin-right']:options.edge.x=='center'?-dim['margin-left']+((dim['margin-right']+dim['margin-left'])/2):-dim['margin-left']);pos.top+=(options.edge.y=='bottom'?dim['margin-bottom']:options.edge.y=='center'?-dim['margin-top']+((dim['margin-bottom']+dim['margin-top'])/2):-dim['margin-top']);}
pos.left=Math.ceil(pos.left);pos.top=Math.ceil(pos.top);if(options.returnPos)return pos;else this.setStyles(pos);return this;}});})();Element.implement({isDisplayed:function(){return this.getStyle('display')!='none';},isVisible:function(){var w=this.offsetWidth,h=this.offsetHeight;return(w==0&&h==0)?false:(w>0&&h>0)?true:this.isDisplayed();},toggle:function(){return this[this.isDisplayed()?'hide':'show']();},hide:function(){var d;try{d=this.getStyle('display');}catch(e){}
return this.store('originalDisplay',d||'').setStyle('display','none');},show:function(display){display=display||this.retrieve('originalDisplay')||'block';return this.setStyle('display',(display=='none')?'block':display);},swapClass:function(remove,add){return this.removeClass(remove).addClass(add);}});if(!window.Form)window.Form={};(function(){Form.Request=new Class({Binds:['onSubmit','onFormValidate'],Implements:[Options,Events,Class.Occlude],options:{requestOptions:{evalScripts:true,useSpinner:true,emulation:false,link:'ignore'},extraData:{},resetForm:true},property:'form.request',initialize:function(form,update,options){this.element=document.id(form);if(this.occlude())return this.occluded;this.update=document.id(update);this.setOptions(options);this.makeRequest();if(this.options.resetForm){this.request.addEvent('success',function(){$try(function(){this.element.reset();}.bind(this));if(window.OverText)OverText.update();}.bind(this));}
this.attach();},toElement:function(){return this.element;},makeRequest:function(){this.request=new Request.HTML($merge({update:this.update,emulation:false,spinnerTarget:this.element,method:this.element.get('method')||'post'},this.options.requestOptions)).addEvents({success:function(text,xml){['complete','success'].each(function(evt){this.fireEvent(evt,[this.update,text,xml]);},this);}.bind(this),failure:function(xhr){this.fireEvent('complete').fireEvent('failure',xhr);}.bind(this),exception:function(){this.fireEvent('failure',xhr);}.bind(this)});},attach:function(attach){attach=$pick(attach,true);method=attach?'addEvent':'removeEvent';var fv=this.element.retrieve('validator');if(fv)fv[method]('onFormValidate',this.onFormValidate);if(!fv||!attach)this.element[method]('submit',this.onSubmit);},detach:function(){this.attach(false);},enable:function(){this.attach();},disable:function(){this.detach();},onFormValidate:function(valid,form,e){var fv=this.element.retrieve('validator');if(valid||(fv&&!fv.options.stopOnFailure)){if(e&&e.stop)e.stop();this.send();}},onSubmit:function(e){if(this.element.retrieve('validator')){this.detach();return;}
e.stop();this.send();},send:function(){var str=this.element.toQueryString().trim();var data=$H(this.options.extraData).toQueryString();if(str)str+="&"+data;else str=data;this.fireEvent('send',[this.element,str.parseQueryString()]);this.request.send({data:str,url:this.element.get("action")});return this;}});Element.Properties.formRequest={set:function(){var opt=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});var update=opt.update||opt.updateId;var updater=this.retrieve('form.request');if(update){if(updater)updater.update=document.id(update);this.store('form.request:update',update);}
if(opt.options){if(updater)updater.setOptions(opt.options);this.store('form.request:options',opt.options);}
return this;},get:function(){var opt=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});var update=opt.update||opt.updateId;if(opt.options||update||!this.retrieve('form.request')){if(opt.options||!this.retrieve('form.request:options'))this.set('form.request',opt.options);if(update)this.set('form.request',update);this.store('form.request',new Form.Request(this,this.retrieve('form.request:update'),this.retrieve('form.request:options')));}
return this.retrieve('form.request');}};Element.implement({formUpdate:function(update,options){this.get('form.request',update,options).send();return this;}});})();Form.Request.Append=new Class({Extends:Form.Request,options:{useReveal:true,revealOptions:{},inject:'bottom'},makeRequest:function(){this.request=new Request.HTML($merge({url:this.element.get('action'),method:this.element.get('method')||'post',spinnerTarget:this.element},this.options.requestOptions,{evalScripts:false})).addEvents({success:function(tree,elements,html,javascript){var container;var kids=Elements.from(html);if(kids.length==1){container=kids[0];}else{container=new Element('div',{styles:{display:'none'}}).adopt(kids);}
container.inject(this.update,this.options.inject);if(this.options.requestOptions.evalScripts)$exec(javascript);this.fireEvent('beforeEffect',container);var finish=function(){this.fireEvent('success',[container,this.update,tree,elements,html,javascript]);}.bind(this);if(this.options.useReveal){container.get('reveal',this.options.revealOptions).chain(finish);container.reveal();}else{finish();}}.bind(this),failure:function(xhr){this.fireEvent('failure',xhr);}.bind(this)});}});if(!window.Form)window.Form={};var InputValidator=new Class({Implements:[Options],options:{errorMsg:'Validation failed.',test:function(field){return true;}},initialize:function(className,options){this.setOptions(options);this.className=className;},test:function(field,props){if(document.id(field))return this.options.test(document.id(field),props||this.getProps(field));else return false;},getError:function(field,props){var err=this.options.errorMsg;if($type(err)=='function')err=err(document.id(field),props||this.getProps(field));return err;},getProps:function(field){if(!document.id(field))return{};return field.get('validatorProps');}});Element.Properties.validatorProps={set:function(props){return this.eliminate('validatorProps').store('validatorProps',props);},get:function(props){if(props)this.set(props);if(this.retrieve('validatorProps'))return this.retrieve('validatorProps');if(this.getProperty('validatorProps')){try{this.store('validatorProps',JSON.decode(this.getProperty('validatorProps')));}catch(e){return{};}}else{var vals=this.get('class').split(' ').filter(function(cls){return cls.test(':');});if(!vals.length){this.store('validatorProps',{});}else{props={};vals.each(function(cls){var split=cls.split(':');if(split[1]){try{props[split[0]]=JSON.decode(split[1]);}catch(e){}}});this.store('validatorProps',props);}}
return this.retrieve('validatorProps');}};Form.Validator=new Class({Implements:[Options,Events],Binds:['onSubmit'],options:{fieldSelectors:'input, select, textarea',ignoreHidden:true,ignoreDisabled:true,useTitles:false,evaluateOnSubmit:true,evaluateFieldsOnBlur:true,evaluateFieldsOnChange:true,serial:true,stopOnFailure:true,warningPrefix:function(){return Form.Validator.getMsg('warningPrefix')||'Warning: ';},errorPrefix:function(){return Form.Validator.getMsg('errorPrefix')||'Error: ';}},initialize:function(form,options){this.setOptions(options);this.element=document.id(form);this.element.store('validator',this);this.warningPrefix=$lambda(this.options.warningPrefix)();this.errorPrefix=$lambda(this.options.errorPrefix)();if(this.options.evaluateOnSubmit)this.element.addEvent('submit',this.onSubmit);if(this.options.evaluateFieldsOnBlur||this.options.evaluateFieldsOnChange)this.watchFields(this.getFields());},toElement:function(){return this.element;},getFields:function(){return(this.fields=this.element.getElements(this.options.fieldSelectors));},watchFields:function(fields){fields.each(function(el){if(this.options.evaluateFieldsOnBlur)
el.addEvent('blur',this.validationMonitor.pass([el,false],this));if(this.options.evaluateFieldsOnChange)
el.addEvent('change',this.validationMonitor.pass([el,true],this));},this);},validationMonitor:function(){$clear(this.timer);this.timer=this.validateField.delay(50,this,arguments);},onSubmit:function(event){if(!this.validate(event)&&event)event.preventDefault();else this.reset();},reset:function(){this.getFields().each(this.resetField,this);return this;},validate:function(event){var result=this.getFields().map(function(field){return this.validateField(field,true);},this).every(function(v){return v;});this.fireEvent('formValidate',[result,this.element,event]);if(this.options.stopOnFailure&&!result&&event)event.preventDefault();return result;},validateField:function(field,force){if(this.paused)return true;field=document.id(field);var passed=!field.hasClass('validation-failed');var failed,warned;if(this.options.serial&&!force){failed=this.element.getElement('.validation-failed');warned=this.element.getElement('.warning');}
if(field&&(!failed||force||field.hasClass('validation-failed')||(failed&&!this.options.serial))){var validators=field.className.split(' ').some(function(cn){return this.getValidator(cn);},this);var validatorsFailed=[];field.className.split(' ').each(function(className){if(className&&!this.test(className,field))validatorsFailed.include(className);},this);passed=validatorsFailed.length===0;if(validators&&!field.hasClass('warnOnly')){if(passed){field.addClass('validation-passed').removeClass('validation-failed');this.fireEvent('elementPass',field);}else{field.addClass('validation-failed').removeClass('validation-passed');this.fireEvent('elementFail',[field,validatorsFailed]);}}
if(!warned){var warnings=field.className.split(' ').some(function(cn){if(cn.test('^warn-')||field.hasClass('warnOnly'))
return this.getValidator(cn.replace(/^warn-/,''));else return null;},this);field.removeClass('warning');var warnResult=field.className.split(' ').map(function(cn){if(cn.test('^warn-')||field.hasClass('warnOnly'))
return this.test(cn.replace(/^warn-/,''),field,true);else return null;},this);}}
return passed;},test:function(className,field,warn){field=document.id(field);if((this.options.ignoreHidden&&!field.isVisible())||(this.options.ignoreDisabled&&field.get('disabled')))return true;var validator=this.getValidator(className);if(field.hasClass('ignoreValidation'))return true;warn=$pick(warn,false);if(field.hasClass('warnOnly'))warn=true;var isValid=validator?validator.test(field):true;if(validator&&field.isVisible())this.fireEvent('elementValidate',[isValid,field,className,warn]);if(warn)return true;return isValid;},resetField:function(field){field=document.id(field);if(field){field.className.split(' ').each(function(className){if(className.test('^warn-'))className=className.replace(/^warn-/,'');field.removeClass('validation-failed');field.removeClass('warning');field.removeClass('validation-passed');},this);}
return this;},stop:function(){this.paused=true;return this;},start:function(){this.paused=false;return this;},ignoreField:function(field,warn){field=document.id(field);if(field){this.enforceField(field);if(warn)field.addClass('warnOnly');else field.addClass('ignoreValidation');}
return this;},enforceField:function(field){field=document.id(field);if(field)field.removeClass('warnOnly').removeClass('ignoreValidation');return this;}});Form.Validator.getMsg=function(key){return MooTools.lang.get('Form.Validator',key);};Form.Validator.adders={validators:{},add:function(className,options){this.validators[className]=new InputValidator(className,options);if(!this.initialize){this.implement({validators:this.validators});}},addAllThese:function(validators){$A(validators).each(function(validator){this.add(validator[0],validator[1]);},this);},getValidator:function(className){return this.validators[className.split(':')[0]];}};$extend(Form.Validator,Form.Validator.adders);Form.Validator.implement(Form.Validator.adders);Form.Validator.add('IsEmpty',{errorMsg:false,test:function(element){if(element.type=='select-one'||element.type=='select')
return!(element.selectedIndex>=0&&element.options[element.selectedIndex].value!='');else
return((element.get('value')==null)||(element.get('value').length==0));}});Form.Validator.addAllThese([['required',{errorMsg:function(){return Form.Validator.getMsg('required');},test:function(element){return!Form.Validator.getValidator('IsEmpty').test(element);}}],['minLength',{errorMsg:function(element,props){if($type(props.minLength))
return Form.Validator.getMsg('minLength').substitute({minLength:props.minLength,length:element.get('value').length});else return'';},test:function(element,props){if($type(props.minLength))return(element.get('value').length>=$pick(props.minLength,0));else return true;}}],['maxLength',{errorMsg:function(element,props){if($type(props.maxLength))
return Form.Validator.getMsg('maxLength').substitute({maxLength:props.maxLength,length:element.get('value').length});else return'';},test:function(element,props){return(element.get('value').length<=$pick(props.maxLength,10000));}}],['validate-integer',{errorMsg:Form.Validator.getMsg.pass('integer'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^(-?[1-9]\d*|0)$/).test(element.get('value'));}}],['validate-numeric',{errorMsg:Form.Validator.getMsg.pass('numeric'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(element.get('value'));}}],['validate-digits',{errorMsg:Form.Validator.getMsg.pass('digits'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^[\d() .:\-\+#]+$/.test(element.get('value')));}}],['validate-alpha',{errorMsg:Form.Validator.getMsg.pass('alpha'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^[a-zA-Z]+$/).test(element.get('value'));}}],['validate-alphanum',{errorMsg:Form.Validator.getMsg.pass('alphanum'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||!(/\W/).test(element.get('value'));}}],['validate-date',{errorMsg:function(element,props){if(Date.parse){var format=props.dateFormat||'%x';return Form.Validator.getMsg('dateSuchAs').substitute({date:new Date().format(format)});}else{return Form.Validator.getMsg('dateInFormatMDY');}},test:function(element,props){if(Form.Validator.getValidator('IsEmpty').test(element))return true;var d;if(Date.parse){var format=props.dateFormat||'%x';d=Date.parse(element.get('value'));var formatted=d.format(format);if(formatted!='invalid date')element.set('value',formatted);return!isNaN(d);}else{var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(element.get('value')))return false;d=new Date(element.get('value').replace(regex,'$1/$2/$3'));return(parseInt(RegExp.$1,10)==(1+d.getMonth()))&&(parseInt(RegExp.$2,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear());}}}],['validate-email',{errorMsg:Form.Validator.getMsg.pass('email'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i).test(element.get('value'));}}],['validate-url',{errorMsg:Form.Validator.getMsg.pass('url'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(element.get('value'));}}],['validate-currency-dollar',{errorMsg:Form.Validator.getMsg.pass('currencyDollar'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(element.get('value'));}}],['validate-one-required',{errorMsg:Form.Validator.getMsg.pass('oneRequired'),test:function(element,props){var p=document.id(props['validate-one-required'])||element.getParent();return p.getElements('input').some(function(el){if(['checkbox','radio'].contains(el.get('type')))return el.get('checked');return el.get('value');});}}]]);Element.Properties.validator={set:function(options){var validator=this.retrieve('validator');if(validator)validator.setOptions(options);return this.store('validator:options');},get:function(options){if(options||!this.retrieve('validator')){if(options||!this.retrieve('validator:options'))this.set('validator',options);this.store('validator',new Form.Validator(this,this.retrieve('validator:options')));}
return this.retrieve('validator');}};Element.implement({validate:function(options){this.set('validator',options);return this.get('validator',options).validate();}});var FormValidator=Form.Validator;Form.Validator.Inline=new Class({Extends:Form.Validator,options:{scrollToErrorsOnSubmit:true,scrollFxOptions:{transition:'quad:out',offset:{y:-20}}},initialize:function(form,options){this.parent(form,options);this.addEvent('onElementValidate',function(isValid,field,className,warn){var validator=this.getValidator(className);if(!isValid&&validator.getError(field)){if(warn)field.addClass('warning');var advice=this.makeAdvice(className,field,validator.getError(field),warn);this.insertAdvice(advice,field);this.showAdvice(className,field);}else{this.hideAdvice(className,field);}});},makeAdvice:function(className,field,error,warn){var errorMsg=(warn)?this.warningPrefix:this.errorPrefix;errorMsg+=(this.options.useTitles)?field.title||error:error;var cssClass=(warn)?'warning-advice':'validation-advice';var advice=this.getAdvice(className,field);if(advice){advice=advice.set('html',errorMsg);}else{advice=new Element('div',{html:errorMsg,styles:{display:'none'},id:'advice-'+className+'-'+this.getFieldId(field)}).addClass(cssClass);}
field.store('advice-'+className,advice);return advice;},getFieldId:function(field){return field.id?field.id:field.id='input_'+field.name;},showAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&!field.retrieve(this.getPropName(className))&&(advice.getStyle('display')=='none'||advice.getStyle('visiblity')=='hidden'||advice.getStyle('opacity')==0)){field.store(this.getPropName(className),true);if(advice.reveal)advice.reveal();else advice.setStyle('display','block');}},hideAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&field.retrieve(this.getPropName(className))){field.store(this.getPropName(className),false);if(advice.dissolve)advice.dissolve();else advice.setStyle('display','none');}},getPropName:function(className){return'advice'+className;},resetField:function(field){field=document.id(field);if(!field)return this;this.parent(field);field.className.split(' ').each(function(className){this.hideAdvice(className,field);},this);return this;},getAllAdviceMessages:function(field,force){var advice=[];if(field.hasClass('ignoreValidation')&&!force)return advice;var validators=field.className.split(' ').some(function(cn){var warner=cn.test('^warn-')||field.hasClass('warnOnly');if(warner)cn=cn.replace(/^warn-/,'');var validator=this.getValidator(cn);if(!validator)return;advice.push({message:validator.getError(field),warnOnly:warner,passed:validator.test(),validator:validator});},this);return advice;},getAdvice:function(className,field){return field.retrieve('advice-'+className);},insertAdvice:function(advice,field){var props=field.get('validatorProps');if(!props.msgPos||!document.id(props.msgPos)){if(field.type.toLowerCase()=='radio')field.getParent().adopt(advice);else advice.inject(document.id(field),'after');}else{document.id(props.msgPos).grab(advice);}},validateField:function(field,force){var result=this.parent(field,force);if(this.options.scrollToErrorsOnSubmit&&!result){var failed=document.id(this).getElement('.validation-failed');var par=document.id(this).getParent();while(par!=document.body&&par.getScrollSize().y==par.getSize().y){par=par.getParent();}
var fx=par.retrieve('fvScroller');if(!fx&&window.Fx&&Fx.Scroll){fx=new Fx.Scroll(par,this.options.scrollFxOptions);par.store('fvScroller',fx);}
if(failed){if(fx)fx.toElement(failed);else par.scrollTo(par.getScroll().x,failed.getPosition(par).y-20);}}
return result;}});Form.Validator.addAllThese([['validate-enforce-oncheck',{test:function(element,props){if(element.checked){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;(props.toEnforce||document.id(props.enforceChildrenOf).getElements('input, select, textarea')).map(function(item){fv.enforceField(item);});}
return true;}}],['validate-ignore-oncheck',{test:function(element,props){if(element.checked){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;(props.toIgnore||document.id(props.ignoreChildrenOf).getElements('input, select, textarea')).each(function(item){fv.ignoreField(item);fv.resetField(item);});}
return true;}}],['validate-nospace',{errorMsg:function(){return Form.Validator.getMsg('noSpace');},test:function(element,props){return!element.get('value').test(/\s/);}}],['validate-toggle-oncheck',{test:function(element,props){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;var eleArr=props.toToggle||document.id(props.toToggleChildrenOf).getElements('input, select, textarea');if(!element.checked){eleArr.each(function(item){fv.ignoreField(item);fv.resetField(item);});}else{eleArr.each(function(item){fv.enforceField(item);});}
return true;}}],['validate-reqchk-bynode',{errorMsg:function(){return Form.Validator.getMsg('reqChkByNode');},test:function(element,props){return(document.id(props.nodeId).getElements(props.selector||'input[type=checkbox], input[type=radio]')).some(function(item){return item.checked;});}}],['validate-required-check',{errorMsg:function(element,props){return props.useTitle?element.get('title'):Form.Validator.getMsg('requiredChk');},test:function(element,props){return!!element.checked;}}],['validate-reqchk-byname',{errorMsg:function(element,props){return Form.Validator.getMsg('reqChkByName').substitute({label:props.label||element.get('type')});},test:function(element,props){var grpName=props.groupName||element.get('name');var oneCheckedItem=$$(document.getElementsByName(grpName)).some(function(item,index){return item.checked;});var fv=element.getParent('form').retrieve('validator');if(oneCheckedItem&&fv)fv.resetField(element);return oneCheckedItem;}}],['validate-match',{errorMsg:function(element,props){return Form.Validator.getMsg('match').substitute({matchName:props.matchName||document.id(props.matchInput).get('name')});},test:function(element,props){var eleVal=element.get('value');var matchVal=document.id(props.matchInput)&&document.id(props.matchInput).get('value');return eleVal&&matchVal?eleVal==matchVal:true;}}],['validate-after-date',{errorMsg:function(element,props){return Form.Validator.getMsg('afterDate').substitute({label:props.afterLabel||(props.afterElement?Form.Validator.getMsg('startDate'):Form.Validator.getMsg('currentDate'))});},test:function(element,props){var start=document.id(props.afterElement)?Date.parse(document.id(props.afterElement).get('value')):new Date();var end=Date.parse(element.get('value'));return end&&start?end>=start:true;}}],['validate-before-date',{errorMsg:function(element,props){return Form.Validator.getMsg('beforeDate').substitute({label:props.beforeLabel||(props.beforeElement?Form.Validator.getMsg('endDate'):Form.Validator.getMsg('currentDate'))});},test:function(element,props){var start=Date.parse(element.get('value'));var end=document.id(props.beforeElement)?Date.parse(document.id(props.beforeElement).get('value')):new Date();return end&&start?end>=start:true;}}],['validate-custom-required',{errorMsg:function(){return Form.Validator.getMsg('required');},test:function(element,props){return element.get('value')!=props.emptyValue;}}],['validate-same-month',{errorMsg:function(element,props){var startMo=document.id(props.sameMonthAs)&&document.id(props.sameMonthAs).get('value');var eleVal=element.get('value');if(eleVal!='')return Form.Validator.getMsg(startMo?'sameMonth':'startMonth');},test:function(element,props){var d1=Date.parse(element.get('value'));var d2=Date.parse(document.id(props.sameMonthAs)&&document.id(props.sameMonthAs).get('value'));return d1&&d2?d1.format('%B')==d2.format('%B'):true;}}],['validate-cc-num',{errorMsg:function(element){var ccNum=element.get('value').replace(/[^0-9]/g,'');return Form.Validator.getMsg('creditcard').substitute({length:ccNum.length});},test:function(element){if(Form.Validator.getValidator('IsEmpty').test(element)){return true;}
var ccNum=element.get('value');ccNum=ccNum.replace(/[^0-9]/g,'');var valid_type=false;if(ccNum.test(/^4[0-9]{12}([0-9]{3})?$/))valid_type='Visa';else if(ccNum.test(/^5[1-5]([0-9]{14})$/))valid_type='Master Card';else if(ccNum.test(/^3[47][0-9]{13}$/))valid_type='American Express';else if(ccNum.test(/^6011[0-9]{12}$/))valid_type='Discover';if(valid_type){var sum=0;var cur=0;for(var i=ccNum.length-1;i>=0;--i){cur=ccNum.charAt(i).toInt();if(cur==0){continue;}
if((ccNum.length-i)%2==0){cur+=cur;}
if(cur>9){cur=cur.toString().charAt(0).toInt()+cur.toString().charAt(1).toInt();}
sum+=cur;}
if((sum%10)==0){return true;}}
var chunks='';while(ccNum!=''){chunks+=' '+ccNum.substr(0,4);ccNum=ccNum.substr(4);}
element.getParent('form').retrieve('validator').ignoreField(element);element.set('value',chunks.clean());element.getParent('form').retrieve('validator').enforceField(element);return false;}}]]);var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:['reposition','assert','focus','hide'],options:{element:'label',positionOptions:{position:'upperLeft',edge:'upperLeft',offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:'OverText',initialize:function(element,options){this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.attach(this.element);OverText.instances.push(this);if(this.options.poll)this.poll();return this;},toElement:function(){return this.element;},attach:function(){var val=this.options.textOverride||this.element.get('alt')||this.element.get('title');if(!val)return;this.text=new Element(this.options.element,{'class':'overTxtLabel',styles:{lineHeight:'normal',position:'absolute',cursor:'text'},html:val,events:{click:this.hide.pass(this.options.element=='label',this)}}).inject(this.element,'after');if(this.options.element=='label'){if(!this.element.get('id'))this.element.set('id','input_'+new Date().getTime());this.text.set('for',this.element.get('id'));}
if(this.options.wrap){this.textHolder=new Element('div',{styles:{lineHeight:'normal',position:'relative'},'class':'overTxtWrapper'}).adopt(this.text).inject(this.element,'before');}
this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert}).store('OverTextDiv',this.text);window.addEvent('resize',this.reposition.bind(this));this.assert(true);this.reposition();},wrap:function(){if(this.options.element=='label'){if(!this.element.get('id'))this.element.set('id','input_'+new Date().getTime());this.text.set('for',this.element.get('id'));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(stop){if(this.poller&&!stop)return this;var test=function(){if(!this.pollingPaused)this.assert(true);}.bind(this);if(stop)$clear(this.poller);else this.poller=test.periodical(this.options.pollInterval,this);return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get('disabled')))return;this.hide();},hide:function(suppressFocus,force){if(this.text&&(this.text.isDisplayed()&&(!this.element.get('disabled')||force))){this.text.hide();this.fireEvent('textHide',[this.text,this.element]);this.pollingPaused=true;if(!suppressFocus){try{this.element.fireEvent('focus');this.element.focus();}catch(e){}}}
return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show();this.reposition();this.fireEvent('textShow',[this.text,this.element]);this.pollingPaused=false;}
return this;},assert:function(suppressFocus){this[this.test()?'show':'hide'](suppressFocus);},test:function(){var v=this.element.get('value');return!v;},reposition:function(){this.assert(true);if(!this.element.isVisible())return this.stopPolling().hide();if(this.text&&this.test())this.text.position($merge(this.options.positionOptions,{relativeTo:this.element}));return this;}});OverText.instances=[];$extend(OverText,{each:function(fn){return OverText.instances.map(function(ot,i){if(ot.element&&ot.text)return fn.apply(OverText,[ot,i]);return null;});},update:function(){return OverText.each(function(ot){return ot.reposition();});},hideAll:function(){return OverText.each(function(ot){return ot.hide(true,true);});},showAll:function(){return OverText.each(function(ot){return ot.show();});}});if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.Engine.trident?'select, input, textarea, object, embed, .overTxtLabel':false});}
Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom)iNow[p]=this.parent(iFrom[p],iTo[p],delta);}
return now;},set:function(now){for(var i in now){var iNow=now[i];for(var p in iNow)this.render(this.elements[i],p,iNow[p],this.options.unit);}
return this;},start:function(obj){if(!this.check(obj))return this;var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}
return this.parent(from,to);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:'click',initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var params=Array.link(arguments,{'container':Element.type,'options':Object.type,'togglers':$defined,'elements':$defined});this.parent(params.elements,params.options);this.togglers=$$(params.togglers);this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide)this.options.wait=true;if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show;}
if(this.options.start){this.options.display=false;this.options.show=false;}
this.effects={};if(this.options.opacity)this.effects.opacity='fullOpacity';if(this.options.width)this.effects.width=this.options.fixedWidth?'fullWidth':'offsetWidth';if(this.options.height)this.effects.height=this.options.fixedHeight?'fullHeight':'scrollHeight';for(var i=0,l=this.togglers.length;i<l;i++)this.addSection(this.togglers[i],this.elements[i]);this.elements.each(function(el,i){if(this.options.show===i){this.fireEvent('active',[this.togglers[i],el]);}else{for(var fx in this.effects)el.setStyle(fx,0);}},this);if($chk(this.options.display)||this.options.initialDisplayFx===false)this.display(this.options.display,this.options.initialDisplayFx);if(this.options.fixedHeight!==false)this.options.returnHeightToAuto=false;this.addEvent('complete',this.internalChain.callChain.bind(this.internalChain));},addSection:function(toggler,element){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);this.togglers.include(toggler);this.elements.include(element);var idx=this.togglers.indexOf(toggler);var displayer=this.display.bind(this,idx);toggler.store('accordion:display',displayer);toggler.addEvent(this.options.trigger,displayer);if(this.options.height)element.setStyles({'padding-top':0,'border-top':'none','padding-bottom':0,'border-bottom':'none'});if(this.options.width)element.setStyles({'padding-left':0,'border-left':'none','padding-right':0,'border-right':'none'});element.fullOpacity=1;if(this.options.fixedWidth)element.fullWidth=this.options.fixedWidth;if(this.options.fixedHeight)element.fullHeight=this.options.fixedHeight;element.setStyle('overflow','hidden');if(!test){for(var fx in this.effects)element.setStyle(fx,0);}
return this;},detach:function(){this.togglers.each(function(toggler){toggler.removeEvent(this.options.trigger,toggler.retrieve('accordion:display'));},this);},display:function(index,useFx){if(!this.check(index,useFx))return this;useFx=$pick(useFx,true);if(this.options.returnHeightToAuto){var prev=this.elements[this.previous];if(prev&&!this.selfHidden){for(var fx in this.effects){prev.setStyle(fx,prev[this.effects[fx]]);}}}
index=($type(index)=='element')?this.elements.indexOf(index):index;if((this.timer&&this.options.wait)||(index===this.previous&&!this.options.alwaysHide))return this;this.previous=index;var obj={};this.elements.each(function(el,i){obj[i]={};var hide;if(i!=index){hide=true;}else if(this.options.alwaysHide&&((el.offsetHeight>0&&this.options.height)||el.offsetWidth>0&&this.options.width)){hide=true;this.selfHidden=true;}
this.fireEvent(hide?'background':'active',[this.togglers[i],el]);for(var fx in this.effects)obj[i][fx]=hide?0:el[this.effects[fx]];},this);this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var el=this.elements[index];if(el)el.setStyle('height','auto');};}.bind(this));return useFx?this.start(obj):this.set(obj);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var params=Array.link(arguments,{'container':Element.type});this.container=params.container;},addSection:function(toggler,element,pos){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);var len=this.togglers.length;if(len&&(!test||pos)){pos=$pick(pos,len-1);toggler.inject(this.togglers[pos],'before');element.inject(toggler,'after');}else if(this.container&&!test){toggler.inject(this.container);element.inject(this.container);}
return this.parent.apply(this,arguments);}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:'center',edge:false,offset:{x:0,y:0}},start:function(destination){return this.parent(this.element.position($merge(this.options,destination,{returnPos:true})));}});Element.Properties.move={set:function(options){var morph=this.retrieve('move');if(morph)morph.cancel();return this.eliminate('move').store('move:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('move')){if(options||!this.retrieve('move:options'))this.set('move',options);this.store('move',new Fx.Move(this,this.retrieve('move:options')));}
return this.retrieve('move');}};Element.implement({move:function(options){this.get('move').start(options);return this;}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:'cancel',styles:['padding','border','margin'],transitionOpacity:!Browser.Engine.trident4,mode:'vertical',display:'block',hideInputs:Browser.Engine.trident?'select, input, textarea, object, embed':false},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle('display')!='none'){this.hiding=true;this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});this.element.setStyle('display',this.options.display);if(this.options.transitionOpacity)startStyles.opacity=1;var zero={};$each(startStyles,function(style,name){zero[name]=[style,0];},this);this.element.setStyle('overflow','hidden');var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(startStyles,function(style,name){startStyles[name]=style;},this);this.element.style.cssText=this.cssText;this.element.setStyle('display','none');if(hideThese)hideThese.setStyle('visibility','visible');}
this.fireEvent('hide',this.element);this.callChain();}.bind(this));if(hideThese)hideThese.setStyle('visibility','hidden');this.start(zero);}else{this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element);}}else if(this.options.link=='chain'){this.chain(this.dissolve.bind(this));}else if(this.options.link=='cancel'&&!this.hiding){this.cancel();this.dissolve();}}catch(e){this.hiding=false;this.element.setStyle('display','none');this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element);}
return this;},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.showing=true;this.hiding=this.hidden=false;var startStyles;this.cssText=this.element.style.cssText;this.element.measure(function(){startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});}.bind(this));$each(startStyles,function(style,name){startStyles[name]=style;});if($chk(this.options.heightOverride))startStyles.height=this.options.heightOverride.toInt();if($chk(this.options.widthOverride))startStyles.width=this.options.widthOverride.toInt();if(this.options.transitionOpacity){this.element.setStyle('opacity',0);startStyles.opacity=1;}
var zero={height:0,display:this.options.display};$each(startStyles,function(style,name){zero[name]=0;});this.element.setStyles($merge(zero,{overflow:'hidden'}));var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;if(hideThese)hideThese.setStyle('visibility','hidden');this.start(startStyles);this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle('display',this.options.display);if(!this.hidden)this.showing=false;if(hideThese)hideThese.setStyle('visibility','visible');this.callChain();this.fireEvent('show',this.element);}.bind(this));}else{this.callChain();this.fireEvent('complete',this.element);this.fireEvent('show',this.element);}}else if(this.options.link=='chain'){this.chain(this.reveal.bind(this));}else if(this.options.link=='cancel'&&!this.showing){this.cancel();this.reveal();}}catch(e){this.element.setStyles({display:this.options.display,visiblity:'visible',opacity:1});this.showing=false;this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('show',this.element);}
return this;},toggle:function(){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.reveal();}else{this.dissolve();}
return this;},cancel:function(){this.parent.apply(this,arguments);this.element.style.cssText=this.cssText;this.hidding=false;this.showing=false;}});Element.Properties.reveal={set:function(options){var reveal=this.retrieve('reveal');if(reveal)reveal.cancel();return this.eliminate('reveal').store('reveal:options',options);},get:function(options){if(options||!this.retrieve('reveal')){if(options||!this.retrieve('reveal:options'))this.set('reveal',options);this.store('reveal',new Fx.Reveal(this,this.retrieve('reveal:options')));}
return this.retrieve('reveal');}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get('reveal',options).reveal();return this;},dissolve:function(options){this.get('reveal',options).dissolve();return this;},nix:function(){var params=Array.link(arguments,{destroy:Boolean.type,options:Object.type});this.get('reveal',params.options).dissolve().chain(function(){this[params.destroy?'destroy':'dispose']();}.bind(this));return this;},wink:function(){var params=Array.link(arguments,{duration:Number.type,options:Object.type});var reveal=this.get('reveal',params.options);reveal.reveal().chain(function(){(function(){reveal.dissolve();}).delay(params.duration||2000);});}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);var cancel=this.cancel.bind(this,false);if($type(this.element)!='element')this.element=document.id(this.element.getDocument().body);var stopper=this.element;if(this.options.wheelStops){this.addEvent('start',function(){stopper.addEvent('mousewheel',cancel);},true);this.addEvent('complete',function(){stopper.removeEvent('mousewheel',cancel);},true);}},set:function(){var now=Array.flatten(arguments);if(Browser.Engine.gecko)now=[Math.round(now[0]),Math.round(now[1])];this.element.scrollTo(now[0],now[1]);},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(x,y){if(!this.check(x,y))return this;var scrollSize=this.element.getScrollSize(),scroll=this.element.getScroll(),values={x:x,y:y};for(var z in values){var max=scrollSize[z];if($chk(values[z]))values[z]=($type(values[z])=='number')?values[z]:max;else values[z]=scroll[z];values[z]+=this.options.offset[z];}
return this.parent([scroll.x,scroll.y],[values.x,values.y]);},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start('right',false);},toBottom:function(){return this.start(false,'bottom');},toElement:function(el){var position=document.id(el).getPosition(this.element);return this.start(position.x,position.y);},scrollIntoView:function(el,axes,offset){axes=axes?$splat(axes):['x','y'];var to={};el=document.id(el);var pos=el.getPosition(this.element);var size=el.getSize();var scroll=this.element.getScroll();var containerSize=this.element.getSize();var edge={x:pos.x+size.x,y:pos.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis])to[axis]=edge[axis]-containerSize[axis];if(pos[axis]<scroll[axis])to[axis]=pos[axis];}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;},scrollToCenter:function(el,axes,offset){axes=axes?$splat(axes):['x','y'];el=$(el);var to={},pos=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize(),edge={x:pos.x+size.x,y:pos.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){to[axis]=pos[axis]-(containerSize[axis]-size[axis])/2;}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;}});Fx.Slide=new Class({Extends:Fx,options:{mode:'vertical',wrapper:false,hideOverflow:true},initialize:function(element,options){this.addEvent('complete',function(){this.open=(this.wrapper['offset'+this.layout.capitalize()]!=0);if(this.open)this.wrapper.setStyle('height','');if(this.open&&Browser.Engine.webkit419)this.element.dispose().inject(this.wrapper);},true);this.element=this.subject=document.id(element);this.parent(options);var wrapper=this.element.retrieve('wrapper');var styles=this.element.getStyles('margin','position','overflow');if(this.options.hideOverflow)styles=$extend(styles,{overflow:'hidden'});if(this.options.wrapper)wrapper=document.id(this.options.wrapper).setStyles(styles);this.wrapper=wrapper||new Element('div',{styles:styles}).wraps(this.element);this.element.store('wrapper',this.wrapper).setStyle('margin',0);this.now=[];this.open=true;},vertical:function(){this.margin='margin-top';this.layout='height';this.offset=this.element.offsetHeight;},horizontal:function(){this.margin='margin-left';this.layout='width';this.offset=this.element.offsetWidth;},set:function(now){this.element.setStyle(this.margin,now[0]);this.wrapper.setStyle(this.layout,now[1]);return this;},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(how,mode){if(!this.check(how,mode))return this;this[mode||this.options.mode]();var margin=this.element.getStyle(this.margin).toInt();var layout=this.wrapper.getStyle(this.layout).toInt();var caseIn=[[margin,layout],[0,this.offset]];var caseOut=[[margin,layout],[-this.offset,0]];var start;switch(how){case'in':start=caseIn;break;case'out':start=caseOut;break;case'toggle':start=(layout==0)?caseIn:caseOut;}
return this.parent(start[0],start[1]);},slideIn:function(mode){return this.start('in',mode);},slideOut:function(mode){return this.start('out',mode);},hide:function(mode){this[mode||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(mode){this[mode||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(mode){return this.start('toggle',mode);}});Element.Properties.slide={set:function(options){var slide=this.retrieve('slide');if(slide)slide.cancel();return this.eliminate('slide').store('slide:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('slide')){if(options||!this.retrieve('slide:options'))this.set('slide',options);this.store('slide',new Fx.Slide(this,this.retrieve('slide:options')));}
return this.retrieve('slide');}};Element.implement({slide:function(how,mode){how=how||'toggle';var slide=this.get('slide'),toggle;switch(how){case'hide':slide.hide(mode);break;case'show':slide.show(mode);break;case'toggle':var flag=this.retrieve('slide:flag',slide.open);slide[flag?'slideOut':'slideIn'](mode);this.store('slide:flag',!flag);toggle=true;break;default:slide.start(how,mode);}
if(!toggle)this.eliminate('slide:flag');return this;}});var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(options,context){context=context||document;this.doc=context.getDocument();var win=context.getWindow();this.parent(this.doc,options);this.links=$$(this.options.links||this.doc.links);var location=win.location.href.match(/^[^#]*/)[0]+'#';this.links.each(function(link){if(link.href.indexOf(location)!=0){return;}
var anchor=link.href.substr(location.length);if(anchor)this.useLink(link,anchor);},this);if(!Browser.Engine.webkit419){this.addEvent('complete',function(){win.location.hash=this.anchor;},true);}},useLink:function(link,anchor){var el;link.addEvent('click',function(event){if(el!==false&&!el)el=document.id(anchor)||this.doc.getElement('a[name='+anchor+']');if(el){event.preventDefault();this.anchor=anchor;this.toElement(el).chain(function(){this.fireEvent('scrolledTo',[link,el]);}.bind(this));link.blur();}}.bind(this));}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:'vertical'},initialize:function(elements,options){this.parent(elements,options);this.elements.each(function(el){if(el.getStyle('position')=='static')el.setStyle('position','relative');});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(el,index){return index;});},sort:function(newOrder){if($type(newOrder)!='array')return false;var top=0,left=0,next={},zero={},vert=this.options.mode=='vertical';var current=this.elements.map(function(el,index){var size=el.getComputedSize({styles:['border','padding','margin']});var val;if(vert){val={top:top,margin:size['margin-top'],height:size.totalHeight};top+=val.height-size['margin-top'];}else{val={left:left,margin:size['margin-left'],width:size.totalWidth};left+=val.width;}
var plain=vert?'top':'left';zero[index]={};var start=el.getStyle(plain).toInt();zero[index][plain]=start||0;return val;},this);this.set(zero);newOrder=newOrder.map(function(i){return i.toInt();});if(newOrder.length!=this.elements.length){this.currentOrder.each(function(index){if(!newOrder.contains(index))newOrder.push(index);});if(newOrder.length>this.elements.length)
newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length);}
var margin=top=left=0;newOrder.each(function(item,index){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height;}else{newPos.left=left-current[item].left;left+=current[item].width;}
margin=margin+current[item].margin;next[item]=newPos;},this);var mapped={};$A(newOrder).sort().each(function(index){mapped[index]=next[index];});this.start(mapped);this.currentOrder=newOrder;return this;},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle('opacity',0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}));},this);this.elements.setStyle('opacity',1);this.elements=$$(rearranged);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(el,index){return index;});},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el);},this));},swap:function(one,two){if($type(one)=='element')one=this.elements.indexOf(one);if($type(two)=='element')two=this.elements.indexOf(two);var newOrder=$A(this.currentOrder);newOrder[this.currentOrder.indexOf(one)]=two;newOrder[this.currentOrder.indexOf(two)]=one;return this.sort(newOrder);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:'px',grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:'left',y:'top'}},initialize:function(){var params=Array.link(arguments,{'options':Object.type,'element':$defined});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=$type(this.options.handle);this.handles=((htype=='array'||htype=='collection')?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={'now':{},'pos':{}};this.value={'start':{},'now':{}};this.selection=(Browser.Engine.trident)?'selectstart':'mousedown';this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach();},attach:function(){this.handles.addEvent('mousedown',this.bound.start);return this;},detach:function(){this.handles.removeEvent('mousedown',this.bound.start);return this;},start:function(event){if(event.rightClick)return;if(this.options.preventDefault)event.preventDefault();if(this.options.stopPropagation)event.stopPropagation();this.mouse.start=event.page;this.fireEvent('beforeStart',this.element);var limit=this.options.limit;this.limit={x:[],y:[]};for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;if(this.options.style)this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();else this.value.now[z]=this.element[this.options.modifiers[z]];if(this.options.invert)this.value.now[z]*=-1;this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=2;i--;i){if($chk(limit[z][i]))this.limit[z][i]=$lambda(limit[z][i])();}}}
if($type(this.options.grid)=='number')this.options.grid={x:this.options.grid,y:this.options.grid};this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(event){if(this.options.preventDefault)event.preventDefault();var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent('start',[this.element,event]).fireEvent('snap',this.element);}},drag:function(event){if(this.options.preventDefault)event.preventDefault();this.mouse.now=event.page;for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(this.options.invert)this.value.now[z]*=-1;if(this.options.limit&&this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];}else if($chk(this.limit[z][0])&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];}}
if(this.options.grid[z])this.value.now[z]-=((this.value.now[z]-(this.limit[z][0]||0))%this.options.grid[z]);if(this.options.style){this.element.setStyle(this.options.modifiers[z],this.value.now[z]+this.options.unit);}else{this.element[this.options.modifiers[z]]=this.value.now[z];}}
this.fireEvent('drag',[this.element,event]);},cancel:function(event){this.document.removeEvent('mousemove',this.bound.check);this.document.removeEvent('mouseup',this.bound.cancel);if(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent('cancel',this.element);}},stop:function(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent('mousemove',this.bound.drag);this.document.removeEvent('mouseup',this.bound.stop);if(event)this.fireEvent('complete',[this.element,event]);}});Element.implement({makeResizable:function(options){var drag=new Drag(this,$merge({modifiers:{x:'width',y:'height'}},options));this.store('resizer',drag);return drag.addEvent('drag',function(){this.fireEvent('resize',drag);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(element,options){this.parent(element,options);element=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!='element')
this.container=document.id(this.container.getDocument().body);var styles=element.getStyles('left','top','position');if(styles.left=='auto'||styles.top=='auto')
element.setPosition(element.getPosition(element.getOffsetParent()));if(styles.position=='static')
element.setStyle('position','absolute');this.addEvent('start',this.checkDroppables,true);this.overed=null;},start:function(event){if(this.container)this.options.limit=this.calculateLimit();if(this.options.precalculate){this.positions=this.droppables.map(function(el){return el.getCoordinates();});}
this.parent(event);},calculateLimit:function(){var offsetParent=this.element.getOffsetParent(),containerCoordinates=this.container.getCoordinates(offsetParent),containerBorder={},elementMargin={},elementBorder={},containerMargin={},offsetParentPadding={};['top','right','bottom','left'].each(function(pad){containerBorder[pad]=this.container.getStyle('border-'+pad).toInt();elementBorder[pad]=this.element.getStyle('border-'+pad).toInt();elementMargin[pad]=this.element.getStyle('margin-'+pad).toInt();containerMargin[pad]=this.container.getStyle('margin-'+pad).toInt();offsetParentPadding[pad]=offsetParent.getStyle('padding-'+pad).toInt();},this);var width=this.element.offsetWidth+elementMargin.left+elementMargin.right,height=this.element.offsetHeight+elementMargin.top+elementMargin.bottom,left=0,top=0,right=containerCoordinates.right-containerBorder.right-width,bottom=containerCoordinates.bottom-containerBorder.bottom-height;if(this.options.includeMargins){left+=elementMargin.left;top+=elementMargin.top;}else{right+=elementMargin.right;bottom+=elementMargin.bottom;}
if(this.element.getStyle('position')=='relative'){var coords=this.element.getCoordinates(offsetParent);coords.left-=this.element.getStyle('left').toInt();coords.top-=this.element.getStyle('top').toInt();left+=containerBorder.left-coords.left;top+=containerBorder.top-coords.top;right+=elementMargin.left-coords.left;bottom+=elementMargin.top-coords.top;if(this.container!=offsetParent){left+=containerMargin.left+offsetParentPadding.left;top+=(Browser.Engine.trident4?0:containerMargin.top)+offsetParentPadding.top;}}else{left-=elementMargin.left;top-=elementMargin.top;if(this.container==offsetParent){right-=containerBorder.left;bottom-=containerBorder.top;}else{left+=containerCoordinates.left+containerBorder.left;top+=containerCoordinates.top+containerBorder.top;}}
return{x:[left,right],y:[top,bottom]};},checkAgainst:function(el,i){el=(this.positions)?this.positions[i]:el.getCoordinates();var now=this.mouse.now;return(now.x>el.left&&now.x<el.right&&now.y<el.bottom&&now.y>el.top);},checkDroppables:function(){var overed=this.droppables.filter(this.checkAgainst,this).getLast();if(this.overed!=overed){if(this.overed)this.fireEvent('leave',[this.element,this.overed]);if(overed)this.fireEvent('enter',[this.element,overed]);this.overed=overed;}},drag:function(event){this.parent(event);if(this.options.checkDroppables&&this.droppables.length)this.checkDroppables();},stop:function(event){this.checkDroppables();this.fireEvent('drop',[this.element,this.overed,event]);this.overed=null;return this.parent(event);}});Element.implement({makeDraggable:function(options){var drag=new Drag.Move(this,options);this.store('dragger',drag);return drag;}});var Slider=new Class({Implements:[Events,Options],Binds:['clickedElement','draggedKnob','scrolledElement'],options:{onTick:function(position){if(this.options.snap)position=this.toPosition(this.step);this.knob.setStyle(this.property,position);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:'horizontal'},initialize:function(element,knob,options){this.setOptions(options);this.element=document.id(element);this.knob=document.id(knob);this.previousChange=this.previousEnd=this.step=-1;var offset,limit={},modifiers={'x':false,'y':false};switch(this.options.mode){case'vertical':this.axis='y';this.property='top';offset='offsetHeight';break;case'horizontal':this.axis='x';this.property='left';offset='offsetWidth';}
this.full=this.element.measure(function(){this.half=this.knob[offset]/2;return this.element[offset]-this.knob[offset]+(this.options.offset*2);}.bind(this));this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);this.knob.setStyle('position','relative').setStyle(this.property,this.options.initialStep?this.toPosition(this.options.initialStep):-this.options.offset);modifiers[this.axis]=this.property;limit[this.axis]=[-this.options.offset,this.full-this.options.offset];var dragOptions={snap:0,limit:limit,modifiers:modifiers,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(this.options.snap){dragOptions.grid=Math.ceil(this.stepWidth);dragOptions.limit[this.axis][1]=this.full;}
this.drag=new Drag(this.knob,dragOptions);this.attach();},attach:function(){this.element.addEvent('mousedown',this.clickedElement);if(this.options.wheel)this.element.addEvent('mousewheel',this.scrolledElement);this.drag.attach();return this;},detach:function(){this.element.removeEvent('mousedown',this.clickedElement);this.element.removeEvent('mousewheel',this.scrolledElement);this.drag.detach();return this;},set:function(step){if(!((this.range>0)^(step<this.min)))step=this.min;if(!((this.range>0)^(step>this.max)))step=this.max;this.step=Math.round(step);this.checkStep();this.fireEvent('tick',this.toPosition(this.step));this.end();return this;},clickedElement:function(event){if(this.isDragging||event.target==this.knob)return;var dir=this.range<0?-1:1;var position=event.page[this.axis]-this.element.getPosition()[this.axis]-this.half;position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();this.fireEvent('tick',position);this.end();},scrolledElement:function(event){var mode=(this.options.mode=='horizontal')?(event.wheel<0):(event.wheel>0);this.set(mode?this.step-this.stepSize:this.step+this.stepSize);event.stop();},draggedKnob:function(){var dir=this.range<0?-1:1;var position=this.drag.value.now[this.axis];position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent('change',this.step);}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent('complete',this.step+'');}},toStep:function(position){var step=(position+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(step-=step%this.stepSize):step;},toPosition:function(step){return(this.full*Math.abs(this.min-step))/(this.steps*this.stepSize)-this.options.offset;}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false},initialize:function(lists,options){this.setOptions(options);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(lists)||lists));if(!this.options.clone)this.options.revert=false;if(this.options.revert)this.effect=new Fx.Morph(null,$merge({duration:250,link:'cancel'},this.options.revert));},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(element){this.elements.push(element);var start=element.retrieve('sortables:start',this.start.bindWithEvent(this,element));(this.options.handle?element.getElement(this.options.handle)||element:element).addEvent('mousedown',start);},this);return this;},addLists:function(){Array.flatten(arguments).each(function(list){this.lists.push(list);this.addItems(list.getChildren());},this);return this;},removeItems:function(){return $$(Array.flatten(arguments).map(function(element){this.elements.erase(element);var start=element.retrieve('sortables:start');(this.options.handle?element.getElement(this.options.handle)||element:element).removeEvent('mousedown',start);return element;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(list){this.lists.erase(list);this.removeItems(list.getChildren());return list;},this));},getClone:function(event,element){if(!this.options.clone)return new Element('div').inject(document.body);if($type(this.options.clone)=='function')return this.options.clone.call(this,event,element,this.list);var clone=element.clone(true).setStyles({margin:'0px',position:'absolute',visibility:'hidden','width':element.getStyle('width')});if(clone.get('html').test('radio')){clone.getElements('input[type=radio]').each(function(input,i){input.set('name','clone_'+i);});}
return clone.inject(this.list).setPosition(element.getPosition(element.getOffsetParent()));},getDroppables:function(){var droppables=this.list.getChildren();if(!this.options.constrain)droppables=this.lists.concat(droppables).erase(this.list);return droppables.erase(this.clone).erase(this.element);},insert:function(dragging,element){var where='inside';if(this.lists.contains(element)){this.list=element;this.drag.droppables=this.getDroppables();}else{where=this.element.getAllPrevious().contains(element)?'before':'after';}
this.element.inject(element,where);this.fireEvent('sort',[this.element,this.clone]);},start:function(event,element){if(!this.idle)return;this.idle=false;this.element=element;this.opacity=element.get('opacity');this.list=element.getParent();this.clone=this.getClone(event,element);this.drag=new Drag.Move(this.clone,{snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){event.stop();this.clone.setStyle('visibility','visible');this.element.set('opacity',this.options.opacity||0);this.fireEvent('start',[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,'before');this.drag.start(event);},end:function(){this.drag.detach();this.element.set('opacity',this.opacity);if(this.effect){var dim=this.element.getStyles('width','height');var pos=this.clone.computePosition(this.element.getPosition(this.clone.offsetParent));this.effect.element=this.clone;this.effect.start({top:pos.top,left:pos.left,width:dim.width,height:dim.height,opacity:0.25}).chain(this.reset.bind(this));}else{this.reset();}},reset:function(){this.idle=true;this.clone.destroy();this.fireEvent('complete',this.element);},serialize:function(){var params=Array.link(arguments,{modifier:Function.type,index:$defined});var serial=this.lists.map(function(list){return list.getChildren().map(params.modifier||function(element){return element.get('id');},this);},this);var index=params.index;if(this.lists.length==1)index=0;return $chk(index)&&index>=0&&index<this.lists.length?serial[index]:serial;}});Request.JSONP=new Class({Implements:[Chain,Events,Options,Log],options:{url:'',data:{},retries:0,timeout:0,link:'ignore',callbackKey:'callback',injectScript:document.head},initialize:function(options){this.setOptions(options);if(this.options.log)this.enableLog();this.running=false;this.requests=0;this.triesRemaining=[];},check:function(){if(!this.running)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.bind(this,arguments));return false;}
return false;},send:function(options){if(!$chk(arguments[1])&&!this.check(options))return this;var type=$type(options),old=this.options,index=$chk(arguments[1])?arguments[1]:this.requests++;if(type=='string'||type=='element')options={data:options};options=$extend({data:old.data,url:old.url},options);if(!$chk(this.triesRemaining[index]))this.triesRemaining[index]=this.options.retries;var remaining=this.triesRemaining[index];(function(){var script=this.getScript(options);this.log('JSONP retrieving script with url: '+script.get('src'));this.fireEvent('request',script);this.running=true;(function(){if(remaining){this.triesRemaining[index]=remaining-1;if(script){script.destroy();this.send(options,index).fireEvent('retry',this.triesRemaining[index]);}}else if(script&&this.options.timeout){script.destroy();this.cancel().fireEvent('failure');}}).delay(this.options.timeout,this);}).delay(Browser.Engine.trident?50:0,this);return this;},cancel:function(){if(!this.running)return this;this.running=false;this.fireEvent('cancel');return this;},getScript:function(options){var index=Request.JSONP.counter,data;Request.JSONP.counter++;switch($type(options.data)){case'element':data=document.id(options.data).toQueryString();break;case'object':case'hash':data=Hash.toQueryString(options.data);}
var src=options.url+
(options.url.test('\\?')?'&':'?')+
(options.callbackKey||this.options.callbackKey)+'=Request.JSONP.request_map.request_'+index+
(data?'&'+data:'');if(src.length>2083)this.log('JSONP '+src+' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');var script=new Element('script',{type:'text/javascript',src:src});Request.JSONP.request_map['request_'+index]=function(){this.success(arguments,script);}.bind(this);return script.inject(this.options.injectScript);},success:function(args,script){if(script)script.destroy();this.running=false;this.log('JSONP successfully retrieved: ',args);this.fireEvent('complete',args).fireEvent('success',args).callChain();}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.Queue=new Class({Implements:[Options,Events],Binds:['attach','request','complete','cancel','success','failure','exception'],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(options){if(options){var requests=options.requests;delete options.requests;}
this.setOptions(options);this.requests=new Hash;this.queue=[];this.reqBinders={};if(requests)this.addRequests(requests);},addRequest:function(name,request){this.requests.set(name,request);this.attach(name,request);return this;},addRequests:function(obj){$each(obj,function(req,name){this.addRequest(name,req);},this);return this;},getName:function(req){return this.requests.keyOf(req);},attach:function(name,req){if(req._groupSend)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){if(!this.reqBinders[name])this.reqBinders[name]={};this.reqBinders[name][evt]=function(){this['on'+evt.capitalize()].apply(this,[name,req].extend(arguments));}.bind(this);req.addEvent(evt,this.reqBinders[name][evt]);},this);req._groupSend=req.send;req.send=function(options){this.send(name,options);return req;}.bind(this);return this;},removeRequest:function(req){var name=$type(req)=='object'?this.getName(req):req;if(!name&&$type(name)!='string')return this;req=this.requests.get(name);if(!req)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){req.removeEvent(evt,this.reqBinders[name][evt]);},this);req.send=req._groupSend;delete req._groupSend;return this;},getRunning:function(){return this.requests.filter(function(r){return r.running;});},isRunning:function(){return!!(this.getRunning().getKeys().length);},send:function(name,options){var q=function(){this.requests.get(name)._groupSend(options);this.queue.erase(q);}.bind(this);q.name=name;if(this.getRunning().getKeys().length>=this.options.concurrent||(this.error&&this.options.stopOnFailure))this.queue.push(q);else q();return this;},hasNext:function(name){return(!name)?!!this.queue.length:!!this.queue.filter(function(q){return q.name==name;}).length;},resume:function(){this.error=false;(this.options.concurrent-this.getRunning().getKeys().length).times(this.runNext,this);return this;},runNext:function(name){if(!this.queue.length)return this;if(!name){this.queue[0]();}else{var found;this.queue.each(function(q){if(!found&&q.name==name){found=true;q();}});}
return this;},runAll:function(){this.queue.each(function(q){q();});return this;},clear:function(name){if(!name){this.queue.empty();}else{this.queue=this.queue.map(function(q){if(q.name!=name)return q;else return false;}).filter(function(q){return q;});}
return this;},cancel:function(name){this.requests.get(name).cancel();return this;},onRequest:function(){this.fireEvent('request',arguments);},onComplete:function(){this.fireEvent('complete',arguments);if(!this.queue.length)this.fireEvent('end');},onCancel:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('cancel',arguments);},onSuccess:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('success',arguments);},onFailure:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('failure',arguments);},onException:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('exception',arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(data){var fn=function(){if(!this.running)this.send({data:data});};this.timer=fn.delay(this.options.initialDelay,this);this.lastDelay=this.options.initialDelay;this.completeCheck=function(response){$clear(this.timer);this.lastDelay=(response)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);this.timer=fn.delay(this.lastDelay,this);};return this.addEvent('complete',this.completeCheck);},stopTimer:function(){$clear(this.timer);return this.removeEvent('complete',this.completeCheck);}});var Asset={javascript:function(source,properties){properties=$extend({onload:$empty,document:document,check:$lambda(true)},properties);if(properties.onLoad)properties.onload=properties.onLoad;var script=new Element('script',{src:source,type:'text/javascript'});var load=properties.onload.bind(script),check=properties.check,doc=properties.document;delete properties.onload;delete properties.check;delete properties.document;script.addEvents({load:load,readystatechange:function(){if(['loaded','complete'].contains(this.readyState))load();}}).set(properties);if(Browser.Engine.webkit419)var checker=(function(){if(!$try(check))return;$clear(checker);load();}).periodical(50);return script.inject(doc.head);},css:function(source,properties){return new Element('link',$merge({rel:'stylesheet',media:'screen',type:'text/css',href:source},properties)).inject(document.head);},image:function(source,properties){properties=$merge({onload:$empty,onabort:$empty,onerror:$empty},properties);var image=new Image();var element=document.id(image)||new Element('img');['load','abort','error'].each(function(name){var type='on'+name;var cap=name.capitalize();if(properties['on'+cap])properties[type]=properties['on'+cap];var event=properties[type];delete properties[type];image[type]=function(){if(!image)return;if(!element.parentNode){element.width=image.width;element.height=image.height;}
image=image.onload=image.onabort=image.onerror=null;event.delay(1,element,element);element.fireEvent(name,element,1);};});image.src=element.src=source;if(image&&image.complete)image.onload.delay(1);return element.set(properties);},images:function(sources,options){options=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},options);sources=$splat(sources);var images=[];var counter=0;return new Elements(sources.map(function(source){return Asset.image(source,$extend(options.properties,{onload:function(){options.onProgress.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length)options.onComplete();},onerror:function(){options.onError.call(this,counter,sources.indexOf(source));counter++;if(counter==sources.length)options.onComplete();}}));}));}};var Color=new Native({initialize:function(color,type){if(arguments.length>=3){type='rgb';color=Array.slice(arguments,0,3);}else if(typeof color=='string'){if(color.match(/rgb/))color=color.rgbToHex().hexToRgb(true);else if(color.match(/hsb/))color=color.hsbToRgb();else color=color.hexToRgb(true);}
type=type||'rgb';switch(type){case'hsb':var old=color;color=color.hsbToRgb();color.hsb=old;break;case'hex':color=color.hexToRgb(true);break;}
color.rgb=color.slice(0,3);color.hsb=color.hsb||color.rgbToHsb();color.hex=color.rgbToHex();return $extend(color,this);}});Color.implement({mix:function(){var colors=Array.slice(arguments);var alpha=($type(colors.getLast())=='number')?colors.pop():50;var rgb=this.slice();colors.each(function(color){color=new Color(color);for(var i=0;i<3;i++)rgb[i]=Math.round((rgb[i]/100*(100-alpha))+(color[i]/100*alpha));});return new Color(rgb,'rgb');},invert:function(){return new Color(this.map(function(value){return 255-value;}));},setHue:function(value){return new Color([value,this.hsb[1],this.hsb[2]],'hsb');},setSaturation:function(percent){return new Color([this.hsb[0],percent,this.hsb[2]],'hsb');},setBrightness:function(percent){return new Color([this.hsb[0],this.hsb[1],percent],'hsb');}});var $RGB=function(r,g,b){return new Color([r,g,b],'rgb');};var $HSB=function(h,s,b){return new Color([h,s,b],'hsb');};var $HEX=function(hex){return new Color(hex,'hex');};Array.implement({rgbToHsb:function(){var red=this[0],green=this[1],blue=this[2],hue=0;var max=Math.max(red,green,blue),min=Math.min(red,green,blue);var delta=max-min;var brightness=max/255,saturation=(max!=0)?delta/max:0;if(saturation!=0){var rr=(max-red)/delta;var gr=(max-green)/delta;var br=(max-blue)/delta;if(red==max)hue=br-gr;else if(green==max)hue=2+rr-br;else hue=4+gr-rr;hue/=6;if(hue<0)hue++;}
return[Math.round(hue*360),Math.round(saturation*100),Math.round(brightness*100)];},hsbToRgb:function(){var br=Math.round(this[2]/100*255);if(this[1]==0){return[br,br,br];}else{var hue=this[0]%360;var f=hue%60;var p=Math.round((this[2]*(100-this[1]))/10000*255);var q=Math.round((this[2]*(6000-this[1]*f))/600000*255);var t=Math.round((this[2]*(6000-this[1]*(60-f)))/600000*255);switch(Math.floor(hue/60)){case 0:return[br,t,p];case 1:return[q,br,p];case 2:return[p,br,t];case 3:return[p,q,br];case 4:return[t,p,br];case 5:return[br,p,q];}}
return false;}});String.implement({rgbToHsb:function(){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHsb():null;},hsbToRgb:function(){var hsb=this.match(/\d{1,3}/g);return(hsb)?hsb.hsbToRgb():null;}});var Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);this.events={};this.checker={};},addEvent:function(type,fn){this.checker[type]=this.checker[type]||{};this.events[type]=this.events[type]||[];if(this.events[type].contains(fn))return false;else this.events[type].push(fn);this.instances.each(function(instance,i){instance.addEvent(type,this.check.bind(this,[type,instance,i]));},this);return this;},check:function(type,instance,i){this.checker[type][i]=true;var every=this.instances.every(function(current,j){return this.checker[type][j]||false;},this);if(!every)return;this.checker[type]={};this.events[type].each(function(event){event.call(this,this.instances,instance);},this);}});Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(name,options){this.parent(name,options);this.load();},save:function(){var value=JSON.encode(this.hash);if(!value||value.length>4096)return false;if(value=='{}')this.dispose();else this.write(value);return true;},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(method,name){if(typeof method=='function')Hash.Cookie.implement(name,function(){var value=method.apply(this.hash,arguments);if(this.options.autoSave)this.save();return value;});});var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:'iframeShim',src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},property:'IframeShim',initialize:function(element,options){this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var zIndex=this.element.getStyle('zIndex').toInt();if(!zIndex){zIndex=1;var pos=this.element.getStyle('position');if(pos=='static'||!pos)this.element.setStyle('position','relative');this.element.setStyle('zIndex',zIndex);}
zIndex=($chk(this.options.zIndex)&&zIndex>this.options.zIndex)?this.options.zIndex:zIndex-1;if(zIndex<0)zIndex=1;this.shim=new Element('iframe',{src:this.options.src,scrolling:'no',frameborder:0,styles:{zIndex:zIndex,position:'absolute',border:'none',filter:'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'},'class':this.options.className}).store('IframeShim',this);var inject=(function(){this.shim.inject(this.element,'after');this[this.options.display?'show':'hide']();this.fireEvent('inject');}).bind(this);if(!IframeShim.ready)window.addEvent('load',inject);else inject();}else{this.position=this.hide=this.show=this.dispose=$lambda(this);}},position:function(){if(!IframeShim.ready||!this.shim)return this;var size=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}
this.shim.set({width:size.x,height:size.y}).position({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.shim)this.shim.setStyle('display','none');return this;},show:function(){if(this.shim)this.shim.setStyle('display','block');return this.position();},dispose:function(){if(this.shim)this.shim.dispose();return this;},destroy:function(){if(this.shim)this.shim.destroy();return this;}});window.addEvent('load',function(){IframeShim.ready=true;});var HtmlTable=new Class({Implements:[Options,Events,Class.Occlude],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[],headers:[],footers:[]},property:'HtmlTable',initialize:function(){var params=Array.link(arguments,{options:Object.type,table:Element.type});this.setOptions(params.options);this.element=params.table||new Element('table',this.options.properties);if(this.occlude())return this.occluded;this.build();},build:function(){this.element.store('HtmlTable',this);this.body=document.id(this.element.tBodies[0])||new Element('tbody').inject(this.element);$$(this.body.rows);if(this.options.headers.length)this.setHeaders(this.options.headers);else this.thead=document.id(this.element.tHead);if(this.thead)this.head=document.id(this.thead.rows[0]);if(this.options.footers.length)this.setFooters(this.options.footers);this.tfoot=document.id(this.element.tFoot);if(this.tfoot)this.foot=document.id(this.thead.rows[0]);this.options.rows.each(function(row){this.push(row);},this);['adopt','inject','wraps','grab','replaces','dispose'].each(function(method){this[method]=this.element[method].bind(this.element);},this);},toElement:function(){return this.element;},empty:function(){this.body.empty();return this;},set:function(what,items){var target=(what=='headers')?'tHead':'tFoot';this[target.toLowerCase()]=(document.id(this.element[target])||new Element(target.toLowerCase()).inject(this.element,'top')).empty();var data=this.push(items,{},this[target.toLowerCase()],what=='headers'?'th':'td');if(what=='headers')this.head=document.id(this.thead.rows[0]);else this.foot=document.id(this.thead.rows[0]);return data;},setHeaders:function(headers){this.set('headers',headers);return this;},setFooters:function(footers){this.set('footers',footers);return this;},push:function(row,rowProperties,target,tag){var tds=row.map(function(data){var td=new Element(tag||'td',data.properties),type=data.content||data||'',element=document.id(type);if($type(type)!='string'&&element)td.adopt(element);else td.set('html',type);return td;});return{tr:new Element('tr',rowProperties).inject(target||this.body).adopt(tds),tds:tds};}});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:'table-tr-odd',zebra:true},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;if(this.options.zebra)this.updateZebras();},updateZebras:function(){Array.each(this.body.rows,this.zebra,this);},zebra:function(row,i){return row[((i%2)?'remove':'add')+'Class'](this.options.classZebra);},push:function(){var pushed=this.previous.apply(this,arguments);if(this.options.zebra)this.updateZebras();return pushed;}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:'string',classSortable:'table-sortable',classHeadSort:'table-th-sort',classHeadSortRev:'table-th-sort-rev',classNoSort:'table-th-nosort',classGroupHead:'table-tr-group-head',classGroup:'table-tr-group',classCellSort:'table-td-sort',classSortSpan:'table-th-sort-span',sortable:false},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;this.sorted={index:null,dir:1};this.bound={headClick:this.headClick.bind(this)};this.sortSpans=new Elements();if(this.options.sortable){this.enableSort();if(this.options.sortIndex!=null)this.sort(this.options.sortIndex,this.options.sortReverse);}},attachSorts:function(attach){this.element.removeEvents('click:relay(th)');this.element[$pick(attach,true)?'addEvent':'removeEvent']('click:relay(th)',this.bound.headClick);},setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled)this.detectParsers();},detectParsers:function(force){if(!this.head)return;var parsers=this.options.parsers,rows=this.body.rows;this.parsers=$$(this.head.cells).map(function(cell,index){if(!force&&(cell.hasClass(this.options.classNoSort)||cell.retrieve('htmltable-parser')))return cell.retrieve('htmltable-parser');var thDiv=new Element('div');$each(cell.childNodes,function(node){thDiv.adopt(node);});thDiv.inject(cell);var sortSpan=new Element('span',{'html':'&#160;','class':this.options.classSortSpan}).inject(thDiv,'top');this.sortSpans.push(sortSpan);var parser=parsers[index],cancel;switch($type(parser)){case'function':parser={convert:parser};cancel=true;break;case'string':parser=parser;cancel=true;break;}
if(!cancel){HtmlTable.Parsers.some(function(current){var match=current.match;if(!match)return false;for(var i=0,j=rows.length;i<j;i++){var text=$(rows[i].cells[index]).get('html').clean();if(text&&match.test(text)){parser=current;return true;}}});}
if(!parser)parser=this.options.defaultParser;cell.store('htmltable-parser',parser);return parser;},this);},headClick:function(event,el){if(!this.head||el.hasClass(this.options.classNoSort))return;var index=Array.indexOf(this.head.cells,el);this.sort(index);return false;},sort:function(index,reverse,pre){if(!this.head)return;pre=!!(pre);var classCellSort=this.options.classCellSort;var classGroup=this.options.classGroup,classGroupHead=this.options.classGroupHead;if(!pre){if(index!=null){if(this.sorted.index==index){this.sorted.reverse=!(this.sorted.reverse);}else{if(this.sorted.index!=null){this.sorted.reverse=false;this.head.cells[this.sorted.index].removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev);}else{this.sorted.reverse=true;}
this.sorted.index=index;}}else{index=this.sorted.index;}
if(reverse!=null)this.sorted.reverse=reverse;var head=document.id(this.head.cells[index]);if(head){head.addClass(this.options.classHeadSort);if(this.sorted.reverse)head.addClass(this.options.classHeadSortRev);else head.removeClass(this.options.classHeadSortRev);}
this.body.getElements('td').removeClass(this.options.classCellSort);}
var parser=this.parsers[index];if($type(parser)=='string')parser=HtmlTable.Parsers.get(parser);if(!parser)return;if(!Browser.Engine.trident){var rel=this.body.getParent();this.body.dispose();}
var data=Array.map(this.body.rows,function(row,i){var value=parser.convert.call(document.id(row.cells[index]));return{position:i,value:value,toString:function(){return value.toString();}};},this);data.reverse(true);data.sort(function(a,b){if(a.value===b.value)return 0;return a.value>b.value?1:-1;});if(!this.sorted.reverse)data.reverse(true);var i=data.length,body=this.body;var j,position,entry,group;while(i){var item=data[--i];position=item.position;var row=body.rows[position];if(row.disabled)continue;if(!pre){if(group===item.value){row.removeClass(classGroupHead).addClass(classGroup);}else{group=item.value;row.removeClass(classGroup).addClass(classGroupHead);}
if(this.zebra)this.zebra(row,i);row.cells[index].addClass(classCellSort);}
body.appendChild(row);for(j=0;j<i;j++){if(data[j].position>position)data[j].position--;}};data=null;if(rel)rel.grab(body);return this.fireEvent('sort',[body,index]);},reSort:function(){if(this.sortEnabled)this.sort.call(this,this.sorted.index,this.sorted.reverse);return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.detectParsers();this.sortEnabled=true;return this;},disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(span){span.destroy();});this.sortSpans.empty();this.sortEnabled=false;return this;}});HtmlTable.Parsers=new Hash({'date':{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){return Date.parse(this.get('text')).format('db');},type:'date'},'input-checked':{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement('input').checked;}},'input-value':{match:/<input/,convert:function(){return this.getElement('input').value;}},'number':{match:/^\d+[^\d.,]*$/,convert:function(){return this.get('text').toInt();},number:true},'numberLax':{match:/^[^\d]+\d+$/,convert:function(){return this.get('text').replace(/[^-?^0-9]/,'').toInt();},number:true},'float':{match:/^[\d]+\.[\d]+/,convert:function(){return this.get('text').replace(/[^-?^\d.]/,'').toFloat();},number:true},'floatLax':{match:/^[^\d]+[\d]+\.[\d]+$/,convert:function(){return this.get('text').replace(/[^-?^\d.]/,'');},number:true},'string':{match:null,convert:function(){return this.get('text');}},'title':{match:null,convert:function(){return this.title;}}});HtmlTable=Class.refactor(HtmlTable,{options:{useKeyboard:true,classRowSelected:'table-tr-selected',classRowHovered:'table-tr-hovered',classSelectable:'table-selectable',allowMultiSelect:true,selectable:false},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;this.selectedRows=new Elements();this.bound={mouseleave:this.mouseleave.bind(this),focusRow:this.focusRow.bind(this)};if(this.options.selectable)this.enableSelect();},enableSelect:function(){this.selectEnabled=true;this.attachSelects();this.element.addClass(this.options.classSelectable);},disableSelect:function(){this.selectEnabled=false;this.attach(false);this.element.removeClass(this.options.classSelectable);},attachSelects:function(attach){attach=$pick(attach,true);var method=attach?'addEvents':'removeEvents';this.element[method]({mouseleave:this.bound.mouseleave});this.body[method]({'click:relay(tr)':this.bound.focusRow});if(this.options.useKeyboard||this.keyboard){if(!this.keyboard)this.keyboard=new Keyboard({events:{down:function(e){e.preventDefault();this.shiftFocus(1);}.bind(this),up:function(e){e.preventDefault();this.shiftFocus(-1);}.bind(this),enter:function(e){e.preventDefault();if(this.hover)this.focusRow(this.hover);}.bind(this)},active:true});this.keyboard[attach?'activate':'deactivate']();}
this.updateSelects();},mouseleave:function(){if(this.hover)this.leaveRow(this.hover);},focus:function(){if(this.keyboard)this.keyboard.activate();},blur:function(){if(this.keyboard)this.keyboard.deactivate();},push:function(){var ret=this.previous.apply(this,arguments);this.updateSelects();return ret;},updateSelects:function(){Array.each(this.body.rows,function(row){var binders=row.retrieve('binders');if((binders&&this.selectEnabled)||(!binders&&!this.selectEnabled))return;if(!binders){binders={mouseenter:this.enterRow.bind(this,[row]),mouseleave:this.leaveRow.bind(this,[row])};row.store('binders',binders).addEvents(binders);}else{row.removeEvents(binders);}},this);},enterRow:function(row){if(this.hover)this.hover=this.leaveRow(this.hover);this.hover=row.addClass(this.options.classRowHovered);},shiftFocus:function(offset){if(!this.hover)return this.enterRow(this.body.rows[0]);var to=Array.indexOf(this.body.rows,this.hover)+offset;if(to<0)to=0;if(to>=this.body.rows.length)to=this.body.rows.length-1;if(this.hover==this.body.rows[to])return this;this.enterRow(this.body.rows[to]);},leaveRow:function(row){row.removeClass(this.options.classRowHovered);},focusRow:function(){var row=arguments[1]||arguments[0];if(!this.body.getChildren().contains(row))return;var unfocus=function(row){this.selectedRows.erase(row);row.removeClass(this.options.classRowSelected);this.fireEvent('rowUnfocus',[row,this.selectedRows]);}.bind(this);if(!this.options.allowMultiSelect)this.selectedRows.each(unfocus);if(!this.selectedRows.contains(row)){this.selectedRows.push(row);row.addClass(this.options.classRowSelected);this.fireEvent('rowFocus',[row,this.selectedRows]);}else{unfocus(row);}
return false;},selectAll:function(status){status=$pick(status,true);if(!this.options.allowMultiSelect&&status)return;if(!status)this.selectedRows.removeClass(this.options.classRowSelected).empty();else this.selectedRows.combine(this.body.rows).addClass(this.options.classRowSelected);return this;},selectNone:function(){return this.selectAll(false);}});(function(){var Keyboard=this.Keyboard=new Class({Extends:Events,Implements:[Options,Log],options:{defaultEventType:'keydown',active:false,events:{},nonParsedEvents:['activate','deactivate','onactivate','ondeactivate','changed','onchanged']},initialize:function(options){this.setOptions(options);this.setup();},setup:function(){this.addEvents(this.options.events);if(Keyboard.manager&&!this.manager)Keyboard.manager.manage(this);if(this.options.active)this.activate();},handle:function(event,type){if(event.preventKeyboardPropagation)return;var bubbles=!!this.manager;if(bubbles&&this.activeKB){this.activeKB.handle(event,type);if(event.preventKeyboardPropagation)return;}
this.fireEvent(type,event);if(!bubbles&&this.activeKB)this.activeKB.handle(event,type);},addEvent:function(type,fn,internal){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn,internal);},removeEvent:function(type,fn){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn);},toggleActive:function(){return this[this.active?'deactivate':'activate']();},activate:function(instance){if(instance){if(instance!=this.activeKB)this.previous=this.activeKB;this.activeKB=instance.fireEvent('activate');Keyboard.manager.fireEvent('changed');}else if(this.manager){this.manager.activate(this);}
return this;},deactivate:function(instance){if(instance){if(instance===this.activeKB){this.activeKB=null;instance.fireEvent('deactivate');Keyboard.manager.fireEvent('changed');}}
else if(this.manager){this.manager.deactivate(this);}
return this;},relenquish:function(){if(this.previous)this.activate(this.previous);},manage:function(instance){if(instance.manager)instance.manager.drop(instance);this.instances.push(instance);instance.manager=this;if(!this.activeKB)this.activate(instance);else this._disable(instance);},_disable:function(instance){if(this.activeKB==instance)this.activeKB=null;},drop:function(instance){this._disable(instance);this.instances.erase(instance);},instances:[],trace:function(){Keyboard.trace(this);},each:function(fn){Keyboard.each(this,fn);}});var parsed={};var modifiers=['shift','control','alt','meta'];var regex=/^(?:shift|control|ctrl|alt|meta)$/;Keyboard.parse=function(type,eventType,ignore){if(ignore&&ignore.contains(type.toLowerCase()))return type;type=type.toLowerCase().replace(/^(keyup|keydown):/,function($0,$1){eventType=$1;return'';});if(!parsed[type]){var key,mods={};type.split('+').each(function(part){if(regex.test(part))mods[part]=true;else key=part;});mods.control=mods.control||mods.ctrl;var keys=[];modifiers.each(function(mod){if(mods[mod])keys.push(mod);});if(key)keys.push(key);parsed[type]=keys.join('+');}
return eventType+':'+parsed[type];};Keyboard.each=function(keyboard,fn){var current=keyboard||Keyboard.manager;while(current){fn.run(current);current=current.activeKB;}};Keyboard.stop=function(event){event.preventKeyboardPropagation=true;};Keyboard.manager=new Keyboard({active:true});Keyboard.trace=function(keyboard){keyboard=keyboard||Keyboard.manager;keyboard.enableLog();keyboard.log('the following items have focus: ');Keyboard.each(keyboard,function(current){keyboard.log(document.id(current.widget)||current.wiget||current);});};var handler=function(event){var keys=[];modifiers.each(function(mod){if(event[mod])keys.push(mod);});if(!regex.test(event.key))keys.push(event.key);Keyboard.manager.handle(event,event.type+':'+keys.join('+'));};document.addEvents({'keyup':handler,'keydown':handler});Event.Keys.extend({'shift':16,'control':17,'alt':18,'capslock':20,'pageup':33,'pagedown':34,'end':35,'home':36,'numlock':144,'scrolllock':145,';':186,'=':187,',':188,'-':Browser.Engine.Gecko?109:189,'.':190,'/':191,'`':192,'[':219,'\\':220,']':221,"'":222});})();Keyboard.prototype.options.nonParsedEvents.combine(['rebound','onrebound']);Keyboard.implement({addShortcut:function(name,shortcut){this.shortcuts=this.shortcuts||[];this.shortcutIndex=this.shortcutIndex||{};shortcut.getKeyboard=$lambda(this);shortcut.name=name;this.shortcutIndex[name]=shortcut;this.shortcuts.push(shortcut);if(shortcut.keys)this.addEvent(shortcut.keys,shortcut.handler);return this;},addShortcuts:function(obj){for(var name in obj)this.addShortcut(name,obj[name]);return this;},getShortcuts:function(){return this.shortcuts||[];},getShortcut:function(name){return(this.shortcutIndex||{})[name];}});Keyboard.rebind=function(newKeys,shortcuts){$splat(shortcuts).each(function(shortcut){shortcut.getKeyboard().removeEvent(shortcut.keys,shortcut.handler);shortcut.getKeyboard().addEvent(newKeys,shortcut.handler);shortcut.keys=newKeys;shortcut.getKeyboard().fireEvent('rebound');});};Keyboard.getActiveShortcuts=function(keyboard){var activeKBS=[],activeSCS=[];Keyboard.each(keyboard,[].push.bind(activeKBS));activeKBS.each(function(kb){activeSCS.extend(kb.getShortcuts());});return activeSCS;};Keyboard.getShortcut=function(name,keyboard,opts){opts=opts||{};var shortcuts=opts.many?[]:null,set=opts.many?function(kb){var shortcut=kb.getShortcut(name);if(shortcut)shortcuts.push(shortcut);}:function(kb){if(!shortcuts)shortcuts=kb.getShortcut(name);};Keyboard.each(keyboard,set);return shortcuts;};Keyboard.getShortcuts=function(name,keyboard){return Keyboard.getShortcut(name,keyboard,{many:true});};var Mask=new Class({Implements:[Options,Events],Binds:['position'],options:{style:{},'class':'mask',maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(target,options){this.target=document.id(target)||document.id(document.body);this.target.store('Mask',this);this.setOptions(options);this.render();this.inject();},render:function(){this.element=new Element('div',{'class':this.options['class'],id:this.options.id||'mask-'+$time(),styles:$merge(this.options.style,{display:'none'}),events:{click:function(){this.fireEvent('click');if(this.options.hideOnClick)this.hide();}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(target,where){where=where||this.options.inject?this.options.inject.where:''||this.target==document.body?'inside':'after';target=target||this.options.inject?this.options.inject.target:''||this.target;this.element.inject(target,where);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions);this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height);this.element.position({relativeTo:this.target,position:'topLeft',ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this;},resize:function(x,y){var opt={styles:['padding','border']};if(this.options.maskMargins)opt.styles.push('margin');var dim=this.target.getComputedSize(opt);if(this.target==document.body){var win=window.getSize();if(dim.totalHeight<win.y)dim.totalHeight=win.y;if(dim.totalWidth<win.x)dim.totalWidth=win.x;}
this.element.setStyles({width:$pick(x,dim.totalWidth,dim.x),height:$pick(y,dim.totalHeight,dim.y)});return this;},show:function(){if(!this.hidden)return this;window.addEvent('resize',this.position);this.position();this.showMask.apply(this,arguments);return this;},showMask:function(){this.element.setStyle('display','block');this.hidden=false;this.fireEvent('show');},hide:function(){if(this.hidden)return this;window.removeEvent('resize',this.position);this.hideMask.apply(this,arguments);if(this.options.destroyOnHide)return this.destroy();return this;},hideMask:function(){this.element.setStyle('display','none');this.hidden=true;this.fireEvent('hide');},toggle:function(){this[this.hidden?'show':'hide']();},destroy:function(){this.hide();this.element.destroy();this.fireEvent('destroy');this.target.eliminate('mask');}});Element.Properties.mask={set:function(options){var mask=this.retrieve('mask');return this.eliminate('mask').store('mask:options',options);},get:function(options){if(options||!this.retrieve('mask')){if(this.retrieve('mask'))this.retrieve('mask').destroy();if(options||!this.retrieve('mask:options'))this.set('mask',options);this.store('mask',new Mask(this,this.retrieve('mask:options')));}
return this.retrieve('mask');}};Element.implement({mask:function(options){this.get('mask',options).show();return this;},unmask:function(){this.get('mask').hide();return this;}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(x,y){this.element.scrollTo(x,y);},fps:50},initialize:function(element,options){this.setOptions(options);this.element=document.id(element);this.docBody=document.id(this.element.getDocument().body);this.listener=($type(this.element)!='element')?this.docBody:this.element;this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseout:this.bound.detach});},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseout:this.bound.detach});this.detach();this.timer=$clear(this.timer);},attach:function(){this.listener.addEvent('mousemove',this.bound.getCoords);},detach:function(){this.listener.removeEvent('mousemove',this.bound.getCoords);this.timer=$clear(this.timer);},getCoords:function(event){this.page=(this.listener.get('tag')=='body')?event.client:event.page;if(!this.timer)this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this);},scroll:function(){var size=this.element.getSize(),scroll=this.element.getScroll(),pos=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},scrollSize=this.element.getScrollSize(),change={x:0,y:0};for(var z in this.page){if(this.page[z]<(this.options.area+pos[z])&&scroll[z]!=0){change[z]=(this.page[z]-this.options.area-pos[z])*this.options.velocity;}else if(this.page[z]+this.options.area>(size[z]+pos[z])&&scroll[z]+size[z]!=scrollSize[z]){change[z]=(this.page[z]-size[z]+this.options.area-pos[z])*this.options.velocity;}}
if(change.y||change.x)this.fireEvent('change',[scroll.x+change.x,scroll.y+change.y]);}});(function(){var read=function(option,element){return(option)?($type(option)=='function'?option(element):element.get(option)):'';};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle('display','block');},onHide:function(){this.tip.setStyle('display','none');},title:'title',text:function(element){return element.get('rel')||element.get('href');},showDelay:100,hideDelay:100,className:'tip-wrap',offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var params=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(params.options);if(params.elements)this.attach(params.elements);this.container=new Element('div',{'class':'tip'});},toElement:function(){if(this.tip)return this.tip;return this.tip=new Element('div',{'class':this.options.className,styles:{position:'absolute',top:0,left:0}}).adopt(new Element('div',{'class':'tip-top'}),this.container,new Element('div',{'class':'tip-bottom'})).inject(document.body);},attach:function(elements){$$(elements).each(function(element){var title=read(this.options.title,element),text=read(this.options.text,element);element.erase('title').store('tip:native',title).retrieve('tip:title',title);element.retrieve('tip:text',text);this.fireEvent('attach',[element]);var events=['enter','leave'];if(!this.options.fixed)events.push('move');events.each(function(value){var event=element.retrieve('tip:'+value);if(!event)event=this['element'+value.capitalize()].bindWithEvent(this,element);element.store('tip:'+value,event).addEvent('mouse'+value,event);},this);},this);return this;},detach:function(elements){$$(elements).each(function(element){['enter','leave','move'].each(function(value){element.removeEvent('mouse'+value,element.retrieve('tip:'+value)).eliminate('tip:'+value);});this.fireEvent('detach',[element]);if(this.options.title=='title'){var original=element.retrieve('tip:native');if(original)element.set('title',original);}},this);return this;},elementEnter:function(event,element){this.container.empty();['title','text'].each(function(value){var content=element.retrieve('tip:'+value);if(content)this.fill(new Element('div',{'class':'tip-'+value}).inject(this.container),content);},this);$clear(this.timer);this.timer=(function(){this.show(this,element);this.position((this.options.fixed)?{page:element.getPosition()}:event);}).delay(this.options.showDelay,this);},elementLeave:function(event,element){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,element);this.fireForParent(event,element);},fireForParent:function(event,element){element=element.getParent();if(!element||element==document.body)return;if(element.retrieve('tip:enter'))element.fireEvent('mouseenter',event);else this.fireForParent(event,element);},elementMove:function(event,element){this.position(event);},position:function(event){if(!this.tip)document.id(this);var size=window.getSize(),scroll=window.getScroll(),tip={x:this.tip.offsetWidth,y:this.tip.offsetHeight},props={x:'left',y:'top'},obj={};for(var z in props){obj[props[z]]=event.page[z]+this.options.offset[z];if((obj[props[z]]+tip[z]-scroll[z])>size[z]-this.options.windowPadding[z])obj[props[z]]=event.page[z]-this.options.offset[z]-tip[z];}
this.tip.setStyles(obj);},fill:function(element,contents){if(typeof contents=='string')element.set('html',contents);else element.adopt(contents);},show:function(element){if(!this.tip)document.id(this);this.fireEvent('show',[this.tip,element]);},hide:function(element){if(!this.tip)document.id(this);this.fireEvent('hide',[this.tip,element]);}});})();var Spinner=new Class({Extends:Mask,options:{'class':'spinner',containerPosition:{},content:{'class':'spinner-content'},messageContainer:{'class':'spinner-msg'},img:{'class':'spinner-img'},fxOptions:{link:'chain'}},initialize:function(){this.parent.apply(this,arguments);this.target.store('spinner',this);var deactivate=function(){this.active=false;}.bind(this);this.addEvents({hide:deactivate,show:deactivate});},render:function(){this.parent();this.element.set('id',this.options.id||'spinner-'+$time());this.content=document.id(this.options.content)||new Element('div',this.options.content);this.content.inject(this.element);if(this.options.message){this.msg=document.id(this.options.message)||new Element('p',this.options.messageContainer).appendText(this.options.message);this.msg.inject(this.content);}
if(this.options.img){this.img=document.id(this.options.img)||new Element('div',this.options.img);this.img.inject(this.content);}
this.element.set('tween',this.options.fxOptions);},show:function(noFx){if(this.active)return this.chain(this.show.bind(this));if(!this.hidden){this.callChain.delay(20,this);return this;}
this.active=true;return this.parent(noFx);},showMask:function(noFx){var pos=function(){this.content.position($merge({relativeTo:this.element},this.options.containerPosition));}.bind(this);if(noFx){this.parent();pos();}else{this.element.setStyles({display:'block',opacity:0}).tween('opacity',this.options.style.opacity||0.9);pos();this.hidden=false;this.fireEvent('show');this.callChain();}},hide:function(noFx){if(this.active)return this.chain(this.hide.bind(this));if(this.hidden){this.callChain.delay(20,this);return this;}
this.active=true;return this.parent(noFx);},hideMask:function(noFx){if(noFx)return this.parent();this.element.tween('opacity',0).get('tween').chain(function(){this.element.setStyle('display','none');this.hidden=true;this.fireEvent('hide');this.callChain();}.bind(this));},destroy:function(){this.content.destroy();this.parent();this.target.eliminate('spinner');}});Spinner.implement(new Chain);if(window.Request){Request=Class.refactor(Request,{options:{useSpinner:false,spinnerOptions:{},spinnerTarget:false},initialize:function(options){this._send=this.send;this.send=function(options){if(this.spinner)this.spinner.chain(this._send.bind(this,options)).show();else this._send(options);return this;};this.previous(options);var update=document.id(this.options.spinnerTarget)||document.id(this.options.update);if(this.options.useSpinner&&update){this.spinner=update.get('spinner',this.options.spinnerOptions);['onComplete','onException','onCancel'].each(function(event){this.addEvent(event,this.spinner.hide.bind(this.spinner));},this);}},getSpinner:function(){return this.spinner;}});}
Element.Properties.spinner={set:function(options){var spinner=this.retrieve('spinner');return this.eliminate('spinner').store('spinner:options',options);},get:function(options){if(options||!this.retrieve('spinner')){if(this.retrieve('spinner'))this.retrieve('spinner').destroy();if(options||!this.retrieve('spinner:options'))this.set('spinner',options);new Spinner(this,this.retrieve('spinner:options'));}
return this.retrieve('spinner');}};Element.implement({spin:function(options){this.get('spinner',options).show();return this;},unspin:function(){var opt=Array.link(arguments,{options:Object.type,callback:Function.type});this.get('spinner',opt.options).hide(opt.callback);return this;}});MooTools.lang.set('en-US','Date',{months:['January','February','March','April','May','June','July','August','September','October','November','December'],days:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],dateOrder:['month','date','year'],shortDate:'%m/%d/%Y',shortTime:'%I:%M%p',AM:'AM',PM:'PM',ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?'th':['th','st','nd','rd','th'][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:'less than a minute ago',minuteAgo:'about a minute ago',minutesAgo:'{delta} minutes ago',hourAgo:'about an hour ago',hoursAgo:'about {delta} hours ago',dayAgo:'1 day ago',daysAgo:'{delta} days ago',weekAgo:'1 week ago',weeksAgo:'{delta} weeks ago',monthAgo:'1 month ago',monthsAgo:'{delta} months ago',yearAgo:'1 year ago',yearsAgo:'{delta} years ago',lessThanMinuteUntil:'less than a minute from now',minuteUntil:'about a minute from now',minutesUntil:'{delta} minutes from now',hourUntil:'about an hour from now',hoursUntil:'about {delta} hours from now',dayUntil:'1 day from now',daysUntil:'{delta} days from now',weekUntil:'1 week from now',weeksUntil:'{delta} weeks from now',monthUntil:'1 month from now',monthsUntil:'{delta} months from now',yearUntil:'1 year from now',yearsUntil:'{delta} years from now'});MooTools.lang.set('en-US','Form.Validator',{required:'This field is required.',minLength:'Please enter at least {minLength} characters (you entered {length} characters).',maxLength:'Please enter no more than {maxLength} characters (you entered {length} characters).',integer:'Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.',numeric:'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").',digits:'Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).',alpha:'Please use letters only (a-z) with in this field. No spaces or other characters are allowed.',alphanum:'Please use only letters (a-z) or numbers (0-9) only in this field. No spaces or other characters are allowed.',dateSuchAs:'Please enter a valid date such as {date}',dateInFormatMDY:'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")',email:'Please enter a valid email address. For example "fred@domain.com".',url:'Please enter a valid URL such as http://www.google.com.',currencyDollar:'Please enter a valid $ amount. For example $100.00 .',oneRequired:'Please enter something for at least one of these inputs.',errorPrefix:'Error: ',warningPrefix:'Warning: ',noSpace:'There can be no spaces in this input.',reqChkByNode:'No items are selected.',requiredChk:'This field is required.',reqChkByName:'Please select a {label}.',match:'This field needs to match the {matchName} field',startDate:'the start date',endDate:'the end date',currendDate:'the current date',afterDate:'The date should be the same or after {label}.',beforeDate:'The date should be the same or before {label}.',startMonth:'Please select a start month',sameMonth:'These two dates must be in the same month - you must change one or the other.',creditcard:'The credit card number entered is invalid. Please check the number and try again. {length} digits entered.'});


var ScrollSpy=new Class({Implements:[Options,Events],options:{min:0,mode:'vertical',max:0,container:window,onEnter:$empty,onLeave:$empty,onScroll:$empty,onTick:$empty},initialize:function(options){this.setOptions(options);this.container=document.id(this.options.container);this.enters=this.leaves=0;this.max=this.options.max;if(this.max==0){var ss=this.container.getScrollSize();this.max=this.options.mode=='vertical'?ss.y:ss.x;}
this.addListener();},addListener:function(){this.inside=false;this.container.addEvent('scroll',function(e){var position=this.container.getScroll();var xy=position[this.options.mode=='vertical'?'y':'x'];if(xy>=this.options.min&&xy<=this.max){if(!this.inside){this.inside=true;this.enters++;this.fireEvent('enter',[position,this.enters,e]);}
this.fireEvent('tick',[position,this.inside,this.enters,this.leaves,e]);}
else{if(this.inside){this.inside=false;this.leaves++;this.fireEvent('leave',[position,this.leaves,e]);}}
this.fireEvent('scroll',[position,this.inside,this.enters,this.leaves,e]);}.bind(this));},stop:function(){this.container.removeEvents('scroll');}});


var DMAlertBox=new Class({Implements:[Options,Chain],getOptions:function(){return{name:'DMAlertBox',zIndex:65555,onReturn:false,onReturnFunction:$empty,BoxStyles:{'width':300},OverlayStyles:{'background-color':'#000','opacity':0.7},showDuration:0,showEffect:Fx.Transitions.linear,closeDuration:0,closeEffect:Fx.Transitions.linear,moveDuration:0,moveEffect:Fx.Transitions.Back.easeOut,onShowStart:$empty,onShowComplete:$empty,onCloseStart:$empty,onCloseComplete:function(properties){this.options.onReturnFunction(this.options.onReturn);}.bind(this)};},initialize:function(options){this.i=0;this.setOptions(this.getOptions(),options);this.Overlay=new Element('div',{'id':'BoxOverlay','styles':{'display':'none','position':'absolute','top':'0','left':'0','opacity':0,'z-index':this.options.zIndex,'background-color':this.options.OverlayStyles['background-color'],'height':window.getScrollHeight()+'px','width':window.getScrollWidth()+'px'}});this.Content=new Element('div',{'id':this.options.name+'-BoxContainer'});this.Container=new Element('div',{'id':this.options.name+'-BoxContent'}).adopt(this.Content);this.InBox=new Element('div',{'id':this.options.name+'-InBox'}).adopt(this.Container);this.Box=new Element('div',{'id':this.options.name+'-Box','styles':{'display':'none','z-index':this.options.zIndex+2,'position':'absolute','top':'0','left':'0','width':this.options.BoxStyles['width']+'px'}}).adopt(this.InBox);this.Overlay.injectInside(document.body);this.Box.injectInside(document.body);window.addEvent('resize',function(){if(this.options.display==1){this.Overlay.setStyles({'height':window.getScrollHeight()+'px','width':window.getScrollWidth()+'px'});this.replaceBox();}}.bind(this));this.Box.addEvent('keydown',function(event){if(event.key=='esc'){this.options.onReturn=false;this.display(0);}}.bind(this));window.addEvent('scroll',this.replaceBox.bind(this));},togFlashObjects:function(state){var hideobj=new Array("embed","iframe","object");for(y=0;y<hideobj.length;y++){var objs=document.getElementsByTagName(hideobj[y]);for(i=0;i<objs.length;i++){objs[i].style.visibility=state;}}},display:function(option){if(this.Transition){this.Transition.cancel();}
if(this.options.display==0&&option!=0||option==1){if(Browser.Engine.trident4){$$('select','object','embed').each(function(node){node.style.visibility='hidden'});}
this.togFlashObjects('hidden');this.Overlay.setStyle('display','block');this.options.display=1;this.fireEvent('onShowStart',[this.Overlay]);this.Transition=new Fx.Tween(this.Overlay,{property:'opacity',duration:this.options.showDuration,transition:this.options.showEffect,onComplete:function(){sizes=window.getSize();scrollito=window.getScroll();this.Box.setStyles({'display':'block','left':(scrollito.x+(sizes.x-this.options.BoxStyles['width'])/2).toInt()});this.replaceBox();this.fireEvent('onShowComplete',[this.Overlay]);}.bind(this)}).start(this.options.OverlayStyles['opacity']);}
else{if(Browser.Engine.trident4){$$('select','object','embed').each(function(node){node.style.visibility='visible'});}
this.togFlashObjects('visible');this.queue.delay(500,this);this.Box.setStyles({'display':'none','top':0});this.Content.empty();this.options.display=0;this.fireEvent('onCloseStart',[this.Overlay]);if(this.i==1){this.Transition=new Fx.Tween(this.Overlay,{property:'opacity',duration:this.options.closeDuration,transition:this.options.closeEffect,onComplete:function(){this.fireEvent('onCloseComplete',[this.Overlay]);}.bind(this)}).start(0);}}},replaceBox:function(){if(this.options.display==1){sizes=window.getSize();scrollito=window.getScroll();if(this.MoveBox){this.MoveBox.cancel();}
this.MoveBox=new Fx.Morph(this.Box,{duration:this.options.moveDuration,transition:this.options.moveEffect}).start({'left':(scrollito.x+(sizes.x-this.options.BoxStyles['width'])/2).toInt(),'top':(scrollito.y+(sizes.y-this.Box.offsetHeight)/2).toInt()});this.focusin.delay(this.options.moveDuration,this);}},focusin:function(){if($chk($('BoxAlertBtnOk'))){$('BoxAlertBtnOk').focus();}else if($chk($('BoxPromptInput'))){$('BoxPromptInput').focus();}else if($chk($('BoxConfirmBtnOk'))){$('BoxConfirmBtnOk').focus();}},queue:function(){this.i--;this.callChain();},messageBox:function(type,message,properties,input){this.chain(function(){properties=$extend({'textBoxBtnOk':'OK','textBoxBtnCancel':'Cancel','textBoxInputPrompt':null,'password':false,'onComplete':$empty},properties||{});this.options.onReturnFunction=properties.onComplete;this.ContainerBotones=new Element('div',{'id':this.options.name+'-Buttons'});this.Overlay.setStyles({'height':window.getScrollHeight()+'px','width':window.getScrollWidth()+'px'});if(type=='alert'||type=='info'||type=='error'||type=='success'){this.AlertBtnOk=new Element('input',{'id':'BoxAlertBtnOk','type':'submit','value':properties.textBoxBtnOk,'styles':{'width':'70px'}});this.AlertBtnOk.addEvent('click',function(){this.options.onReturn=true;this.display(0);}.bind(this));if(type=='alert'){this.clase='BoxAlert';}else if(type=='success'){this.clase='BoxSuccess';}else if(type=='error'){this.clase='BoxError';}else if(type=='info'){this.clase='BoxInfo';}
this.Content.setProperty('class',this.clase).set('html',message);this.AlertBtnOk.injectInside(this.ContainerBotones);this.ContainerBotones.injectInside(this.Content);this.display(1);}else if(type=='confirm'){this.ConfirmBtnOk=new Element('input',{'id':'BoxConfirmBtnOk','type':'submit','value':properties.textBoxBtnOk,'styles':{'width':'70px'}});this.ConfirmBtnCancel=new Element('input',{'id':'BoxConfirmBtnCancel','type':'submit','value':properties.textBoxBtnCancel,'styles':{'width':'70px'}});this.ConfirmBtnOk.addEvent('click',function(){this.options.onReturn=true;this.display(0);}.bind(this));this.ConfirmBtnCancel.addEvent('click',function(){this.options.onReturn=false;this.display(0);}.bind(this));this.Content.setProperty('class','BoxConfirm').set('html',message);this.ConfirmBtnOk.injectInside(this.ContainerBotones);this.ConfirmBtnCancel.injectInside(this.ContainerBotones);this.ContainerBotones.injectInside(this.Content);this.display(1);}else if(type=='prompt'){this.PromptBtnOk=new Element('input',{'id':'BoxPromptBtnOk','type':'submit','value':properties.textBoxBtnOk,'styles':{'width':'70px'}});this.PromptBtnCancel=new Element('input',{'id':'BoxPromptBtnCancel','type':'submit','value':properties.textBoxBtnCancel,'styles':{'width':'70px'}});type=properties.password?'password':'text';this.PromptInput=new Element('input',{'id':'BoxPromptInput','type':type,'value':input,'styles':{'width':'250px'}});this.PromptBtnOk.addEvent('click',function(){this.options.onReturn=this.PromptInput.value;this.display(0);}.bind(this));this.PromptBtnCancel.addEvent('click',function(){this.options.onReturn=false;this.display(0);}.bind(this));this.Content.setProperty('class','BoxPrompt').set('html',message+'<br />');this.PromptInput.injectInside(this.Content);new Element('br').injectInside(this.Content);this.PromptBtnOk.injectInside(this.ContainerBotones);this.PromptBtnCancel.injectInside(this.ContainerBotones);this.ContainerBotones.injectInside(this.Content);this.display(1);}else{this.options.onReturn=false;this.display(0);}});this.i++;if(this.i==1){this.callChain();}},alert:function(message,properties){this.messageBox('alert',message,properties);},success:function(message,properties){this.messageBox('success',message,properties);},info:function(message,properties){this.messageBox('info',message,properties);},error:function(message,properties){this.messageBox('error',message,properties);},confirm:function(message,properties){this.messageBox('confirm',message,properties);},prompt:function(message,input,properties){this.messageBox('prompt',message,properties,input);}});DMAlertBox.implement(new Events,new Options);window.addEvent('domready',function(){DMAlert=new DMAlertBox();});


(function(){var doc=document,win=window,math=Math,mathRound=math.round,mathFloor=math.floor,mathCeil=math.ceil,mathMax=math.max,mathMin=math.min,mathAbs=math.abs,mathCos=math.cos,mathSin=math.sin,userAgent=navigator.userAgent,isIE=/msie/i.test(userAgent)&&!win.opera,isWebKit=/AppleWebKit/.test(userAgent),hasSVG=win.SVGAngle||doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),colorCounter,symbolCounter,symbolSizes={},idCounter=0,timeFactor=1,garbageBin,defaultOptions,dateFormat,UNDEFINED,DIV='div',ABSOLUTE='absolute',RELATIVE='relative',HIDDEN='hidden',PREFIX='highcharts-',VISIBLE='visible',PX='px',NONE='none',M='M',L='L',TRACKER_FILL='rgba(192,192,192,'+(hasSVG?0.000001:0.002)+')',NORMAL_STATE='',HOVER_STATE='hover',SELECT_STATE='select',makeTime,getMinutes,getHours,getDay,getDate,getMonth,getFullYear,setMinutes,setHours,setDate,setMonth,setFullYear,globalAdapter=win.HighchartsAdapter,adapter=globalAdapter||{},each=adapter.each,grep=adapter.grep,map=adapter.map,merge=adapter.merge,hyphenate=adapter.hyphenate,addEvent=adapter.addEvent,removeEvent=adapter.removeEvent,fireEvent=adapter.fireEvent,animate=adapter.animate,stop=adapter.stop,getAjax=adapter.getAjax,seriesTypes={};function extend(a,b){if(!a){a={};}
for(var n in b){a[n]=b[n];}
return a;}
function defined(obj){return obj!==UNDEFINED&&obj!==null;}
function attr(elem,prop,value){var key,setAttribute='setAttribute',ret;if(typeof prop=='string'){if(defined(value)){elem[setAttribute](prop,value);}else if(elem&&elem.getAttribute){ret=elem.getAttribute(prop);}}else if(defined(prop)&&typeof prop=='object'){for(key in prop){elem[setAttribute](key,prop[key]);}}
return ret;}
function splat(obj){if(!obj||obj.constructor!=Array){obj=[obj];}
return obj;}
function pick(){var args=arguments,i,arg;for(i=0;i<args.length;i++){arg=args[i];if(defined(arg)){return arg;}}}
function serializeCSS(style){var s='',key;for(key in style){s+=hyphenate(key)+':'+style[key]+';';}
return s;}
function css(el,styles){if(isIE){if(styles&&styles.opacity!==UNDEFINED){styles.filter='alpha(opacity='+(styles.opacity*100)+')';}}
extend(el.style,styles);}
function createElement(tag,attribs,styles,parent,nopad){var el=doc.createElement(tag);if(attribs){extend(el,attribs);}
if(nopad){css(el,{padding:0,border:NONE,margin:0});}
if(styles){css(el,styles);}
if(parent){parent.appendChild(el);}
return el;}
if(!globalAdapter&&win.jQuery){var jQ=jQuery;each=function(arr,fn){for(var i=0,len=arr.length;i<len;i++){if(fn.call(arr[i],arr[i],i,arr)===false){return i;}}};grep=jQ.grep;map=function(arr,fn){var results=[];for(var i=0,len=arr.length;i<len;i++){results[i]=fn.call(arr[i],arr[i],i,arr);}
return results;};merge=function(){var args=arguments;return jQ.extend(true,null,args[0],args[1],args[2],args[3]);};hyphenate=function(str){return str.replace(/([A-Z])/g,function(a,b){return'-'+b.toLowerCase();});};addEvent=function(el,event,fn){jQ(el).bind(event,fn);};removeEvent=function(el,eventType,handler){var func=doc.removeEventListener?'removeEventListener':'detachEvent';if(doc[func]&&!el[func]){el[func]=function(){};}
jQ(el).unbind(eventType,handler);};fireEvent=function(el,type,eventArguments,defaultFunction){var event=jQ.Event(type),detachedType='detached'+type;extend(event,eventArguments);if(el[type]){el[detachedType]=el[type];el[type]=null;}
jQ(el).trigger(event);if(el[detachedType]){el[type]=el[detachedType];el[detachedType]=null;}
if(defaultFunction&&!event.isDefaultPrevented()){defaultFunction(event);}};animate=function(el,params,options){var $el=jQ(el);$el.stop();$el.animate(params,options);};stop=function(el){jQ(el).stop();};getAjax=function(url,callback){jQ.get(url,null,callback);};jQ.extend(jQ.easing,{easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;}});var oldStepDefault=jQuery.fx.step._default,oldCur=jQuery.fx.prototype.cur;jQ.fx.step._default=function(fx){var elem=fx.elem;if(elem.attr){elem.attr(fx.prop,fx.now);}else{oldStepDefault.apply(this,arguments);}};jQ.fx.prototype.cur=function(){var elem=this.elem,r;if(elem.attr){r=elem.attr(this.prop);}else{r=oldCur.apply(this,arguments);}
return r;};}else if(!globalAdapter&&win.MooTools){each=$each;map=function(arr,fn){return arr.map(fn);};grep=function(arr,fn){return arr.filter(fn);};merge=$merge;hyphenate=function(str){return str.hyphenate();};addEvent=function(el,type,fn){if(typeof type=='string'){if(type=='unload'){type='beforeunload';}
if(!el.addEvent){if(el.nodeName){el=$(el);}else{extend(el,new Events());}}
el.addEvent(type,fn);}};removeEvent=function(el,type,fn){if(type){if(type=='unload'){type='beforeunload';}
el.removeEvent(type,fn);}};fireEvent=function(el,event,eventArguments,defaultFunction){event=new Event({type:event,target:el});event=extend(event,eventArguments);event.preventDefault=function(){defaultFunction=null;};if(el.fireEvent){el.fireEvent(event.type,event);}
if(defaultFunction){defaultFunction(event);}};animate=function(el,params,options){var isSVGElement=el.attr,effect;if(isSVGElement&&!el.setStyle){el.setStyle=el.getStyle=el.attr;el.$family=el.uid=true;}
stop(el);effect=new Fx.Morph(isSVGElement?el:$(el),extend(options,{transition:Fx.Transitions.Quad.easeInOut}));effect.start(params);el.fx=effect;};stop=function(el){if(el.fx){el.fx.cancel();}};getAjax=function(url,callback){(new Request({url:url,method:'get',onSuccess:callback})).send();};}
function setTimeMethods(){var useUTC=defaultOptions.global.useUTC;makeTime=useUTC?Date.UTC:function(year,month,date,hours,minutes,seconds){return new Date(year,month,pick(date,1),pick(hours,0),pick(minutes,0),pick(seconds,0)).getTime();};getMinutes=useUTC?'getUTCMinutes':'getMinutes';getHours=useUTC?'getUTCHours':'getHours';getDay=useUTC?'getUTCDay':'getDay';getDate=useUTC?'getUTCDate':'getDate';getMonth=useUTC?'getUTCMonth':'getMonth';getFullYear=useUTC?'getUTCFullYear':'getFullYear';setMinutes=useUTC?'setUTCMinutes':'setMinutes';setHours=useUTC?'setUTCHours':'setHours';setDate=useUTC?'setUTCDate':'setDate';setMonth=useUTC?'setUTCMonth':'setMonth';setFullYear=useUTC?'setUTCFullYear':'setFullYear';}
function setOptions(options){defaultOptions=merge(defaultOptions,options);setTimeMethods();return defaultOptions;}
function getOptions(){return defaultOptions;}
function discardElement(element){if(!garbageBin){garbageBin=createElement(DIV);}
if(element){garbageBin.appendChild(element);}
garbageBin.innerHTML='';}
var
defaultLabelOptions={enabled:true,align:'center',x:0,y:15,style:{color:'#666',fontSize:'11px'}};defaultOptions={colors:['#4572A7','#AA4643','#89A54E','#80699B','#3D96AE','#DB843D','#92A8CD','#A47D7C','#B5CA92'],symbols:['circle','diamond','square','triangle','triangle-down'],lang:{loading:'Loading...',months:['January','February','March','April','May','June','July','August','September','October','November','December'],weekdays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],decimalPoint:'.',resetZoom:'Reset zoom',resetZoomTitle:'Reset zoom level 1:1',thousandsSep:','},global:{useUTC:true},chart:{margin:[50,50,90,80],borderColor:'#4572A7',borderRadius:5,defaultSeriesType:'line',ignoreHiddenSeries:true,style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:'12px'},backgroundColor:'#FFFFFF',plotBorderColor:'#C0C0C0'},title:{text:'Chart title',x:0,y:20,align:'center',style:{color:'#3E576F',fontSize:'16px'}},subtitle:{text:'',x:0,y:40,align:'center',style:{color:'#6D869F'}},plotOptions:{line:{allowPointSelect:false,showCheckbox:false,animation:true,events:{},lineWidth:2,shadow:true,marker:{enabled:true,lineWidth:0,radius:4,lineColor:'#FFFFFF',states:{hover:{},select:{fillColor:'#FFFFFF',lineColor:'#000000',lineWidth:2}}},point:{events:{}},dataLabels:merge(defaultLabelOptions,{enabled:false,y:-6,formatter:function(){return this.y;}}),showInLegend:true,states:{hover:{lineWidth:3,marker:{}},select:{marker:{}}},stickyTracking:true}},labels:{style:{position:ABSOLUTE,color:'#3E576F'}},legend:{enabled:true,align:'center',layout:'horizontal',labelFormatter:function(){return this.name;},borderWidth:1,borderColor:'#909090',borderRadius:5,shadow:false,style:{padding:'5px'},itemStyle:{cursor:'pointer',color:'#3E576F'},itemHoverStyle:{cursor:'pointer',color:'#000000'},itemHiddenStyle:{color:'#C0C0C0'},itemCheckboxStyle:{position:ABSOLUTE,width:'13px',height:'13px'},symbolWidth:16,symbolPadding:5,verticalAlign:'bottom',x:15,y:-15},loading:{hideDuration:100,labelStyle:{fontWeight:'bold',position:RELATIVE,top:'1em'},showDuration:100,style:{position:ABSOLUTE,backgroundColor:'white',opacity:0.5,textAlign:'center'}},tooltip:{enabled:true,formatter:function(){var pThis=this,series=pThis.series,xAxis=series.xAxis,x=pThis.x;return'<b>'+(pThis.point.name||series.name)+'</b><br/>'+
(defined(x)?'X value: '+(xAxis&&xAxis.options.type=='datetime'?dateFormat(null,x):x)+'<br/>':'')+'Y value: '+pThis.y;},backgroundColor:'rgba(255, 255, 255, .85)',borderWidth:2,borderRadius:5,shadow:true,snap:10,style:{color:'#333333',fontSize:'12px',padding:'5px',whiteSpace:'nowrap'}},toolbar:{itemStyle:{color:'#4572A7',cursor:'pointer'}},credits:{enabled:true,text:'Highcharts.com',href:'http://www.highcharts.com',style:{cursor:'pointer',color:'#909090',fontSize:'10px'}}};var defaultXAxisOptions={dateTimeLabelFormats:{second:'%H:%M:%S',minute:'%H:%M',hour:'%H:%M',day:'%e. %b',week:'%e. %b',month:'%b \'%y',year:'%Y'},endOnTick:false,gridLineColor:'#C0C0C0',labels:defaultLabelOptions,lineColor:'#C0D0E0',lineWidth:1,max:null,min:null,minPadding:0.01,maxPadding:0.01,maxZoom:null,minorGridLineColor:'#E0E0E0',minorGridLineWidth:1,minorTickColor:'#A0A0A0',minorTickLength:2,minorTickPosition:'outside',minorTickWidth:1,showFirstLabel:true,showLastLabel:false,startOfWeek:1,startOnTick:false,tickColor:'#C0D0E0',tickLength:5,tickmarkPlacement:'between',tickPixelInterval:100,tickPosition:'outside',tickWidth:1,title:{align:'middle',margin:35,style:{color:'#6D869F',fontWeight:'bold'}},type:'linear'},defaultYAxisOptions=merge(defaultXAxisOptions,{endOnTick:true,gridLineWidth:1,tickPixelInterval:72,showLastLabel:true,labels:{align:'right',x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:true,tickWidth:0,title:{margin:40,rotation:270,text:'Y-values'}}),defaultLeftAxisOptions={labels:{align:'right',x:-8,y:3},title:{rotation:270}},defaultRightAxisOptions={labels:{align:'left',x:8,y:3},title:{rotation:90}},defaultBottomAxisOptions={labels:{align:'center',x:0,y:14},title:{rotation:0}},defaultTopAxisOptions=merge(defaultBottomAxisOptions,{labels:{y:-5}});var defaultPlotOptions=defaultOptions.plotOptions,defaultSeriesOptions=defaultPlotOptions.line;defaultPlotOptions.spline=merge(defaultSeriesOptions);defaultPlotOptions.scatter=merge(defaultSeriesOptions,{lineWidth:0,states:{hover:{lineWidth:0}}});defaultPlotOptions.area=merge(defaultSeriesOptions,{});defaultPlotOptions.areaspline=merge(defaultPlotOptions.area);defaultPlotOptions.column=merge(defaultSeriesOptions,{borderColor:'#FFFFFF',borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,states:{hover:{brightness:0.1,shadow:false},select:{color:'#C0C0C0',borderColor:'#000000',shadow:false}}});defaultPlotOptions.bar=merge(defaultPlotOptions.column,{dataLabels:{align:'left',x:5,y:0}});defaultPlotOptions.pie=merge(defaultSeriesOptions,{borderColor:'#FFFFFF',borderWidth:1,center:['50%','50%'],colorByPoint:true,legendType:'point',marker:null,size:'90%',slicedOffset:10,states:{hover:{brightness:0.1,shadow:false}}});setTimeMethods();function extendClass(parent,members){var object=function(){};object.prototype=new parent();extend(object.prototype,members);return object;}
var Color=function(input){var rgba=[],result;function init(input){if((result=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(input))){rgba=[parseInt(result[1],10),parseInt(result[2],10),parseInt(result[3],10),parseFloat(result[4],10)];}
else if((result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(input))){rgba=[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16),1];}}
function get(format){var ret;if(rgba&&!isNaN(rgba[0])){if(format=='rgb'){ret='rgb('+rgba[0]+','+rgba[1]+','+rgba[2]+')';}else if(format=='a'){ret=rgba[3];}else{ret='rgba('+rgba.join(',')+')';}}else{ret=input;}
return ret;}
function brighten(alpha){if(typeof alpha=='number'&&alpha!==0){for(var i=0;i<3;i++){rgba[i]+=parseInt(alpha*255,10);if(rgba[i]<0){rgba[i]=0;}
if(rgba[i]>255){rgba[i]=255;}}}
return this;}
function setOpacity(alpha){rgba[3]=alpha;return this;}
init(input);return{get:get,brighten:brighten,setOpacity:setOpacity};};function numberFormat(number,decimals,decPoint,thousandsSep){var lang=defaultOptions.lang,n=number,c=isNaN(decimals=mathAbs(decimals))?2:decimals,d=decPoint===undefined?lang.decimalPoint:decPoint,t=thousandsSep===undefined?lang.thousandsSep:thousandsSep,s=n<0?"-":"",i=parseInt(n=mathAbs(+n||0).toFixed(c),10)+"",j=(j=i.length)>3?j%3:0;return s+(j?i.substr(0,j)+t:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+t)+
(c?d+mathAbs(n-i).toFixed(c).slice(2):"");}
dateFormat=function(format,timestamp,capitalize){function pad(number){return number.toString().replace(/^([0-9])$/,'0$1');}
if(!defined(timestamp)||isNaN(timestamp)){return'Invalid date';}
format=pick(format,'%Y-%m-%d %H:%M:%S');var date=new Date(timestamp*timeFactor),hours=date[getHours](),day=date[getDay](),dayOfMonth=date[getDate](),month=date[getMonth](),fullYear=date[getFullYear](),lang=defaultOptions.lang,langWeekdays=lang.weekdays,langMonths=lang.months,replacements={'a':langWeekdays[day].substr(0,3),'A':langWeekdays[day],'d':pad(dayOfMonth),'e':dayOfMonth,'b':langMonths[month].substr(0,3),'B':langMonths[month],'m':pad(month+1),'y':fullYear.toString().substr(2,2),'Y':fullYear,'H':pad(hours),'I':pad((hours%12)||12),'l':(hours%12)||12,'M':pad(date[getMinutes]()),'p':hours<12?'AM':'PM','P':hours<12?'am':'pm','S':pad(date.getSeconds())};for(var key in replacements){format=format.replace('%'+key,replacements[key]);}
return capitalize?format.substr(0,1).toUpperCase()+format.substr(1):format;};function getPosition(el){var p={x:el.offsetLeft,y:el.offsetTop};while(el.offsetParent){el=el.offsetParent;p.x+=el.offsetLeft;p.y+=el.offsetTop;if(el!=doc.body&&el!=doc.documentElement){p.x-=el.scrollLeft;p.y-=el.scrollTop;}}
return p;}
function SVGElement(){}
SVGElement.prototype={init:function(renderer,nodeName){this.element=doc.createElementNS('http://www.w3.org/2000/svg',nodeName);this.renderer=renderer;},animate:function(params,duration){animate(this,params,duration);},attr:function(hash,val){var key,value,i,child,element=this.element,nodeName=element.nodeName,renderer=this.renderer,skipAttr,shadows=this.shadows,hasSetSymbolSize,ret=this;if(typeof hash=='string'&&defined(val)){key=hash;hash={};hash[key]=val;}
if(typeof hash=='string'){key=hash;if(nodeName=='circle'){key={x:'cx',y:'cy'}[key]||key;}else if(key=='strokeWidth'){key='stroke-width';}
ret=parseFloat(attr(element,key)||this[key]||0);}else{for(key in hash){value=hash[key];if(key=='d'){if(typeof value!='string'){value=value.join(' ');}
if(/(NaN|  )/.test(value)){value='M 0 0';}}else if(key=='x'&&nodeName=='text'){for(i=0;i<element.childNodes.length;i++){child=element.childNodes[i];if(attr(child,'x')==attr(element,'x')){attr(child,'x',value);}}}else if(key=='fill'){value=renderer.color(value,element,key);}else if(nodeName=='circle'){key={x:'cx',y:'cy'}[key]||key;}else if(key=='translateX'||key=='translateY'){this[key]=value;this.updateTransform();skipAttr=true;}else if(key=='stroke'){value=renderer.color(value,element,key);}else if(key=='isTracker'){this[key]=value;}
if(key=='strokeWidth'){key='stroke-width';}
if(isWebKit&&key=='stroke-width'&&value===0){value=0.000001;}
if(this.symbolName&&/^(x|y|r|start|end|innerR)/.test(key)){if(!hasSetSymbolSize){this.symbolAttr(hash);hasSetSymbolSize=true;}
skipAttr=true;}
if(shadows&&/^(width|height|visibility|x|y|d)$/.test(key)){i=shadows.length;while(i--){attr(shadows[i],key,value);}}
if(key=='text'){renderer.buildText(element,value);}else if(!skipAttr){attr(element,key,value);}}}
return ret;},symbolAttr:function(hash){var wrapper=this;wrapper.x=pick(hash.x,wrapper.x);wrapper.y=parseFloat(pick(hash.y,wrapper.y));wrapper.r=pick(hash.r,wrapper.r);wrapper.start=pick(hash.start,wrapper.start);wrapper.end=pick(hash.end,wrapper.end);wrapper.width=pick(hash.width,wrapper.width);wrapper.height=parseFloat(pick(hash.height,wrapper.height));wrapper.innerR=pick(hash.innerR,wrapper.innerR);wrapper.attr({d:wrapper.renderer.symbols[wrapper.symbolName](wrapper.x,wrapper.y,wrapper.r,{start:wrapper.start,end:wrapper.end,width:wrapper.width,height:wrapper.height,innerR:wrapper.innerR})});},clip:function(clipRect){return this.attr('clip-path','url('+this.renderer.url+'#'+clipRect.id+')');},css:function(styles){var elemWrapper=this;if(styles&&styles.color){styles.fill=styles.color;}
styles=extend(elemWrapper.styles,styles);elemWrapper.attr({style:serializeCSS(styles)});elemWrapper.styles=styles;return elemWrapper;},on:function(eventType,handler){this.element['on'+eventType]=handler;return this;},translate:function(x,y){var wrapper=this;wrapper.translateX=x;wrapper.translateY=y;wrapper.updateTransform();return wrapper;},invert:function(){var wrapper=this;wrapper.inverted=true;wrapper.updateTransform();return wrapper;},updateTransform:function(){var wrapper=this,translateX=wrapper.translateX||0,translateY=wrapper.translateY||0,inverted=wrapper.inverted,transform=[];if(inverted){translateX+=wrapper.attr('width');translateY+=wrapper.attr('height');}
if(translateX||translateY){transform.push('translate('+translateX+','+translateY+')');}
if(inverted){transform.push('rotate(90) scale(-1,1)');}
if(transform.length){attr(wrapper.element,'transform',transform.join(' '));}},toFront:function(){var element=this.element;element.parentNode.appendChild(element);return this;},getBBox:function(){return this.element.getBBox();},show:function(){return this.attr({visibility:VISIBLE});},hide:function(){return this.attr({visibility:HIDDEN});},add:function(parent){var renderer=this.renderer,parentWrapper=parent||renderer,parentNode=parentWrapper.element||renderer.box,childNodes=parentNode.childNodes,element=this.element,zIndex=attr(element,'zIndex'),otherElement,otherZIndex,i;this.parentInverted=parent&&parent.inverted;if(zIndex){parentWrapper.handleZ=true;zIndex=parseInt(zIndex,10);}
if(parentWrapper.handleZ){for(i=0;i<childNodes.length;i++){otherElement=childNodes[i];otherZIndex=attr(otherElement,'zIndex');if(otherElement!=element&&(parseInt(otherZIndex,10)>zIndex||(!defined(zIndex)&&defined(otherZIndex)))){parentNode.insertBefore(element,otherElement);return this;}}}
parentNode.appendChild(element);return this;},destroy:function(){var wrapper=this,element=wrapper.element,shadows=wrapper.shadows,parentNode=element.parentNode,key;element.onclick=element.onmouseout=element.onmouseover=element.onmousemove=null;stop(wrapper);if(parentNode){parentNode.removeChild(element);}
if(shadows){each(shadows,function(shadow){parentNode=shadow.parentNode;if(parentNode){parentNode.removeChild(shadow);}});}
for(key in wrapper){delete wrapper[key];}
return null;},empty:function(){var element=this.element,childNodes=element.childNodes,i=childNodes.length;while(i--){element.removeChild(childNodes[i]);}},shadow:function(apply){var shadows=[],i,shadow,element=this.element,transform=this.parentInverted?'(-1,-1)':'(1,1)';if(apply){for(i=1;i<=3;i++){shadow=element.cloneNode(0);attr(shadow,{'isShadow':'true','stroke':'rgb(0, 0, 0)','stroke-opacity':0.05*i,'stroke-width':7-2*i,'transform':'translate'+transform,'fill':NONE});element.parentNode.insertBefore(shadow,element);shadows.push(shadow);}
this.shadows=shadows;}
return this;}};var SVGRenderer=function(){this.init.apply(this,arguments);};SVGRenderer.prototype={init:function(container,width,height){var box=doc.createElementNS('http://www.w3.org/2000/svg','svg'),loc=location;attr(box,{width:width,height:height,xmlns:'http://www.w3.org/2000/svg',version:'1.1'});container.appendChild(box);this.Element=SVGElement;this.box=box;this.url=loc.href.replace(/#.*?$/,'');this.defs=this.createElement('defs').add();},createElement:function(nodeName){var wrapper=new this.Element();wrapper.init(this,nodeName);return wrapper;},buildText:function(textNode,str){var lines=str.toString().replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,'<span').replace(/<\/(b|strong|i|em|a)>/g,'</span>').split(/<br[^>]?>/g),childNodes=textNode.childNodes,styleRegex=/style="([^"]+)"/,hrefRegex=/href="([^"]+)"/,parentX=attr(textNode,'x'),i=childNodes.length;while(i--){textNode.removeChild(childNodes[i]);}
each(lines,function(line,lineNo){var spans,spanNo=0;line=line.replace(/<span/g,'|||<span').replace(/<\/span>/g,'</span>|||');spans=line.split('|||');each(spans,function(span){if(span!==''||spans.length==1){var attributes={},tspan=doc.createElementNS('http://www.w3.org/2000/svg','tspan');if(styleRegex.test(span)){attr(tspan,'style',span.match(styleRegex)[1].replace(/(;| |^)color([ :])/,'$1fill$2'));}
if(hrefRegex.test(span)){attr(tspan,'onclick','location.href=\"'+span.match(hrefRegex)[1]+'\"');css(tspan,{cursor:'pointer'});}
span=span.replace(/<(.|\n)*?>/g,'');tspan.appendChild(doc.createTextNode(span||' '));if(!spanNo){attributes.x=parentX;}else{attributes.dx=3;}
if(lineNo&&!spanNo){attributes.dy=16;}
attr(tspan,attributes);textNode.appendChild(tspan);spanNo++;}});});},crispLine:function(points,width){if(points[1]==points[4]){points[1]=points[4]=mathRound(points[1])+(width%2/2);}
if(points[2]==points[5]){points[2]=points[5]=mathRound(points[2])+(width%2/2);}
return points;},path:function(path){return this.createElement('path').attr({d:path,fill:NONE});},circle:function(x,y,r){var attr=typeof x=='object'?x:{x:x,y:y,r:r};return this.createElement('circle').attr(attr);},arc:function(x,y,r,innerR,start,end){if(typeof x=='object'){y=x.y;r=x.r;innerR=x.innerR;start=x.start;end=x.end;x=x.x;}
return this.symbol('arc',x||0,y||0,r||0,{innerR:innerR||0,start:start||0,end:end||0});},rect:function(x,y,width,height,r,strokeWidth){if(arguments.length>1){var normalizer=(strokeWidth||0)%2/2;x=mathRound(x||0)+normalizer;y=mathRound(y||0)+normalizer;width=mathRound((width||0)-2*normalizer);height=mathRound((height||0)-2*normalizer);}
var attr=typeof x=='object'?x:{x:x,y:y,width:mathMax(width,0),height:mathMax(height,0)};return this.createElement('rect').attr(extend(attr,{rx:r||attr.r,ry:r||attr.r,fill:NONE}));},g:function(name){return this.createElement('g').attr(defined(name)&&{'class':PREFIX+name});},image:function(src,x,y,width,height){var elemWrapper=this.createElement('image').attr({x:x,y:y,width:width,height:height,preserveAspectRatio:NONE});elemWrapper.element.setAttributeNS('http://www.w3.org/1999/xlink','href',src);return elemWrapper;},symbol:function(symbol,x,y,radius,options){var obj,symbolFn=this.symbols[symbol],path=symbolFn&&symbolFn(x,y,radius,options),imageRegex=/^url\((.*?)\)$/,imageSrc;if(path){obj=this.path(path);extend(obj,{symbolName:symbol,x:x,y:y,r:radius});if(options){extend(obj,options);}}else if(imageRegex.test(symbol)){imageSrc=symbol.match(imageRegex)[1];obj=this.image(imageSrc).attr({visibility:HIDDEN});createElement('img',{onload:function(){var img=this,size=symbolSizes[img.src]||[img.width,img.height];obj.attr({x:mathRound(x-size[0]/2)+PX,y:mathRound(y-size[1]/2)+PX,width:size[0],height:size[1],visibility:'inherit'});},src:imageSrc});}else{obj=this.circle(x,y,radius);}
return obj;},symbols:{'square':function(x,y,radius){var len=0.707*radius;return[M,x-len,y-len,L,x+len,y-len,x+len,y+len,x-len,y+len,'Z'];},'triangle':function(x,y,radius){return[M,x,y-1.33*radius,L,x+radius,y+0.67*radius,x-radius,y+0.67*radius,'Z'];},'triangle-down':function(x,y,radius){return[M,x,y+1.33*radius,L,x-radius,y-0.67*radius,x+radius,y-0.67*radius,'Z'];},'diamond':function(x,y,radius){return[M,x,y-radius,L,x+radius,y,x,y+radius,x-radius,y,'Z'];},'arc':function(x,y,radius,options){var pi=Math.PI,start=options.start,end=options.end-0.000001,innerRadius=options.innerR,cosStart=mathCos(start),sinStart=mathSin(start),cosEnd=mathCos(end),sinEnd=mathSin(end),longArc=options.end-start<pi?0:1;return[M,x+radius*cosStart,y+radius*sinStart,'A',radius,radius,0,longArc,1,x+radius*cosEnd,y+radius*sinEnd,L,x+innerRadius*cosEnd,y+innerRadius*sinEnd,'A',innerRadius,innerRadius,0,longArc,0,x+innerRadius*cosStart,y+innerRadius*sinStart,'Z'];}},clipRect:function(x,y,width,height){var wrapper,id=PREFIX+idCounter++,clipPath=this.createElement('clipPath').attr({id:id}).add(this.defs);wrapper=this.rect(x,y,width,height,0).add(clipPath);wrapper.id=id;return wrapper;},color:function(color,elem,prop){var colorObject,regexRgba=/^rgba/;if(color&&color.linearGradient){var renderer=this,strLinearGradient='linearGradient',linearGradient=color[strLinearGradient],id=PREFIX+idCounter++,gradientObject,stopColor,stopOpacity;gradientObject=renderer.createElement(strLinearGradient).attr({id:id,gradientUnits:'userSpaceOnUse',x1:linearGradient[0],y1:linearGradient[1],x2:linearGradient[2],y2:linearGradient[3]}).add(renderer.defs);each(color.stops,function(stop){if(regexRgba.test(stop[1])){colorObject=Color(stop[1]);stopColor=colorObject.get('rgb');stopOpacity=colorObject.get('a');}else{stopColor=stop[1];stopOpacity=1;}
renderer.createElement('stop').attr({offset:stop[0],'stop-color':stopColor,'stop-opacity':stopOpacity}).add(gradientObject);});return'url('+this.url+'#'+id+')';}else if(regexRgba.test(color)){colorObject=Color(color);attr(elem,prop+'-opacity',colorObject.get('a'));return colorObject.get('rgb');}else{return color;}},text:function(str,x,y,style,rotation,align){style=style||{};align=align||'left';rotation=rotation||0;var attribs,css,fill=style.color||'#000000',defaultChartStyle=defaultOptions.chart.style;x=mathRound(pick(x,0));y=mathRound(pick(y,0));extend(style,{fontFamily:style.fontFamily||defaultChartStyle.fontFamily,fontSize:style.fontSize||defaultChartStyle.fontSize});css=serializeCSS(style);attribs={x:x,y:y,text:str,fill:fill,style:css.replace(/"/g,"'")};if(rotation||align!='left'){attribs=extend(attribs,{'text-anchor':{left:'start',center:'middle',right:'end'}[align],transform:'rotate('+rotation+' '+x+' '+y+')'});}
return this.createElement('text').attr(attribs);}};var VMLRenderer;if(!hasSVG){var VMLElement=extendClass(SVGElement,{init:function(renderer,nodeName){var markup=['<',nodeName,' filled="f" stroked="f"'],style=['position: ',ABSOLUTE,';'];if(nodeName=='shape'||nodeName==DIV){style.push('left:0;top:0;width:10px;height:10px');}
markup.push(' style="',style.join(''),'"/>');if(nodeName){markup=nodeName==DIV||nodeName=='span'||nodeName=='img'?markup.join(''):renderer.prepVML(markup);this.element=createElement(markup);}
this.renderer=renderer;},add:function(parent){var wrapper=this,renderer=wrapper.renderer,element=wrapper.element,box=renderer.box,inverted=parent&&parent.inverted,parentStyle,parentNode=parent?parent.element||parent:box;if(inverted){parentStyle=parentNode.style;css(element,{flip:'x',left:parseInt(parentStyle.width,10)-10,top:parseInt(parentStyle.height,10)-10,rotation:-90});}
parentNode.appendChild(element);return wrapper;},attr:function(hash,val){var key,value,i,element=this.element,elemStyle=element.style,nodeName=element.nodeName,renderer=this.renderer,symbolName=this.symbolName,hasSetSymbolSize,shadows=this.shadows,documentMode=doc.documentMode,skipAttr,ret=this;if(typeof hash=='string'&&defined(val)){key=hash;hash={};hash[key]=val;}
if(typeof hash=='string'){key=hash;if(key=='strokeWidth'||key=='stroke-width'){ret=element.strokeweight;}else{ret=pick(this[key],parseInt(elemStyle[{x:'left',y:'top'}[key]||key],10));}}else{for(key in hash){value=hash[key];skipAttr=false;if(symbolName&&/^(x|y|r|start|end|width|height|innerR)/.test(key)){if(!hasSetSymbolSize){this.symbolAttr(hash);hasSetSymbolSize=true;}
skipAttr=true;}else if(key=='d'){i=value.length;var convertedPath=[];while(i--){if(typeof value[i]=='number'){convertedPath[i]=mathRound(value[i]*10)-5;}
else if(value[i]=='Z'){convertedPath[i]='x';}
else{convertedPath[i]=value[i];}}
value=convertedPath.join(' ')||'x';element.path=value;if(shadows){i=shadows.length;while(i--){shadows[i].path=value;}}
skipAttr=true;}else if(key=='zIndex'||key=='visibility'){elemStyle[key]=value;if(documentMode==8&&key=='visibility'&&nodeName=='DIV'){each(element.childNodes,function(childNode){css(childNode,{visibility:value});});}
skipAttr=true;}else if(/^(width|height)$/.test(key)){elemStyle[key]=value;if(this.updateClipping){this.updateClipping();}
skipAttr=true;}else if(/^(x|y)$/.test(key)){if(key=='y'&&element.tagName=='SPAN'&&element.lineHeight){value-=element.lineHeight;}
elemStyle[{x:'left',y:'top'}[key]]=value;}else if(key=='class'){element.className=value;}else if(key=='stroke'){value=renderer.color(value,element,key);key='strokecolor';}else if(key=='stroke-width'||key=='strokeWidth'){element.stroked=value?true:false;key='strokeweight';if(typeof value=='number'){value+=PX;}}else if(key=='fill'){if(nodeName=='SPAN'){elemStyle.color=value;}else{element.filled=value!=NONE?true:false;value=renderer.color(value,element,key);key='fillcolor';}}
else if(key=='translateX'||key=='translateY'){this[key]=val;this.updateTransform();skipAttr=true;}
if(shadows&&key=='visibility'){i=shadows.length;while(i--){shadows[i].style[key]=value;}}
if(key=='text'){element.innerHTML=value;}else if(!skipAttr){if(documentMode==8){element[key]=value;}else{attr(element,key,value);}}}}
return ret;},clip:function(clipRect){var wrapper=this,clipMembers=clipRect.members,index=clipMembers.length;clipMembers.push(wrapper);wrapper.destroyClip=function(){clipMembers.splice(index,1);};return wrapper.css(clipRect.getCSS(wrapper.inverted));},css:function(styles){var wrapper=this;css(wrapper.element,styles);return wrapper;},destroy:function(){var wrapper=this;if(wrapper.destroyClip){wrapper.destroyClip();}
SVGElement.prototype.destroy.apply(this);},empty:function(){var element=this.element,childNodes=element.childNodes,i=childNodes.length,node;while(i--){node=childNodes[i];node.parentNode.removeChild(node);}},getBBox:function(){var element=this.element,ret,hasOffsetWidth=element.offsetWidth,origParentNode=element.parentNode;if(!hasOffsetWidth){doc.body.appendChild(element);}
ret={x:element.offsetLeft,y:element.offsetTop,width:element.offsetWidth,height:element.offsetHeight};if(!hasOffsetWidth){if(origParentNode){origParentNode.appendChild(element);}else{doc.body.removeChild(element);}}
return ret;},on:function(eventType,handler){this.element['on'+eventType]=function(){var evt=win.event;evt.target=evt.srcElement;handler(evt);};return this;},updateTransform:function(){var wrapper=this,translateX=wrapper.translateX||0,translateY=wrapper.translateY||0;if(translateX||translateY){wrapper.css({left:translateX,top:translateY});}},shadow:function(apply){var shadows=[],i,element=this.element,renderer=this.renderer,shadow,elemStyle=element.style,markup,path=element.path;if(''+element.path==''){path='x';}
if(apply){for(i=1;i<=3;i++){markup=['<shape isShadow="true" strokeweight="',(7-2*i),'" filled="false" path="',path,'" coordsize="100,100" style="',element.style.cssText,'" />'];shadow=createElement(renderer.prepVML(markup),null,{left:parseInt(elemStyle.left,10)+1,top:parseInt(elemStyle.top,10)+1});markup=['<stroke color="black" opacity="',(0.05*i),'"/>'];createElement(renderer.prepVML(markup),null,null,shadow);element.parentNode.insertBefore(shadow,element);shadows.push(shadow);}
this.shadows=shadows;}
return this;}});VMLRenderer=function(){this.init.apply(this,arguments);};VMLRenderer.prototype=merge(SVGRenderer.prototype,{isIE8:userAgent.indexOf('MSIE 8.0')>-1,init:function(container,width,height){this.width=width;this.height=height;this.box=createElement(DIV,null,{width:width+PX,height:height+PX},container);this.Element=VMLElement;if(!doc.namespaces.hcv){doc.namespaces.add('hcv','urn:schemas-microsoft-com:vml');doc.createStyleSheet().cssText='hcv\\:fill, hcv\\:path, hcv\\:textpath, hcv\\:shape, hcv\\:stroke, hcv\\:line '+'{ behavior:url(#default#VML); display: inline-block; } ';}},clipRect:function(x,y,width,height){var clipRect=this.createElement();return extend(clipRect,{members:[],element:{style:{left:x,top:y,width:width,height:height}},getCSS:function(inverted){var elemStyle=clipRect.element.style,top=elemStyle.top,left=elemStyle.left,right=left+elemStyle.width,bottom=top+elemStyle.height,ret={clip:'rect('+
(inverted?left:top)+'px,'+
(inverted?bottom:right)+'px,'+
(inverted?right:bottom)+'px,'+
(inverted?top:left)+'px)'};if(!inverted&&doc.documentMode==8){extend(ret,{width:right+PX,height:bottom+PX});}
return ret;},updateClipping:function(){each(clipRect.members,function(member){member.css(clipRect.getCSS(member.inverted));});}});},color:function(color,elem,prop){var colorObject,regexRgba=/^rgba/,markup;if(color&&color.linearGradient){var stopColor,stopOpacity,linearGradient=color.linearGradient,angle,color1,opacity1,color2,opacity2;each(color.stops,function(stop,i){if(regexRgba.test(stop[1])){colorObject=Color(stop[1]);stopColor=colorObject.get('rgb');stopOpacity=colorObject.get('a');}else{stopColor=stop[1];stopOpacity=1;}
if(!i){color1=stopColor;opacity1=stopOpacity;}else{color2=stopColor;opacity2=stopOpacity;}});angle=90-math.atan((linearGradient[3]-linearGradient[1])/(linearGradient[2]-linearGradient[0]))*180/math.PI;markup=['<',prop,' colors="0% ',color1,',100% ',color2,'" angle="',angle,'" opacity="',opacity2,'" o:opacity2="',opacity1,'" type="gradient" focus="100%" />'];createElement(this.prepVML(markup),null,null,elem);}else if(regexRgba.test(color)){colorObject=Color(color);markup=['<',prop,' opacity="',colorObject.get('a'),'"/>'];createElement(this.prepVML(markup),null,null,elem);return colorObject.get('rgb');}else{return color;}},prepVML:function(markup){var
vmlStyle='display:inline-block;behavior:url(#default#VML);',isIE8=this.isIE8;markup=markup.join('');if(isIE8){markup=markup.replace('/>',' xmlns="urn:schemas-microsoft-com:vml" />');if(markup.indexOf('style="')==-1){markup=markup.replace('/>',' style="'+vmlStyle+'" />');}else{markup=markup.replace('style="','style="'+vmlStyle);}}else{markup=markup.replace('<','<hcv:');}
return markup;},text:function(str,x,y,style,rotation,align){style=style||{};align=align||'left';rotation=rotation||0;var elemWrapper,elem,spanWidth,lineHeight=mathRound(parseInt(style.fontSize||12,10)*1.2),defaultChartStyle=defaultOptions.chart.style;x=mathRound(x);y=mathRound(y);extend(style,{color:style.color||'#000000',whiteSpace:'nowrap',fontFamily:style.fontFamily||defaultChartStyle.fontFamily,fontSize:style.fontSize||defaultChartStyle.fontSize});if(!rotation){elemWrapper=this.createElement('span').attr({x:x,y:y-lineHeight,text:str});elem=elemWrapper.element;elem.lineHeight=lineHeight;css(elem,style);if(align!='left'){spanWidth=elemWrapper.getBBox().width;css(elem,{left:(x-spanWidth/{right:1,center:2}[align])+PX});}}else{var radians=(rotation||0)*math.PI*2/360,costheta=mathCos(radians),sintheta=mathSin(radians),length=10,baselineCorrection=lineHeight*0.3,left=align=='left',right=align=='right',x1=left?x:x-length*costheta,x2=right?x:x+length*costheta,y1=left?y:y-length*sintheta,y2=right?y:y+length*sintheta;x1+=baselineCorrection*sintheta;x2+=baselineCorrection*sintheta;y1-=baselineCorrection*costheta;y2-=baselineCorrection*costheta;if(mathAbs(x1-x2)<0.1){x1+=0.1;}
if(mathAbs(y1-y2)<0.1){y1+=0.1;}
elemWrapper=this.createElement('line').attr({from:x1+', '+y1,to:x2+', '+y2});elem=elemWrapper.element;createElement('hcv:fill',{on:true,color:style.color},null,elem);createElement('hcv:path',{textpathok:true},null,elem);createElement('<hcv:textpath style="v-text-align:'+align+';'+serializeCSS(style).replace(/"/g,"'")+'" on="true" string="'+str.toString().replace(/<br[^>]?>/g,'\n')+'">',null,null,elem);}
return elemWrapper;},path:function(path){return this.createElement('shape').attr({coordsize:'100 100',d:path});},circle:function(x,y,r){return this.path(this.symbols.circle(x,y,r));},g:function(name){var wrapper,attribs;if(name){attribs={'className':PREFIX+name,'class':PREFIX+name};}
wrapper=this.createElement(DIV).attr(attribs);return wrapper;},image:function(src,x,y,width,height){return this.createElement('img').attr({src:src}).css({left:x,top:y,width:width,height:height});},rect:function(x,y,width,height,r,strokeWidth){if(arguments.length>1){var normalizer=(strokeWidth||0)%2/2;x=mathRound(x||0)+normalizer;y=mathRound(y||0)+normalizer;width=mathRound((width||0)-2*normalizer);height=mathRound((height||0)-2*normalizer);}
if(typeof x=='object'){y=x.y;width=x.width;height=x.height;r=x.r;x=x.x;}
return this.symbol('rect',x||0,y||0,r||0,{width:width||0,height:height||0});},symbol:function(symbol,x,y,radius){var wrapper,imageRegex=/^url\((.*?)\)$/;if(imageRegex.test(symbol)){wrapper=this.createElement('img').attr({onload:function(){var img=this,size=[img.width,img.height];css(img,{left:mathRound(x-size[0]/2),top:mathRound(y-size[1]/2)});},src:symbol.match(imageRegex)[1]});}else{wrapper=SVGRenderer.prototype.symbol.apply(this,arguments);}
return wrapper;},symbols:{arc:function(x,y,radius,options){var start=options.start,optionsEnd=options.end,end=optionsEnd-start==2*Math.PI?optionsEnd-0.001:optionsEnd,cosStart=mathCos(start),sinStart=mathSin(start),cosEnd=mathCos(end),sinEnd=mathSin(end),innerRadius=options.innerR;if(optionsEnd-start===0){return['x'];}
return['wa',x-radius,y-radius,x+radius,y+radius,x+radius*cosStart,y+radius*sinStart,x+radius*cosEnd,y+radius*sinEnd,'at',x-innerRadius,y-innerRadius,x+innerRadius,y+innerRadius,x+innerRadius*cosEnd,y+innerRadius*sinEnd,x+innerRadius*cosStart,y+innerRadius*sinStart,'x','e'];},circle:function(x,y,r){return['wa',x-r,y-r,x+r,y+r,x+r,y,x+r,y,'e'];},rect:function(left,top,r,options){var width=options.width,height=options.height,right=left+width,bottom=top+height;r=mathMin(r,width,height);return[M,left+r,top,L,right-r,top,'wa',right-2*r,top,right,top+2*r,right-r,top,right,top+r,L,right,bottom-r,'wa',right-2*r,bottom-2*r,right,bottom,right,bottom-r,right-r,bottom,L,left+r,bottom,'wa',left,bottom-2*r,left+2*r,bottom,left+r,bottom,left,bottom-r,L,left,top+r,'wa',left,top,left+2*r,top+2*r,left,top+r,left+r,top,'x','e'];}}});}
var Renderer=hasSVG?SVGRenderer:VMLRenderer;function Chart(options){defaultXAxisOptions=merge(defaultXAxisOptions,defaultOptions.xAxis);defaultYAxisOptions=merge(defaultYAxisOptions,defaultOptions.yAxis);defaultOptions.xAxis=defaultOptions.yAxis=null;options=merge(defaultOptions,options);var optionsChart=options.chart,optionsMargin=optionsChart.margin,margin=typeof optionsMargin=='number'?[optionsMargin,optionsMargin,optionsMargin,optionsMargin]:optionsMargin,plotTop=pick(optionsChart.marginTop,margin[0]),marginRight=pick(optionsChart.marginRight,margin[1]),marginBottom=pick(optionsChart.marginBottom,margin[2]),plotLeft=pick(optionsChart.marginLeft,margin[3]),renderTo,renderToClone,container,containerId,chartWidth,chartHeight,chart=this,chartEvents=optionsChart.events,eventType,getAlignment,isInsidePlot,tooltip,mouseIsDown,loadingLayer,loadingShown,plotHeight,plotWidth,plotSizeX,plotSizeY,tracker,trackerGroup,legend,position,hasCartesianSeries=optionsChart.showAxes,axes=[],maxTicks,series=[],inverted,renderer,tooltipTick,tooltipInterval,zoom,zoomOut;function Axis(chart,options){var isXAxis=options.isX,opposite=options.opposite,horiz=inverted?!isXAxis:isXAxis,stacks={bar:{},column:{},area:{},areaspline:{},line:{}};options=merge(isXAxis?defaultXAxisOptions:defaultYAxisOptions,horiz?(opposite?defaultTopAxisOptions:defaultBottomAxisOptions):(opposite?defaultRightAxisOptions:defaultLeftAxisOptions),options);var axis=this,isDatetimeAxis=options.type=='datetime',offset=options.offset||0,xOrY=isXAxis?'x':'y',axisLength=horiz?plotWidth:plotHeight,transA,transB=horiz?plotLeft:marginBottom,axisGroup,gridGroup,dataMin,dataMax,associatedSeries,userSetMin,userSetMax,max=null,min=null,minPadding=options.minPadding,maxPadding=options.maxPadding,isLinked=defined(options.linkedTo),ignoreMinPadding,ignoreMaxPadding,usePercentage,events=options.events,eventType,plotBands=options.plotBands||[],plotLines=options.plotLines||[],tickInterval,minorTickInterval,magnitude,tickPositions,tickAmount,dateTimeLabelFormat,labelFormatter=options.labels.formatter||function(){var value=this.value;return dateTimeLabelFormat?dateFormat(dateTimeLabelFormat,value):value;},categories=options.categories||(isXAxis&&chart.columnCount),reversed=options.reversed,tickmarkOffset=(categories&&options.tickmarkPlacement=='between')?0.5:0;function getSeriesExtremes(){var stack=[],run;dataMin=dataMax=null;associatedSeries=[];each(series,function(serie){run=false;each(['xAxis','yAxis'],function(strAxis){if(serie.isCartesian&&(strAxis=='xAxis'&&isXAxis||strAxis=='yAxis'&&!isXAxis)&&((serie.options[strAxis]==options.index)||(serie.options[strAxis]===UNDEFINED&&options.index===0))){serie[strAxis]=axis;associatedSeries.push(serie);run=true;}});if(!serie.visible&&optionsChart.ignoreHiddenSeries){run=false;}
if(run){var stacking,typeStack;if(!isXAxis){stacking=serie.options.stacking;usePercentage=stacking=='percent';if(stacking){typeStack=stack[serie.type]||[];stack[serie.type]=typeStack;}
if(usePercentage){dataMin=0;dataMax=99;}}
if(serie.isCartesian){each(serie.data,function(point,i){var pointX=point.x,pointY=point.y;if(dataMin===null){dataMin=dataMax=point[xOrY];}
if(isXAxis){if(pointX>dataMax){dataMax=pointX;}else if(pointX<dataMin){dataMin=pointX;}}
else if(defined(pointY)){if(stacking){typeStack[pointX]=typeStack[pointX]?typeStack[pointX]+pointY:pointY;}
var stackedPoint=typeStack?typeStack[pointX]:pointY;if(!usePercentage){if(stackedPoint>dataMax){dataMax=stackedPoint;}else if(stackedPoint<dataMin){dataMin=stackedPoint;}}
if(stacking){stacks[serie.type][pointX]={total:stackedPoint,cum:stackedPoint};}}});if(/(area|column|bar)/.test(serie.type)&&!isXAxis){if(dataMin>=0){dataMin=0;ignoreMinPadding=true;}else if(dataMax<0){dataMax=0;ignoreMaxPadding=true;}}}}});}
function translate(val,backwards,cvsCoord){var sign=1,cvsOffset=0,returnValue;if(cvsCoord){sign*=-1;cvsOffset=axisLength;}
if(reversed){sign*=-1;cvsOffset-=sign*axisLength;}
if(min===UNDEFINED){returnValue=null;}else if(backwards){if(reversed){val=axisLength-val;}
returnValue=val/transA+min;}else{returnValue=sign*(val-min)*transA+cvsOffset;}
return returnValue;}
function drawPlotLine(value,color,width){if(width){var x1,y1,x2,y2,translatedValue=translate(value),skip;x1=x2=translatedValue+transB;y1=y2=chartHeight-translatedValue-transB;if(horiz){y1=plotTop;y2=chartHeight-marginBottom;if(x1<plotLeft||x1>plotLeft+plotWidth){skip=true;}}else{x1=plotLeft;x2=chartWidth-marginRight;if(y1<plotTop||y1>plotTop+plotHeight){skip=true;}}
if(!skip){renderer.path(renderer.crispLine([M,x1,y1,L,x2,y2],width)).attr({stroke:color,'stroke-width':width}).add(gridGroup);}}}
function drawPlotBand(from,to,color){from=mathMax(from,min);to=mathMin(to,max);var width=(to-from)*transA;drawPlotLine(from+(to-from)/2,color,width);}
function addTick(pos,tickPos,color,width,len,withLabel,index){var x1,y1,x2,y2,str,labelOptions=options.labels;if(tickPos=='inside'){len=-len;}
if(opposite){len=-len;}
x1=x2=translate(pos+tickmarkOffset)+transB;y1=y2=chartHeight-translate(pos+tickmarkOffset)-transB;if(horiz){y1=chartHeight-marginBottom-(opposite?plotHeight:0)+offset;y2=y1+len;}else{x1=plotLeft+(opposite?plotWidth:0)+offset;x2=x1-len;}
if(width){renderer.path(renderer.crispLine([M,x1,y1,L,x2,y2],width)).attr({stroke:color,'stroke-width':width}).add(axisGroup);}
if(withLabel&&labelOptions.enabled){str=labelFormatter.call({index:index,isFirst:pos==tickPositions[0],isLast:pos==tickPositions[tickPositions.length-1],dateTimeLabelFormat:dateTimeLabelFormat,value:(categories&&categories[pos]?categories[pos]:pos)});if(str||str===0){x1=x1+labelOptions.x-(tickmarkOffset&&horiz?tickmarkOffset*transA*(reversed?-1:1):0);y1=y1+labelOptions.y-(tickmarkOffset&&!horiz?tickmarkOffset*transA*(reversed?1:-1):0);renderer.text(str,x1,y1,labelOptions.style,labelOptions.rotation,labelOptions.align).add(axisGroup);}}}
function normalizeTickInterval(interval,multiples){var normalized;magnitude=multiples?1:math.pow(10,mathFloor(math.log(interval)/math.LN10));normalized=interval/magnitude;if(!multiples){multiples=[1,2,2.5,5,10];if(options.allowDecimals===false){if(magnitude==1){multiples=[1,2,5,10];}else if(magnitude<=0.1){multiples=[1/magnitude];}}}
for(var i=0;i<multiples.length;i++){interval=multiples[i];if(normalized<=(multiples[i]+(multiples[i+1]||multiples[i]))/2){break;}}
interval*=magnitude;return interval;}
function setDateTimeTickPositions(){tickPositions=[];var i,useUTC=defaultOptions.global.useUTC,oneSecond=1000/timeFactor,oneMinute=60000/timeFactor,oneHour=3600000/timeFactor,oneDay=24*3600000/timeFactor,oneWeek=7*24*3600000/timeFactor,oneMonth=30*24*3600000/timeFactor,oneYear=31556952000/timeFactor,units=[['second',oneSecond,[1,2,5,10,15,30]],['minute',oneMinute,[1,2,5,10,15,30]],['hour',oneHour,[1,2,3,4,6,8,12]],['day',oneDay,[1,2]],['week',oneWeek,[1,2]],['month',oneMonth,[1,2,3,4,6]],['year',oneYear,null]],unit=units[6],interval=unit[1],multiples=unit[2];for(i=0;i<units.length;i++){unit=units[i];interval=unit[1];multiples=unit[2];if(units[i+1]){var lessThan=(interval*multiples[multiples.length-1]+
units[i+1][1])/2;if(tickInterval<=lessThan){break;}}}
if(interval==oneYear&&tickInterval<5*interval){multiples=[1,2,5];}
var multitude=normalizeTickInterval(tickInterval/interval,multiples),minYear,minDate=new Date(min*timeFactor);minDate.setMilliseconds(0);if(interval>=oneSecond){minDate.setSeconds(interval>=oneMinute?0:multitude*mathFloor(minDate.getSeconds()/multitude));}
if(interval>=oneMinute){minDate[setMinutes](interval>=oneHour?0:multitude*mathFloor(minDate[getMinutes]()/multitude));}
if(interval>=oneHour){minDate[setHours](interval>=oneDay?0:multitude*mathFloor(minDate[getHours]()/multitude));}
if(interval>=oneDay){minDate[setDate](interval>=oneMonth?1:multitude*mathFloor(minDate[getDate]()/multitude));}
if(interval>=oneMonth){minDate[setMonth](interval>=oneYear?0:multitude*mathFloor(minDate[getMonth]()/multitude));minYear=minDate[getFullYear]();}
if(interval>=oneYear){minYear-=minYear%multitude;minDate[setFullYear](minYear);}
if(interval==oneWeek){minDate[setDate](minDate[getDate]()-minDate[getDay]()+
options.startOfWeek);}
i=1;minYear=minDate[getFullYear]();var time=minDate.getTime()/timeFactor,minMonth=minDate[getMonth](),minDateDate=minDate[getDate]();while(time<max&&i<plotWidth){tickPositions.push(time);if(interval==oneYear){time=makeTime(minYear+i*multitude,0)/timeFactor;}else if(interval==oneMonth){time=makeTime(minYear,minMonth+i*multitude)/timeFactor;}else if(!useUTC&&(interval==oneDay||interval==oneWeek)){time=makeTime(minYear,minMonth,minDateDate+
i*multitude*(interval==oneDay?1:7));}else{time+=interval*multitude;}
i++;}
tickPositions.push(time);dateTimeLabelFormat=options.dateTimeLabelFormats[unit[0]];}
function correctFloat(num){var invMag=(magnitude<1?mathRound(1/magnitude):1)*10;return mathRound(num*invMag)/invMag;}
function setLinearTickPositions(){var i,roundedMin=mathFloor(min/tickInterval)*tickInterval,roundedMax=mathCeil(max/tickInterval)*tickInterval;tickPositions=[];i=correctFloat(roundedMin);while(i<=roundedMax){tickPositions.push(i);i=correctFloat(i+tickInterval);}
if(categories){min-=0.5;max+=0.5;}}
function setTickPositions(){if(isDatetimeAxis){setDateTimeTickPositions();}else{setLinearTickPositions();}
var roundedMin=tickPositions[0],roundedMax=tickPositions[tickPositions.length-1];if(options.startOnTick){min=roundedMin;}else if(min>roundedMin){tickPositions.shift();}
if(options.endOnTick){max=roundedMax;}else if(max<roundedMax){tickPositions.pop();}}
function adjustTickAmount(){if(!isDatetimeAxis&&!categories){var oldTickAmount=tickAmount,calculatedTickAmount=tickPositions.length;tickAmount=maxTicks[xOrY];if(calculatedTickAmount<tickAmount){while(tickPositions.length<tickAmount){tickPositions.push(correctFloat(tickPositions[tickPositions.length-1]+tickInterval));}
transA*=(calculatedTickAmount-1)/(tickAmount-1);}
if(defined(oldTickAmount)&&tickAmount!=oldTickAmount){axis.isDirty=true;}}}
function setScale(){var length,type,i,oldMin=min,oldMax=max,maxZoom=options.maxZoom,zoomOffset;getSeriesExtremes();min=pick(userSetMin,options.min,dataMin);max=pick(userSetMax,options.max,dataMax);if(isLinked){var linkedParent=chart[isXAxis?'xAxis':'yAxis'][options.linkedTo],linkedParentExtremes=linkedParent.getExtremes();min=pick(linkedParentExtremes.min,linkedParentExtremes.dataMin);max=pick(linkedParentExtremes.max,linkedParentExtremes.dataMax);}
if(max-min<maxZoom){zoomOffset=(maxZoom-max+min)/2;min=mathMax(min-zoomOffset,pick(options.min,min-zoomOffset));max=mathMin(min+maxZoom,pick(options.max,min+maxZoom));}
if(!categories&&!usePercentage&&!isLinked&&defined(min)&&defined(max)){length=(max-min)||1;if(!defined(options.min)&&!defined(userSetMin)&&minPadding&&(dataMin<0||!ignoreMinPadding)){min-=length*minPadding;}
if(!defined(options.max)&&!defined(userSetMax)&&maxPadding&&(dataMax>0||!ignoreMaxPadding)){max+=length*maxPadding;}}
if(categories||min==max){tickInterval=1;}else{tickInterval=pick(options.tickInterval,(max-min)*options.tickPixelInterval/axisLength);}
if(!isDatetimeAxis&&!defined(options.tickInterval)){tickInterval=normalizeTickInterval(tickInterval);}
minorTickInterval=options.minorTickInterval==='auto'&&tickInterval?tickInterval/5:options.minorTickInterval;setTickPositions();transA=axisLength/((max-min)||1);if(!maxTicks){maxTicks={x:0,y:0};}
if(!isDatetimeAxis&&tickPositions.length>maxTicks[xOrY]){maxTicks[xOrY]=tickPositions.length;}
if(!isXAxis){for(type in stacks){for(i in stacks[type]){stacks[type][i].cum=stacks[type][i].total;}}}
if(!axis.isDirty){axis.isDirty=(min!=oldMin||max!=oldMax);}}
function setExtremes(newMin,newMax,redraw){redraw=pick(redraw,true);fireEvent(axis,'setExtremes',{min:newMin,max:newMax},function(){if(categories){if(newMin<0){newMin=0;}
if(newMax>categories.length-1){newMax=categories.length-1;}}
userSetMin=newMin;userSetMax=newMax;if(redraw){chart.redraw();}});}
function getExtremes(){return{min:min,max:max,dataMin:dataMin,dataMax:dataMax};}
function getThreshold(threshold){if(min>threshold){threshold=min;}else if(max<threshold){threshold=max;}
return translate(threshold,0,1);}
function addPlotBandOrLine(item){var isLine=item.width,collection=isLine?plotLines:plotBands;collection.push(item);if(isLine){drawPlotLine(item.value,item.color,item.width);}else{drawPlotBand(item.from,item.to,item.color);}}
function render(){var axisTitleOptions=options.title,alternateGridColor=options.alternateGridColor,minorTickWidth=options.minorTickWidth,lineWidth=options.lineWidth,lineLeft,lineTop,tickmarkPos,hasData=associatedSeries.length&&defined(min)&&defined(max);if(!axisGroup){axisGroup=renderer.g('axis').attr({zIndex:7}).add();gridGroup=renderer.g('grid').attr({zIndex:1}).add();}else{axisGroup.empty();gridGroup.empty();}
if(hasData||isLinked){if(alternateGridColor){each(tickPositions,function(pos,i){if(i%2===0&&pos<max){drawPlotBand(pos,tickPositions[i+1]!==UNDEFINED?tickPositions[i+1]:max,alternateGridColor);}});}
each(plotBands,function(plotBand){drawPlotBand(plotBand.from,plotBand.to,plotBand.color);});if(minorTickInterval&&!categories){for(var i=min;i<=max;i+=minorTickInterval){drawPlotLine(i,options.minorGridLineColor,options.minorGridLineWidth);if(minorTickWidth){addTick(i,options.minorTickPosition,options.minorTickColor,minorTickWidth,options.minorTickLength);}}}
each(tickPositions,function(pos,index){tickmarkPos=pos+tickmarkOffset;drawPlotLine(tickmarkPos,options.gridLineColor,options.gridLineWidth);addTick(pos,options.tickPosition,options.tickColor,options.tickWidth,options.tickLength,!((pos==min&&!options.showFirstLabel)||(pos==max&&!options.showLastLabel)),index);});each(plotLines,function(plotLine){drawPlotLine(plotLine.value,plotLine.color,plotLine.width);});}
if(!axis.hasRenderedLine&&lineWidth){lineLeft=plotLeft+(opposite?plotWidth:0)+offset;lineTop=chartHeight-marginBottom-(opposite?plotHeight:0)+offset;renderer.path(renderer.crispLine([M,horiz?plotLeft:lineLeft,horiz?lineTop:plotTop,L,horiz?chartWidth-marginRight:lineLeft,horiz?lineTop:chartHeight-marginBottom],lineWidth)).attr({stroke:options.lineColor,'stroke-width':lineWidth,zIndex:7}).add();axis.hasRenderedLine=true;}
if(!axis.hasRenderedTitle&&!axis.axisTitle&&axisTitleOptions&&axisTitleOptions.text){var margin=horiz?plotLeft:plotTop;var alongAxis={low:margin+(horiz?0:axisLength),middle:margin+axisLength/2,high:margin+(horiz?axisLength:0)}[axisTitleOptions.align];var offAxis=(horiz?plotTop+plotHeight:plotLeft)+
(horiz?1:-1)*(opposite?-1:1)*axisTitleOptions.margin-
(isIE?parseInt(axisTitleOptions.style.fontSize||12,10)/3:0);axis.axisTitle=renderer.text(axisTitleOptions.text,(horiz?alongAxis:offAxis+(opposite?plotWidth:0)+offset)
+(axisTitleOptions.x||0),(horiz?offAxis-(opposite?plotHeight:0)+offset:alongAxis)
+(axisTitleOptions.y||0),axisTitleOptions.style,axisTitleOptions.rotation||0,{low:'left',middle:'center',high:'right'}[axisTitleOptions.align]).attr({zIndex:7}).add();axis.hasRenderedTitle=true;}
axis.isDirty=false;}
function removePlotBandOrLine(id){each([plotBands,plotLines],function(collection){for(var i=0;i<collection.length;i++){if(collection[i].id==id){collection.splice(i,1);break;}}});render();}
function redraw(){if(tracker.resetTracker){tracker.resetTracker();}
render();each(associatedSeries,function(series){series.isDirty=true;});}
function setCategories(newCategories,doRedraw){axis.categories=categories=newCategories;each(associatedSeries,function(series){series.translate();series.setTooltipPoints(true);});axis.isDirty=true;if(pick(doRedraw,true)){redraw();}}
if(inverted&&isXAxis&&reversed===UNDEFINED){reversed=true;}
if(!opposite){offset*=-1;}
if(horiz){offset*=-1;}
extend(axis,{addPlotBand:addPlotBandOrLine,addPlotLine:addPlotBandOrLine,adjustTickAmount:adjustTickAmount,categories:categories,getExtremes:getExtremes,getThreshold:getThreshold,isXAxis:isXAxis,options:options,render:render,setExtremes:setExtremes,setScale:setScale,setCategories:setCategories,translate:translate,redraw:redraw,removePlotBand:removePlotBandOrLine,removePlotLine:removePlotBandOrLine,reversed:reversed,stacks:stacks});for(eventType in events){addEvent(axis,eventType,events[eventType]);}
setScale();}
function Toolbar(chart){var buttons={};function add(id,text,title,fn){if(!buttons[id]){var button=renderer.text(text,plotLeft+plotWidth-20,plotTop+30,options.toolbar.itemStyle,0,'right').on('click',fn).attr({zIndex:20}).add();buttons[id]=button;}}
function remove(id){discardElement(buttons[id].element);buttons[id]=null;}
return{add:add,remove:remove};}
function Tooltip(options){var currentSeries,borderWidth=options.borderWidth,style=options.style,padding=parseInt(style.padding,10),boxOffLeft=borderWidth+padding,tooltipIsHidden=true,boxWidth,boxHeight,currentX=0,currentY=0;style.padding=0;var group=renderer.g('tooltip').attr({zIndex:8}).add(),box=renderer.rect(boxOffLeft,boxOffLeft,0,0,options.borderRadius,borderWidth).attr({fill:options.backgroundColor,'stroke-width':borderWidth}).add(group).shadow(options.shadow),label=renderer.text('',padding+boxOffLeft,parseInt(style.fontSize,10)+padding+boxOffLeft).attr({zIndex:1}).css(style).add(group);function move(finalX,finalY){currentX=tooltipIsHidden?finalX:(2*currentX+finalX)/3;currentY=tooltipIsHidden?finalY:(currentY+finalY)/2;group.translate(currentX,currentY);if(mathAbs(finalX-currentX)>1||mathAbs(finalY-currentY)>1){tooltipTick=function(){move(finalX,finalY);};}else{tooltipTick=null;}}
function hide(){tooltipIsHidden=true;group.hide();}
function refresh(point){var
series=point.series,borderColor=options.borderColor||point.color||series.color||'#606060',x,y,boxX,boxY,show,bBox,text=point.tooltipText,tooltipPos=point.tooltipPos;currentSeries=series;x=mathRound(tooltipPos?tooltipPos[0]:(inverted?plotWidth-point.plotY:point.plotX));y=mathRound(tooltipPos?tooltipPos[1]:(inverted?plotHeight-point.plotX:point.plotY));show=isInsidePlot(x,y);if(text===false||!show){hide();}else{if(tooltipIsHidden){group.show();tooltipIsHidden=false;}
label.attr({text:text});bBox=label.getBBox();boxWidth=bBox.width;boxHeight=bBox.height;box.attr({width:boxWidth+2*padding,height:boxHeight+2*padding,stroke:borderColor});boxX=x-boxWidth+plotLeft-25;boxY=y-boxHeight+plotTop+10;if(boxX<7){boxX=7;boxY-=20;}
if(boxY<5){boxY=5;}else if(boxY+boxHeight>chartHeight){boxY=chartHeight-boxHeight-5;}
move(mathRound(boxX-boxOffLeft),mathRound(boxY-boxOffLeft));}}
return{refresh:refresh,hide:hide};}
function MouseTracker(chart,options){var mouseDownX,mouseDownY,hasDragged,selectionMarker,zoomType=optionsChart.zoomType,zoomX=/x/.test(zoomType),zoomY=/y/.test(zoomType),zoomHor=zoomX&&!inverted||zoomY&&inverted,zoomVert=zoomY&&!inverted||zoomX&&inverted;function normalizeMouseEvent(e){e=e||win.event;if(!e.target){e.target=e.srcElement;}
if(e.type!='mousemove'||win.opera){position=getPosition(container);}
if(e.layerX===UNDEFINED){if(isIE){e.layerX=e.x;e.layerY=e.y;}else{e.layerX=e.pageX-position.x;e.layerY=e.pageY-position.y;}}
return e;}
function getMouseCoordinates(e){var coordinates={xAxis:[],yAxis:[]};each(axes,function(axis,i){var translate=axis.translate,isXAxis=axis.isXAxis,isHorizontal=inverted?!isXAxis:isXAxis;coordinates[isXAxis?'xAxis':'yAxis'].push({axis:axis,value:translate(isHorizontal?e.layerX-plotLeft:plotHeight-e.layerY+plotTop,true)});});return coordinates;}
function onmousemove(e){var point,hoverPoint=chart.hoverPoint,hoverSeries=chart.hoverSeries;if(hoverSeries&&hoverSeries.tracker){point=hoverSeries.tooltipPoints[inverted?e.layerY:e.layerX-plotLeft];if(point&&point!=hoverPoint){point.onMouseOver();}}}
function resetTracker(){var hoverSeries=chart.hoverSeries,hoverPoint=chart.hoverPoint;if(hoverPoint){hoverPoint.onMouseOut();}
if(hoverSeries){hoverSeries.onMouseOut();}
if(tooltip){tooltip.hide();}}
function drop(){if(selectionMarker){var selectionData={xAxis:[],yAxis:[]},selectionBox=selectionMarker.getBBox(),selectionLeft=selectionBox.x-plotLeft,selectionTop=selectionBox.y-plotTop;if(hasDragged){each(axes,function(axis,i){var translate=axis.translate,isXAxis=axis.isXAxis,isHorizontal=inverted?!isXAxis:isXAxis,selectionMin=translate(isHorizontal?selectionLeft:plotHeight-selectionTop-selectionBox.height,true),selectionMax=translate(isHorizontal?selectionLeft+selectionBox.width:plotHeight-selectionTop,true);selectionData[isXAxis?'xAxis':'yAxis'].push({axis:axis,min:mathMin(selectionMin,selectionMax),max:mathMax(selectionMin,selectionMax)});});fireEvent(chart,'selection',selectionData,zoom);}
selectionMarker=selectionMarker.destroy();}
chart.mouseIsDown=mouseIsDown=hasDragged=false;}
function setDOMEvents(){var lastWasOutsidePlot=true;container.onmousedown=function(e){e=normalizeMouseEvent(e);if(e.preventDefault){e.preventDefault();}
chart.mouseIsDown=mouseIsDown=true;mouseDownX=e.layerX;mouseDownY=e.layerY;if(hasCartesianSeries&&(zoomX||zoomY)){if(!selectionMarker){selectionMarker=renderer.rect(plotLeft,plotTop,zoomHor?1:plotWidth,zoomVert?1:plotHeight,0).attr({fill:'rgba(69,114,167,0.25)',zIndex:7}).add();}}};container.onmousemove=function(e){e=normalizeMouseEvent(e);e.returnValue=false;var layerX=e.layerX,layerY=e.layerY,isOutsidePlot=!isInsidePlot(layerX-plotLeft,layerY-plotTop);if(mouseIsDown){hasDragged=Math.sqrt(Math.pow(mouseDownX-layerX,2)+
Math.pow(mouseDownY-layerY,2))>10;if(zoomHor){var xSize=layerX-mouseDownX;selectionMarker.attr({width:mathAbs(xSize),x:(xSize>0?0:xSize)+mouseDownX});}
if(zoomVert){var ySize=layerY-mouseDownY;selectionMarker.attr({height:mathAbs(ySize),y:(ySize>0?0:ySize)+mouseDownY});}}else if(!isOutsidePlot){onmousemove(e);}
if(isOutsidePlot&&!lastWasOutsidePlot){resetTracker();drop();}
lastWasOutsidePlot=isOutsidePlot;return false;};container.onmouseup=function(e){drop();};container.onclick=function(e){var hoverPoint=chart.hoverPoint;e=normalizeMouseEvent(e);e.cancelBubble=true;if(!hasDragged){if(hoverPoint&&attr(e.target,'isTracker')){var plotX=hoverPoint.plotX,plotY=hoverPoint.plotY;extend(hoverPoint,{pageX:position.x+plotLeft+
(inverted?plotWidth-plotY:plotX),pageY:position.y+plotTop+
(inverted?plotHeight-plotX:plotY)});fireEvent(chart.hoverSeries,'click',extend(e,{point:hoverPoint}));hoverPoint.firePointEvent('click',e);}else{extend(e,getMouseCoordinates(e));if(isInsidePlot(e.layerX-plotLeft,e.layerY-plotTop)){fireEvent(chart,'click',e);}}}
hasDragged=false;};}
function createTrackerGroup(){chart.trackerGroup=trackerGroup=renderer.g('tracker');if(inverted){trackerGroup.attr({width:chart.plotWidth,height:chart.plotHeight}).invert();}
trackerGroup.attr({zIndex:9}).translate(plotLeft,plotTop).add();}
createTrackerGroup();if(options.enabled){chart.tooltip=tooltip=Tooltip(options);}
setDOMEvents();tooltipInterval=setInterval(function(){if(tooltipTick){tooltipTick();}},32);extend(this,{zoomX:zoomX,zoomY:zoomY,resetTracker:resetTracker});}
var Legend=function(chart){var options=chart.options.legend;if(!options.enabled){return;}
var horizontal=options.layout=='horizontal',symbolWidth=options.symbolWidth,symbolPadding=options.symbolPadding,allItems=[],style=options.style,itemStyle=options.itemStyle,itemHoverStyle=options.itemHoverStyle,itemHiddenStyle=options.itemHiddenStyle,padding=parseInt(style.padding,10),rightPadding=20,lineHeight=options.lineHeight||16,y=18,initialItemX=4+padding+symbolWidth+symbolPadding,itemX,itemY,lastItemY,box,legendBorderWidth=options.borderWidth,legendBackgroundColor=options.backgroundColor,legendGroup,offsetWidth,widthOption=options.width,boxWidth,boxHeight,series=chart.series,reversedLegend=options.reversed;function colorizeItem(item,visible){var legendItem=item.legendItem,legendLine=item.legendLine,legendSymbol=item.legendSymbol,hiddenColor=itemHiddenStyle.color,textColor=visible?options.itemStyle.color:hiddenColor,symbolColor=visible?item.color:hiddenColor;if(legendItem){legendItem.css({color:textColor});}
if(legendLine){legendLine.attr({stroke:symbolColor});}
if(legendSymbol){legendSymbol.attr({stroke:symbolColor,fill:symbolColor});}}
function positionItem(item,itemX,itemY){var legendItem=item.legendItem,legendLine=item.legendLine,legendSymbol=item.legendSymbol,checkbox=item.checkbox;if(legendItem){legendItem.attr({x:itemX,y:itemY});}
if(legendLine){legendLine.translate(itemX,itemY-4);}
if(legendSymbol){legendSymbol.translate(itemX,itemY);}
if(checkbox){checkbox.x=itemX;checkbox.y=itemY;}}
function destroyItem(item){var i=allItems.length,checkbox=item.checkbox;while(i--){if(allItems[i]==item){allItems.splice(i,1);break;}}
each(['legendItem','legendLine','legendSymbol'],function(key){if(item[key]){item[key].destroy();}});if(checkbox){discardElement(item.checkbox);}}
function renderItem(item){var bBox,itemWidth,legendSymbol,simpleSymbol,li=item.legendItem,series=item.series||item;if(!li){simpleSymbol=/^(bar|pie|area|column)$/.test(series.type);item.legendItem=li=renderer.text(options.labelFormatter.call(item),0,0).css(item.visible?itemStyle:itemHiddenStyle).on('mouseover',function(){item.setState(HOVER_STATE);li.css(itemHoverStyle);}).on('mouseout',function(){li.css(item.visible?itemStyle:itemHiddenStyle);item.setState();}).on('click',function(event){var strLegendItemClick='legendItemClick',fnLegendItemClick=function(){item.setVisible();};if(item.firePointEvent){item.firePointEvent(strLegendItemClick,null,fnLegendItemClick);}else{fireEvent(item,strLegendItemClick,null,fnLegendItemClick);}}).attr({zIndex:2}).add(legendGroup);if(!simpleSymbol&&item.options&&item.options.lineWidth){item.legendLine=renderer.path([M,-symbolWidth-symbolPadding,0,L,-symbolPadding,0]).attr({'stroke-width':item.options.lineWidth,zIndex:2}).add(legendGroup);}
if(simpleSymbol){legendSymbol=renderer.rect(-symbolWidth-symbolPadding,-11,symbolWidth,12,2).attr({'stroke-width':0,zIndex:3}).add(legendGroup);}
else if(item.options&&item.options.marker&&item.options.marker.enabled){legendSymbol=renderer.symbol(item.symbol,-symbolWidth/2-symbolPadding,-4,item.options.marker.radius).attr(item.pointAttr[NORMAL_STATE]).attr({zIndex:3}).add(legendGroup);}
item.legendSymbol=legendSymbol;colorizeItem(item,item.visible);if(item.options&&item.options.showCheckbox){item.checkbox=createElement('input',{type:'checkbox',checked:item.selected,defaultChecked:item.selected},options.itemCheckboxStyle,container);addEvent(item.checkbox,'click',function(event){var target=event.target;fireEvent(item,'checkboxClick',{checked:target.checked},function(){item.select();});});}}
positionItem(item,itemX,itemY);bBox=li.getBBox();lastItemY=itemY;item.legendItemWidth=itemWidth=options.itemWidth||symbolWidth+symbolPadding+bBox.width+rightPadding;if(horizontal){itemX+=itemWidth;offsetWidth=widthOption||mathMax(itemX-initialItemX,offsetWidth);if(itemX-initialItemX+itemWidth>(widthOption||(chartWidth-2*padding-initialItemX))){itemX=initialItemX;itemY+=lineHeight;}}else{itemY+=lineHeight;offsetWidth=widthOption||mathMax(itemWidth,offsetWidth);}
allItems.push(item);}
function renderLegend(){itemX=initialItemX;itemY=y;offsetWidth=0;lastItemY=0;if(!legendGroup){legendGroup=renderer.g('legend').attr({zIndex:7}).add();}
if(reversedLegend){series.reverse();}
each(series,function(serie){if(!serie.options.showInLegend){return;}
var items=(serie.options.legendType=='point')?serie.data:[serie];each(items,renderItem);});if(reversedLegend){series.reverse();}
boxWidth=widthOption||offsetWidth;boxHeight=lastItemY-y+lineHeight;if(legendBorderWidth||legendBackgroundColor){boxWidth+=2*padding;boxHeight+=2*padding;if(!box){box=renderer.rect(0,0,boxWidth,boxHeight,options.borderRadius,legendBorderWidth||0).attr({stroke:options.borderColor,'stroke-width':legendBorderWidth||0,fill:legendBackgroundColor||NONE}).add(legendGroup).shadow(options.shadow);}else{box.attr({height:boxHeight,width:boxWidth});}}
var props=['left','right','top','bottom'],prop,i=4;while(i--){prop=props[i];if(style[prop]&&style[prop]!='auto'){options[i<2?'align':'verticalAlign']=prop;options[i<2?'x':'y']=parseInt(style[prop],10)*(i%2?-1:1);}}
var boxPos=getAlignment(extend({width:boxWidth,height:boxHeight},options));legendGroup.translate(boxPos.x,boxPos.y);each(allItems,function(item){var checkbox=item.checkbox;if(checkbox){css(checkbox,{left:(boxPos.x+item.legendItemWidth+checkbox.x-40)+PX,top:(boxPos.y+checkbox.y-11)+PX});}});}
renderLegend();return{colorizeItem:colorizeItem,destroyItem:destroyItem,renderLegend:renderLegend};};function initSeries(options){var type=options.type||optionsChart.defaultSeriesType,typeClass=seriesTypes[type],serie,hasRendered=chart.hasRendered;if(hasRendered){if(inverted&&type=='column'){typeClass=seriesTypes.bar;}else if(!inverted&&type=='bar'){typeClass=seriesTypes.column;}}
serie=new typeClass();serie.init(chart,options);if(!hasRendered&&serie.inverted){inverted=true;}
if(serie.isCartesian){hasCartesianSeries=serie.isCartesian;}
series.push(serie);return serie;}
function addSeries(options,redraw){var series;redraw=pick(redraw,true);fireEvent(chart,'addSeries',{options:options},function(){series=initSeries(options);series.isDirty=true;chart.isDirty=true;if(redraw){chart.redraw();}});return series;}
isInsidePlot=function(x,y){var left=0,top=0;return x>=left&&x<=left+plotWidth&&y>=top&&y<=top+plotHeight;};function adjustTickAmounts(){if(optionsChart.alignTicks!==false){each(axes,function(axis){axis.adjustTickAmount();});}}
function redraw(){var redrawLegend=chart.isDirty,hasStackedSeries,seriesLength=series.length,i=seriesLength,serie;while(i--){serie=series[i];if(serie.isDirty&&serie.options.stacking){hasStackedSeries=true;break;}}
if(hasStackedSeries){i=seriesLength;while(i--){serie=series[i];if(serie.options.stacking){serie.isDirty=true;}}}
each(series,function(serie){if(serie.isDirty){serie.cleanData();serie.getSegments();if(serie.options.legendType=='point'){redrawLegend=true;}}});maxTicks=null;if(hasCartesianSeries){each(axes,function(axis){axis.setScale();});adjustTickAmounts();each(axes,function(axis){if(axis.isDirty){axis.redraw();}});}
each(series,function(serie){if(serie.isDirty&&serie.visible){serie.redraw();}});if(redrawLegend&&legend.renderLegend){legend.renderLegend();chart.isDirty=false;}
if(tracker&&tracker.resetTracker){tracker.resetTracker();}
fireEvent(chart,'redraw');}
function showLoading(){var loadingOptions=options.loading;if(!loadingLayer){loadingLayer=createElement(DIV,{className:'highcharts-loading'},extend(loadingOptions.style,{left:plotLeft+PX,top:plotTop+PX,width:plotWidth+PX,height:plotHeight+PX,zIndex:10,display:NONE}),container);createElement('span',{innerHTML:options.lang.loading},loadingOptions.labelStyle,loadingLayer);}
if(!loadingShown){css(loadingLayer,{opacity:0,display:''});animate(loadingLayer,{opacity:loadingOptions.style.opacity},{duration:loadingOptions.showDuration});loadingShown=true;}}
function hideLoading(){animate(loadingLayer,{opacity:0},{duration:options.loading.hideDuration,complete:function(){css(loadingLayer,{display:NONE});}});loadingShown=false;}
function get(id){var i,j,data;for(i=0;i<axes.length;i++){if(axes[i].options.id==id){return axes[i];}}
for(i=0;i<series.length;i++){if(series[i].options.id==id){return series[i];}}
for(i=0;i<series.length;i++){data=series[i].data;for(j=0;j<data.length;j++){if(data[j].id==id){return data[j];}}}
return null;}
function getAxes(){var xAxisOptions=options.xAxis||{},yAxisOptions=options.yAxis||{},axis;xAxisOptions=splat(xAxisOptions);each(xAxisOptions,function(axis,i){axis.index=i;axis.isX=true;});yAxisOptions=splat(yAxisOptions);each(yAxisOptions,function(axis,i){axis.index=i;});axes=xAxisOptions.concat(yAxisOptions);chart.xAxis=[];chart.yAxis=[];axes=map(axes,function(axisOptions){axis=new Axis(chart,axisOptions);chart[axis.isXAxis?'xAxis':'yAxis'].push(axis);return axis;});adjustTickAmounts();}
function getSelectedPoints(){var points=[];each(series,function(serie){points=points.concat(grep(serie.data,function(point){return point.selected;}));});return points;}
function getSelectedSeries(){return grep(series,function(serie){return serie.selected;});}
zoomOut=function(){fireEvent(chart,'selection',{resetSelection:true},zoom);chart.toolbar.remove('zoom');};zoom=function(event){var lang=defaultOptions.lang;chart.toolbar.add('zoom',lang.resetZoom,lang.resetZoomTitle,zoomOut);if(!event||event.resetSelection){each(axes,function(axis){axis.setExtremes(null,null,false);});}
else{each(event.xAxis.concat(event.yAxis),function(axisData){var axis=axisData.axis;if(chart.tracker[axis.isXAxis?'zoomX':'zoomY']){axis.setExtremes(axisData.min,axisData.max,false);}});}
redraw();};function showTitle(){var title=options.title,titleAlign=title.align,subtitle=options.subtitle,subtitleAlign=subtitle.align,anchorMap={left:0,center:chartWidth/2,right:chartWidth};if(title&&title.text){renderer.text(title.text,anchorMap[titleAlign]+title.x,title.y,title.style,0,titleAlign).attr({'class':'highcharts-title'}).add();}
if(subtitle&&subtitle.text){renderer.text(subtitle.text,anchorMap[subtitleAlign]+subtitle.x,subtitle.y,subtitle.style,0,subtitleAlign).attr({'class':'highcharts-subtitle'}).add();}}
getAlignment=function(alignmentOptions){var align=alignmentOptions.align,vAlign=alignmentOptions.verticalAlign,optionsX=alignmentOptions.x||0,optionsY=alignmentOptions.y||0,ret={x:optionsX||0,y:optionsY||0};if(/^(right|center)$/.test(align)){ret.x=(chartWidth-alignmentOptions.width)/{right:1,center:2}[align]+
optionsX;}
if(/^(bottom|middle)$/.test(vAlign)){ret.y=(chartHeight-alignmentOptions.height)/{bottom:1,middle:2}[vAlign]+
optionsY;}
return ret;};function getContainer(){renderTo=optionsChart.renderTo;containerId=PREFIX+idCounter++;if(typeof renderTo=='string'){renderTo=doc.getElementById(renderTo);}
renderTo.innerHTML='';if(!renderTo.offsetWidth){renderToClone=renderTo.cloneNode(0);css(renderToClone,{position:ABSOLUTE,top:'-9999px',display:''});doc.body.appendChild(renderToClone);}
var renderToOffsetHeight=(renderToClone||renderTo).offsetHeight;chart.chartWidth=chartWidth=optionsChart.width||(renderToClone||renderTo).offsetWidth||600;chart.chartHeight=chartHeight=optionsChart.height||(renderToOffsetHeight>plotTop+marginBottom?renderToOffsetHeight:0)||400;chart.plotWidth=plotWidth=chartWidth-plotLeft-marginRight;chart.plotHeight=plotHeight=chartHeight-plotTop-marginBottom;chart.plotLeft=plotLeft;chart.plotTop=plotTop;chart.container=container=createElement(DIV,{className:'highcharts-container'+
(optionsChart.className?' '+optionsChart.className:''),id:containerId},extend({position:RELATIVE,overflow:HIDDEN,width:chartWidth+PX,height:chartHeight+PX,textAlign:'left'},optionsChart.style),renderToClone||renderTo);chart.renderer=renderer=optionsChart.renderer=='SVG'?new SVGRenderer(container,chartWidth,chartHeight):new Renderer(container,chartWidth,chartHeight);}
function render(){var mgn,labels=options.labels,credits=options.credits,chartBorderWidth=optionsChart.borderWidth||0,chartBackgroundColor=optionsChart.backgroundColor,plotBackgroundColor=optionsChart.plotBackgroundColor,plotBackgroundImage=optionsChart.plotBackgroundImage;mgn=2*chartBorderWidth+(optionsChart.shadow?8:0);if(chartBorderWidth||chartBackgroundColor){renderer.rect(mgn/2,mgn/2,chartWidth-mgn,chartHeight-mgn,optionsChart.borderRadius,chartBorderWidth).attr({stroke:optionsChart.borderColor,'stroke-width':chartBorderWidth,fill:chartBackgroundColor||NONE}).add().shadow(optionsChart.shadow);}
if(plotBackgroundColor){renderer.rect(plotLeft,plotTop,plotWidth,plotHeight,0).attr({fill:plotBackgroundColor}).add().shadow(optionsChart.plotShadow);}
if(plotBackgroundImage){renderer.image(plotBackgroundImage,plotLeft,plotTop,plotWidth,plotHeight).add();}
if(optionsChart.plotBorderWidth){renderer.rect(plotLeft,plotTop,plotWidth,plotHeight,0,optionsChart.plotBorderWidth).attr({stroke:optionsChart.plotBorderColor,'stroke-width':optionsChart.plotBorderWidth,zIndex:4}).add();}
if(hasCartesianSeries){each(axes,function(axis){axis.render();});}
showTitle();if(labels.items){each(labels.items,function(){var style=extend(labels.style,this.style),x=parseInt(style.left,10)+plotLeft,y=parseInt(style.top,10)+plotTop+12;delete style.left;delete style.top;renderer.text(this.html,x,y,style).attr({zIndex:2}).add();});}
each(series,function(serie){serie.render();});legend=chart.legend=new Legend(chart);if(!chart.toolbar){chart.toolbar=Toolbar(chart);}
if(credits.enabled&&!chart.credits){renderer.text(credits.text,chartWidth-10,chartHeight-5,credits.style,0,'right').on('click',function(){location.href=credits.href;}).attr({zIndex:8}).add();}
chart.hasRendered=true;if(renderToClone){renderTo.appendChild(container);discardElement(renderToClone);}}
function destroy(){var i=series.length;removeEvent(win,'unload',destroy);removeEvent(chart);each(axes,function(axis){removeEvent(axis);});while(i--){series[i].destroy();}
container.onmousedown=container.onmousemove=container.onmouseup=container.onclick=null;container.parentNode.removeChild(container);container=null;clearInterval(tooltipInterval);for(i in chart){delete chart[i];}}
function firstRender(){var onreadystatechange='onreadystatechange';if(isIE&&doc.readyState!='complete'){doc.attachEvent(onreadystatechange,function(){doc.detachEvent(onreadystatechange,arguments.callee);firstRender();});return;}
getContainer();each(options.series||[],function(serieOptions){initSeries(serieOptions);});chart.inverted=inverted=pick(inverted,options.chart.inverted);chart.plotSizeX=plotSizeX=inverted?plotHeight:plotWidth;chart.plotSizeY=plotSizeY=inverted?plotWidth:plotHeight;chart.tracker=tracker=new MouseTracker(chart,options.tooltip);getAxes();each(series,function(serie){serie.translate();serie.setTooltipPoints();});chart.render=render;render();fireEvent(chart,'load');}
colorCounter=0;symbolCounter=0;addEvent(win,'unload',destroy);if(chartEvents){for(eventType in chartEvents){addEvent(chart,eventType,chartEvents[eventType]);}}
chart.options=options;chart.series=series;chart.addSeries=addSeries;chart.destroy=destroy;chart.get=get;chart.getAlignment=getAlignment;chart.getSelectedPoints=getSelectedPoints;chart.getSelectedSeries=getSelectedSeries;chart.hideLoading=hideLoading;chart.isInsidePlot=isInsidePlot;chart.redraw=redraw;chart.showLoading=showLoading;firstRender();}
var Point=function(){};Point.prototype={init:function(series,options){var point=this,defaultColors;point.series=series;point.applyOptions(options);point.pointAttr={};if(series.options.colorByPoint){defaultColors=series.chart.options.colors;if(!point.options){point.options={};}
point.color=point.options.color=point.color||defaultColors[colorCounter++];if(colorCounter>=defaultColors.length){colorCounter=0;}}
return point;},applyOptions:function(options){var point=this,series=point.series;point.config=options;if(typeof options=='number'||options===null){point.y=options;}
else if(typeof options=='object'&&typeof options.length!='number'){extend(point,options);point.options=options;}
else if(typeof options[0]=='string'){point.name=options[0];point.y=options[1];}
else if(typeof options[0]=='number'){point.x=options[0];point.y=options[1];}
if(point.x===UNDEFINED){point.x=series.autoIncrement();}},destroy:function(){var point=this,prop;if(point==point.series.chart.hoverPoint){point.onMouseOut();}
removeEvent(point);each(['dataLabel','graphic','tracker','group'],function(prop){if(point[prop]){point[prop].destroy();}});if(point.legendItem){point.series.chart.legend.destroyItem(point);}
for(prop in point){point[prop]=null;}},select:function(selected,accumulate){var point=this,series=point.series,chart=series.chart;point.selected=selected=pick(selected,!point.selected);point.firePointEvent(selected?'select':'unselect');point.setState(SELECT_STATE);if(!accumulate){each(chart.getSelectedPoints(),function(loopPoint){if(loopPoint.selected&&loopPoint!=point){loopPoint.selected=false;loopPoint.setState(NORMAL_STATE);loopPoint.firePointEvent('unselect');}});}},onMouseOver:function(){var point=this,chart=point.series.chart,tooltip=chart.tooltip,hoverPoint=chart.hoverPoint;if(hoverPoint&&hoverPoint!=point){hoverPoint.onMouseOut();}
point.firePointEvent('mouseOver');if(tooltip){tooltip.refresh(point);}
point.setState(HOVER_STATE);chart.hoverPoint=point;},onMouseOut:function(){var point=this;point.firePointEvent('mouseOut');point.setState(NORMAL_STATE);point.series.chart.hoverPoint=null;},update:function(options,redraw){var point=this,series=point.series;redraw=pick(redraw,true);point.firePointEvent('update',{options:options},function(){point.applyOptions(options);series.isDirty=true;if(redraw){series.chart.redraw();}});},remove:function(redraw){var point=this,series=point.series,chart=series.chart,data=series.data,i=data.length;redraw=pick(redraw,true);point.firePointEvent('remove',null,function(){while(i--){if(data[i]==point){data.splice(i,1);break;}}
point.destroy();series.isDirty=true;if(redraw){chart.redraw();}});},firePointEvent:function(eventType,eventArgs,defaultFunction){var point=this,series=this.series,seriesOptions=series.options;if(seriesOptions.point.events[eventType]||(point.options&&point.options.events&&point.options.events[eventType])){this.importEvents();}
if(eventType=='click'&&seriesOptions.allowPointSelect){defaultFunction=function(event){point.select(null,event.ctrlKey||event.metaKey||event.shiftKey);};}
fireEvent(this,eventType,eventArgs,defaultFunction);},importEvents:function(){if(!this.hasImportedEvents){var point=this,options=merge(point.series.options.point,point.options),events=options.events,eventType;point.events=events;for(eventType in events){addEvent(point,eventType,events[eventType]);}
this.hasImportedEvents=true;}},setState:function(state){var point=this,series=point.series,stateOptions=series.options.states,markerOptions=series.options.marker,normalDisabled=markerOptions&&!markerOptions.enabled,markerStateOptions=markerOptions&&markerOptions.states[state],stateDisabled=markerStateOptions&&markerStateOptions.enabled===false,chart=series.chart,pointAttr=point.pointAttr;if(!state){state=NORMAL_STATE;}
if((point.selected&&state!=SELECT_STATE)||(stateOptions[state]&&stateOptions[state].enabled===false)||(state&&(stateDisabled||normalDisabled&&!markerStateOptions.enabled))){return;}
if(state&&!point.graphic){if(!series.stateMarkerGraphic){series.stateMarkerGraphic=chart.renderer.circle(0,0,pointAttr[state].r).attr(pointAttr[state]).add(series.group);}
series.stateMarkerGraphic.translate(point.plotX,point.plotY);}else if(point.graphic){point.graphic.attr(pointAttr[state]);}},setTooltipText:function(){var point=this;point.tooltipText=point.series.chart.options.tooltip.formatter.call({series:point.series,point:point,x:point.category,y:point.y,percentage:point.percentage,total:point.total||point.stackTotal});}};var Series=function(){};Series.prototype={isCartesian:true,type:'line',pointClass:Point,pointAttrToOptions:{stroke:'lineColor','stroke-width':'lineWidth',fill:'fillColor',r:'radius'},init:function(chart,options){var series=this,eventType,events,index=chart.series.length;series.chart=chart;options=series.setOptions(options);extend(series,{index:index,options:options,name:options.name||'Series '+(index+1),state:NORMAL_STATE,pointAttr:{},visible:options.visible!==false,selected:options.selected===true});events=options.events;for(eventType in events){addEvent(series,eventType,events[eventType]);}
series.getColor();series.getSymbol();series.setData(options.data,false);},autoIncrement:function(){var series=this,options=series.options,xIncrement=series.xIncrement;xIncrement=pick(xIncrement,options.pointStart,0);series.pointInterval=pick(series.pointInterval,options.pointInterval,1);series.xIncrement=xIncrement+series.pointInterval;return xIncrement;},cleanData:function(){var series=this,data=series.data,i;data.sort(function(a,b){return(a.x-b.x);});for(i=data.length-1;i>=0;i--){if(data[i-1]){if(data[i-1].x==data[i].x){data.splice(i-1,1);}}}},getSegments:function(){var lastNull=-1,segments=[],data=this.data;each(data,function(point,i){if(point.y===null){if(i>lastNull+1){segments.push(data.slice(lastNull+1,i));}
lastNull=i;}else if(i==data.length-1){segments.push(data.slice(lastNull+1,i+1));}});this.segments=segments;},setOptions:function(itemOptions){var plotOptions=this.chart.options.plotOptions,options=merge(plotOptions[this.type],plotOptions.series,itemOptions);return options;},getColor:function(){var defaultColors=this.chart.options.colors;this.color=this.options.color||defaultColors[colorCounter++]||'#0000ff';if(colorCounter>=defaultColors.length){colorCounter=0;}},getSymbol:function(){var defaultSymbols=this.chart.options.symbols,symbol=this.options.marker.symbol||defaultSymbols[symbolCounter++];this.symbol=symbol;if(symbolCounter>=defaultSymbols.length){symbolCounter=0;}},addPoint:function(options,redraw,shift){var series=this,data=series.data,point=(new series.pointClass()).init(series,options);redraw=pick(redraw,true);data.push(point);if(shift){data[0].remove(false);}
series.isDirty=true;if(redraw){series.chart.redraw();}},setData:function(data,redraw){var series=this,oldData=series.data,initialColor=series.initialColor,i=oldData&&oldData.length||0;series.xIncrement=null;if(defined(initialColor)){colorCounter=initialColor;}
data=map(splat(data||[]),function(pointOptions){return(new series.pointClass()).init(series,pointOptions);});while(i--){oldData[i].destroy();}
series.data=data;series.cleanData();series.getSegments();series.isDirty=true;if(pick(redraw,true)){series.chart.redraw();}},remove:function(redraw){var series=this,chart=series.chart;redraw=pick(redraw,true);if(!series.isRemoving){series.isRemoving=true;fireEvent(series,'remove',null,function(){series.destroy();chart.isDirty=true;if(redraw){chart.redraw();}});}
series.isRemoving=false;},translate:function(){var series=this,chart=series.chart,stacking=series.options.stacking,categories=series.xAxis.categories,yAxis=series.yAxis,stack=yAxis.stacks[series.type],data=series.data,i=data.length;while(i--){var point=data[i],xValue=point.x,yValue=point.y,yBottom,pointStack,pointStackTotal;point.plotX=series.xAxis.translate(xValue);if(stacking&&series.visible&&stack[xValue]){pointStack=stack[xValue];pointStackTotal=pointStack.total;pointStack.cum=yBottom=pointStack.cum-yValue;yValue=yBottom+yValue;if(stacking=='percent'){yBottom=pointStackTotal?yBottom*100/pointStackTotal:0;yValue=pointStackTotal?yValue*100/pointStackTotal:0;}
point.percentage=pointStackTotal?point.y*100/pointStackTotal:0;point.stackTotal=pointStackTotal;point.yBottom=yAxis.translate(yBottom,0,1);}
if(yValue!==null){point.plotY=yAxis.translate(yValue,0,1);}
point.clientX=chart.inverted?chart.plotHeight-point.plotX:point.plotX;point.category=categories&&categories[point.x]!==UNDEFINED?categories[point.x]:point.x;}},setTooltipPoints:function(renew){var series=this,chart=series.chart,inverted=chart.inverted,data=[],plotSize=(inverted?chart.plotTop:chart.plotLeft)+chart.plotSizeX,low,high,tooltipPoints=[];if(renew){series.tooltipPoints=null;}
each(series.segments,function(segment){data=data.concat(segment);});if(series.xAxis&&series.xAxis.reversed){data=data.reverse();}
each(data,function(point,i){if(!series.tooltipPoints){point.setTooltipText();}
low=data[i-1]?data[i-1].high+1:0;high=point.high=data[i+1]?(mathFloor((point.plotX+(data[i+1]?data[i+1].plotX:plotSize))/2)):plotSize;while(low<=high){tooltipPoints[inverted?plotSize-low++:low++]=point;}});series.tooltipPoints=tooltipPoints;},onMouseOver:function(){var series=this,chart=series.chart,hoverSeries=chart.hoverSeries,stateMarkerGraphic=series.stateMarkerGraphic;if(chart.mouseIsDown){return;}
if(stateMarkerGraphic){stateMarkerGraphic.show();}
if(hoverSeries&&hoverSeries!=series){hoverSeries.onMouseOut();}
if(series.options.events.mouseOver){fireEvent(series,'mouseOver');}
if(series.tracker){series.tracker.toFront();}
series.setState(HOVER_STATE);chart.hoverSeries=series;},onMouseOut:function(){var series=this,options=series.options,chart=series.chart,tooltip=chart.tooltip,hoverPoint=chart.hoverPoint;if(hoverPoint){hoverPoint.onMouseOut();}
if(series&&options.events.mouseOut){fireEvent(series,'mouseOut');}
if(tooltip&&!options.stickyTracking){tooltip.hide();}
series.setState();chart.hoverSeries=null;},animate:function(init){var series=this,chart=series.chart,clipRect=series.clipRect;if(init){if(!clipRect.isAnimating){clipRect.attr('width',0);clipRect.isAnimating=true;}}else{clipRect.animate({width:chart.plotSizeX},{complete:function(){clipRect.isAnimating=false;},duration:1000});this.animate=null;}},drawPoints:function(){var series=this,pointAttr,data=series.data,chart=series.chart,plotX,plotY,i,point,radius,graphic;if(series.options.marker.enabled){i=data.length;while(i--){point=data[i];plotX=point.plotX;plotY=point.plotY;graphic=point.graphic;if(plotY!==UNDEFINED){pointAttr=point.pointAttr[point.selected?SELECT_STATE:NORMAL_STATE];radius=pointAttr.r;if(graphic){graphic.attr({x:plotX,y:plotY,r:radius});}else{point.graphic=chart.renderer.symbol(pick(point.marker&&point.marker.symbol,series.symbol),plotX,plotY,radius).attr(pointAttr).add(series.group);}}}}},convertAttribs:function(options,base1,base2,base3){var conversion=this.pointAttrToOptions,attr,option,obj={};options=options||{};base1=base1||{};base2=base2||{};base3=base3||{};for(attr in conversion){option=conversion[attr];obj[attr]=pick(options[option],base1[attr],base2[attr],base3[attr]);}
return obj;},getAttribs:function(){var series=this,normalOptions=series.options.marker||series.options,stateOptions=normalOptions.states,stateOptionsHover=stateOptions[HOVER_STATE],pointStateOptionsHover,normalDefaults={},seriesColor=series.color,data=series.data,i,point,seriesPointAttr=[],pointAttr,pointAttrToOptions=series.pointAttrToOptions,hasPointSpecificOptions;if(series.options.marker){normalDefaults={stroke:seriesColor,fill:seriesColor};stateOptionsHover.radius=stateOptionsHover.radius||normalOptions.radius+2;stateOptionsHover.lineWidth=stateOptionsHover.lineWidth||normalOptions.lineWidth+1;}else{normalDefaults={fill:seriesColor};stateOptionsHover.color=stateOptionsHover.color||Color(stateOptionsHover.color||seriesColor).brighten(stateOptionsHover.brightness).get();}
seriesPointAttr[NORMAL_STATE]=series.convertAttribs(normalOptions,normalDefaults);each([HOVER_STATE,SELECT_STATE],function(state){seriesPointAttr[state]=series.convertAttribs(stateOptions[state],seriesPointAttr[NORMAL_STATE]);});series.pointAttr=seriesPointAttr;i=data.length;while(i--){point=data[i];normalOptions=(point.options&&point.options.marker)||point.options;if(normalOptions&&normalOptions.enabled===false){normalOptions.radius=0;}
hasPointSpecificOptions=false;if(point.options){for(var key in pointAttrToOptions){if(defined(normalOptions[pointAttrToOptions[key]])){hasPointSpecificOptions=true;}}}
if(hasPointSpecificOptions){pointAttr=[];stateOptions=normalOptions.states||{};pointStateOptionsHover=stateOptions[HOVER_STATE]=stateOptions[HOVER_STATE]||{};if(!series.options.marker){pointStateOptionsHover.color=Color(pointStateOptionsHover.color||point.options.color).brighten(pointStateOptionsHover.brightness||stateOptionsHover.brightness).get();}
pointAttr[NORMAL_STATE]=series.convertAttribs(normalOptions,seriesPointAttr[NORMAL_STATE]);pointAttr[HOVER_STATE]=series.convertAttribs(stateOptions[HOVER_STATE],seriesPointAttr[HOVER_STATE],pointAttr[NORMAL_STATE]);pointAttr[SELECT_STATE]=series.convertAttribs(stateOptions[SELECT_STATE],seriesPointAttr[SELECT_STATE],pointAttr[NORMAL_STATE]);}else{pointAttr=seriesPointAttr;}
point.pointAttr=pointAttr;}},destroy:function(){var series=this,chart=series.chart,chartSeries=chart.series,clipRect=series.clipRect,prop;removeEvent(series);if(series.legendItem){series.chart.legend.destroyItem(series);}
each(series.data,function(point){point.destroy();});each(['area','graph','dataLabelsGroup','group','tracker'],function(prop){if(series[prop]){series[prop].destroy();}});if(clipRect&&clipRect!=series.chart.clipRect){clipRect.destroy();}
if(chart.hoverSeries==series){chart.hoverSeries=null;}
each(chartSeries,function(existingSeries,i){if(existingSeries==series){chartSeries.splice(i,1);}});for(prop in series){delete series[prop];}},drawDataLabels:function(){if(this.options.dataLabels.enabled){var series=this,x,y,data=series.data,options=series.options.dataLabels,str,dataLabelsGroup=series.dataLabelsGroup,chart=series.chart,inverted=chart.inverted,seriesType=series.type,color,align;if(!dataLabelsGroup){dataLabelsGroup=series.dataLabelsGroup=chart.renderer.g(PREFIX+'data-labels').attr({visibility:series.visible?VISIBLE:HIDDEN,zIndex:4}).translate(chart.plotLeft,chart.plotTop).add();}
color=options.color;if(color=='auto'){color=null;}
options.style.color=pick(color,series.color);each(data,function(point){var plotX=pick(point.barX,point.plotX),plotY=point.plotY,tooltipPos=point.tooltipPos,pointLabel=point.dataLabel;if(pointLabel){point.dataLabel=pointLabel.destroy();}
str=options.formatter.call({x:point.x,y:point.y,series:series,point:point,percentage:point.percentage,total:point.total||point.stackTotal});x=(inverted?chart.plotWidth-plotY:plotX)+options.x;y=(inverted?chart.plotHeight-plotX:plotY)+options.y;if(tooltipPos){x=tooltipPos[0]+options.x;y=tooltipPos[1]+options.y;}
align=options.align;if(seriesType=='column'){x+={center:point.barW/2,right:point.barW}[align]||0;}
if(str){point.dataLabel=chart.renderer.text(str,x,y,options.style,options.rotation,align).attr({zIndex:1,visibility:point.visible===false?HIDDEN:'inherit'}).add(dataLabelsGroup);}
if(series.drawConnector){series.drawConnector(point);}});}},drawGraph:function(state){var series=this,options=series.options,chart=series.chart,graph=series.graph,graphPath=[],fillColor,area=series.area,group=series.group,color=options.lineColor||series.color,lineWidth=options.lineWidth,segmentPath,renderer=chart.renderer,translatedThreshold=series.yAxis.getThreshold(options.threshold||0),useArea=/^area/.test(series.type),singlePoints=[],areaPath=[];each(series.segments,function(segment){if(segment.length>1){segmentPath=[];each(segment,function(point,i){if(i<2){segmentPath.push([M,L][i]);}
if(i&&options.step){var lastPoint=segment[i-1];segmentPath.push(point.plotX,lastPoint.plotY);}
segmentPath.push(point.plotX,point.plotY);});graphPath=graphPath.concat(segmentPath);if(useArea){var areaSegmentPath=[],i,segLength=segmentPath.length;for(i=0;i<segLength;i++){areaSegmentPath.push(segmentPath[i]);}
if(options.stacking&&series.type!='areaspline'){for(i=segment.length-1;i>=0;i--){areaSegmentPath.push(segment[i].plotX,segment[i].yBottom);}}else{areaSegmentPath.push(segment[segment.length-1].plotX,translatedThreshold,segment[0].plotX,translatedThreshold,'z');}
areaPath=areaPath.concat(areaSegmentPath);}}else{singlePoints.push(segment[0]);}});series.graphPath=graphPath;series.singlePoints=singlePoints;if(graph){graph.attr({d:graphPath});}else{if(lineWidth){series.graph=renderer.path(graphPath).attr({'stroke':color,'stroke-width':lineWidth+PX}).add(group).shadow(options.shadow);}}
if(useArea){fillColor=pick(options.fillColor,Color(series.color).setOpacity(options.fillOpacity||0.75).get());if(area){area.attr({d:areaPath});}else{series.area=series.chart.renderer.path(areaPath).attr({fill:fillColor}).add(series.group);}}},render:function(){var series=this,chart=series.chart,group,doAnimation=series.options.animation&&series.animate,renderer=chart.renderer;if(!series.clipRect){series.clipRect=!chart.hasRendered&&chart.clipRect?chart.clipRect:renderer.clipRect(0,0,chart.plotSizeX,chart.plotSizeY);if(!chart.clipRect){chart.clipRect=series.clipRect;}}
if(!series.group){group=series.group=renderer.g('series');if(chart.inverted){group.attr({width:chart.plotWidth,height:chart.plotHeight}).invert();}
group.clip(series.clipRect).attr({visibility:series.visible?VISIBLE:HIDDEN,zIndex:3}).translate(chart.plotLeft,chart.plotTop).add();}
series.drawDataLabels();if(doAnimation){series.animate(true);}
series.getAttribs();if(series.drawGraph){series.drawGraph();}
series.drawPoints();if(series.options.enableMouseTracking!==false){series.drawTracker();}
if(doAnimation){series.animate();}
series.isDirty=false;},redraw:function(){var series=this;series.translate();series.setTooltipPoints(true);series.render();},setState:function(state){var series=this,options=series.options,graph=series.graph,stateOptions=options.states,stateMarkerGraphic=series.stateMarkerGraphic,lineWidth=options.lineWidth;state=state||NORMAL_STATE;if(series.state!=state){series.state=state;if(stateOptions[state]&&stateOptions[state].enabled===false){return;}
if(state){lineWidth=stateOptions[state].lineWidth||lineWidth;}else if(stateMarkerGraphic){stateMarkerGraphic.hide();}
if(graph){graph.animate({'stroke-width':lineWidth},state?0:500);}}},setVisible:function(vis,redraw){var series=this,chart=series.chart,legendItem=series.legendItem,seriesGroup=series.group,seriesTracker=series.tracker,dataLabelsGroup=series.dataLabelsGroup,showOrHide,i,data=series.data,point,ignoreHiddenSeries=chart.options.chart.ignoreHiddenSeries,oldVisibility=series.visible;series.visible=vis=vis===UNDEFINED?!oldVisibility:vis;showOrHide=vis?'show':'hide';if(vis){series.isDirty=ignoreHiddenSeries;}
if(seriesGroup){seriesGroup[showOrHide]();}
if(seriesTracker){seriesTracker[showOrHide]();}else{i=data.length;while(i--){point=data[i];if(point.tracker){point.tracker[showOrHide]();}}}
if(dataLabelsGroup){dataLabelsGroup[showOrHide]();}
if(legendItem){chart.legend.colorizeItem(series,vis);}
if(ignoreHiddenSeries){if(series.options.stacking){each(chart.series,function(otherSeries){if(otherSeries.options.stacking&&otherSeries.visible){otherSeries.isDirty=true;}});}}
if(redraw!==false){chart.redraw();}
fireEvent(series,showOrHide);},show:function(){this.setVisible(true);},hide:function(){this.setVisible(false);},select:function(selected){var series=this;series.selected=selected=(selected===UNDEFINED)?!series.selected:selected;if(series.checkbox){series.checkbox.checked=selected;}
fireEvent(series,selected?'select':'unselect');},drawTracker:function(){var series=this,options=series.options,trackerPath=series.graphPath,chart=series.chart,snap=chart.options.tooltip.snap,tracker=series.tracker,cursor=options.cursor,css=cursor&&{cursor:cursor},singlePoints=series.singlePoints,singlePoint,i;for(i=0;i<singlePoints.length;i++){singlePoint=singlePoints[i];trackerPath.push(M,singlePoint.plotX-3,singlePoint.plotY,L,singlePoint.plotX+3,singlePoint.plotY);}
if(tracker){tracker.attr({d:trackerPath});}else{series.tracker=chart.renderer.path(trackerPath).attr({isTracker:true,stroke:TRACKER_FILL,fill:NONE,'stroke-width':options.lineWidth+2*snap,'stroke-linecap':'round',visibility:series.visible?VISIBLE:HIDDEN,zIndex:1}).on('mouseover',function(){if(chart.hoverSeries!=series){series.onMouseOver();}}).on('mouseout',function(){if(!options.stickyTracking){series.onMouseOut();}}).css(css).add(chart.trackerGroup);}}};var LineSeries=extendClass(Series);seriesTypes.line=LineSeries;var AreaSeries=extendClass(Series,{type:'area'});seriesTypes.area=AreaSeries;function SplineHelper(data){var xdata=[];var ydata=[];var i;for(i=0;i<data.length;i++){xdata[i]=data[i].plotX;ydata[i]=data[i].plotY;}
this.xdata=xdata;this.ydata=ydata;var delta=[];this.y2=[];var n=ydata.length;this.n=n;this.y2[0]=0.0;this.y2[n-1]=0.0;delta[0]=0.0;for(i=1;i<n-1;i++){var d=(xdata[i+1]-xdata[i-1]);var s=(xdata[i]-xdata[i-1])/d;var p=s*this.y2[i-1]+2.0;this.y2[i]=(s-1.0)/p;delta[i]=(ydata[i+1]-ydata[i])/(xdata[i+1]-xdata[i])-
(ydata[i]-ydata[i-1])/(xdata[i]-xdata[i-1]);delta[i]=(6.0*delta[i]/(xdata[i+1]-xdata[i-1])-s*delta[i-1])/p;}
for(var j=n-2;j>=0;j--){this.y2[j]=this.y2[j]*this.y2[j+1]+delta[j];}}
SplineHelper.prototype={get:function(num){if(!num){num=50;}
var n=this.n;var step=(this.xdata[n-1]-this.xdata[0])/(num-1);var xnew=[];var ynew=[];xnew[0]=this.xdata[0];ynew[0]=this.ydata[0];var data=[{plotX:xnew[0],plotY:ynew[0]}];for(var j=1;j<num;j++){xnew[j]=xnew[0]+j*step;ynew[j]=this.interpolate(xnew[j]);data[j]={plotX:xnew[j],plotY:ynew[j]};}
return data;},interpolate:function(xpoint){var max=this.n-1;var min=0;while(max-min>1){var k=(max+min)/2;if(this.xdata[mathFloor(k)]>xpoint){max=k;}else{min=k;}}
var intMax=mathFloor(max),intMin=mathFloor(min);var h=this.xdata[intMax]-this.xdata[intMin];var a=(this.xdata[intMax]-xpoint)/h;var b=(xpoint-this.xdata[intMin])/h;return a*this.ydata[intMin]+b*this.ydata[intMax]+
((a*a*a-a)*this.y2[intMin]+(b*b*b-b)*this.y2[intMax])*(h*h)/6.0;}};var SplineSeries=extendClass(Series,{type:'spline',drawGraph:function(state){var series=this,realSegments=series.segments;series.splinedata=series.getSplineData();series.segments=series.splinedata;Series.prototype.drawGraph.apply(series,arguments);series.segments=realSegments;},getSplineData:function(){var series=this,chart=series.chart,splinedata=[],plotSizeX=chart.plotSizeX,num;each(series.segments,function(data){if(series.xAxis.reversed){data=data.reverse();}
var croppedData=[],nextUp,nextDown;each(data,function(point,i){nextUp=data[i+2]||data[i+1]||point;nextDown=data[i-2]||data[i-1]||point;if(nextUp.plotX>=0&&nextDown.plotX<=plotSizeX){croppedData.push(point);}});if(croppedData.length>1){num=mathRound(mathMax(plotSizeX,croppedData[croppedData.length-1].clientX-croppedData[0].clientX)/3);}
splinedata.push(data.length>1?num?(new SplineHelper(croppedData)).get(num):[]:data);});return splinedata;}});seriesTypes.spline=SplineSeries;var AreaSplineSeries=extendClass(SplineSeries,{type:'areaspline'});seriesTypes.areaspline=AreaSplineSeries;var ColumnSeries=extendClass(Series,{type:'column',pointAttrToOptions:{stroke:'borderColor','stroke-width':'borderWidth',fill:'color',r:'borderRadius'},init:function(){Series.prototype.init.apply(this,arguments);var series=this,chart=series.chart;if(chart.hasRendered){each(chart.series,function(otherSeries){if(otherSeries.type==series.type){otherSeries.isDirty=true;}});}},translate:function(){var series=this,chart=series.chart,columnCount=0,reversedXAxis=series.xAxis.reversed,categories=series.xAxis.categories,stackedIndex;Series.prototype.translate.apply(series);each(chart.series,function(otherSeries){if(otherSeries.type==series.type){if(!otherSeries.options.stacking){otherSeries.columnIndex=columnCount++;}else{if(!defined(stackedIndex)){stackedIndex=columnCount++;}
otherSeries.columnIndex=stackedIndex;}}});var options=series.options,data=series.data,closestPoints=series.closestPoints,categoryWidth=mathAbs(data[1]?data[closestPoints].plotX-data[closestPoints-1].plotX:chart.plotSizeX/(categories?categories.length:1)),groupPadding=categoryWidth*options.groupPadding,groupWidth=categoryWidth-2*groupPadding,pointOffsetWidth=groupWidth/columnCount,optionPointWidth=options.pointWidth,pointPadding=defined(optionPointWidth)?(pointOffsetWidth-optionPointWidth)/2:pointOffsetWidth*options.pointPadding,pointWidth=pick(optionPointWidth,pointOffsetWidth-2*pointPadding),columnIndex=(reversedXAxis?columnCount-
series.columnIndex:series.columnIndex)||0,pointXOffset=pointPadding+(groupPadding+columnIndex*pointOffsetWidth-(categoryWidth/2))*(reversedXAxis?-1:1),translatedThreshold=series.yAxis.getThreshold(options.threshold||0),minPointLength=options.minPointLength;each(data,function(point){var plotY=point.plotY,barX=point.plotX+pointXOffset,barY=mathCeil(mathMin(plotY,translatedThreshold)),barW=pointWidth,barH=mathCeil(mathAbs((point.yBottom||translatedThreshold)-plotY)),trackerY;if(mathAbs(barH)<(minPointLength||5)){if(minPointLength){barH=minPointLength;barY=translatedThreshold-(plotY<=translatedThreshold?minPointLength:0);}
trackerY=barY-3;}
extend(point,{barX:barX,barY:barY,barW:barW,barH:barH});point.shapeType='rect';point.shapeArgs={x:barX,y:barY,width:barW,height:barH,r:options.borderRadius};point.trackerArgs=defined(trackerY)&&merge(point.shapeArgs,{height:6,y:trackerY});});},getSymbol:function(){},drawGraph:function(){},drawPoints:function(){var series=this,options=series.options,renderer=series.chart.renderer,graphic,shapeArgs;each(series.data,function(point){if(defined(point.plotY)){graphic=point.graphic;shapeArgs=point.shapeArgs;if(graphic){graphic.attr(shapeArgs);}else{point.graphic=renderer[point.shapeType](shapeArgs).attr(point.pointAttr[point.selected?SELECT_STATE:NORMAL_STATE]).add(series.group).shadow(options.shadow);}}});},drawTracker:function(){var series=this,chart=series.chart,renderer=chart.renderer,shapeArgs,tracker,trackerLabel=+new Date(),cursor=series.options.cursor,css=cursor&&{cursor:cursor},rel;each(series.data,function(point){tracker=point.tracker;shapeArgs=point.trackerArgs||point.shapeArgs;if(tracker){tracker.attr(shapeArgs);}else{point.tracker=renderer[point.shapeType](shapeArgs).attr({isTracker:trackerLabel,fill:TRACKER_FILL,visibility:series.visible?VISIBLE:HIDDEN,zIndex:1}).on('mouseover',function(event){rel=event.relatedTarget||event.fromElement;if(chart.hoverSeries!=series&&attr(rel,'isTracker')!=trackerLabel){series.onMouseOver();}
point.onMouseOver();}).on('mouseout',function(event){if(!series.options.stickyTracking){rel=event.relatedTarget||event.toElement;if(attr(rel,'isTracker')!=trackerLabel){series.onMouseOut();}}}).css(css).add(chart.trackerGroup);}});},cleanData:function(){var series=this,data=series.data,interval,smallestInterval,closestPoints,i;Series.prototype.cleanData.apply(series);for(i=data.length-1;i>=0;i--){if(data[i-1]){interval=data[i].x-data[i-1].x;if(smallestInterval===UNDEFINED||interval<smallestInterval){smallestInterval=interval;closestPoints=i;}}}
series.closestPoints=closestPoints;},animate:function(init){var series=this,data=series.data;if(!init){each(data,function(point){var graphic=point.graphic;if(graphic){graphic.attr({height:0,y:series.yAxis.translate(0,0,1)});graphic.animate({height:point.barH,y:point.barY},{duration:1000});}});series.animate=null;}},remove:function(){var series=this,chart=series.chart;if(chart.hasRendered){each(chart.series,function(otherSeries){if(otherSeries.type==series.type){otherSeries.isDirty=true;}});}
Series.prototype.remove.apply(series,arguments);}});seriesTypes.column=ColumnSeries;var BarSeries=extendClass(ColumnSeries,{type:'bar',init:function(chart){chart.inverted=this.inverted=true;ColumnSeries.prototype.init.apply(this,arguments);}});seriesTypes.bar=BarSeries;var ScatterSeries=extendClass(Series,{type:'scatter',translate:function(){var series=this;Series.prototype.translate.apply(series);each(series.data,function(point){point.shapeType='circle';point.shapeArgs={x:point.plotX,y:point.plotY,r:series.chart.options.tooltip.snap};});},drawTracker:function(){var series=this,cursor=series.options.cursor,css=cursor&&{cursor:cursor},graphic;each(series.data,function(point){graphic=point.graphic;if(graphic){graphic.attr({isTracker:true}).on('mouseover',function(event){series.onMouseOver();point.onMouseOver();}).on('mouseout',function(event){if(!series.options.stickyTracking){series.onMouseOut();}}).css(css);}});},cleanData:function(){}});seriesTypes.scatter=ScatterSeries;var PiePoint=extendClass(Point,{init:function(){Point.prototype.init.apply(this,arguments);var point=this,toggleSlice;extend(point,{visible:point.visible!==false,name:pick(point.name,'Slice')});toggleSlice=function(){point.slice();};addEvent(point,'select',toggleSlice);addEvent(point,'unselect',toggleSlice);return point;},setVisible:function(vis){var point=this,chart=point.series.chart,method;point.visible=vis=vis===UNDEFINED?!point.visible:vis;method=vis?'show':'hide';point.group[method]();if(point.tracker){point.tracker[method]();}
if(point.dataLabel){point.dataLabel[method]();}
if(point.legendItem){chart.legend.colorizeItem(point,vis);}},slice:function(sliced,redraw){var point=this,series=point.series,chart=series.chart,slicedTranslation=point.slicedTranslation;redraw=pick(redraw,true);sliced=point.sliced=defined(sliced)?sliced:!point.sliced;point.group.animate({translateX:(sliced?slicedTranslation[0]:chart.plotLeft),translateY:(sliced?slicedTranslation[1]:chart.plotTop)},100);}});var PieSeries=extendClass(Series,{type:'pie',isCartesian:false,pointClass:PiePoint,pointAttrToOptions:{stroke:'borderColor','stroke-width':'borderWidth',fill:'color'},getColor:function(){this.initialColor=colorCounter;},translate:function(){var total=0,series=this,cumulative=-0.25,options=series.options,slicedOffset=options.slicedOffset,positions=options.center,chart=series.chart,plotWidth=chart.plotWidth,plotHeight=chart.plotHeight,start,end,angle,data=series.data,circ=2*math.PI,fraction,smallestSize=mathMin(plotWidth,plotHeight),isPercent;positions.push(options.size,options.innerSize||0);positions=map(positions,function(length,i){isPercent=/%$/.test(length);return isPercent?[plotWidth,plotHeight,smallestSize,smallestSize][i]*parseInt(length,10)/100:length;});each(data,function(point){total+=point.y;});each(data,function(point){fraction=total?point.y/total:0;start=cumulative*circ;cumulative+=fraction;end=cumulative*circ;point.shapeType='arc';point.shapeArgs={x:positions[0],y:positions[1],r:positions[2]/2,innerR:positions[3]/2,start:start,end:end};angle=(end+start)/2;point.slicedTranslation=map([mathCos(angle)*slicedOffset+chart.plotLeft,mathSin(angle)*slicedOffset+chart.plotTop],mathRound);point.tooltipPos=[positions[0]+mathCos(angle)*positions[2]*0.35,positions[1]+mathSin(angle)*positions[2]*0.35];point.percentage=fraction*100;point.total=total;});this.setTooltipPoints();},render:function(){var series=this;series.getAttribs();this.drawPoints();if(series.options.enableMouseTracking!==false){series.drawTracker();}
this.drawDataLabels();series.isDirty=false;},drawPoints:function(){var series=this,chart=series.chart,renderer=chart.renderer,groupTranslation,graphic,shapeArgs;each(series.data,function(point){graphic=point.graphic;shapeArgs=point.shapeArgs;if(!point.group){groupTranslation=point.sliced?point.slicedTranslation:[chart.plotLeft,chart.plotTop];point.group=renderer.g('point').attr({zIndex:3}).add().translate(groupTranslation[0],groupTranslation[1]);}
if(graphic){graphic.attr(shapeArgs);}else{point.graphic=renderer.arc(shapeArgs).attr(point.pointAttr[NORMAL_STATE]).add(point.group);}
if(point.visible===false){point.setVisible(false);}});},drawTracker:ColumnSeries.prototype.drawTracker,getSymbol:function(){}});seriesTypes.pie=PieSeries;win.Highcharts={Chart:Chart,dateFormat:dateFormat,getOptions:getOptions,numberFormat:numberFormat,Point:Point,Renderer:Renderer,seriesTypes:seriesTypes,setOptions:setOptions,Series:Series,addEvent:addEvent,createElement:createElement,discardElement:discardElement,css:css,each:each,extend:extend,map:map,merge:merge,pick:pick,extendClass:extendClass};})();


(function(){var HC=Highcharts,Chart=HC.Chart,addEvent=HC.addEvent,defaultOptions=HC.defaultOptions,createElement=HC.createElement,discardElement=HC.discardElement,css=HC.css,merge=HC.merge,each=HC.each,extend=HC.extend,math=Math,mathMax=math.max,doc=document,win=window,M='M',L='L',DIV='div',HIDDEN='hidden',NONE='none',PREFIX='highcharts-',ABSOLUTE='absolute',PX='px',defaultOptions=HC.setOptions({lang:{downloadPNG:'Download PNG image',downloadJPEG:'Download JPEG image',downloadPDF:'Download PDF document',downloadSVG:'Download SVG vector image',exportButtonTitle:'Export to raster or vector image',printButtonTitle:'Print the chart'}});defaultOptions.navigation={menuStyle:{border:'1px solid #A0A0A0',background:'#FFFFFF'},menuItemStyle:{padding:'0 5px',background:NONE,color:'#303030'},menuItemHoverStyle:{background:'#4572A5',color:'#FFFFFF'},buttonOptions:{align:'right',backgroundColor:{linearGradient:[0,0,0,20],stops:[[0.4,'#F7F7F7'],[0.6,'#E3E3E3']]},borderColor:'#B0B0B0',borderRadius:3,borderWidth:1,height:20,hoverBorderColor:'#909090',hoverSymbolFill:'#81A7CF',hoverSymbolStroke:'#4572A5',symbolFill:'#E0E0E0',symbolStroke:'#A0A0A0',symbolX:11.5,symbolY:10.5,verticalAlign:'top',width:24,y:10}};defaultOptions.exporting={type:'image/png',url:'http://export.highcharts.com/',width:800,buttons:{exportButton:{symbol:'exportIcon',x:-10,symbolFill:'#A8BF77',hoverSymbolFill:'#768F3E',_titleKey:'exportButtonTitle',menuItems:[{textKey:'downloadPNG',onclick:function(){this.exportChart();}},{textKey:'downloadJPEG',onclick:function(){this.exportChart({type:'image/jpeg'});}},{textKey:'downloadPDF',onclick:function(){this.exportChart({type:'application/pdf'});}},{textKey:'downloadSVG',onclick:function(){this.exportChart({type:'image/svg+xml'});}}]},printButton:{symbol:'printIcon',x:-36,symbolFill:'#B5C9DF',hoverSymbolFill:'#779ABF',_titleKey:'printButtonTitle',onclick:function(){this.print();}}}};extend(Chart.prototype,{getSVG:function(additionalOptions){var chart=this,chartCopy,sandbox,svg,seriesOptions,pointOptions,pointMarker,options=merge(chart.options,additionalOptions);if(!doc.createElementNS){doc.createElementNS=function(ns,tagName){var elem=doc.createElement(tagName);elem.getBBox=function(){return chart.renderer.Element.prototype.getBBox.apply({element:elem});};return elem;};}
sandbox=createElement(DIV,null,{position:ABSOLUTE,top:'-9999em',width:chart.chartWidth+PX,height:chart.chartHeight+PX},doc.body);extend(options.chart,{renderTo:sandbox,renderer:'SVG'});options.exporting.enabled=false;options.chart.plotBackgroundImage=null;options.series=[];each(chart.series,function(serie){seriesOptions=serie.options;seriesOptions.animation=false;seriesOptions.showCheckbox=false;seriesOptions.data=[];each(serie.data,function(point){pointOptions=typeof point.config=='number'?{y:point.y,x:point.x}:point.config;seriesOptions.data.push(pointOptions);if(point.config&&point.config.marker){pointMarker=point.config.marker;if(pointMarker&&/^url\(/.test(pointMarker.symbol)){delete pointMarker.symbol;}}});options.series.push(seriesOptions);});chartCopy=new Highcharts.Chart(options);svg=chartCopy.container.innerHTML;options=null;chartCopy.destroy();discardElement(sandbox);svg=svg.replace(/zIndex="[^"]+"/g,'').replace(/isShadow="[^"]+"/g,'').replace(/symbolName="[^"]+"/g,'').replace(/jQuery[0-9]+="[^"]+"/g,'').replace(/isTracker="[^"]+"/g,'').replace(/url\([^#]+#/g,'url(#').replace(/id=([^" >]+)/g,'id="$1"').replace(/class=([^" ]+)/g,'class="$1"').replace(/ transform /g,' ').replace(/:path/g,'path').replace(/style="([^"]+)"/g,function(s){return s.toLowerCase();});return svg;},exportChart:function(options,chartOptions){var form,chart=this,svg=chart.getSVG(chartOptions);options=merge(chart.options.exporting,options);form=createElement('form',{method:'post',action:options.url,target:'_blank'},{display:NONE},doc.body);each(['filename','type','width','svg'],function(name){createElement('input',{type:HIDDEN,name:name,value:{filename:options.filename||'chart',type:options.type,width:options.width,svg:svg}[name]},null,form);});form.submit();discardElement(form);},print:function(){var chart=this,container=chart.container,i,origDisplay=[],origParent=container.parentNode,body=doc.body,childNodes=body.childNodes;if(chart.isPrinting){return;}
chart.isPrinting=true;each(childNodes,function(node,i){if(node.nodeType==1){origDisplay[i]=node.style.display;node.style.display=NONE;}});body.appendChild(container);win.print();setTimeout(function(){origParent.appendChild(container);each(childNodes,function(node,i){if(node.nodeType==1){node.style.display=origDisplay[i];}});chart.isPrinting=false;},1000);},contextMenu:function(name,items,x,y,width,height){var chart=this,navOptions=chart.options.navigation,menuItemStyle=navOptions.menuItemStyle,chartWidth=chart.chartWidth,chartHeight=chart.chartHeight,cacheName='cache-'+name,menu=chart[cacheName],menuPadding=mathMax(width,height),boxShadow='3px 3px 10px #888',innerMenu,hide,menuStyle;if(!menu){chart[cacheName]=menu=createElement(DIV,{className:PREFIX+name},{position:ABSOLUTE,zIndex:1000,padding:menuPadding+PX},chart.container);innerMenu=createElement(DIV,null,extend({MozBoxShadow:boxShadow,WebkitBoxShadow:boxShadow},navOptions.menuStyle),menu);hide=function(){css(menu,{display:NONE});};addEvent(menu,'mouseleave',hide);each(items,function(item){if(item){createElement(DIV,{onclick:function(){hide();item.onclick.apply(chart,arguments);},onmouseover:function(){css(this,navOptions.menuItemHoverStyle);},onmouseout:function(){css(this,menuItemStyle);},innerHTML:item.text||HC.getOptions().lang[item.textKey]},extend({cursor:'pointer'},menuItemStyle),innerMenu);}});chart.exportMenuWidth=menu.offsetWidth;chart.exportMenuHeight=menu.offsetHeight;}
menuStyle={display:'block'};if(x+chart.exportMenuWidth>chartWidth){menuStyle.right=(chartWidth-x-width-menuPadding)+PX;}else{menuStyle.left=(x-menuPadding)+PX;}
if(y+height+chart.exportMenuHeight>chartHeight){menuStyle.bottom=(chartHeight-y-menuPadding)+PX;}else{menuStyle.top=(y+height-menuPadding)+PX;}
css(menu,menuStyle);},addButton:function(options){var chart=this,renderer=chart.renderer,btnOptions=merge(chart.options.navigation.buttonOptions,options),onclick=btnOptions.onclick,menuItems=btnOptions.menuItems,position=chart.getAlignment(btnOptions),buttonLeft=position.x,buttonTop=position.y,buttonWidth=btnOptions.width,buttonHeight=btnOptions.height,box,symbol,button,borderWidth=btnOptions.borderWidth,boxAttr={stroke:btnOptions.borderColor},symbolAttr={stroke:btnOptions.symbolStroke,fill:btnOptions.symbolFill};if(btnOptions.enabled===false){return;}
function revert(){symbol.attr(symbolAttr);box.attr(boxAttr);}
box=renderer.rect(0,0,buttonWidth,buttonHeight,btnOptions.borderRadius,borderWidth).translate(buttonLeft,buttonTop).attr(extend({fill:btnOptions.backgroundColor,'stroke-width':borderWidth,zIndex:19},boxAttr)).add();button=renderer.rect(buttonLeft,buttonTop,buttonWidth,buttonHeight,0).attr({fill:'rgba(255, 255, 255, 0.001)',title:HC.getOptions().lang[btnOptions._titleKey],zIndex:21}).css({cursor:'pointer'}).on('mouseover',function(){symbol.attr({stroke:btnOptions.hoverSymbolStroke,fill:btnOptions.hoverSymbolFill});box.attr({stroke:btnOptions.hoverBorderColor});}).on('mouseout',revert).add();addEvent(button.element,'click',revert);if(menuItems){onclick=function(e){chart.contextMenu('export-menu',menuItems,buttonLeft,buttonTop,buttonWidth,buttonHeight);};}
addEvent(button.element,'click',function(){onclick.apply(chart,arguments);});symbol=renderer.symbol(btnOptions.symbol,buttonLeft+btnOptions.symbolX,buttonTop+btnOptions.symbolY,(btnOptions.symbolSize||12)/2).attr(extend(symbolAttr,{'stroke-width':btnOptions.symbolStrokeWidth||1,zIndex:20})).add();}});HC.Renderer.prototype.symbols.exportIcon=function(x,y,radius){return[M,x-radius,y+radius,L,x+radius,y+radius,x+radius,y+radius*0.5,x-radius,y+radius*0.5,'Z',M,x,y+radius*0.5,L,x-radius*0.5,y-radius/3,x-radius/6,y-radius/3,x-radius/6,y-radius,x+radius/6,y-radius,x+radius/6,y-radius/3,x+radius*0.5,y-radius/3,'Z'];};HC.Renderer.prototype.symbols.printIcon=function(x,y,radius){return[M,x-radius,y+radius*0.5,L,x+radius,y+radius*0.5,x+radius,y-radius/3,x-radius,y-radius/3,'Z',M,x-radius*0.5,y-radius/3,L,x-radius*0.5,y-radius,x+radius*0.5,y-radius,x+radius*0.5,y-radius/3,'Z',M,x-radius*0.5,y+radius*0.5,L,x-radius*0.75,y+radius,x+radius*0.75,y+radius,x+radius*0.5,y+radius*0.5,'Z'];};HC.Chart=function(options){var chart=new Chart(options),n,exportingOptions=chart.options.exporting,buttons=exportingOptions.buttons;if(exportingOptions.enabled!==false){for(n in buttons){chart.addButton(buttons[n]);}}
return chart;};})();


var SqueezeBox={presets:{onOpen:$empty,onClose:$empty,onUpdate:$empty,onResize:$empty,onMove:$empty,onShow:$empty,onHide:$empty,size:{x:600,y:450},sizeLoading:{x:200,y:150},marginInner:{x:20,y:20},marginImage:{x:50,y:75},handler:false,target:null,closable:true,closeBtn:true,zIndex:65555,overlayOpacity:0.7,classWindow:'',classOverlay:'',overlayFx:{},resizeFx:{},contentFx:{},parse:false,parseSecure:false,shadow:true,document:null,ajaxOptions:{},forceInstantResizeOnContentLoaded:false},initialize:function(presets){if(this.options)return this;this.presets=$merge(this.presets,presets);this.doc=this.presets.document||document;this.options={};this.setOptions(this.presets).build();this.bound={window:this.reposition.bind(this,[null]),scroll:this.checkTarget.bind(this),close:this.close.bind(this),key:this.onKey.bind(this)};this.isOpen=this.isLoading=false;return this;},build:function(){this.overlay=new Element('div',{id:'sbox-overlay',styles:{display:'none',zIndex:this.options.zIndex}});this.win=new Element('div',{id:'sbox-window',styles:{display:'none',zIndex:this.options.zIndex+2}});if(this.options.shadow){if(Browser.Engine.webkit420){this.win.setStyle('-webkit-box-shadow','0 0 10px rgba(0, 0, 0, 0.7)');}else if(!Browser.Engine.trident4){var shadow=new Element('div',{'class':'sbox-bg-wrap'}).inject(this.win);var relay=function(e){this.overlay.fireEvent('click',[e]);}.bind(this);['n','ne','e','se','s','sw','w','nw'].each(function(dir){new Element('div',{'class':'sbox-bg sbox-bg-'+dir}).inject(shadow).addEvent('click',relay);});}}
this.content=new Element('div',{id:'sbox-content'}).inject(this.win);this.closeBtn=new Element('a',{id:'sbox-btn-close',href:'#'}).inject(this.win);this.fx={overlay:new Fx.Tween(this.overlay,$merge({property:'opacity',onStart:Events.prototype.clearChain,duration:250,link:'cancel'},this.options.overlayFx)).set(0),win:new Fx.Morph(this.win,$merge({onStart:Events.prototype.clearChain,unit:'px',duration:750,transition:Fx.Transitions.Quint.easeOut,link:'cancel',unit:'px'},this.options.resizeFx)),content:new Fx.Tween(this.content,$merge({property:'opacity',duration:250,link:'cancel'},this.options.contentFx)).set(0)};$(this.doc.body).adopt(this.overlay,this.win);},assign:function(to,options){return($(to)||$$(to)).addEvent('click',function(){return!SqueezeBox.fromElement(this,options);});},open:function(subject,options){this.initialize();if(this.element!=null)this.trash();this.element=$(subject)||false;this.setOptions($merge(this.presets,options||{}));if(this.element&&this.options.parse){var obj=this.element.getProperty(this.options.parse);if(obj&&(obj=JSON.decode(obj,this.options.parseSecure)))this.setOptions(obj);}
this.url=((this.element)?(this.element.get('href')):subject)||this.options.url||'';this.assignOptions();var handler=handler||this.options.handler;if(handler)return this.setContent(handler,this.parsers[handler].call(this,true));var ret=false;return this.parsers.some(function(parser,key){var content=parser.call(this);if(content){ret=this.setContent(key,content);return true;}
return false;},this);},fromElement:function(from,options){return this.open(from,options);},assignOptions:function(){this.overlay.set('class',this.options.classOverlay);this.win.set('class',this.options.classWindow);if(Browser.Engine.trident4)this.win.addClass('sbox-window-ie6');},close:function(e){var stoppable=($type(e)=='event');if(stoppable)e.stop();if(!this.isOpen||(stoppable&&!$lambda(this.options.closable).call(this,e)))return this;this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));this.win.setStyle('display','none');this.fireEvent('onClose',[this.content]);this.trash();this.toggleListeners();this.isOpen=false;return this;},trash:function(){this.element=this.asset=null;this.content.empty();this.options={};this.removeEvents().setOptions(this.presets).callChain();},onError:function(){this.asset=null;this.setContent('string',this.options.errorMsg||'An error occurred');},setContent:function(handler,content){if(!this.handlers[handler])return false;this.content.className='sbox-content-'+handler;this.applyTimer=this.applyContent.delay(this.fx.overlay.options.duration,this,this.handlers[handler].call(this,content));if(this.overlay.retrieve('opacity'))return this;this.toggleOverlay(true);this.fx.overlay.start(this.options.overlayOpacity);return this.reposition();},applyContent:function(content,size){if(!this.isOpen&&!this.applyTimer)return;this.applyTimer=$clear(this.applyTimer);this.hideContent();if(!content){this.toggleLoading(true);}else{if(this.isLoading)this.toggleLoading(false);this.fireEvent('onUpdate',[this.content],20);}
if(content){if(['string','array'].contains($type(content)))this.content.set('html',content);else if(!this.content.hasChild(content))this.content.adopt(content);}
this.callChain();if(!this.isOpen){this.toggleListeners(true);this.resize(size,true);this.isOpen=true;this.fireEvent('onOpen',[this.content]);}else{this.resize(size,this.options.forceInstantResizeOnContentLoaded);}},resize:function(size,instantly){this.showTimer=$clear(this.showTimer||null);var box=this.doc.getSize(),scroll=this.doc.getScroll();this.size=$merge((this.isLoading)?this.options.sizeLoading:this.options.size,size);var to={width:this.size.x,height:this.size.y,left:(scroll.x+(box.x-this.size.x-this.options.marginInner.x)/2).toInt(),top:(scroll.y+(box.y-this.size.y-this.options.marginInner.y)/2).toInt()};this.hideContent();if(!instantly){this.fx.win.start(to).chain(this.showContent.bind(this));}else{this.win.setStyles(to).setStyle('display','');this.showTimer=this.showContent.delay(50,this);}
return this.reposition();},toggleListeners:function(state){var fn=(state)?'addEvent':'removeEvent';this.closeBtn[fn]('click',this.bound.close);this.overlay[fn]('click',this.bound.close);this.doc[fn]('keydown',this.bound.key)[fn]('mousewheel',this.bound.scroll);this.doc.getWindow()[fn]('resize',this.bound.window)[fn]('scroll',this.bound.window);},toggleLoading:function(state){this.isLoading=state;this.win[(state)?'addClass':'removeClass']('sbox-loading');if(state)this.fireEvent('onLoading',[this.win]);},toggleOverlay:function(state){var full=this.doc.getSize().x;this.overlay.setStyle('display',(state)?'':'none');this.doc.body[(state)?'addClass':'removeClass']('body-overlayed');if(state){this.scrollOffset=this.doc.getWindow().getSize().x-full;this.doc.body.setStyle('margin-right',this.scrollOffset);}else{this.doc.body.setStyle('margin-right','');}},showContent:function(){if(this.content.get('opacity'))this.fireEvent('onShow',[this.win]);this.fx.content.start(1);},hideContent:function(){if(!this.content.get('opacity'))this.fireEvent('onHide',[this.win]);this.fx.content.cancel().set(0);},onKey:function(e){switch(e.key){case'esc':this.close(e);case'up':case'down':return false;}},checkTarget:function(e){return this.content.hasChild(e.target);},reposition:function(){var size=this.doc.getSize(),scroll=this.doc.getScroll(),ssize=this.doc.getScrollSize();this.overlay.setStyles({width:ssize.x+'px',height:ssize.y+'px'});this.win.setStyles({left:(scroll.x+(size.x-this.win.offsetWidth)/2-this.scrollOffset).toInt()+'px',top:(scroll.y+(size.y-this.win.offsetHeight)/2).toInt()+'px'});return this.fireEvent('onMove',[this.overlay,this.win]);},removeEvents:function(type){if(!this.$events)return this;if(!type)this.$events=null;else if(this.$events[type])this.$events[type]=null;return this;},extend:function(properties){return $extend(this,properties);},handlers:new Hash(),parsers:new Hash()};SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty));SqueezeBox.parsers.extend({image:function(preset){return(preset||(/\.(?:jpg|png|gif)$/i).test(this.url))?this.url:false;},clone:function(preset){if($(this.options.target))return $(this.options.target);if(this.element&&!this.element.parentNode)return this.element;var bits=this.url.match(/#([\w-]+)$/);return(bits)?$(bits[1]):(preset?this.element:false);},ajax:function(preset){return(preset||(this.url&&!(/^(?:javascript|#)/i).test(this.url)))?this.url:false;},iframe:function(preset){return(preset||this.url)?this.url:false;},string:function(preset){return true;}});SqueezeBox.handlers.extend({image:function(url){var size,tmp=new Image();this.asset=null;tmp.onload=tmp.onabort=tmp.onerror=(function(){tmp.onload=tmp.onabort=tmp.onerror=null;if(!tmp.width){this.onError.delay(10,this);return;}
var box=this.doc.getSize();box.x-=this.options.marginImage.x;box.y-=this.options.marginImage.y;size={x:tmp.width,y:tmp.height};for(var i=2;i--;){if(size.x>box.x){size.y*=box.x/size.x;size.x=box.x;}else if(size.y>box.y){size.x*=box.y/size.y;size.y=box.y;}}
size.x=size.x.toInt();size.y=size.y.toInt();this.asset=$(tmp);tmp=null;this.asset.width=size.x;this.asset.height=size.y;this.applyContent(this.asset,size);}).bind(this);tmp.src=url;if(tmp&&tmp.onload&&tmp.complete)tmp.onload();return(this.asset)?[this.asset,size]:null;},clone:function(el){if(el)return el.clone();return this.onError();},adopt:function(el){if(el)return el;return this.onError();},ajax:function(url){var options=this.options.ajaxOptions||{};this.asset=new Request.HTML($merge({method:'get',evalScripts:false},this.options.ajaxOptions)).addEvents({onSuccess:function(resp){this.applyContent(resp);if(options.evalScripts!==null&&!options.evalScripts)$exec(this.asset.response.javascript);this.fireEvent('onAjax',[resp,this.asset]);this.asset=null;}.bind(this),onFailure:this.onError.bind(this)});this.asset.send.delay(10,this.asset,[{url:url}]);},iframe:function(url){this.asset=new Element('iframe',$merge({src:url,frameBorder:0,width:this.options.size.x,height:this.options.size.y},this.options.iframeOptions));if(this.options.iframePreload){this.asset.addEvent('load',function(){this.applyContent(this.asset.setStyle('display',''));}.bind(this));this.asset.setStyle('display','none').inject(this.content);return false;}
return this.asset;},string:function(str){return str;}});SqueezeBox.handlers.url=SqueezeBox.handlers.ajax;SqueezeBox.parsers.url=SqueezeBox.parsers.ajax;SqueezeBox.parsers.adopt=SqueezeBox.parsers.clone;


Element.implement({toQueryStringIncludingDisabled:function(){var queryString=[];this.getElements('input, select, textarea',true).each(function(el){if(!el.name||el.type=='submit'||el.type=='reset'||el.type=='file')return;var value=(el.tagName.toLowerCase()=='select')?Element.getSelected(el).map(function(opt){return opt.value;}):((el.type=='radio'||el.type=='checkbox')&&!el.checked)?null:el.value;$splat(value).each(function(val){if(typeof val!='undefined')queryString.push(el.name+'='+encodeURIComponent(val));});});return queryString.join('&');}});function roundNumber(rnum,rlength){return Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);}
var DataValueAnalyser=new Class({Implements:[Options,Events],options:{gridContainer:null,showWarningsOnLoad:false,trackStartUpErrors:false,fieldchanged:$empty},missingFields:null,warningLog:null,showWarnings:false,daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],initialize:function(options){this.setOptions(options);this.missingFields=[];if(this.options.showWarningsOnLoad==true){this.showWarnings=true;}
if(this.options.gridContainer==null){alert('No grid specified for Dave Value Analyser');return;}
var self=this;this.fire=function(evt){self.fireEvent(evt.type)[evt.type].apply(self,[evt,this]);};this.setup();if(this.options.trackStartUpErrors&&this.missingFields.length>0){alert('Missing The Following Fields:\n'+this.missingFields.join('\n'));}
if(this.options.acceptWarningCheckbox!=null){this.options.acceptWarningCheckbox.set('checked',true);}
this.dirty=false;this.showWarnings=true;},attachEvents:function(field){field.addEvents({keyup:this.fire,change:this.fire});},keyup:function(evt,field){this.updateField(field,true);},change:function(evt,field){this.updateField(field,true);},setup:function(){var fields=this.options.gridContainer.getElements('input.data');fields.combine(this.options.gridContainer.getElements('td.calc'));fields.each(function(el,i){var parts=el.get('id').split('_');var fieldName=parts[0];var fieldPeriod=parts[1];var fieldData=this.options.fieldData[fieldName];el.store('fieldRef',fieldName);el.store('fieldPeriod',fieldPeriod);if(fieldData==null){return;}else if(fieldData.type=='input'){this.setupInputField(el,fieldName,fieldPeriod,fieldData);}else if(fieldData.type=='calc'){this.setupCalcField(el,fieldName,fieldPeriod,fieldData);}},this);},setupInputField:function(field,name,period,fieldData){if(fieldData.targetCalc==null){if(this.options.trackStartUpErrors){alert('The field: '+name+' has no targetCalc defined. Skipping...');}
return;}
var targetString=this.replaceDaysInPeriodMarkers(period,fieldData.targetCalc);targetString=this.replacePeriodMarkers(period,targetString);field.store('target',targetString);this.setupDependentInterest(name+'_'+period,targetString.match(/\[(.+?)\]/g));this.updateInputTargetScore(field);this.evaluateFieldStatus(field);this.attachEvents(field);},setupCalcField:function(field,name,period,fieldData){if(fieldData.calculation==null){if(this.options.trackStartUpErrors){alert('The field: '+name+' has no calculation defined. Skipping...');}
return;}
var calcString=this.replaceDaysInPeriodMarkers(period,fieldData.calculation);calcString=this.replacePeriodMarkers(period,calcString);field.store('calculation',calcString);this.setupDependentInterest(name+'_'+period,calcString.match(/\[(.+?)\]/g));this.updateCalcValue(field);},setupDependentInterest:function(dependeeFieldName,dependentIdentifiers){if(dependentIdentifiers!=null){for(var i=0;i<dependentIdentifiers.length;i++){var dependentIdentifier=dependentIdentifiers[i];var matches;if(dependentIdentifier.contains(':')){matches=dependentIdentifier.split(/\[([a-zA-Z0-9]+?)_([0-9]*?):([0-9]+?)\]/g);for(var periodId=matches[2];periodId>(matches[2]-matches[3]);periodId--){this.registerDependentInterest(matches[1]+'_'+periodId,dependeeFieldName);}}else if(dependentIdentifier.contains('LAST_KNOWN_VALUE')){matches=dependentIdentifier.split(/\[([a-zA-Z0-9]+?)_LAST_KNOWN_VALUE\]/g);var field=this.getField(dependeeFieldName);this.registerDependentInterest(matches[1]+'_'+field.retrieve('fieldPeriod'),dependeeFieldName);this.registerDependentInterest(field.retrieve('fieldRef')+'_'+(field.retrieve('fieldPeriod')-1),dependeeFieldName);}else{var dependentFieldName=dependentIdentifier.replace(/\[(.*?)\]/,'$1');this.registerDependentInterest(dependentFieldName,dependeeFieldName);}}}},registerDependentInterest:function(dependentName,dependeeName){var dependentField=this.getField(dependentName);if(dependentField!=null){var currentDependies=dependentField.retrieve('dependees','');currentDependies+=','+dependeeName;dependentField.store('dependees',currentDependies);}},updateField:function(field,updateDependentFields){if(field.hasClass('calc')){this.updateCalcValue(field);}else{this.options.fieldchanged();this.updateInputTargetScore(field);this.evaluateFieldStatus(field);}
if(updateDependentFields==true){this.updateDependentFields(field);}},updateCalcValue:function(field){var calcString=field.retrieve('calculation');if(calcString!=null){if($type(calcString)=='array'){calcString=calcString[0];}
var calcEvalString=this.replaceRollingFigureMarkersWithValues(calcString);calcEvalString=this.replaceLastKnownValue(calcEvalString,field);calcEvalString=this.replaceStaticFieldMarkersWithValues(calcEvalString);var result;if(/MISSING/.test(calcEvalString)){result='Insufficient Data';}else{result=this.tidyDecimal(eval(calcEvalString),field.get('data-decimalPlaces'));}
field.set('text',result);}},updateInputTargetScore:function(field){var targetString=field.retrieve('target');if(targetString!=null){if($type(targetString)=='array'){targetString=targetString[0];}
var targetScore=this.replaceRollingFigureMarkersWithValues(targetString);targetScore=this.replaceStaticFieldMarkersWithValues(targetScore);if(/MISSING/.test(targetScore)){targetScore='MISSING';}else{targetScore=eval(targetScore);}
field.store('targetScore',targetScore);}},updateDependentFields:function(field){var fieldsToUpdate=field.retrieve('dependees','').split(',');for(var k=0;k<fieldsToUpdate.length;k++){var fieldName=fieldsToUpdate[k];if(fieldName!=""){var dependentField=this.getField(fieldName);this.updateField(dependentField,dependentField.hasClass('calc'));}}},getDaysInPeriod:function(periodId){if(periodId%48==1){return 29;}else{return this.daysInMonth[periodId%12];}},replaceDaysInPeriodMarkers:function(fieldPeriod,str){if(str.contains('DAYS_IN_THIS_PERIOD')){return str.replace(/\[DAYS_IN_THIS_PERIOD\]/g,this.getDaysInPeriod(fieldPeriod));}
return str;},replacePeriodMarkers:function(fieldPeriod,str){str=str.replace(/THIS_PERIOD/g,fieldPeriod);return str.replace(/LAST_PERIOD/g,fieldPeriod.toInt()-1);},replaceStaticFieldMarkersWithValues:function(str){return str.replace(/\[([a-zA-Z0-9]+?_[0-9]+?)\]/g,(function(fullMatch,fieldId,index,wholeString){return this.getFieldValue(fieldId);}).bind(this));},replaceRollingFigureMarkersWithValues:function(str){if(str.contains(':')){str=str.replace(/\[([a-zA-Z0-9]+?)_([0-9]+?):([0-9]+?)\]/g,(function(fullMatch,fieldName,period,rollBackDuration,wholeString,occuranceIndex){var runningTotal=0;var totalItems=0;var periodId=period;for(var i=0;i<rollBackDuration;i++){var value=this.getFieldValue(fieldName+'_'+periodId);if(value!='MISSING'&&value!='Insufficient Data'){runningTotal+=value;totalItems++;}
periodId--;}
if(totalItems>0){return runningTotal/totalItems;}else{return'MISSING';}}).bind(this));}
return str;},replaceLastKnownValue:function(str,field){if(str.contains('LAST_KNOWN_VALUE')){str=str.replace(/\[([a-zA-Z0-9]+?)_LAST_KNOWN_VALUE\]/g,(function(fullMatch,fieldName,wholeString,occuranceIndex){var value=this.getFieldValue(fieldName+'_'+field.retrieve('fieldPeriod','MISSING'));if(value!='MISSING'&&value!='Insufficient Data'){return value;}else{return this.getFieldValue(field.retrieve('fieldRef','UNKNOWN')+'_'+(field.retrieve('fieldPeriod','MISSING')-1));}}).bind(this));}
return str;},replaceScoreMarkers:function(str,current,target){str=str.replace(/\[VALUE\]/g,current);return str.replace(/\[SCORE\]/g,target);},evaluateFieldStatus:function(field){if(field.hasClass('hidden')){return;}
var fieldName=field.retrieve('fieldRef');var fieldPeriod=field.retrieve('fieldPeriod');var currentValue=field.get('value');if(currentValue==""){this.setElementStatus(field,'MISSING');this.triggerNoticeEvent('MISSING',fieldName,fieldPeriod,'');return;}
var targetValue=field.retrieve('targetScore','MISSING');var fieldData=this.options.fieldData[fieldName];if(fieldData==null||targetValue=='MISSING'){this.setElementStatus(field,'GOOD');this.triggerNoticeEvent('GOOD',fieldName,fieldPeriod,'');return;}
var lowerWarningScore=eval(this.replaceScoreMarkers(fieldData.lowerWarningCalc,currentValue,targetValue));var lowerGoodScore=eval(this.replaceScoreMarkers(fieldData.lowerGoodCalc,currentValue,targetValue));var upperGoodScore=eval(this.replaceScoreMarkers(fieldData.upperGoodCalc,currentValue,targetValue));var upperWarningScore=eval(this.replaceScoreMarkers(fieldData.upperWarningCalc,currentValue,targetValue));currentValue=parseFloat(currentValue);lowerWarningScore=parseFloat(this.tidyDecimal(lowerWarningScore,field.get('data-decimalPlaces'),'floor'));lowerGoodScore=parseFloat(this.tidyDecimal(lowerGoodScore,field.get('data-decimalPlaces'),'floor'));upperGoodScore=parseFloat(this.tidyDecimal(upperGoodScore,field.get('data-decimalPlaces'),'ceil'));upperWarningScore=parseFloat(this.tidyDecimal(upperWarningScore,field.get('data-decimalPlaces'),'ceil'));var status='';var message='';if(currentValue<lowerWarningScore){status='ERROR';message=fieldData.lowerErrorMsg;}else if(currentValue>=lowerWarningScore&&currentValue<lowerGoodScore){status='WARNING';message=fieldData.lowerWarningMsg;}else if(currentValue>=lowerGoodScore&&currentValue<=upperGoodScore){status='GOOD';}else if(currentValue>upperGoodScore&&currentValue<=upperWarningScore){status='WARNING';message=fieldData.upperWarningMsg;}else{status='ERROR';message=fieldData.upperErrorMsg;}
message=message.replace(/\[VALUE\]/g,currentValue);message=message.replace(/\[LOWER_WARNING\]/g,lowerWarningScore);message=message.replace(/\[LOWER_GOOD\]/g,lowerGoodScore);message=message.replace(/\[UPPER_GOOD\]/g,upperGoodScore);message=message.replace(/\[UPPER_WARNING\]/g,upperWarningScore);this.setElementStatus(field,status);if(this.showWarnings==true){this.triggerNoticeEvent(status,fieldName,fieldPeriod,message);}},setElementStatus:function(element,status){element.removeClass('empty');element.removeClass('error');element.removeClass('warning');element.removeClass('accept');switch(status){case'MISSING':element.addClass('empty');break;case'ERROR':element.addClass('error');break;case'GOOD':element.addClass('accept');break;case'WARNING':element.addClass('warning');break;}},getField:function(fieldName){return this.options.gridContainer.getElementById(fieldName);},getFieldValue:function(fieldId){var el=document.id(fieldId);if(el==null){if(this.options.trackStartUpErrors){this.missingFields.include(fieldId.split('_')[0]);}
return'MISSING';}
var val=((el.get('tag')=='input')?el.get('value'):el.get('text')).clean();if(val==null||val==""||val=="Insufficient Data"){return'MISSING';}else{return parseFloat(val);}},tidyDecimal:function(number,numDecimalPlaces,method){switch(method){case'ceil':return(Math.ceil(number*Math.pow(10,numDecimalPlaces))/Math.pow(10,numDecimalPlaces)).toFixed(numDecimalPlaces);case'floor':return(Math.floor(number*Math.pow(10,numDecimalPlaces))/Math.pow(10,numDecimalPlaces)).toFixed(numDecimalPlaces);default:return(Math.round(number*Math.pow(10,numDecimalPlaces))/Math.pow(10,numDecimalPlaces)).toFixed(numDecimalPlaces);}},triggerNoticeEvent:function(level,fieldName,fieldPeriod,message){if(level=='GOOD'){this.removeWarningMessage(fieldName,fieldPeriod);}else if(level=='MISSING'){this.removeWarningMessage(fieldName,fieldPeriod);}else{var fieldTitle=this.options.gridContainer.getElementById(fieldName+'_title').get('text');this.logWarningMessage(fieldName,fieldPeriod,fieldTitle,message);}},removeWarningMessage:function(fieldName,period){var warningListId='warnings_'+period;var warningId=warningListId+'_'+fieldName;var warningListElement=this.options.warningsPanel.getElementById(warningListId);var warningElement=warningListElement.getElementById(warningId);if(warningElement!=null){warningElement.dispose();}
var listContent=warningListElement.getElements('li');if(listContent.length==0){warningListElement.addClass('hidden');}
if(this.options.warningsPanel.getElements('li').length<=7){this.options.warningsPanel.addClass('hidden');if(this.options.acceptWarningCheckbox!=null){this.options.acceptWarningCheckbox.set('checked',true);}}},logWarningMessage:function(fieldName,period,fullName,message){this.removeWarningMessage(fieldName,period);var warningListId='warnings_'+period;var warningId=warningListId+'_'+fieldName;var warningListElement=this.options.warningsPanel.getElementById(warningListId);var warningElement=new Element('li');warningElement.set('id',warningId);warningElement.set('html','<strong>'+fullName+' - </strong>'+message);warningElement.inject(warningListElement.getElement('ul'));if(warningListElement.hasClass('hidden')){warningListElement.removeClass('hidden');}
if(this.options.warningsPanel.hasClass('hidden')){this.options.warningsPanel.removeClass('hidden');}
if(this.options.acceptWarningCheckbox!=null){this.options.acceptWarningCheckbox.set('checked',false);}}});var DMLogger=new Class({Implements:[Options],options:{debugEnabled:false},logWindow:null,initialize:function(options){this.setOptions(options);},createLogWindow:function(){var statusWindow=new Element('div');statusWindow.setStyles({'position':'fixed','left':0,'bottom':0,'right':0,'background-color':'#ffc','height':100,'overflow':'auto'});statusWindow.inject(document.body,'bottom');document.body.setStyle('padding-bottom',160);this.logWindow=statusWindow;},msg:function(message){if(this.options.debugEnabled==false){return;}else if(this.logWindow==null){this.createLogWindow();}
time=new Date();message=time.getHours()+":"+time.getMinutes()+":"+time.getSeconds()+" > "+message;this.logWindow.set('html',this.logWindow.get('html')+"<br />"+message);this.logWindow.scrollTop=this.logWindow.scrollHeight;},clear:function(){this.logWindow.set('html','');}});var DashboardTools=new Class({Implements:[Options,Events],options:{sparkLineClass:'.dashboard-sparkline',sparkLineLineStyle:'spline',sparkBulletClass:'.dashboard-sparkbullet',baseColor:[100,100,100]},initialize:function(options){this.setOptions(options);},setup:function(){this.setColours();this.setupSparkLineCharts();this.setupSparkBulletCharts();},setColours:function(){this.lighterQuartileShade=[this.adjustColourByAlpha(this.options.baseColor[0],0.40),this.adjustColourByAlpha(this.options.baseColor[1],0.40),this.adjustColourByAlpha(this.options.baseColor[2],0.40)];this.darkerQuartileShade=[this.adjustColourByAlpha(this.options.baseColor[0],0.65),this.adjustColourByAlpha(this.options.baseColor[1],0.65),this.adjustColourByAlpha(this.options.baseColor[2],0.65)];},adjustColourByAlpha:function(color,alpha){return Math.min(Math.ceil(color*alpha+(1-alpha)*255),255);},setupSparkLineCharts:function(){var charts=$$(this.options.sparkLineClass);charts.each(function(chart,index){this.createSparkLineChart(chart);},this);},setupSparkBulletCharts:function(){var charts=$$(this.options.sparkBulletClass);charts.each(function(chart,index){this.createSparkBulletChart(chart);},this);},createSparkLineChart:function(container){var gaplessData=[];var targetValue=[];var allData=container.get('text').split('|');var data=allData[0].split(',');for(var i=0;i<data.length;i++){data[i]=data[i].trim().toFloat();if(isNaN(data[i])){data[i]=null;}else{gaplessData.push([i,data[i]]);}}
if(allData.length==2&&allData[1].trim()!=''){targetValue=allData[1].trim().toFloat();targetValue=[[0,targetValue],[data.length-1,targetValue]];}
container.set('text','');container.setStyle('visibility','visible');new Highcharts.Chart({chart:{borderRadius:0,defaultSeriesType:this.options.sparkLineLineStyle,margin:[0,0,0,0],renderTo:container.get('id'),showAxes:false},credits:{enabled:false},exporting:{enabled:false},legend:{enabled:false},plotOptions:{series:{animation:false,lineWidth:1,marker:{enabled:false},shadow:false,states:{hover:{enabled:false}},enableMouseTracking:false}},series:[{data:gaplessData,color:'rgba('+this.lighterQuartileShade+', 1.0)'},{data:data,color:'rgba('+this.options.baseColor+', 1.0)'},{data:targetValue,color:'rgba(75,75,75, 1)'}],subtitle:{text:null},title:{text:null},tooltip:{enabled:false},xAxis:{labels:{enabled:false}},yAxis:{labels:{enabled:false},title:{text:null},gridLineWidth:0,maxPadding:0.1,minPadding:0.1,startOnTick:false,endOnTick:false}});},createSparkBulletChart:function(container){var data=container.get('text').split(',');var actualData=[];for(var i=0;i<data.length;i++){data[i]=data[i].trim();var value=parseFloat(data[i]);if(isNaN(value)==false){actualData.push(value);}}
if(actualData.length!=7){container.set('text','Insufficent Data');container.setStyle('visibility','visible');}else{container.set('text','');container.setStyle('visibility','visible');var bulletIconColor=container.hasClass('inaccurate')?'#999999':'#000000';new Highcharts.Chart({chart:{defaultSeriesType:'scatter',margin:[0,0,0,0],renderTo:container.get('id'),showAxes:false,borderRadius:0},credits:{enabled:false},exporting:{enabled:false},legend:{enabled:false},series:[{type:'scatter',color:bulletIconColor,data:[[actualData[0],11]],marker:{symbol:'square',lineColor:'#ffffff',lineWidth:1,radius:8}}],plotOptions:{series:{animation:false,shadow:false,enableMouseTracking:false,states:{hover:{enabled:false}}}},subtitle:{text:null},title:{text:null},tooltip:{enabled:false},yAxis:{gridLineWidth:0,labels:{enabled:false},startOnTick:false,endOnTick:false,min:1,max:23},xAxis:{gridLineWidth:0,min:actualData[1],max:actualData[6],plotBands:[{from:actualData[1],to:actualData[2],color:'rgba(255,255,255, 1.0)'},{from:actualData[2],to:actualData[3],color:'rgba('+this.lighterQuartileShade+', 1.0)'},{from:actualData[3],to:actualData[4],color:'rgba('+this.darkerQuartileShade+', 1.00)'},{from:actualData[4],to:actualData[5],color:'rgba('+this.lighterQuartileShade+', 1.0)'},{from:actualData[5],to:actualData[6],color:'rgba(255,255,255,1.0)'}],title:null}});}}});var DetailedCharts=new Class({Implements:[Options,Events],options:{moreDetailLinkClasses:['.dashboard-row-fielddata'],chartSize:{x:800,y:500},chartContainerId:'detailedChartContainer',chartDataContainerId:'detailedChartDataContainer',baseColor:[0,0,0],detailedChartBaseUrl:null,dashboardId:null,periodId:null},initialize:function(options){this.setOptions(options);},setup:function(){if(this.options.detailedChartBaseUrl==null){alert("Error: No base url specified for detailed charts");return;}
this.setupSqueezeBox();this.attachLinks();this.setColours();},setColours:function(){this.lighterQuartileShade=[this.adjustColourByAlpha(this.options.baseColor[0],0.40),this.adjustColourByAlpha(this.options.baseColor[1],0.40),this.adjustColourByAlpha(this.options.baseColor[2],0.40)];this.darkerQuartileShade=[this.adjustColourByAlpha(this.options.baseColor[0],0.65),this.adjustColourByAlpha(this.options.baseColor[1],0.65),this.adjustColourByAlpha(this.options.baseColor[2],0.65)];},adjustColourByAlpha:function(color,alpha){return Math.min(Math.ceil(color*alpha+(1-alpha)*255),255);},setupSqueezeBox:function(){SqueezeBox.initialize({size:this.options.chartSize});},attachLinks:function(){$$(this.options.moreDetailLinkClasses).each(function(element,index){element.addEvent('click',function(evt){this.displayChart(element);}.bind(this));element.getElements('svg').each(function(chartElement,index2){chartElement.addEvent('click',function(evt){this.displayChart(element);}.bind(this));}.bind(this));}.bind(this));},displayChart:function(element){SqueezeBox.open(this.options.detailedChartBaseUrl+this.options.dashboardId+'/'+element.get('rel')+'/'+this.options.periodId+'/',{handler:'ajax',ajaxOptions:{method:'get',evalScripts:true,noCache:true},forceInstantResizeOnContentLoaded:true,onUpdate:function(){this.renderDetailedChart();}.bind(this)});},renderDetailedChart:function(){var chartData=JSON.decode(document.id(this.options.chartDataContainerId).get('text'));globalChartData=chartData;this.chart=new Highcharts.Chart({chart:{renderTo:this.options.chartContainerId,defaultSeriesType:'area',marginRight:10},legend:{reversed:true,y:0},title:{text:chartData.title},subtitle:{text:chartData.targetValue.info},credits:{enabled:false},xAxis:{categories:chartData.xAxisLabels,labels:{rotation:-55,y:30}},yAxis:{labels:{formatter:function(){if(this.value>1000000){return(this.value/1000000).round(1)+'m';}else if(this.value>1000){return(this.value/1000).round(1)+'k';}else{return this.value;}}},title:{margin:55,text:chartData.yAxisTitle},gridLineWidth:2},plotOptions:{line:{marker:{enabled:true,symbol:'circle',radius:4,states:{hover:{enabled:true}}},stacking:null},area:{marker:{enabled:false},lineWidth:0,stacking:null}},series:[{type:'area',name:'65-95th Quartile',data:chartData.quartileData.p95,enableMouseTracking:false,showInLegend:false,color:'rgba('+this.lighterQuartileShade+', 1)',fillOpacity:1.0},{type:'area',name:'35-65th Quartile',data:chartData.quartileData.p65,enableMouseTracking:false,showInLegend:false,color:'rgba('+this.darkerQuartileShade+', 1)',fillOpacity:1.0},{type:'area',name:'5-35th Quartile',data:chartData.quartileData.p35,enableMouseTracking:false,showInLegend:false,color:'rgba('+this.lighterQuartileShade+', 1)',fillOpacity:1.0},{type:'area',data:chartData.quartileData.p5,enableMouseTracking:false,showInLegend:false,color:'rgba(255, 255, 255, 1)',fillOpacity:1.0},{type:'line',name:'Target Value',showInLegend:(chartData.targetValue.show==true)?true:false,data:(chartData.targetValue.show==true)?[[0,chartData.targetValue.value],[chartData.duration-1,chartData.targetValue.value]]:null,color:(chartData.targetValue.isGood==true)?'rgba(100, 255, 100, 1)':'rgba(255, 100, 100, 1)',marker:{enabled:false},enableMouseTracking:false},{type:'line',name:'Group Average',data:chartData.groupAverage,color:'rgba(150,150,150,1)'},{type:'line',name:'Group Average (excluding worst 5% of farms)',data:chartData.groupPercentileAverage,color:'rgba(100,100,100,1)'},{type:'line',name:'My Farm',data:chartData.farmData,color:'rgba(0,0,0,1)'}],tooltip:{backgroundColor:'rgba(255,255,255,1.00)',formatter:function(){if(this.series.name=='My Farm'){return'In '+globalChartData.xAxisLabels[this.point.x]+'<br/>You recorded: '+this.y;}else{return'In '+globalChartData.xAxisLabels[this.point.x]+'<br/>'+globalChartData.numDataPoints[this.point.x]+' farms recorded an<br/>average of '+this.y;}}}});}});var NumericInputFilter=new Class({Implements:[Options,Events],options:{allowDecimalClass:'decimal'},initialize:function(selector,options){this.setOptions(options);var self=this;this.fire=function(e){self.fireEvent(e.type)[e.type].apply(self,[e,this]);};this.attach(selector);},attach:function(selector){$$(selector).addEvents({keypress:this.fire});return this;},detach:function(selector){$$(selector).removeEvents({keypress:this.fire});return this;},keypress:function(evt,element){evt=evt||window.event;var keyCode=evt.event.charCode!=undefined?evt.event.charCode:evt.event.keyCode;var key=evt.key.toLowerCase();var allowedDecimalPlaces=element.get('data-decimalPlaces')||2;if((evt.control||evt.meta)&&(key=='a'||key=='c')){return;}else if("0123456789".lastIndexOf(key)!=-1){if(element.value.search(/\./)!=-1){var indexOfDecimal=element.value.lastIndexOf('.');var len=element.value.length;if(element.selectionStart!=element.selectionEnd||element.selectionEnd<=indexOfDecimal){return;}else if(len-indexOfDecimal<=allowedDecimalPlaces){return;}}else{return;}}else if(key=='.'||(keyCode==46)){if(allowedDecimalPlaces>0){if(element.value==""||(element.selectionEnd-element.selectionStart)==element.value.length){element.value="0.";evt.returnValue=false;evt.preventDefault();return;}else if(element.value.search(/\./)==-1){return;}}}else if(['tab','backspace','delete','up','down','left','right'].contains(key)&&evt.event.isChar==false&&!(keyCode==37||keyCode==38||keyCode==39||keyCode==40)){return;}
evt.returnValue=false;evt.preventDefault();}});var GridNavigator=new Class({Implements:[Options,Events],options:{},initialize:function(selector,options){this.setOptions(options);var self=this;this.fire=function(e){self.fireEvent(e.type)[e.type].apply(self,[e,this]);};this.attach(selector);},attach:function(selector){$$(selector).addEvents({keyup:this.fire});return this;},keyup:function(evt,element){var key=evt.key.toLowerCase()
var parent=evt.target.getParent();var colIndex=parent.cellIndex;var moveTo=null;if(key=='enter'||key=='down'){moveTo=parent.getParent();moveTo=moveTo.getNext('tr.editable');if(moveTo!=null){moveTo=moveTo.getChildren()[colIndex];}}else if(key=='up'){moveTo=parent.getParent();moveTo=moveTo.getPrevious('tr.editable');if(moveTo!=null){moveTo=moveTo.getChildren()[colIndex];}}else if(evt.shift&&key=='right'){moveTo=parent.getNext();}else if(evt.shift&&key=='left'){moveTo=parent.getPrevious();}
if(moveTo!=null){var children=moveTo.getChildren('input')
if(children.length>0){children[0].focus();}}}});SubmitSaveChangesForm=function(event){event.stop();var form=event.target;DMAlert.confirm('<h1>Save Changes?</h1><p>Are you sure you want to save your changes?</p>',{onComplete:function(returnvalue){if(returnvalue){saveChangesRequest=new Request.JSON({url:form.get('action'),data:form.toQueryStringIncludingDisabled(),onSend:function(){form.getElement('.submitBtn').set('disabled',true);},onSuccess:function(result,resultText){if(result.status=="ok"){DMAlert.success('<h1>Success</h1><p>'+result.msg+'</p>');form.getElements('input[type=password]').each(function(element,i){element.set('value','');},this);}else if(result.status=='validationfail'){var errors=result.errors;var errorItems='';for(var fieldname in errors){var field=form.getElement('label[for='+fieldname+']')!=null?form.getElement('label[for='+fieldname+']').get('text'):fieldname;errorItems+='<strong>'+field+'</strong>: '+errors[fieldname]+'<br />';}
DMAlert.error('<h1>Error</h1><p>'+result.msg+'</p><p>'+errorItems+'</p>');}else{DMAlert.error('<h1>Error</h1><p>'+result.msg+'</p>');}
form.getElement('.submitBtn').set('disabled',false);},onFailure:function(xhr){DMAlert.error('<h1>Error</h1><p>An error occured while trying to save changes. Please check your internet connection is still active.</p>');form.getElement('.submitBtn').set('disabled',false);}}).post();}}});}
window.addEvent("domready",function(){var tips=new Tips($$('.tooltip'),{className:'informationTip',title:null,text:'title'});$$('a.printpage').addEvent('click',function(evt){new Event(evt).preventDefault();window.print();});});


