

//MooTools, <http://mootools.net>, My Object Oriented (JavaScript) Tools. Copyright (c) 2006-2009 Valerio Proietti, <http://mad4milk.net>, MIT Style License.

var MooTools={version:"1.2.5",build:"008d8f0f2fcc2044e54fdd3635341aaab274e757"};var Native=function(l){l=l||{};var a=l.name;var j=l.legacy;var b=l.protect;
var c=l.implement;var i=l.generics;var g=l.initialize;var h=l.afterImplement||function(){};var d=g||j;i=i!==false;d.constructor=Native;d.$family={name:"native"};
if(j&&g){d.prototype=j.prototype;}d.prototype.constructor=d;if(a){var f=a.toLowerCase();d.prototype.$family={name:f};Native.typize(d,f);}var k=function(o,m,p,n){if(!b||n||!o.prototype[m]){o.prototype[m]=p;
}if(i){Native.genericize(o,m,b);}h.call(o,m,p);return o;};d.alias=function(o,m,q){if(typeof o=="string"){var p=this.prototype[o];if((o=p)){return k(this,m,o,q);
}}for(var n in o){this.alias(n,o[n],m);}return this;};d.implement=function(n,m,q){if(typeof n=="string"){return k(this,n,m,q);}for(var o in n){k(this,o,n[o],m);
}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 j in a){new Native({name:j,initialize:a[j],protect:true});
}var d={"boolean":Boolean,"native":Native,object:Object};for(var c in d){Native.typize(d[c],c);}var h={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 f in h){for(var b=h[f].length;b--;){Native.genericize(a[f],h[f][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(f){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 h=b[c],g=f[c];f[c]=(g&&$type(h)=="object"&&$type(g)=="object")?$mixin(g,h):$unlink(h);}}return f;}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 f in c){b[f]=$unlink(c[f]);
}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,f){var c=[];for(var b=0,a=this.length;b<a;b++){if(d.call(f,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,f){var c=[];
for(var b=0,a=this.length;b<a;b++){c[b]=d.call(f,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 f=0,b=this.length;f<b;f++){for(var d in c){if(c[d](this[f])){a[d]=this[f];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("");}});try{delete Function.prototype.bind;}catch(e){}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 f=function(){return a.apply(b.bind||null,c);};if(b.delay){return setTimeout(f,b.delay);}if(b.periodical){return setInterval(f,b.periodical);
}if(b.attempt){return $try(f);}return f();};},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(f,d){a.set(d,b.call(c,f,d,this));
},this);return a;},filter:function(b,c){var a=new Hash;Hash.each(this,function(f,d){if(b.call(c,f,d,this)){a.set(d,f);}},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(g,f){if(a){f=a+"["+f+"]";}var d;switch($type(g)){case"object":d=Hash.toQueryString(g,f);break;case"array":var c={};g.each(function(j,h){c[h]=j;
});d=Hash.toQueryString(c,f);break;default:d=f+"="+encodeURIComponent(g);}if(g!=undefined){b.push(d);}});return b.join("&");}});Hash.alias({keyOf:"indexOf",hasValue:"contains"});
var Event=new Native({name:"Event",initialize:function(a,g){g=g||window;var l=g.document;a=a||g.event;if(a.$extended){return a;}this.$extended=true;var k=a.type;
var h=a.target||a.srcElement;while(h&&h.nodeType==3){h=h.parentNode;}if(k.test(/key/)){var b=a.which||a.keyCode;var n=Event.Keys.keyOf(b);if(k=="keydown"){var d=b-111;
if(d>0&&d<13){n="f"+d;}}n=n||String.fromCharCode(b).toLowerCase();}else{if(k.match(/(click|mouse|menu)/i)){l=(!l.compatMode||l.compatMode=="CSS1Compat")?l.html:l.body;
var j={x:a.pageX||a.clientX+l.scrollLeft,y:a.pageY||a.clientY+l.scrollTop};var c={x:(a.pageX)?a.pageX-g.pageXOffset:a.clientX,y:(a.pageY)?a.pageY-g.pageYOffset:a.clientY};
if(k.match(/DOMMouseScroll|mousewheel/)){var i=(a.wheelDelta)?a.wheelDelta/120:-(a.detail||0)/3;}var f=(a.which==3)||(a.button==2);var m=null;if(k.match(/over|out/)){switch(k){case"mouseover":m=a.relatedTarget||a.fromElement;
break;case"mouseout":m=a.relatedTarget||a.toElement;}if(!(function(){while(m&&m.nodeType==3){m=m.parentNode;}return true;}).create({attempt:Browser.Engine.gecko})()){m=false;
}}}}return $extend(this,{event:a,type:k,page:j,client:c,rightClick:f,wheel:i,relatedTarget:m,target:h,code:b,key:n,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 f in a){Object.reset(a,f);
}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 f=this.caller,g=this._current;this.caller=g;this._current=arguments.callee;var d=c.apply(this,arguments);this._current=g;this.caller=f;return d;}.extend({_owner:a,_origin:c,_name:b});
}});Class.implement({implement:function(a,d){if($type(a)=="object"){for(var f in a){this.implement(f,a[f]);}return this;}var g=Class.Mutators[a];if(g){d=g.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=[],h=true;for(var f=0,d=this.length;f<d;f++){var g=this[f][a].apply(this[f],arguments);c.push(g);
if(h){h=($type(g)=="element");}}return(h)?new Elements(c):c;});}});Element.Prototype={$family:{name:"element"}};Element.Constructors=new Hash;var IFrame=new Native({name:"IFrame",generics:false,initialize:function(){var g=Array.link(arguments,{properties:Object.type,iframe:$defined});
var d=g.properties||{};var c=document.id(g.iframe);var f=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 h=$try(function(){return c.contentWindow.location.host;});if(!h||h==window.location.host){var i=new Window(c.contentWindow);
new Document(c.contentWindow.document);$extend(i.Element.prototype,Element.Prototype);}f.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(g,b){b=$extend({ddup:true,cash:true},b);
g=g||[];if(b.ddup||b.cash){var h={},f=[];for(var c=0,a=g.length;c<a;c++){var d=document.id(g[c],!b.cash);if(b.ddup){if(h[d.uid]){continue;}h[d.uid]=true;
}if(d){f.push(d);}}g=f;}return(b.cash)?$extend(g,this):g;}});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));}});(function(){var d;try{var a=document.createElement("<input name=x>");d=(a.name=="x");}catch(b){}var c=function(f){return(""+f).replace(/&/g,"&amp;").replace(/"/g,"&quot;");
};Document.implement({newElement:function(f,g){if(g&&g.checked!=null){g.defaultChecked=g.checked;}if(d&&g){f="<"+f;if(g.name){f+=' name="'+c(g.name)+'"';
}if(g.type){f+=' type="'+c(g.type)+'"';}f+=">";delete g.name;delete g.type;}return this.id(this.createElement(f)).set(g);},newTextNode:function(f){return this.createTextNode(f);
},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var f={string:function(i,h,g){i=g.getElementById(i);return(i)?f.element(i,h):null;
},element:function(g,j){$uid(g);if(!j&&!g.$family&&!(/^object|embed$/i).test(g.tagName)){var h=Element.Prototype;for(var i in h){g[i]=h[i];}}return g;},object:function(h,i,g){if(h.toElement){return f.element(h.toElement(g),i);
}return null;}};f.textnode=f.whitespace=f.window=f.document=$arguments(0);return function(h,j,i){if(h&&h.$family&&h.uid){return h;}var g=$type(h);return(f[g])?f[g](h,j,i||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 g=[];var c=Array.flatten(arguments);for(var d=0,b=c.length;d<b;d++){var f=c[d];switch($type(f)){case"element":g.push(f);break;case"string":g.extend(this.document.getElements(f,true));
}}return new Elements(g);},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(f){var g=this.getElementsByTagName(f.trim());(b)?c.extend(g):c=g;
},this);return new Elements(c,{ddup:b,cash:!d});}});(function(){var i={},g={};var j={input:"checked",option:"selected",textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?"innerHTML":"value"};
var c=function(m){return(g[m]||(g[m]={}));};var h=function(o,m){if(!o){return;}var n=o.uid;if(m!==true){m=false;}if(Browser.Engine.trident){if(o.clearAttributes){var r=m&&o.cloneNode(false);
o.clearAttributes();if(r){o.mergeAttributes(r);}}else{if(o.removeEvents){o.removeEvents();}}if((/object/i).test(o.tagName)){for(var q in o){if(typeof o[q]=="function"){o[q]=$empty;
}}Element.dispose(o);}}if(!n){return;}i[n]=g[n]=null;};var d=function(){Hash.each(i,h);if(Browser.Engine.trident){$A(document.getElementsByTagName("object")).each(h);
}if(window.CollectGarbage){CollectGarbage();}i=g=null;};var k=function(o,m,t,n,q,s){var p=o[t||m];var r=[];while(p){if(p.nodeType==1&&(!n||Element.match(p,n))){if(!q){return document.id(p,s);
}r.push(p);}p=p[m];}return(q)?new Elements(r,{ddup:false,cash:!s}):null;};var f={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 l=["value","type","defaultValue","accessKey","cellPadding","cellSpacing","colSpan","frameBorder","maxLength","readOnly","rowSpan","tabIndex","useMap"];
b=b.associate(b);Hash.extend(f,b);Hash.extend(f,l.associate(l.map(String.toLowerCase)));var a={before:function(n,m){if(m.parentNode){m.parentNode.insertBefore(n,m);
}},after:function(n,m){if(!m.parentNode){return;}var o=m.nextSibling;(o)?m.parentNode.insertBefore(n,o):m.parentNode.appendChild(n);},bottom:function(n,m){m.appendChild(n);
},top:function(n,m){var o=m.firstChild;(o)?m.insertBefore(n,o):m.appendChild(n);}};a.inside=a.bottom;Hash.each(a,function(m,n){n=n.capitalize();Element.implement("inject"+n,function(o){m(this,document.id(o,true));
return this;});Element.implement("grab"+n,function(o){m(document.id(o,true),this);return this;});});Element.implement({set:function(q,n){switch($type(q)){case"object":for(var o in q){this.set(o,q[o]);
}break;case"string":var m=Element.Properties.get(q);(m&&m.set)?m.set.apply(this,Array.slice(arguments,1)):this.setProperty(q,n);}return this;},get:function(n){var m=Element.Properties.get(n);
return(m&&m.get)?m.get.apply(this,Array.slice(arguments,1)):this.getProperty(n);},erase:function(n){var m=Element.Properties.get(n);(m&&m.erase)?m.erase.apply(this):this.removeProperty(n);
return this;},setProperty:function(n,o){var m=f[n];if(o==undefined){return this.removeProperty(n);}if(m&&b[n]){o=!!o;}(m)?this[m]=o:this.setAttribute(n,""+o);
return this;},setProperties:function(m){for(var n in m){this.setProperty(n,m[n]);}return this;},getProperty:function(n){var m=f[n];var o=(m)?this[m]:this.getAttribute(n,2);
return(b[n])?!!o:(m)?o:o||null;},getProperties:function(){var m=$A(arguments);return m.map(this.getProperty,this).associate(m);},removeProperty:function(n){var m=f[n];
(m)?this[m]=(m&&b[n])?false:"":this.removeAttribute(n);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;
},hasClass:function(m){return this.className.contains(m," ");},addClass:function(m){if(!this.hasClass(m)){this.className=(this.className+" "+m).clean();
}return this;},removeClass:function(m){this.className=this.className.replace(new RegExp("(^|\\s)"+m+"(?:\\s|$)"),"$1");return this;},toggleClass:function(m){return this.hasClass(m)?this.removeClass(m):this.addClass(m);
},adopt:function(){Array.flatten(arguments).each(function(m){m=document.id(m,true);if(m){this.appendChild(m);}},this);return this;},appendText:function(n,m){return this.grab(this.getDocument().newTextNode(n),m);
},grab:function(n,m){a[m||"bottom"](document.id(n,true),this);return this;},inject:function(n,m){a[m||"bottom"](this,document.id(n,true));return this;},replaces:function(m){m=document.id(m,true);
m.parentNode.replaceChild(this,m);return this;},wraps:function(n,m){n=document.id(n,true);return this.replaces(n).grab(n,m);},getPrevious:function(m,n){return k(this,"previousSibling",null,m,false,n);
},getAllPrevious:function(m,n){return k(this,"previousSibling",null,m,true,n);},getNext:function(m,n){return k(this,"nextSibling",null,m,false,n);},getAllNext:function(m,n){return k(this,"nextSibling",null,m,true,n);
},getFirst:function(m,n){return k(this,"nextSibling","firstChild",m,false,n);},getLast:function(m,n){return k(this,"previousSibling","lastChild",m,false,n);
},getParent:function(m,n){return k(this,"parentNode",null,m,false,n);},getParents:function(m,n){return k(this,"parentNode",null,m,true,n);},getSiblings:function(m,n){return this.getParent().getChildren(m,n).erase(this);
},getChildren:function(m,n){return k(this,"nextSibling","firstChild",m,true,n);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;
},getElementById:function(p,o){var n=this.ownerDocument.getElementById(p);if(!n){return null;}for(var m=n.parentNode;m!=this;m=m.parentNode){if(!m){return null;
}}return document.id(n,o);},getSelected:function(){return new Elements($A(this.options).filter(function(m){return m.selected;}));},getComputedStyle:function(n){if(this.currentStyle){return this.currentStyle[n.camelCase()];
}var m=this.getDocument().defaultView.getComputedStyle(this,null);return(m)?m.getPropertyValue([n.hyphenate()]):null;},toQueryString:function(){var m=[];
this.getElements("input, select, textarea",true).each(function(n){if(!n.name||n.disabled||n.type=="submit"||n.type=="reset"||n.type=="file"){return;}var o=(n.tagName.toLowerCase()=="select")?Element.getSelected(n).map(function(p){return p.value;
}):((n.type=="radio"||n.type=="checkbox")&&!n.checked)?null:n.value;$splat(o).each(function(p){if(typeof p!="undefined"){m.push(n.name+"="+encodeURIComponent(p));
}});});return m.join("&");},clone:function(p,m){p=p!==false;var s=this.cloneNode(p);var o=function(w,v){if(!m){w.removeAttribute("id");}if(Browser.Engine.trident){w.clearAttributes();
w.mergeAttributes(v);w.removeAttribute("uid");if(w.options){var x=w.options,t=v.options;for(var u=x.length;u--;){x[u].selected=t[u].selected;}}}var y=j[v.tagName.toLowerCase()];
if(y&&v[y]){w[y]=v[y];}};if(p){var q=s.getElementsByTagName("*"),r=this.getElementsByTagName("*");for(var n=q.length;n--;){o(q[n],r[n]);}}o(s,this);return document.id(s);
},destroy:function(){Element.empty(this);Element.dispose(this);h(this,true);return null;},empty:function(){$A(this.childNodes).each(function(m){Element.destroy(m);
});return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},hasChild:function(m){m=document.id(m,true);if(!m){return false;
}if(Browser.Engine.webkit&&Browser.Engine.version<420){return $A(this.getElementsByTagName(m.tagName)).contains(m);}return(this.contains)?(this!=m&&this.contains(m)):!!(this.compareDocumentPosition(m)&16);
},match:function(m){return(!m||(m==this)||(Element.get(this,"tag")==m));}});Native.implement([Element,Window,Document],{addListener:function(p,o){if(p=="unload"){var m=o,n=this;
o=function(){n.removeListener("unload",o);m();};}else{i[this.uid]=this;}if(this.addEventListener){this.addEventListener(p,o,false);}else{this.attachEvent("on"+p,o);
}return this;},removeListener:function(n,m){if(this.removeEventListener){this.removeEventListener(n,m,false);}else{this.detachEvent("on"+n,m);}return this;
},retrieve:function(n,m){var p=c(this.uid),o=p[n];if(m!=undefined&&o==undefined){o=p[n]=m;}return $pick(o);},store:function(n,m){var o=c(this.uid);o[n]=m;
return this;},eliminate:function(m){var n=c(this.uid);delete n[m];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 f=Array.flatten(arguments).join("");var g=Browser.Engine.trident&&a[this.get("tag")];if(g){var h=c;h.innerHTML=g[1]+f+g[2];
for(var d=g[0];d--;){h=h.firstChild;}this.empty().adopt(h.childNodes);}else{this.innerHTML=f;}}};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(f,h){var i=this.retrieve("events",{});i[f]=i[f]||{keys:[],values:[]};if(i[f].keys.contains(h)){return this;
}i[f].keys.push(h);var g=f,a=Element.Events.get(f),c=h,j=this;if(a){if(a.onAdd){a.onAdd.call(this,h);}if(a.condition){c=function(k){if(a.condition.call(this,k)){return h.call(this,k);
}return true;};}g=a.base||g;}var d=function(){return h.call(j);};var b=Element.NativeEvents[g];if(b){if(b==2){d=function(k){k=new Event(k,j.getWindow());
if(c.call(j,k)===false){k.stop();}};}this.addListener(g,d);}i[f].values.push(d);return this;},removeEvent:function(c,b){var a=this.retrieve("events");if(!a||!a[c]){return this;
}var g=a[c].keys.indexOf(b);if(g==-1){return this;}a[c].keys.splice(g,1);var f=a[c].values.splice(g,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,f):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(f){f.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(f){this.addEvent(a,f);},this);}}return this;}});try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent;
}}catch(e){}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(f,d){if(!c[d]){return"";}return($type(f)=="number")?c[d].replace("@",Math.round(f)):f;
}).join(" ");}else{if(a==String(Number(a))){a=Math.round(a);}}this.style[b]=a;return this;},getStyle:function(h){switch(h){case"opacity":return this.get("opacity");
case"float":h=(Browser.Engine.trident)?"styleFloat":"cssFloat";}h=h.camelCase();var a=this.style[h];if(!$chk(a)){a=[];for(var g in Element.ShortStyles){if(h!=g){continue;
}for(var f in Element.ShortStyles[g]){a.push(this.getStyle(f));}return a.join(" ");}a=this.getComputedStyle(h);}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(h.test(/^(height|width)$/)){var b=(h=="width")?["left","right"]:["top","bottom"],d=0;
b.each(function(i){d+=this.getStyle("border-"+i+"-width").toInt()+this.getStyle("padding-"+i).toInt();},this);return this["offset"+h.capitalize()]-d+"px";
}if((Browser.Engine.presto)&&String(a).test("px")){return a;}if(h.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(h){var g=Element.ShortStyles;
var b=Element.Styles;["margin","padding"].each(function(i){var j=i+h;g[i][j]=b[j]="@px";});var f="border"+h;g.border[f]=b[f]="@px @ rgb(@, @, @)";var d=f+"Width",a=f+"Style",c=f+"Color";
g[f]={};g.borderWidth[d]=g[f][d]=b[d]="@px";g.borderStyle[a]=g[f][a]=b[a]="@";g.borderColor[c]=g[f][c]=b[c]="rgb(@, @, @)";});(function(){Element.implement({scrollTo:function(i,j){if(b(this)){this.getWindow().scrollTo(i,j);
}else{this.scrollLeft=i;this.scrollTop=j;}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 j=this,i={x:0,y:0};while(j&&!b(j)){i.x+=j.scrollLeft;i.y+=j.scrollTop;j=j.parentNode;
}return i;},getOffsetParent:function(){var i=this;if(b(i)){return null;}if(!Browser.Engine.trident){return i.offsetParent;}while((i=i.parentNode)&&!b(i)){if(d(i,"position")!="static"){return i;
}}return null;},getOffsets:function(){if(this.getBoundingClientRect){var k=this.getBoundingClientRect(),n=document.id(this.getDocument().documentElement),q=n.getScroll(),l=this.getScrolls(),j=this.getScroll(),i=(d(this,"position")=="fixed");
return{x:k.left.toInt()+l.x-j.x+((i)?0:q.x)-n.clientLeft,y:k.top.toInt()+l.y-j.y+((i)?0:q.y)-n.clientTop};}var m=this,o={x:0,y:0};if(b(this)){return o;
}while(m&&!b(m)){o.x+=m.offsetLeft;o.y+=m.offsetTop;if(Browser.Engine.gecko){if(!g(m)){o.x+=c(m);o.y+=h(m);}var p=m.parentNode;if(p&&d(p,"overflow")!="visible"){o.x+=c(p);
o.y+=h(p);}}else{if(m!=this&&Browser.Engine.webkit){o.x+=c(m);o.y+=h(m);}}m=m.offsetParent;}if(Browser.Engine.gecko&&!g(this)){o.x-=c(this);o.y-=h(this);
}return o;},getPosition:function(l){if(b(this)){return{x:0,y:0};}var m=this.getOffsets(),j=this.getScrolls();var i={x:m.x-j.x,y:m.y-j.y};var k=(l&&(l=document.id(l)))?l.getPosition():{x:0,y:0};
return{x:i.x-k.x,y:i.y-k.y};},getCoordinates:function(k){if(b(this)){return this.getWindow().getCoordinates();}var i=this.getPosition(k),j=this.getSize();
var l={left:i.x,top:i.y,width:j.x,height:j.y};l.right=l.left+l.width;l.bottom=l.top+l.height;return l;},computePosition:function(i){return{left:i.x-f(this,"margin-left"),top:i.y-f(this,"margin-top")};
},setPosition:function(i){return this.setStyles(this.computePosition(i));}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var j=this.getWindow();
return{x:j.innerWidth,y:j.innerHeight};}var i=a(this);return{x:i.clientWidth,y:i.clientHeight};},getScroll:function(){var j=this.getWindow(),i=a(this);
return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop};},getScrollSize:function(){var j=a(this),i=this.getSize();return{x:Math.max(j.scrollWidth,i.x),y:Math.max(j.scrollHeight,i.y)};
},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var i=this.getSize();return{top:0,left:0,bottom:i.y,right:i.x,height:i.y,width:i.x};
}});var d=Element.getComputedStyle;function f(i,j){return d(i,j).toInt()||0;}function g(i){return d(i,"-moz-box-sizing")=="border-box";}function h(i){return f(i,"border-top-width");
}function c(i){return f(i,"border-left-width");}function b(i){return(/^(?:body|html)$/i).test(i.tagName);}function a(i){var j=i.getDocument();return(!j.compatMode||j.compatMode=="CSS1Compat")?j.html:j.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(j,h){j=j.split(",");var c,f={};for(var d=0,b=j.length;d<b;d++){var a=j[d],g=Selectors.Utils.search(this,a,f);
if(d!=0&&g.item){g=$A(g);}c=(d==0)?g:(c.item)?$A(c).concat(g):c.concat(g);}return new Elements(c,{ddup:(j.length>1),cash:!h});}});Element.implement({match:function(b){if(!b||(b==this)){return true;
}var d=Selectors.Utils.parseTagAndID(b);var a=d[0],f=d[1];if(!Selectors.Filters.byID(this,f)||!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(i){if(Selectors.Cache.nth[i]){return Selectors.Cache.nth[i];
}var f=i.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!f){return false;}var h=parseInt(f[1],10);var d=(h||h===0)?h:1;var g=f[2]||false;var c=parseInt(f[3],10)||0;
if(d!=0){c--;while(c<1){c+=d;}while(c>=d){c-=d;}}else{d=c;g="index";}switch(g){case"n":f={a:d,b:c,special:"n"};break;case"odd":f={a:2,b:0,special:"n"};
break;case"even":f={a:2,b:1,special:"n"};break;case"first":f={a:0,special:"index"};break;case"last":f={special:"last-child"};break;case"only":f={special:"only-child"};
break;default:f={a:(d-1),special:"index"};}return Selectors.Cache.nth[i]=f;},parseSelector:function(f){if(Selectors.Cache.parsed[f]){return Selectors.Cache.parsed[f];
}var d,i={classes:[],pseudos:[],attributes:[]};while((d=Selectors.RegExps.combined.exec(f))){var j=d[1],h=d[2],g=d[3],b=d[5],c=d[6],k=d[7];if(j){i.classes.push(j);
}else{if(c){var a=Selectors.Pseudo.get(c);if(a){i.pseudos.push({parser:a,argument:k});}else{i.attributes.push({name:c,operator:"=",value:k});}}else{if(h){i.attributes.push({name:h,operator:g,value:b});
}}}}if(!i.classes.length){delete i.classes;}if(!i.attributes.length){delete i.attributes;}if(!i.pseudos.length){delete i.pseudos;}if(!i.classes&&!i.attributes&&!i.pseudos){i=null;
}return Selectors.Cache.parsed[f]=i;},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(g,c,f){var d;if(c.classes){for(d=c.classes.length;d--;d){var h=c.classes[d];if(!Selectors.Filters.byClass(g,h)){return false;}}}if(c.attributes){for(d=c.attributes.length;
d--;d){var b=c.attributes[d];if(!Selectors.Filters.byAttribute(g,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(g,a.parser,a.argument,f)){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(p,o,u){var b=[];var c=o.trim().replace(Selectors.RegExps.splitter,function(k,j,i){b.push(j);
return":)"+i;}).split(":)");var q,f,B;for(var A=0,w=c.length;A<w;A++){var z=c[A];if(A==0&&Selectors.RegExps.quick.test(z)){q=p.getElementsByTagName(z);
continue;}var a=b[A-1];var r=Selectors.Utils.parseTagAndID(z);var C=r[0],s=r[1];if(A==0){q=Selectors.Utils.getByTagAndID(p,C,s);}else{var d={},h=[];for(var y=0,x=q.length;
y<x;y++){h=Selectors.Getters[a](h,q[y],C,s,d);}q=h;}var g=Selectors.Utils.parseSelector(z);if(g){f=[];for(var v=0,t=q.length;v<t;v++){B=q[v];if(Selectors.Utils.filter(B,g,u)){f.push(B);
}}q=f;}}return q;}};Selectors.Getters={" ":function(j,h,k,a,f){var d=Selectors.Utils.getByTagAndID(h,k,a);for(var c=0,b=d.length;c<b;c++){var g=d[c];if(Selectors.Utils.chk(g,f)){j.push(g);
}}return j;},">":function(j,h,k,a,g){var c=Selectors.Utils.getByTagAndID(h,k,a);for(var f=0,d=c.length;f<d;f++){var b=c[f];if(b.parentNode==h&&Selectors.Utils.chk(b,g)){j.push(b);
}}return j;},"+":function(c,b,a,f,d){while((b=b.nextSibling)){if(b.nodeType==1){if(Selectors.Utils.chk(b,d)&&Selectors.Filters.byTag(b,a)&&Selectors.Filters.byID(b,f)){c.push(b);
}break;}}return c;},"~":function(c,b,a,f,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,f)){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,f){var a=Element.prototype.getProperty.call(c,d);
if(!a){return(b=="!=");}if(!b||f==undefined){return true;}switch(b){case"=":return(a==f);case"*=":return(a.contains(f));case"^=":return(a.substr(0,f.length)==f);
case"$=":return(a.substr(a.length-f.length)==f);case"!=":return(a!=f);case"~=":return a.contains(f," ");case"|=":return a.contains(f,"-");}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(h,f){h=(h==undefined)?"n":h;var c=Selectors.Utils.parseNthArgument(h);
if(c.special!="n"){return Selectors.Pseudo[c.special].call(this,c.a,f);}var g=0;f.positions=f.positions||{};var d=$uid(this);if(!f.positions[d]){var b=this;
while((b=b.previousSibling)){if(b.nodeType!=1){continue;}g++;var a=f.positions[$uid(b)];if(a!=undefined){g=a+g;break;}}f.positions[d]=g;}return(f.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(f,d){var c=JSON.encode(f);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+")");}});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(m,n){this.instance="Swiff_"+$time();this.setOptions(n);n=this.options;var b=this.id=n.id||this.instance;var a=document.id(n.container);
Swiff.CallBacks[this.instance]={};var f=n.params,h=n.vars,g=n.callBacks;var i=$extend({height:n.height,width:n.width},n.properties);var l=this;for(var d in g){Swiff.CallBacks[this.instance][d]=(function(o){return function(){return o.apply(l.object,arguments);
};})(g[d]);h[d]="Swiff.CallBacks."+this.instance+"."+d;}f.flashVars=Hash.toQueryString(h);if(Browser.Engine.trident){i.classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
f.movie=m;}else{i.type="application/x-shockwave-flash";i.data=m;}var k='<object id="'+b+'"';for(var j in i){k+=" "+j+'="'+i[j]+'"';}k+=">";for(var c in f){if(f[c]){k+='<param name="'+c+'" value="'+f[c]+'" />';
}}k+="</object>";this.object=((a)?a.empty():new Element("div")).set("html",k).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,f,b){b=$splat(b);var c=b[1];if(!$chk(c)){b[1]=b[0];
b[0]=d.getStyle(f);}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(g,f){if(b){return;}var d=g.parse(c);if($chk(d)){b={value:d,parser:g};}});
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(f){a.push({value:d[f].parser.compute(d[f].value,c[f].value,b),parser:d[f].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(f,d){var c=f.href;
if(c&&c.contains("://")&&!c.contains(document.domain)){return;}var g=f.rules||f.cssRules;Array.each(g,function(k,h){if(!k.style){return;}var j=(k.selectorText)?k.selectorText.replace(/^\w+/,function(i){return i.toLowerCase();
}):null;if(!j||!j.test("^"+a+"$")){return;}Element.Styles.each(function(l,i){if(!k.style[i]||Element.ShortStyles[i]){return;}l=String(k.style[i]);b[i]=(l.test(/^rgb/))?l.rgbToHex():l;
});});});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(f,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,f,d){if(!this.check(c,f,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 f=this.get("tween"),d="opacity",a;
c=$pick(c,"toggle");switch(c){case"in":f.start(d,1);break;case"out":f.start(d,0);break;case"show":f.set(d,1);break;case"hide":f.set(d,0);break;case"toggle":var b=this.retrieve("fade:flag",this.get("opacity")==1);
f.start(d,(b)?0:1);this.store("fade:flag",!b);a=true;break;default:f.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(f,d,c){var a={};
for(var b in f){a[b]=this.parent(f[b],d[b],c);}return a;},start:function(b){if(!this.check(b)){return this;}if(typeof b=="string"){b=this.search(b);}var f={},d={};
for(var c in b){var a=this.prepare(this.element,c,b[c]);f[c]=a.from;d[c]=a.to;}return this.parent(f,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(g){var f;for(var d=0,c=1;1;d+=c,c/=2){if(g>=(7-4*d)/11){f=c*c-Math.pow((11-6*d-11*g)/4,2);
break;}}return f;},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(l){if(!this.check(l)){return this;
}this.running=true;var j=$type(l);if(j=="string"||j=="element"){l={data:l};}var d=this.options;l=$extend({data:d.data,url:d.url,method:d.method},l);var h=l.data,b=String(l.url),a=l.method.toLowerCase();
switch($type(h)){case"element":h=document.id(h).toQueryString();break;case"object":case"hash":h=Hash.toQueryString(h);}if(this.options.format){var k="format="+this.options.format;
h=(h)?k+"&"+h:k;}if(this.options.emulation&&!["get","post"].contains(a)){var i="_method="+a;h=(h)?i+"&"+h:i;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 g="noCache="+new Date().getTime();h=(h)?g+"&"+h:g;
}var f=b.lastIndexOf("/");if(f>-1&&(f=b.indexOf("#"))>-1){b=b.substr(0,f);}if(h&&a=="get"){b=b+(b.contains("?")?"&":"?")+h;h=null;}this.xhr.open(a.toUpperCase(),b,this.options.async);
this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(n,m){try{this.xhr.setRequestHeader(m,n);}catch(o){this.fireEvent("exception",[m,n]);
}},this);this.fireEvent("request");this.xhr.send(h);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>",h;if(Browser.Engine.trident){h=new ActiveXObject("Microsoft.XMLDOM");
h.async=false;h.loadXML(d);}else{h=new DOMParser().parseFromString(d,"text/xml");}d=h.getElementsByTagName("root")[0];if(!d){return null;}for(var g=0,f=d.childNodes.length;
g<f;g++){var j=Element.clone(d.childNodes[g],true,true);if(j){a.grab(j);}}return a;})||a.set("html",c);},success:function(d){var c=this.options,b=this.response;
b.html=d.stripScripts(function(f){b.javascript=f;});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, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.

MooTools.More={version:"1.2.5.1",build:"254884f2b83651bf95260eed5c6cceb838e22d8e"};(function(){var a={language:"en-US",languages:{"en-US":{}},cascades:["en-US"]};
var b;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(c){if(!a.languages[c]){return this;}a.language=c;this.load();this.fireEvent("langChange",c);
return this;},load:function(){var c=this.cascade(this.getCurrentLanguage());b={};$each(c,function(f,d){b[d]=this.lambda(f);},this);},getCurrentLanguage:function(){return a.language;
},addLanguage:function(c){a.languages[c]=a.languages[c]||{};return this;},cascade:function(f){var c=(a.languages[f]||{}).cascades||[];c.combine(a.cascades);
c.erase(f).push(f);var d=c.map(function(g){return a.languages[g];},this);return $merge.apply(this,d);},lambda:function(c){(c||{}).get=function(f,d){return $lambda(c[f]).apply(this,$splat(d));
};return c;},get:function(f,d,c){if(b&&b[f]){return(d?b[f].get(d,c):b[f]);}},set:function(d,f,c){this.addLanguage(d);langData=a.languages[d];if(!langData[f]){langData[f]={};
}$extend(langData[f],c);if(d==this.getCurrentLanguage()){this.load();this.fireEvent("langChange",d);}return this;},list:function(){return Hash.getKeys(a.languages);
}});})();(function(){var c=this;var b=function(){if(c.console&&console.log){try{console.log.apply(console,arguments);}catch(d){console.log(Array.slice(arguments));
}}else{Log.logged.push(arguments);}return this;};var a=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:a,resetLog:function(){this.logged.empty();
return this;},enableLog:function(){this.log=b;this.logged.each(function(d){this.log.apply(this,d);},this);return this.resetLog();},disableLog:function(){this.log=a;
return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();Class.refactor=function(b,a){$each(a,function(f,d){var c=b.prototype[d];
if(c&&(c=c._origin?c._origin:c)&&typeof f=="function"){b.implement(d,function(){var g=this.previous;this.previous=c;var h=f.apply(this,arguments);this.previous=g;
return h;});}else{b.implement(d,f);}});return b;};Class.Mutators.Binds=function(a){return a;};Class.Mutators.initialize=function(a){return function(){$splat(this.Binds).each(function(b){var c=this[b];
if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property);
if(a&&!$defined(this.occluded)){return this.occluded=a;}this.occluded=false;b.store(c||this.property,this);return this.occluded;}});(function(){var j=this.Date;
if(!j.now){j.now=$time;}j.Methods={ms:"Milliseconds",year:"FullYear",min:"Minutes",mo:"Month",sec:"Seconds",hr:"Hours"};["Date","Day","FullYear","Hours","Milliseconds","Minutes","Month","Seconds","Time","TimezoneOffset","Week","Timezone","GMTOffset","DayOfYear","LastMonth","LastDayOfMonth","UTCDate","UTCDay","UTCFullYear","AMPM","Ordinal","UTCHours","UTCMilliseconds","UTCMinutes","UTCMonth","UTCSeconds","UTCMilliseconds"].each(function(q){j.Methods[q.toLowerCase()]=q;
});var d=function(r,q){return new Array(q-String(r).length+1).join("0")+r;};j.implement({set:function(t,r){switch($type(t)){case"object":for(var s in t){this.set(s,t[s]);
}break;case"string":t=t.toLowerCase();var q=j.Methods;if(q[t]){this["set"+q[t]](r);}}return this;},get:function(r){r=r.toLowerCase();var q=j.Methods;if(q[r]){return this["get"+q[r]]();
}return null;},clone:function(){return new j(this.get("time"));},increment:function(q,s){q=q||"day";s=$pick(s,1);switch(q){case"year":return this.increment("month",s*12);
case"month":var r=this.get("date");this.set("date",1).set("mo",this.get("mo")+s);return this.set("date",r.min(this.get("lastdayofmonth")));case"week":return this.increment("day",s*7);
case"day":return this.set("date",this.get("date")+s);}if(!j.units[q]){throw new Error(q+" is not a supported interval");}return this.set("time",this.get("time")+s*j.units[q]());
},decrement:function(q,r){return this.increment(q,-1*$pick(r,1));},isLeapYear:function(){return j.isLeapYear(this.get("year"));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});
},diff:function(r,q){if($type(r)=="string"){r=j.parse(r);}return((r-this)/j.units[q||"day"](3,3)).round();},getLastDayOfMonth:function(){return j.daysInMonth(this.get("mo"),this.get("year"));
},getDayOfYear:function(){return(j.UTC(this.get("year"),this.get("mo"),this.get("date")+1)-j.UTC(this.get("year"),0,1))/j.units.day();},getWeek:function(){return(this.get("dayofyear")/7).ceil();
},getOrdinal:function(q){return j.getMsg("ordinal",q||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 q=this.get("timezoneOffset");return((q>0)?"-":"+")+d((q.abs()/60).floor(),2)+d(q%60,2);},setAMPM:function(q){q=q.toUpperCase();
var r=this.get("hr");if(r>11&&q=="AM"){return this.decrement("hour",12);}else{if(r<12&&q=="PM"){return this.increment("hour",12);}}return this;},getAMPM:function(){return(this.get("hr")<12)?"AM":"PM";
},parse:function(q){this.set("time",j.parse(q));return this;},isValid:function(q){return !isNaN((q||this).valueOf());},format:function(q){if(!this.isValid()){return"invalid date";
}q=q||"%x %X";q=l[q.toLowerCase()]||q;var r=this;return q.replace(/%([a-z%])/gi,function(t,s){switch(s){case"a":return j.getMsg("days")[r.get("day")].substr(0,3);
case"A":return j.getMsg("days")[r.get("day")];case"b":return j.getMsg("months")[r.get("month")].substr(0,3);case"B":return j.getMsg("months")[r.get("month")];
case"c":return r.toString();case"d":return d(r.get("date"),2);case"D":return r.get("date");case"e":return r.get("date");case"H":return d(r.get("hr"),2);
case"I":return((r.get("hr")%12)||12);case"j":return d(r.get("dayofyear"),3);case"m":return d((r.get("mo")+1),2);case"M":return d(r.get("min"),2);case"o":return r.get("ordinal");
case"p":return j.getMsg(r.get("ampm"));case"s":return Math.round(r/1000);case"S":return d(r.get("seconds"),2);case"U":return d(r.get("week"),2);case"w":return r.get("day");
case"x":return r.format(j.getMsg("shortDate"));case"X":return r.format(j.getMsg("shortTime"));case"y":return r.get("year").toString().substr(2);case"Y":return r.get("year");
case"T":return r.get("GMTOffset");case"Z":return r.get("Timezone");case"z":return d(r.get("ms"),3);}return s;});},toISOString:function(){return this.format("iso8601");
}});j.alias("toISOString","toJSON");j.alias("diff","compare");j.alias("format","strftime");var l={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 h=[];var f=j.parse;var o=function(t,v,s){var r=-1;var u=j.getMsg(t+"s");switch($type(v)){case"object":r=u[v.get(t)];break;case"number":r=u[v];if(!r){throw new Error("Invalid "+t+" index: "+v);
}break;case"string":var q=u.filter(function(w){return this.test(w);},new RegExp("^"+v,"i"));if(!q.length){throw new Error("Invalid "+t+" string");}if(q.length>1){throw new Error("Ambiguous "+t);
}r=q[0];}return(s)?u.indexOf(r):r;};j.extend({getMsg:function(r,q){return MooTools.lang.get("Date",r,q);},units:{ms:$lambda(1),second:$lambda(1000),minute:$lambda(60000),hour:$lambda(3600000),day:$lambda(86400000),week:$lambda(608400000),month:function(r,q){var s=new j;
return j.daysInMonth($pick(r,s.get("mo")),$pick(q,s.get("year")))*86400000;},year:function(q){q=q||new j().get("year");return j.isLeapYear(q)?31622400000:31536000000;
}},daysInMonth:function(r,q){return[31,j.isLeapYear(q)?29:28,31,30,31,30,31,31,30,31,30,31][r];},isLeapYear:function(q){return((q%4===0)&&(q%100!==0))||(q%400===0);
},parse:function(s){var r=$type(s);if(r=="number"){return new j(s);}if(r!="string"){return s;}s=s.clean();if(!s.length){return null;}var q;h.some(function(u){var t=u.re.exec(s);
return(t)?(q=u.handler(t)):false;});return q||new j(f(s));},parseDay:function(q,r){return o("day",q,r);},parseMonth:function(r,q){return o("month",r,q);
},parseUTC:function(r){var q=new j(r);var s=j.UTC(q.get("year"),q.get("mo"),q.get("date"),q.get("hr"),q.get("min"),q.get("sec"),q.get("ms"));return new j(s);
},orderIndex:function(q){return j.getMsg("dateOrder").indexOf(q)+1;},defineFormat:function(q,r){l[q]=r;},defineFormats:function(q){for(var r in q){j.defineFormat(r,q[r]);
}},parsePatterns:h,defineParser:function(q){h.push((q.re&&q.handler)?q:m(q));},defineParsers:function(){Array.flatten(arguments).each(j.defineParser);},define2DigitYearStart:function(q){i=q%100;
n=q-i;}});var n=1900;var i=70;var k=function(q){return new RegExp("(?:"+j.getMsg(q).map(function(r){return r.substr(0,3);}).join("|")+")[a-z]*");};var a=function(q){switch(q){case"x":return((j.orderIndex("month")==1)?"%m[-./]%d":"%d[-./]%m")+"([-./]%y)?";
case"X":return"%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%T?";}return null;};var p={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})?/};
p.m=p.I;p.S=p.M;var c;var b=function(q){c=q;p.a=p.A=k("days");p.b=p.B=k("months");h.each(function(s,r){if(s.format){h[r]=m(s.format);}});};var m=function(s){if(!c){return{format:s};
}var q=[];var r=(s.source||s).replace(/%([a-z])/gi,function(u,t){return a(t)||u;}).replace(/\((?!\?)/g,"(?:").replace(/ (?!\?|\*)/g,",? ").replace(/%([a-z%])/gi,function(u,t){var v=p[t];
if(!v){return t;}q.push(t);return"("+v.source+")";}).replace(/\[a-z\]/gi,"[a-z\\u00c0-\\uffff]");return{format:s,re:new RegExp("^"+r+"$","i"),handler:function(w){w=w.slice(1).associate(q);
var t=new j().clearTime(),v=w.y||w.Y;if(v!=null){g.call(t,"y",v);}if("d" in w){g.call(t,"d",1);}if("m" in w||"b" in w||"B" in w){g.call(t,"m",1);}for(var u in w){g.call(t,u,w[u]);
}return t;}};};var g=function(q,r){if(!r){return this;}switch(q){case"a":case"A":return this.set("day",j.parseDay(r,true));case"b":case"B":return this.set("mo",j.parseMonth(r,true));
case"d":return this.set("date",r);case"H":case"I":return this.set("hr",r);case"m":return this.set("mo",r-1);case"M":return this.set("min",r);case"p":return this.set("ampm",r.replace(/\./g,""));
case"S":return this.set("sec",r);case"s":return this.set("ms",("0."+r)*1000);case"w":return this.set("day",r);case"Y":return this.set("year",r);case"y":r=+r;
if(r<100){r+=n+(r<i?100:0);}return this.set("year",r);case"T":if(r=="Z"){r="+00";}var s=r.match(/([+-])(\d{2}):?(\d{2})?/);s=(s[1]+"1")*(s[2]*60+(+s[3]||0))+this.getTimezoneOffset();
return this.set("time",this-s*60000);}return this;};j.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(q){if(MooTools.lang.get("Date")){b(q);}}).fireEvent("langChange",MooTools.lang.getCurrentLanguage());})();
String.implement({parseQueryString:function(d,a){if(d==null){d=true;}if(a==null){a=true;}var c=this.split(/[&;]/),b={};if(c.length){c.each(function(j){var f=j.indexOf("="),g=f<0?[""]:j.substr(0,f).match(/([^\]\[]+|(\B)(?=\]))/g),h=a?decodeURIComponent(j.substr(f+1)):j.substr(f+1),i=b;
g.each(function(l,k){if(d){l=decodeURIComponent(l);}var m=i[l];if(k<g.length-1){i=i[l]=m||{};}else{if($type(m)=="array"){m.push(h);}else{i[l]=$defined(m)?[m,h]:h;
}}});});}return b;},cleanQueryString:function(a){return this.split("&").filter(function(f){var b=f.indexOf("="),c=b<0?"":f.substr(0,b),d=f.substr(b+1);
return a?a.run([c,d]):$chk(d);}).join("&");}});Element.implement({tidy:function(){this.set("value",this.get("value").tidy());},getTextInRange:function(b,a){return this.get("value").substring(b,a);
},getSelectedText:function(){if(this.setSelectionRange){return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd());}return document.selection.createRange().text;
},getSelectedRange:function(){if($defined(this.selectionStart)){return{start:this.selectionStart,end:this.selectionEnd};}var f={start:0,end:0};var a=this.getDocument().selection.createRange();
if(!a||a.parentElement()!=this){return f;}var c=a.duplicate();if(this.type=="text"){f.start=0-c.moveStart("character",-100000);f.end=f.start+a.text.length;
}else{var b=this.get("value");var d=b.length;c.moveToElementText(this);c.setEndPoint("StartToEnd",a);if(c.text.length){d-=b.match(/[\n\r]*$/)[0].length;
}f.end=d-c.text.length;c.setEndPoint("StartToStart",a);f.start=d-c.text.length;}return f;},getSelectionStart:function(){return this.getSelectedRange().start;
},getSelectionEnd:function(){return this.getSelectedRange().end;},setCaretPosition:function(a){if(a=="end"){a=this.get("value").length;}this.selectRange(a,a);
return this;},getCaretPosition:function(){return this.getSelectedRange().start;},selectRange:function(f,a){if(this.setSelectionRange){this.focus();this.setSelectionRange(f,a);
}else{var c=this.get("value");var d=c.substr(f,a-f).replace(/\r/g,"").length;f=c.substr(0,f).replace(/\r/g,"").length;var b=this.createTextRange();b.collapse(true);
b.moveEnd("character",f+d);b.moveStart("character",f);b.select();}return this;},insertAtCursor:function(b,a){var d=this.getSelectedRange();var c=this.get("value");
this.set("value",c.substring(0,d.start)+b+c.substring(d.end,c.length));if($pick(a,true)){this.selectRange(d.start,d.start+b.length);}else{this.setCaretPosition(d.start+b.length);
}return this;},insertAroundCursor:function(b,a){b=$extend({before:"",defaultMiddle:"",after:""},b);var c=this.getSelectedText()||b.defaultMiddle;var h=this.getSelectedRange();
var g=this.get("value");if(h.start==h.end){this.set("value",g.substring(0,h.start)+b.before+c+b.after+g.substring(h.end,g.length));this.selectRange(h.start+b.before.length,h.end+b.before.length+c.length);
}else{var d=g.substring(h.start,h.end);this.set("value",g.substring(0,h.start)+b.before+d+b.after+g.substring(h.end,g.length));var f=h.start+b.before.length;
if($pick(a,true)){this.selectRange(f,f+d.length);}else{this.setCaretPosition(f+g.length);}}return this;}});(function(d,f){var c=/(.*?):relay\(((?:\(.*?\)|.)+)\)$/,b=/[+>~\s]/,g=function(h){var i=h.match(c);
return !i?{event:h}:{event:i[1],selector:i[2]};},a=function(n,h){var l=n.target;if(b.test(h=h.trim())){var k=this.getElements(h);for(var j=k.length;j--;
){var m=k[j];if(l==m||m.hasChild(l)){return m;}}}else{for(;l&&l!=this;l=l.parentNode){if(Element.match(l,h)){return document.id(l);}}}return null;};Element.implement({addEvent:function(l,k){var j=g(l);
if(j.selector){var i=this.retrieve("delegation:_delegateMonitors",{});if(!i[l]){var h=function(n){var m=a.call(this,n,j.selector);if(m){this.fireEvent(l,[n,m],0,m);
}}.bind(this);i[l]=h;d.call(this,j.event,h);}}return d.apply(this,arguments);},removeEvent:function(l,k){var j=g(l);if(j.selector){var i=this.retrieve("events");
if(!i||!i[l]||(k&&!i[l].keys.contains(k))){return this;}if(k){f.apply(this,[l,k]);}else{f.apply(this,l);}i=this.retrieve("events");if(i&&i[l]&&i[l].keys.length==0){var h=this.retrieve("delegation:_delegateMonitors",{});
f.apply(this,[j.event,h[l]]);delete h[l];}return this;}return f.apply(this,arguments);},fireEvent:function(l,i,h,n){var j=this.retrieve("events");var m,k;
if(i){m=i[0];k=i[1];}if(!j||!j[l]){return this;}j[l].keys.each(function(o){o.create({bind:n||this,delay:h,arguments:i})();},this);return this;}});})(Element.prototype.addEvent,Element.prototype.removeEvent);
try{if(typeof HTMLElement!="undefined"){HTMLElement.prototype.fireEvent=Element.prototype.fireEvent;}}catch(e){}Element.implement({measure:function(f){var h=function(i){return !!(!i||i.offsetHeight||i.offsetWidth);
};if(h(this)){return f.apply(this);}var d=this.getParent(),g=[],b=[];while(!h(d)&&d!=document.body){b.push(d.expose());d=d.getParent();}var c=this.expose();
var a=f.apply(this);c();b.each(function(i){i();});return a;},expose:function(){if(this.getStyle("display")!="none"){return $empty;}var a=this.style.cssText;
this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=a;}.bind(this);},getDimensions:function(a){a=$merge({computeSize:false},a);
var f={};var d=function(h,g){return(g.computeSize)?h.getComputedSize(g):h.getSize();};var b=this.getParent("body");if(b&&this.getStyle("display")=="none"){f=this.measure(function(){return d(this,a);
});}else{if(b){try{f=d(this,a);}catch(c){}}else{f={x:0,y:0};}}return $chk(f.x)?$extend(f,{width:f.x,height:f.y}):$extend(f,{x:f.width,y:f.height});},getComputedSize:function(a){if(a&&a.plains){a.planes=a.plains;
}a=$merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},a);var c={width:0,height:0};switch(a.mode){case"vertical":delete c.width;
delete a.planes.width;break;case"horizontal":delete c.height;delete a.planes.height;break;}var b=[];$each(a.planes,function(g,h){g.each(function(i){a.styles.each(function(j){b.push((j=="border")?j+"-"+i+"-width":j+"-"+i);
});});});var f={};b.each(function(g){f[g]=this.getComputedStyle(g);},this);var d=[];$each(a.planes,function(g,h){var i=h.capitalize();c["total"+i]=c["computed"+i]=0;
g.each(function(j){c["computed"+j.capitalize()]=0;b.each(function(l,k){if(l.test(j)){f[l]=f[l].toInt()||0;c["total"+i]=c["total"+i]+f[l];c["computed"+j.capitalize()]=c["computed"+j.capitalize()]+f[l];
}if(l.test(j)&&h!=l&&(l.test("border")||l.test("padding"))&&!d.contains(l)){d.push(l);c["computed"+i]=c["computed"+i]-f[l];}});});});["Width","Height"].each(function(h){var g=h.toLowerCase();
if(!$chk(c[g])){return;}c[g]=c[g]+this["offset"+h]+c["computed"+h];c["total"+h]=c[g]+c["total"+h];delete c["computed"+h];},this);return $extend(f,c);}});
(function(){var a=Element.prototype.position;Element.implement({position:function(h){if(h&&($defined(h.x)||$defined(h.y))){return a?a.apply(this,arguments):this;
}$each(h||{},function(w,u){if(!$defined(w)){delete h[u];}});h=$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},h);
var s={x:0,y:0},f=false;var c=this.measure(function(){return document.id(this.getOffsetParent());});if(c&&c!=this.getDocument().body){s=c.measure(function(){return this.getPosition();
});f=c!=document.id(h.relativeTo);h.offset.x=h.offset.x-s.x;h.offset.y=h.offset.y-s.y;}var t=function(u){if($type(u)!="string"){return u;}u=u.toLowerCase();
var v={};if(u.test("left")){v.x="left";}else{if(u.test("right")){v.x="right";}else{v.x="center";}}if(u.test("upper")||u.test("top")){v.y="top";}else{if(u.test("bottom")){v.y="bottom";
}else{v.y="center";}}return v;};h.edge=t(h.edge);h.position=t(h.position);if(!h.edge){if(h.position.x=="center"&&h.position.y=="center"){h.edge={x:"center",y:"center"};
}else{h.edge={x:"left",y:"top"};}}this.setStyle("position","absolute");var g=document.id(h.relativeTo)||document.body,d=g==document.body?window.getScroll():g.getPosition(),m=d.y,i=d.x;
var o=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});var k={},p=h.offset.y,r=h.offset.x,l=window.getSize();switch(h.position.x){case"left":k.x=i+r;
break;case"right":k.x=i+r+g.offsetWidth;break;default:k.x=i+((g==document.body?l.x:g.offsetWidth)/2)+r;break;}switch(h.position.y){case"top":k.y=m+p;break;
case"bottom":k.y=m+p+g.offsetHeight;break;default:k.y=m+((g==document.body?l.y:g.offsetHeight)/2)+p;break;}if(h.edge){var b={};switch(h.edge.x){case"left":b.x=0;
break;case"right":b.x=-o.x-o.computedRight-o.computedLeft;break;default:b.x=-(o.totalWidth/2);break;}switch(h.edge.y){case"top":b.y=0;break;case"bottom":b.y=-o.y-o.computedTop-o.computedBottom;
break;default:b.y=-(o.totalHeight/2);break;}k.x+=b.x;k.y+=b.y;}k={left:((k.x>=0||f||h.allowNegative)?k.x:0).toInt(),top:((k.y>=0||f||h.allowNegative)?k.y:0).toInt()};
var j={left:"x",top:"y"};["minimum","maximum"].each(function(u){["left","top"].each(function(v){var w=h[u]?h[u][j[v]]:null;if(w!=null&&((u=="minimum")?k[v]<w:k[v]>w)){k[v]=w;
}});});if(g.getStyle("position")=="fixed"||h.relFixedPosition){var n=window.getScroll();k.top+=n.y;k.left+=n.x;}var q=g.getScroll();if(h.ignoreScroll){k.top-=q.y;
k.left-=q.x;}else{k.top+=q.y;k.left+=q.x;}if(h.ignoreMargins){k.left+=(h.edge.x=="right"?o["margin-right"]:h.edge.x=="center"?-o["margin-left"]+((o["margin-right"]+o["margin-left"])/2):-o["margin-left"]);
k.top+=(h.edge.y=="bottom"?o["margin-bottom"]:h.edge.y=="center"?-o["margin-top"]+((o["margin-bottom"]+o["margin-top"])/2):-o["margin-top"]);}k.left=Math.ceil(k.left);
k.top=Math.ceil(k.top);if(h.returnPos){return k;}else{this.setStyles(k);}return this;}});})();Element.implement({isDisplayed:function(){return this.getStyle("display")!="none";
},isVisible:function(){var a=this.offsetWidth,b=this.offsetHeight;return(a==0&&b==0)?false:(a>0&&b>0)?true:this.style.display!="none";},toggle:function(){return this[this.isDisplayed()?"hide":"show"]();
},hide:function(){var b;try{b=this.getStyle("display");}catch(a){}if(b=="none"){return this;}return this.store("element:_originalDisplay",b||"").setStyle("display","none");
},show:function(a){if(!a&&this.isDisplayed()){return this;}a=a||this.retrieve("element:_originalDisplay")||"block";return this.setStyle("display",(a=="none")?"block":a);
},swapClass:function(a,b){return this.removeClass(a).addClass(b);}});Document.implement({clearSelection:function(){if(document.selection&&document.selection.empty){document.selection.empty();
}else{if(window.getSelection){var a=window.getSelection();if(a&&a.removeAllRanges){a.removeAllRanges();}}}}});if(!window.Form){window.Form={};}(function(){Form.Request=new Class({Binds:["onSubmit","onFormValidate"],Implements:[Options,Events,Class.Occlude],options:{requestOptions:{evalScripts:true,useSpinner:true,emulation:false,link:"ignore"},sendButtonClicked:true,extraData:{},resetForm:true},property:"form.request",initialize:function(b,c,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.update=document.id(c);this.setOptions(a);this.makeRequest();if(this.options.resetForm){this.request.addEvent("success",function(){$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(b,d,c,a){["complete","success"].each(function(f){this.fireEvent(f,[this.update,b,d,c,a]);
},this);}.bind(this),failure:function(){this.fireEvent("complete",arguments).fireEvent("failure",arguments);}.bind(this),exception:function(){this.fireEvent("failure",arguments);
}.bind(this)});},attach:function(a){a=$pick(a,true);method=a?"addEvent":"removeEvent";this.element[method]("click:relay(button, input[type=submit])",this.saveClickedButton.bind(this));
var b=this.element.retrieve("validator");if(b){b[method]("onFormValidate",this.onFormValidate);}else{this.element[method]("submit",this.onSubmit);}},detach:function(){this.attach(false);
return this;},enable:function(){this.attach();return this;},disable:function(){this.detach();return this;},onFormValidate:function(b,a,d){if(!d){return;
}var c=this.element.retrieve("validator");if(b||(c&&!c.options.stopOnFailure)){if(d&&d.stop){d.stop();}this.send();}},onSubmit:function(b){var a=this.element.retrieve("validator");
if(a){this.element.removeEvent("submit",this.onSubmit);a.addEvent("onFormValidate",this.onFormValidate);this.element.validate();return;}if(b){b.stop();
}this.send();},saveClickedButton:function(a,b){if(!this.options.sendButtonClicked){return;}if(!b.get("name")){return;}this.options.extraData[b.get("name")]=b.get("value")||true;
this.clickedCleaner=function(){delete this.options.extraData[b.get("name")];this.clickedCleaner=$empty;}.bind(this);},clickedCleaner:$empty,send:function(){var b=this.element.toQueryString().trim();
var a=$H(this.options.extraData).toQueryString();if(b){b+="&"+a;}else{b=a;}this.fireEvent("send",[this.element,b.parseQueryString()]);this.request.send({data:b,url:this.element.get("action")});
this.clickedCleaner();return this;}});Element.Properties.formRequest={set:function(){var a=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});
var c=a.update||a.updateId;var b=this.retrieve("form.request");if(c){if(b){b.update=document.id(c);}this.store("form.request:update",c);}if(a.options){if(b){b.setOptions(a.options);
}this.store("form.request:options",a.options);}return this;},get:function(){var a=Array.link(arguments,{options:Object.type,update:Element.type,updateId:String.type});
var b=a.update||a.updateId;if(a.options||b||!this.retrieve("form.request")){if(a.options||!this.retrieve("form.request:options")){this.set("form.request",a.options);
}if(b){this.set("form.request",b);}this.store("form.request",new Form.Request(this,this.retrieve("form.request:update"),this.retrieve("form.request:options")));
}return this.retrieve("form.request");}};Element.implement({formUpdate:function(b,a){this.get("formRequest",b,a).send();return this;}});})();var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:["reposition","assert","focus","hide"],options:{element:"label",positionOptions:{position:"upperLeft",edge:"upperLeft",offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:"OverText",initialize:function(b,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.setOptions(a);this.attach(this.element);OverText.instances.push(this);if(this.options.poll){this.poll();}return this;
},toElement:function(){return this.element;},attach:function(){var a=this.options.textOverride||this.element.get("alt")||this.element.get("title");if(!a){return;
}this.text=new Element(this.options.element,{"class":"overTxtLabel",styles:{lineHeight:"normal",position:"absolute",cursor:"text"},html:a,events:{click:this.hide.pass(this.options.element=="label",this)}}).inject(this.element,"after");
if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime());}this.text.set("for",this.element.get("id"));
}if(this.options.wrap){this.textHolder=new Element("div",{styles:{lineHeight:"normal",position:"relative"},"class":"overTxtWrapper"}).adopt(this.text).inject(this.element,"before");
}return this.enable();},destroy:function(){this.element.eliminate("OverTextDiv").eliminate("OverText");this.disable();if(this.text){this.text.destroy();
}if(this.textHolder){this.textHolder.destroy();}return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});
window.removeEvent("resize",this.reposition);this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});
window.addEvent("resize",this.reposition);this.assert(true);this.reposition();return this;},wrap:function(){if(this.options.element=="label"){if(!this.element.get("id")){this.element.set("id","input_"+new Date().getTime());
}this.text.set("for",this.element.get("id"));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(a){if(this.poller&&!a){return this;
}var b=function(){if(!this.pollingPaused){this.assert(true);}}.bind(this);if(a){$clear(this.poller);}else{this.poller=b.periodical(this.options.pollInterval,this);
}return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get("disabled"))){return;
}this.hide();},hide:function(c,a){if(this.text&&(this.text.isDisplayed()&&(!this.element.get("disabled")||a))){this.text.hide();this.fireEvent("textHide",[this.text,this.element]);
this.pollingPaused=true;if(!c){try{this.element.fireEvent("focus");this.element.focus();}catch(b){}}}return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show();
this.reposition();this.fireEvent("textShow",[this.text,this.element]);this.pollingPaused=false;}return this;},assert:function(a){this[this.test()?"show":"hide"](a);
},test:function(){var a=this.element.get("value");return !a;},reposition:function(){this.assert(true);if(!this.element.isVisible()){return this.stopPolling().hide();
}if(this.text&&this.test()){this.text.position($merge(this.options.positionOptions,{relativeTo:this.element}));}return this;}});OverText.instances=[];$extend(OverText,{each:function(a){return OverText.instances.map(function(c,b){if(c.element&&c.text){return a.apply(OverText,[c,b]);
}return null;});},update:function(){return OverText.each(function(a){return a.reposition();});},hideAll:function(){return OverText.each(function(a){return a.hide(true,true);
});},showAll:function(){return OverText.each(function(a){return a.show();});}});if(window.Fx&&Fx.Reveal){Fx.Reveal.implement({hideInputs:Browser.Engine.trident?"select, input, textarea, object, embed, .overTxtLabel":false});
}Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(b,a){this.elements=this.subject=$$(b);this.parent(a);},compute:function(h,j,k){var c={};for(var d in h){var a=h[d],f=j[d],g=c[d]={};
for(var b in a){g[b]=this.parent(a[b],f[b],k);}}return c;},set:function(b){for(var c in b){if(!this.elements[c]){continue;}var a=b[c];for(var d in a){this.render(this.elements[c],d,a[d],this.options.unit);
}}return this;},start:function(c){if(!this.check(c)){return this;}var j={},k={};for(var d in c){if(!this.elements[d]){continue;}var g=c[d],a=j[d]={},h=k[d]={};
for(var b in g){var f=this.prepare(this.elements[d],b,g[b]);a[b]=f.from;h[b]=f.to;}}return this.parent(j,k);}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:"click",initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var c=Array.link(arguments,{container:Element.type,options:Object.type,togglers:$defined,elements:$defined});
this.parent(c.elements,c.options);this.togglers=$$(c.togglers);this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide){this.options.wait=true;
}if($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 b=0,a=this.togglers.length;b<a;b++){this.addSection(this.togglers[b],this.elements[b]);
}this.elements.each(function(f,d){if(this.options.show===d){this.fireEvent("active",[this.togglers[d],f]);}else{for(var g in this.effects){f.setStyle(g,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(f,c){f=document.id(f);c=document.id(c);var g=this.togglers.contains(f);
this.togglers.include(f);this.elements.include(c);var a=this.togglers.indexOf(f);var b=this.display.bind(this,a);f.store("accordion:display",b);f.addEvent(this.options.trigger,b);
if(this.options.height){c.setStyles({"padding-top":0,"border-top":"none","padding-bottom":0,"border-bottom":"none"});}if(this.options.width){c.setStyles({"padding-left":0,"border-left":"none","padding-right":0,"border-right":"none"});
}c.fullOpacity=1;if(this.options.fixedWidth){c.fullWidth=this.options.fixedWidth;}if(this.options.fixedHeight){c.fullHeight=this.options.fixedHeight;}c.setStyle("overflow","hidden");
if(!g){for(var d in this.effects){c.setStyle(d,0);}}return this;},removeSection:function(f,b){var a=this.togglers.indexOf(f);var c=this.elements[a];var d=function(){this.togglers.erase(f);
this.elements.erase(c);this.detach(f);}.bind(this);if(this.now==a||b!=undefined){this.display($pick(b,a-1>=0?a-1:0)).chain(d);}else{d();}return this;},detach:function(b){var a=function(c){c.removeEvent(this.options.trigger,c.retrieve("accordion:display"));
}.bind(this);if(!b){this.togglers.each(a);}else{a(b);}return this;},display:function(a,b){if(!this.check(a,b)){return this;}b=$pick(b,true);a=($type(a)=="element")?this.elements.indexOf(a):a;
if(a==this.previous&&!this.options.alwaysHide){return this;}if(this.options.returnHeightToAuto){var d=this.elements[this.previous];if(d&&!this.selfHidden){for(var c in this.effects){d.setStyle(c,d[this.effects[c]]);
}}}if((this.timer&&this.options.wait)||(a===this.previous&&!this.options.alwaysHide)){return this;}this.previous=a;var f={};this.elements.each(function(j,h){f[h]={};
var g;if(h!=a){g=true;}else{if(this.options.alwaysHide&&((j.offsetHeight>0&&this.options.height)||j.offsetWidth>0&&this.options.width)){g=true;this.selfHidden=true;
}}this.fireEvent(g?"background":"active",[this.togglers[h],j]);for(var k in this.effects){f[h][k]=g?0:j[this.effects[k]];}},this);this.internalChain.clearChain();
this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var g=this.elements[a];if(g){g.setStyle("height","auto");}}}.bind(this));
return b?this.start(f):this.set(f);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var a=Array.link(arguments,{container:Element.type});
this.container=a.container;},addSection:function(c,b,f){c=document.id(c);b=document.id(b);var d=this.togglers.contains(c);var a=this.togglers.length;if(a&&(!d||f)){f=$pick(f,a-1);
c.inject(this.togglers[f],"before");b.inject(c,"after");}else{if(this.container&&!d){c.inject(this.container);b.inject(this.container);}}return this.parent.apply(this,arguments);
}});Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left");
if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position($merge(this.options,a,{returnPos:true})));
}});Element.Properties.move={set:function(a){var b=this.retrieve("move");if(b){b.cancel();}return this.eliminate("move").store("move:options",$extend({link:"cancel"},a));
},get:function(a){if(a||!this.retrieve("move")){if(a||!this.retrieve("move:options")){this.set("move",a);}this.store("move",new Fx.Move(this,this.retrieve("move:options")));
}return this.retrieve("move");}};Element.implement({move:function(a){this.get("move").start(a);return this;}});Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:"cancel",styles:["padding","border","margin"],transitionOpacity:!Browser.Engine.trident4,mode:"vertical",display:function(){return this.element.get("tag")!="tr"?"block":"table-row";
},hideInputs:Browser.Engine.trident?"select, input, textarea, object, embed":false,opacity:1},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 d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
this.element.setStyle("display",$lambda(this.options.display).apply(this));if(this.options.transitionOpacity){d.opacity=this.options.opacity;}var b={};
$each(d,function(g,f){b[f]=[g,0];},this);this.element.setStyle("overflow","hidden");var a=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;
this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(d,function(g,f){d[f]=g;},this);this.element.style.cssText=this.cssText;this.element.setStyle("display","none");
if(a){a.setStyle("visibility","visible");}}this.fireEvent("hide",this.element);this.callChain();}.bind(this));if(a){a.setStyle("visibility","hidden");}this.start(b);
}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(c){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.showing=true;
this.hiding=this.hidden=false;var d;this.cssText=this.element.style.cssText;this.element.measure(function(){d=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});
}.bind(this));$each(d,function(g,f){d[f]=g;});if($chk(this.options.heightOverride)){d.height=this.options.heightOverride.toInt();}if($chk(this.options.widthOverride)){d.width=this.options.widthOverride.toInt();
}if(this.options.transitionOpacity){this.element.setStyle("opacity",0);d.opacity=this.options.opacity;}var b={height:0,display:$lambda(this.options.display).apply(this)};
$each(d,function(g,f){b[f]=0;});this.element.setStyles($merge(b,{overflow:"hidden"}));var a=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;
if(a){a.setStyle("visibility","hidden");}this.start(d);this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle("display",$lambda(this.options.display).apply(this));
if(!this.hidden){this.showing=false;}if(a){a.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(c){this.element.setStyles({display:$lambda(this.options.display).apply(this),visiblity:"visible",opacity:this.options.opacity});
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.reveal();
}else{this.dissolve();}return this;},cancel:function(){this.parent.apply(this,arguments);this.element.style.cssText=this.cssText;this.hiding=false;this.showing=false;
return this;}});Element.Properties.reveal={set:function(a){var b=this.retrieve("reveal");if(b){b.cancel();}return this.eliminate("reveal").store("reveal:options",a);
},get:function(a){if(a||!this.retrieve("reveal")){if(a||!this.retrieve("reveal:options")){this.set("reveal",a);}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(a){this.get("reveal",a).reveal();
return this;},dissolve:function(a){this.get("reveal",a).dissolve();return this;},nix:function(){var a=Array.link(arguments,{destroy:Boolean.type,options:Object.type});
this.get("reveal",a.options).dissolve().chain(function(){this[a.destroy?"destroy":"dispose"]();}.bind(this));return this;},wink:function(){var b=Array.link(arguments,{duration:Number.type,options:Object.type});
var a=this.get("reveal",b.options);a.reveal().chain(function(){(function(){a.dissolve();}).delay(b.duration||2000);});}});Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(b,a){this.element=this.subject=document.id(b);
this.parent(a);var d=this.cancel.bind(this,false);if($type(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}var c=this.element;
if(this.options.wheelStops){this.addEvent("start",function(){c.addEvent("mousewheel",d);},true);this.addEvent("complete",function(){c.removeEvent("mousewheel",d);
},true);}},set:function(){var a=Array.flatten(arguments);if(Browser.Engine.gecko){a=[Math.round(a[0]),Math.round(a[1])];}this.element.scrollTo(a[0]+this.options.offset.x,a[1]+this.options.offset.y);
},compute:function(c,b,a){return[0,1].map(function(d){return Fx.compute(c[d],b[d],a);});},start:function(c,h){if(!this.check(c,h)){return this;}var f=this.element.getScrollSize(),b=this.element.getScroll(),d={x:c,y:h};
for(var g in d){var a=f[g];if($chk(d[g])){d[g]=($type(d[g])=="number")?d[g]:a;}else{d[g]=b[g];}d[g]+=this.options.offset[g];}return this.parent([b.x,b.y],[d.x,d.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(b){var a=document.id(b).getPosition(this.element);return this.start(a.x,a.y);},scrollIntoView:function(c,f,d){f=f?$splat(f):["x","y"];
var i={};c=document.id(c);var g=c.getPosition(this.element);var j=c.getSize();var h=this.element.getScroll();var a=this.element.getSize();var b={x:g.x+j.x,y:g.y+j.y};
["x","y"].each(function(k){if(f.contains(k)){if(b[k]>h[k]+a[k]){i[k]=b[k]-a[k];}if(g[k]<h[k]){i[k]=g[k];}}if(i[k]==null){i[k]=h[k];}if(d&&d[k]){i[k]=i[k]+d[k];
}},this);if(i.x!=h.x||i.y!=h.y){this.start(i.x,i.y);}return this;},scrollToCenter:function(c,f,d){f=f?$splat(f):["x","y"];c=$(c);var i={},g=c.getPosition(this.element),j=c.getSize(),h=this.element.getScroll(),a=this.element.getSize(),b={x:g.x+j.x,y:g.y+j.y};
["x","y"].each(function(k){if(f.contains(k)){i[k]=g[k]-(a[k]-j[k])/2;}if(i[k]==null){i[k]=h[k];}if(d&&d[k]){i[k]=i[k]+d[k];}},this);if(i.x!=h.x||i.y!=h.y){this.start(i.x,i.y);
}return this;}});Fx.Slide=new Class({Extends:Fx,options:{mode:"vertical",wrapper:false,hideOverflow:true,resetHeight:false},initialize:function(b,a){this.addEvent("complete",function(){this.open=(this.wrapper["offset"+this.layout.capitalize()]!=0);
if(this.open&&this.options.resetHeight){this.wrapper.setStyle("height","");}if(this.open&&Browser.Engine.webkit419){this.element.dispose().inject(this.wrapper);
}},true);this.element=this.subject=document.id(b);this.parent(a);var d=this.element.retrieve("wrapper");var c=this.element.getStyles("margin","position","overflow");
if(this.options.hideOverflow){c=$extend(c,{overflow:"hidden"});}if(this.options.wrapper){d=document.id(this.options.wrapper).setStyles(c);}this.wrapper=d||new Element("div",{styles:c}).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(a){this.element.setStyle(this.margin,a[0]);
this.wrapper.setStyle(this.layout,a[1]);return this;},compute:function(c,b,a){return[0,1].map(function(d){return Fx.compute(c[d],b[d],a);});},start:function(b,f){if(!this.check(b,f)){return this;
}this[f||this.options.mode]();var d=this.element.getStyle(this.margin).toInt();var c=this.wrapper.getStyle(this.layout).toInt();var a=[[d,c],[0,this.offset]];
var h=[[d,c],[-this.offset,0]];var g;switch(b){case"in":g=a;break;case"out":g=h;break;case"toggle":g=(c==0)?a:h;}return this.parent(g[0],g[1]);},slideIn:function(a){return this.start("in",a);
},slideOut:function(a){return this.start("out",a);},hide:function(a){this[a||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(a){this[a||this.options.mode]();
this.open=true;return this.set([0,this.offset]);},toggle:function(a){return this.start("toggle",a);}});Element.Properties.slide={set:function(b){var a=this.retrieve("slide");
if(a){a.cancel();}return this.eliminate("slide").store("slide:options",$extend({link:"cancel"},b));},get:function(a){if(a||!this.retrieve("slide")){if(a||!this.retrieve("slide:options")){this.set("slide",a);
}this.store("slide",new Fx.Slide(this,this.retrieve("slide:options")));}return this.retrieve("slide");}};Element.implement({slide:function(d,f){d=d||"toggle";
var b=this.get("slide"),a;switch(d){case"hide":b.hide(f);break;case"show":b.show(f);break;case"toggle":var c=this.retrieve("slide:flag",b.open);b[c?"slideOut":"slideIn"](f);
this.store("slide:flag",!c);a=true;break;default:b.start(d,f);}if(!a){this.eliminate("slide:flag");}return this;}});var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(b,c){c=c||document;
this.doc=c.getDocument();var d=c.getWindow();this.parent(this.doc,b);this.links=$$(this.options.links||this.doc.links);var a=d.location.href.match(/^[^#]*/)[0]+"#";
this.links.each(function(g){if(g.href.indexOf(a)!=0){return;}var f=g.href.substr(a.length);if(f){this.useLink(g,f);}},this);if(!Browser.Engine.webkit419){this.addEvent("complete",function(){d.location.hash=this.anchor;
},true);}},useLink:function(c,a){var b;c.addEvent("click",function(d){if(b!==false&&!b){b=document.id(a)||this.doc.getElement("a[name="+a+"]");}if(b){d.preventDefault();
this.anchor=a;this.toElement(b).chain(function(){this.fireEvent("scrolledTo",[c,b]);}.bind(this));c.blur();}}.bind(this));}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:"vertical"},initialize:function(b,a){this.parent(b,a);
this.elements.each(function(c){if(c.getStyle("position")=="static"){c.setStyle("position","relative");}});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(b,a){return a;
});},sort:function(f){if($type(f)!="array"){return false;}var j=0,a=0,c={},i={},d=this.options.mode=="vertical";var g=this.elements.map(function(n,l){var m=n.getComputedSize({styles:["border","padding","margin"]});
var o;if(d){o={top:j,margin:m["margin-top"],height:m.totalHeight};j+=o.height-m["margin-top"];}else{o={left:a,margin:m["margin-left"],width:m.totalWidth};
a+=o.width;}var k=d?"top":"left";i[l]={};var p=n.getStyle(k).toInt();i[l][k]=p||0;return o;},this);this.set(i);f=f.map(function(k){return k.toInt();});
if(f.length!=this.elements.length){this.currentOrder.each(function(k){if(!f.contains(k)){f.push(k);}});if(f.length>this.elements.length){f.splice(this.elements.length-1,f.length-this.elements.length);
}}var b=j=a=0;f.each(function(m,k){var l={};if(d){l.top=j-g[m].top-b;j+=g[m].height;}else{l.left=a-g[m].left;a+=g[m].width;}b=b+g[m].margin;c[m]=l;},this);
var h={};$A(f).sort().each(function(k){h[k]=c[k];});this.start(h);this.currentOrder=f;return this;},rearrangeDOM:function(a){a=a||this.currentOrder;var b=this.elements[0].getParent();
var c=[];this.elements.setStyle("opacity",0);a.each(function(d){c.push(this.elements[d].inject(b).setStyles({top:0,left:0}));},this);this.elements.setStyle("opacity",1);
this.elements=$$(c);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(b,a){return a;});},forward:function(){return this.sort(this.getDefaultOrder());
},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(a){return this.sort(a.map(function(b){return this.elements.indexOf(b);
},this));},swap:function(c,b){if($type(c)=="element"){c=this.elements.indexOf(c);}if($type(b)=="element"){b=this.elements.indexOf(b);}var a=$A(this.currentOrder);
a[this.currentOrder.indexOf(c)]=b;a[this.currentOrder.indexOf(b)]=c;return this.sort(a);}});var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Object.type,element:$defined});
this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=$type(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.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(f){if(f.rightClick){return;}if(this.options.preventDefault){f.preventDefault();}if(this.options.stopPropagation){f.stopPropagation();
}this.mouse.start=f.page;this.fireEvent("beforeStart",this.element);var a=this.options.limit;this.limit={x:[],y:[]};var d=this.element.getStyles("left","right","top","bottom");
this._invert={x:this.options.modifiers.x=="left"&&d.left=="auto"&&!isNaN(d.right.toInt())&&(this.options.modifiers.x="right"),y:this.options.modifiers.y=="top"&&d.top=="auto"&&!isNaN(d.bottom.toInt())&&(this.options.modifiers.y="bottom")};
var h,g;for(h in this.options.modifiers){if(!this.options.modifiers[h]){continue;}var c=this.element.getStyle(this.options.modifiers[h]);if(c&&!c.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());
}c=g[this.options.modifiers[h]];}if(this.options.style){this.value.now[h]=(c||0).toInt();}else{this.value.now[h]=this.element[this.options.modifiers[h]];
}if(this.options.invert){this.value.now[h]*=-1;}if(this._invert[h]){this.value.now[h]*=-1;}this.mouse.pos[h]=f.page[h]-this.value.now[h];if(a&&a[h]){for(var b=2;
b--;b){if($chk(a[h][b])){this.limit[h][b]=$lambda(a[h][b])();}}}}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(a){if(this.options.preventDefault){a.preventDefault();
}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});
this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(a){if(this.options.preventDefault){a.preventDefault();}this.mouse.now=a.page;
for(var b in this.options.modifiers){if(!this.options.modifiers[b]){continue;}this.value.now[b]=this.mouse.now[b]-this.mouse.pos[b];if(this.options.invert){this.value.now[b]*=-1;
}if(this._invert[b]){this.value.now[b]*=-1;}if(this.options.limit&&this.limit[b]){if($chk(this.limit[b][1])&&(this.value.now[b]>this.limit[b][1])){this.value.now[b]=this.limit[b][1];
}else{if($chk(this.limit[b][0])&&(this.value.now[b]<this.limit[b][0])){this.value.now[b]=this.limit[b][0];}}}if(this.options.grid[b]){this.value.now[b]-=((this.value.now[b]-(this.limit[b][0]||0))%this.options.grid[b]);
}if(this.options.style){this.element.setStyle(this.options.modifiers[b],this.value.now[b]+this.options.unit);}else{this.element[this.options.modifiers[b]]=this.value.now[b];
}}this.fireEvent("drag",[this.element,a]);},cancel:function(a){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);
if(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(a){this.document.removeEvent(this.selection,this.bound.eventStop);
this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(a){this.fireEvent("complete",[this.element,a]);
}}});Element.implement({makeResizable:function(a){var b=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},a));this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);
}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(b,a){this.parent(b,a);
b=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&$type(this.container)!="element"){this.container=document.id(this.container.getDocument().body);
}if(this.options.style){if(this.options.modifiers.x=="left"&&this.options.modifiers.y=="top"){var g,c=document.id(b.getOffsetParent());if(c){g=c.getStyles("border-top-width","border-left-width");
}var d=b.getStyles("left","top");if(c&&(d.left=="auto"||d.top=="auto")){var f=b.getPosition(c);f.x=f.x-(g["border-left-width"]?g["border-left-width"].toInt():0);
f.y=f.y-(g["border-top-width"]?g["border-top-width"].toInt():0);b.setPosition(f);}}if(b.getStyle("position")=="static"){b.setStyle("position","absolute");
}}this.addEvent("start",this.checkDroppables,true);this.overed=null;},start:function(a){if(this.container){this.options.limit=this.calculateLimit();}if(this.options.precalculate){this.positions=this.droppables.map(function(b){return b.getCoordinates();
});}this.parent(a);},calculateLimit:function(){var d=document.id(this.element.getOffsetParent())||document.body,i=this.container.getCoordinates(d),h={},c={},b={},k={},g={},m={};
["top","right","bottom","left"].each(function(q){h[q]=this.container.getStyle("border-"+q).toInt();b[q]=this.element.getStyle("border-"+q).toInt();c[q]=this.element.getStyle("margin-"+q).toInt();
k[q]=this.container.getStyle("margin-"+q).toInt();m[q]=d.getStyle("padding-"+q).toInt();g[q]=d.getStyle("border-"+q).toInt();},this);var f=this.element.offsetWidth+c.left+c.right,p=this.element.offsetHeight+c.top+c.bottom,j=0,l=0,o=i.right-h.right-f,a=i.bottom-h.bottom-p;
if(this.options.includeMargins){j+=c.left;l+=c.top;}else{o+=c.right;a+=c.bottom;}if(this.element.getStyle("position")=="relative"){var n=this.element.getCoordinates(d);
n.left-=this.element.getStyle("left").toInt();n.top-=this.element.getStyle("top").toInt();j+=h.left-n.left;l+=h.top-n.top;o+=c.left-n.left;a+=c.top-n.top;
if(this.container!=d){j+=k.left+m.left;l+=(Browser.Engine.trident4?0:k.top)+m.top;}}else{j-=c.left;l-=c.top;if(this.container==d){o-=h.left;a-=h.top;}else{j+=i.left+h.left-g.left;
l+=i.top+h.top-g.top;o-=g.left;a-=g.top;}}return{x:[j,o],y:[l,a]};},checkAgainst:function(c,b){c=(this.positions)?this.positions[b]:c.getCoordinates();
var a=this.mouse.now;return(a.x>c.left&&a.x<c.right&&a.y<c.bottom&&a.y>c.top);},checkDroppables:function(){var a=this.droppables.filter(this.checkAgainst,this).getLast();
if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);
if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);
this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);this.store("dragger",b);return b;}});
var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){if(this.options.snap){a=this.toPosition(this.step);
}this.knob.setStyle(this.property,a);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(g,a,f){this.setOptions(f);
this.element=document.id(g);this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var h,b={},d={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y";
this.property="top";h="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";h="offsetWidth";}this.full=this.element.measure(function(){this.half=this.knob[h]/2;
return this.element[h]-this.knob[h]+(this.options.offset*2);}.bind(this));this.setRange(this.options.range);this.knob.setStyle("position","relative").setStyle(this.property,-this.options.offset);
d[this.axis]=this.property;b[this.axis]=[-this.options.offset,this.full-this.options.offset];var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;
}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};
if(this.options.snap){c.grid=Math.ceil(this.stepWidth);c.limit[this.axis][1]=this.full;}this.drag=new Drag(this.knob,c);this.attach();if(this.options.initialStep!=null){this.set(this.options.initialStep);
}},attach:function(){this.element.addEvent("mousedown",this.clickedElement);if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement);
}this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement);this.element.removeEvent("mousewheel",this.scrolledElement);
this.drag.detach();return this;},set:function(a){if(!((this.range>0)^(a<this.min))){a=this.min;}if(!((this.range>0)^(a>this.max))){a=this.max;}this.step=Math.round(a);
this.checkStep();this.fireEvent("tick",this.toPosition(this.step));this.end();return this;},setRange:function(a,b){this.min=$pick(a[0],0);this.max=$pick(a[1],this.options.steps);
this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);
this.set($pick(b,this.step).floor(this.min).max(this.max));return this;},clickedElement:function(c){if(this.isDragging||c.target==this.knob){return;}var b=this.range<0?-1:1;
var a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half;a=a.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+b*this.toStep(a));
this.checkStep();this.fireEvent("tick",a);this.end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0);this.set(b?this.step-this.stepSize:this.step+this.stepSize);
a.stop();},draggedKnob:function(){var b=this.range<0?-1:1;var a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset);
this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){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(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset;
}});var Sortables=new Class({Implements:[Events,Options],options:{snap:4,opacity:1,clone:false,revert:false,handle:false,constrain:false,preventDefault:false},initialize:function(a,b){this.setOptions(b);
this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(a)||a));if(!this.options.clone){this.options.revert=false;}if(this.options.revert){this.effect=new Fx.Morph(null,$merge({duration:250,link:"cancel"},this.options.revert));
}},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(a){this.elements.push(a);
var b=a.retrieve("sortables:start",this.start.bindWithEvent(this,a));(this.options.handle?a.getElement(this.options.handle)||a:a).addEvent("mousedown",b);
},this);return this;},addLists:function(){Array.flatten(arguments).each(function(a){this.lists.push(a);this.addItems(a.getChildren());},this);return this;
},removeItems:function(){return $$(Array.flatten(arguments).map(function(a){this.elements.erase(a);var b=a.retrieve("sortables:start");(this.options.handle?a.getElement(this.options.handle)||a:a).removeEvent("mousedown",b);
return a;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(a){this.lists.erase(a);this.removeItems(a.getChildren());return a;
},this));},getClone:function(b,a){if(!this.options.clone){return new Element(a.tagName).inject(document.body);}if($type(this.options.clone)=="function"){return this.options.clone.call(this,b,a,this.list);
}var c=a.clone(true).setStyles({margin:"0px",position:"absolute",visibility:"hidden",width:a.getStyle("width")});if(c.get("html").test("radio")){c.getElements("input[type=radio]").each(function(d,f){d.set("name","clone_"+f);
if(d.get("checked")){a.getElements("input[type=radio]")[f].set("checked",true);}});}return c.inject(this.list).setPosition(a.getPosition(a.getOffsetParent()));
},getDroppables:function(){var a=this.list.getChildren();if(!this.options.constrain){a=this.lists.concat(a).erase(this.list);}return a.erase(this.clone).erase(this.element);
},insert:function(c,b){var a="inside";if(this.lists.contains(b)){this.list=b;this.drag.droppables=this.getDroppables();}else{a=this.element.getAllPrevious().contains(b)?"before":"after";
}this.element.inject(b,a);this.fireEvent("sort",[this.element,this.clone]);},start:function(b,a){if(!this.idle||b.rightClick||["button","input"].contains(document.id(b.target).get("tag"))){return;
}this.idle=false;this.element=a;this.opacity=a.get("opacity");this.list=a.getParent();this.clone=this.getClone(b,a);this.drag=new Drag.Move(this.clone,{preventDefault:this.options.preventDefault,snap:this.options.snap,container:this.options.constrain&&this.element.getParent(),droppables:this.getDroppables(),onSnap:function(){b.stop();
this.clone.setStyle("visibility","visible");this.element.set("opacity",this.options.opacity||0);this.fireEvent("start",[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.reset.bind(this),onComplete:this.end.bind(this)});
this.clone.inject(this.element,"before");this.drag.start(b);},end:function(){this.drag.detach();this.element.set("opacity",this.opacity);if(this.effect){var a=this.element.getStyles("width","height");
var b=this.clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));this.effect.element=this.clone;this.effect.start({top:b.top,left:b.left,width:a.width,height:a.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 c=Array.link(arguments,{modifier:Function.type,index:$defined});
var b=this.lists.map(function(d){return d.getChildren().map(c.modifier||function(f){return f.get("id");},this);},this);var a=c.index;if(this.lists.length==1){a=0;
}return $chk(a)&&a>=0&&a<this.lists.length?b[a]:b;}});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(a){this.setOptions(a);
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(c){if(!$chk(arguments[1])&&!this.check(c)){return this;
}var f=$type(c),a=this.options,b=$chk(arguments[1])?arguments[1]:this.requests++;if(f=="string"||f=="element"){c={data:c};}c=$extend({data:a.data,url:a.url},c);
if(!$chk(this.triesRemaining[b])){this.triesRemaining[b]=this.options.retries;}var d=this.triesRemaining[b];(function(){var g=this.getScript(c);this.log("JSONP retrieving script with url: "+g.get("src"));
this.fireEvent("request",g);this.running=true;(function(){if(d){this.triesRemaining[b]=d-1;if(g){g.destroy();this.send(c,b).fireEvent("retry",this.triesRemaining[b]);
}}else{if(this.running&&g&&this.options.timeout){g.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(c){var b=Request.JSONP.counter,d;
Request.JSONP.counter++;switch($type(c.data)){case"element":d=document.id(c.data).toQueryString();break;case"object":case"hash":d=Hash.toQueryString(c.data);
}var f=c.url+(c.url.test("\\?")?"&":"?")+(c.callbackKey||this.options.callbackKey)+"=Request.JSONP.request_map.request_"+b+(d?"&"+d:"");if(f.length>2083){this.log("JSONP "+f+" will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs");
}var a=new Element("script",{type:"text/javascript",src:f});Request.JSONP.request_map["request_"+b]=function(){this.success(arguments,a);}.bind(this);return a.inject(this.options.injectScript);
},success:function(b,a){if(!this.running){return false;}if(a){a.destroy();}this.running=false;this.log("JSONP successfully retrieved: ",b);this.fireEvent("complete",b).fireEvent("success",b).callChain();
}});Request.JSONP.counter=0;Request.JSONP.request_map={};Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(b){var a=function(){if(!this.running){this.send({data:b});
}};this.timer=a.delay(this.options.initialDelay,this);this.lastDelay=this.options.initialDelay;this.completeCheck=function(c){$clear(this.timer);this.lastDelay=(c)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);
this.timer=a.delay(this.lastDelay,this);};return this.addEvent("complete",this.completeCheck);},stopTimer:function(){$clear(this.timer);return this.removeEvent("complete",this.completeCheck);
}});var Asset={javascript:function(g,d){d=$extend({onload:$empty,document:document,check:$lambda(true)},d);if(d.onLoad){d.onload=d.onLoad;delete d.onLoad;
}var b=new Element("script",{src:g,type:"text/javascript"});var f=d.onload.bind(b),a=d.check,h=d.document;delete d.onload;delete d.check;delete d.document;
b.addEvents({load:f,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){f();}}}).set(d);if(Browser.Engine.webkit419){var c=(function(){if(!$try(a)){return;
}$clear(c);f();}).periodical(50);}return b.inject(h.head);},css:function(b,a){a=a||{};var c=a.onload||a.onLoad;if(c){a.events=a.events||{};a.events.load=c;
delete a.onload;delete a.onLoad;}return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:b},a)).inject(document.head);},image:function(c,b){b=$merge({onload:$empty,onabort:$empty,onerror:$empty},b);
var d=new Image();var a=document.id(d)||new Element("img");["load","abort","error"].each(function(f){var h="on"+f;var g=f.capitalize();if(b["on"+g]){b[h]=b["on"+g];
delete b["on"+g];}var i=b[h];delete b[h];d[h]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;
i.delay(1,a,a);a.fireEvent(f,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(d,c){c=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},c);
d=$splat(d);var a=[];var b=0;return new Elements(d.map(function(g,f){return Asset.image(g,$extend(c.properties,{onload:function(){c.onProgress.call(this,b,f);
b++;if(b==d.length){c.onComplete();}},onerror:function(){c.onError.call(this,b,f);b++;if(b==d.length){c.onComplete();}}}));}));}};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(b,a){this.element=document.id(b);
if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt();
if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c);
}c=($chk(this.options.zIndex)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this);
var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(!IframeShim.ready){window.addEvent("load",a);
}else{a();}}else{this.position=this.hide=this.show=this.dispose=$lambda(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this;}var a=this.element.measure(function(){return this.getSize();
});if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;
}this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none");
}return this;},show:function(){if(this.shim){this.shim.setStyle("display","block");}return this.position();},dispose:function(){if(this.shim){this.shim.dispose();
}return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this;}});window.addEvent("load",function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:["position"],options:{style:{},"class":"mask",maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(b,a){this.target=document.id(b)||document.id(document.body);
this.target.store("Mask",this);this.setOptions(a);this.render();this.inject();},render:function(){this.element=new Element("div",{"class":this.options["class"],id:this.options.id||"mask-"+$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(b,a){a=a||this.options.inject?this.options.inject.where:""||this.target==document.body?"inside":"after";
b=b||this.options.inject?this.options.inject.target:""||this.target;this.element.inject(b,a);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions);
this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height);
this.element.position({relativeTo:this.target,position:"topLeft",ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this;
},resize:function(a,f){var b={styles:["padding","border"]};if(this.options.maskMargins){b.styles.push("margin");}var d=this.target.getComputedSize(b);if(this.target==document.body){var c=window.getScrollSize();
if(d.totalHeight<c.y){d.totalHeight=c.y;}if(d.totalWidth<c.x){d.totalWidth=c.x;}}this.element.setStyles({width:$pick(a,d.totalWidth,d.x),height:$pick(f,d.totalHeight,d.y)});
return this;},show:function(){if(!this.hidden){return this;}window.addEvent("resize",this.position);this.position();this.showMask.apply(this,arguments);
return this;},showMask:function(){this.element.setStyle("display","block");this.hidden=false;this.fireEvent("show");},hide:function(){if(this.hidden){return this;
}window.removeEvent("resize",this.position);this.hideMask.apply(this,arguments);if(this.options.destroyOnHide){return this.destroy();}return this;},hideMask:function(){this.element.setStyle("display","none");
this.hidden=true;this.fireEvent("hide");},toggle:function(){this[this.hidden?"show":"hide"]();},destroy:function(){this.hide();this.element.destroy();this.fireEvent("destroy");
this.target.eliminate("mask");}});Element.Properties.mask={set:function(b){var a=this.retrieve("mask");return this.eliminate("mask").store("mask:options",b);
},get:function(a){if(a||!this.retrieve("mask")){if(this.retrieve("mask")){this.retrieve("mask").destroy();}if(a||!this.retrieve("mask:options")){this.set("mask",a);
}this.store("mask",new Mask(this,this.retrieve("mask:options")));}return this.retrieve("mask");}};Element.implement({mask:function(a){this.get("mask",a).show();
return this;},unmask:function(){this.get("mask").hide();return this;}});(function(){var a=function(c,b){return(c)?($type(c)=="function"?c(b):b.get(c)):"";
};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle("display","block");},onHide:function(){this.tip.setStyle("display","none");
},title:"title",text:function(b){return b.get("rel")||b.get("href");},showDelay:100,hideDelay:100,className:"tip-wrap",offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var b=Array.link(arguments,{options:Object.type,elements:$defined});
this.setOptions(b.options);if(b.elements){this.attach(b.elements);}this.container=new Element("div",{"class":"tip"});},toElement:function(){if(this.tip){return this.tip;
}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"}));
},attach:function(b){$$(b).each(function(d){var g=a(this.options.title,d),f=a(this.options.text,d);d.erase("title").store("tip:native",g).retrieve("tip:title",g);
d.retrieve("tip:text",f);this.fireEvent("attach",[d]);var c=["enter","leave"];if(!this.options.fixed){c.push("move");}c.each(function(i){var h=d.retrieve("tip:"+i);
if(!h){h=this["element"+i.capitalize()].bindWithEvent(this,d);}d.store("tip:"+i,h).addEvent("mouse"+i,h);},this);},this);return this;},detach:function(b){$$(b).each(function(d){["enter","leave","move"].each(function(f){d.removeEvent("mouse"+f,d.retrieve("tip:"+f)).eliminate("tip:"+f);
});this.fireEvent("detach",[d]);if(this.options.title=="title"){var c=d.retrieve("tip:native");if(c){d.set("title",c);}}},this);return this;},elementEnter:function(c,b){this.container.empty();
["title","text"].each(function(f){var d=b.retrieve("tip:"+f);if(d){this.fill(new Element("div",{"class":"tip-"+f}).inject(this.container),d);}},this);$clear(this.timer);
this.timer=(function(){this.show(b);this.position((this.options.fixed)?{page:b.getPosition()}:c);}).delay(this.options.showDelay,this);},elementLeave:function(c,b){$clear(this.timer);
this.timer=this.hide.delay(this.options.hideDelay,this,b);this.fireForParent(c,b);},fireForParent:function(c,b){b=b.getParent();if(!b||b==document.body){return;
}if(b.retrieve("tip:enter")){b.fireEvent("mouseenter",c);}else{this.fireForParent(c,b);}},elementMove:function(c,b){this.position(c);},position:function(f){if(!this.tip){document.id(this);
}var c=window.getSize(),b=window.getScroll(),g={x:this.tip.offsetWidth,y:this.tip.offsetHeight},d={x:"left",y:"top"},h={};for(var i in d){h[d[i]]=f.page[i]+this.options.offset[i];
if((h[d[i]]+g[i]-b[i])>c[i]-this.options.windowPadding[i]){h[d[i]]=f.page[i]-this.options.offset[i]-g[i];}}this.tip.setStyles(h);},fill:function(b,c){if(typeof c=="string"){b.set("html",c);
}else{b.adopt(c);}},show:function(b){if(!this.tip){document.id(this);}if(!this.tip.getParent()){this.tip.inject(document.body);}this.fireEvent("show",[this.tip,b]);
},hide:function(b){if(!this.tip){document.id(this);}this.fireEvent("hide",[this.tip,b]);}});})();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 a=function(){this.active=false;}.bind(this);this.addEvents({hide:a,show:a});},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(a){if(this.active){return this.chain(this.show.bind(this));}if(!this.hidden){this.callChain.delay(20,this);
return this;}this.active=true;return this.parent(a);},showMask:function(a){var b=function(){this.content.position($merge({relativeTo:this.element},this.options.containerPosition));
}.bind(this);if(a){this.parent();b();}else{this.element.setStyles({display:"block",opacity:0}).tween("opacity",this.options.style.opacity||0.9);b();this.hidden=false;
this.fireEvent("show");this.callChain();}},hide:function(a){if(this.active){return this.chain(this.hide.bind(this));}if(this.hidden){this.callChain.delay(20,this);
return this;}this.active=true;return this.parent(a);},hideMask:function(a){if(a){return this.parent();}this.element.tween("opacity",0).get("tween").chain(function(){this.element.setStyle("display","none");
this.hidden=true;this.fireEvent("hide");this.callChain();}.bind(this));},destroy:function(){this.content.destroy();this.parent();this.target.eliminate("spinner");
}});Spinner.implement(new Chain);Request=Class.refactor(Request,{options:{useSpinner:false,spinnerOptions:{},spinnerTarget:false},initialize:function(a){this._send=this.send;
this.send=function(b){var c=this.getSpinner();if(c){c.chain(this._send.bind(this,b)).show();}else{this._send(b);}return this;};this.previous(a);},getSpinner:function(){if(!this.spinner){var a=document.id(this.options.spinnerTarget)||document.id(this.options.update);
if(this.options.useSpinner&&a){this.spinner=a.get("spinner",this.options.spinnerOptions);["onComplete","onException","onCancel"].each(function(b){this.addEvent(b,this.spinner.hide.bind(this.spinner));
},this);}}return this.spinner;}});Element.Properties.spinner={set:function(a){var b=this.retrieve("spinner");return this.eliminate("spinner").store("spinner:options",a);
},get:function(a){if(a||!this.retrieve("spinner")){if(this.retrieve("spinner")){this.retrieve("spinner").destroy();}if(a||!this.retrieve("spinner:options")){this.set("spinner",a);
}new Spinner(this,this.retrieve("spinner:options"));}return this.retrieve("spinner");}};Element.implement({spin:function(a){this.get("spinner",a).show();
return this;},unspin:function(){var a=Array.link(arguments,{options:Object.type,callback:Function.type});this.get("spinner",a.options).hide(a.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(a){return(a>3&&a<21)?"th":["th","st","nd","rd","th"][Math.min(a%10,4)];
},lessThanMinuteAgo:"less than a minute ago",minuteAgo:"about a minute ago",minutesAgo:"{delta} minutes ago",hourAgo:"about an hour ago",hoursAgo:"about {delta} hours ago",dayAgo:"1 day ago",daysAgo:"{delta} days ago",weekAgo:"1 week ago",weeksAgo:"{delta} weeks ago",monthAgo:"1 month ago",monthsAgo:"{delta} months ago",yearAgo:"1 year ago",yearsAgo:"{delta} years ago",lessThanMinuteUntil:"less than a minute from now",minuteUntil:"about a minute from now",minutesUntil:"{delta} minutes from now",hourUntil:"about an hour from now",hoursUntil:"about {delta} hours from now",dayUntil:"1 day from now",daysUntil:"{delta} days from now",weekUntil:"1 week from now",weeksUntil:"{delta} weeks from now",monthUntil:"1 month from now",monthsUntil:"{delta} months from now",yearUntil:"1 year from now",yearsUntil:"{delta} years from now"});
MooTools.lang.set("en-GB","Date",{dateOrder:["date","month","year"],shortDate:"%d/%m/%Y",shortTime:"%H:%M"}).set("cascade",["en-US"]);

var jwplayer=function(b){return jwplayer.constructor(b)};jwplayer.constructor=function(b){};var $jw=jwplayer;jwplayer.version="5.4.1492 (Licensed version)";(function(d){d.utils=function(){};d.utils.typeOf=function(a){var b=typeof a;if(b==="object"){if(a){if(a instanceof Array){b="array"}}else{b="null"}}return b};d.utils.extend=function(){var c=d.utils.extend["arguments"];if(c.length>1){for(var a=1;a<c.length;a++){for(var b in c[a]){c[0][b]=c[a][b]}}return c[0]}return null};d.utils.clone=function(a){var h;var c=d.utils.clone["arguments"];if(c.length==1){switch(d.utils.typeOf(c[0])){case"object":h={};for(var b in c[0]){h[b]=d.utils.clone(c[0][b])}break;case"array":h=[];for(var b in c[0]){h[b]=d.utils.clone(c[0][b])}break;default:return c[0];break}}return h};d.utils.extension=function(a){a=a.substring(a.lastIndexOf("/")+1,a.length);a=a.split("?")[0];if(a.lastIndexOf(".")>-1){return a.substr(a.lastIndexOf(".")+1,a.length).toLowerCase()}return""};d.utils.html=function(b,a){b.innerHTML=a};d.utils.append=function(b,a){b.appendChild(a)};d.utils.wrap=function(b,a){b.parentNode.replaceChild(a,b);a.appendChild(b)};d.utils.ajax=function(a,b,h){var c;if(window.XMLHttpRequest){c=new XMLHttpRequest()}else{c=new ActiveXObject("Microsoft.XMLHTTP")}c.onreadystatechange=function(){if(c.readyState===4){if(c.status===200){if(b){b(c)}}else{if(h){h(a)}}}};c.open("GET",a,true);c.send(null);return c};d.utils.load=function(b,a,c){b.onreadystatechange=function(){if(b.readyState===4){if(b.status===200){if(a){a()}}else{if(c){c()}}}}};d.utils.find=function(a,b){return a.getElementsByTagName(b)};d.utils.append=function(b,a){b.appendChild(a)};d.utils.isIE=function(){return(!+"\v1")};d.utils.isLegacyAndroid=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/android 2.[012]/i)!==null)};d.utils.isIOS=function(){var a=navigator.userAgent.toLowerCase();return(a.match(/iP(hone|ad)/i)!==null)};d.utils.getFirstPlaylistItemFromConfig=function(c){var b={};var a;if(c.playlist&&c.playlist.length){a=c.playlist[0]}else{a=c}b.file=a.file;b.levels=a.levels;b.streamer=a.streamer;b.playlistfile=a.playlistfile;if(b.file&&b.file.toLowerCase().indexOf("youtube.com")>-1){b.provider="youtube"}if(b.streamer&&b.streamer.toLowerCase().indexOf("rtmp://")==0){b.provider="rtmp"}if(a.type){b.provider=a.type.toLowerCase()}else{if(a.provider){b.provider=a.provider.toLowerCase()}}return b};d.utils.flashSupportsConfig=function(c){if(d.utils.hasFlash()){if(c){var a=d.utils.getFirstPlaylistItemFromConfig(c);if(typeof a.file=="undefined"&&typeof a.levels=="undefined"){return true}else{if(a.file){return d.utils.flashCanPlay(a.file,a.provider)}else{if(a.levels&&a.levels.length){for(var b=0;b<a.levels.length;b++){if(a.levels[b].file&&d.utils.flashCanPlay(a.levels[b].file,a.provider)){return true}}}}}}else{return true}}return false};d.utils.flashCanPlay=function(h,b){var c=["video","http","sound","image"];if(b&&(c.indexOf(b<0))){return true}var a=d.utils.extension(h);if(!a){return true}if(d.utils.extensionmap[a]!==undefined&&d.utils.extensionmap[a].flash===undefined){return false}return true};d.utils.html5SupportsConfig=function(c){var h=document.createElement("video");if(!!h.canPlayType){if(c){var a=d.utils.getFirstPlaylistItemFromConfig(c);if(typeof a.file=="undefined"&&typeof a.levels=="undefined"){return true}else{if(a.file){return d.utils.html5CanPlay(h,a.file,a.provider,a.playlistfile)}else{if(a.levels&&a.levels.length){for(var b=0;b<a.levels.length;b++){if(a.levels[b].file&&d.utils.html5CanPlay(h,a.levels[b].file,a.provider,a.playlistfile)){return true}}}}}}else{return true}}return false};d.utils.html5CanPlay=function(c,i,b,j){if(j){return false}if(b&&b=="youtube"){return true}if(b&&b!="video"){return false}var a=d.utils.extension(i);if(d.utils.isLegacyAndroid()&&a.match(/m4v|mp4/)){return true}return d.utils.browserCanPlay(c,a)};d.utils.browserCanPlay=function(b,a){var c;if(!a){return true}else{if(d.utils.extensionmap[a]!==undefined&&d.utils.extensionmap[a].html5===undefined){return false}else{if(d.utils.extensionmap[a]!==undefined&&d.utils.extensionmap[a].html5!==undefined){c=d.utils.extensionmap[a].html5}else{c="video/"+a+";"}}}return b.canPlayType(c)};d.utils.downloadSupportsConfig=function(c){if(c){var a=d.utils.getFirstPlaylistItemFromConfig(c);if(typeof a.file=="undefined"&&typeof a.levels=="undefined"){return true}else{if(a.file){return d.utils.canDownload(a.file,a.provider,a.playlistfile)}else{if(a.levels&&a.levels.length){for(var b=0;b<a.levels.length;b++){if(a.levels[b].file&&d.utils.canDownload(a.levels[b].file,a.provider,a.playlistfile)){return true}}}}}}else{return true}};d.utils.canDownload=function(i,b,j){if(j){return false}var c=["image","sound","youtube"];if(b&&(c.indexOf(b)>-1)){return true}if(!b||(b&&b=="video")){var a=d.utils.extension(i);if(a&&d.utils.extensionmap[a]){return true}}return false};d.utils.getOuterHTML=function(c){if(c.outerHTML){return c.outerHTML}else{var b=c.parentNode;var h=document.createElement(b.tagName);h.appendChild(c);var a=h.innerHTML;b.appendChild(c);return a}};d.utils.setOuterHTML=function(b,c){if(b.outerHTML){b.outerHTML=c}else{var a=document.createElement("div");a.innerHTML=c;var j=document.createRange();j.selectNodeContents(a);var i=j.extractContents();b.parentNode.insertBefore(i,b);b.parentNode.removeChild(b)}};d.utils.hasFlash=function(){return(typeof navigator.plugins!="undefined"&&typeof navigator.plugins["Shockwave Flash"]!="undefined")||(typeof window.ActiveXObject!="undefined")};d.utils.getPluginName=function(a){if(a.lastIndexOf("/")>=0){a=a.substring(a.lastIndexOf("/")+1,a.length)}if(a.lastIndexOf("-")>=0){a=a.substring(0,a.lastIndexOf("-"))}if(a.lastIndexOf(".swf")>=0){a=a.substring(0,a.lastIndexOf(".swf"))}return a};d.utils.getAbsolutePath=function(b,c){if(c===undefined){c=document.location.href}if(b===undefined){return undefined}if(e(b)){return b}var a=c.substring(0,c.indexOf("://")+3);var i=c.substring(a.length,c.indexOf("/",a.length+1));var o;if(b.indexOf("/")===0){o=b.split("/")}else{var n=c.split("?")[0];n=n.substring(a.length+i.length+1,n.lastIndexOf("/"));o=n.split("/").concat(b.split("/"))}var p=[];for(var m=0;m<o.length;m++){if(!o[m]||o[m]===undefined||o[m]=="."){continue}else{if(o[m]==".."){p.pop()}else{p.push(o[m])}}}return a+i+"/"+p.join("/")};function e(b){if(b===null){return}var a=b.indexOf("://");var c=b.indexOf("?");return(a>0&&(c<0||(c>a)))}d.utils.mapEmpty=function(b){for(var a in b){return false}return true};d.utils.mapLength=function(b){var c=0;for(var a in b){c++}return c};d.utils.log=function(a,b){if(typeof console!="undefined"&&typeof console.log!="undefined"){if(b){console.log(a,b)}else{console.log(a)}}};d.utils.css=function(i,a,j){if(i!==undefined){for(var c in a){try{if(typeof a[c]==="undefined"){continue}else{if(typeof a[c]=="number"&&!(c=="zIndex"||c=="opacity")){if(isNaN(a[c])){continue}if(c.match(/color/i)){a[c]="#"+f(a[c].toString(16),6)}else{a[c]=a[c]+"px"}}}i.style[c]=a[c]}catch(b){}}}};function f(b,a){while(b.length<a){b="0"+b}return b}d.utils.isYouTube=function(a){return a.indexOf("youtube.com")>-1};d.utils.getYouTubeId=function(a){a.indexOf("youtube.com">0)};d.utils.transform=function(b,a){b.style.webkitTransform=a;b.style.MozTransform=a;b.style.OTransform=a};d.utils.stretch=function(q,a,b,s,c,r){if(typeof b=="undefined"||typeof s=="undefined"||typeof c=="undefined"||typeof r=="undefined"){return}var u=b/c;var t=s/r;var o=0;var p=0;a.style.overflow="hidden";d.utils.transform(a,"");var v={};switch(q.toLowerCase()){case d.utils.stretching.NONE:v.width=c;v.height=r;break;case d.utils.stretching.UNIFORM:if(u>t){v.width=c*t;v.height=r*t}else{v.width=c*u;v.height=r*u}break;case d.utils.stretching.FILL:if(u>t){v.width=c*u;v.height=r*u}else{v.width=c*t;v.height=r*t}break;case d.utils.stretching.EXACTFIT:d.utils.transform(a,["scale(",u,",",t,")"," translate(0px,0px)"].join(""));v.width=c;v.height=r;break;default:break}v.top=(s-v.height)/2;v.left=(b-v.width)/2;d.utils.css(a,v)};d.utils.stretching={NONE:"none",FILL:"fill",UNIFORM:"uniform",EXACTFIT:"exactfit"}})(jwplayer);(function(n){n.utils.mediaparser=function(){};var l={element:{width:"width",height:"height",id:"id","class":"className",name:"name"},media:{src:"file",preload:"preload",autoplay:"autostart",loop:"repeat",controls:"controls"},source:{src:"file",type:"type",media:"media","data-jw-width":"width","data-jw-bitrate":"bitrate"},video:{poster:"image"}};var m={};n.utils.mediaparser.parseMedia=function(a){return o(a)};function p(a,b){if(b===undefined){b=l[a]}else{n.utils.extend(b,l[a])}return b}function o(a,e){if(m[a.tagName.toLowerCase()]&&(e===undefined)){return m[a.tagName.toLowerCase()](a)}else{e=p("element",e);var f={};for(var d in e){if(d!="length"){var b=a.getAttribute(d);if(!(b===""||b===undefined||b===null)){f[e[d]]=a.getAttribute(d)}}}var c=a.style["#background-color"];if(c&&!(c=="transparent"||c=="rgba(0, 0, 0, 0)")){f.screencolor=c}return f}}function k(f,c){c=p("media",c);var a=[];if(n.utils.isIE()){var b=f.nextSibling;if(b!==undefined){while(b.tagName.toLowerCase()=="source"){a.push(j(b));b=b.nextSibling}}}else{var d=n.utils.selectors("source",f);for(var g in d){if(!isNaN(g)){a.push(j(d[g]))}}}var e=o(f,c);if(e.file!==undefined){a[0]={file:e.file}}e.levels=a;return e}function j(a,b){b=p("source",b);var c=o(a,b);c.width=c.width?c.width:0;c.bitrate=c.bitrate?c.bitrate:0;return c}function i(a,b){b=p("video",b);var c=k(a,b);return c}n.utils.mediaparser.replaceMediaElement=function(e,c){if(n.utils.isIE()){var b=false;var f=[];var a=e.nextSibling;while(a&&!b){f.push(a);if(a.nodeType==1&&a.tagName.toLowerCase()==("/")+e.tagName.toLowerCase()){b=true}a=a.nextSibling}if(b){while(f.length>0){var d=f.pop();d.parentNode.removeChild(d)}}e.outerHTML=c}};m.media=k;m.audio=k;m.source=j;m.video=i})(jwplayer);(function(b){b.utils.selectors=function(a,e){if(e===undefined){e=document}a=b.utils.strings.trim(a);var f=a.charAt(0);if(f=="#"){return e.getElementById(a.substr(1))}else{if(f=="."){if(e.getElementsByClassName){return e.getElementsByClassName(a.substr(1))}else{return b.utils.selectors.getElementsByTagAndClass("*",a.substr(1))}}else{if(a.indexOf(".")>0){selectors=a.split(".");return b.utils.selectors.getElementsByTagAndClass(selectors[0],selectors[1])}else{return e.getElementsByTagName(a)}}}return null};b.utils.selectors.getElementsByTagAndClass=function(l,i,j){elements=[];if(j===undefined){j=document}var k=j.getElementsByTagName(l);for(var m=0;m<k.length;m++){if(k[m].className!==undefined){var n=k[m].className.split(" ");for(var a=0;a<n.length;a++){if(n[a]==i){elements.push(k[m])}}}}return elements}})(jwplayer);(function(b){b.utils.strings=function(){};b.utils.strings.trim=function(a){return a.replace(/^\s*/,"").replace(/\s*$/,"")}})(jwplayer);(function(j){var i=new RegExp(/^(#|0x)[0-9a-fA-F]{3,6}/);j.utils.typechecker=function(a,b){b=b===null?f(a):b;return h(a,b)};function f(b){var a=["true","false","t","f"];if(a.indexOf(b.toLowerCase().replace(" ",""))>=0){return"boolean"}else{if(i.test(b)){return"color"}else{if(!isNaN(parseInt(b,10))&&parseInt(b,10).toString().length==b.length){return"integer"}else{if(!isNaN(parseFloat(b))&&parseFloat(b).toString().length==b.length){return"float"}}}}return"string"}function h(a,b){if(b===null){return a}switch(b){case"color":if(a.length>0){return g(a)}return null;case"integer":return parseInt(a,10);case"float":return parseFloat(a);case"boolean":if(a.toLowerCase()=="true"){return true}else{if(a=="1"){return true}}return false}return a}function g(a){switch(a.toLowerCase()){case"blue":return parseInt("0000FF",16);case"green":return parseInt("00FF00",16);case"red":return parseInt("FF0000",16);case"cyan":return parseInt("00FFFF",16);case"magenta":return parseInt("FF00FF",16);case"yellow":return parseInt("FFFF00",16);case"black":return parseInt("000000",16);case"white":return parseInt("FFFFFF",16);default:a=a.replace(/(#|0x)?([0-9A-F]{3,6})$/gi,"$2");if(a.length==3){a=a.charAt(0)+a.charAt(0)+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2)}return parseInt(a,16)}return parseInt("000000",16)}})(jwplayer);(function(d){var c={};d.utils.animations=function(){};d.utils.animations.transform=function(b,a){b.style.webkitTransform=a;b.style.MozTransform=a;b.style.OTransform=a};d.utils.animations.transformOrigin=function(b,a){b.style.webkitTransformOrigin=a;b.style.MozTransformOrigin=a;b.style.OTransformOrigin=a};d.utils.animations.rotate=function(b,a){d.utils.animations.transform(b,["rotate(",a,"deg)"].join(""))};d.utils.cancelAnimation=function(a){delete c[a.id]};d.utils.fadeTo=function(a,q,r,n,o,s){if(c[a.id]!=s&&s!==undefined){return}var t=new Date().getTime();if(s>t){setTimeout(function(){d.utils.fadeTo(a,q,r,n,0,s)},s-t)}a.style.display="block";if(n===undefined){n=a.style.opacity===""?1:a.style.opacity}if(a.style.opacity==q&&a.style.opacity!==""&&s!==undefined){if(q===0){a.style.display="none"}return}if(s===undefined){s=t;c[a.id]=s}if(o===undefined){o=0}var m=(t-s)/(r*1000);m=m>1?1:m;var b=q-n;var p=n+(m*b);if(p>1){p=1}else{if(p<0){p=0}}a.style.opacity=p;if(o>0){c[a.id]=s+o*1000;d.utils.fadeTo(a,q,r,n,0,c[a.id]);return}setTimeout(function(){d.utils.fadeTo(a,q,r,n,0,s)},10)}})(jwplayer);(function(b){b.utils.extensionmap={"3gp":{html5:"video/3gpp",flash:"video"},"3gpp":{html5:"video/3gpp"},"3g2":{html5:"video/3gpp2",flash:"video"},"3gpp2":{html5:"video/3gpp2"},flv:{flash:"video"},f4a:{html5:"audio/mp4"},f4b:{html5:"audio/mp4",flash:"video"},f4p:{html5:"video/mp4",flash:"video"},f4v:{html5:"video/mp4",flash:"video"},mov:{html5:"video/quicktime",flash:"video"},m4a:{html5:"audio/mp4",flash:"video"},m4b:{html5:"audio/mp4"},m4p:{html5:"audio/mp4"},m4v:{html5:"video/mp4",flash:"video"},mkv:{html5:"video/x-matroska"},mp4:{html5:"video/mp4",flash:"video"},rbs:{flash:"sound"},sdp:{html5:"application/sdp",flash:"video"},vp6:{html5:"video/x-vp6"},aac:{html5:"audio/aac",flash:"video"},mp3:{flash:"sound"},ogg:{html5:"audio/ogg"},ogv:{html5:"video/ogg"},webm:{html5:"video/webm"},m3u8:{html5:"audio/x-mpegurl"},gif:{flash:"image"},jpeg:{flash:"image"},jpg:{flash:"image"},swf:{flash:"image"},png:{flash:"image"}}})(jwplayer);(function(c){var d=[];c.constructor=function(a){return c.api.selectPlayer(a)};c.api=function(){};c.api.events={API_READY:"jwplayerAPIReady",JWPLAYER_READY:"jwplayerReady",JWPLAYER_FULLSCREEN:"jwplayerFullscreen",JWPLAYER_RESIZE:"jwplayerResize",JWPLAYER_ERROR:"jwplayerError",JWPLAYER_MEDIA_BUFFER:"jwplayerMediaBuffer",JWPLAYER_MEDIA_BUFFER_FULL:"jwplayerMediaBufferFull",JWPLAYER_MEDIA_ERROR:"jwplayerMediaError",JWPLAYER_MEDIA_LOADED:"jwplayerMediaLoaded",JWPLAYER_MEDIA_COMPLETE:"jwplayerMediaComplete",JWPLAYER_MEDIA_TIME:"jwplayerMediaTime",JWPLAYER_MEDIA_VOLUME:"jwplayerMediaVolume",JWPLAYER_MEDIA_META:"jwplayerMediaMeta",JWPLAYER_MEDIA_MUTE:"jwplayerMediaMute",JWPLAYER_PLAYER_STATE:"jwplayerPlayerState",JWPLAYER_PLAYLIST_LOADED:"jwplayerPlaylistLoaded",JWPLAYER_PLAYLIST_ITEM:"jwplayerPlaylistItem"};c.api.events.state={BUFFERING:"BUFFERING",IDLE:"IDLE",PAUSED:"PAUSED",PLAYING:"PLAYING"};c.api.PlayerAPI=function(y){this.container=y;this.id=y.id;var s={};var a={};var z=[];var v=undefined;var t=false;var u=[];var p=c.utils.getOuterHTML(y);var b={};var r=0;this.setPlayer=function(e){v=e};this.stateListener=function(f,e){if(!a[f]){a[f]=[];this.eventListener(c.api.events.JWPLAYER_PLAYER_STATE,w(f))}a[f].push(e);return this};function w(e){return function(i){var j=i.newstate,g=i.oldstate;if(j==e){var h=a[j];if(h){for(var f=0;f<h.length;f++){if(typeof h[f]=="function"){h[f].call(this,{oldstate:g,newstate:j})}}}}}}this.addInternalListener=function(f,e){f.jwAddEventListener(e,'function(dat) { jwplayer("'+this.id+'").dispatchEvent("'+e+'", dat); }')};this.eventListener=function(f,e){if(!s[f]){s[f]=[];if(v&&t){this.addInternalListener(v,f)}}s[f].push(e);return this};this.dispatchEvent=function(e){if(s[e]){var f=x(e,arguments[1]);for(var g=0;g<s[e].length;g++){if(typeof s[e][g]=="function"){s[e][g].call(this,f)}}}};function x(g,i){var e=c.utils.extend({},i);if(g==c.api.events.JWPLAYER_FULLSCREEN&&!e.fullscreen){e.fullscreen=e.message=="true"?true:false;delete e.message}else{if(typeof e.data=="object"){e=c.utils.extend(e,e.data);delete e.data}}var h=["position","duration","offset"];for(var f in h){if(e[h[f]]){e[h[f]]=Math.round(e[h[f]]*1000)/1000}}return e}this.callInternal=function(e,f){if(t){if(typeof v!="undefined"&&typeof v[e]=="function"){if(f!==undefined){return(v[e])(f)}else{return(v[e])()}}return null}else{u.push({method:e,parameters:f})}};this.playerReady=function(e){t=true;if(!v){this.setPlayer(document.getElementById(e.id))}this.container=document.getElementById(this.id);for(var g in s){this.addInternalListener(v,g)}this.eventListener(c.api.events.JWPLAYER_PLAYLIST_ITEM,function(h){if(h.index!==undefined){r=h.index}b={}});this.eventListener(c.api.events.JWPLAYER_MEDIA_META,function(h){c.utils.extend(b,h.metadata)});this.dispatchEvent(c.api.events.API_READY);while(u.length>0){var f=u.shift();this.callInternal(f.method,f.parameters)}};this.getItemMeta=function(){return b};this.getCurrentItem=function(){return r};this.destroy=function(){s={};u=[];if(c.utils.getOuterHTML(this.container)!=p){c.api.destroyPlayer(this.id,p)}};function q(g,e,f){var i=[];if(!e){e=0}if(!f){f=g.length-1}for(var h=e;h<=f;h++){i.push(g[h])}return i}};c.api.PlayerAPI.prototype={container:undefined,options:undefined,id:undefined,getBuffer:function(){return this.callInternal("jwGetBuffer")},getDuration:function(){return this.callInternal("jwGetDuration")},getFullscreen:function(){return this.callInternal("jwGetFullscreen")},getHeight:function(){return this.callInternal("jwGetHeight")},getLockState:function(){return this.callInternal("jwGetLockState")},getMeta:function(){return this.getItemMeta()},getMute:function(){return this.callInternal("jwGetMute")},getPlaylist:function(){var a=this.callInternal("jwGetPlaylist");for(var b=0;b<a.length;b++){if(a[b].index===undefined){a[b].index=b}}return a},getPlaylistItem:function(a){if(a===undefined){a=this.getCurrentItem()}return this.getPlaylist()[a]},getPosition:function(){return this.callInternal("jwGetPosition")},getState:function(){return this.callInternal("jwGetState")},getVolume:function(){return this.callInternal("jwGetVolume")},getWidth:function(){return this.callInternal("jwGetWidth")},setFullscreen:function(a){if(a===undefined){this.callInternal("jwSetFullscreen",!this.callInternal("jwGetFullscreen"))}else{this.callInternal("jwSetFullscreen",a)}return this},setMute:function(a){if(a===undefined){this.callInternal("jwSetMute",!this.callInternal("jwGetMute"))}else{this.callInternal("jwSetMute",a)}return this},lock:function(){return this},unlock:function(){return this},load:function(a){this.callInternal("jwLoad",a);return this},playlistItem:function(a){this.callInternal("jwPlaylistItem",a);return this},playlistPrev:function(){this.callInternal("jwPlaylistPrev");return this},playlistNext:function(){this.callInternal("jwPlaylistNext");return this},resize:function(a,b){this.container.width=a;this.container.height=b;return this},play:function(a){if(typeof a=="undefined"){a=this.getState();if(a==c.api.events.state.PLAYING||a==c.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPlay",a)}return this},pause:function(a){if(typeof a=="undefined"){a=this.getState();if(a==c.api.events.state.PLAYING||a==c.api.events.state.BUFFERING){this.callInternal("jwPause")}else{this.callInternal("jwPlay")}}else{this.callInternal("jwPause",a)}return this},stop:function(){this.callInternal("jwStop");return this},seek:function(a){this.callInternal("jwSeek",a);return this},setVolume:function(a){this.callInternal("jwSetVolume",a);return this},onBufferChange:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_BUFFER,a)},onBufferFull:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_BUFFER_FULL,a)},onError:function(a){return this.eventListener(c.api.events.JWPLAYER_ERROR,a)},onFullscreen:function(a){return this.eventListener(c.api.events.JWPLAYER_FULLSCREEN,a)},onMeta:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_META,a)},onMute:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_MUTE,a)},onPlaylist:function(a){return this.eventListener(c.api.events.JWPLAYER_PLAYLIST_LOADED,a)},onPlaylistItem:function(a){return this.eventListener(c.api.events.JWPLAYER_PLAYLIST_ITEM,a)},onReady:function(a){return this.eventListener(c.api.events.API_READY,a)},onResize:function(a){return this.eventListener(c.api.events.JWPLAYER_RESIZE,a)},onComplete:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_COMPLETE,a)},onTime:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_TIME,a)},onVolume:function(a){return this.eventListener(c.api.events.JWPLAYER_MEDIA_VOLUME,a)},onBuffer:function(a){return this.stateListener(c.api.events.state.BUFFERING,a)},onPause:function(a){return this.stateListener(c.api.events.state.PAUSED,a)},onPlay:function(a){return this.stateListener(c.api.events.state.PLAYING,a)},onIdle:function(a){return this.stateListener(c.api.events.state.IDLE,a)},setup:function(a){return this},remove:function(){this.destroy()},initializePlugin:function(b,a){return this}};c.api.selectPlayer=function(b){var f;if(b===undefined){b=0}if(b.nodeType){f=b}else{if(typeof b=="string"){f=document.getElementById(b)}}if(f){var a=c.api.playerById(f.id);if(a){return a}else{return c.api.addPlayer(new c.api.PlayerAPI(f))}}else{if(typeof b=="number"){return c.getPlayers()[b]}}return null};c.api.playerById=function(a){for(var b=0;b<d.length;b++){if(d[b].id==a){return d[b]}}return null};c.api.addPlayer=function(b){for(var a=0;a<d.length;a++){if(d[a]==b){return b}}d.push(b);return b};c.api.destroyPlayer=function(i,k){var j=-1;for(var a=0;a<d.length;a++){if(d[a].id==i){j=a;continue}}if(j>=0){var l=document.getElementById(d[j].id);if(l){if(k){c.utils.setOuterHTML(l,k)}else{var b=document.createElement("div");b.setAttribute("id",l.id);l.parentNode.replaceChild(b,l)}}d.splice(j,1)}return null};c.getPlayers=function(){return d.slice(0)}})(jwplayer);var _userPlayerReady=(typeof playerReady=="function")?playerReady:undefined;playerReady=function(c){var d=jwplayer.api.playerById(c.id);if(d){d.playerReady(c)}if(_userPlayerReady){_userPlayerReady.call(this,c)}};(function(e){e.embed=function(){};e.embed.Embedder=function(a){this.constructor(a)};function f(){return[{type:"flash",src:"player.swf"},{type:"html5"},{type:"download"}]}e.embed.defaults={width:400,height:300,players:f(),components:{controlbar:{position:"over"}}};e.embed.Embedder.prototype={config:undefined,api:undefined,events:{},players:undefined,constructor:function(a){this.api=a;var b=e.utils.mediaparser.parseMedia(this.api.container);this.config=this.parseConfig(e.utils.extend({},e.embed.defaults,b,this.api.config))},embedPlayer:function(){var i=this.players[0];if(i&&i.type){switch(i.type){case"flash":if(e.utils.flashSupportsConfig(this.config)){if(this.config.file&&!this.config.provider){switch(e.utils.extension(this.config.file).toLowerCase()){case"webm":case"ogv":case"ogg":this.config.provider="video";break}}if(this.config.levels||this.config.playlist){this.api.onReady(this.loadAfterReady(this.config))}this.config.id=this.api.id;var a=e.embed.embedFlash(document.getElementById(this.api.id),i,this.config);this.api.container=a;this.api.setPlayer(a)}else{this.players.splice(0,1);return this.embedPlayer()}break;case"html5":if(e.utils.html5SupportsConfig(this.config)){var b=e.embed.embedHTML5(document.getElementById(this.api.id),i,this.config);this.api.container=document.getElementById(this.api.id);this.api.setPlayer(b)}else{this.players.splice(0,1);return this.embedPlayer()}break;case"download":if(e.utils.downloadSupportsConfig(this.config)){var c=e.utils.getFirstPlaylistItemFromConfig(this.config);var j=e.embed.embedDownloadLink(document.getElementById(this.api.id),i,this.config);this.api.container=document.getElementById(this.api.id);this.api.setPlayer(j)}else{this.players.splice(0,1);return this.embedPlayer()}break}}else{this.api.container.innerHTML="<p>No suitable players found</p>"}this.setupEvents();return this.api},setupEvents:function(){for(var a in this.events){if(typeof this.api[a]=="function"){(this.api[a]).call(this.api,this.events[a])}}},loadAfterReady:function(a){return function(b){if(a.playlist){this.load(a.playlist)}else{if(a.levels){var c=this.getPlaylistItem(0);if(!c){c=a}if(!c.image){c.image=a.image}if(!c.levels){c.levels=a.levels}this.load(c)}}}},parseConfig:function(b){var a=e.utils.extend({},b);if(a.events){this.events=a.events;delete a.events}if(a.players){this.players=a.players;delete a.players}if(a.plugins){if(typeof a.plugins=="object"){a=e.utils.extend(a,e.embed.parsePlugins(a.plugins))}}if(a.playlist&&typeof a.playlist==="string"&&!a["playlist.position"]){a["playlist.position"]=a.playlist;delete a.playlist}if(a.controlbar&&typeof a.controlbar==="string"&&!a["controlbar.position"]){a["controlbar.position"]=a.controlbar;delete a.controlbar}return a}};e.embed.embedFlash=function(p,n,b){var o=e.utils.extend({},b);var r=o.width;delete o.width;var a=o.height;delete o.height;delete o.levels;delete o.playlist;var q="opaque";if(o.wmode){q=o.wmode}e.embed.parseConfigBlock(o,"components");e.embed.parseConfigBlock(o,"providers");if(e.utils.isIE()){var c='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+r+'" height="'+a+'" id="'+p.id+'" name="'+p.id+'">';c+='<param name="movie" value="'+n.src+'">';c+='<param name="allowfullscreen" value="true">';c+='<param name="allowscriptaccess" value="always">';c+='<param name="wmode" value="'+q+'">';c+='<param name="flashvars" value="'+e.embed.jsonToFlashvars(o)+'">';c+="</object>";if(p.tagName.toLowerCase()=="video"){e.utils.mediaparser.replaceMediaElement(p,c)}else{p.outerHTML=c}return document.getElementById(p.id)}else{var m=document.createElement("object");m.setAttribute("type","application/x-shockwave-flash");m.setAttribute("data",n.src);m.setAttribute("width",r);m.setAttribute("height",a);m.setAttribute("id",p.id);m.setAttribute("name",p.id);e.embed.appendAttribute(m,"allowfullscreen","true");e.embed.appendAttribute(m,"allowscriptaccess","always");e.embed.appendAttribute(m,"wmode",q);e.embed.appendAttribute(m,"flashvars",e.embed.jsonToFlashvars(o));p.parentNode.replaceChild(m,p);return m}};e.embed.embedHTML5=function(c,a,b){if(e.html5){c.innerHTML="";var h=e.utils.extend({screencolor:"0x000000"},b);e.embed.parseConfigBlock(h,"components");if(h.levels&&!h.sources){h.sources=b.levels}if(h.skin&&h.skin.toLowerCase().indexOf(".zip")>0){h.skin=h.skin.replace(/\.zip/i,".xml")}return new (e.html5(c)).setup(h)}else{return null}};e.embed.embedDownloadLink=function(y,v,c){var w=e.utils.extend({},c);var q={};var x=c.width?c.width:480;if(typeof x!="number"){x=parseInt(x,10)}var s=c.height?c.height:320;if(typeof s!="number"){s=parseInt(s,10)}var a,r,t;var b={};if(c.playlist&&c.playlist.length){b.file=c.playlist[0].file;r=c.playlist[0].image;b.levels=c.playlist[0].levels}else{b.file=c.file;r=c.image;b.levels=c.levels}if(b.file){a=b.file}else{if(b.levels&&b.levels.length){a=b.levels[0].file}}t=a?"pointer":"auto";var u={display:{style:{cursor:t,width:x,height:s,backgroundColor:"#000",position:"relative",textDecoration:"none",border:"none",display:"block"}},display_icon:{style:{cursor:t,position:"absolute",display:a?"block":"none",top:0,left:0,border:0,margin:0,padding:0,zIndex:3,width:50,height:50,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg==)"}},display_iconBackground:{style:{cursor:t,position:"absolute",display:a?"block":"none",top:((s-50)/2),left:((x-50)/2),border:0,width:50,height:50,margin:0,padding:0,zIndex:2,backgroundImage:"url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC)"}},display_image:{style:{width:x,height:s,display:r?"block":"none",position:"absolute",cursor:t,left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1,border:"none"}}};var z=function(j,h,g){var i=document.createElement(j);if(g){i.id=g}else{i.id=y.id+"_jwplayer_"+h}e.utils.css(i,u[h].style);return i};q.display=z("a","display",y.id);if(a){q.display.setAttribute("href",e.utils.getAbsolutePath(a))}q.display_image=z("img","display_image");q.display_image.setAttribute("alt","Click to download...");if(r){q.display_image.setAttribute("src",e.utils.getAbsolutePath(r))}if(true){q.display_icon=z("div","display_icon");q.display_iconBackground=z("div","display_iconBackground");q.display.appendChild(q.display_image);q.display_iconBackground.appendChild(q.display_icon);q.display.appendChild(q.display_iconBackground)}y.parentNode.replaceChild(q.display,y);return q.display};e.embed.appendAttribute=function(c,h,b){var a=document.createElement("param");a.setAttribute("name",h);a.setAttribute("value",b);c.appendChild(a)};e.embed.jsonToFlashvars=function(a){var c=a.netstreambasepath?"":"netstreambasepath="+escape(window.location.href)+"&";for(var b in a){c+=b+"="+escape(a[b])+"&"}return c.substring(0,c.length-1)};e.embed.parsePlugins=function(k){if(!k){return{}}var a={},b=[];for(var n in k){var l=e.utils.getPluginName(n);var m=k[n];b.push(n);for(var c in m){a[l+"."+c]=m[c]}}a.plugins=b.join(",");return a};e.embed.parseConfigBlock=function(c,j){if(c[j]){var a=c[j];for(var k in a){var l=a[k];if(typeof l=="string"){if(!c[k]){c[k]=l}}else{for(var b in l){if(!c[k+"."+b]){c[k+"."+b]=l[b]}}}}delete c[j]}};e.api.PlayerAPI.prototype.setup=function(c,b){if(c&&c.flashplayer&&!c.players){c.players=f();c.players[0].src=c.flashplayer;delete c.flashplayer}if(b&&!c.players){if(typeof b=="string"){c.players=f();c.players[0].src=b}else{if(b instanceof Array){c.players=b}else{if(typeof b=="object"&&b.type){c.players=[b]}}}}var h=this.id;this.remove();var a=e(h);a.config=c;return(new e.embed.Embedder(a)).embedPlayer()};function d(){if(!document.body){return setTimeout(d,15)}var c=e.utils.selectors.getElementsByTagAndClass("video","jwplayer");for(var b=0;b<c.length;b++){var a=c[b];e(a.id).setup({players:[{type:"flash",src:"/jwplayer/player.swf"},{type:"html5"}]})}}d()})(jwplayer);(function(b){b.html5=function(a){var d=a;this.setup=function(c){b.utils.extend(this,new b.html5.api(d,c));return this};return this}})(jwplayer);(function(d){var f=d.utils.css;d.html5.view=function(J,M,W){var F=J;var P=M;var C=W;var D;var V;var K;var H;var I;var N;function b(){D=document.createElement("div");D.id=P.id;D.className=P.className;P.id=D.id+"_video";f(D,{position:"relative",height:C.height,width:C.width,padding:0,backgroundColor:g(),zIndex:0});function g(){if(F.skin.getComponentSettings("display")&&F.skin.getComponentSettings("display").backgroundcolor){return F.skin.getComponentSettings("display").backgroundcolor}return parseInt("000000",16)}f(P,{position:"absolute",width:C.width,height:C.height,top:0,left:0,zIndex:1,margin:"auto",display:"block"});d.utils.wrap(P,D);H=document.createElement("div");H.id=D.id+"_displayarea";D.appendChild(H)}function R(){for(var h=0;h<C.plugins.order.length;h++){var g=C.plugins.order[h];if(C.plugins.object[g].getDisplayElement!==undefined){C.plugins.object[g].height=T(C.plugins.object[g].getDisplayElement().style.height);C.plugins.object[g].width=T(C.plugins.object[g].getDisplayElement().style.width);C.plugins.config[g].currentPosition=C.plugins.config[g].position}}E()}function E(h){if(C.getMedia()!==undefined){for(var i=0;i<C.plugins.order.length;i++){var g=C.plugins.order[i];if(C.plugins.object[g].getDisplayElement!==undefined){if(C.config.chromeless||C.getMedia().hasChrome()){C.plugins.config[g].currentPosition=d.html5.view.positions.NONE}else{C.plugins.config[g].currentPosition=C.plugins.config[g].position}}}}S(C.width,C.height)}function T(g){if(typeof g=="string"){if(g===""){return 0}else{if(g.lastIndexOf("%")>-1){return g}else{return parseInt(g.replace("px",""),10)}}}return g}function L(){N=setInterval(function(){if((typeof C.width=="string"&&C.width.lastIndexOf("%")>-1)||(typeof C.height=="string"&&C.height.lastIndexOf("%")>-1)){return}if(D.width&&D.height&&(C.width!==T(D.width)||C.height!==T(D.height))){S(T(D.width),T(D.height))}else{var g=D.getBoundingClientRect();if(C.width!==g.width||C.height!==g.height){S(g.width,g.height)}delete g}},100)}this.setup=function(h){P=h;b();R();F.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_LOADED,E);F.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_META,function(){c()});L();var g;if(window.onresize!==null){g=window.onresize}window.onresize=function(k){if(g!==undefined){try{g(k)}catch(i){}}if(F.jwGetFullscreen()){var j=document.body.getBoundingClientRect();C.width=Math.abs(j.left)+Math.abs(j.right);C.height=window.innerHeight}S(C.width,C.height)}};function U(g){switch(g.keyCode){case 27:if(F.jwGetFullscreen()){F.jwSetFullscreen(false)}break;case 32:if(F.jwGetState()!=d.api.events.state.IDLE&&F.jwGetState()!=d.api.events.state.PAUSED){F.jwPause()}else{F.jwPlay()}break}}function S(g,j){if(D.style.display=="none"){return}var h=[].concat(C.plugins.order);h.reverse();I=h.length+2;if(!C.fullscreen){C.width=g;C.height=j;V=g;K=j;f(H,{top:0,bottom:0,left:0,right:0,width:g,height:j});f(D,{height:K,width:V});var i=O(G,h);if(i.length>0){I+=i.length;O(Q,i,true)}}else{O(a,h,true)}c()}function O(h,k,j){var l=[];for(var m=0;m<k.length;m++){var g=k[m];if(C.plugins.object[g].getDisplayElement!==undefined){if(C.plugins.config[g].currentPosition.toUpperCase()!==d.html5.view.positions.NONE){var i=h(g,I--);if(!i){l.push(g)}else{C.plugins.object[g].resize(i.width,i.height);if(j){delete i.width;delete i.height}f(C.plugins.object[g].getDisplayElement(),i)}}else{f(C.plugins.object[g].getDisplayElement(),{display:"none"})}}}return l}function G(h,g){if(C.plugins.object[h].getDisplayElement!==undefined){if(e(C.plugins.config[h].position)){if(C.plugins.object[h].getDisplayElement().parentNode===null){D.appendChild(C.plugins.object[h].getDisplayElement())}var i=X(h);i.zIndex=g;return i}}return false}function Q(h,g){if(C.plugins.object[h].getDisplayElement().parentNode===null){H.appendChild(C.plugins.object[h].getDisplayElement())}var j=C.width,i=C.height;if(typeof C.width=="string"&&C.width.lastIndexOf("%")>-1){percentage=parseFloat(C.width.substring(0,C.width.lastIndexOf("%")))/100;j=Math.round(window.innerWidth*percentage)}if(typeof C.height=="string"&&C.height.lastIndexOf("%")>-1){percentage=parseFloat(C.height.substring(0,C.height.lastIndexOf("%")))/100;i=Math.round(window.innerHeight*percentage)}return{position:"absolute",width:(j-T(H.style.left)-T(H.style.right)),height:(i-T(H.style.top)-T(H.style.bottom)),zIndex:g}}function a(h,g){return{position:"fixed",width:C.width,height:C.height,zIndex:g}}function c(){H.style.position="absolute";C.getMedia().getDisplayElement().style.position="absolute";if(C.getMedia().getDisplayElement().videoWidth==0||C.getMedia().getDisplayElement().videoHeight==0){return}var i,g;if(H.style.width.toString().lastIndexOf("%")>-1||H.style.width.toString().lastIndexOf("%")>-1){var h=H.getBoundingClientRect();i=Math.abs(h.left)+Math.abs(h.right);g=Math.abs(h.top)+Math.abs(h.bottom)}else{i=T(H.style.width);g=T(H.style.height)}d.utils.stretch(F.jwGetStretching(),C.getMedia().getDisplayElement(),i,g,C.getMedia().getDisplayElement().videoWidth,C.getMedia().getDisplayElement().videoHeight)}function X(h){var g={position:"absolute",margin:0,padding:0,top:null};var i=C.plugins.config[h].currentPosition.toLowerCase();switch(i.toUpperCase()){case d.html5.view.positions.TOP:g.top=T(H.style.top);g.left=T(H.style.left);g.width=V-T(H.style.left)-T(H.style.right);g.height=C.plugins.object[h].height;H.style[i]=T(H.style[i])+C.plugins.object[h].height+"px";H.style.height=T(H.style.height)-g.height+"px";break;case d.html5.view.positions.RIGHT:g.top=T(H.style.top);g.right=T(H.style.right);g.width=g.width=C.plugins.object[h].width;g.height=K-T(H.style.top)-T(H.style.bottom);H.style[i]=T(H.style[i])+C.plugins.object[h].width+"px";H.style.width=T(H.style.width)-g.width+"px";break;case d.html5.view.positions.BOTTOM:g.bottom=T(H.style.bottom);g.left=T(H.style.left);g.width=V-T(H.style.left)-T(H.style.right);g.height=C.plugins.object[h].height;H.style[i]=T(H.style[i])+C.plugins.object[h].height+"px";H.style.height=T(H.style.height)-g.height+"px";break;case d.html5.view.positions.LEFT:g.top=T(H.style.top);g.left=T(H.style.left);g.width=C.plugins.object[h].width;g.height=K-T(H.style.top)-T(H.style.bottom);H.style[i]=T(H.style[i])+C.plugins.object[h].width+"px";H.style.width=T(H.style.width)-g.width+"px";break;default:break}return g}this.resize=S;this.fullscreen=function(g){if(navigator.vendor.indexOf("Apple")===0){if(C.getMedia().getDisplayElement().webkitSupportsFullscreen){if(g){C.fullscreen=false;C.getMedia().getDisplayElement().webkitEnterFullscreen()}else{C.getMedia().getDisplayElement().webkitExitFullscreen()}}else{C.fullscreen=false}}else{if(g){document.onkeydown=U;clearInterval(N);var h=document.body.getBoundingClientRect();C.width=Math.abs(h.left)+Math.abs(h.right);C.height=window.innerHeight;var i={position:"fixed",width:"100%",height:"100%",top:0,left:0,zIndex:2147483000};f(D,i);i.zIndex=1;f(C.getMedia().getDisplayElement(),i);i.zIndex=2;f(H,i)}else{document.onkeydown="";L();C.width=V;C.height=K;f(D,{position:"relative",height:C.height,width:C.width,zIndex:0})}S(C.width,C.height)}}};function e(a){return([d.html5.view.positions.TOP,d.html5.view.positions.RIGHT,d.html5.view.positions.BOTTOM,d.html5.view.positions.LEFT].indexOf(a.toUpperCase())>-1)}d.html5.view.positions={TOP:"TOP",RIGHT:"RIGHT",BOTTOM:"BOTTOM",LEFT:"LEFT",OVER:"OVER",NONE:"NONE"}})(jwplayer);(function(d){var c={backgroundcolor:"",margin:10,font:"Arial,sans-serif",fontsize:10,fontcolor:parseInt("000000",16),fontstyle:"normal",fontweight:"bold",buttoncolor:parseInt("ffffff",16),position:d.html5.view.positions.BOTTOM,idlehide:false,layout:{left:{position:"left",elements:[{name:"play",type:"button"},{name:"divider",type:"divider"},{name:"prev",type:"button"},{name:"divider",type:"divider"},{name:"next",type:"button"},{name:"divider",type:"divider"},{name:"elapsed",type:"text"}]},center:{position:"center",elements:[{name:"time",type:"slider"}]},right:{position:"right",elements:[{name:"duration",type:"text"},{name:"blank",type:"button"},{name:"divider",type:"divider"},{name:"mute",type:"button"},{name:"volume",type:"slider"},{name:"divider",type:"divider"},{name:"fullscreen",type:"button"}]}}};_css=d.utils.css;_hide=function(a){_css(a,{display:"none"})};_show=function(a){_css(a,{display:"block"})};d.html5.controlbar=function(aF,ac){var aG=aF;var an=d.utils.extend({},c,aG.skin.getComponentSettings("controlbar"),ac);if(d.utils.mapLength(aG.skin.getComponentLayout("controlbar"))>0){an.layout=aG.skin.getComponentLayout("controlbar")}var Y;var af;var Z;var am;var av="none";var aJ;var aH;var X;var aK;var aL;var ar;var aw;var ae={};var aB=false;var aM={};function ag(){Z=0;am=0;af=0;if(!aB){var f={height:aG.skin.getSkinElement("controlbar","background").height,backgroundColor:an.backgroundcolor};Y=document.createElement("div");Y.id=aG.id+"_jwplayer_controlbar";_css(Y,f)}at("capLeft","left",false,Y);var e={position:"absolute",height:aG.skin.getSkinElement("controlbar","background").height,background:" url("+aG.skin.getSkinElement("controlbar","background").src+") repeat-x center left",left:aG.skin.getSkinElement("controlbar","capLeft").width};aa("elements",Y,e);at("capRight","right",false,Y)}this.getDisplayElement=function(){return Y};this.resize=function(g,f){d.utils.cancelAnimation(Y);document.getElementById(aG.id).onmousemove=aq;aL=g;ar=f;aq();var e=au();ak({id:aG.id,duration:X,position:aH});ax({id:aG.id,bufferPercent:aK});return e};function aA(){var e=["timeSlider","volumeSlider","timeSliderRail","volumeSliderRail"];for(var g in e){var f=e[g];if(typeof ae[f]!="undefined"){aM[f]=ae[f].getBoundingClientRect()}}}function aq(){d.utils.cancelAnimation(Y);if(aI()){d.utils.fadeTo(Y,1,0,1,0)}else{d.utils.fadeTo(Y,0,0.1,1,2)}}function aI(){if(aG.jwGetState()==d.api.events.state.IDLE||aG.jwGetState()==d.api.events.state.PAUSED){if(an.idlehide){return false}return true}if(aG.jwGetFullscreen()){return false}if(an.position.toUpperCase()==d.html5.view.positions.OVER){return false}return true}function aa(g,h,e){var f;if(!aB){f=document.createElement("div");ae[g]=f;f.id=Y.id+"_"+g;h.appendChild(f)}else{f=document.getElementById(Y.id+"_"+g)}if(e!==undefined){_css(f,e)}return f}function ah(){a(an.layout.left);a(an.layout.right,-1);a(an.layout.center)}function a(h,f){var g=h.position=="right"?"right":"left";var i=d.utils.extend([],h.elements);if(f!==undefined){i.reverse()}for(var e=0;e<i.length;e++){ao(i[e],g)}}function aj(){return af++}function ao(f,m){var g,i,h,j,k;switch(f.name){case"play":at("playButton",m,false);at("pauseButton",m,true);ad("playButton","jwPlay");ad("pauseButton","jwPause");break;case"divider":at("divider"+aj(),m,true);break;case"prev":at("prevButton",m,true);ad("prevButton","jwPlaylistPrev");break;case"next":at("nextButton",m,true);ad("nextButton","jwPlaylistNext");break;case"elapsed":at("elapsedText",m,true);break;case"time":i=aG.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:aG.skin.getSkinElement("controlbar","timeSliderCapLeft").width;h=aG.skin.getSkinElement("controlbar","timeSliderCapRight")===undefined?0:aG.skin.getSkinElement("controlbar","timeSliderCapRight").width;g=m=="left"?i:h;j=aG.skin.getSkinElement("controlbar","timeSliderRail").width+i+h;k={height:aG.skin.getSkinElement("controlbar","background").height,position:"absolute",top:0,width:j};k[m]=m=="left"?Z:am;var e=aa("timeSlider",ae.elements,k);at("timeSliderCapLeft",m,true,e,m=="left"?0:g);at("timeSliderRail",m,false,e,g);at("timeSliderBuffer",m,false,e,g);at("timeSliderProgress",m,false,e,g);at("timeSliderThumb",m,false,e,g);at("timeSliderCapRight",m,true,e,m=="right"?0:g);ab("time");break;case"fullscreen":at("fullscreenButton",m,false);at("normalscreenButton",m,true);ad("fullscreenButton","jwSetFullscreen",true);ad("normalscreenButton","jwSetFullscreen",false);break;case"volume":i=aG.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:aG.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;h=aG.skin.getSkinElement("controlbar","volumeSliderCapRight")===undefined?0:aG.skin.getSkinElement("controlbar","volumeSliderCapRight").width;g=m=="left"?i:h;j=aG.skin.getSkinElement("controlbar","volumeSliderRail").width+i+h;k={height:aG.skin.getSkinElement("controlbar","background").height,position:"absolute",top:0,width:j};k[m]=m=="left"?Z:am;var l=aa("volumeSlider",ae.elements,k);at("volumeSliderCapLeft",m,true,l,m=="left"?0:g);at("volumeSliderRail",m,true,l,g);at("volumeSliderProgress",m,false,l,g);at("volumeSliderCapRight",m,true,l,m=="right"?0:g);ab("volume");break;case"mute":at("muteButton",m,false);at("unmuteButton",m,true);ad("muteButton","jwSetMute",true);ad("unmuteButton","jwSetMute",false);break;case"duration":at("durationText",m,true);break}}function at(k,g,h,j,f){if((aG.skin.getSkinElement("controlbar",k)!==undefined||k.indexOf("Text")>0||k.indexOf("divider")===0)&&!(k.indexOf("divider")===0&&aw.indexOf("divider")===0)){aw=k;var l={height:aG.skin.getSkinElement("controlbar","background").height,position:"absolute",display:"block",top:0};if((k.indexOf("next")===0||k.indexOf("prev")===0)&&aG.jwGetPlaylist().length<2){h=false;l.display="none"}var i;if(k.indexOf("Text")>0){k.innerhtml="00:00";l.font=an.fontsize+"px/"+(aG.skin.getSkinElement("controlbar","background").height+1)+"px "+an.font;l.color=an.fontcolor;l.textAlign="center";l.fontWeight=an.fontweight;l.fontStyle=an.fontstyle;l.cursor="default";i=14+3*an.fontsize}else{if(k.indexOf("divider")===0){l.background="url("+aG.skin.getSkinElement("controlbar","divider").src+") repeat-x center left";i=aG.skin.getSkinElement("controlbar","divider").width}else{l.background="url("+aG.skin.getSkinElement("controlbar",k).src+") repeat-x center left";i=aG.skin.getSkinElement("controlbar",k).width}}if(g=="left"){l.left=f===undefined?Z:f;if(h){Z+=i}}else{if(g=="right"){l.right=f===undefined?am:f;if(h){am+=i}}}if(j===undefined){j=ae.elements}l.width=i;if(aB){_css(ae[k],l)}else{var e=aa(k,j,l);if(aG.skin.getSkinElement("controlbar",k+"Over")!==undefined){e.onmouseover=function(m){e.style.backgroundImage=["url(",aG.skin.getSkinElement("controlbar",k+"Over").src,")"].join("")};e.onmouseout=function(m){e.style.backgroundImage=["url(",aG.skin.getSkinElement("controlbar",k).src,")"].join("")}}}}}function al(){aG.jwAddEventListener(d.api.events.JWPLAYER_PLAYLIST_LOADED,ap);aG.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_BUFFER,ax);aG.jwAddEventListener(d.api.events.JWPLAYER_PLAYER_STATE,az);aG.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_TIME,ak);aG.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_MUTE,b);aG.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_VOLUME,aE);aG.jwAddEventListener(d.api.events.JWPLAYER_MEDIA_COMPLETE,ai)}function ap(){ag();ah();au();W()}function W(){ak({id:aG.id,duration:aG.jwGetDuration(),position:0});ax({id:aG.id,bufferProgress:0});b({id:aG.id,mute:aG.jwGetMute()});az({id:aG.id,newstate:d.api.events.state.IDLE});aE({id:aG.id,volume:aG.jwGetVolume()})}function ad(h,g,e){if(aB){return}if(aG.skin.getSkinElement("controlbar",h)!==undefined){var f=ae[h];if(f!==null){_css(f,{cursor:"pointer"});if(g=="fullscreen"){f.onmouseup=function(i){i.stopPropagation();aG.jwSetFullscreen(!aG.jwGetFullscreen())}}else{f.onmouseup=function(i){i.stopPropagation();if(e!==null){aG[g](e)}else{aG[g]()}}}}}}function ab(f){if(aB){return}var e=ae[f+"Slider"];_css(ae.elements,{cursor:"pointer"});_css(e,{cursor:"pointer"});e.onmousedown=function(g){av=f};e.onmouseup=function(g){g.stopPropagation();V(g.pageX)};e.onmousemove=function(h){if(av=="time"){aJ=true;var g=h.pageX-aM[f+"Slider"].left-window.pageXOffset;_css(ae.timeSliderThumb,{left:g})}}}function V(e){aJ=false;var f;if(av=="time"){f=e-aM.timeSliderRail.left+window.pageXOffset;var g=f/aM.timeSliderRail.width*X;if(g<0){g=0}else{if(g>X){g=X-3}}aG.jwSeek(g);if(aG.jwGetState()!=d.api.events.state.PLAYING){aG.jwPlay()}}else{if(av=="volume"){f=e-aM.volumeSliderRail.left-window.pageXOffset;var h=Math.round(f/aM.volumeSliderRail.width*100);if(h<0){h=0}else{if(h>100){h=100}}if(aG.jwGetMute()){aG.jwSetMute(false)}aG.jwSetVolume(h)}}av="none"}function ax(e){if(e.bufferPercent!==null){aK=e.bufferPercent}var g=aM.timeSliderRail.width;var f=isNaN(Math.round(g*aK/100))?0:Math.round(g*aK/100);_css(ae.timeSliderBuffer,{width:f})}function b(e){if(e.mute){_hide(ae.muteButton);_show(ae.unmuteButton);_hide(ae.volumeSliderProgress)}else{_show(ae.muteButton);_hide(ae.unmuteButton);_show(ae.volumeSliderProgress)}}function az(e){if(e.newstate==d.api.events.state.BUFFERING||e.newstate==d.api.events.state.PLAYING){_show(ae.pauseButton);_hide(ae.playButton)}else{_hide(ae.pauseButton);_show(ae.playButton)}aq();if(e.newstate==d.api.events.state.IDLE){_hide(ae.timeSliderBuffer);_hide(ae.timeSliderProgress);_hide(ae.timeSliderThumb);ak({id:aG.id,duration:aG.jwGetDuration(),position:0})}else{_show(ae.timeSliderBuffer);if(e.newstate!=d.api.events.state.BUFFERING){_show(ae.timeSliderProgress);_show(ae.timeSliderThumb)}}}function ai(e){ax({bufferPercent:0});ak(d.utils.extend(e,{position:0,duration:X}))}function ak(g){if(g.position!==null){aH=g.position}if(g.duration!==null){X=g.duration}var e=(aH===X===0)?0:aH/X;var f=isNaN(Math.round(aM.timeSliderRail.width*e))?0:Math.round(aM.timeSliderRail.width*e);var h=f;ae.timeSliderProgress.style.width=f+"px";if(!aJ){if(ae.timeSliderThumb){ae.timeSliderThumb.style.left=h+"px"}}if(ae.durationText){ae.durationText.innerHTML=aC(X)}if(ae.elapsedText){ae.elapsedText.innerHTML=aC(aH)}}function aC(e){str="00:00";if(e>0){str=Math.floor(e/60)<10?"0"+Math.floor(e/60)+":":Math.floor(e/60)+":";str+=Math.floor(e%60)<10?"0"+Math.floor(e%60):Math.floor(e%60)}return str}function aD(){var g,e;var h=document.getElementById(Y.id+"_elements").childNodes;for(var f in document.getElementById(Y.id+"_elements").childNodes){if(isNaN(parseInt(f,10))){continue}if(h[f].id.indexOf(Y.id+"_divider")===0&&e.id.indexOf(Y.id+"_divider")===0){h[f].style.display="none"}else{if(h[f].id.indexOf(Y.id+"_divider")===0&&g.style.display!="none"){h[f].style.display="block"}}if(h[f].style.display!="none"){e=h[f]}g=h[f]}}function au(){aD();if(aG.jwGetFullscreen()){_show(ae.normalscreenButton);_hide(ae.fullscreenButton)}else{_hide(ae.normalscreenButton);_show(ae.fullscreenButton)}var e={width:aL};var f={};if(an.position.toUpperCase()==d.html5.view.positions.OVER||aG.jwGetFullscreen()){e.left=an.margin;e.width-=2*an.margin;e.top=ar-aG.skin.getSkinElement("controlbar","background").height-an.margin;e.height=aG.skin.getSkinElement("controlbar","background").height}else{e.left=0}f.left=aG.skin.getSkinElement("controlbar","capLeft").width;f.width=e.width-aG.skin.getSkinElement("controlbar","capLeft").width-aG.skin.getSkinElement("controlbar","capRight").width;var g=aG.skin.getSkinElement("controlbar","timeSliderCapLeft")===undefined?0:aG.skin.getSkinElement("controlbar","timeSliderCapLeft").width;_css(ae.timeSliderRail,{width:(f.width-Z-am),left:g});if(ae.timeSliderCapRight!==undefined){_css(ae.timeSliderCapRight,{left:g+(f.width-Z-am)})}_css(Y,e);_css(ae.elements,f);aA();return e}function aE(h){if(ae.volumeSliderRail!==undefined){var j=isNaN(h.volume/100)?1:h.volume/100;var i=parseInt(ae.volumeSliderRail.style.width.replace("px",""),10);var f=isNaN(Math.round(i*j))?0:Math.round(i*j);var g=parseInt(ae.volumeSliderRail.style.right.replace("px",""),10);var e=aG.skin.getSkinElement("controlbar","volumeSliderCapLeft")===undefined?0:aG.skin.getSkinElement("controlbar","volumeSliderCapLeft").width;_css(ae.volumeSliderProgress,{width:f,left:e});if(ae.volumeSliderCapLeft!==undefined){_css(ae.volumeSliderCapLeft,{left:0})}}}function ay(){ag();ah();aA();aB=true;al();W();Y.style.opacity=an.idlehide?0:1}ay();return this}})(jwplayer);(function(c){var d=["width","height","state","playlist","item","position","buffer","duration","volume","mute","fullscreen"];c.html5.controller=function(H,K,Z,M){var E=H;var b=Z;var aa=M;var T=K;var N=true;var ab=-1;var G=(b.config.debug!==undefined)&&(b.config.debug.toString().toLowerCase()=="console");var V=new c.html5.eventdispatcher(T.id,G);c.utils.extend(this,V);function R(e){V.sendEvent(e.type,e)}b.addGlobalListener(R);function O(){try{if(b.playlist[b.item].levels[0].file.length>0){if(N||b.state==c.api.events.state.IDLE){b.addEventListener(c.api.events.JWPLAYER_MEDIA_BUFFER_FULL,function(){b.getMedia().play()});b.addEventListener(c.api.events.JWPLAYER_MEDIA_TIME,function(f){if(f.position>=b.playlist[b.item].start&&ab>=0){b.playlist[b.item].start=ab;ab=-1}});if(b.config.repeat){b.addEventListener(c.api.events.JWPLAYER_MEDIA_COMPLETE,function(f){setTimeout(Q,25)})}b.getMedia().load(b.playlist[b.item]);N=false}else{if(b.state==c.api.events.state.PAUSED){b.getMedia().play()}}}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function L(){try{if(b.playlist[b.item].levels[0].file.length>0){switch(b.state){case c.api.events.state.PLAYING:case c.api.events.state.BUFFERING:b.getMedia().pause();break}}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function D(f){try{if(b.playlist[b.item].levels[0].file.length>0){if(typeof f!="number"){f=parseFloat(f)}switch(b.state){case c.api.events.state.IDLE:if(ab<0){ab=b.playlist[b.item].start;b.playlist[b.item].start=f}O();break;case c.api.events.state.PLAYING:case c.api.events.state.PAUSED:case c.api.events.state.BUFFERING:b.getMedia().seek(f);break}}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function U(){try{if(b.playlist[b.item].levels[0].file.length>0&&b.state!=c.api.events.state.IDLE){b.getMedia().stop()}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function X(){try{if(b.playlist[b.item].levels[0].file.length>0){if(b.config.shuffle){P(I())}else{if(b.item+1==b.playlist.length){P(0)}else{P(b.item+1)}}}if(b.state!=c.api.events.state.PLAYING&&b.state!=c.api.events.state.BUFFERING){O()}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function Y(){try{if(b.playlist[b.item].levels[0].file.length>0){if(b.config.shuffle){P(I())}else{if(b.item===0){P(b.playlist.length-1)}else{P(b.item-1)}}}if(b.state!=c.api.events.state.PLAYING&&b.state!=c.api.events.state.BUFFERING){O()}return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function I(){var e=null;if(b.playlist.length>1){while(e===null){e=Math.floor(Math.random()*b.playlist.length);if(e==b.item){e=null}}}else{e=0}return e}function P(f){b.resetEventListeners();b.addGlobalListener(R);try{if(b.playlist[f].levels[0].file.length>0){var e=b.state;if(e!==c.api.events.state.IDLE){U()}b.item=f;N=true;b.setActiveMediaProvider(b.playlist[b.item]);V.sendEvent(c.api.events.JWPLAYER_PLAYLIST_ITEM,{index:f});if(e==c.api.events.state.PLAYING||e==c.api.events.state.BUFFERING||b.config.chromeless){O()}}return true}catch(g){V.sendEvent(c.api.events.JWPLAYER_ERROR,g)}return false}function a(e){try{switch(typeof(e)){case"number":b.getMedia().volume(e);break;case"string":b.getMedia().volume(parseInt(e,10));break}return true}catch(f){V.sendEvent(c.api.events.JWPLAYER_ERROR,f)}return false}function S(e){try{if(typeof e=="undefined"){b.getMedia().mute(!b.mute)}else{if(e.toString().toLowerCase()=="true"){b.getMedia().mute(true)}else{b.getMedia().mute(false)}}return true}catch(f){V.sendEvent(c.api.events.JWPLAYER_ERROR,f)}return false}function W(f,g){try{b.width=f;b.height=g;aa.resize(f,g);V.sendEvent(c.api.events.JWPLAYER_RESIZE,{width:b.width,height:b.height});return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}function F(e){try{if(typeof e=="undefined"){b.fullscreen=!b.fullscreen;aa.fullscreen(!b.fullscreen)}else{if(e.toString().toLowerCase()=="true"){b.fullscreen=true;aa.fullscreen(true)}else{b.fullscreen=false;aa.fullscreen(false)}}V.sendEvent(c.api.events.JWPLAYER_RESIZE,{width:b.width,height:b.height});V.sendEvent(c.api.events.JWPLAYER_FULLSCREEN,{fullscreen:e});return true}catch(f){V.sendEvent(c.api.events.JWPLAYER_ERROR,f)}return false}function J(f){try{U();b.loadPlaylist(f);P(b.item);return true}catch(e){V.sendEvent(c.api.events.JWPLAYER_ERROR,e)}return false}c.html5.controller.repeatoptions={LIST:"LIST",ALWAYS:"ALWAYS",SINGLE:"SINGLE",NONE:"NONE"};function Q(){b.resetEventListeners();b.addGlobalListener(R);switch(b.config.repeat.toUpperCase()){case c.html5.controller.repeatoptions.SINGLE:O();break;case c.html5.controller.repeatoptions.ALWAYS:if(b.item==b.playlist.length-1&&!b.config.shuffle){P(0);O()}else{X()}break;case c.html5.controller.repeatoptions.LIST:if(b.item==b.playlist.length-1&&!b.config.shuffle){P(0)}else{X()}break}}this.play=O;this.pause=L;this.seek=D;this.stop=U;this.next=X;this.prev=Y;this.item=P;this.setVolume=a;this.setMute=S;this.resize=W;this.setFullscreen=F;this.load=J}})(jwplayer);(function(b){b.html5.defaultSkin=function(){this.text='<?xml version="1.0" ?><skin author="LongTail Video" name="Five" version="1.0"><settings><setting name="backcolor" value="0xFFFFFF"/><setting name="frontcolor" value="0x000000"/><setting name="lightcolor" value="0x000000"/><setting name="screencolor" value="0x000000"/></settings><components><component name="controlbar"><settings><setting name="margin" value="20"/><setting name="fontsize" value="11"/></settings><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFJJREFUeNrslLENwAAIwxLU/09j5AiOgD5hVQzNAVY8JK4qEfHMIKBnd2+BQlBINaiRtL/aV2rdzYBsM6CIONbI1NZENTr3RwdB2PlnJgJ6BRgA4hwu5Qg5iswAAAAASUVORK5CYII="/><element name="capLeft" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="capRight" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="divider" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAYCAIAAAC0rgCNAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNosi8ENACAMAgnuv14H0Z8asI19XEjhOiKCMmibVgJTUt7V6fe9KXOtSQCfctJHu2q3/ot79hNgANc2OTz9uTCCAAAAAElFTkSuQmCC"/><element name="playButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEhJREFUeNpiYqABYBo1dNRQ+hr6H4jvA3E8NS39j4SpZvh/LJig4YxEGEqy3kET+w+AOGFQRhTJhrEQkGcczfujhg4CQwECDADpTRWU/B3wHQAAAABJRU5ErkJggg=="/><element name="pauseButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAChJREFUeNpiYBgFo2DwA0YC8v/R1P4nRu+ooaOGUtnQUTAKhgIACDAAFCwQCfAJ4gwAAAAASUVORK5CYII="/><element name="prevButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEtJREFUeNpiYBgFo2Dog/9QDAPyQHweTYwiQ/2B+D0Wi8g2tB+JTdBQRiIMJVkvEy0iglhDF9Aq9uOpHVEwoE+NJDUKRsFgAAABBgDe2hqZcNNL0AAAAABJRU5ErkJggg=="/><element name="nextButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAElJREFUeNpiYBgFo2Dog/9AfB6I5dHE/lNqKAi/B2J/ahsKw/3EGMpIhKEk66WJoaR6fz61IyqemhEFSlL61ExSo2AUDAYAEGAAiG4hj+5t7M8AAAAASUVORK5CYII="/><element name="timeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpiYBgFo2AU0Bwwzluw+D8tLWARFhKiqQ9YuLg4aWsBGxs7bS1gZ6e5BWyjSX0UjIKhDgACDABlYQOGh5pYywAAAABJRU5ErkJggg=="/><element name="timeSliderBuffer" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFo2AU0Bww1jc0/aelBSz8/Pw09QELOzs7bS1gY2OjrQWsrKy09gHraFIfBaNgqAOAAAMAvy0DChXHsZMAAAAASUVORK5CYII="/><element name="timeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAClJREFUeNpiYBgFo2AU0BwwAvF/WlrARGsfjFow8BaMglEwCugAAAIMAOHfAQunR+XzAAAAAElFTkSuQmCC"/><element name="timeSliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAICAYAAAA870V8AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABZJREFUeNpiZICA/yCCiQEJUJcDEGAAY0gBD1/m7Q0AAAAASUVORK5CYII="/><element name="muteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiYBgFIw3MB+L/5Gj8j6yRiRTFyICJXHfTXyMLAXlGati4YDRFDj8AEGAABk8GSqqS4CoAAAAASUVORK5CYII="/><element name="unmuteButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpiYBgFgxz8p7bm+cQa+h8LHy7GhEcjIz4bmAjYykiun/8j0fakGPIfTfPgiSr6aB4FVAcAAQYAWdwR1G1Wd2gAAAAASUVORK5CYII="/><element name="volumeSliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGpJREFUeNpi/P//PwM9ABMDncCoRYPfIqqDZcuW1UPp/6AUDcNM1DQYKtRAlaAj1mCSLSLXYIIWUctgDItoZfDA5aOoqKhGEANIM9LVR7SymGDQUctikuOIXkFNdhHEOFrDjlpEd4sAAgwAriRMub95fu8AAAAASUVORK5CYII="/><element name="volumeSliderProgress" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAYCAYAAADkgu3FAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFtJREFUeNpi/P//PwM9ABMDncCoRYPfIlqAeij9H5SiYZiqBqPTlFqE02BKLSLaYFItIttgQhZRzWB8FjENiuRJ7aAbsMQwYMl7wDIsWUUQ42gNO2oR3S0CCDAAKhKq6MLLn8oAAAAASUVORK5CYII="/><element name="fullscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAE5JREFUeNpiYBgFo2DQA0YC8v/xqP1PjDlMRDrEgUgxkgHIlfZoriVGjmzLsLFHAW2D6D8eA/9Tw7L/BAwgJE90PvhPpNgoGAVDEQAEGAAMdhTyXcPKcAAAAABJRU5ErkJggg=="/><element name="normalscreenButton" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEZJREFUeNpiYBgFo2DIg/9UUkOUAf8JiFFsyX88fJyAkcQgYMQjNkzBoAgiezyRbE+tFGSPxQJ7auYBmma0UTAKBhgABBgAJAEY6zON61sAAAAASUVORK5CYII="/></elements></component><component name="display"><elements><element name="background" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEpJREFUeNrszwENADAIA7DhX8ENoBMZ5KR10EryckCJiIiIiIiIiIiIiIiIiIiIiIh8GmkRERERERERERERERERERERERGRHSPAAPlXH1phYpYaAAAAAElFTkSuQmCC"/><element name="playIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrs18ENgjAYhmFouDOCcQJGcARHgE10BDcgTOIosAGwQOuPwaQeuFRi2p/3Sb6EC5L3QCxZBgAAAOCorLW1zMn65TrlkH4NcV7QNcUQt7Gn7KIhxA+qNIR81spOGkL8oFJDyLJRdosqKDDkK+iX5+d7huzwM40xptMQMkjIOeRGo+VkEVvIPfTGIpKASfYIfT9iCHkHrBEzf4gcUQ56aEzuGK/mw0rHpy4AAACAf3kJMACBxjAQNRckhwAAAABJRU5ErkJggg=="/><element name="muteIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNrs1jEOgCAMBVAg7t5/8qaoIy4uoobyXsLCxA+0NCUAAADGUWvdQoQ41x4ixNBB2hBvBskdD3w5ZCkl3+33VqI0kjBBlh9rp+uTcyOP33TnolfsU85XX3yIRpQph8ZQY3wTZtU5AACASA4BBgDHoVuY1/fvOQAAAABJRU5ErkJggg=="/><element name="errorIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWlJREFUeNrsl+1twjAQhsHq/7BBYQLYIBmBDcoGMAIjtBPQTcII2SDtBDBBwrU6pGsUO7YbO470PtKJkz9iH++d4ywWAAAAAABgljRNsyWr2bZzDuJG1rLdZhcMbTjrBCGDyUKsqQLFciJb9bSvuG/WagRVRUVUI6gqy5HVeKWfSgRyJruKIU//TrZTSn2nmlaXThrloi/v9F2STC1W4+Aw5cBzkquRc09bofFNc6YLxEON0VUZS5FPTftO49vMjRsIF3RhOGr7/D/pJw+FKU+q0vDyq8W42jCunDqI3LC5XxNj2wHLU1XjaRnb0Lhykhqhhd8MtSF5J9tbjCv4mXGvKJz/65FF/qJryyaaIvzP2QRxZTX2nTuXjvV/VPFSwyLnW7mpH99yTh1FEVro6JBSd40/pMrRdV8vPtcKl28T2pT8TnFZ4yNosct3Q0io6JfBiz1FlGdqVQH3VHnepAEAAAAAADDzEGAAcTwB10jWgxcAAAAASUVORK5CYII="/><element name="bufferIcon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAuhJREFUeNrsWr9rU1EUznuNGqvFQh1ULOhiBx0KDtIuioO4pJuik3FxFfUPaAV1FTdx0Q5d2g4FFxehTnEpZHFoBy20tCIWtGq0TZP4HfkeHB5N8m6Sl/sa74XDybvv3vvOd8/Pe4lXrVZT3dD8VJc0B8QBcUAcEAfESktHGeR5XtMfqFQq/f92zPe/NbtGlKTdCY30kuxrpMGO94BlQCXs+rbh3ONgA6BlzP1p20d80gEI5hmA2A92Qua1Q2PtAFISM+bvjMG8U+Q7oA3rQGASwrYCU6WpNdLGYbA+Pq5jjXIiwi8EEa2UDbQSaKOIuV+SlkcCrfjY8XTI9EpKGwP0C2kru2hLtHqa4zoXtZRWyvi4CLwv9Opr6Hkn6A9HKgEANsQ1iqC3Ub/vRUk2JgmRkatK36kVrnt0qObunwUdUUMXMWYpakJsO5Am8tAw2GBIgwWA+G2S2dMpiw0gDioQRQJoKhRb1QiDwlHZUABYbaXWsm5ae6loTE4ZDxN4CZar8foVzOJ2iyZ2kWF3t7YIevffaMT5yJ70kQb2fQ1sE5SHr2wazs2wgMxgbsEKEAgxAvZUJbQLBGTSBMgNrncJbA6AljtS/eKDJ0Ez+DmrQEzXS2h1Ck25kAg0IZcUOaydCy4sYnN2fOA+2AP16gNoHALlQ+fwH7XO4CxLenUpgj4xr6ugY2roPMbMx+Xs18m/E8CVEIhxsNeg83XWOAN6grG3lGbk8uE5fr4B/WH3cJw+co/l9nTYsSGYCJ/lY5/qv0thn6nrIWmjeJcPSnWOeY++AkF8tpJHIMAUs/MaBBpj3znZfQo5psY+ZrG4gv5HickjEOymKjEeRpgyST6IuZcTcWbnjcgdPi5ghxciRKsl1lDSsgwA1i8fssonJgzmTSqfGUkCENndNdAL7PS6QQ7ZYISTo+1qq0LEWjTWcvY4isa4z+yfQB+7ooyHVg5RI7/i1Ijn/vnggDggDogD4oC00P4KMACd/juEHOrS4AAAAABJRU5ErkJggg=="/></elements></component><component name="dock"><elements><element name="button" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFBJREFUeNrs0cEJACAQA8Eofu0fu/W6EM5ZSAFDRpKTBs00CQQEBAQEBAQEBAQEBAQEBATkK8iqbY+AgICAgICAgICAgICAgICAgIC86QowAG5PAQzEJ0lKAAAAAElFTkSuQmCC"/></elements></component><component name="playlist"><elements><element name="item" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAIAAAC1nk4lAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNrs2NEJwCAMBcBYuv/CFuIE9VN47WWCR7iocXR3pdWdGPqqwIoMjYfQeAiNh9B4JHc6MHQVHnjggQceeOCBBx77TifyeOY0iHi8DqIdEY8dD5cL094eePzINB5CO/LwcOTptNB4CP25L4TIbZzpU7UEGAA5wz1uF5rF9AAAAABJRU5ErkJggg=="/><element name="sliderRail" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNrsy6ENACAMAMHClp2wYxZLAg5Fcu9e3OjuOKqqfTMzbs14CIZhGIZhGIZhGP4VLwEGAK/BBnVFpB0oAAAAAElFTkSuQmCC"/><element name="sliderThumb" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAA8CAIAAADpFA0BAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNrsy7ENACAMBLE8++8caFFKKiRffU53112SGs3ttOohGIZhGIZhGIZh+Fe8BRgAiaUGde6NOSEAAAAASUVORK5CYII="/></elements></component></components></skin>';this.xml=null;if(window.DOMParser){parser=new DOMParser();this.xml=parser.parseFromString(this.text,"text/xml")}else{this.xml=new ActiveXObject("Microsoft.XMLDOM");this.xml.async="false";this.xml.loadXML(this.text)}return this}})(jwplayer);(function(b){_css=b.utils.css;_hide=function(a){_css(a,{display:"none"})};_show=function(a){_css(a,{display:"block"})};b.html5.display=function(M,B){var E=M;var W={};var U;var a;var Q;var D;var C;var L;var R;var N=E.skin.getComponentSettings("display").bufferrotation===undefined?15:parseInt(E.skin.getComponentSettings("display").bufferrotation,10);var V=E.skin.getComponentSettings("display").bufferinterval===undefined?100:parseInt(E.skin.getComponentSettings("display").bufferinterval,10);var X={display:{style:{cursor:"pointer",top:0,left:0,overflow:"hidden"},click:G},display_icon:{style:{cursor:"pointer",position:"absolute",top:((E.skin.getSkinElement("display","background").height-E.skin.getSkinElement("display","playIcon").height)/2),left:((E.skin.getSkinElement("display","background").width-E.skin.getSkinElement("display","playIcon").width)/2),border:0,margin:0,padding:0,zIndex:3}},display_iconBackground:{style:{cursor:"pointer",position:"absolute",top:((a-E.skin.getSkinElement("display","background").height)/2),left:((U-E.skin.getSkinElement("display","background").width)/2),border:0,backgroundImage:(["url(",E.skin.getSkinElement("display","background").src,")"]).join(""),width:E.skin.getSkinElement("display","background").width,height:E.skin.getSkinElement("display","background").height,margin:0,padding:0,zIndex:2}},display_image:{style:{display:"none",width:U,height:a,position:"absolute",cursor:"pointer",left:0,top:0,margin:0,padding:0,textDecoration:"none",zIndex:1}},display_text:{style:{zIndex:4,position:"relative",opacity:0.8,backgroundColor:parseInt("000000",16),color:parseInt("ffffff",16),textAlign:"center",fontFamily:"Arial,sans-serif",padding:"0 5px",fontSize:14}}};E.jwAddEventListener(b.api.events.JWPLAYER_PLAYER_STATE,P);E.jwAddEventListener(b.api.events.JWPLAYER_MEDIA_MUTE,P);E.jwAddEventListener(b.api.events.JWPLAYER_PLAYLIST_ITEM,P);E.jwAddEventListener(b.api.events.JWPLAYER_ERROR,H);K();function K(){W.display=I("div","display");W.display_text=I("div","display_text");W.display.appendChild(W.display_text);W.display_image=I("img","display_image");W.display_image.onerror=function(c){_hide(W.display_image)};W.display_image.onload=O;W.display_icon=I("div","display_icon");W.display_iconBackground=I("div","display_iconBackground");W.display.appendChild(W.display_image);W.display_iconBackground.appendChild(W.display_icon);W.display.appendChild(W.display_iconBackground);Z()}this.getDisplayElement=function(){return W.display};this.resize=function(c,d){U=c;a=d;_css(W.display,{width:c,height:d});_css(W.display_text,{width:(c-10),top:((a-W.display_text.getBoundingClientRect().height)/2)});_css(W.display_iconBackground,{top:((a-E.skin.getSkinElement("display","background").height)/2),left:((U-E.skin.getSkinElement("display","background").width)/2)});S();P({})};function O(c){Q=W.display_image.naturalWidth;D=W.display_image.naturalHeight;S()}function S(){b.utils.stretch(E.jwGetStretching(),W.display_image,U,a,Q,D)}function I(e,c){var d=document.createElement(e);d.id=E.id+"_jwplayer_"+c;_css(d,X[c].style);return d}function Z(){for(var c in W){if(X[c].click!==undefined){W[c].onclick=X[c].click}}}function G(c){if(typeof c.preventDefault!="undefined"){c.preventDefault()}else{c.returnValue=false}if(E.jwGetState()!=b.api.events.state.PLAYING){E.jwPlay()}else{E.jwPause()}}function T(c){if(R){return}_show(W.display_iconBackground);W.display_icon.style.backgroundImage=(["url(",E.skin.getSkinElement("display",c).src,")"]).join("");_css(W.display_icon,{display:"block",width:E.skin.getSkinElement("display",c).width,height:E.skin.getSkinElement("display",c).height,top:(E.skin.getSkinElement("display","background").height-E.skin.getSkinElement("display",c).height)/2,left:(E.skin.getSkinElement("display","background").width-E.skin.getSkinElement("display",c).width)/2});if(E.skin.getSkinElement("display",c+"Over")!==undefined){W.display_icon.onmouseover=function(d){W.display_icon.style.backgroundImage=["url(",E.skin.getSkinElement("display",c+"Over").src,")"].join("")};W.display_icon.onmouseout=function(d){W.display_icon.style.backgroundImage=["url(",E.skin.getSkinElement("display",c).src,")"].join("")}}else{W.display_icon.onmouseover=null;W.display_icon.onmouseout=null}}function J(){_hide(W.display_icon);_hide(W.display_iconBackground)}function H(c){R=true;J();W.display_text.innerHTML=c.error;_show(W.display_text);W.display_text.style.top=((a-W.display_text.getBoundingClientRect().height)/2)+"px"}function Y(){_css(W.display_image,{display:"none"});delete W.display_image.src}function F(){var c=W.display_image;W.display_image=I("img","display_image");W.display_image.onerror=function(d){_hide(W.display_image)};W.display_image.onload=O;W.display.replaceChild(W.display_image,c)}function P(c){if((c.type==b.api.events.JWPLAYER_PLAYER_STATE||c.type==b.api.events.JWPLAYER_PLAYLIST_ITEM)&&R){R=false;_hide(W.display_text)}if(L!==undefined){clearInterval(L);L=null;b.utils.animations.rotate(W.display_icon,0)}switch(E.jwGetState()){case b.api.events.state.BUFFERING:T("bufferIcon");C=0;L=setInterval(function(){C+=N;b.utils.animations.rotate(W.display_icon,C%360)},V);T("bufferIcon");break;case b.api.events.state.PAUSED:_css(W.display_image,{background:"transparent no-repeat center center"});T("playIcon");break;case b.api.events.state.IDLE:if(E.jwGetPlaylist()[E.jwGetItem()].image){_css(W.display_image,{display:"block"});W.display_image.src=b.utils.getAbsolutePath(E.jwGetPlaylist()[E.jwGetItem()].image)}else{F()}T("playIcon");break;default:if(E.jwGetMute()){F();T("muteIcon")}else{F();_hide(W.display_iconBackground);_hide(W.display_icon)}break}}return this}})(jwplayer);(function(jwplayer){jwplayer.html5.eventdispatcher=function(id,debug){var _id=id;var _debug=debug;var _listeners;var _globallisteners;this.resetEventListeners=function(){_listeners={};_globallisteners=[]};this.resetEventListeners();this.addEventListener=function(type,listener,count){try{if(_listeners[type]===undefined){_listeners[type]=[]}if(typeof(listener)=="string"){eval("listener = "+listener)}_listeners[type].push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeEventListener=function(type,listener){try{for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){if(_listeners[type][lisenterIndex].toString()==listener.toString()){_listeners[type].slice(lisenterIndex,lisenterIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.addGlobalListener=function(listener,count){try{if(typeof(listener)=="string"){eval("listener = "+listener)}_globallisteners.push({listener:listener,count:count})}catch(err){jwplayer.utils.log("error",err)}return false};this.removeGlobalListener=function(listener){try{for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){if(_globallisteners[globalListenerIndex].toString()==listener.toString()){_globallisteners.slice(globalListenerIndex,globalListenerIndex+1);break}}}catch(err){jwplayer.utils.log("error",err)}return false};this.sendEvent=function(type,data){if(data===undefined){data={}}jwplayer.utils.extend(data,{id:_id,version:jwplayer.version,type:type});if(_debug){jwplayer.utils.log(type,data)}if(typeof _listeners[type]!="undefined"){for(var listenerIndex=0;listenerIndex<_listeners[type].length;listenerIndex++){try{_listeners[type][listenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener",_listeners[type][listenerIndex].listener,err)}if(_listeners[type][listenerIndex].count===1){delete _listeners[type][listenerIndex]}else{if(_listeners[type][listenerIndex].count>0){_listeners[type][listenerIndex].count=_listeners[type][listenerIndex].count-1}}}}for(var globalListenerIndex=0;globalListenerIndex<_globallisteners.length;globalListenerIndex++){try{_globallisteners[globalListenerIndex].listener(data)}catch(err){jwplayer.utils.log("There was an error while handling a listener",_globallisteners[globalListenerIndex].listener,err)}if(_globallisteners[globalListenerIndex].count===1){delete _globallisteners[globalListenerIndex]}else{if(_globallisteners[globalListenerIndex].count>0){_globallisteners[globalListenerIndex].count=_globallisteners[globalListenerIndex].count-1}}}}}})(jwplayer);(function(d){var c={prefix:"",file:"",link:"",margin:8,out:0.5,over:1,timeout:3,hide:true,position:"bottom-left"};_css=d.utils.css;d.html5.logo=function(x,w){var a=x;var v;var A;var G;z();function z(){t();F();D()}function t(){if(c.prefix){var e=x.version.split(/\W/).splice(0,2).join("/");if(c.prefix.indexOf(e)<0){c.prefix+=e+"/"}}if(w.position==d.html5.view.positions.OVER){w.position=c.position}A=d.utils.extend({},c,w)}function F(){G=document.createElement("img");G.id=a.id+"_jwplayer_logo";G.style.display="none";G.onload=function(e){_css(G,b());a.jwAddEventListener(d.api.events.JWPLAYER_PLAYER_STATE,H);E()};if(!A.file){return}if(A.file.indexOf("http://")===0){G.src=A.file}else{G.src=A.prefix+A.file}}if(!A.file){return}this.resize=function(e,f){};this.getDisplayElement=function(){return G};function D(){if(A.link){G.onmouseover=B;G.onmouseout=E;G.onclick=u}else{this.mouseEnabled=false}}function u(e){if(typeof e!="undefined"){e.stopPropagation()}a.jwPause();a.jwSetFullscreen(false);if(A.link){window.open(A.link,"_blank")}return}function E(e){if(A.link){G.style.opacity=A.out}return}function B(e){if(A.hide){G.style.opacity=A.over}return}function b(){var e={textDecoration:"none",position:"absolute",cursor:"pointer"};e.display=A.hide?"none":"block";var f=A.position.toLowerCase().split("-");for(var g in f){e[f[g]]=A.margin}return e}function y(){if(A.hide){G.style.display="block";G.style.opacity=0;d.utils.fadeTo(G,A.out,0.1,parseFloat(G.style.opacity));v=setTimeout(function(){C()},A.timeout*1000)}}function C(){if(A.hide){d.utils.fadeTo(G,0,0.1,parseFloat(G.style.opacity))}}function H(e){if(e.newstate==d.api.events.state.BUFFERING){clearTimeout(v);y()}}return this}})(jwplayer);(function(e){var f={ended:e.api.events.state.IDLE,playing:e.api.events.state.PLAYING,pause:e.api.events.state.PAUSED,buffering:e.api.events.state.BUFFERING};var d=e.utils.css;e.html5.mediavideo=function(au,V){var R={abort:af,canplay:am,canplaythrough:am,durationchange:ai,emptied:af,ended:am,error:an,loadeddata:ai,loadedmetadata:ai,loadstart:am,pause:am,play:O,playing:am,progress:Y,ratechange:af,seeked:am,seeking:am,stalled:am,suspend:am,timeupdate:O,volumechange:af,waiting:am,canshowcurrentframe:af,dataunavailable:af,empty:af,load:av,loadedfirstframe:af};var Q=new e.html5.eventdispatcher();e.utils.extend(this,Q);var ar=au;var ab=V;var U;var S;var aw=e.api.events.state.IDLE;var X=null;var al;var at=0;var Z=false;var ah=false;var b;var c;var aq=[];var a;var W=false;function ad(){return aw}function av(g){}function af(g){}function am(g){if(f[g.type]){ag(f[g.type])}}function ag(i){if(W){return}if(al){i=e.api.events.state.IDLE}if(i==e.api.events.state.PAUSED&&aw==e.api.events.state.IDLE){return}if(i==e.api.events.state.PLAYING&&aw==e.api.events.state.IDLE){ag(e.api.events.state.BUFFERING);Q.sendEvent(e.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:ar.buffer});aa();return}if(aw!=i){var h=aw;ar.state=i;aw=i;var g=false;if(i==e.api.events.state.IDLE){aj();if(ar.position>=ar.duration&&(ar.position||ar.duration)){g=true}if(ab.style.display!="none"&&!ar.config.chromeless){ab.style.display="none"}}Q.sendEvent(e.api.events.JWPLAYER_PLAYER_STATE,{oldstate:h,newstate:i});if(g){Q.sendEvent(e.api.events.JWPLAYER_MEDIA_COMPLETE)}}al=false}function ai(h){var g={height:h.target.videoHeight,width:h.target.videoWidth,duration:Math.round(h.target.duration*10)/10};if(ar.duration===0||isNaN(ar.duration)){ar.duration=Math.round(h.target.duration*10)/10}ar.playlist[ar.item]=e.utils.extend(ar.playlist[ar.item],g);Q.sendEvent(e.api.events.JWPLAYER_MEDIA_META,{metadata:g})}function O(g){if(al){return}if(g!==undefined&&g.target!==undefined){if(ar.duration===0||isNaN(ar.duration)){ar.duration=Math.round(g.target.duration*10)/10}if(!Z&&ab.readyState>0){ag(e.api.events.state.PLAYING)}if(aw==e.api.events.state.PLAYING){if(!Z&&ab.readyState>0){Z=true;try{ab.currentTime=ar.playlist[ar.item].start}catch(h){}ab.volume=ar.volume/100;ab.muted=ar.mute}ar.position=Math.round(g.target.currentTime*10)/10;Q.sendEvent(e.api.events.JWPLAYER_MEDIA_TIME,{position:g.target.currentTime,duration:g.target.duration})}}Y(g)}function aa(){if(U===false&&aw==e.api.events.state.BUFFERING){Q.sendEvent(e.api.events.JWPLAYER_MEDIA_BUFFER_FULL);U=true}}function T(){var g=(aq[aq.length-1]-aq[0])/aq.length;a=setTimeout(function(){if(!S){Y({lengthComputable:true,loaded:1,total:1})}},g*10)}function Y(g){var h,i;if(g!==undefined&&g.lengthComputable&&g.total){ak();h=g.loaded/g.total*100;i=h/100*(ar.duration-ab.currentTime);if(50<h&&!S){clearTimeout(a);T()}}else{if((ab.buffered!==undefined)&&(ab.buffered.length>0)){maxBufferIndex=0;if(maxBufferIndex>=0){h=ab.buffered.end(maxBufferIndex)/ab.duration*100;i=ab.buffered.end(maxBufferIndex)-ab.currentTime}}}aa();if(!S){if(h==100&&S===false){S=true}if(h!==null&&(h>ar.buffer)){ar.buffer=Math.round(h);Q.sendEvent(e.api.events.JWPLAYER_MEDIA_BUFFER,{bufferPercent:Math.round(h)})}}}function ac(){if(X===null){X=setInterval(function(){O()},100)}}function aj(){clearInterval(X);X=null}function an(g){var h="There was an error: ";if((g.target.error&&g.target.tagName.toLowerCase()=="video")||g.target.parentNode.error&&g.target.parentNode.tagName.toLowerCase()=="video"){var i=g.target.error===undefined?g.target.parentNode.error:g.target.error;switch(i.code){case i.MEDIA_ERR_ABORTED:h="You aborted the video playback: ";break;case i.MEDIA_ERR_NETWORK:h="A network error caused the video download to fail part-way: ";break;case i.MEDIA_ERR_DECODE:h="The video playback was aborted due to a corruption problem or because the video used features your browser did not support: ";break;case i.MEDIA_ERR_SRC_NOT_SUPPORTED:h="The video could not be loaded, either because the server or network failed or because the format is not supported: ";break;default:h="An unknown error occurred: ";break}}else{if(g.target.tagName.toLowerCase()=="source"){c--;if(c>0){return}h="The video could not be loaded, either because the server or network failed or because the format is not supported: "}else{e.utils.log("Erroneous error received. Continuing...");return}}ae();h+=ap();W=true;Q.sendEvent(e.api.events.JWPLAYER_ERROR,{error:h});return}function ap(){var h="";for(var i in b.levels){var j=b.levels[i];var g=ab.ownerDocument.createElement("source");h+=e.utils.getAbsolutePath(j.file);if(i<(b.levels.length-1)){h+=", "}}return h}this.getDisplayElement=function(){return ab};this.play=function(){if(aw!=e.api.events.state.PLAYING){if(ab.style.display!="block"){ab.style.display="block"}ab.play();ac();if(U){ag(e.api.events.state.PLAYING)}}};this.pause=function(){ab.pause();ag(e.api.events.state.PAUSED)};this.seek=function(g){if(!(ar.duration===0||isNaN(ar.duration))&&!(ar.position===0||isNaN(ar.position))){ab.currentTime=g;ab.play()}};function ae(){ab.pause();aj();ar.position=0;al=true;ag(e.api.events.state.IDLE)}this.stop=ae;this.volume=function(g){ab.volume=g/100;ar.volume=g;Q.sendEvent(e.api.events.JWPLAYER_MEDIA_VOLUME,{volume:Math.round(g)})};this.mute=function(g){ab.muted=g;ar.mute=g;Q.sendEvent(e.api.events.JWPLAYER_MEDIA_MUTE,{mute:g})};this.resize=function(g,h){if(false){d(ab,{width:g,height:h})}Q.sendEvent(e.api.events.JWPLAYER_MEDIA_RESIZE,{fullscreen:ar.fullscreen,width:g,hieght:h})};this.fullscreen=function(g){if(g===true){this.resize("100%","100%")}else{this.resize(ar.config.width,ar.config.height)}};this.load=function(g){P(g);Q.sendEvent(e.api.events.JWPLAYER_MEDIA_LOADED);U=false;S=false;Z=false;if(!ar.config.chromeless){aq=[];ak();ag(e.api.events.state.BUFFERING);setTimeout(function(){O()},25)}};function ak(){var g=new Date().getTime();aq.push(g)}this.hasChrome=function(){return ah};function P(g){ar.duration=g.duration;ah=false;b=g;var l=document.createElement("video");l.preload="none";W=false;c=0;for(var m=0;m<g.levels.length;m++){var n=g.levels[m];if(e.utils.isYouTube(n.file)){delete l;ao(n.file);return}var k;if(n.type===undefined){var h=e.utils.extension(n.file);if(e.utils.extensionmap[h]!==undefined&&e.utils.extensionmap[h].html5!==undefined){k=e.utils.extensionmap[h].html5}else{k="video/"+h+";"}}else{k=n.type}if(e.utils.html5CanPlay(l,n.file)){var i=ab.ownerDocument.createElement("source");i.src=e.utils.getAbsolutePath(n.file);if(!e.utils.isLegacyAndroid()){i.type=k}c++;l.appendChild(i)}}if(c===0){W=true;Q.sendEvent(e.api.events.JWPLAYER_ERROR,{error:"The video could not be loaded because the format is not supported by your browser: "+ap()})}if(ar.config.chromeless){l.poster=e.utils.getAbsolutePath(g.image);l.controls="controls"}l.style.position=ab.style.position;l.style.top=ab.style.top;l.style.left=ab.style.left;l.style.width=ab.style.width;l.style.height=ab.style.height;l.style.zIndex=ab.style.zIndex;l.onload=av;l.volume=0;ab.parentNode.replaceChild(l,ab);l.id=ab.id;ab=l;for(var j in R){ab.addEventListener(j,function(o){if(o.target.parentNode!==null){R[o.type](o)}},true)}}function ao(j){var m=document.createElement("object");j=["http://www.youtube.com/v/",j.replace(/^[^v]+v.(.{11}).*/,"$1"),"&amp;hl=en_US&amp;fs=1&autoplay=1"].join("");var g={movie:j,allowFullScreen:"true",allowscriptaccess:"always"};for(var n in g){var i=document.createElement("param");i.name=n;i.value=g[n];m.appendChild(i)}var h=document.createElement("embed");var l={src:j,type:"application/x-shockwave-flash",allowscriptaccess:"always",allowfullscreen:"true",width:document.getElementById(au.id).style.width,height:document.getElementById(au.id).style.height};for(var k in l){h[k]=l[k]}m.appendChild(h);m.style.position=ab.style.position;m.style.top=ab.style.top;m.style.left=ab.style.left;m.style.width=document.getElementById(au.id).style.width;m.style.height=document.getElementById(au.id).style.height;m.style.zIndex=2147483000;ab.parentNode.replaceChild(m,ab);m.id=ab.id;ab=m;ah=true}this.embed=P;return this}})(jwplayer);(function(jwplayer){var _configurableStateVariables=["width","height","start","duration","volume","mute","fullscreen","item","plugins","stretching"];jwplayer.html5.model=function(api,container,options){var _api=api;var _container=container;var _model={id:_container.id,playlist:[],state:jwplayer.api.events.state.IDLE,position:0,buffer:0,config:{width:480,height:320,item:-1,skin:undefined,file:undefined,image:undefined,start:0,duration:0,bufferlength:5,volume:90,mute:false,fullscreen:false,repeat:"none",stretching:jwplayer.utils.stretching.UNIFORM,autostart:false,debug:undefined,screencolor:undefined}};var _media;var _eventDispatcher=new jwplayer.html5.eventdispatcher();var _components=["display","logo","controlbar"];jwplayer.utils.extend(_model,_eventDispatcher);for(var option in options){if(typeof options[option]=="string"){var type=/color$/.test(option)?"color":null;options[option]=jwplayer.utils.typechecker(options[option],type)}var config=_model.config;var path=option.split(".");for(var edge in path){if(edge==path.length-1){config[path[edge]]=options[option]}else{if(config[path[edge]]===undefined){config[path[edge]]={}}config=config[path[edge]]}}}for(var index in _configurableStateVariables){var configurableStateVariable=_configurableStateVariables[index];_model[configurableStateVariable]=_model.config[configurableStateVariable]}var pluginorder=_components.concat([]);if(_model.plugins!==undefined){if(typeof _model.plugins=="string"){var userplugins=_model.plugins.split(",");for(var userplugin in userplugins){if(typeof userplugins[userplugin]=="string"){pluginorder.push(userplugins[userplugin].replace(/^\s+|\s+$/g,""))}}}}if(jwplayer.utils.isIOS()){_model.config.chromeless=true}if(_model.config.chromeless){pluginorder=[]}_model.plugins={order:pluginorder,config:{controlbar:{position:jwplayer.html5.view.positions.BOTTOM}},object:{}};if(typeof _model.config.components!="undefined"){for(var component in _model.config.components){_model.plugins.config[component]=_model.config.components[component]}}for(var pluginIndex in _model.plugins.order){var pluginName=_model.plugins.order[pluginIndex];var pluginConfig=_model.config[pluginName]===undefined?{}:_model.config[pluginName];_model.plugins.config[pluginName]=_model.plugins.config[pluginName]===undefined?pluginConfig:jwplayer.utils.extend(_model.plugins.config[pluginName],pluginConfig);if(_model.plugins.config[pluginName].position===undefined){_model.plugins.config[pluginName].position=jwplayer.html5.view.positions.OVER}}_model.loadPlaylist=function(arg,ready){var input;if(typeof arg=="string"){try{input=eval(arg)}catch(err){input=arg}}else{input=arg}var config;switch(jwplayer.utils.typeOf(input)){case"object":config=input;break;case"array":config={playlist:input};break;default:config={file:input};break}_model.playlist=new jwplayer.html5.playlist(config);if(_model.config.shuffle){_model.item=_getShuffleItem()}else{if(_model.config.item>=_model.playlist.length){_model.config.item=_model.playlist.length-1}else{if(_model.config.item<0){_model.config.item=0}}_model.item=_model.config.item}if(!ready){_eventDispatcher.sendEvent(jwplayer.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:_model.playlist})}_model.setActiveMediaProvider(_model.playlist[_model.item])};function _getShuffleItem(){var result=null;if(_model.playlist.length>1){while(result===null){result=Math.floor(Math.random()*_model.playlist.length);if(result==_model.item){result=null}}}else{result=0}return result}function forward(evt){if(evt.type==jwplayer.api.events.JWPLAYER_MEDIA_LOADED){_container=_media.getDisplayElement()}_eventDispatcher.sendEvent(evt.type,evt)}_model.setActiveMediaProvider=function(playlistItem){if(_media!==undefined){_media.resetEventListeners()}_media=new jwplayer.html5.mediavideo(_model,_container);_media.addGlobalListener(forward);if(_model.config.chromeless){_media.load(playlistItem)}return true};_model.getMedia=function(){return _media};_model.setupPlugins=function(){for(var plugin in _model.plugins.order){try{if(jwplayer.html5[_model.plugins.order[plugin]]!==undefined){_model.plugins.object[_model.plugins.order[plugin]]=new jwplayer.html5[_model.plugins.order[plugin]](_api,_model.plugins.config[_model.plugins.order[plugin]])}else{if(window[_model.plugins.order[plugin]]!==undefined){_model.plugins.object[_model.plugins.order[plugin]]=new window[_model.plugins.order[plugin]](_api,_model.plugins.config[_model.plugins.order[plugin]])}else{_model.plugins.order.splice(plugin,plugin+1)}}}catch(err){jwplayer.utils.log("Could not setup "+_model.plugins.order[plugin])}}};return _model}})(jwplayer);(function(b){b.html5.playlist=function(a){var e=[];if(a.playlist&&a.playlist instanceof Array&&a.playlist.length>0){for(var f in a.playlist){if(!isNaN(parseInt(f))){e.push(new b.html5.playlistitem(a.playlist[f]))}}}else{e.push(new b.html5.playlistitem(a))}return e}})(jwplayer);(function(b){b.html5.playlistitem=function(f){var a={author:"",date:"",description:"",image:"",link:"",mediaid:"",tags:"",title:"",provider:"",file:"",streamer:"",duration:-1,start:0,currentLevel:-1,levels:[]};for(var e in a){if(f[e]!==undefined){a[e]=f[e]}}if(a.levels.length===0){a.levels[0]=new b.html5.playlistitemlevel(a)}return a}})(jwplayer);(function(b){b.html5.playlistitemlevel=function(a){var e={file:"",streamer:"",bitrate:0,width:0};for(var f in e){if(a[f]!==undefined){e[f]=a[f]}}return e}})(jwplayer);(function(b){b.html5.skin=function(){var a={};var d=false;this.load=function(f,c){new b.html5.skinloader(f,function(e){d=true;a=e;c()},function(){new b.html5.skinloader("",function(e){d=true;a=e;c()})})};this.getSkinElement=function(h,g){if(d){try{return a[h].elements[g]}catch(c){b.utils.log("No such skin component / element: ",[h,g])}}return null};this.getComponentSettings=function(c){if(d){return a[c].settings}return null};this.getComponentLayout=function(c){if(d){return a[c].layout}return null}}})(jwplayer);(function(b){b.html5.skinloader=function(B,t,y){var u={};var E=t;var x=y;var C=true;var z;var v=B;var a=false;function w(){if(v===undefined||v===""){D(b.html5.defaultSkin().xml)}else{b.utils.ajax(b.utils.getAbsolutePath(v),function(d){try{if(d.responseXML!==null){D(d.responseXML);return}}catch(c){}D(b.html5.defaultSkin().xml)},function(c){D(b.html5.defaultSkin().xml)})}}function D(n){var V=n.getElementsByTagName("component");if(V.length===0){return}for(var q=0;q<V.length;q++){var X=V[q].getAttribute("name");var h={settings:{},elements:{},layout:{}};u[X]=h;var R=V[q].getElementsByTagName("elements")[0].getElementsByTagName("element");for(var T=0;T<R.length;T++){F(R[T],X)}var l=V[q].getElementsByTagName("settings")[0];if(l!==undefined&&l.childNodes.length>0){var k=l.getElementsByTagName("setting");for(var d=0;d<k.length;d++){var c=k[d].getAttribute("name");var o=k[d].getAttribute("value");var p=/color$/.test(c)?"color":null;u[X].settings[c]=b.utils.typechecker(o,p)}}var i=V[q].getElementsByTagName("layout")[0];if(i!==undefined&&i.childNodes.length>0){var g=i.getElementsByTagName("group");for(var P=0;P<g.length;P++){var j=g[P];u[X].layout[j.getAttribute("position")]={elements:[]};for(var e=0;e<j.attributes.length;e++){var W=j.attributes[e];u[X].layout[j.getAttribute("position")][W.name]=W.value}var f=j.getElementsByTagName("*");for(var Q=0;Q<f.length;Q++){var U=f[Q];u[X].layout[j.getAttribute("position")].elements.push({type:U.tagName});for(var S=0;S<U.attributes.length;S++){var m=U.attributes[S];u[X].layout[j.getAttribute("position")].elements[Q][m.name]=m.value}if(u[X].layout[j.getAttribute("position")].elements[Q].name===undefined){u[X].layout[j.getAttribute("position")].elements[Q].name=U.tagName}}}}C=false;r()}}function r(){clearInterval(z);if(!a){z=setInterval(function(){s()},100)}}function F(d,e){var f=new Image();var i=d.getAttribute("name");var g=d.getAttribute("src");var j;if(g.indexOf("data:image/png;base64,")===0){j=g}else{var h=b.utils.getAbsolutePath(v);var c=h.substr(0,h.lastIndexOf("/"));j=[c,e,g].join("/")}u[e].elements[i]={height:0,width:0,src:"",ready:false};f.onload=function(k){A(f,i,e)};f.onerror=function(k){a=true;r();x()};f.src=j}function s(){for(var d in u){if(d!="properties"){for(var c in u[d].elements){if(!u[d].elements[c].ready){return}}}}if(C===false){clearInterval(z);E(u)}}function A(e,c,d){u[d].elements[c].height=e.height;u[d].elements[c].width=e.width;u[d].elements[c].src=e.src;u[d].elements[c].ready=true;r()}w()}})(jwplayer);(function(b){b.html5.api=function(t,a){var l={};if(!b.utils.html5SupportsConfig()){return l}var q=document.createElement("div");t.parentNode.replaceChild(q,t);q.id=t.id;l.version=b.version;l.id=q.id;var m=new b.html5.model(l,q,a);var o=new b.html5.view(l,q,m);var n=new b.html5.controller(l,q,m,o);l.skin=new b.html5.skin();l.jwPlay=function(c){if(typeof c=="undefined"){r()}else{if(c.toString().toLowerCase()=="true"){n.play()}else{n.pause()}}};l.jwPause=function(c){if(typeof c=="undefined"){r()}else{if(c.toString().toLowerCase()=="true"){n.pause()}else{n.play()}}};function r(){if(m.state==b.api.events.state.PLAYING||m.state==b.api.events.state.BUFFERING){n.pause()}else{n.play()}}l.jwStop=n.stop;l.jwSeek=n.seek;l.jwPlaylistItem=n.item;l.jwPlaylistNext=n.next;l.jwPlaylistPrev=n.prev;l.jwResize=n.resize;l.jwLoad=n.load;function p(c){return function(){return m[c]}}l.jwGetItem=p("item");l.jwGetPosition=p("position");l.jwGetDuration=p("duration");l.jwGetBuffer=p("buffer");l.jwGetWidth=p("width");l.jwGetHeight=p("height");l.jwGetFullscreen=p("fullscreen");l.jwSetFullscreen=n.setFullscreen;l.jwGetVolume=p("volume");l.jwSetVolume=n.setVolume;l.jwGetMute=p("mute");l.jwSetMute=n.setMute;l.jwGetStretching=p("stretching");l.jwGetState=p("state");l.jwGetVersion=function(){return l.version};l.jwGetPlaylist=function(){return m.playlist};l.jwAddEventListener=n.addEventListener;l.jwRemoveEventListener=n.removeEventListener;l.jwSendEvent=n.sendEvent;l.jwGetLevel=function(){};l.jwGetBandwidth=function(){};l.jwGetLockState=function(){};l.jwLock=function(){};l.jwUnlock=function(){};function s(e,c,d){return function(){e.loadPlaylist(e.config,true);e.setupPlugins();c.setup(e.getMedia().getDisplayElement());var f={id:l.id,version:l.version};d.sendEvent(b.api.events.JWPLAYER_READY,f);if(playerReady!==undefined){playerReady(f)}if(window[e.config.playerReady]!==undefined){window[e.config.playerReady](f)}e.sendEvent(b.api.events.JWPLAYER_PLAYLIST_LOADED,{playlist:e.playlist});d.item(e.item);if(e.config.autostart===true&&!e.config.chromeless){d.play()}}}if(m.config.chromeless){setTimeout(s(m,o,n),25)}else{l.skin.load(m.config.skin,s(m,o,n))}return l}})(jwplayer);

/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;

/**
 * Sexy Forms - for mootools 1.2.3
 * @name      sexyforms.v1.3.mootools.js
 * @author    Eduardo D. Sada - http://www.coders.me/web-html-js-css/javascript/sexy-forms
 * @version   1.3.1
 * @date      30-Oct-2009
 * @license   MIT - http://es.wikipedia.org/wiki/Licencia_MIT
 * @example   http://www.coders.me/ejemplos/sexy-forms/
 * @copyright (c) 2009 Eduardo D. Sada (www.coders.me)
*/

eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('m.2t({n:9(a){h($1c(a)=="34"){s 5.35(a)}t{s 5.36(a)}},A:9(a){h(a==\'u\'){s 5.26(\'u\').1y()||5.27().x}t h(a==\'1d\'){s 5.26(\'1d\').1y()||5.27().y}t{s 5.26(a)}}});o=j 1l({1m:9(a){5.7=a},14:9(){5.7.1z({\'C\':9(){5.i.K("k-"+5.E+"-C")}.p(5),\'1W\':9(){5.i.Q("k-"+5.E+"-C")}.p(5)})},2u:9(){5.7.1z({\'1A\':9(){5.i.K("k-"+5.E+"-C")}.p(5),\'1J\':9(a){5.i.Q("k-"+5.E+"-C")}.p(5),\'28\':9(){5.i.K("k-"+5.E+"-2v")}.p(5),\'2w\':9(a){5.i.Q("k-"+5.E+"-2v")}.p(5)})},1h:9(a){a.n({\'2x\':0,\'1B\':0,\'L\':\'1i\',\'37\':\'0\',\'1e-1K\':\'38\',\'2y\':\'1i\'})},1L:9(){h(5.i){5.7.R(5.i,\'19\');5.i.39();5.7.3a(\'3b\');5.7.Q(\'2z\');5.7.Q(\'k-1M-G\');5.7.3c();5.7.o=M}},1n:9(a){s(!5.i&&a.n(\'1N\')!=\'1i\'&&a.n(\'2A\')!=\'1O\')},1P:9(a){a=a||5.7;h(a.w(\'1a\')){5.1Q=1X;5.1a.n({\'2y\':\'3d(\'+a.w(\'1a\')+\') 3e-3f 1R 29\',\'u\':\'1%\',\'1B-1R\':18})}},N:9(){5.i=j m("B",{\'D\':\'k-\'+5.E});5.1o=j m("B",{\'D\':\'k-\'+5.E+\'-1R\'});5.S=j m("B",{\'D\':\'k-\'+5.E+\'-29\'});5.F=j m("B",{\'D\':\'k-\'+5.E+\'-1Y\'});5.1a=j m("B")},1p:9(a){h(a.w(\'1S\')){5.i.K(\'k-\'+5.E+\'-1S\')}}});2a=j 1l({1C:o,1m:9(a){5.T(a);5.E=\'G\';5.U()},N:9(){5.T();5.i.O(5.1o,5.S,5.F);5.i.R(5.7,\'19\');5.S.O(5.1a.I(5.7));5.1P()},U:9(){h(!5.1n(5.7))s;5.N();q a=5.7.A(\'L\');q b=5.1o.A(\'u\')*2;q c=5.7.A(\'u\')+b;5.1h(5.7);h(5.1Q){c=c+18}5.i.n({\'u\':c-8,\'L\':a});5.7.n({\'u\':c-8-b-(5.1Q?18:0)});5.1p(5.7);5.14();h(V.W.2b){5.7.n({"1e-1K":5.7.n("1e-1K")})}}});2B=j 1l({1C:o,1m:9(a){5.1Z=j m("G",{\'1c\':\'Z\'}).R(a,\'19\');5.T(5.1Z);5.E=\'G\';5.P=a;5.U()},N:9(){q a=(2c.3g||2c.3h||2c.3i||\'3j\').3k(0,2).3l()==\'3m\'?\'3n...\':\'3o...\';5.T();5.i.O(5.1o,5.S,5.F);5.i.R(5.7,\'19\');5.S.O(5.1a.I(5.7));5.1j=j m("G",{\'1c\':\'1M\',\'1T\':a}).R(5.1Z,\'3p\');5.1j.o=j 2d(5.1j);5.P.R(5.1Z,\'19\');5.1P(5.P)},U:9(){h(!5.1n(5.P))s;5.N();q a=5.P.A(\'L\');q b=5.P.A(\'u\');q c=5.1o.A(\'u\')*2;q b=b+c;5.1h(5.7);5.1h(5.P);h(5.1Q){b=b+18}5.i.n({\'u\':b-8,\'L\':a,\'21\':\'2C\',\'1q\':\'1O\'});5.7.n({\'u\':b-8-c-(5.1Q?18:0)});5.P.n({\'21\':\'2D\',\'3q\':\'3r\',\'u\':\'2E%\',\'1d\':\'2E%\',\'1r\':0,\'1R\':0,\'z-3s\':3,\'3t\':0,\'2A\':\'2F\'});5.1j.o.i.n({\'L\':\'1i\',\'21\':\'2D\',\'1r\':0,\'1Y\':0});5.1p(5.P);5.7.1f(\'1T\',5.P.w(\'1T\'));5.7.1f(\'2G\',\'2G\');5.14()},14:9(){5.T();5.P.1z({\'2e\':9(a){5.7.1f(\'1T\',5.P.w(\'1T\'))}.p(5),\'1A\':9(){5.7.1b(\'1A\');5.1j.1b(\'1A\')}.p(5),\'1J\':9(){5.7.1b(\'1J\');5.1j.1b(\'1J\')}.p(5),\'28\':9(){5.1j.1b(\'C\')}.p(5),\'2w\':9(){5.1j.1b(\'1W\')}.p(5)})}});2f=j 1l({1C:o,1m:9(a){5.T(a);5.E=\'1s\';5.U()},N:9(){5.i=j m("B",{\'D\':\'k-G\'});5.2g=j m("B",{\'D\':\'k-1s-1r\'}).I(j m("B",{\'D\':\'k-1s-3u\'}));5.S=j m("B",{\'D\':\'k-1s-29\'});5.2h=j m("B",{\'D\':\'k-1s-3v\'});5.2H=j m("B",{\'D\':\'k-1s-3w\'}).I(j m("B",{\'D\':\'k-1s-3x\'}));5.i.O(5.2g.O(5.S.O(5.2H),5.2h));5.i.R(5.7,\'19\');5.S.I(5.7,\'1r\')},U:9(){h(!5.1n(5.7))s;q a=V.W.2b?(V.W.1U?13:11):10;q b=5.7.A(\'L\');q c=5.7.A("1e-1K");q d=5.7.A("1e-2I");q e=5.7.A("1e-2J");q f=5.7.A(\'u\');q g=5.7.A(\'1d\');f=f+(V.W.1U?-16:(V.W.2K?-2:(V.W.3y?2:0)));g=g+(V.W.3z?-17:(V.W.2b?-2:(V.W.1U?-2:(V.W.2K?-4:0))));5.N();h(f>2L){f=2L}5.1h(5.7);5.7.n({\'u\':f-15,\'1d\':g,\'1e-1K\':c,\'1e-2I\':d,\'1e-2J\':e,\'1q\':\'1O\',\'1q-x\':\'1O\',\'1q-y\':\'2i\',\'2M\':\'1i\'});5.2g.n({\'u\':f+(V.W.1U?15:0)});5.2h.n({\'1d\':g+a});5.1p(5.7);5.14()}});2d=j 1l({1C:o,1m:9(a){5.T(a);5.E=\'1M\';5.U()},N:9(){5.T();5.i.O(5.1o.I(5.F));5.i.R(5.7,\'19\');5.F.I(5.1a.I(5.7));5.1P()},U:9(){h(!5.1n(5.7))s;q a=5.7.A(\'L\');5.1h(5.7);5.N();5.i.n({\'L\':a});5.1p(5.7);5.14();5.2u();5.7.K(\'k-1M-G\')}});2N=j 1l({1C:o,1m:9(a){5.T(a);5.E=\'G\';5.U()},N:9(){2O=5.7.w("1c")=="1t"?\'k-G-1t\':\'k-G-3A\';5.i=j m("B",{\'D\':\'k-G\'});5.12=j m(\'B\',{\'D\':2O});5.i.O(5.12);5.i.R(5.7,\'19\');5.12.O(5.7)},U:9(){h(!5.1n(5.7))s;q a=5.7.A(\'L\');5.1h(5.7);5.N();5.i.n({\'L\':a});h(5.7.X){5.12.K("k-"+5.7.w("1c")+"-X")}5.1p(5.7);5.14();5.7.K(\'2z\')},2P:9(){$$("G[1c=1t][2Q="+5.7.w("2Q")+"]").2j(9(a){h(5.7!==2k.2R(a)&&a.o){h(a.o.i){a.X=M;a.o.12.Q("k-1t-X");a.o.12.Q("k-22-X");a.o.i.Q("k-G-C")}}}.p(5))},14:9(){5.T();5.12.1k(\'1u\',9(a){h(!5.7.w(\'1S\')){5.7.X=5.7.X?M:1X;h(5.7.w("1c")=="1t"){5.2P();5.7.X=1X;5.12.K("k-1t-X")}t{h(5.7.X){5.12.K("k-22-X")}t{5.12.Q("k-22-X")}}}}.p(5));5.7.1k(\'1u\',9(a){5.12.1b(\'1u\',a)}.p(5))}});2S=j 1l({1C:o,1m:9(a){5.T(a);5.E=\'H\';5.U()},N:9(){5.T();5.F=j m("a",{\'D\':\'k-H-1Y\',\'2T\':\'#\'});5.1D=j m("3B");h(5.7.v.1v>0){5.1D.1f(\'Z\',5.7.v[5.7.v.J].Z)}5.S.I(5.1a.I(5.1D));5.Y=j m("B",{\'D\':\'k-H-3C\'});5.1V=j m("3D");5.2l=j m("B",{\'D\':\'k-H-2m-r\'}).I(j m("B",{\'D\':\'k-H-2m-l\'}).I(j m("B",{\'D\':\'k-H-2m-c\'})));5.1E=j m(\'B\',{\'3E\':{\'21\':\'2C\'}}).O(5.1V);5.Y.O(5.1E,5.2l);5.i.R(5.7,\'19\');5.i.O(5.1o,5.S,5.F);5.Y.R(5.7,\'19\')},U:9(){h(!5.1n(5.7))s;q a=5.7.A(\'L\');q b=5.7.A(\'u\').1y()+18;5.1h(5.7);5.N();5.i.n({\'L\':a});5.1P();5.S.n({\'u\':b});5.F.n({\'2x\':0,\'1B\':0,\'2M\':0});5.1E.n({\'1q-x\':\'1O\',\'1q-y\':\'2i\'});5.Y.n({\'1r\':5.i.3F.1y()+5.i.27().y,\'1R\':5.i.3G.1y()+1,\'u\':5.i.A(\'u\')-6,\'1d\':\'2i\',\'1B\':0,\'1N\':\'1i\'});5.1V.n({\'1q\':\'2F\',\'1B\':0});5.2l.n({\'u\':5.i.A(\'u\')});5.2n();5.1g=0;5.1p(5.7);5.14();5.7.n({\'1N\':\'1i\'})},1F:9(a){h(5.2o){5.2o.Q(\'1F\')}h(a){5.2o=a.K(\'1F\')}},2n:9(){3H(1G=0;1G<5.7.v.1v;1G++){q c=2k.2R(5.7.v[1G]);1H=j m("a",{\'2T\':\'#\',\'2U\':1G,\'3I\':3J}).1f(\'Z\',c.Z);1H.1z({\'1u\':9(a,b){5.1D.1f(\'Z\',a.w(\'Z\'));5.7.v.J=b;5.1F(a);5.F.C();5.1w();5.7.1b(\'2e\');s M}.p(5,[1H,1G]),\'1A\':9(a){5.1F(a)}.p(5,[1H])});5.1V.I(j m("3K").I(1H));h(c.w(\'1a\')){q d=j m("3L",{\'3M\':c.w(\'1a\'),\'3N\':\'1r\'});d.n({\'1B-1Y\':2});d.R(1H,\'1r\')}}5.Y.2p=3O.3P((5.7.v.1v.1y()+1)*20,3Q)},1w:9(){5.1g=0;5.1E.2q({\'1d\':[5.Y.2p,0]});(9(){q a=5.w(\'2V\');h($1c(a)==\'9\'){a=a.3R().2W(\'9 3S()\',\'\').2W(\'9 2V()\',\'\')}3T(a)}.p(5.7))();5.7.1b(\'2e\')},2r:9(){5.1V.3U();5.2n();5.1g=1;5.1E.2q({\'1d\':[0,5.Y.2p]})},14:9(){5.1E.1f(\'2q\',{3V:3W,3X:3Y.3Z.40.41,42:9(){h(5.1g&&!V.W.1U){5.Y.n({\'1N\':\'2X\'})}}.p(5),43:9(){5.Y.n({\'1N\':5.1g?\'2X\':\'1i\'})}.p(5)});5.S.1k(\'1u\',9(a){5.F.1b(\'1u\',a);5.F.C();s M}.p(5));5.F.1k(\'1u\',9(){h(!5.7.w(\'1S\')){h(5.1g){5.1w()}t{5.2r()}}s M}.p(5));5.F.1k(\'C\',9(){5.K("k-H-C")});5.F.1k(\'C\',9(){5.i.K("k-H-C")}.p(5));5.F.1k(\'1W\',9(){5.i.Q("k-H-C")}.p(5));5.i.1z({\'1W\':9(){5.1w()}.p(5),\'1A\':9(){5.K("k-H-C")},\'1J\':9(){5.Q("k-H-C")}});5.F.1k(\'44\',9(a){h(!5.7.w(\'1S\')){h(a.2Y&&a.1I=="2Z"){h(!5.1g){5.2r()}s M}t h(a.2Y&&a.1I=="30"){5.1w();s M}t h(a.1I=="2Z"){h(5.7.v.J!=5.7.1v-1){5.7.v.J+=1;5.1x()}s M}t h(a.1I=="30"){h(5.7.v.J!=0){5.7.v.J-=1;5.1x()}s M}t h(a.1I=="\\""){h(5.7.v.J+6<5.7.1v-1){5.7.v.J+=6}t{5.7.v.J=5.7.1v-1}5.1x();s M}t h(a.1I=="!"){h(5.7.v.J-6>0){5.7.v.J-=6}t{5.7.v.J=0}5.1x();s M}s 1X}}.p(5));2k.1z({\'28\':9(a){h(5.1g&&!5.Y.23(a.24)&&!5.i.23(a.24)){5.1w()}}.p(5),\'45\':9(a){h(5.1g&&!5.Y.23(a.24)&&!5.i.23(a.24)){5.1w()}}.p(5)})},1x:9(){h(5.7.v.1v>0){5.1D.1f(\'Z\',5.7.v[5.7.v.J].Z)}t{5.1D.1f(\'Z\',\'\')}25=5.Y.46(\'a[2U=\'+5.7.v.J+\']\');h(25){5.1F(25);25.C()}5.F.C()}});m.2t({31:9(a){a=$47({\'32\':M},a||{});h(!5.o){q b=5.w("1c");q c=5.w("33");h(c==\'G\'){h(b=="Z"||b=="48"||b==49){5.o=j 2a(5)}t h(b=="4a"||b=="1L"||b=="1M"){5.o=j 2d(5)}t h(b=="P"){5.o=j 2B(5)}t h(b=="1t"||b=="22"){5.o=j 2N(5)}}t h(c==\'H\'){h(5.w(\'4b\')){5.o=j 2f(5)}t h(a[\'32\']){5.o=j 2a(5)}t{5.o=j 2S(5)}}t h(c==\'2s\'){5.o=j 2f(5)}}},1L:9(){h(5.o){5.o.1L()}},1x:9(){h(5.w(\'33\')==\'H\'&&5.o){5.o.1x()}}});9 4c(){$$("G","H","2s").2j(9(a){a.31()})};9 4d(){$$("G","H","2s").2j(9(a){a.1L()})};',62,262,'|||||this||element||function||||||||if|padre|new|sexy||Element|css|SexyElement|bind|var||return|else|width|options|get||||exact|div|focus|class|Type|hijoR|input|select|grab|selectedIndex|addClass|float|false|create|adopt|file|removeClass|inject|hijoC|parent|beautifier|Browser|Engine|checked|lista|text|||aRadio||addevents|||||before|icon|fireEvent|type|height|font|set|estado|resetStyle|none|botonsito|addEvent|Class|initialize|isVisible|hijoL|checkdisabled|overflow|top|area|radio|click|length|ocultar|refresh|toInt|addEvents|mouseenter|padding|Extends|selected|iewrapper|hover|iiC|elemTO|key|mouseleave|family|reset|button|display|hidden|addIcon|hasIcon|left|disabled|value|trident4|listaUL|blur|true|right|textito||position|checkbox|hasChild|target|fila_li|getComputedStyle|getSize|mousedown|center|SexyElementText|trident|navigator|SexyElementButton|change|SexyElementTextarea|hijoT|hijoC2|auto|each|document|footer|last|createlist|hoverElement|altomaximo|morph|mostrar|textarea|implement|addhover|press|mouseup|margin|background|ocultarlodelmostro|visibility|SexyElementFile|relative|absolute|100|visible|readonly|hijoB|weight|size|presto|478|outline|SexyElementRadio|aClass|blurall|name|id|SexyElementSelect|href|rel|onchange|replace|block|alt|down|up|DoSexy|noconflict|tag|string|getStyle|setStyles|border|inherit|dispose|erase|style|removeEvents|url|no|repeat|language|systemLanguage|userLanguage|en|substr|toLowerCase|es|Examinar|Browse|after|cursor|pointer|index|opacity|top2|center2|bottom|bottom2|webkit|gecko|check|span|list|ul|styles|offsetTop|offsetLeft|for|tabindex|999|li|img|src|align|Math|min|160|toString|anonymous|eval|empty|duration|300|transition|Fx|Transitions|Quint|easeOut|onStart|onComplete|keydown|keyup|getElement|extend|password|null|submit|multiple|beautify_each_form|reset_each_form'.split('|'),0,{}))

//<![CDATA[
 
/**
 * @class MavDialog
 * @abstract MooTools class for customized dialog window boxes
 * @version 0.1.1
 *
 * @license MIT-style license
 * @author Dustin C Hansen <dustin [at] maveno.us>
 * @copyright Copyright (c) 2008 [Dustin Hansen](http://maveno.us, http://fuzecore.com).
 */

var MavDialog = new Class({
	Implements: [Options, Events],
	options: {
		'autoShow': true,
		'buttons': null,
		'cancel': null,
		'cancelClass': 'button w113 dialog-cancel', //cancel-button
		'cancelText': 'CANCEL',
		'cancelDestroy': true,
		'callback': null,
		'center': true,
		'dialogClass': 'mav-dialog',
		'draggable': false,
		'fxOptions': {},
		'footer': null,
		'footerClass': 'mav-dialog-footer',
		'force': false,
		'height': 'auto',
		'loadingMessage': 'loading...',
		'message': null,
		'messageAreaClass': 'mav-dialog-message',
		'messageBoxClass': 'mid-float-box',
		'noTitleClass': 'mav-no-title',
		'noFooterClass': 'mav-no-footer',
		'ok': null,
		'okClass': 'button w113 dialog-ok', //'ok-button',
		'okText': 'OK',
		'okDestroy': true,
		'parent': null,
		'shadeClass': 'mavdialog-shade',
		'styles': {},
		'title': null,
		'titleBarClass': 'mav-dialog-title',
		'titleClose': true,
		'titleCloseClass': 'icon-button md-closer',
		'titleCloseTitle': 'Close Dialog',
		'titleTextClass': 'md-title-text',
		'url': null,
		'useFx': false,
		'width': '400',

		'onComplete': $empty(),
		'onClose': $empty(),
		'onHide': $empty(),
		'onRequest': $empty(),
		'onShow': $empty()
	},

	'delayedShow': false,
	'dialog': null,
	'drag': null,
	'footer': null,
	'fx': null,
	'grabbed': null,
	'message': null,
	'parent': null,
	'request': null,
	'titlebar': null,

	initialize: function(_opts) {
		this.setOptions(_opts);
		if ($(this.options.id + '_dialog')) { return null; }

		this.request = new Request({
			'url': '',
			'onSuccess': this.urlRequest.bind(this),
			'onFailure': this.errorMessage.bind(this)
		});

		this.dialogId = 'mavd' + Math.ceil(Math.random() * 100000) + '_dialog';
		this.parent = $((this.options.parent || document.body));
		var dialog_styles = $merge({'display':'none', 'width':this.options.width.toInt()+'px'}, this.options.styles);

		this.dialog = new Element('div', {
			'id': this.dialogId, 
			'class': this.options.dialogClass,
			'opacity': (this.options.useFx ? 0 : 1),
			'styles': dialog_styles
		}).inject(this.parent);

		this.fx = this.options.useFx ? new Fx.Tween(this.dialog, $merge({
			'duration': '300'
		}, this.options.fxOptions)) : null;

		// dialog box sections and borders
		var db_message = new Element('div', {
			'class': this.options.messageBoxClass
		}).inject(this.dialog);
		
		// dialog box title
		if (this.options.title !== false) {
			this.titlebar = new Element('div', {
				'id': this.options.id + '_title',
				'class': this.options.titleBarClass
			}).inject(db_message);
			
			new Element('span', {'class':this.options.titleTextClass, 'html': this.options.title}).inject(this.titlebar);

			if (this.options.titleClose != false) {
				new Element('span', {
					'id':this.options.id + '_closer',
					'class': this.options.titleCloseClass,
					'title': this.options.titleCloseTitle
				}).inject(this.titlebar).addEvent('click', this.close.bind(this));
			}
		}

		// dialog box message
		this.message = new Element('div', {
			'id': this.options.id + '_message', 
			'class': this.options.messageAreaClass + (this.options.title === false ? ' ' + this.options.noTitleClass : '') + (this.options.footer === false ? ' ' + this.options.noFooterClass : '')
		}).inject(db_message).setStyle('height', (this.options.height=='auto'?'auto':this.options.height.toInt()+'px'));

		if ($defined(this.options.url)) {
			this.request.options.url = this.options.url;
			
			//VLAD 3-12-2010 adding 'data' for POST parameters
			if ($defined(this.options.data)) this.request.options.data = this.options.data;
			// and moved a line below above this.request.send();
			//			
			if (this.options.autoShow) { this.delayedShow = true; }
			
			this.request.send(); 
			
			this.setMessage(this.options.loadingMessage);		
			
			
		} else if ($defined(this.options.message)){
			this.setMessage(this.options.message);
		}

		// dialog footer
		if (this.options.footer !== false) {
			this.footer = new Element('div', {
				'id': this.options.id + '_footer',
				'class': this.options.footerClass
			}).inject(db_message);

			new Element('div', {'class': 'foot-wrap'}).inject(this.footer);

			if (this.options.ok !== false) {
				(this.createButton(this.options.id, this.options.okText, this.options.okClass, this.options.ok, this.options.okDestroy)).inject(this.footer.firstChild, 'top');
			}
			if (this.options.cancel !== false) {
				(this.createButton(this.options.id, this.options.cancelText, this.options.cancelClass, this.options.cancel, this.options.cancelDestroy)).inject(this.footer.firstChild, 'top');
			}

			if ($type(this.options.buttons) == 'object') {
				for(var btn in this.options.buttons) {
					btn = this.options.buttons[btn];
					(this.createButton(this.options.id, btn.text, btn.class_name, btn.action, !(btn.auto_close), ($defined(btn.tabindex) ? btn.tabindex : null))).inject(this.footer.firstChild, 'top');
				}
			}
		}

		// set dialog to draggable
		if (this.options.draggable && this.titlebar) {
			this.drag = new Drag.Move(this.dialog, {handle: this.titlebar});
		}

		this.fireEvent('complete');

		// execute onComplete function, if present.
		if (this.options.autoShow && !this.request.running) { this.show(); }
	},

	setMessage: function(_message) {
		var message = ($type(_message) == 'function' ? _message() : _message);

		if ($type(message) == 'element') {
			this.grabbed = message.getParent();
			if (this.grabbed != null) {
				message.removeClass('none');
				this.message.grab(message);
			} else {
				message.inject(this.message);
			}
		} else {
			this.message.set('html', message);
		}
		
		if (this.delayedShow) { 
			this.delayedShow = false;
			this.show();
		}
	},
	errorMessage: function(_error) {
		
	},
	
	urlRequest: function(_response) {
		this.setMessage(_response);
		this.fireEvent('request');
	},

	createButton: function(_id, _text, _class, _action, _unforce, _tabindex) {
		var self = this;
		var bid = _id + '_' + (_text.toLowerCase()).replace(/\W/g, '');
		var db_button = new Element('div', { 'class': 'goright image-button ' + _class });
		var db_link = new Element('a', {
			'id': bid,
			'href':'javascript:void(0)', 
			'tabindex': ($defined(_tabindex) ? _tabindex : (++this.tab_index)), 
			'html': _text
		}).inject(db_button);

		if (_action && _action instanceof Function) { db_link.addEvent('click', _action); }
		if (!_unforce || _unforce !== false) { db_link.addEvent('click', this.close.bind(this)); }

		return db_button;
	},

	toggleShade: function(_show) {
		if (!$('mavdialog_shade')) { new Element('div', {'id':'mavdialog_shade', 'class':this.options.shadeClass}).inject(document.body); }

		$('mavdialog_shade').setStyle('display', (_show === true ? 'block' : 'none'));
	},

	show: function() {
		if (this.options.force) {
			var shade_requests = ($(document.body).retrieve('shade_requets') || 0).toInt();
			$(document.body).store('shade_requests', (++shade_requests));
			this.toggleShade(this.options.force);
		}

		this.dialog.setStyle('display', '');
		if (this.options.center !== false) { this.screen_center(); }
		this.fireEvent('show');

		if (this.options.useFx) {
			this.fx.start('opacity', 0, 1);
		}
	},

	hide: function() {
		this.dialog.setStyle('display', 'none');
		this.fireEvent('hide');
	},

	close: function() {
		if (this.options.useFx) {
			this.fx.start('opacity', 1, 0).chain(this.finishClose.bind(this));
		} else { this.finishClose(); }
	},

	finishClose: function() {
		if ($(this.dialog)) {
			if (this.options.force) {
				var shade_requests = ($(document.body).retrieve('shade_requests')).toInt();
				$(document.body).store('shade_requests', (--shade_requests));
			}

			if ($defined(this.grabbed)) {
				this.grabbed.grab(this.message.firstChild);
			}

			this.dialog.dispose();
			if (this.options.force && shade_requests == 0) { this.toggleShade(); }

			this.fireEvent('close');
		}		
	},

	screen_center: function() {
		var parXY = this.parent.getCoordinates();
		var parScroll = this.parent.getScroll();
		var elmXY = this.dialog.getCoordinates();
		var elmWH = this.dialog.getSize();

		if (this.options.center !== 'y') { this.dialog.setStyle('left', ((parXY.width - elmWH.x) / 2) + 'px'); }
		if (this.options.center !== 'x') { this.dialog.setStyle('top', (((parXY.height - elmWH.y) / 2) + parScroll.y) + 'px'); }
	}
});


MavDialog.Confirm = new Class({
	Extends: MavDialog,

	initialize: function(_opts) {
		var opts = $merge(_opts, {
			'cancel':false,
			'titleClose':false,
			'message': this.buildMessage.bind(this, _opts.message),
			'ok': this.closeAction.bind(this, true),
			'cancel': this.closeAction.bind(this, false)
		});
		this.parent(opts);
	},
	
	buildMessage: function(_msg) {
		var message_box = new Element('div');
		new Element('div', {'class':'icon-button confirm-icon goleft'}).inject(message_box);
		new Element('div', {'class':'mav-alert-msg goleft', 'html': _msg}).inject(message_box);
		new Element('div', {'class':'clear'}).inject(message_box);
		
		return message_box;
	},
	
	closeAction: function(_confirmed) {
		this.close();

		if (this.options.useFx && $defined(this.options.callback)) {
			// bah.
			this.fx.start('opacity', 1, 0).chain(this.finishClose.bind(this)).chain(this.options.callback(_confirmed));
		} else {
			this.finishClose();
			if ($defined(this.options.callback) && $type(this.options.callback) == 'function') {
				this.options.callback(_confirmed);
			}
		}
	}
});

MavDialog.Prompt = new Class({
	Extends: MavDialog,

	initialize: function(_opts) {
		var opts = $merge(_opts, {
			'cancel':false,
			'titleClose':false,
			'message': this.buildMessage.bind(this, _opts.message),
			'ok': this.closeAction.bind(this),
			'cancel': this.closeAction.bind(this, false),
			'onComplete': function() {
				var text_elem = this.dialogId + '_prompted';
				window.setTimeout(function() {
					$(text_elem).focus();
				}, 310);
			}
		});
		this.parent(opts);
	},

	buildMessage: function(_msg) {
		var message_box = new Element('div');
		new Element('div', {'class':'icon-button prompt-icon goleft'}).inject(message_box);
		var msg_display = new Element('div', {'class':'mav-alert-msg goleft'}).inject(message_box);

		new Element('div', {'html': _msg}).inject(msg_display);
		new Element('input', {
			'id': this.dialogId + '_prompted',
			'type':'text', 
			'class': 'mav-prompt-input'
		}).inject(msg_display);

		new Element('div', {'class':'clear'}).inject(message_box);

		return message_box;
	},
	
	closeAction: function(_canceled) {
		this.close();
		
		var prompt_value = (_canceled === false ? null : $(this.dialogId + '_prompted').get('value'));
		if (this.options.useFx && $defined(this.options.callback)) {
			// bah.
			this.fx.start('opacity', 1, 0).chain(this.finishClose.bind(this)).chain(this.options.callback(prompt_value));
		} else {
			this.finishClose();
			if ($defined(this.options.callback) && $type(this.options.callback) == 'function') {
				this.options.callback(prompt_value);
			}
		}
	}
});

MavDialog.Alert = new Class({
	Extends: MavDialog,

	initialize: function(_opts) {
		var opts = $merge(_opts, {
			'cancel':false,
			'titleClose':false,
			'message': this.buildMessage.bind(this, _opts.message)
		});
		this.parent(opts);
	},

	buildMessage: function(_msg) {
		var message_box = new Element('div');
		new Element('div', {'class':'icon-button alert-icon goleft'}).inject(message_box);
		new Element('div', {'class':'mav-alert-msg goleft', 'html': _msg}).inject(message_box);
		new Element('div', {'class':'clear'}).inject(message_box);
		
		return message_box;
	}
});


//]]>

/*
---
 
name: Mif.Tree
description: Mif.Tree base Class
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: 
  - Core:1.2.4/*
  - More/Fx.Scroll
provides: Mif.Tree
 
...
*/

if(!Mif) var Mif = {};
if(!Mif.ids) Mif.ids = {};
if(!Mif.id) Mif.id = function(id){
	return Mif.ids[id];
};

Mif.Tree = new Class({
	
	version: '1.2.6.3',

	Implements: [new Events, new Options],
		
	options:{
		types: {},
		forest: false,
		animateScroll: true,
		height: 18,
		expandTo: true
	},
	
	initialize: function(options){
		this.setOptions(options);
		$extend(this, {
			types: this.options.types,
			forest: this.options.forest,
			animateScroll: this.options.animateScroll,
			dfltType: this.options.dfltType,
			height: this.options.height,
			container: $(options.container),
			UID: ++Mif.Tree.UID,
			key: {},
			expanded: []
		});
		this.defaults = {
			name: '',
			cls: '',
			openIcon: 'mif-tree-empty-icon',
			closeIcon: 'mif-tree-empty-icon',
			loadable: false,
			hidden: false
		};
		this.dfltState = {
			open: false
		};
		this.$index = [];
		this.updateOpenState();
		if(this.options.expandTo) this.initExpandTo();
		this.DOMidPrefix='mif-tree-';
		this.wrapper = new Element('div').addClass('mif-tree-wrapper').injectInside(this.container);
		this.events();
		this.initScroll();
		this.initSelection();
		this.initHover();
		this.addEvent('drawChildren', function(parent){
			var nodes = parent._toggle||[];
			for(var i = 0, l = nodes.length; i < l; i++){
				nodes[i].drawToggle();
			}
			parent._toggle = [];
		});
		var id = this.options.id;
		this.id = id;
		if(id != null) Mif.ids[id] = this;
		if (MooTools.version >= '1.2.2' && this.options.initialize) this.options.initialize.call(this);
	},
	
	bound: function(){
		Array.each(arguments, function(name){
			this.bound[name] = this[name].bind(this);
		}, this);
	},
	
	events: function(){
		this.bound('mouse', 'mouseleave', 'mousedown', 'preventDefault', 'toggleClick', 'toggleDblclick', 'focus', 'blurOnClick', 'keyDown', 'keyUp');
		
		this.wrapper.addEvents({
			mousemove: this.bound.mouse,
			mouseover: this.bound.mouse,
			mouseout: this.bound.mouse,
			mouseleave: this.bound.mouseleave,
			mousedown: this.bound.mousedown,
			click: this.bound.toggleClick,
			dblclick: this.bound.toggleDblclick,
			selectstart: this.bound.preventDefault
		});
		
		this.container.addEvent('click', this.bound.focus);
		document.addEvent('click', this.bound.blurOnClick);
		
		document.addEvents({
			keydown: this.bound.keyDown,
			keyup: this.bound.keyUp
		});
    },
    
	blurOnClick: function(event){
		var target = event.target;
		while(target){
			if(target == this.container) return;
			target = target.parentNode;
		}
		this.blur();
	},
    
	focus: function(){
		if(Mif.Focus && Mif.Focus == this) return this;
		if(Mif.Focus) Mif.Focus.blur();
		Mif.Focus = this;
		this.focused = true;
		this.container.addClass('mif-tree-focused');
		return this.fireEvent('focus');
	},
    
	blur: function(){
		Mif.Focus = null;
		if(!this.focused) return this;
		this.focused = false;
		this.container.removeClass('mif-tree-focused');
		return this.fireEvent('blur');
	},
	
	$getIndex: function(){//return array of visible nodes.
		this.$index = [];
		var node = this.forest ? this.root.getFirst() : this.root;
		var previous = node;
		while(node){
			if(!(previous.hidden && previous.contains(node))){
				if(!node.hidden) this.$index.push(node);
				previous = node;
			}
			node = node._getNextVisible();
		}
	},
	
	preventDefault: function(event){
		event.preventDefault();
	},
	
	mousedown: function(event){
		if(event.rightClick) return;
		event.preventDefault();
		this.fireEvent('mousedown');
	},
	
	mouseleave: function(){
		this.mouse.coords = {x: null,y: null};
		this.mouse.target = false;
		this.mouse.node = false;
		if(this.hover) this.hover();
	},
	
	mouse: function(event){
		this.mouse.coords = this.getCoords(event);
		var target = this.getTarget(event);
		this.mouse.target = target.target;
		this.mouse.node	= target.node;
	},
	
	getTarget: function(event){
		var target = event.target, node;
		while(!(/mif-tree/).test(target.className)){
			target = target.parentNode;
		}
		var test = target.className.match(/mif-tree-(gadjet)-[^n]|mif-tree-(icon)|mif-tree-(name)|mif-tree-(checkbox)/);
		if(!test){
			var y = this.mouse.coords.y;
			if(y == -1||!this.$index) {
				node = false;
			}else{
				node = this.$index[((y)/this.height).toInt()];
			}
			return {
				node: node,
				target: 'node'
			};
		}
		for(var i = 5; i > 0; i--){
			if(test[i]){
				var type = test[i];
				break;
			}
		}
		return {
			node: Mif.Tree.Nodes[target.getAttribute('uid')],
			target: type
		};
	},
	
	getCoords: function(event){
		var position = this.wrapper.getPosition();
		var x = event.page.x - position.x;
		var y = event.page.y - position.y;
		var wrapper = this.wrapper;
		if((y-wrapper.scrollTop > wrapper.clientHeight)||(x - wrapper.scrollLeft > wrapper.clientWidth)){//scroll line
			y = -1;
		};
		return {x: x, y: y};
	},
	
	keyDown: function(event){
		this.key = event;
		this.key.state = 'down';
		if(this.focused) this.fireEvent('keydown', [event]);
	},
	
	keyUp: function(event){
		this.key = {};
		this.key.state = 'up';
		if(this.focused) this.fireEvent('keyup', [event]);
	},
	
	toggleDblclick: function(event){
		var target = this.mouse.target;
		if(!(target == 'name' || target == 'icon')) return;
		this.mouse.node.toggle();
	},
	
	toggleClick: function(event){
		if(this.mouse.target != 'gadjet') return;
		this.mouse.node.toggle();
	},
	
	initScroll: function(){
		this.scroll = new Fx.Scroll(this.wrapper, {link: 'cancel'});
	},
	
	scrollTo: function(node){
		var position = node.getVisiblePosition();
		var top = position*this.height;
		var up = (top < this.wrapper.scrollTop);
		var down = (top > (this.wrapper.scrollTop + this.wrapper.clientHeight - this.height));
		if(position == -1 || ( !up && !down ) ) {
			this.scroll.fireEvent('complete');
			return false;
		}
		if(this.animateScroll){
			this.scroll.start(this.wrapper.scrollLeft, top - (down ? this.wrapper.clientHeight - this.height : this.height));
		}else{
			this.scroll.set(this.wrapper.scrollLeft, top - (down ? this.wrapper.clientHeight - this.height : this.height));
			this.scroll.fireEvent('complete');
		}
		return this;
	},
	
	updateOpenState: function(){
		this.addEvents({
			'drawChildren': function(parent){
				var children = parent.children;
				for(var i = 0, l = children.length; i < l; i++){
					children[i].updateOpenState();
				}
			},
			'drawRoot': function(){
				this.root.updateOpenState();
			}
		});
	},
	
	expandTo: function(node){
		if (!node) return this;
		var path = [];
		while( !node.isRoot() && !(this.forest && node.getParent().isRoot()) ){
			node = node.getParent();
			if(!node) break;
			path.unshift(node);
		};
		path.each(function(el){
			el.toggle(true);
		});
		return this;
	},
	
	initExpandTo: function(){
		this.addEvent('loadChildren', function(parent){
			if(!parent) return;
			var children = parent.children;
			for( var i = children.length; i--; ){
				var child = children[i];
				if(child.expandTo) this.expanded.push(child);
			}
		});
		function expand(){
			this.expanded.each(function(node){
				this.expandTo(node);
			}, this);
			this.expanded = [];
		};
		this.addEvents({
			'load': expand.bind(this),
			'loadNode': expand.bind(this)
		});
	}
	
});
Mif.Tree.UID = 0;

Array.implement({
	
	inject: function(added, current, where){//inject added after or before current;
		var pos = this.indexOf(current) + (where == 'before' ? 0 : 1);
		for(var i = this.length-1; i >= pos; i--){
			this[i + 1] = this[i];
		}
		this[pos] = added;
		return this;
	}
	
});


/*
---
 
name: Mif.Tree.Node
description: Mif.Tree.Node
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Node
 
...
*/

Mif.Tree.Node = new Class({

	Implements: [Events],
	
	initialize: function(structure, options) {
		$extend(this, structure);
		this.children = [];
		this.type = options.type || this.tree.dfltType;
		this.property = options.property || {};
		this.data = options.data;
		this.state = $extend($unlink(this.tree.dfltState), options.state);
		this.$calculate();
		this.UID = Mif.Tree.Node.UID++;
		Mif.Tree.Nodes[this.UID] = this;
		var id = this.id;
		if(id != null) Mif.ids[id] = this;
		this.tree.fireEvent('nodeCreate', [this]);
		this._property = ['id', 'name', 'cls', 'openIcon', 'closeIcon', 'openIconUrl', 'closeIconUrl', 'hidden'];
	},
	
	$calculate: function(){
		$extend(this, $unlink(this.tree.defaults));
		this.type = $splat(this.type);
		this.type.each(function(type){
			var props = this.tree.types[type];
			if(props) $extend(this, props);
		}, this);
		$extend(this, this.property);
		return this;
	},
	
	getDOM: function(what){
		var node = $(this.tree.DOMidPrefix+this.UID);
		if(what == 'node') return node;
		var wrapper = node.getFirst();
		if(what == 'wrapper') return wrapper;
		if(what == 'children') return wrapper.getNext();
		return wrapper.getElement('.mif-tree-'+what);
	},
	
	getGadjetType: function(){
		return (this.loadable && !this.isLoaded()) ? 'plus' : (this.hasVisibleChildren() ? (this.isOpen() ? 'minus' : 'plus') : 'none');
	},
	
	toggle: function(state) {
		if(this.state.open == state || this.$loading || this.$toggling) return this;
		var parent = this.getParent();
		function toggle(type){
			this.state.open = !this.state.open;
			if(type == 'drawed'){
				this.drawToggle();
			}else{
				parent._toggle = (parent._toggle||[])[this.state.open ? 'include' : 'erase'](this);
			}
			this.fireEvent('toggle', [this.state.open]);
			this.tree.fireEvent('toggle', [this, this.state.open]);
			return this;
		}
		if(parent && !parent.$draw){
			return toggle.apply(this, []);
		}
		if(this.loadable && !this.state.loaded) {
            if(!this.load_event){
                this.load_event = true;
                this.addEvent('load',function(){
                    this.toggle();
                }.bind(this));
            }
            return this.load();
        }
		if(!this.hasChildren()) return this;
		return toggle.apply(this, ['drawed']);
	},
	
	drawToggle: function(){
		this.tree.$getIndex();
		Mif.Tree.Draw.update(this);
	},
	
	recursive: function(fn, args){
		args=$splat(args);
		if(fn.apply(this, args) !== false){
			this.children.each(function(node){
				if(node.recursive(fn, args) === false){
					return false;
				}
			});
		}
		return this;
	},
	
	isOpen: function(){
		return this.state.open;
	},
	
	isLoaded: function(){
		return this.state.loaded;
	},
	
	isLast: function(){
		if(this.parentNode == null || this.parentNode.children.getLast() == this) return true;
		return false;
	},
	
	isFirst: function(){
		if(this.parentNode == null || this.parentNode.children[0] == this) return true;
		return false;
	},
	
	isRoot: function(){
		return this.parentNode == null ? true : false;
	},
	
	getChildren: function(){
		return this.children;
	},
	
	hasChildren: function(){
		return this.children.length ? true : false;
	},
	
	index: function(){
		if( this.isRoot() ) return 0;
		return this.parentNode.children.indexOf(this);
	},
	
	getNext: function(){
		if(this.isLast()) return null;
		return this.parentNode.children[this.index()+1];
	},
	
	getPrevious: function(){
		if( this.isFirst() ) return null;
		return this.parentNode.children[this.index()-1];
	},
	
	getFirst: function(){
		if(!this.hasChildren()) return null;
		return this.children[0];
	},
	
	getLast: function(){
		if(!this.hasChildren()) return null;
		return this.children.getLast();		
	},
	
	getParent: function(){
		return this.parentNode;
	},
	
	_getNextVisible: function(){
		var current=this;
		if(current.isRoot()){
			if(!current.isOpen() || !current.hasChildren(true)) return false;
			return current.getFirst(true);
		}else{
			if(current.isOpen() && current.getFirst(true)){
				return current.getFirst(true);
			}else{
				var parent = current;
				do{
					current = parent.getNext(true);
					if(current) return current;
					parent = parent.parentNode;
				}while(parent);
				return false;
			}
		}
	},
	
	getPreviousVisible: function(){
		var index = this.tree.$index.indexOf(this);
		return index == 0 ? null : this.tree.$index[index-1];
	},
	
	getNextVisible: function(){
		var index = this.tree.$index.indexOf(this);
		return index < this.tree.$index.length-1 ? this.tree.$index[index+1] : null;
	},
	
	getVisiblePosition: function(){
		return this.tree.$index.indexOf(this);
	},
	
	hasVisibleChildren: function(){
		if(!this.hasChildren()) return false;
		if(this.isOpen()){
			var next = this.getNextVisible();
			if(!next) return false;
			if(next.parentNode != this) return false;
			return true;
		}else{
			var child = this.getFirst();
			while(child){
				if(!child.hidden) return true;
				child = child.getNext();
			}
			return false;
		}
	},
	
	isLastVisible: function(){
		var next = this.getNext();
		while(next){
			if(!next.hidden) return false;
			next = next.getNext();
		};
		return true;
	},
		
	contains: function(node){
		while(node){
			if(node == this) return true;
			node = node.parentNode;
		};
		return false;
	},

	addType: function(type){
		return this.processType(type, 'add');
	},

	removeType: function(type){
		return this.processType(type, 'remove');
	},
	
	setType: function(type){
		return this.processType(type, 'set');
	},
	
	processType: function(type, action){
		switch(action){
			case 'add': this.type.include(type); break;
			case 'remove': this.type.erase(type); break;
			case 'set': this.type = type; break;
		}
		var current = {};
		this._property.each(function(p){
			current[p] = this[p];
		}, this);
		this.$calculate();
		this._property.each(function(p){
			this.updateProperty(p, current[p], this[p]);
		}, this);
		return this;
	},
	
	set: function(obj){
		this.tree.fireEvent('beforeSet', [this, obj]);
		var property = obj.property||obj||{};
		for(var p in property){
			var nv = property[p];
			var cv = this[p];
			this.updateProperty(p, cv, nv);
			this[p] = this.property[p] = nv;
		}
		this.tree.fireEvent('set', [this, obj]);
		return this;
	},
	
	updateProperty: function(p, cv, nv){
		if(nv == cv) return this;
		if(p == 'id'){
			delete Mif.ids[cv];
			if(nv) Mif.ids[nv]=this;
			return this;
		}
		if(!Mif.Tree.Draw.isUpdatable(this)) return this;
		switch(p){
			case 'name':
				this.getDOM('name').set('html', nv);
				return this;
			case 'cls':
				this.getDOM('wrapper').removeClass(cv).addClass(nv);
				return this;
			case 'openIcon':
			case 'closeIcon':
				this.getDOM('icon').removeClass(cv).addClass(nv);
				return this;
			case 'openIconUrl':
			case 'closeIconUrl':
				var icon = this.getDOM('icon');
				icon.setStyle('background-image', 'none');
				if(nv) icon.setStyle('background-image', 'url('+nv+')');
				return this;
			case 'hidden':
				this.getDOM('node').setStyle('display', nv ? 'none' : 'block');
				var _previous = this.getPreviousVisible();
				var _next = this.getNextVisible();
				var parent = this.getParent();
				this[p] = this.property[p]=nv;
				this.tree.$getIndex();
				var previous = this.getPreviousVisible();
				var next = this.getNextVisible();
				[_previous, _next, previous, next, parent, this].each(function(node){
					Mif.Tree.Draw.update(node);
				});
				return this;
		}
		return this;
	},
	
	updateOpenState: function(){
		if(this.state.open){
			this.state.open = false;
			this.toggle();
		}
	}
	
});

Mif.Tree.Node.UID = 0;
Mif.Tree.Nodes = {};

/*
---
 
name: Mif.Tree.Draw
description: convert javascript tree object to html
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Draw
 
...
*/

Mif.Tree.Draw = {

	getHTML: function(node,html){
		var prefix = node.tree.DOMidPrefix;
		var checkbox;
		if($defined(node.state.checked)){
			if(!node.hasCheckbox) node.state.checked='nochecked';
			checkbox = '<span class="mif-tree-checkbox mif-tree-node-'+node.state.checked+'" uid="'+node.UID+'">'+Mif.Tree.Draw.zeroSpace+'</span>';
		}else{
			checkbox = '';
		}
		html = html||[];
		html.push(
		'<div class="mif-tree-node ',(node.isLast() ? 'mif-tree-node-last' : ''),'"'+(node.hidden ? ' style="display:none"' : '')+' id="',prefix,node.UID,'">',
			'<span class="mif-tree-node-wrapper ',node.cls,(node.state.selected ? ' mif-tree-node-selected' : ''),'" uid="',node.UID,'">',
				'<span class="mif-tree-gadjet mif-tree-gadjet-',node.getGadjetType(),'" uid="',node.UID,'">',Mif.Tree.Draw.zeroSpace,'</span>',
				checkbox,
				'<span class="mif-tree-icon ',(node.closeIconUrl?'" style="background-image: url('+node.closeIconUrl+')" ': node.closeIcon+'"'),' uid="',node.UID,'">',Mif.Tree.Draw.zeroSpace,'</span>',
				'<span class="mif-tree-name" uid="',node.UID,'">',node.name,'</span>',
			'</span>',
			'<div class="mif-tree-children" style="display:none"></div>',
		'</div>'
		);
		return html;
	},
	
	children: function(parent, container){
		parent.open = true;
		parent.$draw = true;
		var html = [];
		var children = parent.children;
		for(var i = 0, l = children.length; i < l; i++){
			this.getHTML(children[i], html);
		}
		container = container || parent.getDOM('children');
		container.set('html', html.join(''));
		parent.tree.fireEvent('drawChildren',[parent]);
	},
	
	root: function(tree){
		var domRoot = this.node(tree.root);
		domRoot.inject(tree.wrapper);
		tree.$draw = true;
		tree.fireEvent('drawRoot');
	},
	
	forestRoot: function(tree){
		var container = new Element('div').addClass('mif-tree-children-root').injectInside(tree.wrapper);
		Mif.Tree.Draw.children(tree.root, container);
	},
	
	node: function(node){
		return new Element('div').set('html', this.getHTML(node).join('')).getFirst();
	},
	
	isUpdatable: function(node){
		if(
			(!node||!node.tree) ||
			(node.getParent() && !node.getParent().$draw) || 
			(node.isRoot() && (!node.tree.$draw||node.tree.forest)) 
		) return false;
		return true;
	},
	
	update: function(node){
		if(!this.isUpdatable(node)) return null;
		if(!node.hasChildren()) node.state.open = false;
		node.getDOM('gadjet').className = 'mif-tree-gadjet mif-tree-gadjet-'+node.getGadjetType();
		if (node.closeIconUrl) {
			node.getDOM('icon').setStyle('background-image', 'url('+(node.isOpen() ? node.openIconUrl : node.closeIconUrl)+')');
		} else {
			node.getDOM('icon').className = 'mif-tree-icon '+node[node.isOpen() ? 'openIcon' : 'closeIcon'];
		}
		node.getDOM('node')[(node.isLastVisible() ?'add' : 'remove')+'Class']('mif-tree-node-last');
		if(node.$loading) return null;
		var children = node.getDOM('children');
		if(node.isOpen()){
			if(!node.$draw) Mif.Tree.Draw.children(node);
			children.style.display = 'block';
		}else{
			children.style.display = 'none';
		}
		node.tree.fireEvent('updateNode', node);
		return node;
	},
	
	inject: function(node, element){
		if(!this.isUpdatable(node)) return;
		element = element || node.getDOM('node') || this.node(node);
		var previous = node.getPrevious();
		if(previous){
			element.injectAfter(previous.getDOM('node'));
			return;
		}
		var container;
		if(node.tree.forest && node.parentNode.isRoot()){
			container = node.tree.wrapper.getElement('.mif-tree-children-root');
		}else if(node.tree.root == node){
			container = node.tree.wrapper;
		}else{
			container = node.parentNode.getDOM('children');
		}
		element.inject(container, 'top');
	}
	
};

Mif.Tree.Draw.zeroSpace = Browser.Engine.trident ? '&shy;' : (Browser.Engine.webkit ? '&#8203' : '');



/*
---
 
name: Mif.Tree.Selection
description: tree nodes selection
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Selection
 
...
*/

Mif.Tree.implement({
	
	initSelection: function(){
		this.defaults.selectClass = '';
		this.wrapper.addEvent('mousedown', this.attachSelect.bindWithEvent(this));
	},
	
	attachSelect: function(event){
		if(!['icon', 'name', 'node'].contains(this.mouse.target)) return;
		var node = this.mouse.node;
		if(!node) return;
		this.select(node);
	},
	
	select: function(node) {
		if(!node) return this;
		var current = this.selected;
		if (current == node) return this;
		if (current) {
			current.select(false);
			this.fireEvent('unSelect', [current]).fireEvent('selectChange', [current, false]);
		}
		this.selected = node;
		node.select(true);
		this.fireEvent('select', [node]).fireEvent('selectChange', [node, true]);
		return this;
	},
	
	unselect: function(){
		var current = this.selected;
		if(!current) return this;
		this.selected = false;
		current.select(false);
		this.fireEvent('unSelect', [current]).fireEvent('selectChange', [current, false]);
		return this;
	},
	
	getSelected: function(){
		return this.selected;
	},
	
	isSelected: function(node){
		return node.isSelected();
	}
	
});

Mif.Tree.Node.implement({
		
	select: function(state) {
		this.state.selected = state;
		if(!Mif.Tree.Draw.isUpdatable(this)) return;
		var wrapper=this.getDOM('wrapper');
		wrapper[(state ? 'add' : 'remove')+'Class'](this.selectClass||'mif-tree-node-selected');
	},
	
	isSelected: function(){
		return this.state.selected;
	}
	
});


/*
---
 
name: Mif.Tree.Hover
description: hover(mouseover/mouseout) events/effects
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Hover
 
...
*/

Mif.Tree.implement({
	
	initHover: function(){
		this.defaults.hoverClass = '';
		this.wrapper.addEvent('mousemove', this.hover.bind(this));
		this.wrapper.addEvent('mouseout', this.hover.bind(this));
		this.defaultHoverState = {
			gadjet: false,
			checkbox: false,
			icon: false,
			name: false,
			node: false
		};
		this.hoverState = $unlink(this.defaultHoverState);
	},
	
	hover: function(){
		var cnode = this.mouse.node;
		var ctarget = this.mouse.target;
		$each(this.hoverState, function(node, target, state){
			if(node == cnode && (target == 'node'||target==ctarget)) return;
			if(node) {
				Mif.Tree.Hover.out(node, target);
				state[target] = false;
				this.fireEvent('hover', [node, target, 'out']);
			}
			if(cnode && (target == 'node'||target == ctarget)) {
				Mif.Tree.Hover.over(cnode, target);
				state[target] = cnode;
				this.fireEvent('hover', [cnode, target, 'over']);
			}else{
				state[target] = false;
			}
		}, this);
	},
	
	updateHover: function(){
		this.hoverState = $unlink(this.defaultHoverState);
		this.hover();
	}
	
});

Mif.Tree.Hover = {
	
	over: function(node, target){
		var wrapper = node.getDOM('wrapper');
		wrapper.addClass((node.hoverClass||'mif-tree-hover')+'-'+target);
		if(node.state.selected) wrapper.addClass((node.hoverClass||'mif-tree-hover')+'-selected-'+target);
	},
	
	out: function(node, target){
		var wrapper = node.getDOM('wrapper');
		wrapper.removeClass((node.hoverClass||'mif-tree-hover')+'-'+target).removeClass((node.hoverClass||'mif-tree-hover')+'-selected-'+target);
	}
	
};


/*
---
 
name: Mif.Tree.Load
description: load tree from json
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Load
 
...
*/

Mif.Tree.Load = {
		
	children: function(children, parent, tree){
		for( var i = children.length; i--; ){
			var child = children[i];
			var subChildren = child.children;
			var node = new Mif.Tree.Node({
				tree: tree,
				parentNode: parent||undefined
			}, child);
			if( tree.forest || parent != undefined){
				parent.children.unshift(node);
			}else{
				tree.root = node;
			}
			if(subChildren && subChildren.length){
				arguments.callee(subChildren, node, tree);
			}
		}
		if(parent) parent.state.loaded = true;
		tree.fireEvent('loadChildren', parent);
	}
	
};

Mif.Tree.implement({

	load: function(options){
		var tree = this;
		this.loadOptions = this.loadOptions||$lambda({});
		function success(json){
			var parent = null;
			if(tree.forest){
				tree.root = new Mif.Tree.Node({
					tree: tree,
					parentNode: null
				}, {});
				parent = tree.root;
			}
			Mif.Tree.Load.children(json, parent, tree);
			Mif.Tree.Draw[tree.forest ? 'forestRoot' : 'root'](tree);
			tree.$getIndex();
			tree.fireEvent('load');
			return tree;
		}
		options = $extend($extend({
			isSuccess: $lambda(true),
			secure: true,
			onSuccess: success,
			method: 'get'
		}, this.loadOptions()), options);
		if(options.json) return success(options.json);
		new Request.JSON(options).send();
		return this;
	}
	
});

Mif.Tree.Node.implement({
	
	load: function(options){
		this.$loading = true;
		options = options||{};
		this.addType('loader');
		var self = this;
		function success(json){
			Mif.Tree.Load.children(json, self, self.tree);
			delete self.$loading;
			self.state.loaded = true;
			self.removeType('loader');
			Mif.Tree.Draw.update(self);
			self.fireEvent('load');
			self.tree.fireEvent('loadNode', self);
			return self;
		}
		options=$extend($extend($extend({
			isSuccess: $lambda(true),
			secure: true,
			onSuccess: success,
			method: 'get'
		}, this.tree.loadOptions(this)), this.loadOptions), options);
		if(options.json) return success(options.json);
		new Request.JSON(options).send();
		return this;
	}
	
});


/*
---

name: Mif.Tree.Sort
description: Mif.Tree.Sort
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Sort

...
*/

Mif.Tree.implement({
	
	initSortable: function(sortFunction){
		this.sortable = true;
		this.sortFunction = sortFunction||function(node1, node2){
			if(node1.name > node2.name){
				return 1;
			}else if(node1.name < node2.name){
				return -1;
			}else{
				return 0;
			}
		};
		this.addEvent('loadChildren', function(parent){
			if(parent) parent.sort();
		});
		this.addEvent('structureChange', function(from, to, where, type){
			from.sort();
		});
		return this;
	}
	
});


Mif.Tree.Node.implement({

	sort: function(sortFunction){
		this.children.sort(sortFunction||this.tree.sortFunction);
		return this;
	}
	
});


/*
---
 
name: Mif.Tree.Transform
description: implement move/copy/del/add actions
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Transform
 
...
*/

Mif.Tree.Node.implement({
	
	inject: function(node, where, element){//element - internal property
		where = where||'inside';
		var parent = this.parentNode;
		function getPreviousVisible(node){
			var previous = node;
			while(previous){
				previous = previous.getPrevious();
				if(!previous) return null;
				if(!previous.hidden) return previous;
			}
			return null;
		}
		var previousVisible = getPreviousVisible(this);
		var type = element ? 'copy' : 'move';
		switch(where){
			case 'after':
			case 'before':
				if( node['get' + (where == 'after' ? 'Next' : 'Previous')]() == this ) return false;
				if(this.parentNode) {
					this.parentNode.children.erase(this);
				}
				this.parentNode = node.parentNode;
				this.parentNode.children.inject(this, node, where);
				break;
			case 'inside':
				if( node.tree && node.getLast() == this ) return false;
				if(this.parentNode) {
					this.parentNode.children.erase(this);
				}
				if(node.tree){
					if(!node.hasChildren()){
						node.$draw = true;
						node.state.open = true;
					}
					node.children.push(this);
					this.parentNode = node;
				}else{
					node.root = this;
					this.parentNode = null;
					node.fireEvent('drawRoot');
				}
				break;
		}		
		var tree = node.tree || node;
		if(this == this.tree.root){
			this.tree.root = false;
		}
		if(this.tree != tree){
			var oldTree = this.tree;
			this.recursive(function(){
				this.tree = tree;
			});
		};
		tree.fireEvent('structureChange', [this, node, where, type]);
		tree.$getIndex();
		if(oldTree)	oldTree.$getIndex();
		Mif.Tree.Draw.inject(this, element);
		[node, this, parent, previousVisible, getPreviousVisible(this)].each(function(node){
			Mif.Tree.Draw.update(node);
		});
		return this;
	},
	
	copy: function(node, where){
		if (this.copyDenied) return this;
		function copy(structure){
			var node = structure.node;
			var tree = structure.tree;
			var options = $unlink({
				property: node.property,
				type: node.type,
				state: node.state,
				data: node.data
			});
			options.state.open = false;
			var nodeCopy = new Mif.Tree.Node({
				parentNode: structure.parentNode,
				children: [],
				tree: tree
			}, options);
			node.children.each(function(child){
				var childCopy = copy({
					node: child,
					parentNode: nodeCopy,
					tree: tree
				});
				nodeCopy.children.push(childCopy);
			});
			return nodeCopy;
		};
		
		var nodeCopy = copy({
			node: this,
			parentNode: null,
			tree: node.tree
		});
		return nodeCopy.inject(node, where, Mif.Tree.Draw.node(nodeCopy));
	},
	
	remove: function(){
		if (this.removeDenied) return;
		this.tree.fireEvent('remove', [this]);
		var parent = this.parentNode, previousVisible = this.getPreviousVisible();
		if(parent) {	
			parent.children.erase(this);
		}else if(!this.tree.forest){
			this.tree.root = null;
		}
		this.tree.selected = false;
		this.getDOM('node').destroy();
		this.tree.$getIndex();
		Mif.Tree.Draw.update(parent);
		Mif.Tree.Draw.update(previousVisible);
		this.recursive(function(){
			if(this.id) delete Mif.ids[this.id];
		});
		this.tree.mouse.node = false;
		this.tree.updateHover();
	}
	
});


Mif.Tree.implement({

	move: function(from, to, where){
		if(from.inject(to, where)){
			this.fireEvent('move', [from, to, where]);
		}
		return this;
	},
	
	copy: function(from, to, where){
		var copy = from.copy(to, where);
		if(copy){
			this.fireEvent('copy', [from, to, where, copy]);
		}
		return this;
	},
	
	remove: function(node){
		node.remove();
		return this;
	},
	
	add: function(node, current, where){
		if(!(node instanceof Mif.Tree.Node)){
			node = new Mif.Tree.Node({
				parentNode: null,
				tree: this
			}, node);
		};
		node.inject(current, where, Mif.Tree.Draw.node(node));
		this.fireEvent('add', [node, current, where]);
		return this;
	}
	
});


/*
---
 
name: Mif.Tree.Drag
description: implements drag and drop
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: [Mif.Tree, Mif.Tree.Transform, more:/Drag.Move]
provides: Mif.Tree.Drag
 
...
*/

Mif.Tree.Drag = new Class({
	
	Implements: [new Events, new Options],
	
	Extends: Drag,
	
	options:{
		group: 'tree',
		droppables: [],
		snap: 4,
		animate: true,
		open: 600,//time to open node
		scrollDelay: 100,
		scrollSpeed: 100,
		modifier: 'control',//copy
		startPlace: ['icon', 'name'],
		allowContainerDrop: true
	},

	initialize: function(tree, options){
		tree.drag = this;
		this.setOptions(options);
		$extend(this, {
			tree: tree,
			snap: this.options.snap,
			groups: [],
			droppables: [],
			action: this.options.action
		});
		
		this.addToGroups(this.options.group);
		
		this.setDroppables(this.options.droppables);
		
		$extend(tree.defaults, {
			dropDenied: [],
			dragDisabled: false
		});
		tree.addEvent('drawRoot',function(){
			tree.root.dropDenied.combine(['before', 'after']);
		});
		
		this.pointer = new Element('div').addClass('mif-tree-pointer').injectInside(tree.wrapper);
		
		this.current = Mif.Tree.Drag.current;
		this.target = Mif.Tree.Drag.target;
		this.where = Mif.Tree.Drag.where;

		this.element = [this.current, this.target, this.where];
		this.document = tree.wrapper.getDocument();
		
		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),
			leave: this.leave.bind(this),
			enter: this.enter.bind(this),
			keydown: this.keydown.bind(this)
		};
		this.attach();
		
		this.addEvent('start', function(){
			Mif.Tree.Drag.dropZone=this;
			this.tree.unselect();
			document.addEvent('keydown', this.bound.keydown);
			this.setDroppables();
			this.droppables.each(function(item){
				item.getElement().addEvents({mouseleave: this.bound.leave, mouseenter: this.bound.enter});
			}, this);
			Mif.Tree.Drag.current.getDOM('name').addClass('mif-tree-drag-current');
			this.addGhost();
		}, true);
		this.addEvent('complete', function(){
			document.removeEvent('keydown', this.bound.keydown);
			this.droppables.each(function(item){
				item.getElement().removeEvent('mouseleave', this.bound.leave).removeEvent('mouseenter', this.bound.enter);
			}, this);
			Mif.Tree.Drag.current.getDOM('name').removeClass('mif-tree-drag-current');
			var dropZone = Mif.Tree.Drag.dropZone;
			if(!dropZone || dropZone.where=='notAllowed'){
				Mif.Tree.Drag.startZone.onstop();
				Mif.Tree.Drag.startZone.emptydrop();
				return;
			}
			if(dropZone.onstop) dropZone.onstop();
			dropZone.beforeDrop();
		});
	},
	
	getElement: function(){
		return this.tree.wrapper;
	},
	
	addToGroups: function(groups){
		groups = $splat(groups);
		this.groups.combine(groups);
		groups.each(function(group){
			Mif.Tree.Drag.groups[group]=(Mif.Tree.Drag.groups[group]||[]).include(this);
		}, this);
	},
	
	setDroppables: function(droppables){
		this.droppables.combine($splat(droppables));
		this.groups.each(function(group){
			this.droppables.combine(Mif.Tree.Drag.groups[group]);
		}, this);
	},

	attach: function(){
		this.tree.wrapper.addEvent('mousedown', this.bound.start);
		return this;
	},

	detach: function(){
		this.tree.wrapper.removeEvent('mousedown', this.bound.start);
		return this;
	},
	
	dragTargetSelect: function(){
		function addDragTarget(){
			this.current.getDOM('name').addClass('mif-tree-drag-current');
		}
		function removeDragTarget(){
			this.current.getDOM('name').removeClass('mif-tree-drag-current');
		}
		this.addEvent('start',addDragTarget.bind(this));
		this.addEvent('beforeComplete',removeDragTarget.bind(this));
	},
	
	leave: function(event){
		var dropZone = Mif.Tree.Drag.dropZone;
		if(dropZone){
			dropZone.where = 'notAllowed';
			Mif.Tree.Drag.ghost.firstChild.className = 'mif-tree-ghost-icon mif-tree-ghost-'+dropZone.where;
			if(dropZone.onleave) dropZone.onleave();
			Mif.Tree.Drag.dropZone = false;
		}
		
		var relatedZone = this.getZone(event.relatedTarget);
		if(relatedZone) this.enter(null, relatedZone);
	},
	
	onleave: function(){
		this.tree.unselect();
		this.clean();
		$clear(this.scrolling);
		this.scrolling = null;
		this.target = false;
	},
	
	enter: function(event, zone){
		if(event) zone = this.getZone(event.target);
		var dropZone = Mif.Tree.Drag.dropZone;
		if(dropZone && dropZone.onleave) dropZone.onleave();
		Mif.Tree.Drag.dropZone = zone;
		zone.current = Mif.Tree.Drag.current;
		if(zone.onenter) zone.onenter();
	},
	
	onenter: function(){
		this.onleave();
	},
	
	getZone: function(target){//private leave/enter
		if(!target) return false;
		var parent = $(target);
		do{
			for(var l = this.droppables.length;l--;){
				var zone = this.droppables[l];
				if( parent == zone.getElement() ) {
					return zone;
				}
			}
			parent = parent.getParent();
		}while(parent);
		return false;
	},
	
	keydown: function(event){
		if(event.key == 'esc') {
			var zone = Mif.Tree.Drag.dropZone;
			if(zone) zone.where = 'notAllowed';
			this.stop(event);
		}
	},
	
	autoScroll: function(){
		var y = this.y;
		if(y == -1) return;
		var wrapper = this.tree.wrapper;
		var top = y-wrapper.scrollTop;
		var bottom = wrapper.offsetHeight-top;
		var sign = 0;
		var delta;
		if(top < this.tree.height){
			delta = top;
			sign = 1;
		}else if(bottom < this.tree.height){
			delta = bottom;
			sign = -1;
		}
		if(sign && !this.scrolling){
			this.scrolling = function(node){
				if(y != this.y){
					y = this.y;
					delta = (sign == 1 ? (y - wrapper.scrollTop) : (wrapper.offsetHeight - y + wrapper.scrollTop)) || 1;
				}
				wrapper.scrollTop = wrapper.scrollTop - sign*this.options.scrollSpeed/delta;
			}.periodical(this.options.scrollDelay, this, [sign]);
		}
		if(!sign){
			$clear(this.scrolling);
			this.scrolling = null;
		}
	},
	
	start: function(event){//mousedown
		if(event.rightClick) return;
		if (this.options.preventDefault) event.preventDefault();
		this.fireEvent('beforeStart', this.element);

		var target = this.tree.mouse.target;
		if(!target) return;
		this.current = $splat(this.options.startPlace).contains(target) ? this.tree.mouse.node : false;
		if(!this.current || this.current.dragDisabled) {
			return;
		}
		Mif.Tree.Drag.current = this.current;
		Mif.Tree.Drag.startZone = this;
		
		this.mouse = {start: event.page};
		this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel});
		this.document.addEvent(this.selection, this.bound.eventStop);
	},
	
	drag: function(event){
		Mif.Tree.Drag.ghost.position({x:event.page.x+20,y:event.page.y+20});
		var dropZone = Mif.Tree.Drag.dropZone;
		if(!dropZone||!dropZone.ondrag) return;
		Mif.Tree.Drag.dropZone.ondrag(event);
	},

	ondrag: function(event){
		this.autoScroll();
		if(!this.checkTarget()) return;
		this.clean();
		var where = this.where;
		var target = this.target;
		var ghostType = where;
		if(where == 'after' && target && (target.getNext()) || where == 'before' && target.getPrevious()){
			ghostType = 'between';
		}
		Mif.Tree.Drag.ghost.firstChild.className = 'mif-tree-ghost-icon mif-tree-ghost-' + ghostType;
		if(where == 'notAllowed'){
			this.tree.unselect();
			return;
		}
		if(target && target.tree) this.tree.select(target);
		if(where == 'inside'){
			if(target.tree && !target.isOpen() && !this.openTimer && (target.loadable || target.hasChildren()) ){
				this.wrapper = target.getDOM('wrapper').setStyle('cursor', 'progress');
				this.openTimer = function(){
					target.toggle();
					this.clean();
				}.delay(this.options.open,this);
			}
		}else{
			var wrapper = this.tree.wrapper;
			var top = this.index*this.tree.height;
			if(where == 'after') top += this.tree.height;
			this.pointer.setStyles({
				left: wrapper.scrollLeft,
				top: top,
				width: wrapper.clientWidth
			});
		}
	},

	clean: function(){
		this.pointer.style.width = 0;
		if(this.openTimer){
			$clear(this.openTimer);
			this.openTimer = false;
			this.wrapper.style.cursor = 'inherit';
			this.wrapper = false;
		}
	},
	
	addGhost: function(){
		var wrapper = this.current.getDOM('wrapper');
		var ghost = new Element('span').addClass('mif-tree-ghost');
		ghost.adopt(Mif.Tree.Draw.node(this.current).getFirst())
		.injectInside(document.body).addClass('mif-tree-ghost-notAllowed').setStyle('position', 'absolute');
		new Element('span').set('html',Mif.Tree.Draw.zeroSpace).injectTop(ghost);
		ghost.getLast().getFirst().className = '';
		Mif.Tree.Drag.ghost = ghost;
	},
	
	checkTarget: function(){
		this.y = this.tree.mouse.coords.y;
		var target = this.tree.mouse.node;
		if(!target){
			if(this.options.allowContainerDrop && (this.tree.forest || !this.tree.root)){
				this.target = this.tree.$index.getLast();
				this.index = this.tree.$index.length-1;
				if(this.index == -1){
					this.where = 'inside';
					this.target = this.tree.root || this.tree;
				}else{
					this.where = 'after';
				}
			}else{
				this.target = false;
				this.where = 'notAllowed';
			}
			this.fireEvent('drag');
			return true;
		};
		if((this.current instanceof Mif.Tree.Node) && this.current.contains(target)){
			this.target = target;
			this.where = 'notAllowed';
			this.fireEvent('drag');
			return true;
		};
		this.index = Math.floor(this.y/this.tree.height);
		var delta = this.y - this.index*this.tree.height;
		var deny = target.dropDenied;
		if(this.tree.sortable){
			deny.include('before').include('after');
		};
		var where;
		if(!deny.contains('inside') && delta > (this.tree.height/4) && delta < (3/4*this.tree.height)){
			where = 'inside';
		}else{
			if(delta < this.tree.height/2){
				if(deny.contains('before')){
					if(deny.contains('inside')){
						where = deny.contains('after') ? 'notAllowed' : 'after';
					}else{
						where = 'inside';
					}
				}else{
					where = 'before';
				}
			}else{
				if(deny.contains('after')){
					if(deny.contains('inside')){
						where = deny.contains('before') ? 'notAllowed' : 'before';
					}else{
						where = 'inside';
					}
				}else{
					where = 'after';
				}
			}
		};
		if(this.where == where && this.target == target) return false;
		this.where = where; 
		this.target = target;
		this.fireEvent('drag');
		return true;
	},
	
	emptydrop: function(){
		var current = this.current, target = this.target, where = this.where;
		var scroll = this.tree.scroll;
		var complete = function(){
			scroll.removeEvent('complete', complete);
			if(this.options.animate){
				var wrapper = current.getDOM('wrapper');
				var position = wrapper.getPosition();
				Mif.Tree.Drag.ghost.set('morph',{
					duration: 'short',
					onComplete: function(){
						Mif.Tree.Drag.ghost.dispose();
						this.fireEvent('emptydrop', this.element);
					}.bind(this)
				});
				Mif.Tree.Drag.ghost.morph({left: position.x, top: position.y});
				return;
			};
			Mif.Tree.Drag.ghost.dispose();
			this.fireEvent('emptydrop', this.element);
			return;
		}.bind(this);
		scroll.addEvent('complete', complete);
		this.tree.select(this.current);
		this.tree.scrollTo(this.current);
	},
	
	beforeDrop: function(){
		if(this.options.beforeDrop){
			this.options.beforeDrop.apply(this, [this.current, this.target, this.where]);
		}else{
			this.drop();
		}
	},
	
	drop: function(){
		var current = this.current, target = this.target, where = this.where;
		Mif.Tree.Drag.ghost.dispose();
		var action = this.action || (this.tree.key[this.options.modifier] ? 'copy' : 'move');
		if(this.where == 'inside' && target.tree && !target.isOpen()){
			if(target.tree) target.toggle();
			if(target.$loading){
				var onLoad = function(){
					this.tree[action](current, target, where);
					this.tree.select(current).scrollTo(current);
					this.fireEvent('drop', [current, target, where]);
					target.removeEvent('load',onLoad);
				};
				target.addEvent('load',onLoad);
				return;
			};
		};
		if(!(current instanceof Mif.Tree.Node )){
			current = current.toNode(this.tree);
		}
		this.tree[action](current, target, where);
		this.tree.select(current).scrollTo(current);
		this.fireEvent('drop', [current, target, where]);
	},
	
	onstop: function(){
		this.clean();
		$clear(this.scrolling);
	}
});

Mif.Tree.Drag.groups={};


/*
---
 
name: Mif.Tree.Drag.Element
description: dom element droppable
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree.Drag
provides: Mif.Tree.Drag.Element
 
...
*/

Mif.Tree.Drag.Element=new Class({

	Implements: [Options, Events],

	initialize: function(element, options){
		
		this.element=$(element);
		
		this.setOptions(options);
		
	},
	
	getElement: function(){
		return this.element;
	},
	
	onleave: function(){
		this.where='notAllowed';
		Mif.Tree.Drag.ghost.firstChild.className='mif-tree-ghost-icon mif-tree-ghost-'+this.where;
	},
	
	onenter: function(){
		this.where='inside';
		Mif.Tree.Drag.ghost.firstChild.className='mif-tree-ghost-icon mif-tree-ghost-'+this.where;
	},
	
	beforeDrop: function(){
		if(this.options.beforeDrop){
			this.options.beforeDrop.apply(this, [this.current, this.trarget, this.where]);
		}else{
			this.drop();
		}
	},
	
	drop: function(){
		Mif.Tree.Drag.ghost.dispose();
		this.fireEvent('drop', Mif.Tree.Drag.current);
	}
	

});


/*
---
 
name: Mif.Tree.Rename
description: Mif.Tree.Rename
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Rename
 
...
*/

Mif.Tree.implement({
	
	attachRenameEvents: function(){
		this.wrapper.addEvents({
			click: function(event){
				if($(event.target).get('tag') == 'input') return;
				this.beforeRenameComplete();
			}.bind(this),
			keydown: function(event){
				if(event.key == 'enter'){
					this.beforeRenameComplete();
				}
				if(event.key == 'esc'){
					this.renameCancel();
				}
			}.bind(this)
		});
	},
	
	disableEvents: function(){
		if(!this.eventStorage) this.eventStorage = new Element('div');
		this.eventStorage.cloneEvents(this.wrapper);
		this.wrapper.removeEvents();
	},
	
	enableEvents: function(){
		this.wrapper.removeEvents();
		this.wrapper.cloneEvents(this.eventStorage);
	},
	
	getInput: function(){
		if(!this.input){
			this.input = new Element('input').addClass('mif-tree-rename');
			this.input.addEvent('focus',function(){this.select();}).addEvent('click', function(event) {
				event.stop();
			});
			Mif.Tree.Rename.autoExpand(this.input);
		}
		return this.input;
	},
	
	startRename: function(node){
		this.focus();
		this.unselect();
		this.disableEvents();
		this.attachRenameEvents();
		var input = this.getInput();
		input.value = node.name;
		this.renameName = node.getDOM('name');
		this.renameNode = node;
		input.setStyle('width', this.renameName.offsetWidth+15);
		input.replaces(this.renameName);
		input.focus();
	},
	
	finishRename: function(){
		this.renameName.replaces(this.getInput());
	},
	
	beforeRenameComplete: function(){
		if(this.options.beforeRename){
			var newName = this.getInput().value;
			var node = this.renameNode;
			this.options.beforeRename.apply(this, [node, node.name, newName]);
		}else{
			this.renameComplete();
		}
	},
		
	renameComplete: function(){
		this.enableEvents();
		this.finishRename();
		var node = this.renameNode;
		var oldName = node.name;
		node.set({
			property:{
				name: this.getInput().value
			}
		});
		this.fireEvent('rename', [node, node.name, oldName]);
		this.select(node);
	},
	
	renameCancel: function(){
		this.enableEvents();
		this.finishRename();
		this.select(this.renameNode);
	}
	
});

Mif.Tree.Node.implement({
	
	rename: function(){
		if (this.property.renameDenied) return;
		this.tree.startRename(this);
	}
	
});

Mif.Tree.Rename={
	
	autoExpand: function(input){
		var span = new Element('span').addClass('mif-tree-rename').setStyles({
			position: 'absolute',
			left: -2000,
			top:0,
			padding: 0
		}).injectInside(document.body);
		input.addEvent('keydown',function(event){
			(function(){
			input.setStyle('width',Math.max(20, span.set('html', input.value.replace(/\s/g,'&nbsp;')).offsetWidth+15));
			}).delay(10);
		});
	}
	
};


/*
---
 
name: Mif.Tree.Checkbox
description: Mif.Tree.Checkbox
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.Checkbox
 
...
*/

Mif.Tree.implement({

	initCheckbox: function(type){
		this.checkboxType = type || 'simple';
		this.dfltState.checked = 'unchecked';
		this.defaults.hasCheckbox = true;
		this.wrapper.addEvent('click', this.checkboxClick.bind(this));
		if(this.checkboxType == 'simple') return;
		this.addEvent('loadChildren', function(node){
			if(!node) return;
			if(node.state.checked == 'checked'){
				node.recursive(function(){
					this.state.checked = 'checked';
				});
			}else{
				node.getFirst().setParentCheckbox(1);
			}
		});

	},
	
	checkboxClick: function(event){
		if(this.mouse.target!='checkbox') {return;}
		this.mouse.node['switch']();
	},
	
	getChecked: function(includePartially){
		var checked=[];
		this.root.recursive(function(){
			var condition = includePartially ? this.state.checked!=='unchecked' : this.state.checked=='checked';
			if(this.hasCheckbox && condition) checked.push(this);
		});
		return checked;
	}

});

Mif.Tree.Node.implement({

	'switch' : function(state){
		if(this.state.checked == state || !this.hasCheckbox) return this;
		var type = this.tree.checkboxType;
		var checked=(this.state.checked == 'checked') ? 'unchecked' : 'checked';
		if(type == 'simple'){
			this.setCheckboxState(checked);
			this.tree.fireEvent(checked == 'checked' ? 'check' : 'unCheck', this);
			this.tree.fireEvent('switch', [this, (checked == 'checked' ? true : false)]);
			return this;
		};
		this.recursive(function(){
			this.setCheckboxState(checked);
		});
		this.setParentCheckbox();
		this.tree.fireEvent(checked == 'checked' ? 'check' : 'unCheck', this);
		this.tree.fireEvent('switch', [this, (checked == 'checked' ? true : false)]);
		return this;
	},
	
	setCheckboxState: function(state){
		if(!this.hasCheckbox) return;
		var oldState = this.state.checked;
		this.state.checked = state;
		if((!this.parentNode&&this.tree.$draw) || (this.parentNode && this.parentNode.$draw)){
			this.getDOM('checkbox').removeClass('mif-tree-node-'+oldState).addClass('mif-tree-node-'+state);
		}
	},
	
	setParentCheckbox: function(s){
		if(!this.hasCheckbox || !this.parentNode || (this.tree.forest && !this.parentNode.parentNode)) return;
		var parent = this.parentNode;
		var state = '';
		var children = parent.children;
		for(var i = children.length; i--; i>0){
			var child = children[i];
			if(!child.hasCheckbox) continue;
			var childState = child.state.checked;
			if(childState == 'partially'){
				state = 'partially';
				break;
			}else if(childState == 'checked'){
				if(state == 'unchecked'){
					state = 'partially';
					break;
				}
				state = 'checked';
			}else{
				if(state == 'checked'){
					state = 'partially';
					break;
				}else{
					state = 'unchecked';
				}
			}
		}
		if(parent.state.checked == state || (s && state == 'partially' && parent.state.checked == 'checked')){return;};
		parent.setCheckboxState(state);
		parent.setParentCheckbox(s);
	}

});


/*
---
 
name: Mif.Tree.CookieStorage
description: Mif.Tree.Node
license: MIT-Style License (http://mifjs.net/license.txt)
copyright: Anton Samoylov (http://mifjs.net)
authors: Anton Samoylov (http://mifjs.net)
requires: Mif.Tree
provides: Mif.Tree.CookieStorage
 
...
*/

Mif.Tree.CookieStorage = new Class({

	Implements: [Options],
	
	options:{
		store: function(node){
			return node.property.id;
		},
		retrieve: function(value){
			return Mif.id(value);
		},
		event: 'toggle',
		action: 'toggle'
	},

	initialize: function(tree, options){
		this.setOptions(options);
		this.tree = tree;
		this.cookie = new Cookie('mif.tree:' + this.options.event + tree.id||'');
		this.nodes = [];
		this.initSave();
	},
	
	write: function(){
		this.cookie.write(JSON.encode(this.nodes));
	},
	
	read: function(){
		return JSON.decode(this.cookie.read()) || [];
	},
	
	restore: function(data){
		if(!data){
			this.restored = this.restored || this.read();
		}
		var restored = data || this.restored;
		for(var i = 0, l = restored.length; i < l; i++){
			var stored = restored[i];
			var node = this.options.retrieve(stored);
			if(node){
				node[this.options.action](true);
				restored.erase(stored);
				l--;
			}
		}
		return restored;
	},
	
	initSave: function(){
		this.tree.addEvent(this.options.event, function(node, state){
			var value = this.options.store(node);
			if(state){
				this.nodes.include(value);
			}else{
				this.nodes.erase(value);
			}
			this.write();
		}.bind(this));
	}

});




/*
---

name: Datepicker

description: MooTools Datepicker class

authors:
  - MonkeyPhysics.com
  - Arian Stolwijk
  - MadmanMonty (Chris Baxter)
  - marfillaster (Ken Marfilla)
  - eerne (Enrique Erne)
  - Chemix

license:
  - MIT License

requires:
  - Core/Class.Extras
  - Core/Browser
  - Core/Element.Event
  - Core/Element.Style
  - Core/Element.Dimensions
  - Core/Fx.Tween
  - More/Date
  - More/MooTools.lang

provides: [DatePicker]

...
*/


/**
 * datepicker.js - MooTools Datepicker class
 *
 * by MonkeyPhysics.com
 *
 * Source/Documentation available at:
 * http://www.monkeyphysics.com/mootools/script/2/datepicker
 *
 * --
 *
 * Smoothly animating, very configurable and easy to install.
 * No Ajax, pure Javascript. 4 skins available out of the box.
 *
 * --
 *
 * MIT License
 *
 */

var DatePicker = new Class({

	Implements: [Options, Events],

	// working date, which we will keep modifying to render the calendars
	/*d: null,*/

	// just so that we need not request it over and over
	today: '',

	// current user-choice in date object format
	choice: {},

	// size of body, used to animate the sliding
	bodysize: {},

	// to check availability of next/previous buttons
	limit: {},

	// element references:
	/*picker: null,      // main datepicker container
	slider: null,      // slider that contains both oldContents and newContents, used to animate between 2 different views
	oldContents: null, // used in animating from-view to new-view
	newContents: null, // used in animating from-view to new-view
	input: null,*/       // original input element (used for input/output)

	options: {
		pickerClass: 'datepicker',
		dayShort: 2,
		monthShort: 3,
		startDay: 1, // Sunday (0) through Saturday (6) - be aware that this may affect your layout, since the days on the right might have a different margin
		timePicker: false,
		timePickerOnly: false,
		yearPicker: true,
		yearsPerPage: 20,
		allowEmpty: true,
		animationDuration: 400,
		useFadeInOut: !Browser.Engine.trident, // dont animate fade-in/fade-out for IE
		startView: 'month', // allowed values: {time, month, year, decades}
		positionOffset: {x: 0, y: 0},
		/*minDate: null, // Date object or a string
		maxDate: null, // same as minDate
		toggleElements: null, // deprecated
		toggle: null,*/
		draggable: true,
		timeWheelStep: 1 // 10,15,20,30
		/*,

		// i18n
		months: null,
		days: null,
		format: null,
		selectTimeTitle: null,
		timeConfirmButton: null,


		// and some event hooks:
		onShow: $empty,   // triggered when the datepicker pops up
		onClose: $empty,  // triggered after the datepicker is closed (destroyed)
		onSelect: $empty,  // triggered when a date is selected
		onNext: $empty,  // triggered when changing to next month
		onPrevious: $empty  // triggered when changing to previous month */
	},

	initialize: function(attachTo, options){
		// Localization
		var localeGet = MooTools.lang.get;
		this.setOptions({
			days: localeGet('Date', 'days'),
			months: localeGet('Date', 'months'),
			format: localeGet('Date', 'shortDate'),
			selectTimeTitle: localeGet('DatePicker', 'select_a_time'),
			timeConfirmButton: localeGet('DatePicker', 'time_confirm_button')
		});

		var defaultFormat = this.options.format;
		this.setOptions(options);
		if (this.options.timePicker && this.options.format == defaultFormat){
			var timeFormat = localeGet('Date', 'shortTime');
			this.options.format = this.options.timePickerOnly ? timeFormat : this.options.format + ' ' + timeFormat;
		}

		// Support for deprecated toggleElements
		if (this.options.toggleElements) this.options.toggle = document.getElements(this.options.toggleElements);

		this.attach(attachTo, this.options.toggle);

		if (this.options.timePickerOnly){
			this.options.timePicker = true;
			this.options.startView = 'time';
		}

		if (this.options.minDate){
			if (!(this.options.minDate instanceof Date)) this.options.minDate = Date.parse(this.options.minDate);
		}
		if (this.options.maxDate){
			if (!(this.options.maxDate instanceof Date)) this.options.maxDate = Date.parse(this.options.maxDate);
			// Include the maxDate day
			this.options.maxDate.increment('day', 1);
		}

		document.addEvent('mousedown', function(event){
			if (
				!(this.elems && this.elems.contains(event.target)) &&
				this.picker &&
				event.target != this.picker &&
				!this.picker.hasChild(event.target)
			){
				this.close.call(this);
			}
		}.bind(this));
	},

	attach: function(attachTo, toggle){

		//don't bother trying to attach when not set
		if (!attachTo) return this;

		// toggle the datepicker through a separate element?
		if (toggle){
			var togglers = $type(toggle) == 'array' ? toggle : [document.id(toggle)];
			document.addEvent('keydown', function(event){
				var target = document.id(event.target);
				if (
					event.key == 'tab' &&
					!target.hasClass('hour') &&
					!target.hasClass('minutes') &&
					!target.hasClass('ok')
				){
					this.close();
				}
			}.bind(this));
		}

		// see what is being attached and get an array suitable for it
		var elems = this.elems = $type(attachTo) == 'array' ? attachTo : [document.id(attachTo)];

		// attach functionality to the inputs
		elems.each(function(item, index){
			// never double attach
			if (item.retrieve('datepicker')) return;

			item.store('datepicker', true); // to prevent double attachment...

			// events
			if (toggle && togglers){
				var self = this;
				var events = {click: function(e){
					if (e) e.stop();
					self.show(item, togglers[index]);
				}};
				var toggler = togglers[index]
					.setStyle('cursor', 'pointer')
					.addEvents(events);
				item.store('datepicker:toggler', toggler)
					.store('datepicker:events', events);
			} else {
				var events = {
					keydown: function(e){
						// prevent the user from typing in the field
						if (this.options.allowEmpty && (e.key == 'delete' || e.key == 'backspace')){
							item.set('value', '');
							this.close();
						} else if (e.key == 'tab'){
							this.close();
						} else {
							e.stop();
						}
					}.bind(this),
					focus: this.show.pass(item, this),
					click: this.show.pass(item, this)
				};

				item.addEvents(events).store('datepicker:events', events);
			}
		}.bind(this));

		return this;
	},

	detach: function(detach){
		var elems = $type(detach) == 'array' ? detach : [document.id(detach)];

		elems.each(function(item){
			// Only when the datepicker is attached
			if (!item.retrieve('datepicker')) return;
			item.store('datepicker', false);

			var toggler = item.retrieve('datepicker:toggler');
			var events = item.retrieve('datepicker:events');
			// Detach the Events
			(toggler || item).removeEvents(events);
		});

		return this;
	},

	show: function(input, toggler, timestamp){
		input = document.id(input);

		// Cannot show the picker if its not attached
		if (!input.retrieve('datepicker')) return;

		// Determine the date that should be opened
		if (timestamp){
			this.d = new Date(timestamp);
		} else {
			this.d = input.retrieve('datepicker:value') || input.get('value');	
			if (!this.d){
				this.d = new Date();
			} else if (!(this.d instanceof Date)){
				this.d = Date.parse(this.d);
			}
		}
		if (!this.d.isValid()) this.d = new Date();

		// Min/max date
		if (this.options.maxDate && this.options.maxDate.isValid() && this.d > this.options.maxDate)
			this.d = this.options.maxDate.clone();
		if (this.options.minDate && this.options.minDate.isValid() && this.d < this.options.minDate)
			this.d = this.options.minDate.clone();

		this.input = input;
		var inputCoords = (document.id(toggler) || input).getCoordinates();
		var position = {
			left: inputCoords.left + this.options.positionOffset.x,
			top: inputCoords.top + inputCoords.height + this.options.positionOffset.y
		};
		this.fireEvent('show');

		this.today = new Date();
		this.choice = this.d.toObject();
		this.mode = (this.options.startView == 'time' && !this.options.timePicker) ? 'month' : this.options.startView;

		this.render();
		this.position({
			x: position.left,
			y: position.top
		});

		if (this.options.draggable && $type(this.picker.makeDraggable) == 'function'){
			this.dragger = this.picker.makeDraggable();
			this.picker.setStyle('cursor', 'move');
		}

		if (Browser.Engine.trident) this.shim();

		return this;
	},

	close: function(){
		if (!document.id(this.picker)) return this;

		if (this.options.useFadeInOut) this.picker.fade(0);
		else this.destroy();

		return this;
	},

	// Protected/Private methods

	shim: function(){
		var coords = this.picker.setStyle('zIndex', 1000).getCoordinates();
		var frame = this.frame = new Element('iframe', {
			src: 'javascript:false;document.write("");',
			styles: {
				position: 'absolute',
				zIndex: 999,
				height: coords.height, width: coords.width,
				left: coords.left, top: coords.top
			}
		}).inject(document.body);
		frame.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';

		this.addEvent('close', function(){frame.destroy()});

		if (this.dragger){
			this.dragger.addEvent('drag', function(){
				var coords = this.picker.getCoordinates();
				frame.setStyles({left: coords.left, top: coords.top});
			}.bind(this));
		}
	},

	position: function(position){
		var size = window.getSize(),
			scroll = window.getScroll(),
			pickerSize = this.picker.getSize(),
			max_y = (size.y + scroll.y) - pickerSize.y,
			max_x = (size.x + scroll.x) - pickerSize.x,
			inputCoords = this.input.getCoordinates();

		if (position.x > max_x) position.x = inputCoords.right - this.options.positionOffset.x - pickerSize.x;
		if (position.y > max_y) position.y = inputCoords.top - this.options.positionOffset.y - pickerSize.y;

		this.picker.setStyles({
			left: position.x,
			top: position.y
		});
	},

	render: function(fx){
		if (!this.picker){
			this.constructPicker();
		} else {
			// swap contents so we can fill the newContents again and animate
			var old = this.oldContents;
			this.oldContents = this.newContents;
			this.newContents = old;
			this.newContents.empty();
		}

		// remember current working date
		var startDate = new Date(this.d.getTime());

		// intially assume both left and right are allowed
		this.limit = {right: false, left: false};

		// render! booty!
		if (this.mode == 'decades'){
			this.renderDecades();
		} else if (this.mode == 'year'){
			this.renderYear();
		} else if (this.mode == 'time'){
			this.renderTime();
			this.limit = {right: true, left: true}; // no left/right in timeview
		} else {
			this.renderMonth();
		}

		this.picker.getElement('.previous').setStyle('visibility', this.limit.left ? 'hidden' : 'visible');
		this.picker.getElement('.next').setStyle('visibility', this.limit.right ? 'hidden' : 'visible');
		this.picker.getElement('.titleText').setStyle('cursor', this.allowZoomOut() ? 'pointer' : 'default');

		// restore working date
		this.d = startDate;

		this.picker.fade(1);

		// animate
		if (fx) this.fx(fx);
	},

	fx: function(fx){
		if (fx == 'right'){
			this.oldContents.setStyles({left: 0, opacity: 1});
			this.newContents.setStyles({left: this.bodysize.x, opacity: 1});
			this.slider.setStyle('left', 0).tween('left', 0, -this.bodysize.x);
		} else if (fx == 'left'){
			this.oldContents.setStyles({left: this.bodysize.x, opacity: 1});
			this.newContents.setStyles({left: 0, opacity: 1});
			this.slider.setStyle('left', -this.bodysize.x).tween('left', -this.bodysize.x, 0);
		} else if (fx == 'fade'){
			this.slider.setStyle('left', 0);
			this.oldContents.setStyle('left', 0).set('tween', {duration: this.options.animationDuration / 2}).tween('opacity', 1, 0);
			this.newContents.setStyles({opacity: 0, left: 0}).set('tween', {duration: this.options.animationDuration}).tween('opacity', 0, 1);
		}
	},

	constructPicker: function(){
		this.picker = new Element('div', {
			'class': this.options.pickerClass
		}).inject(document.body);

		if (this.options.useFadeInOut){
			this.picker.setStyle('opacity', 0).set('tween', {
				duration: this.options.animationDuration,
				link: 'cancel',
				onComplete: function(){
					if (this.picker.getStyle('opacity') < 1) this.destroy();
				}.bind(this)
			});
		}

		var h = new Element('div', {'class': 'header'}).inject(this.picker);
		var titlecontainer = new Element('div', {'class': 'title'}).inject(h);
		new Element('div', {'class': 'previous'}).addEvent('click', this.previous.bind(this)).set('text', '«').inject(h);
		new Element('div', {'class': 'next'}).addEvent('click', this.next.bind(this)).set('text', '»').inject(h);
		new Element('div', {'class': 'closeButton'}).addEvent('click', function(event){
			this.close.call(this);
		}.bind(this)).set('text', 'x').inject(h);
		new Element('span', {'class': 'titleText'}).addEvent('click', this.zoomOut.bind(this)).inject(titlecontainer);

		var b = new Element('div', {'class': 'body'}).inject(this.picker);
		this.bodysize = b.getSize();
		this.slider = new Element('div', {styles: {position: 'absolute', top: 0, left: 0, width: 2 * this.bodysize.x, height: this.bodysize.y}})
					.set('tween', {duration: this.options.animationDuration, transition: Fx.Transitions.Quad.easeInOut}).inject(b);
		this.oldContents = new Element('div', {styles: {position: 'absolute', top: 0, left: this.bodysize.x, width: this.bodysize.x, height: this.bodysize.y}}).inject(this.slider);
		this.newContents = new Element('div', {styles: {position: 'absolute', top: 0, left: 0, width: this.bodysize.x, height: this.bodysize.y}}).inject(this.slider);
	},

	renderTime: function(){
		var container = new Element('div', {'class': 'time'}).inject(this.newContents);

		this.picker.getElement('.titleText').set('html', this.options.timePickerOnly ? this.options.selectTimeTitle : this.d.format('%d %B, %Y'));

		// Init Values for minutes & hours
		var initMinutes = (this.d.getMinutes() / this.options.timeWheelStep).round() * this.options.timeWheelStep,
			initHours = this.d.getHours();

		if (initMinutes >= 60){
			initMinutes = 0;
			initHours = initHours + 1;
			if (initHours > 23) initHours = 0;
		}

		new Element('input', { type: 'text', 'class': 'hour', 'title': MooTools.lang.get('DatePicker', 'use_mouse_wheel')})
			.set('value', this.leadZero(initHours))
			.addEvents({
				click: function(e){
					e.target.focus();
					e.stop();
				}.bind(this),
				mousewheel: function(e){
					var i = e.target, v = i.get('value').toInt();
					i.focus();
					if (e.wheel > 0){
						v = (v < 23) ? v + 1 : 0;
					} else {
						v = (v > 0) ? v - 1 : 23;
					}
					i.set('value', this.leadZero(v));
					e.stop();
				}.bind(this)
			})
			.set('maxlength', 2)
			.inject(container);

		new Element('input', { type: 'text', 'class': 'minutes', 'title': MooTools.lang.get('DatePicker', 'use_mouse_wheel')})
			.set('value', this.leadZero(initMinutes))
			.addEvents({
				click: function(e){
					e.target.focus();
					e.stop();
				}.bind(this),
				mousewheel: function(e){
					var i = e.target, v = i.get('value').toInt();
					i.focus();
					if (e.wheel > 0){
						v = (v < 59) ? v + this.options.timeWheelStep : 0;
					} else {
						v = (v > 0) ? v - this.options.timeWheelStep : (60-this.options.timeWheelStep);
					}
					if (v == 60) v = 0;

					i.set('value', this.leadZero(v));
					e.stop();
				}.bind(this)
			})
			.set('maxlength', 2)
			.inject(container);

		new Element('div', {'class': 'separator'}).set('text', ':').inject(container);

		new Element('input', {type: 'submit', value: this.options.timeConfirmButton, 'class': 'ok'})
			.addEvents({
				click: function(e){
					e.stop();
					this.select($merge(this.d.toObject(), {hours: this.picker.getElement('.hour').get('value').toInt(), minutes: this.picker.getElement('.minutes').get('value').toInt()}));
				}.bind(this)
			})
			.set('maxlength', 2)
			.inject(container);
	},

	renderMonth: function(){
		var month = this.d.getMonth();

		this.picker.getElement('.titleText').set('html', this.options.months[month] + ' ' + this.d.getFullYear());

		var date = this.d.clone();

		date.setDate(1);
		while (date.getDay() != this.options.startDay)
			date.setDate(date.getDate() - 1);


		var container = new Element('div', {'class': 'days'}).inject(this.newContents);
		var titles = new Element('div', {'class': 'titles'}).inject(container);
		var day, i, classes, e, weekcontainer;

		for (day = this.options.startDay; day < (this.options.startDay + 7); day++){
			new Element('div', {'class': 'title day day' + (day % 7)}).set('text', this.options.days[(day % 7)].substring(0, this.options.dayShort)).inject(titles);
		}

		var available = false;
		var t = this.today.toDateString();
		var currentChoice = Date.fromObject(this.choice).toDateString();

		for (i = 0; i < 42; i++){
			classes = [];
			classes.push('day');
			classes.push('day' + date.getDay());
			if (date.toDateString() == t) classes.push('today');
			if (date.toDateString() == currentChoice) classes.push('selected');
			if (date.getMonth() != month) classes.push('otherMonth');

			if (i % 7 == 0){
				weekcontainer = new Element('div', {'class': 'week week' + (Math.floor(i / 7))}).inject(container);
			}

			e = new Element('div', {'class': classes.join(' ')}).set('text', date.getDate()).inject(weekcontainer);
			if (this.limited('date', date)){
				e.addClass('unavailable');
				if (available){
					if (month == date.getMonth() || date.getDate() == 1){
						this.limit.right = true;
					}
				} else {
					this.limit.left = true;
				}
			} else {
				available = true;
				e.addEvent('click', function(d){
					if (this.options.timePicker){
						this.d.setDate(d.day);
						this.d.setMonth(d.month);
						this.mode = 'time';
						this.render('fade');
					} else {
						this.select(d);
					}
				}.pass([{day: date.getDate(), month: date.getMonth(), year: date.getFullYear()}], this));
			}
			date.setDate(date.getDate() + 1);
		}
		if (!available) this.limit.right = true;
	},

	renderYear: function(){
		var month = this.today.getMonth();
		var thisyear = this.d.getFullYear() == this.today.getFullYear();
		var selectedyear = this.d.getFullYear() == this.choice.year;

		this.picker.getElement('.titleText').set('text', this.d.getFullYear());
		this.d.setMonth(0);
		if (this.options.minDate){
			this.d.decrement('month', 1);
			this.d.set('date', this.d.get('lastdayofmonth'));
			if (this.limited('month', this.d)) this.limit.left = true;
			this.d.increment('month', 1);
		}
		this.d.set('date', this.d.get('lastdayofmonth'));
		var i, e;
		var available = false;
		var container = new Element('div', {'class': 'months'}).inject(this.newContents);

		for (i = 0; i <= 11; i++){
			e = new Element('div', {
				'class': 'month month' + (i + 1) + (i == month && thisyear ? ' today' : '') + (i == this.choice.month && selectedyear ? ' selected' : '')
			}).set('text', this.options.monthShort ? this.options.months[i].substring(0, this.options.monthShort) : this.options.months[i]).inject(container);

			if (this.limited('month', this.d)){
				e.addClass('unavailable');
				if (available) this.limit.right = true;
				else this.limit.left = true;
			} else {
				available = true;
				e.addEvent('click', function(d){
					this.d.set({date: 1, month: d});
					this.mode = 'month';
					this.render('fade');
				}.pass(i, this));
			}
			this.d.increment('month', 1);
			this.d.set('date', this.d.get('lastdayofmonth'));
		}
		if (!available) this.limit.right = true;
	},

	renderDecades: function(){
		// start neatly at interval (eg. 1980 instead of 1987)
		while (this.d.getFullYear() % this.options.yearsPerPage > 0){
			this.d.setFullYear(this.d.getFullYear() - 1);
		}

		this.picker.getElement('.titleText').set('text', this.d.getFullYear() + '-' + (this.d.getFullYear() + this.options.yearsPerPage - 1));

		var i, y, e;
		var available = false;
		var container = new Element('div', {'class': 'years'}).inject(this.newContents);

		if (this.options.minDate && this.d.getFullYear() <= this.options.minDate.getFullYear()){
			this.limit.left = true;
		}

		for (i = 0; i < this.options.yearsPerPage; i++){
			y = this.d.getFullYear();
			e = new Element('div', {'class': 'year year' + i + (y == this.today.getFullYear() ? ' today' : '') + (y == this.choice.year ? ' selected' : '') }).set('text', y).inject(container);

			if (this.limited('year', this.d)){
				e.addClass('unavailable');
				if (available) this.limit.right = true;
				else this.limit.left = true;
			} else {
				available = true;
				e.addEvent('click', function(d){
					this.d.setFullYear(d);
					this.mode = 'year';
					this.render('fade');
				}.pass(y, this));
			}
			this.d.setFullYear(this.d.getFullYear() + 1);
		}
		if (!available){
			this.limit.right = true;
		}
		if (this.options.maxDate && this.d.getFullYear() >= this.options.maxDate.getFullYear()){
			this.limit.right = true;
		}
	},

	limited: function(type, date){
		var cs = this.options.minDate;
		var ce = this.options.maxDate;
		if (!cs && !ce) return false;

		switch (type){
			case 'year':
				return (cs && date.getFullYear() < this.options.minDate.getFullYear()) || (ce && date.getFullYear() > this.options.maxDate.getFullYear());

			case 'month':
				// todo: there has got to be an easier way...?
				var ms = ('' + date.getFullYear() + this.leadZero(date.getMonth())).toInt();
				return cs && ms < ('' + this.options.minDate.getFullYear() + this.leadZero(this.options.minDate.getMonth())).toInt()
					|| ce && ms > ('' + this.options.maxDate.getFullYear() + this.leadZero(this.options.maxDate.getMonth())).toInt()

			case 'date':
				return (cs && date < this.options.minDate) || (ce && date > this.options.maxDate);
		}
	},

	allowZoomOut: function(){
		if (this.mode == 'time' && this.options.timePickerOnly) return false;
		if (this.mode == 'decades') return false;
		if (this.mode == 'year' && !this.options.yearPicker) return false;
		return true;
	},

	zoomOut: function(){
		if (!this.allowZoomOut()) return;
		if (this.mode == 'year') this.mode = 'decades';
		else if (this.mode == 'time') this.mode = 'month';
		else this.mode = 'year';
		this.render('fade');
	},

	previous: function(){
		if (this.mode == 'decades'){
			this.d.setFullYear(this.d.getFullYear() - this.options.yearsPerPage);
		} else if (this.mode == 'year'){
			this.d.setFullYear(this.d.getFullYear() - 1);
		} else if (this.mode == 'month'){
			this.d.setDate(1);
			this.d.setMonth(this.d.getMonth() - 1);
		}
		this.render('left');
		this.fireEvent('previous');
	},

	next: function(){
		if (this.mode == 'decades'){
			this.d.setFullYear(this.d.getFullYear() + this.options.yearsPerPage);
		} else if (this.mode == 'year'){
			this.d.setFullYear(this.d.getFullYear() + 1);
		} else if (this.mode == 'month'){
			this.d.setDate(1);
			this.d.setMonth(this.d.getMonth() + 1);
		}
		this.render('right');
		this.fireEvent('next');
	},

	destroy: function(){
		this.picker.destroy();
		this.picker = null;
		this.fireEvent('close');
	},

	select: function(values){
		this.choice = $merge(this.choice, values);
		var d = Date.fromObject(this.choice);
		this.input.set('value', d.format(this.options.format))
			.store('datepicker:value', d.strftime());
		this.fireEvent('select', d);
		this.input.fireEvent('change'); // call input onChange event

		this.close();
	},

	leadZero: function(v){
		return v < 10 ? '0' + v : v;
	}

});


Date.implement({

	toObject: function(){
		return {
			year: this.getFullYear(),
			month: this.getMonth(),
			day: this.getDate(),
			hours: this.getHours(),
			minutes: this.getMinutes(),
			seconds: this.getSeconds()
		};
	}

});

Date.extend({

	fromObject: function(values){
		values = values || {};
		var d = new Date();
		d.setDate(1);
		['year', 'month', 'day', 'hours', 'minutes', 'seconds'].each(function(type){
			var v = values[type];
			if (!v && v !== 0) return;
			switch (type){
				case 'day': d.setDate(v); break;
				case 'month': d.setMonth(v); break;
				case 'year': d.setFullYear(v); break;
				case 'hours': d.setHours(v); break;
				case 'minutes': d.setMinutes(v); break;
				case 'seconds': d.setSeconds(v); break;
			}
		});
		return d;
	}

});


/**
 * Translation
 *
 */
MooTools.lang.set('en-US', 'DatePicker', {
	select_a_time: 'Select a time',
	use_mouse_wheel: 'Use the mouse wheel to quickly change value',
	time_confirm_button: 'OK'
});

MooTools.lang.set('nl-NL', 'DatePicker', {
	select_a_time: 'Selecteer een tijd',
	use_mouse_wheel: 'Gebruik uw scrollwiel om door de tijd te scrollen',
	time_confirm_button: 'OK'
});

MooTools.lang.set('cs-CZ', 'DatePicker', {
	select_a_time: 'Vyberte čas',
	use_mouse_wheel: 'Použijte kolečko myši k rychlé změně hodnoty',
	time_confirm_button: 'Zvolte čas'
});


/**
 * Name:    Highslide JS
 * Version: 4.1.12 (2011-03-28)
 * Config:  default +packed
 * Author:  Torstein HÃ¸nsi
 * Support: www.highslide.com/support
 * License: www.highslide.com/#license
 */
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('q(!m){u m={1D:{8t:\'7D\',7w:\'9f...\',7x:\'5q 1I 8E\',80:\'5q 1I 9B 1I ax\',7r:\'9Q 1I 9K I (f)\',87:\'9H 2r <i>7V 7q</i>\',8d:\'9R 1I a0 7V 7q 9n\',6i:\'5q 1I 2m 1X, ae 6K 9Y 1I 3i. 9V a5 a4 R 1C 6K 76.\'},3I:\'1d/9C/\',4I:\'9O.5d\',3T:\'9M.5d\',8i:4U,8y:4U,3P:15,8s:15,6x:15,7S:15,42:av,6Z:0.75,7W:G,5e:5,2X:2,aB:3,3D:1a,7n:\'2N 2e\',7o:1,7H:G,88:\'ai://1d.8P/\',86:\'8L\',77:G,5i:[\'a\'],6l:G,46:7a,3R:7a,3Y:G,1h:\'8K-91\',3Z:[],5I:G,N:[],5B:[\'3Y\',\'2d\',\'1h\',\'2X\',\'8A\',\'8z\',\'8D\',\'7k\',\'8J\',\'8G\',\'8I\',\'7j\',\'8e\',\'6l\',\'M\',\'Z\',\'6k\',\'46\',\'3R\',\'4a\',\'5N\',\'7U\',\'31\',\'1K\',\'8h\',\'8g\',\'1l\'],1x:[],3M:0,8F:{x:[\'8x\',\'19\',\'6s\',\'2e\',\'8r\'],y:[\'3X\',\'X\',\'6v\',\'2N\',\'57\']},4E:{},7j:{},7k:{},2p:[],2K:{},5s:{},59:[],1T:/98\\/4\\.0/.14(3O.4B)?8:5o((3O.4B.4R().2Y(/.+(?:7f|97|a9|1Q)[\\/: ]([\\d.]+)/)||[0,\'0\'])[1]),1Q:(L.3S&&!1m.2C),4l:/9e/.14(3O.4B),7N:/9d.+7f:1\\.[0-8].+9g/.14(3O.4B),$:A(1r){q(1r)C L.9h(1r)},21:A(29,2F){29[29.W]=2F},11:A(7e,3t,2E,5p,7d){u B=L.11(7e);q(3t)m.2H(B,3t);q(7d)m.T(B,{95:0,94:\'3c\',5Q:0});q(2E)m.T(B,2E);q(5p)5p.2k(B);C B},2H:A(B,3t){R(u x 3j 3t)B[x]=3t[x];C B},T:A(B,2E){R(u x 3j 2E){q(m.36&&x==\'1o\'){q(2E[x]>0.99)B.F.9a(\'48\');K B.F.48=\'7i(1o=\'+(2E[x]*1W)+\')\'}K B.F[x]=2E[x]}},3r:A(B,Q,2b){u 2P,3v,2M;q(1p 2b!=\'6n\'||2b===H){u 2y=7y;2b={2L:2y[2],1K:2y[3],5j:2y[4]}}q(1p 2b.2L!=\'3f\')2b.2L=4U;2b.1K=1c[2b.1K]||1c.7p;2b.5a=m.2H({},Q);R(u 28 3j Q){u e=1U m.1k(B,2b,28);2P=5o(m.60(B,28))||0;3v=5o(Q[28]);2M=28!=\'1o\'?\'D\':\'\';e.2q(2P,3v,2M)}},60:A(B,Q){q(B.F[Q]){C B.F[Q]}K q(L.64){C L.64.7M(B,H).7I(Q)}K{q(Q==\'1o\')Q=\'48\';u 2F=B.9v[Q.2T(/\\-(\\w)/g,A(a,b){C b.9u()})];q(Q==\'48\')2F=2F.2T(/7i\\(1o=([0-9]+)\\)/,A(a,b){C b/1W});C 2F===\'\'?1:2F}},4F:A(){u d=L,w=1m,3L=d.5Z&&d.5Z!=\'6U\'?d.3a:d.4y;u M=m.36?3L.7c:(d.3a.7c||54.9x),Z=m.36?3L.9z:54.9y;m.2R={M:M,Z:Z,53:m.36?3L.53:9t,4t:m.36?3L.4t:9s};C m.2R},5V:A(B){u p={x:B.74,y:B.73};3d(B.7b){B=B.7b;p.x+=B.74;p.y+=B.73;q(B!=L.4y&&B!=L.3a){p.x-=B.53;p.y-=B.4t}}C p},4Z:A(a,20,2q,J){q(!a)a=m.11(\'a\',H,{3u:\'3c\'},m.1Y);q(1p a.3H==\'A\')C 20;1A{1U m.41(a,20,2q);C 1a}1y(e){C G}},78:A(){u 5r=0,4H=-1,N=m.N,z,1n;R(u i=0;i<N.W;i++){z=N[i];q(z){1n=z.U.F.1n;q(1n&&1n>5r){5r=1n;4H=i}}}q(4H==-1)m.2D=-1;K N[4H].3m()},5l:A(a,3F){a.3H=a.3l;u p=a.3H?a.3H():H;a.3H=H;C(p&&1p p[3F]!=\'26\')?p[3F]:(1p m[3F]!=\'26\'?m[3F]:H)},5L:A(a){u 1l=m.5l(a,\'1l\');q(1l)C 1l;C a.3n},3K:A(1r){u 4x=m.$(1r),30=m.5s[1r],a={};q(!4x&&!30)C H;q(!30){30=4x.72(G);30.1r=\'\';m.5s[1r]=30;C 4x}K{C 30.72(G)}},3g:A(d){q(d)m.5h.2k(d);m.5h.3J=\'\'},71:A(5v,z){u 2u=z||m.2G();z=2u;q(m.2Z)C 1a;K m.2u=2u;m.3b(L,1m.2C?\'4b\':\'4k\',m.3E);1A{m.2Z=5v;5v.3l()}1y(e){m.2u=m.2Z=H}1A{z.2m()}1y(e){}C 1a},4q:A(B,1Z){u z=m.2G(B);q(z)C m.71(z.67(1Z),z);K C 1a},76:A(B){C m.4q(B,-1)},1C:A(B){C m.4q(B,1)},3E:A(e){q(!e)e=1m.1E;q(!e.1M)e.1M=e.5f;q(1p e.1M.7l!=\'26\')C G;u z=m.2G();u 1Z=H;6I(e.8H){1s 70:q(z)z.6c();C G;1s 32:1s 34:1s 39:1s 40:1Z=1;6A;1s 8:1s 33:1s 37:1s 38:1Z=-1;6A;1s 27:1s 13:1Z=0}q(1Z!==H){m.3b(L,1m.2C?\'4b\':\'4k\',m.3E);q(!m.77)C G;q(e.4o)e.4o();K e.8V=1a;q(z){q(1Z==0){z.2m()}K{m.4q(z.S,1Z)}C 1a}}C G},8X:A(O){m.21(m.1x,m.2H(O,{2a:\'2a\'+m.3M++}))},5X:A(5u,4p){u B,2Q=/^1d-U-([0-9]+)$/;B=5u;3d(B.2J){q(B.1r&&2Q.14(B.1r))C B.1r.2T(2Q,"$1");B=B.2J}q(!4p){B=5u;3d(B.2J){q(B.58&&m.4N(B)){R(u S=0;S<m.N.W;S++){u z=m.N[S];q(z&&z.a==B)C S}}B=B.2J}}C H},2G:A(B,4p){q(1p B==\'26\')C m.N[m.2D]||H;q(1p B==\'3f\')C m.N[B]||H;q(1p B==\'6j\')B=m.$(B);C m.N[m.5X(B,4p)]||H},4N:A(a){C(a.3l&&a.3l.8b().2T(/\\s/g,\' \').2Y(/m.(8Z|e)8T/))},7C:A(){R(u i=0;i<m.N.W;i++)q(m.N[i]&&m.N[i].3Q)m.78()},6u:A(e){q(!e)e=1m.1E;q(e.8N>1)C G;q(!e.1M)e.1M=e.5f;u B=e.1M;3d(B.2J&&!(/1d-(1X|3i|4T|2W)/.14(B.1g))){B=B.2J}u z=m.2G(B);q(z&&(z.66||!z.3Q))C G;q(z&&e.J==\'7h\'){q(e.1M.7l)C G;u 2Y=B.1g.2Y(/1d-(1X|3i|2W)/);q(2Y){m.1S={z:z,J:2Y[1],19:z.x.E,M:z.x.I,X:z.y.E,Z:z.y.I,7m:e.4A,7A:e.4z};m.1G(L,\'6r\',m.5n);q(e.4o)e.4o();q(/1d-(1X|4T)-6g/.14(z.16.1g)){z.3m();m.5t=G}C 1a}}K q(e.J==\'7g\'){m.3b(L,\'6r\',m.5n);q(m.1S){q(m.3x&&m.1S.J==\'1X\')m.1S.z.16.F.2U=m.3x;u 2z=m.1S.2z;q(!2z&&!m.5t&&!/(3i|2W)/.14(m.1S.J)){z.2m()}K q(2z||(!2z&&m.8O)){m.1S.z.3N(\'1i\')}m.5t=1a;m.1S=H}K q(/1d-1X-6g/.14(B.1g)){B.F.2U=m.3x}}C 1a},5n:A(e){q(!m.1S)C G;q(!e)e=1m.1E;u a=m.1S,z=a.z;a.49=e.4A-a.7m;a.5g=e.4z-a.7A;u 5m=1c.a8(1c.7z(a.49,2)+1c.7z(a.5g,2));q(!a.2z)a.2z=(a.J!=\'1X\'&&5m>0)||(5m>(m.al||5));q(a.2z&&e.4A>5&&e.4z>5){q(a.J==\'2W\')z.2W(a);K{z.65(a.19+a.49,a.X+a.5g);q(a.J==\'1X\')z.16.F.2U=\'3i\'}}C 1a},7T:A(e){1A{q(!e)e=1m.1E;u 4r=/an/i.14(e.J);q(!e.1M)e.1M=e.5f;q(!e.4n)e.4n=4r?e.ah:e.ac;u z=m.2G(e.1M);q(!z.3Q)C;q(!z||!e.4n||m.2G(e.4n,G)==z||m.1S)C;R(u i=0;i<z.1x.W;i++)(A(){u o=m.$(\'2a\'+z.1x[i]);q(o&&o.52){q(4r)m.T(o,{1b:\'1R\',3u:\'\'});m.3r(o,{1o:4r?o.1o:0},o.2A)}})()}1y(e){}},1G:A(B,1E,2j){q(B==L&&1E==\'2s\'){m.21(m.59,2j)}1A{B.1G(1E,2j,1a)}1y(e){1A{B.7B(\'45\'+1E,2j);B.ad(\'45\'+1E,2j)}1y(e){B[\'45\'+1E]=2j}}},3b:A(B,1E,2j){1A{B.3b(1E,2j,1a)}1y(e){1A{B.7B(\'45\'+1E,2j)}1y(e){B[\'45\'+1E]=H}}},4v:A(i){q(m.5I&&m.3Z[i]&&m.3Z[i]!=\'26\'){u 1f=L.11(\'1f\');1f.4c=A(){1f=H;m.4v(i+1)};1f.1l=m.3Z[i]}},85:A(3f){q(3f&&1p 3f!=\'6n\')m.5e=3f;u 29=m.4C();R(u i=0;i<29.3q.W&&i<m.5e;i++){m.21(m.3Z,m.5L(29.3q[i]))}q(m.1h)1U m.43(m.1h,A(){m.4v(0)});K m.4v(0);q(m.3T)u 5d=m.11(\'1f\',{1l:m.3I+m.3T})},5H:A(){q(!m.1Y){m.3y=m.1Q&&m.1T<7;m.36=m.1Q&&m.1T<9;m.4F();R(u x 3j m.4s){q(1p m[x]!=\'26\')m.1D[x]=m[x];K q(1p m.1D[x]==\'26\'&&1p m.4s[x]!=\'26\')m.1D[x]=m.4s[x]}m.1Y=m.11(\'1O\',{1g:\'1d-1Y\'},{1e:\'24\',19:0,X:0,M:\'1W%\',1n:m.42,8u:\'7D\'},L.4y,G);m.1F=m.11(\'a\',{1g:\'1d-1F\',3w:m.1D.7x,3J:m.1D.7w,3n:\'7s:;\'},{1e:\'24\',X:\'-44\',1o:m.6Z,1n:1},m.1Y);m.5h=m.11(\'1O\',H,{3u:\'3c\'},m.1Y);1c.ar=A(t,b,c,d){C c*t/d+b};1c.7p=A(t,b,c,d){C c*(t/=d)*t+b};m.82=m.3y;m.7P=((1m.2C&&m.1T<9)||3O.aw==\'ay\'||(m.3y&&m.1T<5.5))}},2s:A(){q(m.5O)C;m.5O=G;R(u i=0;i<m.59.W;i++)m.59[i]()},7u:A(){u B,17,3S=[],3q=[],2x={},2Q;R(u i=0;i<m.5i.W;i++){17=L.4m(m.5i[i]);R(u j=0;j<17.W;j++){B=17[j];2Q=m.4N(B);q(2Q){m.21(3S,B);q(2Q[0]==\'m.4Z\')m.21(3q,B);u g=m.5l(B,\'31\')||\'3c\';q(!2x[g])2x[g]=[];m.21(2x[g],B)}}}m.4D={3S:3S,2x:2x,3q:3q};C m.4D},4C:A(){C m.4D||m.7u()},2m:A(B){u z=m.2G(B);q(z)z.2m();C 1a}};m.1k=A(1P,1w,Q){k.1w=1w;k.1P=1P;k.Q=Q;q(!1w.7G)1w.7G={}};m.1k.4g={5c:A(){(m.1k.2B[k.Q]||m.1k.2B.6W)(k);q(k.1w.2B)k.1w.2B.6V(k.1P,k.2O,k)},2q:A(6L,1I,2M){k.5w=(1U 6M()).6G();k.2P=6L;k.3v=1I;k.2M=2M;k.2O=k.2P;k.E=k.5x=0;u 54=k;A t(55){C 54.2B(55)}t.1P=k.1P;q(t()&&m.2p.21(t)==1){m.6J=9F(A(){u 2p=m.2p;R(u i=0;i<2p.W;i++)q(!2p[i]())2p.9G(i--,1);q(!2p.W){9I(m.6J)}},13)}},2B:A(55){u t=(1U 6M()).6G();q(55||t>=k.1w.2L+k.5w){k.2O=k.3v;k.E=k.5x=1;k.5c();k.1w.5a[k.Q]=G;u 5k=G;R(u i 3j k.1w.5a)q(k.1w.5a[i]!==G)5k=1a;q(5k){q(k.1w.5j)k.1w.5j.6V(k.1P)}C 1a}K{u n=t-k.5w;k.5x=n/k.1w.2L;k.E=k.1w.1K(n,0,1,k.1w.2L);k.2O=k.2P+((k.3v-k.2P)*k.E);k.5c()}C G}};m.2H(m.1k,{2B:{1o:A(1k){m.T(1k.1P,{1o:1k.2O})},6W:A(1k){1A{q(1k.1P.F&&1k.1P.F[1k.Q]!=H)1k.1P.F[1k.Q]=1k.2O+1k.2M;K 1k.1P[1k.Q]=1k.2O}1y(e){}}}});m.43=A(1h,2I){k.2I=2I;k.1h=1h;u v=m.1T,4O;k.5J=m.1Q&&m.1T<7;q(!1h){q(2I)2I();C}m.5H();k.2c=m.11(\'2c\',{9Z:0},{1b:\'1i\',1e:\'24\',9U:\'9N\',M:0},m.1Y,G);u 5K=m.11(\'5K\',H,H,k.2c,1);k.1J=[];R(u i=0;i<=8;i++){q(i%3==0)4O=m.11(\'4O\',H,{Z:\'2h\'},5K,G);k.1J[i]=m.11(\'1J\',H,H,4O,G);u F=i!=4?{az:0,aC:0}:{1e:\'6t\'};m.T(k.1J[i],F)}k.1J[4].1g=1h+\' 1d-18\';k.6D()};m.43.4g={6D:A(){u 1l=m.3I+(m.aE||"aD/")+k.1h+".aA";u 6S=m.4l&&m.1T<7X?m.1Y:H;k.2i=m.11(\'1f\',H,{1e:\'24\',X:\'-44\'},6S,G);u 6O=k;k.2i.4c=A(){6O.6Q()};k.2i.1l=1l},6Q:A(){u o=k.1j=k.2i.M/4,E=[[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],1v={Z:(2*o)+\'D\',M:(2*o)+\'D\'};R(u i=0;i<=8;i++){q(E[i]){q(k.5J){u w=(i==1||i==7)?\'1W%\':k.2i.M+\'D\';u 1O=m.11(\'1O\',H,{M:\'1W%\',Z:\'1W%\',1e:\'6t\',2S:\'1i\'},k.1J[i],G);m.11(\'1O\',H,{48:"8Q:8M.8S.90(8Y=8U, 1l=\'"+k.2i.1l+"\')",1e:\'24\',M:w,Z:k.2i.Z+\'D\',19:(E[i][0]*o)+\'D\',X:(E[i][1]*o)+\'D\'},1O,G)}K{m.T(k.1J[i],{8W:\'6q(\'+k.2i.1l+\') \'+(E[i][0]*o)+\'D \'+(E[i][1]*o)+\'D\'})}q(1m.2C&&(i==3||i==5))m.11(\'1O\',H,1v,k.1J[i],G);m.T(k.1J[i],1v)}}k.2i=H;q(m.2K[k.1h])m.2K[k.1h].4w();m.2K[k.1h]=k;q(k.2I)k.2I()},3U:A(E,1j,6X,2A,1K){u z=k.z,9q=z.U.F,1j=1j||0,E=E||{x:z.x.E+1j,y:z.y.E+1j,w:z.x.P(\'1u\')-2*1j,h:z.y.P(\'1u\')-2*1j};q(6X)k.2c.F.1b=(E.h>=4*k.1j)?\'1R\':\'1i\';m.T(k.2c,{19:(E.x-k.1j)+\'D\',X:(E.y-k.1j)+\'D\',M:(E.w+2*k.1j)+\'D\'});E.w-=2*k.1j;E.h-=2*k.1j;m.T(k.1J[4],{M:E.w>=0?E.w+\'D\':0,Z:E.h>=0?E.h+\'D\':0});q(k.5J)k.1J[3].F.Z=k.1J[5].F.Z=k.1J[4].F.Z},4w:A(6E){q(6E)k.2c.F.1b=\'1i\';K m.3g(k.2c)}};m.4K=A(z,1v){k.z=z;k.1v=1v;k.2w=1v==\'x\'?\'9w\':\'9k\';k.2v=k.2w.4R();k.3B=1v==\'x\'?\'9j\':\'96\';k.5P=k.3B.4R();k.5M=1v==\'x\'?\'93\':\'9b\';k.9c=k.5M.4R();k.1B=k.2g=0};m.4K.4g={P:A(S){6I(S){1s\'5C\':C k.1q+k.2n+(k.t-m.1F[\'1j\'+k.2w])/2;1s\'1u\':C k.I+2*k.Y+k.1B+k.2g;1s\'3h\':C k.4f-k.2V-k.4e;1s\'5R\':C k.P(\'3h\')-2*k.Y-k.1B-k.2g;1s\'3G\':C k.E-(k.z.18?k.z.18.1j:0);1s\'5W\':C k.P(\'1u\')+(k.z.18?2*k.z.18.1j:0);1s\'4h\':C k.1z?1c.4W((k.I-k.1z)/2):0}},5G:A(){k.Y=(k.z.16[\'1j\'+k.2w]-k.t)/2;k.4e=m[\'5Q\'+k.5M]},5A:A(){k.t=k.z.B[k.2v]?9i(k.z.B[k.2v]):k.z.B[\'1j\'+k.2w];k.1q=k.z.1q[k.1v];k.2n=(k.z.B[\'1j\'+k.2w]-k.t)/2;q(k.1q==0||k.1q==-1){k.1q=(m.2R[k.2v]/2)+m.2R[\'2t\'+k.3B]}},5F:A(){u z=k.z;k.3k=\'2h\';k.E=k.1q-k.Y+k.2n;q(k.5N&&k.1v==\'x\')z.4a=1c.25(z.4a||k.V,z.5N*k.V/z.y.V);k.I=1c.25(k.V,z[\'69\'+k.2w]||k.V);k.1V=z.3Y?1c.25(z[\'25\'+k.2w],k.V):k.V;q(z.35&&z.2d){k.I=z[k.2v];k.1z=k.V}q(k.1v==\'x\'&&m.3D)k.1V=z.46;k.2V=m[\'5Q\'+k.3B];k.2t=m.2R[\'2t\'+k.3B];k.4f=m.2R[k.2v]},6a:A(i){u z=k.z;q(z.35&&(z.2d||m.3D)){k.1z=i;k.I=1c.69(k.I,k.1z);z.16.F[k.5P]=k.P(\'4h\')+\'D\'}K k.I=i;z.16.F[k.2v]=i+\'D\';z.U.F[k.2v]=k.P(\'1u\')+\'D\';q(z.18)z.18.3U();q(k.1v==\'x\'&&z.1t)z.3z(G)},68:A(i){k.E=i;k.z.U.F[k.5P]=i+\'D\';q(k.z.18)k.z.18.3U()}};m.41=A(a,20,2q,22){q(L.ak&&m.1Q&&!m.5O){m.1G(L,\'2s\',A(){1U m.41(a,20,2q,22)});C}k.a=a;k.2q=2q;k.22=22||\'1X\';k.35=!k.ap;m.5I=1a;k.1x=[];m.5H();u S=k.S=m.N.W;R(u i=0;i<m.5B.W;i++){u 28=m.5B[i];k[28]=20&&1p 20[28]!=\'26\'?20[28]:m[28]}q(!k.1l)k.1l=a.3n;u B=(20&&20.61)?m.$(20.61):a;B=k.8o=B.4m(\'1f\')[0]||B;k.4Q=B.1r||a.1r;R(u i=0;i<m.N.W;i++){q(m.N[i]&&m.N[i].a==a){m.N[i].3m();C 1a}}q(!m.aj)R(u i=0;i<m.N.W;i++){q(m.N[i]&&m.N[i].8o!=B&&!m.N[i].4i){m.N[i].6w()}}m.N[S]=k;q(!m.7W&&!m.2Z){q(m.N[S-1])m.N[S-1].2m();q(1p m.2D!=\'26\'&&m.N[m.2D])m.N[m.2D].2m()}k.B=B;k.1q=k.7U||m.5V(B);m.4F();u x=k.x=1U m.4K(k,\'x\');x.5A();u y=k.y=1U m.4K(k,\'y\');y.5A();k.U=m.11(\'1O\',{1r:\'1d-U-\'+k.S,1g:\'1d-U \'+k.6k},{1b:\'1i\',1e:\'24\',1n:m.42+=2},H,G);k.U.9W=k.U.9T=m.7T;q(k.22==\'1X\'&&k.2X==2)k.2X=0;q(!k.1h){k[k.22+\'5z\']()}K q(m.2K[k.1h]){k.5y();k[k.22+\'5z\']()}K{k.5D();u z=k;1U m.43(k.1h,A(){z.5y();z[z.22+\'5z\']()})}C G};m.41.4g={5T:A(e){q(m.a1)a6(\'a7 \'+e.a2+\': \'+e.a3);K 1m.9S.3n=k.1l},5y:A(){u 18=k.18=m.2K[k.1h];18.z=k;18.2c.F.1n=k.U.F.1n-1;m.2K[k.1h]=H},5D:A(){q(k.4i||k.1F)C;k.1F=m.1F;u z=k;k.1F.3l=A(){z.6w()};u z=k,l=k.x.P(\'5C\')+\'D\',t=k.y.P(\'5C\')+\'D\';63(A(){q(z.1F)m.T(z.1F,{19:l,X:t,1n:m.42++})},1W)},9D:A(){u z=k;u 1f=L.11(\'1f\');k.16=1f;1f.4c=A(){q(m.N[z.S])z.7Y()};q(m.9E)1f.9J=A(){C 1a};1f.1g=\'1d-1X\';m.T(1f,{1b:\'1i\',3u:\'8q\',1e:\'24\',4a:\'44\',1n:3});1f.3w=m.1D.6i;q(m.4l&&m.1T<7X)m.1Y.2k(1f);q(m.1Q&&m.9L)1f.1l=H;1f.1l=k.1l;k.5D()},7Y:A(){1A{q(!k.16)C;k.16.4c=H;q(k.4i)C;K k.4i=G;u x=k.x,y=k.y;q(k.1F){m.T(k.1F,{X:\'-44\'});k.1F=H}x.V=k.16.M;y.V=k.16.Z;m.T(k.16,{M:x.t+\'D\',Z:y.t+\'D\'});k.U.2k(k.16);m.1Y.2k(k.U);x.5G();y.5G();m.T(k.U,{19:(x.1q+x.2n-x.Y)+\'D\',X:(y.1q+x.2n-y.Y)+\'D\'});k.6Y();u 1L=x.V/y.V;x.5F();k.3k(x);y.5F();k.3k(y);q(k.1t)k.3z(0,1);q(k.3Y){k.7J(1L);q(k.35&&k.x.V>(k.x.1z||k.x.I)){k.7v();q(k.1x.W==1)k.3z()}}k.7O()}1y(e){k.5T(e)}},3k:A(p,3o){u au,at=p.1M,1v=p==k.x?\'x\':\'y\';u 5E=1a;u 3p=p.z.3Y;p.E=1c.4W(p.E-((p.P(\'1u\')-p.t)/2));q(p.E<p.2t+p.2V){p.E=p.2t+p.2V;5E=G}q(!3o&&p.I<p.1V){p.I=p.1V;3p=1a}q(p.E+p.P(\'1u\')>p.2t+p.4f-p.4e){q(!3o&&5E&&3p){p.I=1c.25(p.I,p.P(1v==\'y\'?\'3h\':\'5R\'))}K q(p.P(\'1u\')<p.P(\'3h\')){p.E=p.2t+p.4f-p.4e-p.P(\'1u\')}K{p.E=p.2t+p.2V;q(!3o&&3p)p.I=p.P(1v==\'y\'?\'3h\':\'5R\')}}q(!3o&&p.I<p.1V){p.I=p.1V;3p=1a}q(p.E<p.2V){u 7K=p.E;p.E=p.2V;q(3p&&!3o)p.I=p.I-(p.E-7K)}},7J:A(1L){u x=k.x,y=k.y,2f=1a,1N=1c.25(x.V,x.I),2o=1c.25(y.V,y.I),2d=(k.2d||m.3D);q(1N/2o>1L){ 1N=2o*1L;q(1N<x.1V){1N=x.1V;2o=1N/1L}2f=G}K q(1N/2o<1L){ 2o=1N/1L;2f=G}q(m.3D&&x.V<x.1V){x.1z=x.V;y.I=y.1z=y.V}K q(k.2d){x.1z=1N;y.1z=2o}K{x.I=1N;y.I=2o}2f=k.7Q(k.2d?H:1L,2f);q(2d&&y.I<y.1z){y.1z=y.I;x.1z=y.I*1L}q(2f||2d){x.E=x.1q-x.Y+x.2n;x.1V=x.I;k.3k(x,G);y.E=y.1q-y.Y+y.2n;y.1V=y.I;k.3k(y,G);q(k.1t)k.3z()}},7Q:A(1L,2f){u x=k.x,y=k.y;q(k.1t){3d(y.I>k.3R&&x.I>k.46&&y.P(\'1u\')>y.P(\'3h\')){y.I-=10;q(1L)x.I=y.I*1L;k.3z(0,1);2f=G}}C 2f},7O:A(){u x=k.x,y=k.y;k.3N(\'1i\');k.62(1,{U:{M:x.P(\'1u\'),Z:y.P(\'1u\'),19:x.E,X:y.E},16:{19:x.1B+x.P(\'4h\'),X:y.1B+y.P(\'4h\'),M:x.1z||x.I,Z:y.1z||y.I}},m.8i)},62:A(23,1I,2A){q(k.18&&!k.2X){q(23)k.18.3U();K k.18.4w()}q(!23)k.7t();u z=k,x=z.x,y=z.y,1K=k.1K;q(!23)1K=k.8h||1K;u 8m=23?A(){q(z.18)z.18.2c.F.1b="1R";63(A(){z.8l()},50)}:A(){z.5U()};q(23)m.T(k.U,{M:x.t+\'D\',Z:y.t+\'D\'});q(k.8g){m.T(k.U,{1o:23?0:1});m.2H(1I.U,{1o:23})}m.3r(k.U,1I.U,{2L:2A,1K:1K,2B:A(2F,2y){q(z.18&&z.2X&&2y.Q==\'X\'){u 3C=23?2y.E:1-2y.E;u E={w:x.t+(x.P(\'1u\')-x.t)*3C,h:y.t+(y.P(\'1u\')-y.t)*3C,x:x.1q+(x.E-x.1q)*3C,y:y.1q+(y.E-y.1q)*3C};z.18.3U(E,0,1)}}});m.3r(k.16,1I.16,2A,1K,8m);q(23){k.U.F.1b=\'1R\';k.16.F.1b=\'1R\';k.a.1g+=\' 1d-7E-7F\'}},8l:A(){k.3Q=G;k.3m();q(m.2Z&&m.2Z==k.a)m.2Z=H;k.84();u p=m.2R,5b=m.4E.x+p.53,5S=m.4E.y+p.4t;k.6b=k.x.E<5b&&5b<k.x.E+k.x.P(\'1u\')&&k.y.E<5S&&5S<k.y.E+k.y.P(\'1u\');q(k.1t)k.6N()},84:A(){u S=k.S;u 1h=k.1h;1U m.43(1h,A(){1A{m.N[S].89()}1y(e){}})},89:A(){u 1C=k.67(1);q(1C&&1C.3l.8b().2Y(/m\\.4Z/))u 1f=m.11(\'1f\',{1l:m.5L(1C)})},67:A(1Z){u 8a=k.8c(),as=m.4D.2x[k.31||\'3c\'];C(as&&as[8a+1Z])||H},8c:A(){u 29=m.4C().2x[k.31||\'3c\'];q(29)R(u i=0;i<29.W;i++){q(29[i]==k.a)C i}C H},6w:A(){m.3g(k.U);m.N[k.S]=H;q(k.1F)m.1F.F.19=\'-44\'},6H:A(){k.6m=m.11(\'a\',{3n:m.88,1M:m.86,1g:\'1d-6m\',3J:m.1D.87,3w:m.1D.8d});k.3V({51:k.6m,1e:k.8e||\'X 19\'})},6T:A(6o,8f){R(u i=0;i<6o.W;i++){u J=6o[i],s=H;q(!k[J+\'3e\']&&k.4Q)k[J+\'3e\']=J+\'-R-\'+k.4Q;q(k[J+\'3e\'])k[J]=m.3K(k[J+\'3e\']);q(!k[J]&&!k[J+\'6y\']&&k[J+\'8n\'])1A{s=9l(k[J+\'8n\'])}1y(e){}q(!k[J]&&k[J+\'6y\']){s=k[J+\'6y\']}q(!k[J]&&!s){k[J]=m.3K(k.a[\'8k\'+J+\'3e\']);q(!k[J]){u 1C=k.a.8j;3d(1C&&!m.4N(1C)){q((1U 9A(\'1d-\'+J)).14(1C.1g||H)){q(!1C.1r)k.a[\'8k\'+J+\'3e\']=1C.1r=\'2a\'+m.3M++;k[J]=m.3K(1C.1r);6A}1C=1C.8j}}}q(!k[J]&&s)k[J]=m.11(\'1O\',{1g:\'1d-\'+J,3J:s});q(8f&&k[J]){u o={1e:(J==\'4M\')?\'3X\':\'57\'};R(u x 3j k[J+\'83\'])o[x]=k[J+\'83\'][x];o.51=k[J];k.3V(o)}}},3N:A(1b){q(m.82)k.4j(\'9p\',1b);q(m.7P)k.4j(\'aa\',1b);q(m.7N)k.4j(\'*\',1b)},4j:A(58,1b){u 17=L.4m(58);u Q=58==\'*\'?\'2S\':\'1b\';R(u i=0;i<17.W;i++){q(Q==\'1b\'||(L.64.7M(17[i],"").7I(\'2S\')==\'2h\'||17[i].7L(\'1i-2r\')!=H)){u 1H=17[i].7L(\'1i-2r\');q(1b==\'1R\'&&1H){1H=1H.2T(\'[\'+k.S+\']\',\'\');17[i].3A(\'1i-2r\',1H);q(!1H)17[i].F[Q]=17[i].6f}K q(1b==\'1i\'){u 2l=m.5V(17[i]);2l.w=17[i].3W;2l.h=17[i].3s;u 7R=(2l.x+2l.w<k.x.P(\'3G\')||2l.x>k.x.P(\'3G\')+k.x.P(\'5W\'));u 8p=(2l.y+2l.h<k.y.P(\'3G\')||2l.y>k.y.P(\'3G\')+k.y.P(\'5W\'));u 4d=m.5X(17[i]);q(!7R&&!8p&&4d!=k.S){q(!1H){17[i].3A(\'1i-2r\',\'[\'+k.S+\']\');17[i].6f=17[i].F[Q];17[i].F[Q]=\'1i\'}K q(1H.7Z(\'[\'+k.S+\']\')==-1){17[i].3A(\'1i-2r\',1H+\'[\'+k.S+\']\')}}K q((1H==\'[\'+k.S+\']\'||m.2D==4d)&&4d!=k.S){17[i].3A(\'1i-2r\',\'\');17[i].F[Q]=17[i].6f||\'\'}K q(1H&&1H.7Z(\'[\'+k.S+\']\')>-1){17[i].3A(\'1i-2r\',1H.2T(\'[\'+k.S+\']\',\'\'))}}}}},3m:A(){k.U.F.1n=m.42+=2;R(u i=0;i<m.N.W;i++){q(m.N[i]&&i==m.2D){u 47=m.N[i];47.16.1g+=\' 1d-\'+47.22+\'-6g\';47.16.F.2U=m.3y?\'81\':\'4J\';47.16.3w=m.1D.80}}q(k.18)k.18.2c.F.1n=k.U.F.1n-1;k.16.1g=\'1d-\'+k.22;k.16.3w=m.1D.6i;q(m.3T){m.3x=1m.2C?\'4J\':\'6q(\'+m.3I+m.3T+\'), 4J\';q(m.3y&&m.1T<6)m.3x=\'81\';k.16.F.2U=m.3x}m.2D=k.S;m.1G(L,1m.2C?\'4b\':\'4k\',m.3E)},65:A(x,y){k.x.68(x);k.y.68(y)},2W:A(e){u w,h,r=e.M/e.Z;w=1c.69(e.M+e.49,1c.25(k.46,k.x.V));q(k.35&&1c.9P(w-k.x.V)<12)w=k.x.V;h=w/r;q(h<1c.25(k.3R,k.y.V)){h=1c.25(k.3R,k.y.V);q(k.35)w=h*r}k.6d(w,h)},6d:A(w,h){k.y.6a(h);k.x.6a(w);k.U.F.Z=k.y.P(\'1u\')+\'D\'},2m:A(){q(k.66||!k.3Q)C;k.66=G;m.3b(L,1m.2C?\'4b\':\'4k\',m.3E);1A{k.16.F.2U=\'9X\';k.62(0,{U:{M:k.x.t,Z:k.y.t,19:k.x.1q-k.x.Y+k.x.2n,X:k.y.1q-k.y.Y+k.y.2n},16:{19:0,X:0,M:k.x.t,Z:k.y.t}},m.8y)}1y(e){k.5U()}},3V:A(o){u B=o.51;q(1p B==\'6j\')B=m.3K(B);q(o.4T)B=m.11(\'1O\',{3J:o.4T});q(!B||1p B==\'6j\')C;B.F.3u=\'8q\';k.6F();u M=o.M&&/^[0-9]+(D|%)$/.14(o.M)?o.M:\'2h\';q(/^(19|2e)6e$/.14(o.1e)&&!/^[0-9]+D$/.14(o.M))M=\'aq\';u O=m.11(\'1O\',{1r:\'2a\'+m.3M++,2a:o.2a},{1e:\'24\',1b:\'1i\',M:M,8u:m.1D.8t||\'\',1o:0},k.1t,G);O.2k(B);m.2H(O,{1o:1,8v:0,8w:0,2A:(o.6z===0||o.6z===1a||(o.6z==2&&m.1Q))?0:4U});m.2H(O,o);q(k.6C){k.4Y(O);q(!O.52||k.6b)m.3r(O,{1o:O.1o},O.2A)}m.21(k.1x,m.3M-1)},4Y:A(O){u p=O.1e||\'6v 6s\',4V=O.8v,4S=O.8w;q(O.2J!=k.1t)k.1t.2k(O);q(/19$/.14(p))O.F.19=4V+\'D\';q(/6s$/.14(p))m.T(O,{19:\'50%\',3P:(4V-1c.4W(O.3W/2))+\'D\'});q(/2e$/.14(p))O.F.2e=-4V+\'D\';q(/^8x$/.14(p)){m.T(O,{2e:\'1W%\',8s:k.x.Y+\'D\',X:-k.y.Y+\'D\',2N:-k.y.Y+\'D\',2S:\'2h\'});k.x.1B=O.3W}K q(/^8r$/.14(p)){m.T(O,{19:\'1W%\',3P:k.x.Y+\'D\',X:-k.y.Y+\'D\',2N:-k.y.Y+\'D\',2S:\'2h\'});k.x.2g=O.3W}q(/^X/.14(p))O.F.X=4S+\'D\';q(/^6v/.14(p))m.T(O,{X:\'50%\',6x:(4S-1c.4W(O.3s/2))+\'D\'});q(/^2N/.14(p))O.F.2N=-4S+\'D\';q(/^3X$/.14(p)){m.T(O,{19:(-k.x.1B-k.x.Y)+\'D\',2e:(-k.x.2g-k.x.Y)+\'D\',2N:\'1W%\',7S:k.y.Y+\'D\',M:\'2h\'});k.y.1B=O.3s}K q(/^57$/.14(p)){m.T(O,{1e:\'6t\',19:(-k.x.1B-k.x.Y)+\'D\',2e:(-k.x.2g-k.x.Y)+\'D\',X:\'1W%\',6x:k.y.Y+\'D\',M:\'2h\'});k.y.2g=O.3s;O.F.1e=\'24\'}},6Y:A(){k.6T([\'4M\',\'8B\'],G);q(k.4M&&k.6l)k.4M.1g+=\' 1d-3i\';q(m.7H)k.6H();R(u i=0;i<m.1x.W;i++){u o=m.1x[i],4P=o.61,4X=o.31;q((!4P&&!4X)||(4P&&4P==k.4Q)||(4X&&4X===k.31)){k.3V(o)}}u 56=[];R(u i=0;i<k.1x.W;i++){u o=m.$(\'2a\'+k.1x[i]);q(/6e$/.14(o.1e))k.4Y(o);K m.21(56,o)}R(u i=0;i<56.W;i++)k.4Y(56[i]);k.6C=G},6F:A(){q(!k.1t)k.1t=m.11(\'1O\',{1g:k.6k},{1e:\'24\',M:(k.x.I||(k.2d?k.M:H)||k.x.V)+\'D\',Z:(k.y.I||k.y.V)+\'D\',1b:\'1i\',2S:\'1i\',1n:m.1Q?4:\'2h\'},m.1Y,G)},3z:A(6h,6P){u 1t=k.1t,x=k.x,y=k.y;m.T(1t,{M:x.I+\'D\',Z:y.I+\'D\'});q(6h||6P){R(u i=0;i<k.1x.W;i++){u o=m.$(\'2a\'+k.1x[i]);u 5Y=(m.3y||L.5Z==\'6U\');q(o&&/^(3X|57)$/.14(o.1e)){q(5Y){o.F.M=(1t.3W+2*x.Y+x.1B+x.2g)+\'D\'}y[o.1e==\'3X\'?\'1B\':\'2g\']=o.3s}q(o&&5Y&&/^(19|2e)6e$/.14(o.1e)){o.F.Z=(1t.3s+2*y.Y)+\'D\'}}}q(6h){m.T(k.16,{X:y.1B+\'D\'});m.T(1t,{X:(y.1B+y.Y)+\'D\'})}},6N:A(){u b=k.1t;b.1g=\'\';m.T(b,{X:(k.y.1B+k.y.Y)+\'D\',19:(k.x.1B+k.x.Y)+\'D\',2S:\'1R\'});q(m.4l)b.F.1b=\'1R\';k.U.2k(b);R(u i=0;i<k.1x.W;i++){u o=m.$(\'2a\'+k.1x[i]);o.F.1n=o.1n||4;q(!o.52||k.6b){o.F.1b=\'1R\';m.T(o,{1b:\'1R\',3u:\'\'});m.3r(o,{1o:o.1o},o.2A)}}},7t:A(){q(!k.1x.W)C;m.3g(k.1t)},7v:A(){k.4L=m.11(\'a\',{3n:\'7s:m.N[\'+k.S+\'].6c();\',3w:m.1D.7r,1g:\'1d-V-4Z\'});k.3V({51:k.4L,1e:m.7n,52:G,1o:m.7o})},6c:A(){1A{q(k.4L)m.3g(k.4L);k.3m();u 1N=k.x.I;k.6d(k.x.V,k.y.V);u 4u=k.x.E-(k.x.I-1N)/2;q(4u<m.3P)4u=m.3P;k.65(4u,k.y.E);k.3N(\'1i\')}1y(e){k.5T(e)}},5U:A(){k.a.1g=k.a.1g.2T(\'1d-7E-7F\',\'\');k.3N(\'1R\');q(k.18&&k.2X)k.18.4w();m.3g(k.U);m.N[k.S]=H;m.7C()}};m.4s=m.1D;u af=m.41;q(m.1Q&&1m==1m.X){(A(){1A{L.3a.ag(\'19\')}1y(e){63(7y.ab,50);C}m.2s()})()}m.1G(L,\'ao\',m.2s);m.1G(1m,\'6R\',m.2s);m.1G(L,\'2s\',A(){q(m.4I){u F=m.11(\'F\',{J:\'am/60\'},H,L.4m(\'8R\')[0]);A 4G(6B,6p){q(m.1Q&&m.1T<9){u 2u=L.79[L.79.W-1];q(1p(2u.4G)=="6n")2u.4G(6B,6p)}K{F.2k(L.8C(6B+" {"+6p+"}"))}}A 9r(Q){C\'92( ( ( 9o = L.3a.\'+Q+\' ? L.3a.\'+Q+\' : L.4y.\'+Q+\' ) ) + \\\'D\\\' );\'}q(m.4I)4G(\'.1d 1f\',\'2U: 6q(\'+m.3I+m.4I+\'), 4J !9m;\')}});m.1G(1m,\'2W\',A(){m.4F()});m.1G(L,\'6r\',A(e){m.4E={x:e.4A,y:e.4z}});m.1G(L,\'7h\',m.6u);m.1G(L,\'7g\',m.6u);m.1G(L,\'2s\',m.4C);m.1G(1m,\'6R\',m.85)}',62,661,'||||||||||||||||||||this||hs||||if||||var|||||exp|function|el|return|px|pos|style|true|null|size|type|else|document|width|expanders|overlay|get|prop|for|key|setStyles|wrapper|full|length|top|cb|height||createElement|||test||content|els|outline|left|false|visibility|Math|highslide|position|img|className|outlineType|hidden|offset|fx|src|window|zIndex|opacity|typeof|tpos|id|case|overlayBox|wsize|dim|options|overlays|catch|imgSize|try|p1|next|lang|event|loading|addEventListener|hiddenBy|to|td|easing|ratio|target|xSize|div|elem|ie|visible|dragArgs|uaVersion|new|minSize|100|image|container|op|params|push|contentType|up|absolute|min|undefined||name|arr|hsId|opt|table|useBox|right|changed|p2|auto|graphic|func|appendChild|elPos|close|tb|ySize|timers|custom|by|ready|scroll|last|wh|ucwh|groups|args|hasDragged|dur|step|opera|focusKey|styles|val|getExpander|extend|onLoad|parentNode|pendingOutlines|duration|unit|bottom|now|start|re|page|overflow|replace|cursor|marginMin|resize|outlineWhileAnimating|match|upcoming|clone|slideshowGroup||||isImage|ieLt9||||documentElement|removeEventListener|none|while|Id|number|discardElement|fitsize|move|in|justify|onclick|focus|href|moveOnly|allowReduce|images|animate|offsetHeight|attribs|display|end|title|styleRestoreCursor|ieLt7|sizeOverlayBox|setAttribute|uclt|fac|padToMinWidth|keyHandler|param|opos|getParams|graphicsDir|innerHTML|getNode|iebody|idCounter|doShowHide|navigator|marginLeft|isExpanded|minHeight|all|restoreCursor|setPosition|createOverlay|offsetWidth|above|allowSizeReduction|preloadTheseImages||Expander|zIndexCounter|Outline|9999px|on|minWidth|blurExp|filter|dX|maxWidth|keypress|onload|wrapperKey|marginMax|clientSize|prototype|imgPad|onLoadStarted|showHideElements|keydown|safari|getElementsByTagName|relatedTarget|preventDefault|expOnly|previousOrNext|over|langDefaults|scrollTop|xpos|preloadFullImage|destroy|node|body|clientY|clientX|userAgent|getAnchors|anchors|mouse|getPageSize|addRule|topmostKey|expandCursor|pointer|Dimension|fullExpandLabel|heading|isHsAnchor|tr|tId|thumbsUserSetId|toLowerCase|offY|html|250|offX|round|sg|positionOverlay|expand||overlayId|hideOnMouseOut|scrollLeft|self|gotoEnd|os|below|tagName|onReady|curAnim|mX|update|cur|numberOfImagesToPreload|srcElement|dY|garbageBin|openerTagNames|complete|done|getParam|distance|dragHandler|parseFloat|parent|Click|topZ|clones|hasFocused|element|adj|startTime|state|connectOutline|Create|calcThumb|overrides|loadingPos|showLoading|hasMovedMin|calcExpanded|calcBorders|init|continuePreloading|hasAlphaImageLoader|tbody|getSrc|ucrb|maxHeight|isReady|lt|margin|maxsize|mY|error|afterClose|getPosition|osize|getWrapperKey|ie6|compatMode|css|thumbnailId|changeSize|setTimeout|defaultView|moveTo|isClosing|getAdjacentAnchor|setPos|max|setSize|mouseIsOver|doFullExpand|resizeTo|panel|origProp|blur|doWrapper|restoreTitle|string|wrapperClassName|dragByHeading|credits|object|types|dec|url|mousemove|center|relative|mouseClickHandler|middle|cancelLoading|marginTop|Text|fade|break|sel|gotOverlays|preloadGraphic|hide|genOverlayBox|getTime|writeCredits|switch|timerId|and|from|Date|showOverlays|pThis|doPanels|onGraphicLoad|load|appendTo|getInline|BackCompat|call|_default|vis|getOverlays|loadingOpacity||transit|cloneNode|offsetTop|offsetLeft||previous|enableKeyListener|focusTopmost|styleSheets|200|offsetParent|clientWidth|nopad|tag|rv|mouseup|mousedown|alpha|headingOverlay|captionOverlay|form|clickX|fullExpandPosition|fullExpandOpacity|easeInQuad|JS|fullExpandTitle|javascript|destroyOverlays|updateAnchors|createFullExpand|loadingText|loadingTitle|arguments|pow|clickY|detachEvent|reOrder|ltr|active|anchor|orig|showCredits|getPropertyValue|correctRatio|tmpMin|getAttribute|getComputedStyle|geckoMac|show|hideIframes|fitOverlayBox|clearsX|marginBottom|wrapperMouseHandler|pageOrigin|Highslide|allowMultipleInstances|525|contentLoaded|indexOf|focusTitle|hand|hideSelects|Overlay|prepareNextOutline|preloadImages|creditsTarget|creditsText|creditsHref|preloadNext|current|toString|getAnchorIndex|creditsTitle|creditsPosition|addOverlay|fadeInOut|easingClose|expandDuration|nextSibling|_|afterExpand|after|Eval|thumb|clearsY|block|rightpanel|marginRight|cssDirection|direction|offsetX|offsetY|leftpanel|restoreDuration|captionText|captionId|caption|createTextNode|captionEval|cancel|oPos|headingText|keyCode|headingEval|headingId|drop|_self|DXImageTransform|button|hasHtmlExpanders|com|progid|HEAD|Microsoft|xpand|scale|returnValue|background|registerOverlay|sizingMethod|htmlE|AlphaImageLoader|shadow|expression|Right|border|padding|Top|it|Trident||removeAttribute|Bottom|rb|Macintosh|Safari|Loading|Gecko|getElementById|parseInt|Left|Height|eval|important|homepage|ignoreMe|SELECT|stl|fix|pageYOffset|pageXOffset|toUpperCase|currentStyle|Width|innerWidth|innerHeight|clientHeight|RegExp|bring|graphics|imageCreate|blockRightClick|setInterval|splice|Powered|clearInterval|oncontextmenu|actual|flushImgSize|zoomout|collapse|zoomin|abs|Expand|Go|location|onmouseout|borderCollapse|Use|onmouseover|default|drag|cellSpacing|the|debug|lineNumber|message|keys|arrow|alert|Line|sqrt|ra|IFRAME|callee|toElement|attachEvent|click|HsExpander|doScroll|fromElement|http|allowSimultaneousLoading|readyState|dragSensitivity|text|mouseover|DOMContentLoaded|isHtml|200px|linearTween||tgt|tgtArr|1001|vendor|front|KDE|lineHeight|png|outlineStartOffset|fontSize|outlines|outlinesDir'.split('|'),0,{}))

var tutorial_font_size_label;
var tutorial_font_size;
var tutorial_font_size_container_selector = 'div.tutPageStyleWrap'; //aplies font resize on these containers only
var ajaxProcessorUrl = 'index.php?q=104';
var mdialog = [];

//flags for flash, audio, video
var isFlash = Browser.Plugins.Flash.version ? true : false;
var elAudio5 = new Element('audio', {id: 'elAudio5'});
var isAudio5mpeg = (typeof elAudio5.canPlayType === "function" && elAudio5.canPlayType("audio/mpeg") !== "");
var isAudio5ogg = (typeof elAudio5.canPlayType === "function" && elAudio5.canPlayType("audio/ogg") !== "");
var isAudio5mp4 = (typeof elAudio5.canPlayType === "function" && elAudio5.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"') !== "");

var videoOK = false;
var audioOK = false;

if(isFlash) {
	videoOK = audioOK = true;
}
else{
	if(isAudio5mpeg) 	audioOK = true;
	if(isAudio5mp4) 	videoOK = true;
}

//highslide setting
hs.graphicsDir = 'assets/css/highslide/';
hs.outlineType = 'rounded-white';
hs.align = 'center';
hs.wrapperClassName = 'draggable-header';
hs.showCredits = false;

//DOm is ready
window.addEvent("domready", function(){
									 
    tutorial_font_size = Cookie.read('tutorial_font_size');
    if(!tutorial_font_size) tutorial_font_size = 1;
    
    tutorial_font_size_label = document.id('tutorial_font_size_label');
    if(tutorial_font_size_label) {
        tutorial_font_size_label.set('text', (tutorial_font_size*100).round(0) + '%');
    }
    
    //set font size on all tutorial content  div.tutPageStyleWrap
    $(document.body).getElements(tutorial_font_size_container_selector).each(function(container){
        container.setStyle('font-size', tutorial_font_size+'em');
    });
    
    //convert video tags to jw player
    $(document.body).getElements('video.jwplayer_video').each(function(container){
    jwplayer(container).setup({
            flashplayer: "assets/js/player.swf",
			allowscriptaccess: 'always',
            stretching: 'fill',
			controlbar: 'bottom'
			//,skin: 'assets/js/jwplayerskin/beelden.zip'
        });
    });
    
    //convert audio tags to jw player
    $(document.body).getElements('audio.jwplayer_audio').each(function(container){
    jwplayer(container).setup({
            flashplayer: "assets/js/player.swf",
            allowscriptaccess: 'always',
            controlbar: 'bottom'
			//,skin: 'assets/js/jwplayerskin/simpleaudio.zip'
			//,icons: false
            //,provider: 'sound'
        });
    });
	
	///Own Audio embeder
	$(document.body).getElements('audio.vlad_audio, audio.hseaudio').each(function(audio){
		
		var a_file = audio.get('src');
		var a_id = randomString(); //audio.get('id');
		var a_width = audio.get('width');
		var a_height = audio.get('height');
		
		if(isFlash){		

			var so = new SWFObject('assets/js/player.swf', a_id+'_flash', a_width, a_height,'9');
			so.addParam('allowfullscreen','true');
			so.addParam('allowscriptaccess','always');
			so.addVariable('file', a_file);
			so.addVariable('controlbar', 'bottom');			
			
			new Element('div', {id: a_id+'_flash_wrap'}).replaces(audio);
			so.write(a_id+'_flash_wrap');
			//audio.dispose();
			
		}
		else if(isAudio5mpeg){
			//cutom HTML5 player....
			var a5player = Element('div', {
				'id': 'a5player_' + a_id,
				'class': 'a5player',
				'html': '<span class="a5playtoggle"></span><span class="a5gutter"><span class="a5loading"></span></span><span class="a5timeleft"></span>',
				'styles': {
					'width': a_width + 'px'
					//'height': a_height + 'px'
				}
			}).inject(audio, 'after');
			
			//play/pause button
			a5player.getElement('span.a5playtoggle').addEvent('click', function() {  
			  if (audio.paused) { 			  	 
				audio.play(); 
			  }
			  else { audio.pause(); }    
			});
			audio.addEventListener('play',function() {
				a5player.getElement('span.a5playtoggle').addClass('playing');  
			});
			audio.addEventListener('pause', function() {
			  	a5player.getElement('span.a5playtoggle').removeClass('playing');    
			});
			audio.addEventListener('ended', function() {
			  	a5player.getElement('span.a5playtoggle').removeClass('playing');
				if(audio.currentTime == audio.duration) audio.currentTime = 0;
				audio.pause();
			});

			var loadingIndicator = a5player.getElement('span.a5loading');
			var timeleft = a5player.getElement('span.a5timeleft');
			
			audio.addEventListener('timeupdate', function() {
   				
				if(audio.duration){
				  var rem = parseInt(audio.duration - audio.currentTime, 10),
				  pos = (audio.currentTime / audio.duration) * 100,
				  mins = parseInt(Math.floor(rem/60,10)),
				  secs = parseInt(rem - mins*60);
				 
			  		timeleft.set('text', '-' + mins + ':' + (secs > 9 ? secs : '0' + secs) );
			  		loadingIndicator.setStyle('width', pos + '%');
				}
			});			
		
		}
		else{
			new Element('div', {
				'id': 'download_audio_' + a_id,
				'class': 'download_audio tipz',
				html: '<a href="' + a_file + '">Download Audio</a>',
				title: 'Audio player not available::Flash is not installed and audio and/or MP3 format is not supported on your browser.',
				styles: {
					//'width': a_width + 'px',
					//'height': a_height + 'px'
				}
			}).replaces(audio);
		}
	});
    
    
	
	///Own Video embeder
	$(document.body).getElements('video.vlad_video, video.hsevideo').each(function(video){
		
		var v_file = video.get('src');
		var v_id = randomString(); //video.get('id');
		var v_width = video.get('width');
		var v_height = video.get('height');
		
		if(isFlash){		

			var so = new SWFObject('assets/js/player.swf', v_id+'_flash', v_width, v_height,'9');
			so.addParam('allowfullscreen','true');
			so.addParam('allowscriptaccess','always');
			so.addVariable('file', v_file);
			so.addVariable('controlbar', 'bottom');
			so.addVariable('stretching', 'fill');
            /*
            none: keep the original dimensions.
            exactfit: disproportionally stretch the video/image to exactly fit the display.
            uniform: stretch the image/video while maintaining its aspect ratio. There’ll be black borders.
            fill: stretch the image/video while maintaining its aspect ratio, completely filling the display.
			*/

			new Element('div', {id: v_id+'_flash_wrap'}).replaces(video);
			so.write(v_id+'_flash_wrap');

			//video.dispose();
			
		}
		else if(isAudio5mp4){
			//cutom HTML5 player....
			jwplayer(video).setup({
				flashplayer: "assets/js/player.swf",
				allowscriptaccess: 'always',
				stretching: 'fill',
				controlbar: 'bottom'
			});
		}
		else{
			new Element('div', {
				'id': 'download_video_' + v_id,
				'class': 'download_video tipz',
				html: '<a href="' + v_file + '">Download Video</a>',
				title: 'Video player not available::Flash is not installed and video and/or MP4 format is not supported on your browser.',
				styles: {
					'width': v_width + 'px'
					//'height': a_height + 'px'
				}
			}).replaces(video);
		}
	});
	
    //all inputs with numeric class can accept only numeric values
	var numbers = [9, 8,46,190,37,39,109,   48,49,50,51,52,53,54,55,56,57,  96,97,98,99,100,101,102,103,104,105,110]; //TAB,backspace,del,period,left arrow,right arrow,minus, numbers, keypad numbers and period
	$$('input.numeric').each(function(item) {
		item.addEvent('keydown', function(key) {
            //alert(key.code);
			for (var i = 0; i < numbers.length; i++) {
				if(numbers[i] == key.code) {
					return true;
				}
			}  
			return false;
		});	
	});
    
    //implement sexy form
    $$(".sexyform input:type[]", ".sexyform select", ".sexyform textarea").each(function(el) {
        el.DoSexy();
    });
	
	//Overtext input fields:
	$$('input.overtext').each(function(e) {  new OverText(e); });    
	//to refresh use - OverText.update();

	initializeDatePickers();
	 
	//Tips		
	//as default it uses title for title and rel for text
	//wewant only title in form: title::text
	$$('.tipz').each(function(element,index) {
		if(element.get('title')){
			var content = element.get('title').split('::');
			if(content[0]) element.store('tip:title', content[0]); 
			if(!content[1]) content[1] = '';
			element.store('tip:text', content[1]);
		}
	});	
	//create the tooltips
	var tipz = new Tips('.tipz',{
		fixed: false,
		hideDelay: 50,
		showDelay: 50
	});

});


function avStatistic(id){

	var ret = '';
	var target = document.id(id);
	if(!target) return false;

	if(videoOK) ret += 'VIDEO player available. ';
    else ret += 'No VIDEO player! ';

    if(audioOK) ret += 'AUDIO player available. ';
    else ret += 'No AUDIO player! ';

    var tit = 'HTML5 support:';
    tit += ' flash - '+isFlash;
    tit += ', mp3 - '+isAudio5mpeg;
    tit += ', ogg - '+isAudio5ogg;
    tit += ', mp4 - '+isAudio5mp4;

    ret = '<span title="'+tit+'">'+ret+'</span>';
	
	target.set('html', ret);
}

function avTestMessage(id){
	var ret = '';
	var target = document.id(id);
	if(!target) return false;
	if(!videoOK && !audioOK) {
		ret = '<div class="avTestMessage"><a href="http://get.adobe.com/flashplayer/"><img src="assets/skin/get_flash_btn.jpg" alt="Get Adobe Flash"></a> Adobe Flash Player is required to play audio and video tutorial content. <a href="http://get.adobe.com/flashplayer/">Download it now.</a></div>';
	}
	target.set('html', ret);
}

//to initialize tips within a container
function initializeTips(parentId){
	
	if(document.id(parentId)){
		document.id(parentId).getElements('.tipz').each(function(element,index) {
			if(element.get('title')){
				var content = element.get('title').split('::');
				if(content[0]) element.store('tip:title', content[0]); 
				if(!content[1]) content[1] = '';
				element.store('tip:text', content[1]);
			}
		});
		var tipz = new Tips('#'+parentId+' .tipz',{
			fixed: false,
			hideDelay: 50,
			showDelay: 50
		});
	}
}


function initializeDatePickers(parentId){
	
	var inputs = [];
	
	if(!parentId){
		inputs = $$('input.datepicker');		
	}
	else if(document.id(parentId)) inputs = document.id(parentId).getElements('input.datepicker');
	
	if(!inputs) return;
	
	new DatePicker(inputs,{		
		pickerClass: 'datepicker_jqui',
		format: '%d %b %Y',
		useFadeInOut: false,
		debug: true
		
	});	

}

function makeContainerSlider(contId, btnId, openClass){ 			
		
	var btn = document.id(btnId);
	var cont = document.id(contId);
	if(!openClass) openClass = 'active';
	
	if(!btn || !cont) return false;
		
	var myslide = new Fx.Slide(cont, {duration:200}).hide();
	
	btn.addEvent('click', function(e){
	   myslide.toggle().chain(function(){        
           if(myslide.open) btn.addClass(openClass);
           else btn.removeClass(openClass);
       });
       return false;
    });		
}

function showSpinner(targetId, msg){ 
    if(document.id(targetId)) {
    	
    	//hide video in tutorial content 
    	//document.id(targetId).getElements('div.jwplayer_video').each(function(jw){
    	//	jw.fade('hide');
   		//}); 
		   
		// fade out menu
		//var menu = document.id('tutorialMenu');
		//if(menu) menu.fade('out');     	
    	
    	document.id(targetId).spin({'message': msg});
   	}
}
function hideSpinner(targetId, msg){    
    if(document.id(targetId)) document.id(targetId).unspin();
}

function myAlert(message, title){
	
	if(!title) title = 'Attention:';
	
	mdialog[10] = new MavDialog.Alert({
    	'force': true, //overlay
    	'width': 450,
		'title': title,
		'message': message
	});
}

function myConfirm(message, title){
	
	if(!title) title = 'Attention:';
	var res = false;
	
	mdialog[11] = new MavDialog.Confirm({
    	'force': true, //overlay
    	'width': 450,
    	'titleClose': false,
		'title': title,
		'message': message,
		'callback': function(yes){ 			
			if(yes) res = true;	
			else res = false;		
		}
	});
	
	alert (res);
	
	return res;
}

// set hidden input field selected value, highlight sel button
function selectTestAnswer(testFormId, answerInputId, btnObj){
    var testForm = document.id(testFormId);
    var answerInput = document.id(answerInputId);
    var btn = document.id(btnObj);

    //workaround for button value in IE6,7
    var innerText = btn.get('html');
    btn.set('html','');
    var val = btn.get('value');
    btn.set('html',innerText);
    //
    answerInput.set('value', val);
    //alert('test: '+testForm.questionsort.value+' = '+val);
    testForm.getElements('button').each(function(e){
        if(e.value == btnObj.value) e.addClass('selected');
        else e.removeClass('selected');    
    });   
}

/**
 * privatePayment
 * - used forcorporate payments as well
 */
function privatePayment(formId, testpay){
	
	var payForm = document.id(formId);
	if(!payForm) return false;
	
	var error = [];
	var errors = '';
	
	if(!payForm.terms_agree.checked) error.push('- terms agreement');
	if(!payForm.txtCCNumber.value) error.push('- credit card number');
	if(!payForm.txtCCName.value) error.push('- card holder name');
	if(!payForm.ddlExpiryMonth.value) error.push('- expiry month');
	if(!payForm.ddlExpiryYear.value) error.push('- expiry year');
	
	if(error.length > 0){
		error.each(function(val){ errors = errors + val+'<br />'; });		
		mdialog[1] = new MavDialog.Alert({
        	'force': true, //overlay
        	'width': 450,
			'title': '<span class="error">You are missing some fields:</span>',
			'message': errors
		});			
		return false;
	}
        else if(testpay == 1){

            var formData = payForm.toQueryString().parseQueryString();
            formData.action = 'testpay';

            new Request.JSON({
                url: ajaxProcessorUrl,
                method: 'post',
                noCache: true,
                data: formData,
                useSpinner: true,
                spinnerTarget: $(document.body),
                spinnerOptions: { message: 'simulating payment, please wait...' },
                onFailure: function(xhr){ alert('Ajax Error!')},
                onSuccess: function(re, text) {
                    if(re.success != true) myAlert(re.message, 'ERROR:');
                    else{
						mdialog[1] = new MavDialog({
							'force': true, //overlay
							'width': 500,
							'title': 'TESTING PAYMENT',
							'message': re.message,
							'footer': false,
							'titleClose': false
						});
					};
                }
            }).send();
            return false; //to not submit form

        }
	else{
		$(document.body).spin({'message': 'connecting to payment gateway, please wait...'});
		payForm.submit();
	}
	
}


/**
 * redoTutorialConfirm, redoTutorial
 */
function redoTutorialConfirm(tutid){
	
	var _confirm = false;
	
	mdialog[1] = new MavDialog.Confirm({
    	'force': true, //overlay
    	'width': 450,
    	'titleClose': false,
		'title': '<strong>Re-Do Tutorial</strong>',
		'message': 'Clear tutorial results and start from beginning?',
		'callback': function(yes){ 			
			if(yes) var res = redoTutorial(tutid);			
		}
	});	
}
function redoTutorial(tutid){
		
	if(!tutid) return false;
    
    var spinnerMessage = 'redoing tutorial';
        
    new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'tutid':tutid, 'action':'redo_tutorial'},
        useSpinner: true,
        spinnerTarget: 'tutContent', 
		spinnerOptions: { message: spinnerMessage },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Test Error: '+text);      
            else if(re.success != true) alert(re.message);   
            else {
                //Success - do stuff
                mdialog[1] = new MavDialog.Alert({
                	'force': true, //overlay
                	'width': 450,
					'title': re.data.title,
					'message': re.message,
					'onClose': function(){ window.location.reload(); }
				});
            }
        }
    }).send();
}



function submitTestAnswer(testFormId){
    
    var testForm = document.id(testFormId);
    var a = testForm.answerInput.value;
	
    if(!a){		
        myAlert ('No answer selected!');
        return;
    } 
    var spinnerMessage = 'submitting your answer...';
        
    new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: testForm,
        useSpinner: true,
        spinnerTarget: 'tutContent', 
		spinnerOptions: { message: spinnerMessage },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Test Error: '+text);      
            else if(re.success != true) alert(re.message);   
            else {
                //Success - do stuff
                //alert(re.data.testarray.iscorrect);
                if(re.data.newtest) {
					//document.id('tutContent').set('html', re.data.newtest);
					var tempDiv = new Element('div', {
						'html': re.data.newtest
					});
					var tempAr = tempDiv.getChildren();
					var newTest = tempAr[0];
					newTest.replaces(document.id('testWrap_'+re.data.id));

					
				}
                if(re.data.completed == 1){
                	//show nex button if hidden
					$(document.body).getElements('.tutPageNextBtn').each(function(btn){ btn.removeClass('disabled') });
					//hide unable to proceed msg
					$(document.body).getElements('.unableToProceedWrap').each(function(el){ el.dispose() });
					//make menu tick completed
					$(document.body).getElements('#tutMenuSectionTitle_'+re.data.id).each(function(btn){ btn.addClass('completed') });
					//parent completed?
					if(re.data.parentcompleted == 1) $(document.body).getElements('#tutMenuSectionTitle_'+re.data.parentid).each(function(btn){ btn.addClass('completed') });
						
               	}
            }
        }
    }).send();    
}

function calculateForm1(testFormId, labelId, answerId){
			
	var testForm = document.id(testFormId);
	var labelId = document.id(labelId);
	var answerInput = document.id(answerId);
	
	var a = parseFloat(testForm.par_a.value);
	var b = parseFloat(testForm.par_b.value);
	var c = parseFloat(testForm.par_c.value);
	var d = parseFloat(testForm.par_d.value);
	
	var result = a/b * c/d;
	
	if(!result) myAlert('Wrong or missing input values');
	else {
		labelId.set('text', result.round(2) );
		answerInput.set('value', result.round(2) );
	}	
}
function calculateForm2(testFormId, labelId, answerId){
	
	var testForm = document.id(testFormId);
	var labelId = document.id(labelId);
	var answerInput = document.id(answerId);
	
	var a = parseFloat(testForm.par_a.value);
	var b = parseFloat(testForm.par_b.value);

	var result = a/b;
	
	if(!result) myAlert('Wrong or missing input values');
	else {
		labelId.set('text', result.round(2) );
		answerInput.set('value', result.round(2) );
	}	
}
function calculateForm3(testFormId, labelId, answerId){
			
	var testForm = document.id(testFormId);
	var labelId = document.id(labelId);
	var answerInput = document.id(answerId);
	
	var a = parseFloat(testForm.par_a.value);
	var b = parseFloat(testForm.par_b.value);

	var result = a*b;
	
	if(!result) myAlert('Wrong or missing input values');
	else {
		labelId.set('text', result.round(2) );
		answerInput.set('value', result.round(2) );
	}	
}
function calculateForm4(testFormId, labelId, answerId){
			
	var testForm = document.id(testFormId);
	var labelId = document.id(labelId);
	var answerInput = document.id(answerId);
	
	var a = parseFloat(testForm.par_a.value);
	var b = parseFloat(testForm.par_b.value);
	var c = parseFloat(testForm.par_c.value);
	
	var result = a/b * c;
	
	if(!result) myAlert('Wrong or missing input values');
	else {
		labelId.set('text', result.round(2) );
		answerInput.set('value', result.round(2) );
	}	
}


function addTutorialToCart(tutid, usages){
    
    if(!tutid) return false;
    
    var spinnerMessage = '';
        
    new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'tutid':tutid, 'usages':usages, 'action':'add_tutorial_to_cart'},
        useSpinner: false,
        spinnerTarget: 'tutContent', 
		spinnerOptions: { message: spinnerMessage },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Test Error: '+text);      
            else if(re.success != true) myAlert(re.message, 'Error:');   
            else {
                //Success - do stuff
                mdialog[1] = new MavDialog({
                	'force': true, //overlay
                	'width': 500,
					'title': re.data.title,
					'message': re.message,
					'footer': false
				});
				
				//update column in cart for corp users
				if(re.data.update) {
					document.id('purchase_usages_'+tutid).value = '';
					document.id('incart_'+tutid).set('html', usages);
				}
                //update total in shopping cart
                $$('.cart_total_tutorials').set('html', re.data.cart_total_tutorials);
                $$('.cart_total_usages').set('html', re.data.cart_total_usages);
				
				//change button for private usere to "IN CART"
				if(document.id('addtocart_btn_'+tutid)){
					document.id('addtocart_btn_'+tutid).set('text','IN CART').removeClass('add').addClass('incart').removeAttribute('onclick');
				}
            }
        }
    }).send();    
}

/**
 * submitEvaluation
 */
function submitEvaluation(evalFormId){
    
    var evalForm = document.id(evalFormId);
    
    if(!evalForm){
        alert ('Error Form Id!');
        return;
    } 
    var spinnerMessage = 'submitting evaluation...';
        
    new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: evalForm,
        useSpinner: true,
        spinnerTarget: 'tutContent', 
		spinnerOptions: { message: spinnerMessage }, 
		onFailure: function(xhr){ alert('Ajax Evaluation Error!')},        
        onSuccess: function(re, text) { 
            
            document.id('tutEvaluation').getElements('div').each(function(container){
		        container.removeClass('evalerror');
		    });
            
			if(re.success != true){ 
				myAlert(re.message);
				if(re.errorids){
	            	re.errorids.each(function(Id){
	            		document.id(Id).addClass('evalerror');
					});
            	}	
           	}
            else {
                //Success - do stuff:
                //delete evaluation form
				document.id('tutEvaluation').dispose();
				//show top message
				new Element('div', { 
					html: re.message 
				}).inject(document.id('tutContent'), 'top');
				//make menu tick completed
				$(document.body).getElements('#tutMenuSectionTitle_'+re.data.id).each(function(btn){ btn.addClass('completed') });				
            }
        }
    }).send();    
}

/**
 * formEduItem
 */
function formEduItem(userId, itemId){
	
	if(!userId){
        alert ('Missing user id!');
        return;
    }

    if(!itemId) {
    	var action = 'new_edu_item';
    	var title = '<strong>Create new entry:</strong>';
	} 
    else {
    	var action = 'load_edu_item';
    	var title = '<strong>Edit / Delete entry:</strong>';
   	}
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 500,
 		'ok': false,
 		'footer': false,
		'title': title,
		'loadingMessage': '<div class="message progress">loading...<div>', 
		'url': ajaxProcessorUrl+'&userid='+userId+'&itemid='+itemId+'&action='+action,
		'onShow': function(){  setTimeout("initializeDatePickers('eduForm')",500); } //need delay 		
	});
}

/**
 * saveNewEduItem
 */
function saveEduItem(formId){
    
    var dataForm = document.id(formId);
	if(!dataForm) return false;
	
	var error = [];
	var errors = '';
	
	if(!dataForm.ued_topic.value) error.push('- topic');
	if(!dataForm.ued_provider.value) error.push('- provider');
	if(!dataForm.ued_length.value && !dataForm.ued_points.value) error.push('- length or points');
	if(!dataForm.ued_completedon.value) error.push('- completion date');
	
	document.id('eduFormError').set('html', '').removeClass('message error');
	if(error.length > 0){
		error.each(function(val){ errors = errors + val+'<br />'; });
		document.id('eduFormError').set('html', 'Missing fields: <br />'+errors).addClass('message error');
	}
	else{
		new Request.JSON({
	        url: ajaxProcessorUrl, 
	        method: 'post',
	        noCache: true, 
	        data: dataForm,
	        useSpinner: true,
	        spinnerTarget: formId, 
			spinnerOptions: { message: 'saving...' },         
	        onComplete: function(re, text) { 
	            
	            if ($type(re) != 'object')  alert('Ajax Save Edu Error: '+text);      
	            else if(re.success != true) alert(re.message);   
	            else {
	                //Success - do stuff
	                error.each(function(val){ errors = errors + val+'<br />'; });
					document.id('eduFormError').set('html', 'Saved successfully. Reloading page....').addClass('message success');
					document.id('eduFormButtons').hide();
					window.location.reload();                
	            }
	        }
	    }).send();
	}    
}

/**
 * deleteEduItem
 */
function deleteEduItem(userId, itemId){
    
    if(!userId || !itemId){
        alert ('Missing user id or item id!');
        return;
    }
	
	document.id('eduFormError').set('html', '').removeClass('message error');
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'delete_edu_item', 'itemid':itemId, 'userid':userId },
        useSpinner: true,
        spinnerTarget: 'eduForm', 
		spinnerOptions: { message: 'deleting...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Edu Error: '+text);      
            else if(re.success != true){
            	document.id('eduFormError').set('html', re.message).addClass('message error');	
           	}
            else {
                //Success - do stuff
				document.id('eduFormError').set('html', 'Deleted successfully. Reloading page....').addClass('message success');
				document.id('eduFormButtons').hide();
				window.location.reload();                
            }
        }
    }).send();
  
}


/**
 * formEduRegistration
 */
function formEduRegistration(userId, itemId){
	
	if(!userId){
        alert ('Missing user id!');
        return;
    }

    if(!itemId) {
    	var action = 'new_edu_registration';
    	var title = '<strong>Create registration entry:</strong>';
	} 
    else {
    	var action = 'load_edu_registration';
    	var title = '<strong>Edit / Delete registration:</strong>';
   	}
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 500,
 		'ok': false,
 		'footer': false,
		'title': title,
		'loadingMessage': '<div class="message progress">loading...<div>', 
		'url': ajaxProcessorUrl,
		'data': { 'userid': userId , 'itemid': itemId, 'action': action}
	});
}

/**
 * saveNewEduRegistration
 */
function saveEduRegistration(formId){
    
    var dataForm = document.id(formId);
	if(!dataForm) return false;
	
	var error = [];
	var errors = '';
	
	if(!dataForm.ued_registration.value) error.push('- registration');
	if(!dataForm.ued_area.value) error.push('- area of practice');
	
	document.id('eduFormError').set('html', '').removeClass('message error');
	if(error.length > 0){
		error.each(function(val){ errors = errors + val+'<br />'; });
		document.id('eduFormError').set('html', 'Missing fields: <br />'+errors).addClass('message error');
	}
	else{
		new Request.JSON({
	        url: ajaxProcessorUrl, 
	        method: 'post',
	        noCache: true, 
	        data: dataForm,
	        useSpinner: true,
	        spinnerTarget: formId, 
			spinnerOptions: { message: 'saving...' },         
	        onComplete: function(re, text) { 
	            
	            if ($type(re) != 'object')  alert('Ajax Save Edu Error: '+text);      
	            else if(re.success != true) alert(re.message);   
	            else {
	                //Success - do stuff
	                error.each(function(val){ errors = errors + val+'<br />'; });
					document.id('eduFormError').set('html', 'Saved successfully. Reloading page....').addClass('message success');
					document.id('eduFormButtons').hide();
					window.location.reload();                
	            }
	        }
	    }).send();
	}    
}

/**
 * deleteEduItem
 */
function deleteEduRegistration(userId, itemId){
    
    if(!userId || !itemId){
        alert ('Missing user id or item id!');
        return;
    }
	
	document.id('eduFormError').set('html', '').removeClass('message error');
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'delete_edu_registration', 'itemid':itemId, 'userid':userId },
        useSpinner: true,
        spinnerTarget: 'eduForm', 
		spinnerOptions: { message: 'deleting...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Edu Error: '+text);      
            else if(re.success != true){
            	document.id('eduFormError').set('html', re.message).addClass('message error');	
           	}
            else {
                //Success - do stuff
				document.id('eduFormError').set('html', 'Deleted successfully. Reloading page....').addClass('message success');
				document.id('eduFormButtons').hide();
				window.location.reload();                
            }
        }
    }).send();
  
}


//load content by ajax using snippet
function loadContentBySnippet(snippetName, paramsJson){
    
    var paramsObj = JSON.decode(paramsJson);
    
    //action for ajax processor
    paramsObj.action = 'run_snippet';
    paramsObj.snippet = snippetName;
        
    new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: paramsObj,
        useSpinner: paramsObj.useSpinner,
        spinnerTarget: paramsObj.target, 
		spinnerOptions: { message: paramsObj.message },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax LoadSnippet Error: '+text);      
            else if(re.success != true) alert(re.message);   
            else {
                //Success - do stuff
                if(re.data) {
                	document.id(paramsObj.target).fade('hide').set('html', re.data);
                	document.id(paramsObj.target).fade('in');
                	
                	if(snippetName = 'activetutorialsmenu') {
                		//show next/prev buttons
						$(document.body).getElements('div.tutNextPrevButtons').each(function(btns){
							btns.fade('in');
						});                		
               		}
               	}
                
            }
        }
    }).send();    
}




//change font-size of a container by javascript
function resizeTutorialText(multiplier) {

    var containers = $(document.body).getElements(tutorial_font_size_container_selector);
    if(!containers.length) return false;
	
    containers.each(function(container){
    
        var cursize = parseFloat(container.getStyle('font-size'));
        
    	if (multiplier < 1 && cursize <= 0.8) {
    		tutorial_font_size_label.addClass('limit');
    	}
    	else if (multiplier > 1 && cursize >= 2){
    		tutorial_font_size_label.addClass('limit');
    	}
    	else{
    	    var newsize = (cursize * multiplier).round(1);
    		container.style.fontSize = newsize+'em';
            setCookie('tutorial_font_size', newsize, 7); //remember X days	
            if(tutorial_font_size_label) {
                tutorial_font_size_label.set('text', (newsize*100).round(0) + '%');
                tutorial_font_size_label.removeClass('limit');
            }
    	}        
     });
}

function setCookie(c_name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());	
}


/**
 * getCorporateTutorialConfirm
 * takes tutorial for corporate user - spend a usage from corp tutorials
 */
function getCorporateTutorialConfirm(tutid){	
		
	mdialog[2] = new MavDialog.Confirm({
    	'force': true,
    	'width': 600,
    	'titleClose': false,
		'title': '<strong>Use tutorial: </strong>',
		'message': 'Do you want to use this tutorial?',
		'callback': function(yes){ 			
			if(yes) getCorporateTutorial(tutid);
			else return;			
		}
	});
}
function getCorporateTutorial(tutid){
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'get_corporate_tutorial', 'tutid':tutid },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'getting tutorial...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  myAlert('Ajax Error: ' + text);      
            else if(re.success != true){
            	//not success
				myAlert (re.message, '<strong>ERROR:</strong>');	
           	}
            else {
                //Success
				myAlert (re.message, '<strong>Success:</strong>');        
            }
        }
    }).send();
}

/**
 * Admin Stuff Here
 *******************************************************************************
 */
 
 
 /**
 * addTreeGroup
 */
function addTreeGroup(mytree, name){
	
	var current = mytree.getSelected();
		
	if(!current){
		myAlert ('Select parent group in tree where new group will be created!');
		return false;
	}
	if(!name){
		myAlert ('Enter new group name!');
		return false;
	}
	
	var parent = current.data.dep_id;
 
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'add_tree_group', 'parent':parent, 'name':name },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'creating new group...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Edu Error: '+text);      
            else if(re.success != true){
            	//not success
				myAlert (re.message, 'ERROR:');	
           	}
            else {
                //Success
                //add to mif tree
				mytree.add(re.data, current, 'inside');
        
            }
        }
    }).send();
  
}

 /**
 * deleteTreeGroup
 */
function deleteTreeGroupConfirm(mytree, name){

	var current = mytree.getSelected();
		
	if(!current){
		myAlert ('Select group to be deleted in tree!', '<strong>No group selected</strong>');
		return false;
	}
	
	var _confirm = false;	
	mdialog[2] = new MavDialog.Confirm({
    	'force': true,
    	'width': 600,
    	'titleClose': false,
		'title': 'Warning:',
		'message': 'Are you sure you want to delete the group <strong>' + name + '</strong>?',
		'callback': function(yes){ 			
			if(yes) var res = deleteTreeGroup(mytree);			
		}
	});		
}
function deleteTreeGroup(mytree){
	
	var current = mytree.getSelected();
		
	if(!current){
		myAlert ('Select group to be deleted in tree!', '<strong>No group selected</strong>');
		return false;
	}

	var groupid = current.data.dep_id;
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'delete_tree_group', 'groupid':groupid },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'deleting group...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Edu Error: '+text);      
            else if(re.success != true){
            	//not success
				myAlert (re.message, 'ERROR:');	
           	}
            else {
                //Success
				current.remove();
				myAlert (re.message, 'Group Deleted');       
            }
        }
    }).send();
  
}


/**
 * renameTreeGroup
 */
function renameTreeGroup(mytree, node, oldName, newName){
	
	if(newName == oldName) {
		mytree.renameCancel();
		return;
	}
	
	var groupid = node.data.dep_id;
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'rename_tree_group', 'groupid':groupid, 'newname':newName},
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'renaming group...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Edu Error: '+text);      
            else if(re.success != true){
            	//not success
				myAlert (re.message, '<strong>Rename ERROR:</strong>');	
				mytree.renameCancel();
           	}
            else {
                //Success
				mytree.renameComplete();
				myAlert (re.message, 'Group Renamed');  				     
            }
        }
    }).send();
	
}


 /**
 * dropTreeGroup
 */
function dropTreeGroupConfirm(mytree, current, target, where){

	mdialog[2] = new MavDialog.Confirm({
    	'force': true,
    	'width': 600,
    	'titleClose': false,
		'title': '<strong>Moving Group: </strong>'+name,
		'message': '<strong>'+current.name+'</strong> <br />'+where+' <br /><strong>'+target.name+'</strong>',
		'callback': function(yes){ 			
			if(yes) var res = dropTreeGroup(mytree, current, target, where);
			else mytree.emptydrop();			
		}
	});		
}
 /**
 * dropTreeGroup - move current -> target ->where (inside, after, before
 */
function dropTreeGroup(mytree, current, target, where){

	var groupid = current.data.dep_id;
	var targetid = target.data.dep_id;
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'move_tree_group', 'groupid':groupid, 'targetid':targetid, 'where':where},
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'moving group...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Move Error: '+text);      
            else if(re.success != true){
            	//not success
				myAlert (re.message, '<strong>Move ERROR:</strong>');	
				mytree.emptydrop();
           	}
            else {
                //Success
				mytree.drop();	     
            }
        }
    }).send();	
	
}

function checkUncheckUsers(theForm, state){
	state = (state) ? true : false;
	document.id(theForm).getElements('input.user_checkbox').each(function(e){
		e.checked = state;
	});	
}
function checkUncheckTutorials(theForm, state){
	state = (state) ? true : false;
	document.id(theForm).getElements('input.tutorial_checkbox').each(function(e){
		e.checked = state;
	});	
}


/**
 * corpUsersAction
 * perform action on checked users
 */
function corpUsersAction(action){
	
	var userForm = document.id('corpUserForm');
	if(!userForm){
		alert('User form not defined');
		return;
	}
	
	var checkedUsers = [];
	userForm.getElements('input.user_checkbox').each(function(e){
		if(e.checked) checkedUsers.push(e.value);
	});	

	if(!action) action = userForm.user_action.value;
	
	if(checkedUsers.length == 0){
		myAlert ('Select users using checkboxes.', '<strong>No users selected!</strong>');
		return;	
	}
	
	if(action == 'delete'){
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Deleting corporate users: </strong>',
			'message': 'You are about to delete <strong>'+checkedUsers.length+'</strong> users.<br/>Only users without tutorials and not managers will be deleted.<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) deleteCorporateUsers(checkedUsers);
				else return;			
			}
		});		
		
	}
	else if(action == 'addtogroups'){
		
		var checkedGroups = tree_getCheckedGroups(mytree);
		if(checkedGroups.length == 0){
			myAlert ('Select groups in tree on the left.', '<strong>No groups selected!</strong>');
			return;
		}
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Adding users to groups: </strong>',
			'message': 'You are about to add <strong>'+checkedUsers.length+'</strong> users to <strong>'+checkedGroups.length+'</strong> groups.<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) addCorporateUsersToGroups(checkedUsers,checkedGroups);
				else return;			
			}
		});		
	}
	else{
		alert('Action not defined.');
		return;
	}
	
}

function addCorporateUsersToGroups(userArray, groupArray){

	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'add_users_to_groups', userarray: userArray, grouparray: groupArray },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'adding users to groups...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  {
            	alert('Ajax Add Users To Groups Error: '+text);
				return false; 
			}     
            else if(re.success != true){
            	//not success 
				myAlert (re.message, '<strong>ERROR:</strong>');
				
           	}
            else {
                //Success 
				myAlert (re.message, '<strong>User-Group completed:</strong>');								     
            }
        }
    }).send();	
	
}

function deleteCorporateUsers(userArray){

	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'delete_corporate_users', userarray: userArray },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'deleting corporate users...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Delete Corp Users Error: '+text);      
            else if(re.success != true){
            	//not success - no deletion
				myAlert (re.message, '<strong>ERROR:</strong>');
           	}
            else {
                //Success - array of deleted and not deleted users
                if(re.del_ids){
                	re.del_ids.each(function(uid){ if(document.id('user_tr_'+uid)) document.id('user_tr_'+uid).dispose(); })	
               	}
               	if(re.notdel_ids){
                	re.notdel_ids.each(function(uid){ if(document.id('user_tr_'+uid)) document.id('user_tr_'+uid).addClass('error'); })	
               	}
				myAlert (re.message, '<strong>Deletion completed:</strong>');				     
            }
        }
    }).send();	
}

/**
 * corpTutorialsAction
 * perform action on checked tutorials
 */
function corpTutorialsAction(action){
	
	var tutForm = document.id('corpTutorialsForm');
	if(!tutForm){
		alert('Tutorial form not defined');
		return;
	}
	
	var checkedTutorials = [];
	tutForm.getElements('input.tutorial_checkbox').each(function(e){
		if(e.checked) checkedTutorials.push(e.value);
	});	
	
	if(!action) action = tutForm.tutorial_action.value;
	
	if(checkedTutorials.length == 0){
		myAlert ('Select tutorials using checkboxes.', '<strong>No tutorials selected!</strong>');
		return;	
	}
	
	if(action == 'remove_tutorials_groups'){
		
		var checkedGroups = tree_getCheckedGroups(mytree);
		if(checkedGroups.length == 0){
			myAlert ('Select groups in tree on the left.', '<strong>No groups selected!</strong>');
			return;
		}
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Removing tutorials from user groups: </strong>',
			'message': 'You are about to remove <strong>'+checkedTutorials.length+'</strong> tutorial(s) from <strong>'+checkedGroups.length+'</strong> group(s).<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) removeTutorialsFromGroups(checkedTutorials,checkedGroups);
				else return;			
			}
		});		
	}
	else if(action == 'remove_tutorials_allgroups'){
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Removing tutorials from all user groups: </strong>',
			'message': 'You are about to delete <strong>'+checkedTutorials.length+'</strong> tutorial(s) from <strong>ALL</strong> usergroups.<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) removeTutorialsFromGroups(checkedTutorials, 'all');
				else return;			
			}
		});		
		
	}
	else if(action == 'add_tutorials_groups'){
		
		var checkedGroups = tree_getCheckedGroups(mytree);
		if(checkedGroups.length == 0){
			myAlert ('Select groups in tree on the left.', '<strong>No groups selected!</strong>');
			return;
		}
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Adding tutorials to groups: </strong>',
			'message': 'You are about to add <strong>'+checkedTutorials.length+'</strong> tutorial(s) to <strong>'+checkedGroups.length+'</strong> group(s).<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) addTutorialsToGroups(checkedTutorials,checkedGroups);
				else return;			
			}
		});		
	}
	else{
		myAlert ('Select action in drop down list.', '<strong>No valid action selected!</strong>');
		return;
	}
	
}

function removeTutorialsFromGroups(tutorials, groups, deleterows){ //arrays, groups array or 'all'

	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'remove_tutorials_groups', 'tutorials': tutorials, 'groups':groups },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'removing tutorials from groups...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Error: '+text);      
            else if(re.success != true){
            	//not success - no deletion
				myAlert (re.message, '<strong>ERROR:</strong>');
           	}
            else {
                //Success - array of deleted and not deleted users
				myAlert (re.message, '<strong>Tutorials removed.</strong>');
				if(deleterows && re.removed_ids)	
				if(re.removed_ids){
                	re.removed_ids.each(function(tid){ if(document.id('tut_tr_'+tid)) document.id('tut_tr_'+tid).dispose(); })	
               	}			     
            }
        }
    }).send();	
}

function addTutorialsToGroups(tutorials, groups){ //arrays

	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'add_tutorials_groups', 'tutorials': tutorials, 'groups':groups },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'adding tutorials to groups...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Error: '+text);      
            else if(re.success != true){
            	//Not success
				myAlert (re.message, '<strong>ERROR:</strong>');
           	}
            else {
                //Success - refresh page
				myAlert (re.message, '<strong>Tutorials added.</strong>');
                if(re.added > 0) window.location.reload();
            }
        }
    }).send();	
}

/**
 * groupUsersAction
 * perform action on checked users
 */
var UsersActionON = 0;
function groupUsersAction(action){
	
	var userForm = document.id('groupUsersForm');
	if(!userForm){
		alert('User form not defined');
		return;
	}
	
	var checkedUsers = [];
	userForm.getElements('input.user_checkbox').each(function(e){
		if(e.checked) checkedUsers.push(e.value);
	});	
	if(!action) action = userForm.user_action.value;
	var group = userForm.depid.value;
	
	if(checkedUsers.length == 0){
		myAlert ('Select users using checkboxes.', '<strong>No users selected!</strong>');
		return;	
	}
	
	if(action == 'remove_from_group'){
		
		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Removing users from group: </strong>',
			'message': 'You are about to remove <strong>'+checkedUsers.length+'</strong> users from this group.<br/>Note, user will not be removed if:<br/>- this is the only group he is member of<br/>- is manager of this group<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) removeUsersFromGroup(checkedUsers, group);
				else return;			
			}
		});		
		
	}
	else if(action == 'set_unset_manager'){
		
		if(checkedUsers.length > 1){
			myAlert ('Select only one user to set or unset <br/>his manager role of this group.');
			return;	
		}
		var uid = checkedUsers[0];
		var depid = userForm.depid.value;
		if(!depid){
			alert('ERROR: Group Id not defined.');
			return;
		}		
		new Request.JSON({
	        url: ajaxProcessorUrl, 
	        method: 'post',
	        noCache: true,
			useSpinner: true,
        	spinnerTarget: $(document.body), 
			spinnerOptions: { message: 'changing manager role...' }, 
	        data: {'action':'set_unset_manager', 'uid':uid, 'depid':depid},      
	        onComplete: function(re, text) { 
	            
	            if ($type(re) != 'object')  {
	            	alert('Ajax Error: '+text);
					return false; 
				}     
	            else if(re.success != true){
	            	//not success 
					myAlert (re.message, 'Manager rights NOT changed:');					
	           	}
	            else {
	                //Success 
					myAlert (re.message, 'Manager rights changed:');
					var flag = document.id('group_manager_flag_'+uid);
					if(flag) flag.set('html', re.flag);								     
	            }
	        }
	    }).send();	
	}
	else if(action == 'email_login_details'){
		
		if(UsersActionON) return;
		UsersActionON = 1; //to prevent double click action
		
		var depid = userForm.depid.value;
		if(!depid){
			alert('ERROR: Group Id not defined.');
			return;
		}
	    
	    var action = 'email_login_details_form';
		
		mdialog[1] = new MavDialog({
			'force': true, //overlay
			'draggable': true,
	 		'width': 750,
	 		'ok': false,
	 		'footer': false,
			'title': 'Send email to selected users with their login details:',
			'url': ajaxProcessorUrl,
	 		'data': {'action': action, 'depid':depid, 'userarray':checkedUsers }, 
			'onShow': function() { 
				UsersActionON = 0; //there is already overlay from mavdialog
				} 			
		});
		
	}
	else if(action == 'email_message'){
		
		if(UsersActionON) return;
		UsersActionON = 1; //to prevent double click action
		
		var depid = userForm.depid.value;
		if(!depid){
			alert('ERROR: Group Id not defined.');
			return;
		}
	    
	    var action = 'email_message_form';
		
		mdialog[1] = new MavDialog({
			'force': true, //overlay
			'draggable': true,
	 		'width': 750,
	 		'ok': false,
	 		'footer': false,
			'title': 'Send email to selected users with custom message:',
			'url': ajaxProcessorUrl,
	 		'data': {'action': action, 'depid':depid, 'userarray':checkedUsers }, 
			'onShow': function() { 
				UsersActionON = 0;
				} 			
		});
		
	}
	else{
		alert('Action not defined.');
		return;
	}
	
}

/**
 * send emails to users in session - prepared by email_login_details_form
 */
function emailLoginDetails(testOrlive, mailingForm){
	
	var mailingForm = document.id(mailingForm);
	if(!mailingForm){
		alert('Mailing form not defined');
		return;
	}
	
	var messageWrapper = document.id('messageWrapper');
	//start spinner
	if(!messageWrapper.hasClass('message') || testOrlive == 'test'){
		messageWrapper.set('html', 'In progress...').addClass('message').addClass('progress');
	}
	
	var mKey = mailingForm.mKey.value;
	var mAll = mailingForm.mAll.value;
	var mSent = mailingForm.mSent.value;
	var mFailed = mailingForm.mFailed.value;
	
	var mBody = mailingForm.mBody.value;
	var mSubject = mailingForm.mSubject.value;
	 
	var depid = mailingForm.depid.value;
	
	if(!mKey || !depid){
		messageWrapper.set('html', 'ERROR email key or depid!!!').addClass('message error');
		return;	
	}
	if(!mBody || !mSubject){
		messageWrapper.set('html', 'ERROR: Missing message or subject.').addClass('message error');
		return;		
	}
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'email_login_details', 'key': mKey, 'depid':depid, 'testorlive':testOrlive, 'email_body':mBody, 'email_subject':mSubject },      
        onComplete: function(re, text) { 
            
         
            if ($type(re) != 'object')  {
            	alert('Ajax Error: '+text);
				return false; 
			}     
            else if(re.success != true){
            	//not success
				messageWrapper.set('html', 'ERROR: '+re.message).removeClass('success').removeClass('progress').addClass('message error');
				
           	}
            else {
                //Success                	
                if(re.finished){
                	messageWrapper.set('html', re.message).removeClass('error').removeClass('progress').addClass('success');
					return;                	
               	} 
               	
               	//highlight
               	if(re.sent_ids){
                	re.sent_ids.each(function(uid){ if(document.id('user_tr_'+uid)) document.id('user_tr_'+uid).addClass('success'); })	
               	}
               	
               	//more to send
		   		messageWrapper.set('html', re.message).addClass('message').addClass('progress');
		   		
	   			mailingForm.mKey.value = re.key;
				mailingForm.mAll.value = re.all;
				mailingForm.mSent.value = re.sent;
				mailingForm.mFailed.value = re.failed;
               	emailLoginDetails(testOrlive, mailingForm);							     
            }
        }
    }).send();
}


function removeUsersFromGroup(userArray, group){

	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'remove_users_from_group', 'userarray': userArray, 'group':group },
        useSpinner: true,
        spinnerTarget: $(document.body), 
		spinnerOptions: { message: 'removing users from group...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Error: '+text);      
            else if(re.success != true){
            	//not success - no deletion
				myAlert (re.message, '<strong>ERROR:</strong>');
           	}
            else {
                //Success - array of deleted and not deleted users
                if(re.rem_ids){
                	re.rem_ids.each(function(uid){ if(document.id('user_tr_'+uid)) document.id('user_tr_'+uid).dispose(); })	
               	}
               	if(re.notrem_ids){
                	re.notrem_ids.each(function(uid){ if(document.id('user_tr_'+uid)) document.id('user_tr_'+uid).addClass('error'); })	
               	}
				myAlert (re.message, '<strong>Removing completed:</strong>');				     
            }
        }
    }).send();	
}

/**
 * add users to managers group - show list of users with checkboxes
 */
var AddSelectionON = 0; 
function groupUsersAddSelection(depid){
	
	if(AddSelectionON) return;
	AddSelectionON = 1; //to prevent double click action
	
	if(!depid){
        alert ('Missing group id!');
        return;
    }
    
    var action = 'select_manager_group_users';
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 750,
 		'ok': false,
 		'footer': false,
		'title': '<strong>Select from available users to add to group:</strong>',
		'url': ajaxProcessorUrl+'&depid='+depid+'&action='+action,
		'onShow': function() { 
			AddSelectionON = 0; //there is already overlay from mavdialog
			} 			
	});
}

function groupUsersAdd(formId){
    
    var dataForm = document.id(formId);
    var messageWrapper = document.id('messageWrapper');
    messageWrapper.set('html', '').removeClass('message').removeClass('error').removeClass('success');
    
	if(!dataForm){
		alert('ERROR: Form Id not defined.');
		return false;
	}
	
	var depid = dataForm.depid.value;
	if(!depid){
		alert('ERROR: Group Id not defined.');
		return false;
	}
	
	var groupArray = [depid]; 
	
	var checkedUsers = [];
	dataForm.getElements('input.user_checkbox').each(function(e){
		if(e.checked) checkedUsers.push(e.value);
	});	
	
	if(checkedUsers.length == 0){		
		messageWrapper.set('html', 'No users selected!').addClass('message error');
		return;	
	}
	
	$$('.mav-dialog').spin({message:'adding users to group...'});
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'add_users_to_groups', userarray: checkedUsers, grouparray: groupArray },      
        onComplete: function(re, text) { 
            
            $$('.mav-dialog').unspin();
            
            if ($type(re) != 'object')  {
            	alert('Ajax Add Users To Groups Error: '+text);
				return false; 
			}     
            else if(re.success != true){
            	//not success 
				messageWrapper.set('html', 'ERROR: '+re.message).addClass('message error');
				
           	}
            else {
                //Success 
				messageWrapper.set('html', ''+re.message).addClass('message success');								     
            }
        }
    }).send();	
}


function groupTutorialsAction(action){
	
	var tutForm = document.id('groupTutorialsForm');
	if(!tutForm || !tutForm.depid.value){
		alert('Tutorial form or dep id not defined');
		return;
	}
	
	var depid = tutForm.depid.value;
	var checkedGroups = [depid];
	
	var checkedTutorials = [];
	tutForm.getElements('input.tutorial_checkbox').each(function(e){
		if(e.checked) checkedTutorials.push(e.value);
	});	
	
	if(!action) action = tutForm.tutorial_action.value;
	
	if(checkedTutorials.length == 0){
		myAlert ('Select tutorials using checkboxes.', '<strong>No tutorials selected!</strong>');
		return;	
	}
	
	if(action == 'remove_tutorials_groups'){

		mdialog[2] = new MavDialog.Confirm({
	    	'force': true,
	    	'width': 600,
	    	'titleClose': false,
			'title': '<strong>Removing tutorials from user group: </strong>',
			'message': 'You are about to remove <strong>'+checkedTutorials.length+'</strong> tutorial(s) from this group.<br/>Are you sure?',
			'callback': function(yes){ 			
				if(yes) removeTutorialsFromGroups(checkedTutorials, checkedGroups, true);
				else return;			
			}
		});		
	}
	else{
		alert('Action not defined.');
		return;
	}
	
}


/**
 * add tutorials to managers group - show list of tut with checkboxes
 */
function groupTutorialsAddSelection(depid){
	
	if(AddSelectionON) return;
	AddSelectionON = 1; //to prevent double click action
	
	if(!depid){
        alert ('Missing group id!');
        return;
    }
    
    var action = 'select_manager_group_tutorials';
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 750,
 		'ok': false,
 		'footer': false,
		'title': '<strong>Select from available tutorials to add to group:</strong>',
		'url': ajaxProcessorUrl,
		'data': {depid:depid, action:action},
		'loadingMessage': '<div class="message progress">loading...<div>', 
		'onShow': function() { 
			AddSelectionON = 0; //there is already overlay from mavdialog
			} 			
	});
}
function groupTutorialsAdd(formId){
    
    var dataForm = document.id(formId);
    var messageWrapper = document.id('messageWrapper');
    messageWrapper.set('html', '').removeClass('message').removeClass('error').removeClass('success');
    
	if(!dataForm){
		alert('ERROR: Form Id not defined.');
		return false;
	}
	
	var depid = dataForm.depid.value;
	if(!depid){
		alert('ERROR: Group Id not defined.');
		return false;
	}
	
	var groupArray = [depid]; 
	
	var checkedTut = [];
	dataForm.getElements('input.user_checkbox').each(function(e){
		if(e.checked) checkedTut.push(e.value);
	});	
	
	if(checkedTut.length == 0){		
		messageWrapper.set('html', 'No tutorials selected!').addClass('message error');
		return;	
	}
	
	$$('.mav-dialog').spin({message:'adding tutorials to group...'});
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'add_tutorials_groups', tutorials: checkedTut, groups: groupArray },      
        onComplete: function(re, text) { 
            
            $$('.mav-dialog').unspin();
            
            if ($type(re) != 'object')  {
            	alert('Ajax Error: '+text);
				return false; 
			}     
            else if(re.success != true){
            	//not success 
				messageWrapper.set('html', 'ERROR: '+re.message).addClass('message error');
				
           	}
            else {
                //Success 
				messageWrapper.set('html', ''+re.message).addClass('message success');								     
            }
        }
    }).send();	
}

/**
 * gtrouop tutorials export for single group or whole branch
 */ 
function groupTutorialsReport(depid, branchreport){
	
	branchreport = branchreport ? 1 : 0;	
	if(!depid){
        alert ('Missing group id!');
        return;
    }
    
    var action = 'group_tutorials_report';
    var title = branchreport ? 'Branch tutorials report:' : 'Single group tutorials report:'
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 450,
 		'ok': false,
 		'footer': false,
		'title': title,
		'loadingMessage': '<div class="message progress">please wait....<div>',  
		'url': ajaxProcessorUrl,
		'data': {depid:depid, branchreport:branchreport, action:action}			
	}); 
}

/**
 * users report for single group 
 */ 
function groupUsersReport(depid){
	
	if(!depid){
        myAlert ('Missing group id!');
        return;
    }
    
    var action = 'group_users_report';
    var title = 'Group users report:'
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 450,
 		'ok': false,
 		'footer': false,
		'title': title,
		'loadingMessage': '<div class="message progress">please wait....<div>',  
		'url': ajaxProcessorUrl,
		'data': {depid:depid, action:action}			
	}); 
}

/**
 * toggleTutMore
 * - expand table row and load tutorial evaluation and statistics 
 */
function toggleTutMore(tutid){

	rowId = document.id('tutmore_tr_'+tutid);
	contId = document.id('tutmorecont_tr_'+tutid);
	btn = document.id('tutmore_btn_'+tutid);
	
	if(!tutid || !rowId || !contId) return;
	
	var closing = rowId.getStyle('display') == 'none' ? false : true;
	
	rowId.toggle();
	
	if(closing){
		btn.removeClass('active');
		return;
	}
	
	btn.addClass('active');		
	contId.set('html', '<br /><br /><br /><br />');
	
	//get stats and show it if it is not already there
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'get_tutorial_evaluation', 'tutid': tutid},
        useSpinner: true,
        spinnerTarget: contId, 
		spinnerOptions: { message: 'loading evaluation...' },         
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  alert('Ajax Error: '+text);      
            else if(re.success != true){
            	//not success - no deletion
				myAlert (re.message, '<strong>ERROR:</strong>');
           	}
            else {
                //Success - array of deleted and not deleted users
                contId.set('html', re.html);	                				     
            }
        }
    }).send();	
}

/**
 * toggleUserMore
 * - expand table row and load user tutorial stats and personal details 
 */
function toggleUserMore(userid, depid, formId){

	rowId = document.id('usermore_tr_'+userid);
	contId = document.id('usermorecont_tr_'+userid);
	btn = document.id('usermore_btn_'+userid);
	
	if(!userid || !rowId || !contId) return;
	
	var closing = rowId.getStyle('display') == 'none' ? false : true;
	
	rowId.toggle();
	
	if(closing){
		btn.removeClass('active');
		return;
	}
	
	btn.addClass('active');		
	contId.set('html', '<br /><br /><br /><br />');
	
	//get stats and show it if it is not already there
	new Request.HTML({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true, 
        data: {'action':'get_user_details', 'uid': userid, 'depid': depid, 'formId': formId},
        useSpinner: true,
        spinnerTarget: contId, 
		spinnerOptions: { message: 'loading user details...' },
		evalResponse: true,         
        update: contId
    }).send();	
}

//update user details - 
//form is for whole page with all users so input data are in array e.g. u256[firstname]
function updateUserDetails(formId, uid){
    
    var dataForm = document.id(formId);
    if(!dataForm || !uid){
		myAlert('ERROR: Form Id or uid not defined.');
		return false;
	}

	var messageWrapper = document.id('u'+uid+'_messageWrapper');
    messageWrapper.set('html', '').removeClass('message').removeClass('error').removeClass('success');
    
    //we nned tu use whole form data so lets add action and uid
    //!!!!!!
    dataForm.update_uid.value=uid; 
    dataForm.action.value='update_user_details';
	
	new Request.JSON({
        url: ajaxProcessorUrl, 
        method: 'post',
        noCache: true,
        useSpinner: true,
        spinnerTarget: 'usermorecont_tr_'+uid, 
		spinnerOptions: { message: 'updating user details...' }, 
        data: dataForm,      
        onComplete: function(re, text) { 
            
            if ($type(re) != 'object')  {
            	alert('Ajax Error: '+text);
				return false; 
			}     
            else if(re.success != true){
            	//not success 
				messageWrapper.set('html', 'ERROR: '+re.message).addClass('message error');
				
           	}
            else {
                //Success 
				messageWrapper.set('html', ''+re.message).addClass('message success');								     
            }
        }
    }).send();
}

/**
 * mif Tree functions 
 */
function tree_getCheckedGroups(tree){

	var checked = [];
	tree.getChecked().each(function(node){
		checked.push(node.id);
	});
	return checked;
}

/**
 * showHelp - in mavDialog taken from hidden container
 */
function showHelp(contId, title){
	
	var msg = '';
	var hHeight = 500;
	
	if(!contId) msg = 'No help content available.';
	else{		
		var container = document.id(contId);
		if(!container) msg = 'No help content available.'
		else msg = container.get('html');
		if(msg == '') msg = 'No help content available.';	
	}
	
	if(title == '') title = 'Help:';	
	
	mdialog[1] = new MavDialog({
		'force': true, //overlay
		'draggable': true,
 		'width': 750,
		'height': hHeight,
 		'ok': false,
		'cancel': true,
		'cancelText': 'CLOSE',
 		'footer': true,
		'title': title,
		'message': '<div style="overflow: auto; padding:0 10px 0 0; height:' + hHeight + 'px;">' + msg + '</div>'
	});
}

function randomString(ln) {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = '';
        if(!ln || ln<=0) ln = 8;
	for (var i=0; i<ln; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}


