/******************************************************************************
 * MooTools 1.2.2
 * Copyright (c) 2006-2007 [Valerio Proietti](http://mad4milk.net/).
 * MooTools is distributed under an MIT-style license.
 ******************************************************************************
 * reset.css - Copyright (c) 2006, Yahoo! Inc. All rights reserved.
 * Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt
 ******************************************************************************
 * Jx UI Library, 3.0
 * Copyright (c) 2006-2008, DM Solutions Group Inc. All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *****************************************************************************/

(function(){this.MooTools={version:'1.4.1',build:'d1fb25710e3c5482a219ab9dc675a4e0ad2176b6'};var typeOf=this.typeOf=function(item){if(item==null)return'null';if(item.$family)return item.$family();if(item.nodeName){if(item.nodeType==1)return'element';if(item.nodeType==3)return(/\S/).test(item.nodeValue)?'textnode':'whitespace';}else if(typeof item.length=='number'){if(item.callee)return'arguments';if('item'in item)return'collection';}
return typeof item;};var instanceOf=this.instanceOf=function(item,object){if(item==null)return false;var constructor=item.$constructor||item.constructor;while(constructor){if(constructor===object)return true;constructor=constructor.parent;}
return item instanceof object;};var Function=this.Function;var enumerables=true;for(var i in{toString:1})enumerables=null;if(enumerables)enumerables=['hasOwnProperty','valueOf','isPrototypeOf','propertyIsEnumerable','toLocaleString','toString','constructor'];Function.prototype.overloadSetter=function(usePlural){var self=this;return function(a,b){if(a==null)return this;if(usePlural||typeof a!='string'){for(var k in a)self.call(this,k,a[k]);if(enumerables)for(var i=enumerables.length;i--;){k=enumerables[i];if(a.hasOwnProperty(k))self.call(this,k,a[k]);}}else{self.call(this,a,b);}
return this;};};Function.prototype.overloadGetter=function(usePlural){var self=this;return function(a){var args,result;if(usePlural||typeof a!='string')args=a;else if(arguments.length>1)args=arguments;if(args){result={};for(var i=0;i<args.length;i++)result[args[i]]=self.call(this,args[i]);}else{result=self.call(this,a);}
return result;};};Function.prototype.extend=function(key,value){this[key]=value;}.overloadSetter();Function.prototype.implement=function(key,value){this.prototype[key]=value;}.overloadSetter();var slice=Array.prototype.slice;Function.from=function(item){return(typeOf(item)=='function')?item:function(){return item;};};Array.from=function(item){if(item==null)return[];return(Type.isEnumerable(item)&&typeof item!='string')?(typeOf(item)=='array')?item:slice.call(item):[item];};Number.from=function(item){var number=parseFloat(item);return isFinite(number)?number:null;};String.from=function(item){return item+'';};Function.implement({hide:function(){this.$hidden=true;return this;},protect:function(){this.$protected=true;return this;}});var Type=this.Type=function(name,object){if(name){var lower=name.toLowerCase();var typeCheck=function(item){return(typeOf(item)==lower);};Type['is'+name]=typeCheck;if(object!=null){object.prototype.$family=(function(){return lower;}).hide();}}
if(object==null)return null;object.extend(this);object.$constructor=Type;object.prototype.$constructor=object;return object;};var toString=Object.prototype.toString;Type.isEnumerable=function(item){return(item!=null&&typeof item.length=='number'&&toString.call(item)!='[object Function]');};var hooks={};var hooksOf=function(object){var type=typeOf(object.prototype);return hooks[type]||(hooks[type]=[]);};var implement=function(name,method){if(method&&method.$hidden)return;var hooks=hooksOf(this);for(var i=0;i<hooks.length;i++){var hook=hooks[i];if(typeOf(hook)=='type')implement.call(hook,name,method);else hook.call(this,name,method);}
var previous=this.prototype[name];if(previous==null||!previous.$protected)this.prototype[name]=method;if(this[name]==null&&typeOf(method)=='function')extend.call(this,name,function(item){return method.apply(item,slice.call(arguments,1));});};var extend=function(name,method){if(method&&method.$hidden)return;var previous=this[name];if(previous==null||!previous.$protected)this[name]=method;};Type.implement({implement:implement.overloadSetter(),extend:extend.overloadSetter(),alias:function(name,existing){implement.call(this,name,this.prototype[existing]);}.overloadSetter(),mirror:function(hook){hooksOf(this).push(hook);return this;}});new Type('Type',Type);var force=function(name,object,methods){var isType=(object!=Object),prototype=object.prototype;if(isType)object=new Type(name,object);for(var i=0,l=methods.length;i<l;i++){var key=methods[i],generic=object[key],proto=prototype[key];if(generic)generic.protect();if(isType&&proto){delete prototype[key];prototype[key]=proto.protect();}}
if(isType)object.implement(prototype);return force;};force('String',String,['charAt','charCodeAt','concat','indexOf','lastIndexOf','match','quote','replace','search','slice','split','substr','substring','trim','toLowerCase','toUpperCase'])('Array',Array,['pop','push','reverse','shift','sort','splice','unshift','concat','join','slice','indexOf','lastIndexOf','filter','forEach','every','map','some','reduce','reduceRight'])('Number',Number,['toExponential','toFixed','toLocaleString','toPrecision'])('Function',Function,['apply','call','bind'])('RegExp',RegExp,['exec','test'])('Object',Object,['create','defineProperty','defineProperties','keys','getPrototypeOf','getOwnPropertyDescriptor','getOwnPropertyNames','preventExtensions','isExtensible','seal','isSealed','freeze','isFrozen'])('Date',Date,['now']);Object.extend=extend.overloadSetter();Date.extend('now',function(){return+(new Date);});new Type('Boolean',Boolean);Number.prototype.$family=function(){return isFinite(this)?'number':'null';}.hide();Number.extend('random',function(min,max){return Math.floor(Math.random()*(max-min+1)+min);});var hasOwnProperty=Object.prototype.hasOwnProperty;Object.extend('forEach',function(object,fn,bind){for(var key in object){if(hasOwnProperty.call(object,key))fn.call(bind,object[key],key,object);}});Object.each=Object.forEach;Array.implement({forEach:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(i in this)fn.call(bind,this[i],i,this);}},each:function(fn,bind){Array.forEach(this,fn,bind);return this;}});var cloneOf=function(item){switch(typeOf(item)){case'array':return item.clone();case'object':return Object.clone(item);default:return item;}};Array.implement('clone',function(){var i=this.length,clone=new Array(i);while(i--)clone[i]=cloneOf(this[i]);return clone;});var mergeOne=function(source,key,current){switch(typeOf(current)){case'object':if(typeOf(source[key])=='object')Object.merge(source[key],current);else source[key]=Object.clone(current);break;case'array':source[key]=current.clone();break;default:source[key]=current;}
return source;};Object.extend({merge:function(source,k,v){if(typeOf(k)=='string')return mergeOne(source,k,v);for(var i=1,l=arguments.length;i<l;i++){var object=arguments[i];for(var key in object)mergeOne(source,key,object[key]);}
return source;},clone:function(object){var clone={};for(var key in object)clone[key]=cloneOf(object[key]);return clone;},append:function(original){for(var i=1,l=arguments.length;i<l;i++){var extended=arguments[i]||{};for(var key in extended)original[key]=extended[key];}
return original;}});['Object','WhiteSpace','TextNode','Collection','Arguments'].each(function(name){new Type(name);});var UID=Date.now();String.extend('uniqueID',function(){return(UID++).toString(36);});})();(function(){var hasOwnProperty=Object.prototype.hasOwnProperty;Object.extend({subset:function(object,keys){var results={};for(var i=0,l=keys.length;i<l;i++){var k=keys[i];if(k in object)results[k]=object[k];}
return results;},map:function(object,fn,bind){var results={};for(var key in object){if(hasOwnProperty.call(object,key))results[key]=fn.call(bind,object[key],key,object);}
return results;},filter:function(object,fn,bind){var results={};for(var key in object){var value=object[key];if(hasOwnProperty.call(object,key)&&fn.call(bind,value,key,object))results[key]=value;}
return results;},every:function(object,fn,bind){for(var key in object){if(hasOwnProperty.call(object,key)&&!fn.call(bind,object[key],key))return false;}
return true;},some:function(object,fn,bind){for(var key in object){if(hasOwnProperty.call(object,key)&&fn.call(bind,object[key],key))return true;}
return false;},keys:function(object){var keys=[];for(var key in object){if(hasOwnProperty.call(object,key))keys.push(key);}
return keys;},values:function(object){var values=[];for(var key in object){if(hasOwnProperty.call(object,key))values.push(object[key]);}
return values;},getLength:function(object){return Object.keys(object).length;},keyOf:function(object,value){for(var key in object){if(hasOwnProperty.call(object,key)&&object[key]===value)return key;}
return null;},contains:function(object,value){return Object.keyOf(object,value)!=null;},toQueryString:function(object,base){var queryString=[];Object.each(object,function(value,key){if(base)key=base+'['+key+']';var result;switch(typeOf(value)){case'object':result=Object.toQueryString(value,key);break;case'array':var qs={};value.each(function(val,i){qs[i]=val;});result=Object.toQueryString(qs,key);break;default:result=key+'='+encodeURIComponent(value);}
if(value!=null)queryString.push(result);});return queryString.join('&');}});})();Array.implement({every:function(fn,bind){for(var i=0,l=this.length>>>0;i<l;i++){if((i in this)&&!fn.call(bind,this[i],i,this))return false;}
return true;},filter:function(fn,bind){var results=[];for(var i=0,l=this.length>>>0;i<l;i++){if((i in this)&&fn.call(bind,this[i],i,this))results.push(this[i]);}
return results;},indexOf:function(item,from){var length=this.length>>>0;for(var i=(from<0)?Math.max(0,length+from):from||0;i<length;i++){if(this[i]===item)return i;}
return-1;},map:function(fn,bind){var length=this.length>>>0,results=Array(length);for(var i=0;i<length;i++){if(i in this)results[i]=fn.call(bind,this[i],i,this);}
return results;},some:function(fn,bind){for(var i=0,l=this.length>>>0;i<l;i++){if((i in this)&&fn.call(bind,this[i],i,this))return true;}
return false;},clean:function(){return this.filter(function(item){return item!=null;});},invoke:function(methodName){var args=Array.slice(arguments,1);return this.map(function(item){return item[methodName].apply(item,args);});},associate:function(keys){var obj={},length=Math.min(this.length,keys.length);for(var i=0;i<length;i++)obj[keys[i]]=this[i];return obj;},link:function(object){var result={};for(var i=0,l=this.length;i<l;i++){for(var key in object){if(object[key](this[i])){result[key]=this[i];delete object[key];break;}}}
return result;},contains:function(item,from){return this.indexOf(item,from)!=-1;},append:function(array){this.push.apply(this,array);return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[Number.random(0,this.length-1)]:null;},include:function(item){if(!this.contains(item))this.push(item);return this;},combine:function(array){for(var i=0,l=array.length;i<l;i++)this.include(array[i]);return this;},erase:function(item){for(var i=this.length;i--;){if(this[i]===item)this.splice(i,1);}
return this;},empty:function(){this.length=0;return this;},flatten:function(){var array=[];for(var i=0,l=this.length;i<l;i++){var type=typeOf(this[i]);if(type=='null')continue;array=array.concat((type=='array'||type=='collection'||type=='arguments'||instanceOf(this[i],Array))?Array.flatten(this[i]):this[i]);}
return array;},pick:function(){for(var i=0,l=this.length;i<l;i++){if(this[i]!=null)return this[i];}
return null;},hexToRgb:function(array){if(this.length!=3)return null;var rgb=this.map(function(value){if(value.length==1)value+=value;return value.toInt(16);});return(array)?rgb:'rgb('+rgb+')';},rgbToHex:function(array){if(this.length<3)return null;if(this.length==4&&this[3]==0&&!array)return'transparent';var hex=[];for(var i=0;i<3;i++){var bit=(this[i]-0).toString(16);hex.push((bit.length==1)?'0'+bit:bit);}
return(array)?hex:'#'+hex.join('');}});Function.extend({attempt:function(){for(var i=0,l=arguments.length;i<l;i++){try{return arguments[i]();}catch(e){}}
return null;}});Function.implement({attempt:function(args,bind){try{return this.apply(bind,Array.from(args));}catch(e){}
return null;},bind:function(that){var self=this,args=arguments.length>1?Array.slice(arguments,1):null,F=function(){};var bound=function(){var context=that,length=arguments.length;if(this instanceof bound){F.prototype=self.prototype;context=new F;}
var result=(!args&&!length)?self.call(context):self.apply(context,args&&length?args.concat(Array.slice(arguments)):args||arguments);return context==that?result:context;};return bound;},pass:function(args,bind){var self=this;if(args!=null)args=Array.from(args);return function(){return self.apply(bind,args||arguments);};},delay:function(delay,bind,args){return setTimeout(this.pass((args==null?[]:args),bind),delay);},periodical:function(periodical,bind,args){return setInterval(this.pass((args==null?[]:args),bind),periodical);}});Number.implement({limit:function(min,max){return Math.min(max,Math.max(min,this));},round:function(precision){precision=Math.pow(10,precision||0).toFixed(precision<0?-precision:0);return Math.round(this*precision)/precision;},times:function(fn,bind){for(var i=0;i<this;i++)fn.call(bind,i,this);},toFloat:function(){return parseFloat(this);},toInt:function(base){return parseInt(this,base||10);}});Number.alias('each','times');(function(math){var methods={};math.each(function(name){if(!Number[name])methods[name]=function(){return Math[name].apply(null,[this].concat(Array.from(arguments)));};});Number.implement(methods);})(['abs','acos','asin','atan','atan2','ceil','cos','exp','floor','log','max','min','pow','sin','sqrt','tan']);String.implement({test:function(regex,params){return((typeOf(regex)=='regexp')?regex:new RegExp(''+regex,params)).test(this);},contains:function(string,separator){return(separator)?(separator+this+separator).indexOf(separator+string+separator)>-1:String(this).indexOf(string)>-1;},trim:function(){return String(this).replace(/^\s+|\s+$/g,'');},clean:function(){return String(this).replace(/\s+/g,' ').trim();},camelCase:function(){return String(this).replace(/-\D/g,function(match){return match.charAt(1).toUpperCase();});},hyphenate:function(){return String(this).replace(/[A-Z]/g,function(match){return('-'+match.charAt(0).toLowerCase());});},capitalize:function(){return String(this).replace(/\b[a-z]/g,function(match){return match.toUpperCase();});},escapeRegExp:function(){return String(this).replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1');},toInt:function(base){return parseInt(this,base||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(array){var hex=String(this).match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(hex)?hex.slice(1).hexToRgb(array):null;},rgbToHex:function(array){var rgb=String(this).match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):null;},substitute:function(object,regexp){return String(this).replace(regexp||(/\\?\{([^{}]+)\}/g),function(match,name){if(match.charAt(0)=='\\')return match.slice(1);return(object[name]!=null)?object[name]:'';});}});(function(){var document=this.document;var window=document.window=this;var UID=1;this.$uid=(window.ActiveXObject)?function(item){return(item.uid||(item.uid=[UID++]))[0];}:function(item){return item.uid||(item.uid=UID++);};$uid(window);$uid(document);var ua=navigator.userAgent.toLowerCase(),platform=navigator.platform.toLowerCase(),UA=ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,'unknown',0],mode=UA[1]=='ie'&&document.documentMode;var Browser=this.Browser={extend:Function.prototype.extend,name:(UA[1]=='version')?UA[3]:UA[1],version:mode||parseFloat((UA[1]=='opera'&&UA[4])?UA[4]:UA[2]),Platform:{name:ua.match(/ip(?:ad|od|hone)/)?'ios':(ua.match(/(?:webos|android)/)||platform.match(/mac|win|linux/)||['other'])[0]},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector),json:!!(window.JSON)},Plugins:{}};Browser[Browser.name]=true;Browser[Browser.name+parseInt(Browser.version,10)]=true;Browser.Platform[Browser.Platform.name]=true;Browser.Request=(function(){var XMLHTTP=function(){return new XMLHttpRequest();};var MSXML2=function(){return new ActiveXObject('MSXML2.XMLHTTP');};var MSXML=function(){return new ActiveXObject('Microsoft.XMLHTTP');};return Function.attempt(function(){XMLHTTP();return XMLHTTP;},function(){MSXML2();return MSXML2;},function(){MSXML();return MSXML;});})();Browser.Features.xhr=!!(Browser.Request);var version=(Function.attempt(function(){return navigator.plugins['Shockwave Flash'].description;},function(){return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');})||'0 r0').match(/\d+/g);Browser.Plugins.Flash={version:Number(version[0]||'0.'+version[1])||0,build:Number(version[2])||0};Browser.exec=function(text){if(!text)return text;if(window.execScript){window.execScript(text);}else{var script=document.createElement('script');script.setAttribute('type','text/javascript');script.text=text;document.head.appendChild(script);document.head.removeChild(script);}
return text;};String.implement('stripScripts',function(exec){var scripts='';var text=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(all,code){scripts+=code+'\n';return'';});if(exec===true)Browser.exec(scripts);else if(typeOf(exec)=='function')exec(scripts,text);return text;});Browser.extend({Document:this.Document,Window:this.Window,Element:this.Element,Event:this.Event});this.Window=this.$constructor=new Type('Window',function(){});this.$family=Function.from('window').hide();Window.mirror(function(name,method){window[name]=method;});this.Document=document.$constructor=new Type('Document',function(){});document.$family=Function.from('document').hide();Document.mirror(function(name,method){document[name]=method;});document.html=document.documentElement;if(!document.head)document.head=document.getElementsByTagName('head')[0];if(document.execCommand)try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}
if(this.attachEvent&&!this.addEventListener){var unloadEvent=function(){this.detachEvent('onunload',unloadEvent);document.head=document.html=document.window=null;};this.attachEvent('onunload',unloadEvent);}
var arrayFrom=Array.from;try{arrayFrom(document.html.childNodes);}catch(e){Array.from=function(item){if(typeof item!='string'&&Type.isEnumerable(item)&&typeOf(item)!='array'){var i=item.length,array=new Array(i);while(i--)array[i]=item[i];return array;}
return arrayFrom(item);};var prototype=Array.prototype,slice=prototype.slice;['pop','push','reverse','shift','sort','splice','unshift','concat','join','slice'].each(function(name){var method=prototype[name];Array[name]=function(item){return method.apply(Array.from(item),slice.call(arguments,1));};});}})();;(function(){var parsed,separatorIndex,combinatorIndex,reversed,cache={},reverseCache={},reUnescape=/\\/g;var parse=function(expression,isReversed){if(expression==null)return null;if(expression.Slick===true)return expression;expression=(''+expression).replace(/^\s+|\s+$/g,'');reversed=!!isReversed;var currentCache=(reversed)?reverseCache:cache;if(currentCache[expression])return currentCache[expression];parsed={Slick:true,expressions:[],raw:expression,reverse:function(){return parse(this.raw,true);}};separatorIndex=-1;while(expression!=(expression=expression.replace(regexp,parser)));parsed.length=parsed.expressions.length;return currentCache[parsed.raw]=(reversed)?reverse(parsed):parsed;};var reverseCombinator=function(combinator){if(combinator==='!')return' ';else if(combinator===' ')return'!';else if((/^!/).test(combinator))return combinator.replace(/^!/,'');else return'!'+combinator;};var reverse=function(expression){var expressions=expression.expressions;for(var i=0;i<expressions.length;i++){var exp=expressions[i];var last={parts:[],tag:'*',combinator:reverseCombinator(exp[0].combinator)};for(var j=0;j<exp.length;j++){var cexp=exp[j];if(!cexp.reverseCombinator)cexp.reverseCombinator=' ';cexp.combinator=cexp.reverseCombinator;delete cexp.reverseCombinator;}
exp.reverse().push(last);}
return expression;};var escapeRegExp=function(string){return string.replace(/[-[\]{}()*+?.\\^$|,#\s]/g,function(match){return'\\'+match;});};var regexp=new RegExp("^(?:\\s*(,)\\s*|\\s*(<combinator>+)\\s*|(\\s+)|(<unicode>+|\\*)|\\#(<unicode>+)|\\.(<unicode>+)|\\[\\s*(<unicode1>+)(?:\\s*([*^$!~|]?=)(?:\\s*(?:([\"']?)(.*?)\\9)))?\\s*\\](?!\\])|(:+)(<unicode>+)(?:\\((?:(?:([\"'])([^\\13]*)\\13)|((?:\\([^)]+\\)|[^()]*)+))\\))?)".replace(/<combinator>/,'['+escapeRegExp(">+~`!@$%^&={}\\;</")+']').replace(/<unicode>/g,'(?:[\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])').replace(/<unicode1>/g,'(?:[:\\w\\u00a1-\\uFFFF-]|\\\\[^\\s0-9a-f])'));function parser(rawMatch,separator,combinator,combinatorChildren,tagName,id,className,attributeKey,attributeOperator,attributeQuote,attributeValue,pseudoMarker,pseudoClass,pseudoQuote,pseudoClassQuotedValue,pseudoClassValue){if(separator||separatorIndex===-1){parsed.expressions[++separatorIndex]=[];combinatorIndex=-1;if(separator)return'';}
if(combinator||combinatorChildren||combinatorIndex===-1){combinator=combinator||' ';var currentSeparator=parsed.expressions[separatorIndex];if(reversed&&currentSeparator[combinatorIndex])
currentSeparator[combinatorIndex].reverseCombinator=reverseCombinator(combinator);currentSeparator[++combinatorIndex]={combinator:combinator,tag:'*'};}
var currentParsed=parsed.expressions[separatorIndex][combinatorIndex];if(tagName){currentParsed.tag=tagName.replace(reUnescape,'');}else if(id){currentParsed.id=id.replace(reUnescape,'');}else if(className){className=className.replace(reUnescape,'');if(!currentParsed.classList)currentParsed.classList=[];if(!currentParsed.classes)currentParsed.classes=[];currentParsed.classList.push(className);currentParsed.classes.push({value:className,regexp:new RegExp('(^|\\s)'+escapeRegExp(className)+'(\\s|$)')});}else if(pseudoClass){pseudoClassValue=pseudoClassValue||pseudoClassQuotedValue;pseudoClassValue=pseudoClassValue?pseudoClassValue.replace(reUnescape,''):null;if(!currentParsed.pseudos)currentParsed.pseudos=[];currentParsed.pseudos.push({key:pseudoClass.replace(reUnescape,''),value:pseudoClassValue,type:pseudoMarker.length==1?'class':'element'});}else if(attributeKey){attributeKey=attributeKey.replace(reUnescape,'');attributeValue=(attributeValue||'').replace(reUnescape,'');var test,regexp;switch(attributeOperator){case'^=':regexp=new RegExp('^'+escapeRegExp(attributeValue));break;case'$=':regexp=new RegExp(escapeRegExp(attributeValue)+'$');break;case'~=':regexp=new RegExp('(^|\\s)'+escapeRegExp(attributeValue)+'(\\s|$)');break;case'|=':regexp=new RegExp('^'+escapeRegExp(attributeValue)+'(-|$)');break;case'=':test=function(value){return attributeValue==value;};break;case'*=':test=function(value){return value&&value.indexOf(attributeValue)>-1;};break;case'!=':test=function(value){return attributeValue!=value;};break;default:test=function(value){return!!value;};}
if(attributeValue==''&&(/^[*$^]=$/).test(attributeOperator))test=function(){return false;};if(!test)test=function(value){return value&&regexp.test(value);};if(!currentParsed.attributes)currentParsed.attributes=[];currentParsed.attributes.push({key:attributeKey,operator:attributeOperator,value:attributeValue,test:test});}
return'';};var Slick=(this.Slick||{});Slick.parse=function(expression){return parse(expression);};Slick.escapeRegExp=escapeRegExp;if(!this.Slick)this.Slick=Slick;}).apply((typeof exports!='undefined')?exports:this);;(function(){var local={},featuresCache={},toString=Object.prototype.toString;local.isNativeCode=function(fn){return(/\{\s*\[native code\]\s*\}/).test(''+fn);};local.isXML=function(document){return(!!document.xmlVersion)||(!!document.xml)||(toString.call(document)=='[object XMLDocument]')||(document.nodeType==9&&document.documentElement.nodeName!='HTML');};local.setDocument=function(document){var nodeType=document.nodeType;if(nodeType==9);else if(nodeType)document=document.ownerDocument;else if(document.navigator)document=document.document;else return;if(this.document===document)return;this.document=document;var root=document.documentElement,rootUid=this.getUIDXML(root),features=featuresCache[rootUid],feature;if(features){for(feature in features){this[feature]=features[feature];}
return;}
features=featuresCache[rootUid]={};features.root=root;features.isXMLDocument=this.isXML(document);features.brokenStarGEBTN=features.starSelectsClosedQSA=features.idGetsName=features.brokenMixedCaseQSA=features.brokenGEBCN=features.brokenCheckedQSA=features.brokenEmptyAttributeQSA=features.isHTMLDocument=features.nativeMatchesSelector=false;var starSelectsClosed,starSelectsComments,brokenSecondClassNameGEBCN,cachedGetElementsByClassName,brokenFormAttributeGetter;var selected,id='slick_uniqueid';var testNode=document.createElement('div');var testRoot=document.body||document.getElementsByTagName('body')[0]||root;testRoot.appendChild(testNode);try{testNode.innerHTML='<a id="'+id+'"></a>';features.isHTMLDocument=!!document.getElementById(id);}catch(e){};if(features.isHTMLDocument){testNode.style.display='none';testNode.appendChild(document.createComment(''));starSelectsComments=(testNode.getElementsByTagName('*').length>1);try{testNode.innerHTML='foo</foo>';selected=testNode.getElementsByTagName('*');starSelectsClosed=(selected&&!!selected.length&&selected[0].nodeName.charAt(0)=='/');}catch(e){};features.brokenStarGEBTN=starSelectsComments||starSelectsClosed;try{testNode.innerHTML='<a name="'+id+'"></a><b id="'+id+'"></b>';features.idGetsName=document.getElementById(id)===testNode.firstChild;}catch(e){};if(testNode.getElementsByClassName){try{testNode.innerHTML='<a class="f"></a><a class="b"></a>';testNode.getElementsByClassName('b').length;testNode.firstChild.className='b';cachedGetElementsByClassName=(testNode.getElementsByClassName('b').length!=2);}catch(e){};try{testNode.innerHTML='<a class="a"></a><a class="f b a"></a>';brokenSecondClassNameGEBCN=(testNode.getElementsByClassName('a').length!=2);}catch(e){};features.brokenGEBCN=cachedGetElementsByClassName||brokenSecondClassNameGEBCN;}
if(testNode.querySelectorAll){try{testNode.innerHTML='foo</foo>';selected=testNode.querySelectorAll('*');features.starSelectsClosedQSA=(selected&&!!selected.length&&selected[0].nodeName.charAt(0)=='/');}catch(e){};try{testNode.innerHTML='<a class="MiX"></a>';features.brokenMixedCaseQSA=!testNode.querySelectorAll('.MiX').length;}catch(e){};try{testNode.innerHTML='<select><option selected="selected">a</option></select>';features.brokenCheckedQSA=(testNode.querySelectorAll(':checked').length==0);}catch(e){};try{testNode.innerHTML='<a class=""></a>';features.brokenEmptyAttributeQSA=(testNode.querySelectorAll('[class*=""]').length!=0);}catch(e){};}
try{testNode.innerHTML='<form action="s"><input id="action"/></form>';brokenFormAttributeGetter=(testNode.firstChild.getAttribute('action')!='s');}catch(e){};features.nativeMatchesSelector=root.matchesSelector||root.mozMatchesSelector||root.webkitMatchesSelector;if(features.nativeMatchesSelector)try{features.nativeMatchesSelector.call(root,':slick');features.nativeMatchesSelector=null;}catch(e){};}
try{root.slick_expando=1;delete root.slick_expando;features.getUID=this.getUIDHTML;}catch(e){features.getUID=this.getUIDXML;}
testRoot.removeChild(testNode);testNode=selected=testRoot=null;features.getAttribute=(features.isHTMLDocument&&brokenFormAttributeGetter)?function(node,name){var method=this.attributeGetters[name];if(method)return method.call(node);var attributeNode=node.getAttributeNode(name);return(attributeNode)?attributeNode.nodeValue:null;}:function(node,name){var method=this.attributeGetters[name];return(method)?method.call(node):node.getAttribute(name);};features.hasAttribute=(root&&this.isNativeCode(root.hasAttribute))?function(node,attribute){return node.hasAttribute(attribute);}:function(node,attribute){node=node.getAttributeNode(attribute);return!!(node&&(node.specified||node.nodeValue));};features.contains=(root&&this.isNativeCode(root.contains))?function(context,node){return context.contains(node);}:(root&&root.compareDocumentPosition)?function(context,node){return context===node||!!(context.compareDocumentPosition(node)&16);}:function(context,node){if(node)do{if(node===context)return true;}while((node=node.parentNode));return false;};features.documentSorter=(root.compareDocumentPosition)?function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition)return 0;return a.compareDocumentPosition(b)&4?-1:a===b?0:1;}:('sourceIndex'in root)?function(a,b){if(!a.sourceIndex||!b.sourceIndex)return 0;return a.sourceIndex-b.sourceIndex;}:(document.createRange)?function(a,b){if(!a.ownerDocument||!b.ownerDocument)return 0;var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();aRange.setStart(a,0);aRange.setEnd(a,0);bRange.setStart(b,0);bRange.setEnd(b,0);return aRange.compareBoundaryPoints(Range.START_TO_END,bRange);}:null;root=null;for(feature in features){this[feature]=features[feature];}};var reSimpleSelector=/^([#.]?)((?:[\w-]+|\*))$/,reEmptyAttribute=/\[.+[*$^]=(?:""|'')?\]/,qsaFailExpCache={};local.search=function(context,expression,append,first){var found=this.found=(first)?null:(append||[]);if(!context)return found;else if(context.navigator)context=context.document;else if(!context.nodeType)return found;var parsed,i,uniques=this.uniques={},hasOthers=!!(append&&append.length),contextIsDocument=(context.nodeType==9);if(this.document!==(contextIsDocument?context:context.ownerDocument))this.setDocument(context);if(hasOthers)for(i=found.length;i--;)uniques[this.getUID(found[i])]=true;if(typeof expression=='string'){var simpleSelector=expression.match(reSimpleSelector);simpleSelectors:if(simpleSelector){var symbol=simpleSelector[1],name=simpleSelector[2],node,nodes;if(!symbol){if(name=='*'&&this.brokenStarGEBTN)break simpleSelectors;nodes=context.getElementsByTagName(name);if(first)return nodes[0]||null;for(i=0;node=nodes[i++];){if(!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}}else if(symbol=='#'){if(!this.isHTMLDocument||!contextIsDocument)break simpleSelectors;node=context.getElementById(name);if(!node)return found;if(this.idGetsName&&node.getAttributeNode('id').nodeValue!=name)break simpleSelectors;if(first)return node||null;if(!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}else if(symbol=='.'){if(!this.isHTMLDocument||((!context.getElementsByClassName||this.brokenGEBCN)&&context.querySelectorAll))break simpleSelectors;if(context.getElementsByClassName&&!this.brokenGEBCN){nodes=context.getElementsByClassName(name);if(first)return nodes[0]||null;for(i=0;node=nodes[i++];){if(!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}}else{var matchClass=new RegExp('(^|\\s)'+Slick.escapeRegExp(name)+'(\\s|$)');nodes=context.getElementsByTagName('*');for(i=0;node=nodes[i++];){className=node.className;if(!(className&&matchClass.test(className)))continue;if(first)return node;if(!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}}}
if(hasOthers)this.sort(found);return(first)?null:found;}
querySelector:if(context.querySelectorAll){if(!this.isHTMLDocument||qsaFailExpCache[expression]||this.brokenMixedCaseQSA||(this.brokenCheckedQSA&&expression.indexOf(':checked')>-1)||(this.brokenEmptyAttributeQSA&&reEmptyAttribute.test(expression))||(!contextIsDocument&&expression.indexOf(',')>-1)||Slick.disableQSA)break querySelector;var _expression=expression,_context=context;if(!contextIsDocument){var currentId=_context.getAttribute('id'),slickid='slickid__';_context.setAttribute('id',slickid);_expression='#'+slickid+' '+_expression;context=_context.parentNode;}
try{if(first)return context.querySelector(_expression)||null;else nodes=context.querySelectorAll(_expression);}catch(e){qsaFailExpCache[expression]=1;break querySelector;}finally{if(!contextIsDocument){if(currentId)_context.setAttribute('id',currentId);else _context.removeAttribute('id');context=_context;}}
if(this.starSelectsClosedQSA)for(i=0;node=nodes[i++];){if(node.nodeName>'@'&&!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}else for(i=0;node=nodes[i++];){if(!(hasOthers&&uniques[this.getUID(node)]))found.push(node);}
if(hasOthers)this.sort(found);return found;}
parsed=this.Slick.parse(expression);if(!parsed.length)return found;}else if(expression==null){return found;}else if(expression.Slick){parsed=expression;}else if(this.contains(context.documentElement||context,expression)){(found)?found.push(expression):found=expression;return found;}else{return found;}
this.posNTH={};this.posNTHLast={};this.posNTHType={};this.posNTHTypeLast={};this.push=(!hasOthers&&(first||(parsed.length==1&&parsed.expressions[0].length==1)))?this.pushArray:this.pushUID;if(found==null)found=[];var j,m,n;var combinator,tag,id,classList,classes,attributes,pseudos;var currentItems,currentExpression,currentBit,lastBit,expressions=parsed.expressions;search:for(i=0;(currentExpression=expressions[i]);i++)for(j=0;(currentBit=currentExpression[j]);j++){combinator='combinator:'+currentBit.combinator;if(!this[combinator])continue search;tag=(this.isXMLDocument)?currentBit.tag:currentBit.tag.toUpperCase();id=currentBit.id;classList=currentBit.classList;classes=currentBit.classes;attributes=currentBit.attributes;pseudos=currentBit.pseudos;lastBit=(j===(currentExpression.length-1));this.bitUniques={};if(lastBit){this.uniques=uniques;this.found=found;}else{this.uniques={};this.found=[];}
if(j===0){this[combinator](context,tag,id,classes,attributes,pseudos,classList);if(first&&lastBit&&found.length)break search;}else{if(first&&lastBit)for(m=0,n=currentItems.length;m<n;m++){this[combinator](currentItems[m],tag,id,classes,attributes,pseudos,classList);if(found.length)break search;}else for(m=0,n=currentItems.length;m<n;m++)this[combinator](currentItems[m],tag,id,classes,attributes,pseudos,classList);}
currentItems=this.found;}
if(hasOthers||(parsed.expressions.length>1))this.sort(found);return(first)?(found[0]||null):found;};local.uidx=1;local.uidk='slick-uniqueid';local.getUIDXML=function(node){var uid=node.getAttribute(this.uidk);if(!uid){uid=this.uidx++;node.setAttribute(this.uidk,uid);}
return uid;};local.getUIDHTML=function(node){return node.uniqueNumber||(node.uniqueNumber=this.uidx++);};local.sort=function(results){if(!this.documentSorter)return results;results.sort(this.documentSorter);return results;};local.cacheNTH={};local.matchNTH=/^([+-]?\d*)?([a-z]+)?([+-]\d+)?$/;local.parseNTHArgument=function(argument){var parsed=argument.match(this.matchNTH);if(!parsed)return false;var special=parsed[2]||false;var a=parsed[1]||1;if(a=='-')a=-1;var b=+parsed[3]||0;parsed=(special=='n')?{a:a,b:b}:(special=='odd')?{a:2,b:1}:(special=='even')?{a:2,b:0}:{a:0,b:a};return(this.cacheNTH[argument]=parsed);};local.createNTHPseudo=function(child,sibling,positions,ofType){return function(node,argument){var uid=this.getUID(node);if(!this[positions][uid]){var parent=node.parentNode;if(!parent)return false;var el=parent[child],count=1;if(ofType){var nodeName=node.nodeName;do{if(el.nodeName!=nodeName)continue;this[positions][this.getUID(el)]=count++;}while((el=el[sibling]));}else{do{if(el.nodeType!=1)continue;this[positions][this.getUID(el)]=count++;}while((el=el[sibling]));}}
argument=argument||'n';var parsed=this.cacheNTH[argument]||this.parseNTHArgument(argument);if(!parsed)return false;var a=parsed.a,b=parsed.b,pos=this[positions][uid];if(a==0)return b==pos;if(a>0){if(pos<b)return false;}else{if(b<pos)return false;}
return((pos-b)%a)==0;};};local.pushArray=function(node,tag,id,classes,attributes,pseudos){if(this.matchSelector(node,tag,id,classes,attributes,pseudos))this.found.push(node);};local.pushUID=function(node,tag,id,classes,attributes,pseudos){var uid=this.getUID(node);if(!this.uniques[uid]&&this.matchSelector(node,tag,id,classes,attributes,pseudos)){this.uniques[uid]=true;this.found.push(node);}};local.matchNode=function(node,selector){if(this.isHTMLDocument&&this.nativeMatchesSelector){try{return this.nativeMatchesSelector.call(node,selector.replace(/\[([^=]+)=\s*([^'"\]]+?)\s*\]/g,'[$1="$2"]'));}catch(matchError){}}
var parsed=this.Slick.parse(selector);if(!parsed)return true;var expressions=parsed.expressions,simpleExpCounter=0,i;for(i=0;(currentExpression=expressions[i]);i++){if(currentExpression.length==1){var exp=currentExpression[0];if(this.matchSelector(node,(this.isXMLDocument)?exp.tag:exp.tag.toUpperCase(),exp.id,exp.classes,exp.attributes,exp.pseudos))return true;simpleExpCounter++;}}
if(simpleExpCounter==parsed.length)return false;var nodes=this.search(this.document,parsed),item;for(i=0;item=nodes[i++];){if(item===node)return true;}
return false;};local.matchPseudo=function(node,name,argument){var pseudoName='pseudo:'+name;if(this[pseudoName])return this[pseudoName](node,argument);var attribute=this.getAttribute(node,name);return(argument)?argument==attribute:!!attribute;};local.matchSelector=function(node,tag,id,classes,attributes,pseudos){if(tag){var nodeName=(this.isXMLDocument)?node.nodeName:node.nodeName.toUpperCase();if(tag=='*'){if(nodeName<'@')return false;}else{if(nodeName!=tag)return false;}}
if(id&&node.getAttribute('id')!=id)return false;var i,part,cls;if(classes)for(i=classes.length;i--;){cls=node.getAttribute('class')||node.className;if(!(cls&&classes[i].regexp.test(cls)))return false;}
if(attributes)for(i=attributes.length;i--;){part=attributes[i];if(part.operator?!part.test(this.getAttribute(node,part.key)):!this.hasAttribute(node,part.key))return false;}
if(pseudos)for(i=pseudos.length;i--;){part=pseudos[i];if(!this.matchPseudo(node,part.key,part.value))return false;}
return true;};var combinators={' ':function(node,tag,id,classes,attributes,pseudos,classList){var i,item,children;if(this.isHTMLDocument){getById:if(id){item=this.document.getElementById(id);if((!item&&node.all)||(this.idGetsName&&item&&item.getAttributeNode('id').nodeValue!=id)){children=node.all[id];if(!children)return;if(!children[0])children=[children];for(i=0;item=children[i++];){var idNode=item.getAttributeNode('id');if(idNode&&idNode.nodeValue==id){this.push(item,tag,null,classes,attributes,pseudos);break;}}
return;}
if(!item){if(this.contains(this.root,node))return;else break getById;}else if(this.document!==node&&!this.contains(node,item))return;this.push(item,tag,null,classes,attributes,pseudos);return;}
getByClass:if(classes&&node.getElementsByClassName&&!this.brokenGEBCN){children=node.getElementsByClassName(classList.join(' '));if(!(children&&children.length))break getByClass;for(i=0;item=children[i++];)this.push(item,tag,id,null,attributes,pseudos);return;}}
getByTag:{children=node.getElementsByTagName(tag);if(!(children&&children.length))break getByTag;if(!this.brokenStarGEBTN)tag=null;for(i=0;item=children[i++];)this.push(item,tag,id,classes,attributes,pseudos);}},'>':function(node,tag,id,classes,attributes,pseudos){if((node=node.firstChild))do{if(node.nodeType==1)this.push(node,tag,id,classes,attributes,pseudos);}while((node=node.nextSibling));},'+':function(node,tag,id,classes,attributes,pseudos){while((node=node.nextSibling))if(node.nodeType==1){this.push(node,tag,id,classes,attributes,pseudos);break;}},'^':function(node,tag,id,classes,attributes,pseudos){node=node.firstChild;if(node){if(node.nodeType==1)this.push(node,tag,id,classes,attributes,pseudos);else this['combinator:+'](node,tag,id,classes,attributes,pseudos);}},'~':function(node,tag,id,classes,attributes,pseudos){while((node=node.nextSibling)){if(node.nodeType!=1)continue;var uid=this.getUID(node);if(this.bitUniques[uid])break;this.bitUniques[uid]=true;this.push(node,tag,id,classes,attributes,pseudos);}},'++':function(node,tag,id,classes,attributes,pseudos){this['combinator:+'](node,tag,id,classes,attributes,pseudos);this['combinator:!+'](node,tag,id,classes,attributes,pseudos);},'~~':function(node,tag,id,classes,attributes,pseudos){this['combinator:~'](node,tag,id,classes,attributes,pseudos);this['combinator:!~'](node,tag,id,classes,attributes,pseudos);},'!':function(node,tag,id,classes,attributes,pseudos){while((node=node.parentNode))if(node!==this.document)this.push(node,tag,id,classes,attributes,pseudos);},'!>':function(node,tag,id,classes,attributes,pseudos){node=node.parentNode;if(node!==this.document)this.push(node,tag,id,classes,attributes,pseudos);},'!+':function(node,tag,id,classes,attributes,pseudos){while((node=node.previousSibling))if(node.nodeType==1){this.push(node,tag,id,classes,attributes,pseudos);break;}},'!^':function(node,tag,id,classes,attributes,pseudos){node=node.lastChild;if(node){if(node.nodeType==1)this.push(node,tag,id,classes,attributes,pseudos);else this['combinator:!+'](node,tag,id,classes,attributes,pseudos);}},'!~':function(node,tag,id,classes,attributes,pseudos){while((node=node.previousSibling)){if(node.nodeType!=1)continue;var uid=this.getUID(node);if(this.bitUniques[uid])break;this.bitUniques[uid]=true;this.push(node,tag,id,classes,attributes,pseudos);}}};for(var c in combinators)local['combinator:'+c]=combinators[c];var pseudos={'empty':function(node){var child=node.firstChild;return!(child&&child.nodeType==1)&&!(node.innerText||node.textContent||'').length;},'not':function(node,expression){return!this.matchNode(node,expression);},'contains':function(node,text){return(node.innerText||node.textContent||'').indexOf(text)>-1;},'first-child':function(node){while((node=node.previousSibling))if(node.nodeType==1)return false;return true;},'last-child':function(node){while((node=node.nextSibling))if(node.nodeType==1)return false;return true;},'only-child':function(node){var prev=node;while((prev=prev.previousSibling))if(prev.nodeType==1)return false;var next=node;while((next=next.nextSibling))if(next.nodeType==1)return false;return true;},'nth-child':local.createNTHPseudo('firstChild','nextSibling','posNTH'),'nth-last-child':local.createNTHPseudo('lastChild','previousSibling','posNTHLast'),'nth-of-type':local.createNTHPseudo('firstChild','nextSibling','posNTHType',true),'nth-last-of-type':local.createNTHPseudo('lastChild','previousSibling','posNTHTypeLast',true),'index':function(node,index){return this['pseudo:nth-child'](node,''+index+1);},'even':function(node){return this['pseudo:nth-child'](node,'2n');},'odd':function(node){return this['pseudo:nth-child'](node,'2n+1');},'first-of-type':function(node){var nodeName=node.nodeName;while((node=node.previousSibling))if(node.nodeName==nodeName)return false;return true;},'last-of-type':function(node){var nodeName=node.nodeName;while((node=node.nextSibling))if(node.nodeName==nodeName)return false;return true;},'only-of-type':function(node){var prev=node,nodeName=node.nodeName;while((prev=prev.previousSibling))if(prev.nodeName==nodeName)return false;var next=node;while((next=next.nextSibling))if(next.nodeName==nodeName)return false;return true;},'enabled':function(node){return!node.disabled;},'disabled':function(node){return node.disabled;},'checked':function(node){return node.checked||node.selected;},'focus':function(node){return this.isHTMLDocument&&this.document.activeElement===node&&(node.href||node.type||this.hasAttribute(node,'tabindex'));},'root':function(node){return(node===this.root);},'selected':function(node){return node.selected;}};for(var p in pseudos)local['pseudo:'+p]=pseudos[p];var attributeGetters=local.attributeGetters={'class':function(){return this.getAttribute('class')||this.className;},'for':function(){return('htmlFor'in this)?this.htmlFor:this.getAttribute('for');},'href':function(){return('href'in this)?this.getAttribute('href',2):this.getAttribute('href');},'style':function(){return(this.style)?this.style.cssText:this.getAttribute('style');},'tabindex':function(){var attributeNode=this.getAttributeNode('tabindex');return(attributeNode&&attributeNode.specified)?attributeNode.nodeValue:null;},'type':function(){return this.getAttribute('type');},'maxlength':function(){var attributeNode=this.getAttributeNode('maxLength');return(attributeNode&&attributeNode.specified)?attributeNode.nodeValue:null;}};attributeGetters.MAXLENGTH=attributeGetters.maxLength=attributeGetters.maxlength;var Slick=local.Slick=(this.Slick||{});Slick.version='1.1.6';Slick.search=function(context,expression,append){return local.search(context,expression,append);};Slick.find=function(context,expression){return local.search(context,expression,null,true);};Slick.contains=function(container,node){local.setDocument(container);return local.contains(container,node);};Slick.getAttribute=function(node,name){local.setDocument(node);return local.getAttribute(node,name);};Slick.hasAttribute=function(node,name){local.setDocument(node);return local.hasAttribute(node,name);};Slick.match=function(node,selector){if(!(node&&selector))return false;if(!selector||selector===node)return true;local.setDocument(node);return local.matchNode(node,selector);};Slick.defineAttributeGetter=function(name,fn){local.attributeGetters[name]=fn;return this;};Slick.lookupAttributeGetter=function(name){return local.attributeGetters[name];};Slick.definePseudo=function(name,fn){local['pseudo:'+name]=function(node,argument){return fn.call(node,argument);};return this;};Slick.lookupPseudo=function(name){var pseudo=local['pseudo:'+name];if(pseudo)return function(argument){return pseudo.call(this,argument);};return null;};Slick.override=function(regexp,fn){local.override(regexp,fn);return this;};Slick.isXML=local.isXML;Slick.uidOf=function(node){return local.getUIDHTML(node);};if(!this.Slick)this.Slick=Slick;}).apply((typeof exports!='undefined')?exports:this);var Element=function(tag,props){var konstructor=Element.Constructors[tag];if(konstructor)return konstructor(props);if(typeof tag!='string')return document.id(tag).set(props);if(!props)props={};if(!(/^[\w-]+$/).test(tag)){var parsed=Slick.parse(tag).expressions[0][0];tag=(parsed.tag=='*')?'div':parsed.tag;if(parsed.id&&props.id==null)props.id=parsed.id;var attributes=parsed.attributes;if(attributes)for(var attr,i=0,l=attributes.length;i<l;i++){attr=attributes[i];if(props[attr.key]!=null)continue;if(attr.value!=null&&attr.operator=='=')props[attr.key]=attr.value;else if(!attr.value&&!attr.operator)props[attr.key]=true;}
if(parsed.classList&&props['class']==null)props['class']=parsed.classList.join(' ');}
return document.newElement(tag,props);};if(Browser.Element)Element.prototype=Browser.Element.prototype;new Type('Element',Element).mirror(function(name){if(Array.prototype[name])return;var obj={};obj[name]=function(){var results=[],args=arguments,elements=true;for(var i=0,l=this.length;i<l;i++){var element=this[i],result=results[i]=element[name].apply(element,args);elements=(elements&&typeOf(result)=='element');}
return(elements)?new Elements(results):results;};Elements.implement(obj);});if(!Browser.Element){Element.parent=Object;Element.Prototype={'$family':Function.from('element').hide()};Element.mirror(function(name,method){Element.Prototype[name]=method;});}
Element.Constructors={};var IFrame=new Type('IFrame',function(){var params=Array.link(arguments,{properties:Type.isObject,iframe:function(obj){return(obj!=null);}});var props=params.properties||{},iframe;if(params.iframe)iframe=document.id(params.iframe);var onload=props.onload||function(){};delete props.onload;props.id=props.name=[props.id,props.name,iframe?(iframe.id||iframe.name):'IFrame_'+String.uniqueID()].pick();iframe=new Element(iframe||'iframe',props);var onLoad=function(){onload.call(iframe.contentWindow);};if(window.frames[props.id])onLoad();else iframe.addListener('load',onLoad);return iframe;});var Elements=this.Elements=function(nodes){if(nodes&&nodes.length){var uniques={},node;for(var i=0;node=nodes[i++];){var uid=Slick.uidOf(node);if(!uniques[uid]){uniques[uid]=true;this.push(node);}}}};Elements.prototype={length:0};Elements.parent=Array;new Type('Elements',Elements).implement({filter:function(filter,bind){if(!filter)return this;return new Elements(Array.filter(this,(typeOf(filter)=='string')?function(item){return item.match(filter);}:filter,bind));}.protect(),push:function(){var length=this.length;for(var i=0,l=arguments.length;i<l;i++){var item=document.id(arguments[i]);if(item)this[length++]=item;}
return(this.length=length);}.protect(),unshift:function(){var items=[];for(var i=0,l=arguments.length;i<l;i++){var item=document.id(arguments[i]);if(item)items.push(item);}
return Array.prototype.unshift.apply(this,items);}.protect(),concat:function(){var newElements=new Elements(this);for(var i=0,l=arguments.length;i<l;i++){var item=arguments[i];if(Type.isEnumerable(item))newElements.append(item);else newElements.push(item);}
return newElements;}.protect(),append:function(collection){for(var i=0,l=collection.length;i<l;i++)this.push(collection[i]);return this;}.protect(),empty:function(){while(this.length)delete this[--this.length];return this;}.protect()});(function(){var splice=Array.prototype.splice,object={'0':0,'1':1,length:2};splice.call(object,1,1);if(object[1]==1)Elements.implement('splice',function(){var length=this.length;var result=splice.apply(this,arguments);while(length>=this.length)delete this[length--];return result;}.protect());Elements.implement(Array.prototype);Array.mirror(Elements);var createElementAcceptsHTML;try{var x=document.createElement('<input name=x>');createElementAcceptsHTML=(x.name=='x');}catch(e){}
var escapeQuotes=function(html){return(''+html).replace(/&/g,'&amp;').replace(/"/g,'&quot;');};Document.implement({newElement:function(tag,props){if(props&&props.checked!=null)props.defaultChecked=props.checked;if(createElementAcceptsHTML&&props){tag='<'+tag;if(props.name)tag+=' name="'+escapeQuotes(props.name)+'"';if(props.type)tag+=' type="'+escapeQuotes(props.type)+'"';tag+='>';delete props.name;delete props.type;}
return this.id(this.createElement(tag)).set(props);}});})();Document.implement({newTextNode:function(text){return this.createTextNode(text);},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var types={string:function(id,nocash,doc){id=Slick.find(doc,'#'+id.replace(/(\W)/g,'\\$1'));return(id)?types.element(id,nocash):null;},element:function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^(?:object|embed)$/i).test(el.tagName)){Object.append(el,Element.Prototype);}
return el;},object:function(obj,nocash,doc){if(obj.toElement)return types.element(obj.toElement(doc),nocash);return null;}};types.textnode=types.whitespace=types.window=types.document=function(zero){return zero;};return function(el,nocash,doc){if(el&&el.$family&&el.uid)return el;var type=typeOf(el);return(types[type])?types[type](el,nocash,doc||document):null;};})()});if(window.$==null)Window.implement('$',function(el,nc){return document.id(el,nc,this.document);});Window.implement({getDocument:function(){return this.document;},getWindow:function(){return this;}});[Document,Element].invoke('implement',{getElements:function(expression){return Slick.search(this,expression,new Elements);},getElement:function(expression){return document.id(Slick.find(this,expression));}});var contains={contains:function(element){return Slick.contains(this,element);}};if(!document.contains)Document.implement(contains);if(!document.createElement('div').contains)Element.implement(contains);var injectCombinator=function(expression,combinator){if(!expression)return combinator;expression=Object.clone(Slick.parse(expression));var expressions=expression.expressions;for(var i=expressions.length;i--;)
expressions[i][0].combinator=combinator;return expression;};Object.forEach({getNext:'~',getPrevious:'!~',getParent:'!'},function(combinator,method){Element.implement(method,function(expression){return this.getElement(injectCombinator(expression,combinator));});});Object.forEach({getAllNext:'~',getAllPrevious:'!~',getSiblings:'~~',getChildren:'>',getParents:'!'},function(combinator,method){Element.implement(method,function(expression){return this.getElements(injectCombinator(expression,combinator));});});Element.implement({getFirst:function(expression){return document.id(Slick.search(this,injectCombinator(expression,'>'))[0]);},getLast:function(expression){return document.id(Slick.search(this,injectCombinator(expression,'>')).getLast());},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(id){return document.id(Slick.find(this,'#'+(''+id).replace(/(\W)/g,'\\$1')));},match:function(expression){return!expression||Slick.match(this,expression);}});if(window.$$==null)Window.implement('$$',function(selector){if(arguments.length==1){if(typeof selector=='string')return Slick.search(this.document,selector,new Elements);else if(Type.isEnumerable(selector))return new Elements(selector);}
return new Elements(arguments);});(function(){var inserters={before:function(context,element){var parent=element.parentNode;if(parent)parent.insertBefore(context,element);},after:function(context,element){var parent=element.parentNode;if(parent)parent.insertBefore(context,element.nextSibling);},bottom:function(context,element){element.appendChild(context);},top:function(context,element){element.insertBefore(context,element.firstChild);}};inserters.inside=inserters.bottom;var propertyGetters={},propertySetters={};var properties={};Array.forEach(['type','value','defaultValue','accessKey','cellPadding','cellSpacing','colSpan','frameBorder','readOnly','rowSpan','tabIndex','useMap'],function(property){properties[property.toLowerCase()]=property;});Object.append(properties,{'html':'innerHTML','text':(function(){var temp=document.createElement('div');return(temp.textContent==null)?'innerText':'textContent';})()});Object.forEach(properties,function(real,key){propertySetters[key]=function(node,value){node[real]=value;};propertyGetters[key]=function(node){return node[real];};});var bools=['compact','nowrap','ismap','declare','noshade','checked','disabled','readOnly','multiple','selected','noresize','defer','defaultChecked','autofocus','controls','autoplay','loop'];var booleans={};Array.forEach(bools,function(bool){var lower=bool.toLowerCase();booleans[lower]=bool;propertySetters[lower]=function(node,value){node[bool]=!!value;};propertyGetters[lower]=function(node){return!!node[bool];};});Object.append(propertySetters,{'class':function(node,value){('className'in node)?node.className=value:node.setAttribute('class',value);},'for':function(node,value){('htmlFor'in node)?node.htmlFor=value:node.setAttribute('for',value);},'style':function(node,value){(node.style)?node.style.cssText=value:node.setAttribute('style',value);}});Element.implement({setProperty:function(name,value){var lower=name.toLowerCase();if(value==null){if(!booleans[lower]){this.removeAttribute(name);return this;}
value=false;}
var setter=propertySetters[lower];if(setter)setter(this,value);else this.setAttribute(name,value);return this;},setProperties:function(attributes){for(var attribute in attributes)this.setProperty(attribute,attributes[attribute]);return this;},getProperty:function(name){var getter=propertyGetters[name.toLowerCase()];if(getter)return getter(this);var result=Slick.getAttribute(this,name);return(!result&&!Slick.hasAttribute(this,name))?null:result;},getProperties:function(){var args=Array.from(arguments);return args.map(this.getProperty,this).associate(args);},removeProperty:function(name){return this.setProperty(name,null);},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},set:function(prop,value){var property=Element.Properties[prop];(property&&property.set)?property.set.call(this,value):this.setProperty(prop,value);}.overloadSetter(),get:function(prop){var property=Element.Properties[prop];return(property&&property.get)?property.get.apply(this):this.getProperty(prop);}.overloadGetter(),erase:function(prop){var property=Element.Properties[prop];(property&&property.erase)?property.erase.apply(this):this.removeProperty(prop);return this;},hasClass:function(className){return this.className.clean().contains(className,' ');},addClass:function(className){if(!this.hasClass(className))this.className=(this.className+' '+className).clean();return this;},removeClass:function(className){this.className=this.className.replace(new RegExp('(^|\\s)'+className+'(?:\\s|$)'),'$1');return this;},toggleClass:function(className,force){if(force==null)force=!this.hasClass(className);return(force)?this.addClass(className):this.removeClass(className);},adopt:function(){var parent=this,fragment,elements=Array.flatten(arguments),length=elements.length;if(length>1)parent=fragment=document.createDocumentFragment();for(var i=0;i<length;i++){var element=document.id(elements[i],true);if(element)parent.appendChild(element);}
if(fragment)this.appendChild(fragment);return this;},appendText:function(text,where){return this.grab(this.getDocument().newTextNode(text),where);},grab:function(el,where){inserters[where||'bottom'](document.id(el,true),this);return this;},inject:function(el,where){inserters[where||'bottom'](this,document.id(el,true));return this;},replaces:function(el){el=document.id(el,true);el.parentNode.replaceChild(this,el);return this;},wraps:function(el,where){el=document.id(el,true);return this.replaces(el).grab(el,where);},getSelected:function(){this.selectedIndex;return new Elements(Array.from(this.options).filter(function(option){return option.selected;}));},toQueryString:function(){var queryString=[];this.getElements('input, select, textarea').each(function(el){var type=el.type;if(!el.name||el.disabled||type=='submit'||type=='reset'||type=='file'||type=='image')return;var value=(el.get('tag')=='select')?el.getSelected().map(function(opt){return document.id(opt).get('value');}):((type=='radio'||type=='checkbox')&&!el.checked)?null:el.get('value');Array.from(value).each(function(val){if(typeof val!='undefined')queryString.push(encodeURIComponent(el.name)+'='+encodeURIComponent(val));});});return queryString.join('&');}});var collected={},storage={};var get=function(uid){return(storage[uid]||(storage[uid]={}));};var clean=function(item){var uid=item.uid;if(item.removeEvents)item.removeEvents();if(item.clearAttributes)item.clearAttributes();if(uid!=null){delete collected[uid];delete storage[uid];}
return item;};var formProps={input:'checked',option:'selected',textarea:'value'};Element.implement({destroy:function(){var children=clean(this).getElementsByTagName('*');Array.each(children,clean);Element.dispose(this);return null;},empty:function(){Array.from(this.childNodes).each(Element.dispose);return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},clone:function(contents,keepid){contents=contents!==false;var clone=this.cloneNode(contents),ce=[clone],te=[this],i;if(contents){ce.append(Array.from(clone.getElementsByTagName('*')));te.append(Array.from(this.getElementsByTagName('*')));}
for(i=ce.length;i--;){var node=ce[i],element=te[i];if(!keepid)node.removeAttribute('id');if(node.clearAttributes){node.clearAttributes();node.mergeAttributes(element);node.removeAttribute('uid');if(node.options){var no=node.options,eo=element.options;for(var j=no.length;j--;)no[j].selected=eo[j].selected;}}
var prop=formProps[element.tagName.toLowerCase()];if(prop&&element[prop])node[prop]=element[prop];}
if(Browser.ie){var co=clone.getElementsByTagName('object'),to=this.getElementsByTagName('object');for(i=co.length;i--;)co[i].outerHTML=to[i].outerHTML;}
return document.id(clone);}});[Element,Window,Document].invoke('implement',{addListener:function(type,fn){if(type=='unload'){var old=fn,self=this;fn=function(){self.removeListener('unload',fn);old();};}else{collected[$uid(this)]=this;}
if(this.addEventListener)this.addEventListener(type,fn,!!arguments[2]);else this.attachEvent('on'+type,fn);return this;},removeListener:function(type,fn){if(this.removeEventListener)this.removeEventListener(type,fn,!!arguments[2]);else this.detachEvent('on'+type,fn);return this;},retrieve:function(property,dflt){var storage=get($uid(this)),prop=storage[property];if(dflt!=null&&prop==null)prop=storage[property]=dflt;return prop!=null?prop:null;},store:function(property,value){var storage=get($uid(this));storage[property]=value;return this;},eliminate:function(property){var storage=get($uid(this));delete storage[property];return this;}});if(window.attachEvent&&!window.addEventListener)window.addListener('unload',function(){Object.each(collected,clean);if(window.CollectGarbage)CollectGarbage();});Element.Properties={};Element.Properties.style={set:function(style){this.style.cssText=style;},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 tableTest=Function.attempt(function(){var table=document.createElement('table');table.innerHTML='<tr><td></td></tr>';});var wrapper=document.createElement('div');var translations={table:[1,'<table>','</table>'],select:[1,'<select>','</select>'],tbody:[2,'<table><tbody>','</tbody></table>'],tr:[3,'<table><tbody><tr>','</tr></tbody></table>']};translations.thead=translations.tfoot=translations.tbody;wrapper.innerHTML='<nav></nav>';var HTML5Test=wrapper.childNodes.length==1;if(!HTML5Test){var tags='abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video'.split(' '),fragment=document.createDocumentFragment(),l=tags.length;while(l--)fragment.createElement(tags[l]);fragment.appendChild(wrapper);}
var html={set:function(html){if(typeOf(html)=='array')html=html.join('');var wrap=(!tableTest&&translations[this.get('tag')]);if(!wrap&&!HTML5Test)wrap=[0,'',''];if(wrap){var first=wrapper;first.innerHTML=wrap[1]+html+wrap[2];for(var i=wrap[0];i--;)first=first.firstChild;this.empty().adopt(first.childNodes);}else{this.innerHTML=html;}}};html.erase=html.set;return html;})();var testForm=document.createElement('form');testForm.innerHTML='<select><option>s</option></select>';if(testForm.firstChild.value!='s')Element.Properties.value={set:function(value){var tag=this.get('tag');if(tag!='select')return this.setProperty('value',value);var options=this.getElements('option');for(var i=0;i<options.length;i++){var option=options[i],attr=option.getAttributeNode('value'),optionValue=(attr&&attr.specified)?option.value:option.get('text');if(optionValue==value)return option.selected=true;}},get:function(){var option=this,tag=option.get('tag');if(tag!='select'&&tag!='option')return this.getProperty('value');if(tag=='select'&&!(option=option.getSelected()[0]))return'';var attr=option.getAttributeNode('value');return(attr&&attr.specified)?option.value:option.get('text');}};})();(function(){var Class=this.Class=new Type('Class',function(params){if(instanceOf(params,Function))params={initialize:params};var newClass=function(){reset(this);if(newClass.$prototyping)return this;this.$caller=null;var value=(this.initialize)?this.initialize.apply(this,arguments):this;this.$caller=this.caller=null;return value;}.extend(this).implement(params);newClass.$constructor=Class;newClass.prototype.$constructor=newClass;newClass.prototype.parent=parent;return newClass;});var parent=function(){if(!this.$caller)throw new Error('The method "parent" cannot be called.');var name=this.$caller.$name,parent=this.$caller.$owner.parent,previous=(parent)?parent.prototype[name]:null;if(!previous)throw new Error('The method "'+name+'" has no parent.');return previous.apply(this,arguments);};var reset=function(object){for(var key in object){var value=object[key];switch(typeOf(value)){case'object':var F=function(){};F.prototype=value;object[key]=reset(new F);break;case'array':object[key]=value.clone();break;}}
return object;};var wrap=function(self,key,method){if(method.$origin)method=method.$origin;var wrapper=function(){if(method.$protected&&this.$caller==null)throw new Error('The method "'+key+'" cannot be called.');var caller=this.caller,current=this.$caller;this.caller=current;this.$caller=wrapper;var result=method.apply(this,arguments);this.$caller=current;this.caller=caller;return result;}.extend({$owner:self,$origin:method,$name:key});return wrapper;};var implement=function(key,value,retain){if(Class.Mutators.hasOwnProperty(key)){value=Class.Mutators[key].call(this,value);if(value==null)return this;}
if(typeOf(value)=='function'){if(value.$hidden)return this;this.prototype[key]=(retain)?value:wrap(this,key,value);}else{Object.merge(this.prototype,key,value);}
return this;};var getInstance=function(klass){klass.$prototyping=true;var proto=new klass;delete klass.$prototyping;return proto;};Class.implement('implement',implement.overloadSetter());Class.Mutators={Extends:function(parent){this.parent=parent;this.prototype=getInstance(parent);},Implements:function(items){Array.from(items).each(function(item){var instance=new item;for(var key in instance)implement.call(this,key,instance[key],true);},this);}};})();(function(){this.Chain=new Class({$chain:[],chain:function(){this.$chain.append(Array.flatten(arguments));return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();return this;}});var removeOn=function(string){return string.replace(/^on([A-Z])/,function(full,first){return first.toLowerCase();});};this.Events=new Class({$events:{},addEvent:function(type,fn,internal){type=removeOn(type);this.$events[type]=(this.$events[type]||[]).include(fn);if(internal)fn.internal=true;return this;},addEvents:function(events){for(var type in events)this.addEvent(type,events[type]);return this;},fireEvent:function(type,args,delay){type=removeOn(type);var events=this.$events[type];if(!events)return this;args=Array.from(args);events.each(function(fn){if(delay)fn.delay(delay,this,args);else fn.apply(this,args);},this);return this;},removeEvent:function(type,fn){type=removeOn(type);var events=this.$events[type];if(events&&!fn.internal){var index=events.indexOf(fn);if(index!=-1)delete events[index];}
return this;},removeEvents:function(events){var type;if(typeOf(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this;}
if(events)events=removeOn(events);for(type in this.$events){if(events&&events!=type)continue;var fns=this.$events[type];for(var i=fns.length;i--;)if(i in fns){this.removeEvent(type,fns[i]);}}
return this;}});this.Options=new Class({setOptions:function(){var options=this.options=Object.merge.apply(null,[{},this.options].append(arguments));if(this.addEvent)for(var option in options){if(typeOf(options[option])!='function'||!(/^on[A-Z]/).test(option))continue;this.addEvent(option,options[option]);delete options[option];}
return this;}});})();(function(){var empty=function(){},progressSupport=('onprogress'in new Browser.Request);var Request=this.Request=new Class({Implements:[Chain,Events,Options],options:{url:'',data:'',headers:{'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*'},async:true,format:false,method:'post',link:'ignore',isSuccess:null,emulation:true,urlEncoded:true,encoding:'utf-8',evalScripts:false,evalResponse:false,timeout:0,noCache:false},initialize:function(options){this.xhr=new Browser.Request();this.setOptions(options);this.headers=this.options.headers;},onStateChange:function(){var xhr=this.xhr;if(xhr.readyState!=4||!this.running)return;this.running=false;this.status=0;Function.attempt(function(){var status=xhr.status;this.status=(status==1223)?204:status;}.bind(this));xhr.onreadystatechange=empty;if(progressSupport)xhr.onprogress=xhr.onloadstart=empty;clearTimeout(this.timer);this.response={text:this.xhr.responseText||'',xml:this.xhr.responseXML};if(this.options.isSuccess.call(this,this.status))
this.success(this.response.text,this.response.xml);else
this.failure();},isSuccess:function(){var status=this.status;return(status>=200&&status<300);},isRunning:function(){return!!this.running;},processScripts:function(text){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader('Content-type')))return Browser.exec(text);return text.stripScripts(this.options.evalScripts);},success:function(text,xml){this.onSuccess(this.processScripts(text),xml);},onSuccess:function(){this.fireEvent('complete',arguments).fireEvent('success',arguments).callChain();},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent('complete').fireEvent('failure',this.xhr);},loadstart:function(event){this.fireEvent('loadstart',[event,this.xhr]);},progress:function(event){this.fireEvent('progress',[event,this.xhr]);},timeout:function(){this.fireEvent('timeout',this.xhr);},setHeader:function(name,value){this.headers[name]=value;return this;},getHeader:function(name){return Function.attempt(function(){return this.xhr.getResponseHeader(name);}.bind(this));},check:function(){if(!this.running)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.pass(arguments,this));return false;}
return false;},send:function(options){if(!this.check(options))return this;this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.running=true;var type=typeOf(options);if(type=='string'||type=='element')options={data:options};var old=this.options;options=Object.append({data:old.data,url:old.url,method:old.method},options);var data=options.data,url=String(options.url),method=options.method.toLowerCase();switch(typeOf(data)){case'element':data=document.id(data).toQueryString();break;case'object':case'hash':data=Object.toQueryString(data);}
if(this.options.format){var format='format='+this.options.format;data=(data)?format+'&'+data:format;}
if(this.options.emulation&&!['get','post'].contains(method)){var _method='_method='+method;data=(data)?_method+'&'+data:_method;method='post';}
if(this.options.urlEncoded&&['post','put'].contains(method)){var encoding=(this.options.encoding)?'; charset='+this.options.encoding:'';this.headers['Content-type']='application/x-www-form-urlencoded'+encoding;}
if(!url)url=document.location.pathname;var trimPosition=url.lastIndexOf('/');if(trimPosition>-1&&(trimPosition=url.indexOf('#'))>-1)url=url.substr(0,trimPosition);if(this.options.noCache)
url+=(url.contains('?')?'&':'?')+String.uniqueID();if(data&&method=='get'){url+=(url.contains('?')?'&':'?')+data;data=null;}
var xhr=this.xhr;if(progressSupport){xhr.onloadstart=this.loadstart.bind(this);xhr.onprogress=this.progress.bind(this);}
xhr.open(method.toUpperCase(),url,this.options.async,this.options.user,this.options.password);if(this.options.user&&'withCredentials'in xhr)xhr.withCredentials=true;xhr.onreadystatechange=this.onStateChange.bind(this);Object.each(this.headers,function(value,key){try{xhr.setRequestHeader(key,value);}catch(e){this.fireEvent('exception',[key,value]);}},this);this.fireEvent('request');xhr.send(data);if(!this.options.async)this.onStateChange();if(this.options.timeout)this.timer=this.timeout.delay(this.options.timeout,this);return this;},cancel:function(){if(!this.running)return this;this.running=false;var xhr=this.xhr;xhr.abort();clearTimeout(this.timer);xhr.onreadystatechange=empty;if(progressSupport)xhr.onprogress=xhr.onloadstart=empty;this.xhr=new Browser.Request();this.fireEvent('cancel');return this;}});var methods={};['get','post','put','delete','GET','POST','PUT','DELETE'].each(function(method){methods[method]=function(data){var object={method:method};if(data!=null)object.data=data;return this.send(object);};});Request.implement(methods);Element.Properties.send={set:function(options){var send=this.get('send').cancel();send.setOptions(options);return this;},get:function(){var send=this.retrieve('send');if(!send){send=new Request({data:this,link:'cancel',method:this.get('method')||'post',url:this.get('action')});this.store('send',send);}
return send;}};Element.implement({send:function(url){var sender=this.get('send');sender.send({data:this,url:url||sender.options.url});return this;}});})();Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false,headers:{Accept:'text/html, application/xml, text/xml, */*'}},success:function(text){var options=this.options,response=this.response;response.html=text.stripScripts(function(script){response.javascript=script;});var match=response.html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);if(match)response.html=match[1];var temp=new Element('div').set('html',response.html);response.tree=temp.childNodes;response.elements=temp.getElements(options.filter||'*');if(options.filter)response.tree=response.elements;if(options.update){var update=document.id(options.update).empty();if(options.filter)update.adopt(response.elements);else update.set('html',response.html);}else if(options.append){var append=document.id(options.append);if(options.filter)response.elements.reverse().inject(append);else append.adopt(temp.getChildren());}
if(options.evalScripts)Browser.exec(response.javascript);this.onSuccess(response.tree,response.elements,response.html,response.javascript);}});Element.Properties.load={set:function(options){var load=this.get('load').cancel();load.setOptions(options);return this;},get:function(){var load=this.retrieve('load');if(!load){load=new Request.HTML({data:this,link:'cancel',update:this,method:'get'});this.store('load',load);}
return load;}};Element.implement({load:function(){this.get('load').send(Array.link(arguments,{data:Type.isObject,url:Type.isString}));return this;}});if(typeof JSON=='undefined')this.JSON={};(function(){var special={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};var escape=function(chr){return special[chr]||'\\u'+('0000'+chr.charCodeAt(0).toString(16)).slice(-4);};JSON.validate=function(string){string=string.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,'');return(/^[\],:{}\s]*$/).test(string);};JSON.encode=JSON.stringify?function(obj){return JSON.stringify(obj);}:function(obj){if(obj&&obj.toJSON)obj=obj.toJSON();switch(typeOf(obj)){case'string':return'"'+obj.replace(/[\x00-\x1f\\"]/g,escape)+'"';case'array':return'['+obj.map(JSON.encode).clean()+']';case'object':case'hash':var string=[];Object.each(obj,function(value,key){var json=JSON.encode(value);if(json)string.push(JSON.encode(key)+':'+json);});return'{'+string+'}';case'number':case'boolean':return''+obj;case'null':return'null';}
return null;};JSON.decode=function(string,secure){if(!string||typeOf(string)!='string')return null;if(secure||JSON.secure){if(JSON.parse)return JSON.parse(string);if(!JSON.validate(string))throw new Error('JSON could not decode the input; security is enabled and the value is not secure.');}
return eval('('+string+')');};})();Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(options){this.parent(options);Object.append(this.headers,{'Accept':'application/json','X-Request':'JSON'});},success:function(text){var json;try{json=this.response.json=JSON.decode(text,this.options.secure);}catch(error){this.fireEvent('error',[text,error]);return;}
if(json==null)this.onFailure();else this.onSuccess(json,text);}});(function(){var _keys={};var DOMEvent=this.DOMEvent=new Type('DOMEvent',function(event,win){if(!win)win=window;event=event||win.event;if(event.$extended)return event;this.event=event;this.$extended=true;this.shift=event.shiftKey;this.control=event.ctrlKey;this.alt=event.altKey;this.meta=event.metaKey;var type=this.type=event.type;var target=event.target||event.srcElement;while(target&&target.nodeType==3)target=target.parentNode;this.target=document.id(target);if(type.indexOf('key')==0){var code=this.code=(event.which||event.keyCode);this.key=_keys[code]||Object.keyOf(Event.Keys,code);if(type=='keydown'){if(code>111&&code<124)this.key='f'+(code-111);else if(code>95&&code<106)this.key=code-96;}
if(this.key==null)this.key=String.fromCharCode(code).toLowerCase();}else if(type=='click'||type=='dblclick'||type=='contextmenu'||type=='DOMMouseScroll'||type.indexOf('mouse')==0){var doc=win.document;doc=(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;this.page={x:(event.pageX!=null)?event.pageX:event.clientX+doc.scrollLeft,y:(event.pageY!=null)?event.pageY:event.clientY+doc.scrollTop};this.client={x:(event.pageX!=null)?event.pageX-win.pageXOffset:event.clientX,y:(event.pageY!=null)?event.pageY-win.pageYOffset:event.clientY};if(type=='DOMMouseScroll'||type=='mousewheel')
this.wheel=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;this.rightClick=(event.which==3||event.button==2);if(type=='mouseover'||type=='mouseout'){var related=event.relatedTarget||event[(type=='mouseover'?'from':'to')+'Element'];while(related&&related.nodeType==3)related=related.parentNode;this.relatedTarget=document.id(related);}}else if(type.indexOf('touch')==0||type.indexOf('gesture')==0){this.rotation=event.rotation;this.scale=event.scale;this.targetTouches=event.targetTouches;this.changedTouches=event.changedTouches;var touches=this.touches=event.touches;if(touches&&touches[0]){var touch=touches[0];this.page={x:touch.pageX,y:touch.pageY};this.client={x:touch.clientX,y:touch.clientY};}}
if(!this.client)this.client={};if(!this.page)this.page={};});DOMEvent.implement({stop:function(){return this.preventDefault().stopPropagation();},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;}});DOMEvent.defineKey=function(code,key){_keys[code]=key;return this;};DOMEvent.defineKeys=DOMEvent.defineKey.overloadSetter(true);DOMEvent.defineKeys({'38':'up','40':'down','37':'left','39':'right','27':'esc','32':'space','8':'backspace','9':'tab','46':'delete','13':'enter'});})();var Event=DOMEvent;Event.Keys={};(function(){var html=document.html;Element.Properties.styles={set:function(styles){this.setStyles(styles);}};var hasOpacity=(html.style.opacity!=null),hasFilter=(html.style.filter!=null),reAlpha=/alpha\(opacity=([\d.]+)\)/i;var setVisibility=function(element,opacity){element.store('$opacity',opacity);element.style.visibility=opacity>0?'visible':'hidden';};var setOpacity=(hasOpacity?function(element,opacity){element.style.opacity=opacity;}:(hasFilter?function(element,opacity){if(!element.currentStyle||!element.currentStyle.hasLayout)element.style.zoom=1;opacity=(opacity*100).limit(0,100).round();opacity=(opacity==100)?'':'alpha(opacity='+opacity+')';var filter=element.style.filter||element.getComputedStyle('filter')||'';element.style.filter=reAlpha.test(filter)?filter.replace(reAlpha,opacity):filter+opacity;}:setVisibility));var getOpacity=(hasOpacity?function(element){var opacity=element.style.opacity||element.getComputedStyle('opacity');return(opacity=='')?1:opacity.toFloat();}:(hasFilter?function(element){var filter=(element.style.filter||element.getComputedStyle('filter')),opacity;if(filter)opacity=filter.match(reAlpha);return(opacity==null||filter==null)?1:(opacity[1]/100);}:function(element){var opacity=element.retrieve('$opacity');if(opacity==null)opacity=(element.style.visibility=='hidden'?0:1);return opacity;}));var floatName=(html.style.cssFloat==null)?'styleFloat':'cssFloat';Element.implement({getComputedStyle:function(property){if(this.currentStyle)return this.currentStyle[property.camelCase()];var defaultView=Element.getDocument(this).defaultView,computed=defaultView?defaultView.getComputedStyle(this,null):null;return(computed)?computed.getPropertyValue((property==floatName)?'float':property.hyphenate()):null;},setStyle:function(property,value){if(property=='opacity'){setOpacity(this,parseFloat(value));return this;}
property=(property=='float'?floatName:property).camelCase();if(typeOf(value)!='string'){var map=(Element.Styles[property]||'@').split(' ');value=Array.from(value).map(function(val,i){if(!map[i])return'';return(typeOf(val)=='number')?map[i].replace('@',Math.round(val)):val;}).join(' ');}else if(value==String(Number(value))){value=Math.round(value);}
this.style[property]=value;return this;},getStyle:function(property){if(property=='opacity')return getOpacity(this);property=(property=='float'?floatName:property).camelCase();var result=this.style[property];if(!result||property=='zIndex'){result=[];for(var style in Element.ShortStyles){if(property!=style)continue;for(var s in Element.ShortStyles[style])result.push(this.getStyle(s));return result.join(' ');}
result=this.getComputedStyle(property);}
if(result){result=String(result);var color=result.match(/rgba?\([\d\s,]+\)/);if(color)result=result.replace(color[0],color[0].rgbToHex());}
if(Browser.opera||(Browser.ie&&isNaN(parseFloat(result)))){if((/^(height|width)$/).test(property)){var values=(property=='width')?['left','right']:['top','bottom'],size=0;values.each(function(value){size+=this.getStyle('border-'+value+'-width').toInt()+this.getStyle('padding-'+value).toInt();},this);return this['offset'+property.capitalize()]-size+'px';}
if(Browser.opera&&String(result).indexOf('px')!=-1)return result;if((/^border(.+)Width|margin|padding/).test(property))return'0px';}
return result;},setStyles:function(styles){for(var style in styles)this.setStyle(style,styles[style]);return this;},getStyles:function(){var result={};Array.flatten(arguments).each(function(key){result[key]=this.getStyle(key);},this);return result;}});Element.Styles={left:'@px',top:'@px',bottom:'@px',right:'@px',width:'@px',height:'@px',maxWidth:'@px',maxHeight:'@px',minWidth:'@px',minHeight:'@px',backgroundColor:'rgb(@, @, @)',backgroundPosition:'@px @px',color:'rgb(@, @, @)',fontSize:'@px',letterSpacing:'@px',lineHeight:'@px',clip:'rect(@px @px @px @px)',margin:'@px @px @px @px',padding:'@px @px @px @px',border:'@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',borderWidth:'@px @px @px @px',borderStyle:'@ @ @ @',borderColor:'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',zIndex:'@','zoom':'@',fontWeight:'@',textIndent:'@px',opacity:'@'};Element.implement({setOpacity:function(value){setOpacity(this,value);return this;},getOpacity:function(){return getOpacity(this);}});Element.Properties.opacity={set:function(opacity){setOpacity(this,opacity);setVisibility(this,opacity);},get:function(){return getOpacity(this);}};Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};['Top','Right','Bottom','Left'].each(function(direction){var Short=Element.ShortStyles;var All=Element.Styles;['margin','padding'].each(function(style){var sd=style+direction;Short[style][sd]=All[sd]='@px';});var bd='border'+direction;Short.border[bd]=All[bd]='@px @ rgb(@, @, @)';var bdw=bd+'Width',bds=bd+'Style',bdc=bd+'Color';Short[bd]={};Short.borderWidth[bdw]=Short[bd][bdw]=All[bdw]='@px';Short.borderStyle[bds]=Short[bd][bds]=All[bds]='@';Short.borderColor[bdc]=Short[bd][bdc]=All[bdc]='rgb(@, @, @)';});})();(function(){var element=document.createElement('div'),child=document.createElement('div');element.style.height='0';element.appendChild(child);var brokenOffsetParent=(child.offsetParent===element);element=child=null;var isOffset=function(el){return styleString(el,'position')!='static'||isBody(el);};var isOffsetStatic=function(el){return isOffset(el)||(/^(?:table|td|th)$/i).test(el.tagName);};Element.implement({scrollTo:function(x,y){if(isBody(this)){this.getWindow().scrollTo(x,y);}else{this.scrollLeft=x;this.scrollTop=y;}
return this;},getSize:function(){if(isBody(this))return this.getWindow().getSize();return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(isBody(this))return this.getWindow().getScrollSize();return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(isBody(this))return this.getWindow().getScroll();return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var element=this.parentNode,position={x:0,y:0};while(element&&!isBody(element)){position.x+=element.scrollLeft;position.y+=element.scrollTop;element=element.parentNode;}
return position;},getOffsetParent:brokenOffsetParent?function(){var element=this;if(isBody(element)||styleString(element,'position')=='fixed')return null;var isOffsetCheck=(styleString(element,'position')=='static')?isOffsetStatic:isOffset;while((element=element.parentNode)){if(isOffsetCheck(element))return element;}
return null;}:function(){var element=this;if(isBody(element)||styleString(element,'position')=='fixed')return null;try{return element.offsetParent;}catch(e){}
return null;},getOffsets:function(){if(this.getBoundingClientRect&&!Browser.Platform.ios){var bound=this.getBoundingClientRect(),html=document.id(this.getDocument().documentElement),htmlScroll=html.getScroll(),elemScrolls=this.getScrolls(),isFixed=(styleString(this,'position')=='fixed');return{x:bound.left.toInt()+elemScrolls.x+((isFixed)?0:htmlScroll.x)-html.clientLeft,y:bound.top.toInt()+elemScrolls.y+((isFixed)?0:htmlScroll.y)-html.clientTop};}
var element=this,position={x:0,y:0};if(isBody(this))return position;while(element&&!isBody(element)){position.x+=element.offsetLeft;position.y+=element.offsetTop;if(Browser.firefox){if(!borderBox(element)){position.x+=leftBorder(element);position.y+=topBorder(element);}
var parent=element.parentNode;if(parent&&styleString(parent,'overflow')!='visible'){position.x+=leftBorder(parent);position.y+=topBorder(parent);}}else if(element!=this&&Browser.safari){position.x+=leftBorder(element);position.y+=topBorder(element);}
element=element.offsetParent;}
if(Browser.firefox&&!borderBox(this)){position.x-=leftBorder(this);position.y-=topBorder(this);}
return position;},getPosition:function(relative){var offset=this.getOffsets(),scroll=this.getScrolls();var position={x:offset.x-scroll.x,y:offset.y-scroll.y};if(relative&&(relative=document.id(relative))){var relativePosition=relative.getPosition();return{x:position.x-relativePosition.x-leftBorder(relative),y:position.y-relativePosition.y-topBorder(relative)};}
return position;},getCoordinates:function(element){if(isBody(this))return this.getWindow().getCoordinates();var position=this.getPosition(element),size=this.getSize();var obj={left:position.x,top:position.y,width:size.x,height:size.y};obj.right=obj.left+obj.width;obj.bottom=obj.top+obj.height;return obj;},computePosition:function(obj){return{left:obj.x-styleNumber(this,'margin-left'),top:obj.y-styleNumber(this,'margin-top')};},setPosition:function(obj){return this.setStyles(this.computePosition(obj));}});[Document,Window].invoke('implement',{getSize:function(){var doc=getCompatElement(this);return{x:doc.clientWidth,y:doc.clientHeight};},getScroll:function(){var win=this.getWindow(),doc=getCompatElement(this);return{x:win.pageXOffset||doc.scrollLeft,y:win.pageYOffset||doc.scrollTop};},getScrollSize:function(){var doc=getCompatElement(this),min=this.getSize(),body=this.getDocument().body;return{x:Math.max(doc.scrollWidth,body.scrollWidth,min.x),y:Math.max(doc.scrollHeight,body.scrollHeight,min.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var size=this.getSize();return{top:0,left:0,bottom:size.y,right:size.x,height:size.y,width:size.x};}});var styleString=Element.getComputedStyle;function styleNumber(element,style){return styleString(element,style).toInt()||0;}
function borderBox(element){return styleString(element,'-moz-box-sizing')=='border-box';}
function topBorder(element){return styleNumber(element,'border-top-width');}
function leftBorder(element){return styleNumber(element,'border-left-width');}
function isBody(element){return(/^(?:body|html)$/i).test(element.tagName);}
function getCompatElement(element){var doc=element.getDocument();return(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;}})();Element.alias({position:'setPosition'});[Window,Document,Element].invoke('implement',{getHeight:function(){return this.getSize().y;},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;},getLeft:function(){return this.getPosition().x;}});(function(){Element.Properties.events={set:function(events){this.addEvents(events);}};[Element,Window,Document].invoke('implement',{addEvent:function(type,fn){var events=this.retrieve('events',{});if(!events[type])events[type]={keys:[],values:[]};if(events[type].keys.contains(fn))return this;events[type].keys.push(fn);var realType=type,custom=Element.Events[type],condition=fn,self=this;if(custom){if(custom.onAdd)custom.onAdd.call(this,fn,type);if(custom.condition){condition=function(event){if(custom.condition.call(this,event,type))return fn.call(this,event);return true;};}
if(custom.base)realType=Function.from(custom.base).call(this,type);}
var defn=function(){return fn.call(self);};var nativeEvent=Element.NativeEvents[realType];if(nativeEvent){if(nativeEvent==2){defn=function(event){event=new DOMEvent(event,self.getWindow());if(condition.call(self,event)===false)event.stop();};}
this.addListener(realType,defn,arguments[2]);}
events[type].values.push(defn);return this;},removeEvent:function(type,fn){var events=this.retrieve('events');if(!events||!events[type])return this;var list=events[type];var index=list.keys.indexOf(fn);if(index==-1)return this;var value=list.values[index];delete list.keys[index];delete list.values[index];var custom=Element.Events[type];if(custom){if(custom.onRemove)custom.onRemove.call(this,fn,type);if(custom.base)type=Function.from(custom.base).call(this,type);}
return(Element.NativeEvents[type])?this.removeListener(type,value,arguments[2]):this;},addEvents:function(events){for(var event in events)this.addEvent(event,events[event]);return this;},removeEvents:function(events){var type;if(typeOf(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this;}
var attached=this.retrieve('events');if(!attached)return this;if(!events){for(type in attached)this.removeEvents(type);this.eliminate('events');}else if(attached[events]){attached[events].keys.each(function(fn){this.removeEvent(events,fn);},this);delete attached[events];}
return this;},fireEvent:function(type,args,delay){var events=this.retrieve('events');if(!events||!events[type])return this;args=Array.from(args);events[type].keys.each(function(fn){if(delay)fn.delay(delay,this,args);else fn.apply(this,args);},this);return this;},cloneEvents:function(from,type){from=document.id(from);var events=from.retrieve('events');if(!events)return this;if(!type){for(var eventType in events)this.cloneEvents(from,eventType);}else if(events[type]){events[type].keys.each(function(fn){this.addEvent(type,fn);},this);}
return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,orientationchange:2,touchstart:2,touchmove:2,touchend:2,touchcancel:2,gesturestart:2,gesturechange:2,gestureend:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,paste:2,input:2,load:2,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};var check=function(event){var related=event.relatedTarget;if(related==null)return true;if(!related)return false;return(related!=this&&related.prefix!='xul'&&typeOf(this)!='document'&&!this.contains(related));};Element.Events={mouseenter:{base:'mouseover',condition:check},mouseleave:{base:'mouseout',condition:check},mousewheel:{base:(Browser.firefox)?'DOMMouseScroll':'mousewheel'}};if(!window.addEventListener){Element.NativeEvents.propertychange=2;Element.Events.change={base:function(){var type=this.type;return(this.get('tag')=='input'&&(type=='radio'||type=='checkbox'))?'propertychange':'change'},condition:function(event){return!!(this.type!='radio'||this.checked);}}}})();(function(){var eventListenerSupport=!!window.addEventListener;Element.NativeEvents.focusin=Element.NativeEvents.focusout=2;var bubbleUp=function(self,match,fn,event,target){while(target&&target!=self){if(match(target,event))return fn.call(target,event,target);target=document.id(target.parentNode);}};var map={mouseenter:{base:'mouseover'},mouseleave:{base:'mouseout'},focus:{base:'focus'+(eventListenerSupport?'':'in'),capture:true},blur:{base:eventListenerSupport?'blur':'focusout',capture:true}};var _key='$delegation:';var formObserver=function(type){return{base:'focusin',remove:function(self,uid){var list=self.retrieve(_key+type+'listeners',{})[uid];if(list&&list.forms)for(var i=list.forms.length;i--;){list.forms[i].removeEvent(type,list.fns[i]);}},listen:function(self,match,fn,event,target,uid){var form=(target.get('tag')=='form')?target:event.target.getParent('form');if(!form)return;var listeners=self.retrieve(_key+type+'listeners',{}),listener=listeners[uid]||{forms:[],fns:[]},forms=listener.forms,fns=listener.fns;if(forms.indexOf(form)!=-1)return;forms.push(form);var _fn=function(event){bubbleUp(self,match,fn,event,target);};form.addEvent(type,_fn);fns.push(_fn);listeners[uid]=listener;self.store(_key+type+'listeners',listeners);}};};var inputObserver=function(type){return{base:'focusin',listen:function(self,match,fn,event,target){var events={blur:function(){this.removeEvents(events);}};events[type]=function(event){bubbleUp(self,match,fn,event,target);};event.target.addEvents(events);}};};if(!eventListenerSupport)Object.append(map,{submit:formObserver('submit'),reset:formObserver('reset'),change:inputObserver('change'),select:inputObserver('select')});var proto=Element.prototype,addEvent=proto.addEvent,removeEvent=proto.removeEvent;var relay=function(old,method){return function(type,fn,useCapture){if(type.indexOf(':relay')==-1)return old.call(this,type,fn,useCapture);var parsed=Slick.parse(type).expressions[0][0];if(parsed.pseudos[0].key!='relay')return old.call(this,type,fn,useCapture);var newType=parsed.tag;parsed.pseudos.slice(1).each(function(pseudo){newType+=':'+pseudo.key+(pseudo.value?'('+pseudo.value+')':'');});old.call(this,type,fn);return method.call(this,newType,parsed.pseudos[0].value,fn);};};var delegation={addEvent:function(type,match,fn){var storage=this.retrieve('$delegates',{}),stored=storage[type];if(stored)for(var _uid in stored){if(stored[_uid].fn==fn&&stored[_uid].match==match)return this;}
var _type=type,_match=match,_fn=fn,_map=map[type]||{};type=_map.base||_type;match=function(target){return Slick.match(target,_match);};var elementEvent=Element.Events[_type];if(elementEvent&&elementEvent.condition){var __match=match,condition=elementEvent.condition;match=function(target,event){return __match(target,event)&&condition.call(target,event,type);};}
var self=this,uid=String.uniqueID();var delegator=_map.listen?function(event,target){if(!target&&event&&event.target)target=event.target;if(target)_map.listen(self,match,fn,event,target,uid);}:function(event,target){if(!target&&event&&event.target)target=event.target;if(target)bubbleUp(self,match,fn,event,target);};if(!stored)stored={};stored[uid]={match:_match,fn:_fn,delegator:delegator};storage[_type]=stored;return addEvent.call(this,type,delegator,_map.capture);},removeEvent:function(type,match,fn,_uid){var storage=this.retrieve('$delegates',{}),stored=storage[type];if(!stored)return this;if(_uid){var _type=type,delegator=stored[_uid].delegator,_map=map[type]||{};type=_map.base||_type;if(_map.remove)_map.remove(this,_uid);delete stored[_uid];storage[_type]=stored;return removeEvent.call(this,type,delegator);}
var __uid,s;if(fn)for(__uid in stored){s=stored[__uid];if(s.match==match&&s.fn==fn)return delegation.removeEvent.call(this,type,match,fn,__uid);}else for(__uid in stored){s=stored[__uid];if(s.match==match)delegation.removeEvent.call(this,type,match,s.fn,__uid);}
return this;}};[Element,Window,Document].invoke('implement',{addEvent:relay(addEvent,delegation.addEvent),removeEvent:relay(removeEvent,delegation.removeEvent)});})();(function(){var Fx=this.Fx=new Class({Implements:[Chain,Events,Options],options:{fps:60,unit:false,duration:500,frames:null,frameSkip:true,link:'ignore'},initialize:function(options){this.subject=this.subject||this;this.setOptions(options);},getTransition:function(){return function(p){return-(Math.cos(Math.PI*p)-1)/2;};},step:function(now){if(this.options.frameSkip){var diff=(this.time!=null)?(now-this.time):0,frames=diff/this.frameInterval;this.time=now;this.frame+=frames;}else{this.frame++;}
if(this.frame<this.frames){var delta=this.transition(this.frame/this.frames);this.set(this.compute(this.from,this.to,delta));}else{this.frame=this.frames;this.set(this.compute(this.from,this.to,1));this.stop();}},set:function(now){return now;},compute:function(from,to,delta){return Fx.compute(from,to,delta);},check:function(){if(!this.isRunning())return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.pass(arguments,this));return false;}
return false;},start:function(from,to){if(!this.check(from,to))return this;this.from=from;this.to=to;this.frame=(this.options.frameSkip)?0:-1;this.time=null;this.transition=this.getTransition();var frames=this.options.frames,fps=this.options.fps,duration=this.options.duration;this.duration=Fx.Durations[duration]||duration.toInt();this.frameInterval=1000/fps;this.frames=frames||Math.round(this.duration/this.frameInterval);this.fireEvent('start',this.subject);pushInstance.call(this,fps);return this;},stop:function(){if(this.isRunning()){this.time=null;pullInstance.call(this,this.options.fps);if(this.frames==this.frame){this.fireEvent('complete',this.subject);if(!this.callChain())this.fireEvent('chainComplete',this.subject);}else{this.fireEvent('stop',this.subject);}}
return this;},cancel:function(){if(this.isRunning()){this.time=null;pullInstance.call(this,this.options.fps);this.frame=this.frames;this.fireEvent('cancel',this.subject).clearChain();}
return this;},pause:function(){if(this.isRunning()){this.time=null;pullInstance.call(this,this.options.fps);}
return this;},resume:function(){if((this.frame<this.frames)&&!this.isRunning())pushInstance.call(this,this.options.fps);return this;},isRunning:function(){var list=instances[this.options.fps];return list&&list.contains(this);}});Fx.compute=function(from,to,delta){return(to-from)*delta+from;};Fx.Durations={'short':250,'normal':500,'long':1000};var instances={},timers={};var loop=function(){var now=Date.now();for(var i=this.length;i--;){var instance=this[i];if(instance)instance.step(now);}};var pushInstance=function(fps){var list=instances[fps]||(instances[fps]=[]);list.push(this);if(!timers[fps])timers[fps]=loop.periodical(Math.round(1000/fps),list);};var pullInstance=function(fps){var list=instances[fps];if(list){list.erase(this);if(!list.length&&timers[fps]){delete instances[fps];timers[fps]=clearInterval(timers[fps]);}}};})();Fx.CSS=new Class({Extends:Fx,prepare:function(element,property,values){values=Array.from(values);if(values[1]==null){values[1]=values[0];values[0]=element.getStyle(property);}
var parsed=values.map(this.parse);return{from:parsed[0],to:parsed[1]};},parse:function(value){value=Function.from(value)();value=(typeof value=='string')?value.split(' '):Array.from(value);return value.map(function(val){val=String(val);var found=false;Object.each(Fx.CSS.Parsers,function(parser,key){if(found)return;var parsed=parser.parse(val);if(parsed||parsed===0)found={value:parsed,parser:parser};});found=found||{value:val,parser:Fx.CSS.Parsers.String};return found;});},compute:function(from,to,delta){var computed=[];(Math.min(from.length,to.length)).times(function(i){computed.push({value:from[i].parser.compute(from[i].value,to[i].value,delta),parser:from[i].parser});});computed.$family=Function.from('fx:css:value');return computed;},serve:function(value,unit){if(typeOf(value)!='fx:css:value')value=this.parse(value);var returned=[];value.each(function(bit){returned=returned.concat(bit.parser.serve(bit.value,unit));});return returned;},render:function(element,property,value,unit){element.setStyle(property,this.serve(value,unit));},search:function(selector){if(Fx.CSS.Cache[selector])return Fx.CSS.Cache[selector];var to={},selectorTest=new RegExp('^'+selector.escapeRegExp()+'$');Array.each(document.styleSheets,function(sheet,j){var href=sheet.href;if(href&&href.contains('://')&&!href.contains(document.domain))return;var rules=sheet.rules||sheet.cssRules;Array.each(rules,function(rule,i){if(!rule.style)return;var selectorText=(rule.selectorText)?rule.selectorText.replace(/^\w+/,function(m){return m.toLowerCase();}):null;if(!selectorText||!selectorTest.test(selectorText))return;Object.each(Element.Styles,function(value,style){if(!rule.style[style]||Element.ShortStyles[style])return;value=String(rule.style[style]);to[style]=((/^rgb/).test(value))?value.rgbToHex():value;});});});return Fx.CSS.Cache[selector]=to;}});Fx.CSS.Cache={};Fx.CSS.Parsers={Color:{parse:function(value){if(value.match(/^#[0-9a-f]{3,6}$/i))return value.hexToRgb(true);return((value=value.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[value[1],value[2],value[3]]:false;},compute:function(from,to,delta){return from.map(function(value,i){return Math.round(Fx.compute(from[i],to[i],delta));});},serve:function(value){return value.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(value,unit){return(unit)?value+unit:value;}},String:{parse:Function.from(false),compute:function(zero,one){return one;},serve:function(zero){return zero;}}};Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(now){if(typeof now=='string')now=this.search(now);for(var p in now)this.render(this.element,p,now[p],this.options.unit);return this;},compute:function(from,to,delta){var now={};for(var p in from)now[p]=this.parent(from[p],to[p],delta);return now;},start:function(properties){if(!this.check(properties))return this;if(typeof properties=='string')properties=this.search(properties);var from={},to={};for(var p in properties){var parsed=this.prepare(this.element,p,properties[p]);from[p]=parsed.from;to[p]=parsed.to;}
return this.parent(from,to);}});Element.Properties.morph={set:function(options){this.get('morph').cancel().setOptions(options);return this;},get:function(){var morph=this.retrieve('morph');if(!morph){morph=new Fx.Morph(this,{link:'cancel'});this.store('morph',morph);}
return morph;}};Element.implement({morph:function(props){this.get('morph').start(props);return this;}});Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(property,now){if(arguments.length==1){now=property;property=this.property||this.options.property;}
this.render(this.element,property,now,this.options.unit);return this;},start:function(property,from,to){if(!this.check(property,from,to))return this;var args=Array.flatten(arguments);this.property=this.options.property||args.shift();var parsed=this.prepare(this.element,this.property,args);return this.parent(parsed.from,parsed.to);}});Element.Properties.tween={set:function(options){this.get('tween').cancel().setOptions(options);return this;},get:function(){var tween=this.retrieve('tween');if(!tween){tween=new Fx.Tween(this,{link:'cancel'});this.store('tween',tween);}
return tween;}};Element.implement({tween:function(property,from,to){this.get('tween').start(property,from,to);return this;},fade:function(how){var fade=this.get('tween'),method,to,toggle;if(how==null)how='toggle';switch(how){case'in':method='start';to=1;break;case'out':method='start';to=0;break;case'show':method='set';to=1;break;case'hide':method='set';to=0;break;case'toggle':var flag=this.retrieve('fade:flag',this.getStyle('opacity')==1);method='start';to=flag?0:1;this.store('fade:flag',!flag);toggle=true;break;default:method='start';to=how;}
if(!toggle)this.eliminate('fade:flag');fade[method]('opacity',to);if(method=='set'||to!=0)this.setStyle('visibility',to==0?'hidden':'visible');else fade.chain(function(){this.element.setStyle('visibility','hidden');});return this;},highlight:function(start,end){if(!end){end=this.retrieve('highlight:original',this.getStyle('background-color'));end=(end=='transparent')?'#fff':end;}
var tween=this.get('tween');tween.start('background-color',start||'#ffff88',end).chain(function(){this.setStyle('background-color',this.retrieve('highlight:original'));tween.callChain();}.bind(this));return this;}});Fx.implement({getTransition:function(){var trans=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof trans=='string'){var data=trans.split(':');trans=Fx.Transitions;trans=trans[data[0]]||trans[data[0].capitalize()];if(data[1])trans=trans['ease'+data[1].capitalize()+(data[2]?data[2].capitalize():'')];}
return trans;}});Fx.Transition=function(transition,params){params=Array.from(params);var easeIn=function(pos){return transition(pos,params);};return Object.append(easeIn,{easeIn:easeIn,easeOut:function(pos){return 1-transition(1-pos,params);},easeInOut:function(pos){return(pos<=0.5?transition(2*pos,params):(2-transition(2*(1-pos),params)))/2;}});};Fx.Transitions={linear:function(zero){return zero;}};Fx.Transitions.extend=function(transitions){for(var transition in transitions)Fx.Transitions[transition]=new Fx.Transition(transitions[transition]);};Fx.Transitions.extend({Pow:function(p,x){return Math.pow(p,x&&x[0]||6);},Expo:function(p){return Math.pow(2,8*(p-1));},Circ:function(p){return 1-Math.sin(Math.acos(p));},Sine:function(p){return 1-Math.cos(p*Math.PI/2);},Back:function(p,x){x=x&&x[0]||1.618;return Math.pow(p,2)*((x+1)*p-x);},Bounce:function(p){var value;for(var a=0,b=1;1;a+=b,b/=2){if(p>=(7-4*a)/11){value=b*b-Math.pow((11-6*a-11*p)/4,2);break;}}
return value;},Elastic:function(p,x){return Math.pow(2,10*--p)*Math.cos(20*p*Math.PI*(x&&x[0]||1)/3);}});['Quad','Cubic','Quart','Quint'].each(function(transition,i){Fx.Transitions[transition]=new Fx.Transition(function(p){return Math.pow(p,i+2);});});var Cookie=new Class({Implements:Options,options:{path:'/',domain:false,duration:false,secure:false,document:document,encode:true},initialize:function(key,options){this.key=key;this.setOptions(options);},write:function(value){if(this.options.encode)value=encodeURIComponent(value);if(this.options.domain)value+='; domain='+this.options.domain;if(this.options.path)value+='; path='+this.options.path;if(this.options.duration){var date=new Date();date.setTime(date.getTime()+this.options.duration*24*60*60*1000);value+='; expires='+date.toGMTString();}
if(this.options.secure)value+='; secure';this.options.document.cookie=this.key+'='+value;return this;},read:function(){var value=this.options.document.cookie.match('(?:^|;)\\s*'+this.key.escapeRegExp()+'=([^;]*)');return(value)?decodeURIComponent(value[1]):null;},dispose:function(){new Cookie(this.key,Object.merge({},this.options,{duration:-1})).write('');return this;}});Cookie.write=function(key,value,options){return new Cookie(key,options).write(value);};Cookie.read=function(key){return new Cookie(key).read();};Cookie.dispose=function(key,options){return new Cookie(key,options).dispose();};(function(window,document){var ready,loaded,checks=[],shouldPoll,timer,testElement=document.createElement('div');var domready=function(){clearTimeout(timer);if(ready)return;Browser.loaded=ready=true;document.removeListener('DOMContentLoaded',domready).removeListener('readystatechange',check);document.fireEvent('domready');window.fireEvent('domready');};var check=function(){for(var i=checks.length;i--;)if(checks[i]()){domready();return true;}
return false;};var poll=function(){clearTimeout(timer);if(!check())timer=setTimeout(poll,10);};document.addListener('DOMContentLoaded',domready);var doScrollWorks=function(){try{testElement.doScroll();return true;}catch(e){}
return false;};if(testElement.doScroll&&!doScrollWorks()){checks.push(doScrollWorks);shouldPoll=true;}
if(document.readyState)checks.push(function(){var state=document.readyState;return(state=='loaded'||state=='complete');});if('onreadystatechange'in document)document.addListener('readystatechange',check);else shouldPoll=true;if(shouldPoll)poll();Element.Events.domready={onAdd:function(fn){if(ready)fn.call(this);}};Element.Events.load={base:'load',onAdd:function(fn){if(loaded&&this==window)fn.call(this);},condition:function(){if(this==window){domready();delete Element.Events.load;}
return true;}};window.addEvent('load',function(){loaded=true;});})(window,document);(function(){var Swiff=this.Swiff=new Class({Implements:Options,options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:'high',allowScriptAccess:'always',wMode:'window',swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;},initialize:function(path,options){this.instance='Swiff_'+String.uniqueID();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;var properties=Object.append({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments);};})(callBacks[callBack]);vars[callBack]='Swiff.CallBacks.'+this.instance+'.'+callBack;}
params.flashVars=Object.toQueryString(vars);if(Browser.ie){properties.classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';params.movie=path;}else{properties.type='application/x-shockwave-flash';}
properties.data=path;var build='<object id="'+id+'"';for(var property in properties)build+=' '+property+'="'+properties[property]+'"';build+='>';for(var param in params){if(params[param])build+='<param name="'+param+'" value="'+params[param]+'" />';}
build+='</object>';this.object=((container)?container.empty():new Element('div')).set('html',build).firstChild;},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].append(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+'</invoke>');return eval(rs);};})();MooTools.More={'version':'1.4.0.1','build':'a4244edf2aa97ac8a196fc96082dd35af1abab87'};Class.Mutators.Binds=function(binds){if(!this.prototype.initialize)this.implement('initialize',function(){});return Array.from(binds).concat(this.prototype.Binds||[]);};Class.Mutators.initialize=function(initialize){return function(){Array.from(this.Binds).each(function(name){var original=this[name];if(original)this[name]=original.bind(this);},this);return initialize.apply(this,arguments);};};Request.Queue=new Class({Implements:[Options,Events],Binds:['attach','request','complete','cancel','success','failure','exception'],options:{stopOnFailure:true,autoAdvance:true,concurrent:1,requests:{}},initialize:function(options){var requests;if(options){requests=options.requests;delete options.requests;}
this.setOptions(options);this.requests={};this.queue=[];this.reqBinders={};if(requests)this.addRequests(requests);},addRequest:function(name,request){this.requests[name]=request;this.attach(name,request);return this;},addRequests:function(obj){Object.each(obj,function(req,name){this.addRequest(name,req);},this);return this;},getName:function(req){return Object.keyOf(this.requests,req);},attach:function(name,req){if(req._groupSend)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){if(!this.reqBinders[name])this.reqBinders[name]={};this.reqBinders[name][evt]=function(){this['on'+evt.capitalize()].apply(this,[name,req].append(arguments));}.bind(this);req.addEvent(evt,this.reqBinders[name][evt]);},this);req._groupSend=req.send;req.send=function(options){this.send(name,options);return req;}.bind(this);return this;},removeRequest:function(req){var name=typeOf(req)=='object'?this.getName(req):req;if(!name&&typeOf(name)!='string')return this;req=this.requests[name];if(!req)return this;['request','complete','cancel','success','failure','exception'].each(function(evt){req.removeEvent(evt,this.reqBinders[name][evt]);},this);req.send=req._groupSend;delete req._groupSend;return this;},getRunning:function(){return Object.filter(this.requests,function(r){return r.running;});},isRunning:function(){return!!(Object.keys(this.getRunning()).length);},send:function(name,options){var q=function(){this.requests[name]._groupSend(options);this.queue.erase(q);}.bind(this);q.name=name;if(Object.keys(this.getRunning()).length>=this.options.concurrent||(this.error&&this.options.stopOnFailure))this.queue.push(q);else q();return this;},hasNext:function(name){return(!name)?!!this.queue.length:!!this.queue.filter(function(q){return q.name==name;}).length;},resume:function(){this.error=false;(this.options.concurrent-Object.keys(this.getRunning()).length).times(this.runNext,this);return this;},runNext:function(name){if(!this.queue.length)return this;if(!name){this.queue[0]();}else{var found;this.queue.each(function(q){if(!found&&q.name==name){found=true;q();}});}
return this;},runAll:function(){this.queue.each(function(q){q();});return this;},clear:function(name){if(!name){this.queue.empty();}else{this.queue=this.queue.map(function(q){if(q.name!=name)return q;else return false;}).filter(function(q){return q;});}
return this;},cancel:function(name){this.requests[name].cancel();return this;},onRequest:function(){this.fireEvent('request',arguments);},onComplete:function(){this.fireEvent('complete',arguments);if(!this.queue.length)this.fireEvent('end');},onCancel:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('cancel',arguments);},onSuccess:function(){if(this.options.autoAdvance&&!this.error)this.runNext();this.fireEvent('success',arguments);},onFailure:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('failure',arguments);},onException:function(){this.error=true;if(!this.options.stopOnFailure&&this.options.autoAdvance)this.runNext();this.fireEvent('exception',arguments);}});Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(data){var fn=function(){if(!this.running)this.send({data:data});};this.lastDelay=this.options.initialDelay;this.timer=fn.delay(this.lastDelay,this);this.completeCheck=function(response){clearTimeout(this.timer);this.lastDelay=(response)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);this.timer=fn.delay(this.lastDelay,this);};return this.addEvent('complete',this.completeCheck);},stopTimer:function(){clearTimeout(this.timer);return this.removeEvent('complete',this.completeCheck);}});Request.JSONP=new Class({Implements:[Chain,Events,Options],options:{onRequest:function(src){if(this.options.log&&window.console&&console.log){console.log('JSONP retrieving script with url:'+src);}},onError:function(src){if(this.options.log&&window.console&&console.warn){console.warn('JSONP '+src+' will fail in Internet Explorer, which enforces a 2083 bytes length limit on URIs');}},url:'',callbackKey:'callback',injectScript:document.head,data:'',link:'ignore',timeout:0,log:false},initialize:function(options){this.setOptions(options);},send:function(options){if(!Request.prototype.check.call(this,options))return this;this.running=true;var type=typeOf(options);if(type=='string'||type=='element')options={data:options};options=Object.merge(this.options,options||{});var data=options.data;switch(typeOf(data)){case'element':data=document.id(data).toQueryString();break;case'object':case'hash':data=Object.toQueryString(data);}
var index=this.index=Request.JSONP.counter++;var src=options.url+
(options.url.test('\\?')?'&':'?')+
(options.callbackKey)+'=Request.JSONP.request_map.request_'+index+
(data?'&'+data:'');if(src.length>2083)this.fireEvent('error',src);Request.JSONP.request_map['request_'+index]=function(){this.success(arguments,index);}.bind(this);var script=this.getScript(src).inject(options.injectScript);this.fireEvent('request',[src,script]);if(options.timeout)this.timeout.delay(options.timeout,this);return this;},getScript:function(src){if(!this.script)this.script=new Element('script',{type:'text/javascript',async:true,src:src});return this.script;},success:function(args,index){if(!this.running)return;this.clear().fireEvent('complete',args).fireEvent('success',args).callChain();},cancel:function(){if(this.running)this.clear().fireEvent('cancel');return this;},isRunning:function(){return!!this.running;},clear:function(){this.running=false;if(this.script){this.script.destroy();this.script=null;}
return this;},timeout:function(){if(this.running){this.running=false;this.fireEvent('timeout',[this.script.get('src'),this.script]).fireEvent('failure').cancel();}
return this;}});Request.JSONP.counter=0;Request.JSONP.request_map={};(function(){if(this.Hash)return;var Hash=this.Hash=new Type('Hash',function(object){if(typeOf(object)=='hash')object=Object.clone(object.getClean());for(var key in object)this[key]=object[key];return this;});this.$H=function(object){return new Hash(object);};Hash.implement({forEach:function(fn,bind){Object.forEach(this,fn,bind);},getClean:function(){var clean={};for(var key in this){if(this.hasOwnProperty(key))clean[key]=this[key];}
return clean;},getLength:function(){var length=0;for(var key in this){if(this.hasOwnProperty(key))length++;}
return length;}});Hash.alias('each','forEach');Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(value){return Object.keyOf(this,value);},hasValue:function(value){return Object.contains(this,value);},extend:function(properties){Hash.each(properties||{},function(value,key){Hash.set(this,key,value);},this);return this;},combine:function(properties){Hash.each(properties||{},function(value,key){Hash.include(this,key,value);},this);return this;},erase:function(key){if(this.hasOwnProperty(key))delete this[key];return this;},get:function(key){return(this.hasOwnProperty(key))?this[key]:null;},set:function(key,value){if(!this[key]||this.hasOwnProperty(key))this[key]=value;return this;},empty:function(){Hash.each(this,function(value,key){delete this[key];},this);return this;},include:function(key,value){if(this[key]==undefined)this[key]=value;return this;},map:function(fn,bind){return new Hash(Object.map(this,fn,bind));},filter:function(fn,bind){return new Hash(Object.filter(this,fn,bind));},every:function(fn,bind){return Object.every(this,fn,bind);},some:function(fn,bind){return Object.some(this,fn,bind);},getKeys:function(){return Object.keys(this);},getValues:function(){return Object.values(this);},toQueryString:function(base){return Object.toQueryString(this,base);}});Hash.alias({indexOf:'keyOf',contains:'hasValue'});})();(function(){var defined=function(value){return value!=null;};var hasOwnProperty=Object.prototype.hasOwnProperty;Object.extend({getFromPath:function(source,parts){if(typeof parts=='string')parts=parts.split('.');for(var i=0,l=parts.length;i<l;i++){if(hasOwnProperty.call(source,parts[i]))source=source[parts[i]];else return null;}
return source;},cleanValues:function(object,method){method=method||defined;for(var key in object)if(!method(object[key])){delete object[key];}
return object;},erase:function(object,key){if(hasOwnProperty.call(object,key))delete object[key];return object;},run:function(object){var args=Array.slice(arguments,1);for(var key in object)if(object[key].apply){object[key].apply(object,args);}
return object;}});})();Hash.implement({getFromPath:function(notation){return Object.getFromPath(this,notation);},cleanValues:function(method){return new Hash(Object.cleanValues(this,method));},run:function(){Object.run(arguments);}});(function(){var current=null,locales={},inherits={};var getSet=function(set){if(instanceOf(set,Locale.Set))return set;else return locales[set];};var Locale=this.Locale={define:function(locale,set,key,value){var name;if(instanceOf(locale,Locale.Set)){name=locale.name;if(name)locales[name]=locale;}else{name=locale;if(!locales[name])locales[name]=new Locale.Set(name);locale=locales[name];}
if(set)locale.define(set,key,value);if(!current)current=locale;return locale;},use:function(locale){locale=getSet(locale);if(locale){current=locale;this.fireEvent('change',locale);}
return this;},getCurrent:function(){return current;},get:function(key,args){return(current)?current.get(key,args):'';},inherit:function(locale,inherits,set){locale=getSet(locale);if(locale)locale.inherit(inherits,set);return this;},list:function(){return Object.keys(locales);}};Object.append(Locale,new Events);Locale.Set=new Class({sets:{},inherits:{locales:[],sets:{}},initialize:function(name){this.name=name||'';},define:function(set,key,value){var defineData=this.sets[set];if(!defineData)defineData={};if(key){if(typeOf(key)=='object')defineData=Object.merge(defineData,key);else defineData[key]=value;}
this.sets[set]=defineData;return this;},get:function(key,args,_base){var value=Object.getFromPath(this.sets,key);if(value!=null){var type=typeOf(value);if(type=='function')value=value.apply(null,Array.from(args));else if(type=='object')value=Object.clone(value);return value;}
var index=key.indexOf('.'),set=index<0?key:key.substr(0,index),names=(this.inherits.sets[set]||[]).combine(this.inherits.locales).include('en-US');if(!_base)_base=[];for(var i=0,l=names.length;i<l;i++){if(_base.contains(names[i]))continue;_base.include(names[i]);var locale=locales[names[i]];if(!locale)continue;value=locale.get(key,args,_base);if(value!=null)return value;}
return'';},inherit:function(names,set){names=Array.from(names);if(set&&!this.inherits.sets[set])this.inherits.sets[set]=[];var l=names.length;while(l--)(set?this.inherits.sets[set]:this.inherits.locales).unshift(names[l]);return this;}});})();Locale.define('en-US','Number',{decimal:'.',group:',',currency:{prefix:'$ '}});Number.implement({format:function(options){var value=this;options=options?Object.clone(options):{};var getOption=function(key){if(options[key]!=null)return options[key];return Locale.get('Number.'+key);};var negative=value<0,decimal=getOption('decimal'),precision=getOption('precision'),group=getOption('group'),decimals=getOption('decimals');if(negative){var negativeLocale=getOption('negative')||{};if(negativeLocale.prefix==null&&negativeLocale.suffix==null)negativeLocale.prefix='-';['prefix','suffix'].each(function(key){if(negativeLocale[key])options[key]=getOption(key)+negativeLocale[key];});value=-value;}
var prefix=getOption('prefix'),suffix=getOption('suffix');if(decimals!==''&&decimals>=0&&decimals<=20)value=value.toFixed(decimals);if(precision>=1&&precision<=21)value=(+value).toPrecision(precision);value+='';var index;if(getOption('scientific')===false&&value.indexOf('e')>-1){var match=value.split('e'),zeros=+match[1];value=match[0].replace('.','');if(zeros<0){zeros=-zeros-1;index=match[0].indexOf('.');if(index>-1)zeros-=index-1;while(zeros--)value='0'+value;value='0.'+value;}else{index=match[0].lastIndexOf('.');if(index>-1)zeros-=match[0].length-index-1;while(zeros--)value+='0';}}
if(decimal!='.')value=value.replace('.',decimal);if(group){index=value.lastIndexOf(decimal);index=(index>-1)?index:value.length;var newOutput=value.substring(index),i=index;while(i--){if((index-i-1)%3==0&&i!=(index-1))newOutput=group+newOutput;newOutput=value.charAt(i)+newOutput;}
value=newOutput;}
if(prefix)value=prefix+value;if(suffix)value+=suffix;return value;},formatCurrency:function(decimals){var locale=Locale.get('Number.currency')||{};if(locale.scientific==null)locale.scientific=false;locale.decimals=decimals!=null?decimals:(locale.decimals==null?2:locale.decimals);return this.format(locale);},formatPercentage:function(decimals){var locale=Locale.get('Number.percentage')||{};if(locale.suffix==null)locale.suffix='%';locale.decimals=decimals!=null?decimals:(locale.decimals==null?2:locale.decimals);return this.format(locale);}});(function(nil){Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var result=0,l=this.length;if(l){while(l--)result+=this[l];}
return result;},unique:function(){return[].combine(this);},shuffle:function(){for(var i=this.length;i&&--i;){var temp=this[i],r=Math.floor(Math.random()*(i+1));this[i]=this[r];this[r]=temp;}
return this;},reduce:function(fn,value){for(var i=0,l=this.length;i<l;i++){if(i in this)value=value===nil?this[i]:fn.call(null,value,this[i],i,this);}
return value;},reduceRight:function(fn,value){var i=this.length;while(i--){if(i in this)value=value===nil?this[i]:fn.call(null,value,this[i],i,this);}
return value;}});})();String.implement({parseQueryString:function(decodeKeys,decodeValues){if(decodeKeys==null)decodeKeys=true;if(decodeValues==null)decodeValues=true;var vars=this.split(/[&;]/),object={};if(!vars.length)return object;vars.each(function(val){var index=val.indexOf('=')+1,value=index?val.substr(index):'',keys=index?val.substr(0,index-1).match(/([^\]\[]+|(\B)(?=\]))/g):[val],obj=object;if(!keys)return;if(decodeValues)value=decodeURIComponent(value);keys.each(function(key,i){if(decodeKeys)key=decodeURIComponent(key);var current=obj[key];if(i<keys.length-1)obj=obj[key]=current||{};else if(typeOf(current)=='array')current.push(value);else obj[key]=current!=null?[current,value]:value;});});return object;},cleanQueryString:function(method){return this.split('&').filter(function(val){var index=val.indexOf('='),key=index<0?'':val.substr(0,index),value=val.substr(index+1);return method?method.call(null,key,value):(value||value===0);}).join('&');}});Locale.define('en-US','Date',{months:['January','February','March','April','May','June','July','August','September','October','November','December'],months_abbr:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],days:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],days_abbr:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],dateOrder:['month','date','year'],shortDate:'%m/%d/%Y',shortTime:'%I:%M%p',AM:'AM',PM:'PM',firstDayOfWeek:0,ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?'th':['th','st','nd','rd','th'][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:'less than a minute ago',minuteAgo:'about a minute ago',minutesAgo:'{delta} minutes ago',hourAgo:'about an hour ago',hoursAgo:'about {delta} hours ago',dayAgo:'1 day ago',daysAgo:'{delta} days ago',weekAgo:'1 week ago',weeksAgo:'{delta} weeks ago',monthAgo:'1 month ago',monthsAgo:'{delta} months ago',yearAgo:'1 year ago',yearsAgo:'{delta} years ago',lessThanMinuteUntil:'less than a minute from now',minuteUntil:'about a minute from now',minutesUntil:'{delta} minutes from now',hourUntil:'about an hour from now',hoursUntil:'about {delta} hours from now',dayUntil:'1 day from now',daysUntil:'{delta} days from now',weekUntil:'1 week from now',weeksUntil:'{delta} weeks from now',monthUntil:'1 month from now',monthsUntil:'{delta} months from now',yearUntil:'1 year from now',yearsUntil:'{delta} years from now'});(function(){var Date=this.Date;var DateMethods=Date.Methods={ms:'Milliseconds',year:'FullYear',min:'Minutes',mo:'Month',sec:'Seconds',hr:'Hours'};['Date','Day','FullYear','Hours','Milliseconds','Minutes','Month','Seconds','Time','TimezoneOffset','Week','Timezone','GMTOffset','DayOfYear','LastMonth','LastDayOfMonth','UTCDate','UTCDay','UTCFullYear','AMPM','Ordinal','UTCHours','UTCMilliseconds','UTCMinutes','UTCMonth','UTCSeconds','UTCMilliseconds'].each(function(method){Date.Methods[method.toLowerCase()]=method;});var pad=function(n,digits,string){if(digits==1)return n;return n<Math.pow(10,digits-1)?(string||'0')+pad(n,digits-1,string):n;};Date.implement({set:function(prop,value){prop=prop.toLowerCase();var method=DateMethods[prop]&&'set'+DateMethods[prop];if(method&&this[method])this[method](value);return this;}.overloadSetter(),get:function(prop){prop=prop.toLowerCase();var method=DateMethods[prop]&&'get'+DateMethods[prop];if(method&&this[method])return this[method]();return null;}.overloadGetter(),clone:function(){return new Date(this.get('time'));},increment:function(interval,times){interval=interval||'day';times=times!=null?times:1;switch(interval){case'year':return this.increment('month',times*12);case'month':var d=this.get('date');this.set('date',1).set('mo',this.get('mo')+times);return this.set('date',d.min(this.get('lastdayofmonth')));case'week':return this.increment('day',times*7);case'day':return this.set('date',this.get('date')+times);}
if(!Date.units[interval])throw new Error(interval+' is not a supported interval');return this.set('time',this.get('time')+times*Date.units[interval]());},decrement:function(interval,times){return this.increment(interval,-1*(times!=null?times:1));},isLeapYear:function(){return Date.isLeapYear(this.get('year'));},clearTime:function(){return this.set({hr:0,min:0,sec:0,ms:0});},diff:function(date,resolution){if(typeOf(date)=='string')date=Date.parse(date);return((date-this)/Date.units[resolution||'day'](3,3)).round();},getLastDayOfMonth:function(){return Date.daysInMonth(this.get('mo'),this.get('year'));},getDayOfYear:function(){return(Date.UTC(this.get('year'),this.get('mo'),this.get('date')+1)
-Date.UTC(this.get('year'),0,1))/Date.units.day();},setDay:function(day,firstDayOfWeek){if(firstDayOfWeek==null){firstDayOfWeek=Date.getMsg('firstDayOfWeek');if(firstDayOfWeek==='')firstDayOfWeek=1;}
day=(7+Date.parseDay(day,true)-firstDayOfWeek)%7;var currentDay=(7+this.get('day')-firstDayOfWeek)%7;return this.increment('day',day-currentDay);},getWeek:function(firstDayOfWeek){if(firstDayOfWeek==null){firstDayOfWeek=Date.getMsg('firstDayOfWeek');if(firstDayOfWeek==='')firstDayOfWeek=1;}
var date=this,dayOfWeek=(7+date.get('day')-firstDayOfWeek)%7,dividend=0,firstDayOfYear;if(firstDayOfWeek==1){var month=date.get('month'),startOfWeek=date.get('date')-dayOfWeek;if(month==11&&startOfWeek>28)return 1;if(month==0&&startOfWeek<-2){date=new Date(date).decrement('day',dayOfWeek);dayOfWeek=0;}
firstDayOfYear=new Date(date.get('year'),0,1).get('day')||7;if(firstDayOfYear>4)dividend=-7;}else{firstDayOfYear=new Date(date.get('year'),0,1).get('day');}
dividend+=date.get('dayofyear');dividend+=6-dayOfWeek;dividend+=(7+firstDayOfYear-firstDayOfWeek)%7;return(dividend/7);},getOrdinal:function(day){return Date.getMsg('ordinal',day||this.get('date'));},getTimezone:function(){return this.toString().replace(/^.*? ([A-Z]{3}).[0-9]{4}.*$/,'$1').replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,'$1$2$3');},getGMTOffset:function(){var off=this.get('timezoneOffset');return((off>0)?'-':'+')+pad((off.abs()/60).floor(),2)+pad(off%60,2);},setAMPM:function(ampm){ampm=ampm.toUpperCase();var hr=this.get('hr');if(hr>11&&ampm=='AM')return this.decrement('hour',12);else if(hr<12&&ampm=='PM')return this.increment('hour',12);return this;},getAMPM:function(){return(this.get('hr')<12)?'AM':'PM';},parse:function(str){this.set('time',Date.parse(str));return this;},isValid:function(date){if(!date)date=this;return typeOf(date)=='date'&&!isNaN(date.valueOf());},format:function(format){if(!this.isValid())return'invalid date';if(!format)format='%x %X';if(typeof format=='string')format=formats[format.toLowerCase()]||format;if(typeof format=='function')return format(this);var d=this;return format.replace(/%([a-z%])/gi,function($0,$1){switch($1){case'a':return Date.getMsg('days_abbr')[d.get('day')];case'A':return Date.getMsg('days')[d.get('day')];case'b':return Date.getMsg('months_abbr')[d.get('month')];case'B':return Date.getMsg('months')[d.get('month')];case'c':return d.format('%a %b %d %H:%M:%S %Y');case'd':return pad(d.get('date'),2);case'e':return pad(d.get('date'),2,' ');case'H':return pad(d.get('hr'),2);case'I':return pad((d.get('hr')%12)||12,2);case'j':return pad(d.get('dayofyear'),3);case'k':return pad(d.get('hr'),2,' ');case'l':return pad((d.get('hr')%12)||12,2,' ');case'L':return pad(d.get('ms'),3);case'm':return pad((d.get('mo')+1),2);case'M':return pad(d.get('min'),2);case'o':return d.get('ordinal');case'p':return Date.getMsg(d.get('ampm'));case's':return Math.round(d/1000);case'S':return pad(d.get('seconds'),2);case'T':return d.format('%H:%M:%S');case'U':return pad(d.get('week'),2);case'w':return d.get('day');case'x':return d.format(Date.getMsg('shortDate'));case'X':return d.format(Date.getMsg('shortTime'));case'y':return d.get('year').toString().substr(2);case'Y':return d.get('year');case'z':return d.get('GMTOffset');case'Z':return d.get('Timezone');}
return $1;});},toISOString:function(){return this.format('iso8601');}}).alias({toJSON:'toISOString',compare:'diff',strftime:'format'});var rfcDayAbbr=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],rfcMonthAbbr=['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];var formats={db:'%Y-%m-%d %H:%M:%S',compact:'%Y%m%dT%H%M%S','short':'%d %b %H:%M','long':'%B %d, %Y %H:%M',rfc822:function(date){return rfcDayAbbr[date.get('day')]+date.format(', %d ')+rfcMonthAbbr[date.get('month')]+date.format(' %Y %H:%M:%S %Z');},rfc2822:function(date){return rfcDayAbbr[date.get('day')]+date.format(', %d ')+rfcMonthAbbr[date.get('month')]+date.format(' %Y %H:%M:%S %z');},iso8601:function(date){return(date.getUTCFullYear()+'-'+
pad(date.getUTCMonth()+1,2)+'-'+
pad(date.getUTCDate(),2)+'T'+
pad(date.getUTCHours(),2)+':'+
pad(date.getUTCMinutes(),2)+':'+
pad(date.getUTCSeconds(),2)+'.'+
pad(date.getUTCMilliseconds(),3)+'Z');}};var parsePatterns=[],nativeParse=Date.parse;var parseWord=function(type,word,num){var ret=-1,translated=Date.getMsg(type+'s');switch(typeOf(word)){case'object':ret=translated[word.get(type)];break;case'number':ret=translated[word];if(!ret)throw new Error('Invalid '+type+' index: '+word);break;case'string':var match=translated.filter(function(name){return this.test(name);},new RegExp('^'+word,'i'));if(!match.length)throw new Error('Invalid '+type+' string');if(match.length>1)throw new Error('Ambiguous '+type);ret=match[0];}
return(num)?translated.indexOf(ret):ret;};var startCentury=1900,startYear=70;Date.extend({getMsg:function(key,args){return Locale.get('Date.'+key,args);},units:{ms:Function.from(1),second:Function.from(1000),minute:Function.from(60000),hour:Function.from(3600000),day:Function.from(86400000),week:Function.from(608400000),month:function(month,year){var d=new Date;return Date.daysInMonth(month!=null?month:d.get('mo'),year!=null?year:d.get('year'))*86400000;},year:function(year){year=year||new Date().get('year');return Date.isLeapYear(year)?31622400000:31536000000;}},daysInMonth:function(month,year){return[31,Date.isLeapYear(year)?29:28,31,30,31,30,31,31,30,31,30,31][month];},isLeapYear:function(year){return((year%4===0)&&(year%100!==0))||(year%400===0);},parse:function(from){var t=typeOf(from);if(t=='number')return new Date(from);if(t!='string')return from;from=from.clean();if(!from.length)return null;var parsed;parsePatterns.some(function(pattern){var bits=pattern.re.exec(from);return(bits)?(parsed=pattern.handler(bits)):false;});if(!(parsed&&parsed.isValid())){parsed=new Date(nativeParse(from));if(!(parsed&&parsed.isValid()))parsed=new Date(from.toInt());}
return parsed;},parseDay:function(day,num){return parseWord('day',day,num);},parseMonth:function(month,num){return parseWord('month',month,num);},parseUTC:function(value){var localDate=new Date(value);var utcSeconds=Date.UTC(localDate.get('year'),localDate.get('mo'),localDate.get('date'),localDate.get('hr'),localDate.get('min'),localDate.get('sec'),localDate.get('ms'));return new Date(utcSeconds);},orderIndex:function(unit){return Date.getMsg('dateOrder').indexOf(unit)+1;},defineFormat:function(name,format){formats[name]=format;return this;},defineParser:function(pattern){parsePatterns.push((pattern.re&&pattern.handler)?pattern:build(pattern));return this;},defineParsers:function(){Array.flatten(arguments).each(Date.defineParser);return this;},define2DigitYearStart:function(year){startYear=year%100;startCentury=year-startYear;return this;}}).extend({defineFormats:Date.defineFormat.overloadSetter()});var regexOf=function(type){return new RegExp('(?:'+Date.getMsg(type).map(function(name){return name.substr(0,3);}).join('|')+')[a-z]*');};var replacers=function(key){switch(key){case'T':return'%H:%M:%S';case'x':return((Date.orderIndex('month')==1)?'%m[-./]%d':'%d[-./]%m')+'([-./]%y)?';case'X':return'%H([.:]%M)?([.:]%S([.:]%s)?)? ?%p? ?%z?';}
return null;};var keys={d:/[0-2]?[0-9]|3[01]/,H:/[01]?[0-9]|2[0-3]/,I:/0?[1-9]|1[0-2]/,M:/[0-5]?\d/,s:/\d+/,o:/[a-z]*/,p:/[ap]\.?m\.?/,y:/\d{2}|\d{4}/,Y:/\d{4}/,z:/Z|[+-]\d{2}(?::?\d{2})?/};keys.m=keys.I;keys.S=keys.M;var currentLanguage;var recompile=function(language){currentLanguage=language;keys.a=keys.A=regexOf('days');keys.b=keys.B=regexOf('months');parsePatterns.each(function(pattern,i){if(pattern.format)parsePatterns[i]=build(pattern.format);});};var build=function(format){if(!currentLanguage)return{format:format};var parsed=[];var re=(format.source||format).replace(/%([a-z])/gi,function($0,$1){return replacers($1)||$0;}).replace(/\((?!\?)/g,'(?:').replace(/ (?!\?|\*)/g,',? ').replace(/%([a-z%])/gi,function($0,$1){var p=keys[$1];if(!p)return $1;parsed.push($1);return'('+p.source+')';}).replace(/\[a-z\]/gi,'[a-z\\u00c0-\\uffff;\&]');return{format:format,re:new RegExp('^'+re+'$','i'),handler:function(bits){bits=bits.slice(1).associate(parsed);var date=new Date().clearTime(),year=bits.y||bits.Y;if(year!=null)handle.call(date,'y',year);if('d'in bits)handle.call(date,'d',1);if('m'in bits||bits.b||bits.B)handle.call(date,'m',1);for(var key in bits)handle.call(date,key,bits[key]);return date;}};};var handle=function(key,value){if(!value)return this;switch(key){case'a':case'A':return this.set('day',Date.parseDay(value,true));case'b':case'B':return this.set('mo',Date.parseMonth(value,true));case'd':return this.set('date',value);case'H':case'I':return this.set('hr',value);case'm':return this.set('mo',value-1);case'M':return this.set('min',value);case'p':return this.set('ampm',value.replace(/\./g,''));case'S':return this.set('sec',value);case's':return this.set('ms',('0.'+value)*1000);case'w':return this.set('day',value);case'Y':return this.set('year',value);case'y':value=+value;if(value<100)value+=startCentury+(value<startYear?100:0);return this.set('year',value);case'z':if(value=='Z')value='+00';var offset=value.match(/([+-])(\d{2}):?(\d{2})?/);offset=(offset[1]+'1')*(offset[2]*60+(+offset[3]||0))+this.getTimezoneOffset();return this.set('time',this-offset*60000);}
return this;};Date.defineParsers('%Y([-./]%m([-./]%d((T| )%X)?)?)?','%Y%m%d(T%H(%M%S?)?)?','%x( %X)?','%d%o( %b( %Y)?)?( %X)?','%b( %d%o)?( %Y)?( %X)?','%Y %b( %d%o( %X)?)?','%o %b %d %X %z %Y','%T','%H:%M( ?%p)?');Locale.addEvent('change',function(language){if(Locale.get('Date'))recompile(language);}).fireEvent('change',Locale.getCurrent());})();Date.implement({timeDiffInWords:function(to){return Date.distanceOfTimeInWords(this,to||new Date);},timeDiff:function(to,separator){if(to==null)to=new Date;var delta=((to-this)/1000).floor().abs();var vals=[],durations=[60,60,24,365,0],names=['s','m','h','d','y'],value,duration;for(var item=0;item<durations.length;item++){if(item&&!delta)break;value=delta;if((duration=durations[item])){value=(delta%duration);delta=(delta/duration).floor();}
vals.unshift(value+(names[item]||''));}
return vals.join(separator||':');}}).extend({distanceOfTimeInWords:function(from,to){return Date.getTimePhrase(((to-from)/1000).toInt());},getTimePhrase:function(delta){var suffix=(delta<0)?'Until':'Ago';if(delta<0)delta*=-1;var units={minute:60,hour:60,day:24,week:7,month:52/12,year:12,eon:Infinity};var msg='lessThanMinute';for(var unit in units){var interval=units[unit];if(delta<1.5*interval){if(delta>0.75*interval)msg=unit;break;}
delta/=interval;msg=unit+'s';}
delta=delta.round();return Date.getMsg(msg+suffix,delta).substitute({delta:delta});}}).defineParsers({re:/^(?:tod|tom|yes)/i,handler:function(bits){var d=new Date().clearTime();switch(bits[0]){case'tom':return d.increment();case'yes':return d.decrement();default:return d;}}},{re:/^(next|last) ([a-z]+)$/i,handler:function(bits){var d=new Date().clearTime();var day=d.getDay();var newDay=Date.parseDay(bits[2],true);var addDays=newDay-day;if(newDay<=day)addDays+=7;if(bits[1]=='last')addDays-=7;return d.set('date',d.getDate()+addDays);}}).alias('timeAgoInWords','timeDiffInWords');(function(){var special={'a':/[àáâãäåăą]/g,'A':/[ÀÁÂÃÄÅĂĄ]/g,'c':/[ćčç]/g,'C':/[ĆČÇ]/g,'d':/[ďđ]/g,'D':/[ĎÐ]/g,'e':/[èéêëěę]/g,'E':/[ÈÉÊËĚĘ]/g,'g':/[ğ]/g,'G':/[Ğ]/g,'i':/[ìíîï]/g,'I':/[ÌÍÎÏ]/g,'l':/[ĺľł]/g,'L':/[ĹĽŁ]/g,'n':/[ñňń]/g,'N':/[ÑŇŃ]/g,'o':/[òóôõöøő]/g,'O':/[ÒÓÔÕÖØ]/g,'r':/[řŕ]/g,'R':/[ŘŔ]/g,'s':/[ššş]/g,'S':/[ŠŞŚ]/g,'t':/[ťţ]/g,'T':/[ŤŢ]/g,'ue':/[ü]/g,'UE':/[Ü]/g,'u':/[ùúûůµ]/g,'U':/[ÙÚÛŮ]/g,'y':/[ÿý]/g,'Y':/[ŸÝ]/g,'z':/[žźż]/g,'Z':/[ŽŹŻ]/g,'th':/[þ]/g,'TH':/[Þ]/g,'dh':/[ð]/g,'DH':/[Ð]/g,'ss':/[ß]/g,'oe':/[œ]/g,'OE':/[Œ]/g,'ae':/[æ]/g,'AE':/[Æ]/g},tidy={' ':/[\xa0\u2002\u2003\u2009]/g,'*':/[\xb7]/g,'\'':/[\u2018\u2019]/g,'"':/[\u201c\u201d]/g,'...':/[\u2026]/g,'-':/[\u2013]/g,'&raquo;':/[\uFFFD]/g};var walk=function(string,replacements){var result=string,key;for(key in replacements)result=result.replace(replacements[key],key);return result;};var getRegexForTag=function(tag,contents){tag=tag||'';var regstr=contents?"<"+tag+"(?!\\w)[^>]*>([\\s\\S]*?)<\/"+tag+"(?!\\w)>":"<\/?"+tag+"([^>]+)?>",reg=new RegExp(regstr,"gi");return reg;};String.implement({standardize:function(){return walk(this,special);},repeat:function(times){return new Array(times+1).join(this);},pad:function(length,str,direction){if(this.length>=length)return this;var pad=(str==null?' ':''+str).repeat(length-this.length).substr(0,length-this.length);if(!direction||direction=='right')return this+pad;if(direction=='left')return pad+this;return pad.substr(0,(pad.length/2).floor())+this+pad.substr(0,(pad.length/2).ceil());},getTags:function(tag,contents){return this.match(getRegexForTag(tag,contents))||[];},stripTags:function(tag,contents){return this.replace(getRegexForTag(tag,contents),'');},tidy:function(){return walk(this,tidy);},truncate:function(max,trail,atChar){var string=this;if(trail==null&&arguments.length==1)trail='…';if(string.length>max){string=string.substring(0,max);if(atChar){var index=string.lastIndexOf(atChar);if(index!=-1)string=string.substr(0,index);}
if(trail)string+=trail;}
return string;}});})();Class.refactor=function(original,refactors){Object.each(refactors,function(item,name){var origin=original.prototype[name];origin=(origin&&origin.$origin)||origin||function(){};original.implement(name,(typeof item=='function')?function(){var old=this.previous;this.previous=origin;var value=item.apply(this,arguments);this.previous=old;return value;}:item);});return original;};(function(){var toString=function(){return this.get('value');};var URI=this.URI=new Class({Implements:Options,options:{},regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:['scheme','user','password','host','port','directory','file','query','fragment'],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(uri,options){this.setOptions(options);var base=this.options.base||URI.base;if(!uri)uri=base;if(uri&&uri.parsed)this.parsed=Object.clone(uri.parsed);else this.set('value',uri.href||uri.toString(),base?new URI(base):false);},parse:function(value,base){var bits=value.match(this.regex);if(!bits)return false;bits.shift();return this.merge(bits.associate(this.parts),base);},merge:function(bits,base){if((!bits||!bits.scheme)&&(!base||!base.scheme))return false;if(base){this.parts.every(function(part){if(bits[part])return false;bits[part]=base[part]||'';return true;});}
bits.port=bits.port||this.schemes[bits.scheme.toLowerCase()];bits.directory=bits.directory?this.parseDirectory(bits.directory,base?base.directory:''):'/';return bits;},parseDirectory:function(directory,baseDirectory){directory=(directory.substr(0,1)=='/'?'':(baseDirectory||'/'))+directory;if(!directory.test(URI.regs.directoryDot))return directory;var result=[];directory.replace(URI.regs.endSlash,'').split('/').each(function(dir){if(dir=='..'&&result.length>0)result.pop();else if(dir!='.')result.push(dir);});return result.join('/')+'/';},combine:function(bits){return bits.value||bits.scheme+'://'+
(bits.user?bits.user+(bits.password?':'+bits.password:'')+'@':'')+
(bits.host||'')+(bits.port&&bits.port!=this.schemes[bits.scheme]?':'+bits.port:'')+
(bits.directory||'/')+(bits.file||'')+
(bits.query?'?'+bits.query:'')+
(bits.fragment?'#'+bits.fragment:'');},set:function(part,value,base){if(part=='value'){var scheme=value.match(URI.regs.scheme);if(scheme)scheme=scheme[1];if(scheme&&this.schemes[scheme.toLowerCase()]==null)this.parsed={scheme:scheme,value:value};else this.parsed=this.parse(value,(base||this).parsed)||(scheme?{scheme:scheme,value:value}:{value:value});}else if(part=='data'){this.setData(value);}else{this.parsed[part]=value;}
return this;},get:function(part,base){switch(part){case'value':return this.combine(this.parsed,base?base.parsed:false);case'data':return this.getData();}
return this.parsed[part]||'';},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(key,part){var qs=this.get(part||'query');if(!(qs||qs===0))return key?null:{};var obj=qs.parseQueryString();return key?obj[key]:obj;},setData:function(values,merge,part){if(typeof values=='string'){var data=this.getData();data[arguments[0]]=arguments[1];values=data;}else if(merge){values=Object.merge(this.getData(),values);}
return this.set(part||'query',Object.toQueryString(values));},clearData:function(part){return this.set(part||'query','');},toString:toString,valueOf:toString});URI.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};URI.base=new URI(Array.from(document.getElements('base[href]',true)).getLast(),{base:document.location});String.implement({toURI:function(options){return new URI(this,options);}});})();URI=Class.refactor(URI,{combine:function(bits,base){if(!base||bits.scheme!=base.scheme||bits.host!=base.host||bits.port!=base.port)
return this.previous.apply(this,arguments);var end=bits.file+(bits.query?'?'+bits.query:'')+(bits.fragment?'#'+bits.fragment:'');if(!base.directory)return(bits.directory||(bits.file?'':'./'))+end;var baseDir=base.directory.split('/'),relDir=bits.directory.split('/'),path='',offset;var i=0;for(offset=0;offset<baseDir.length&&offset<relDir.length&&baseDir[offset]==relDir[offset];offset++);for(i=0;i<baseDir.length-offset-1;i++)path+='../';for(i=offset;i<relDir.length-1;i++)path+=relDir[i]+'/';return(path||(bits.file?'':'./'))+end;},toAbsolute:function(base){base=new URI(base);if(base)base.set('directory','').set('file','');return this.toRelative(base);},toRelative:function(base){return this.get('value',new URI(base));}});(function(){Events.Pseudos=function(pseudos,addEvent,removeEvent){var storeKey='_monitorEvents:';var storageOf=function(object){return{store:object.store?function(key,value){object.store(storeKey+key,value);}:function(key,value){(object._monitorEvents||(object._monitorEvents={}))[key]=value;},retrieve:object.retrieve?function(key,dflt){return object.retrieve(storeKey+key,dflt);}:function(key,dflt){if(!object._monitorEvents)return dflt;return object._monitorEvents[key]||dflt;}};};var splitType=function(type){if(type.indexOf(':')==-1||!pseudos)return null;var parsed=Slick.parse(type).expressions[0][0],parsedPseudos=parsed.pseudos,l=parsedPseudos.length,splits=[];while(l--){var pseudo=parsedPseudos[l].key,listener=pseudos[pseudo];if(listener!=null)splits.push({event:parsed.tag,value:parsedPseudos[l].value,pseudo:pseudo,original:type,listener:listener});}
return splits.length?splits:null;};return{addEvent:function(type,fn,internal){var split=splitType(type);if(!split)return addEvent.call(this,type,fn,internal);var storage=storageOf(this),events=storage.retrieve(type,[]),eventType=split[0].event,args=Array.slice(arguments,2),stack=fn,self=this;split.each(function(item){var listener=item.listener,stackFn=stack;if(listener==false)eventType+=':'+item.pseudo+'('+item.value+')';else stack=function(){listener.call(self,item,stackFn,arguments,stack);};});events.include({type:eventType,event:fn,monitor:stack});storage.store(type,events);if(type!=eventType)addEvent.apply(this,[type,fn].concat(args));return addEvent.apply(this,[eventType,stack].concat(args));},removeEvent:function(type,fn){var split=splitType(type);if(!split)return removeEvent.call(this,type,fn);var storage=storageOf(this),events=storage.retrieve(type);if(!events)return this;var args=Array.slice(arguments,2);removeEvent.apply(this,[type,fn].concat(args));events.each(function(monitor,i){if(!fn||monitor.event==fn)removeEvent.apply(this,[monitor.type,monitor.monitor].concat(args));delete events[i];},this);storage.store(type,events);return this;}};};var pseudos={once:function(split,fn,args,monitor){fn.apply(this,args);this.removeEvent(split.event,monitor).removeEvent(split.original,fn);},throttle:function(split,fn,args){if(!fn._throttled){fn.apply(this,args);fn._throttled=setTimeout(function(){fn._throttled=false;},split.value||250);}},pause:function(split,fn,args){clearTimeout(fn._pause);fn._pause=fn.delay(split.value||250,this,args);}};Events.definePseudo=function(key,listener){pseudos[key]=listener;return this;};Events.lookupPseudo=function(key){return pseudos[key];};var proto=Events.prototype;Events.implement(Events.Pseudos(pseudos,proto.addEvent,proto.removeEvent));['Request','Fx'].each(function(klass){if(this[klass])this[klass].implement(Events.prototype);});})();(function(){var pseudos={relay:false},copyFromEvents=['once','throttle','pause'],count=copyFromEvents.length;while(count--)pseudos[copyFromEvents[count]]=Events.lookupPseudo(copyFromEvents[count]);DOMEvent.definePseudo=function(key,listener){pseudos[key]=listener;return this;};var proto=Element.prototype;[Element,Window,Document].invoke('implement',Events.Pseudos(pseudos,proto.addEvent,proto.removeEvent));})();(function(){var keysStoreKey='$moo:keys-pressed',keysKeyupStoreKey='$moo:keys-keyup';DOMEvent.definePseudo('keys',function(split,fn,args){var event=args[0],keys=[],pressed=this.retrieve(keysStoreKey,[]);keys.append(split.value.replace('++',function(){keys.push('+');return'';}).split('+'));pressed.include(event.key);if(keys.every(function(key){return pressed.contains(key);}))fn.apply(this,args);this.store(keysStoreKey,pressed);if(!this.retrieve(keysKeyupStoreKey)){var keyup=function(event){(function(){pressed=this.retrieve(keysStoreKey,[]).erase(event.key);this.store(keysStoreKey,pressed);}).delay(0,this);};this.store(keysKeyupStoreKey,keyup).addEvent('keyup',keyup);}});DOMEvent.defineKeys({'16':'shift','17':'control','18':'alt','20':'capslock','33':'pageup','34':'pagedown','35':'end','36':'home','144':'numlock','145':'scrolllock','186':';','187':'=','188':',','190':'.','191':'/','192':'`','219':'[','220':'\\','221':']','222':"'",'107':'+'}).defineKey(Browser.firefox?109:189,'-');})();(function(){var supportsPositionFixed=false,supportTested=false;var testPositionFixed=function(){var test=new Element('div').setStyles({position:'fixed',top:0,right:0}).inject(document.body);supportsPositionFixed=(test.offsetTop===0);test.dispose();supportTested=true;};Element.implement({pin:function(enable,forceScroll){if(!supportTested)testPositionFixed();if(this.getStyle('display')=='none')return this;var pinnedPosition,scroll=window.getScroll(),parent,scrollFixer;if(enable!==false){pinnedPosition=this.getPosition(supportsPositionFixed?document.body:this.getOffsetParent());if(!this.retrieve('pin:_pinned')){var currentPosition={top:pinnedPosition.y-scroll.y,left:pinnedPosition.x-scroll.x};if(supportsPositionFixed&&!forceScroll){this.setStyle('position','fixed').setStyles(currentPosition);}else{parent=this.getOffsetParent();var position=this.getPosition(parent),styles=this.getStyles('left','top');if(parent&&styles.left=='auto'||styles.top=='auto')this.setPosition(position);if(this.getStyle('position')=='static')this.setStyle('position','absolute');position={x:styles.left.toInt()-scroll.x,y:styles.top.toInt()-scroll.y};scrollFixer=function(){if(!this.retrieve('pin:_pinned'))return;var scroll=window.getScroll();this.setStyles({left:position.x+scroll.x,top:position.y+scroll.y});}.bind(this);this.store('pin:_scrollFixer',scrollFixer);window.addEvent('scroll',scrollFixer);}
this.store('pin:_pinned',true);}}else{if(!this.retrieve('pin:_pinned'))return this;parent=this.getParent();var offsetParent=(parent.getComputedStyle('position')!='static'?parent:parent.getOffsetParent());pinnedPosition=this.getPosition(offsetParent);this.store('pin:_pinned',false);scrollFixer=this.retrieve('pin:_scrollFixer');if(!scrollFixer){this.setStyles({position:'absolute',top:pinnedPosition.y+scroll.y,left:pinnedPosition.x+scroll.x});}else{this.store('pin:_scrollFixer',null);window.removeEvent('scroll',scrollFixer);}
this.removeClass('isPinned');}
return this;},unpin:function(){return this.pin(false);},togglePin:function(){return this.pin(!this.retrieve('pin:_pinned'));}});})();(function(){var getStylesList=function(styles,planes){var list=[];Object.each(planes,function(directions){Object.each(directions,function(edge){styles.each(function(style){list.push(style+'-'+edge+(style=='border'?'-width':''));});});});return list;};var calculateEdgeSize=function(edge,styles){var total=0;Object.each(styles,function(value,style){if(style.test(edge))total=total+value.toInt();});return total;};var isVisible=function(el){return!!(!el||el.offsetHeight||el.offsetWidth);};Element.implement({measure:function(fn){if(isVisible(this))return fn.call(this);var parent=this.getParent(),toMeasure=[];while(!isVisible(parent)&&parent!=document.body){toMeasure.push(parent.expose());parent=parent.getParent();}
var restore=this.expose(),result=fn.call(this);restore();toMeasure.each(function(restore){restore();});return result;},expose:function(){if(this.getStyle('display')!='none')return function(){};var before=this.style.cssText;this.setStyles({display:'block',position:'absolute',visibility:'hidden'});return function(){this.style.cssText=before;}.bind(this);},getDimensions:function(options){options=Object.merge({computeSize:false},options);var dim={x:0,y:0};var getSize=function(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize();};var parent=this.getParent('body');if(parent&&this.getStyle('display')=='none'){dim=this.measure(function(){return getSize(this,options);});}else if(parent){try{dim=getSize(this,options);}catch(e){}}
return Object.append(dim,(dim.x||dim.x===0)?{width:dim.x,height:dim.y}:{x:dim.width,y:dim.height});},getComputedSize:function(options){options=Object.merge({styles:['padding','border'],planes:{height:['top','bottom'],width:['left','right']},mode:'both'},options);var styles={},size={width:0,height:0},dimensions;if(options.mode=='vertical'){delete size.width;delete options.planes.width;}else if(options.mode=='horizontal'){delete size.height;delete options.planes.height;}
getStylesList(options.styles,options.planes).each(function(style){styles[style]=this.getStyle(style).toInt();},this);Object.each(options.planes,function(edges,plane){var capitalized=plane.capitalize(),style=this.getStyle(plane);if(style=='auto'&&!dimensions)dimensions=this.getDimensions();style=styles[plane]=(style=='auto')?dimensions[plane]:style.toInt();size['total'+capitalized]=style;edges.each(function(edge){var edgesize=calculateEdgeSize(edge,styles);size['computed'+edge.capitalize()]=edgesize;size['total'+capitalized]+=edgesize;});},this);return Object.append(size,styles);}});})();Elements.from=function(text,excludeScripts){if(excludeScripts||excludeScripts==null)text=text.stripScripts();var container,match=text.match(/^\s*<(t[dhr]|tbody|tfoot|thead)/i);if(match){container=new Element('table');var tag=match[1].toLowerCase();if(['td','th','tr'].contains(tag)){container=new Element('tbody').inject(container);if(tag!='tr')container=new Element('tr').inject(container);}}
return(container||new Element('div')).set('html',text).getChildren();};Element.implement({tidy:function(){this.set('value',this.get('value').tidy());},getTextInRange:function(start,end){return this.get('value').substring(start,end);},getSelectedText:function(){if(this.setSelectionRange)return this.getTextInRange(this.getSelectionStart(),this.getSelectionEnd());return document.selection.createRange().text;},getSelectedRange:function(){if(this.selectionStart!=null){return{start:this.selectionStart,end:this.selectionEnd};}
var pos={start:0,end:0};var range=this.getDocument().selection.createRange();if(!range||range.parentElement()!=this)return pos;var duplicate=range.duplicate();if(this.type=='text'){pos.start=0-duplicate.moveStart('character',-100000);pos.end=pos.start+range.text.length;}else{var value=this.get('value');var offset=value.length;duplicate.moveToElementText(this);duplicate.setEndPoint('StartToEnd',range);if(duplicate.text.length)offset-=value.match(/[\n\r]*$/)[0].length;pos.end=offset-duplicate.text.length;duplicate.setEndPoint('StartToStart',range);pos.start=offset-duplicate.text.length;}
return pos;},getSelectionStart:function(){return this.getSelectedRange().start;},getSelectionEnd:function(){return this.getSelectedRange().end;},setCaretPosition:function(pos){if(pos=='end')pos=this.get('value').length;this.selectRange(pos,pos);return this;},getCaretPosition:function(){return this.getSelectedRange().start;},selectRange:function(start,end){if(this.setSelectionRange){this.focus();this.setSelectionRange(start,end);}else{var value=this.get('value');var diff=value.substr(start,end-start).replace(/\r/g,'').length;start=value.substr(0,start).replace(/\r/g,'').length;var range=this.createTextRange();range.collapse(true);range.moveEnd('character',start+diff);range.moveStart('character',start);range.select();}
return this;},insertAtCursor:function(value,select){var pos=this.getSelectedRange();var text=this.get('value');this.set('value',text.substring(0,pos.start)+value+text.substring(pos.end,text.length));if(select!==false)this.selectRange(pos.start,pos.start+value.length);else this.setCaretPosition(pos.start+value.length);return this;},insertAroundCursor:function(options,select){options=Object.append({before:'',defaultMiddle:'',after:''},options);var value=this.getSelectedText()||options.defaultMiddle;var pos=this.getSelectedRange();var text=this.get('value');if(pos.start==pos.end){this.set('value',text.substring(0,pos.start)+options.before+value+options.after+text.substring(pos.end,text.length));this.selectRange(pos.start+options.before.length,pos.end+options.before.length+value.length);}else{var current=text.substring(pos.start,pos.end);this.set('value',text.substring(0,pos.start)+options.before+current+options.after+text.substring(pos.end,text.length));var selStart=pos.start+options.before.length;if(select!==false)this.selectRange(selStart,selStart+current.length);else this.setCaretPosition(selStart+text.length);}
return this;}});(function(original){var local=Element.Position={options:{relativeTo:document.body,position:{x:'center',y:'center'},offset:{x:0,y:0}},getOptions:function(element,options){options=Object.merge({},local.options,options);local.setPositionOption(options);local.setEdgeOption(options);local.setOffsetOption(element,options);local.setDimensionsOption(element,options);return options;},setPositionOption:function(options){options.position=local.getCoordinateFromValue(options.position);},setEdgeOption:function(options){var edgeOption=local.getCoordinateFromValue(options.edge);options.edge=edgeOption?edgeOption:(options.position.x=='center'&&options.position.y=='center')?{x:'center',y:'center'}:{x:'left',y:'top'};},setOffsetOption:function(element,options){var parentOffset={x:0,y:0},offsetParent=element.measure(function(){return document.id(this.getOffsetParent());}),parentScroll=offsetParent.getScroll();if(!offsetParent||offsetParent==element.getDocument().body)return;parentOffset=offsetParent.measure(function(){var position=this.getPosition();if(this.getStyle('position')=='fixed'){var scroll=window.getScroll();position.x+=scroll.x;position.y+=scroll.y;}
return position;});options.offset={parentPositioned:offsetParent!=document.id(options.relativeTo),x:options.offset.x-parentOffset.x+parentScroll.x,y:options.offset.y-parentOffset.y+parentScroll.y};},setDimensionsOption:function(element,options){options.dimensions=element.getDimensions({computeSize:true,styles:['padding','border','margin']});},getPosition:function(element,options){var position={};options=local.getOptions(element,options);var relativeTo=document.id(options.relativeTo)||document.body;local.setPositionCoordinates(options,position,relativeTo);if(options.edge)local.toEdge(position,options);var offset=options.offset;position.left=((position.x>=0||offset.parentPositioned||options.allowNegative)?position.x:0).toInt();position.top=((position.y>=0||offset.parentPositioned||options.allowNegative)?position.y:0).toInt();local.toMinMax(position,options);if(options.relFixedPosition||relativeTo.getStyle('position')=='fixed')local.toRelFixedPosition(relativeTo,position);if(options.ignoreScroll)local.toIgnoreScroll(relativeTo,position);if(options.ignoreMargins)local.toIgnoreMargins(position,options);position.left=Math.ceil(position.left);position.top=Math.ceil(position.top);delete position.x;delete position.y;return position;},setPositionCoordinates:function(options,position,relativeTo){var offsetY=options.offset.y,offsetX=options.offset.x,calc=(relativeTo==document.body)?window.getScroll():relativeTo.getPosition(),top=calc.y,left=calc.x,winSize=window.getSize();switch(options.position.x){case'left':position.x=left+offsetX;break;case'right':position.x=left+offsetX+relativeTo.offsetWidth;break;default:position.x=left+((relativeTo==document.body?winSize.x:relativeTo.offsetWidth)/2)+offsetX;break;}
switch(options.position.y){case'top':position.y=top+offsetY;break;case'bottom':position.y=top+offsetY+relativeTo.offsetHeight;break;default:position.y=top+((relativeTo==document.body?winSize.y:relativeTo.offsetHeight)/2)+offsetY;break;}},toMinMax:function(position,options){var xy={left:'x',top:'y'},value;['minimum','maximum'].each(function(minmax){['left','top'].each(function(lr){value=options[minmax]?options[minmax][xy[lr]]:null;if(value!=null&&((minmax=='minimum')?position[lr]<value:position[lr]>value))position[lr]=value;});});},toRelFixedPosition:function(relativeTo,position){var winScroll=window.getScroll();position.top+=winScroll.y;position.left+=winScroll.x;},toIgnoreScroll:function(relativeTo,position){var relScroll=relativeTo.getScroll();position.top-=relScroll.y;position.left-=relScroll.x;},toIgnoreMargins:function(position,options){position.left+=options.edge.x=='right'?options.dimensions['margin-right']:(options.edge.x!='center'?-options.dimensions['margin-left']:-options.dimensions['margin-left']+((options.dimensions['margin-right']+options.dimensions['margin-left'])/2));position.top+=options.edge.y=='bottom'?options.dimensions['margin-bottom']:(options.edge.y!='center'?-options.dimensions['margin-top']:-options.dimensions['margin-top']+((options.dimensions['margin-bottom']+options.dimensions['margin-top'])/2));},toEdge:function(position,options){var edgeOffset={},dimensions=options.dimensions,edge=options.edge;switch(edge.x){case'left':edgeOffset.x=0;break;case'right':edgeOffset.x=-dimensions.x-dimensions.computedRight-dimensions.computedLeft;break;default:edgeOffset.x=-(Math.round(dimensions.totalWidth/2));break;}
switch(edge.y){case'top':edgeOffset.y=0;break;case'bottom':edgeOffset.y=-dimensions.y-dimensions.computedTop-dimensions.computedBottom;break;default:edgeOffset.y=-(Math.round(dimensions.totalHeight/2));break;}
position.x+=edgeOffset.x;position.y+=edgeOffset.y;},getCoordinateFromValue:function(option){if(typeOf(option)!='string')return option;option=option.toLowerCase();return{x:option.test('left')?'left':(option.test('right')?'right':'center'),y:option.test(/upper|top/)?'top':(option.test('bottom')?'bottom':'center')};}};Element.implement({position:function(options){if(options&&(options.x!=null||options.y!=null)){return(original?original.apply(this,arguments):this);}
var position=this.setStyle('position','absolute').calculatePosition(options);return(options&&options.returnPos)?position:this.setStyles(position);},calculatePosition:function(options){return local.getPosition(this,options);}});})(Element.prototype.position);Element.implement({isDisplayed:function(){return this.getStyle('display')!='none';},isVisible:function(){var w=this.offsetWidth,h=this.offsetHeight;return(w==0&&h==0)?false:(w>0&&h>0)?true:this.style.display!='none';},toggle:function(){return this[this.isDisplayed()?'hide':'show']();},hide:function(){var d;try{d=this.getStyle('display');}catch(e){}
if(d=='none')return this;return this.store('element:_originalDisplay',d||'').setStyle('display','none');},show:function(display){if(!display&&this.isDisplayed())return this;display=display||this.retrieve('element:_originalDisplay')||'block';return this.setStyle('display',(display=='none')?'block':display);},swapClass:function(remove,add){return this.removeClass(remove).addClass(add);}});Document.implement({clearSelection:function(){if(window.getSelection){var selection=window.getSelection();if(selection&&selection.removeAllRanges)selection.removeAllRanges();}else if(document.selection&&document.selection.empty){try{document.selection.empty();}catch(e){}}}});Class.Occlude=new Class({occlude:function(property,element){element=document.id(element||this.element);var instance=element.retrieve(property||this.property);if(instance&&!this.occluded)
return(this.occluded=instance);this.occluded=false;element.store(property||this.property,this);return this.occluded;}});(function(){var wait={wait:function(duration){return this.chain(function(){this.callChain.delay(duration==null?500:duration,this);return this;}.bind(this));}};Chain.implement(wait);if(this.Fx)Fx.implement(wait);if(this.Element&&Element.implement&&this.Fx){Element.implement({chains:function(effects){Array.from(effects||['tween','morph','reveal']).each(function(effect){effect=this.get(effect);if(!effect)return;effect.setOptions({link:'chain'});},this);return this;},pauseFx:function(duration,effect){this.chains(effect).get(effect||'tween').wait(duration);return this;}});}})();Locale.define('ar','FormValidator',{required:'هذا الحقل مطلوب.',minLength:'رجاءً إدخال {minLength} أحرف على الأقل (تم إدخال {length} أحرف).',maxLength:'الرجاء عدم إدخال أكثر من {maxLength} أحرف (تم إدخال {length} أحرف).',integer:'الرجاء إدخال عدد صحيح في هذا الحقل. أي رقم ذو كسر عشري أو مئوي (مثال 1.25 ) غير مسموح.',numeric:'الرجاء إدخال قيم رقمية في هذا الحقل (مثال "1" أو "1.1" أو "-1" أو "-1.1").',digits:'الرجاء أستخدام قيم رقمية وعلامات ترقيمية فقط في هذا الحقل (مثال, رقم هاتف مع نقطة أو شحطة)',alpha:'الرجاء أستخدام أحرف فقط (ا-ي) في هذا الحقل. أي فراغات أو علامات غير مسموحة.',alphanum:'الرجاء أستخدام أحرف فقط (ا-ي) أو أرقام (0-9) فقط في هذا الحقل. أي فراغات أو علامات غير مسموحة.',dateSuchAs:'الرجاء إدخال تاريخ صحيح كالتالي {date}',dateInFormatMDY:'الرجاء إدخال تاريخ صحيح (مثال, 31-12-1999)',email:'الرجاء إدخال بريد إلكتروني صحيح.',url:'الرجاء إدخال عنوان إلكتروني صحيح مثل http://www.example.com',currencyDollar:'الرجاء إدخال قيمة $ صحيحة. مثال, 100.00$',oneRequired:'الرجاء إدخال قيمة في أحد هذه الحقول على الأقل.',errorPrefix:'خطأ: ',warningPrefix:'تحذير: '});Locale.define('et-EE','Date',{months:['jaanuar','veebruar','märts','aprill','mai','juuni','juuli','august','september','oktoober','november','detsember'],months_abbr:['jaan','veebr','märts','apr','mai','juuni','juuli','aug','sept','okt','nov','dets'],days:['pühapäev','esmaspäev','teisipäev','kolmapäev','neljapäev','reede','laupäev'],days_abbr:['pühap','esmasp','teisip','kolmap','neljap','reede','laup'],dateOrder:['month','date','year'],shortDate:'%m.%d.%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'vähem kui minut aega tagasi',minuteAgo:'umbes minut aega tagasi',minutesAgo:'{delta} minutit tagasi',hourAgo:'umbes tund aega tagasi',hoursAgo:'umbes {delta} tundi tagasi',dayAgo:'1 päev tagasi',daysAgo:'{delta} päeva tagasi',weekAgo:'1 nädal tagasi',weeksAgo:'{delta} nädalat tagasi',monthAgo:'1 kuu tagasi',monthsAgo:'{delta} kuud tagasi',yearAgo:'1 aasta tagasi',yearsAgo:'{delta} aastat tagasi',lessThanMinuteUntil:'vähem kui minuti aja pärast',minuteUntil:'umbes minuti aja pärast',minutesUntil:'{delta} minuti pärast',hourUntil:'umbes tunni aja pärast',hoursUntil:'umbes {delta} tunni pärast',dayUntil:'1 päeva pärast',daysUntil:'{delta} päeva pärast',weekUntil:'1 nädala pärast',weeksUntil:'{delta} nädala pärast',monthUntil:'1 kuu pärast',monthsUntil:'{delta} kuu pärast',yearUntil:'1 aasta pärast',yearsUntil:'{delta} aasta pärast'});Locale.define('de-CH','FormValidator',{required:'Dieses Feld ist obligatorisch.',minLength:'Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).',maxLength:'Bitte geben Sie nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).',integer:'Geben Sie bitte eine ganze Zahl ein. Dezimalzahlen (z.B. 1.25) sind nicht erlaubt.',numeric:'Geben Sie bitte nur Zahlenwerte in dieses Eingabefeld ein (z.B. &quot;1&quot;, &quot;1.1&quot;, &quot;-1&quot; oder &quot;-1.1&quot;).',digits:'Benutzen Sie bitte nur Zahlen und Satzzeichen in diesem Eingabefeld (erlaubt ist z.B. eine Telefonnummer mit Bindestrichen und Punkten).',alpha:'Benutzen Sie bitte nur Buchstaben (a-z) in diesem Feld. Leerzeichen und andere Zeichen sind nicht erlaubt.',alphanum:'Benutzen Sie bitte nur Buchstaben (a-z) und Zahlen (0-9) in diesem Eingabefeld. Leerzeichen und andere Zeichen sind nicht erlaubt.',dateSuchAs:'Geben Sie bitte ein g&uuml;ltiges Datum ein. Wie zum Beispiel {date}',dateInFormatMDY:'Geben Sie bitte ein g&uuml;ltiges Datum ein. Wie zum Beispiel TT.MM.JJJJ (z.B. &quot;31.12.1999&quot;)',email:'Geben Sie bitte eine g&uuml;ltige E-Mail Adresse ein. Wie zum Beispiel &quot;maria@bernasconi.ch&quot;.',url:'Geben Sie bitte eine g&uuml;ltige URL ein. Wie zum Beispiel http://www.example.com.',currencyDollar:'Geben Sie bitte einen g&uuml;ltigen Betrag in Schweizer Franken ein. Wie zum Beispiel 100.00 CHF .',oneRequired:'Machen Sie f&uuml;r mindestens eines der Eingabefelder einen Eintrag.',errorPrefix:'Fehler: ',warningPrefix:'Warnung: ',noSpace:'In diesem Eingabefeld darf kein Leerzeichen sein.',reqChkByNode:'Es wurden keine Elemente gew&auml;hlt.',requiredChk:'Dieses Feld ist obligatorisch.',reqChkByName:'Bitte w&auml;hlen Sie ein {label}.',match:'Dieses Eingabefeld muss mit dem Feld {matchName} &uuml;bereinstimmen.',startDate:'Das Anfangsdatum',endDate:'Das Enddatum',currendDate:'Das aktuelle Datum',afterDate:'Das Datum sollte zur gleichen Zeit oder sp&auml;ter sein {label}.',beforeDate:'Das Datum sollte zur gleichen Zeit oder fr&uuml;her sein {label}.',startMonth:'W&auml;hlen Sie bitte einen Anfangsmonat',sameMonth:'Diese zwei Datumsangaben m&uuml;ssen im selben Monat sein - Sie m&uuml;ssen eine von beiden ver&auml;ndern.',creditcard:'Die eingegebene Kreditkartennummer ist ung&uuml;ltig. Bitte &uuml;berpr&uuml;fen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.'});Locale.define('da-DK','Date',{months:['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],months_abbr:['jan.','feb.','mar.','apr.','maj.','jun.','jul.','aug.','sep.','okt.','nov.','dec.'],days:['Søndag','Mandag','Tirsdag','Onsdag','Torsdag','Fredag','Lørdag'],days_abbr:['søn','man','tir','ons','tor','fre','lør'],dateOrder:['date','month','year'],shortDate:'%d-%m-%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'mindre end et minut siden',minuteAgo:'omkring et minut siden',minutesAgo:'{delta} minutter siden',hourAgo:'omkring en time siden',hoursAgo:'omkring {delta} timer siden',dayAgo:'1 dag siden',daysAgo:'{delta} dage siden',weekAgo:'1 uge siden',weeksAgo:'{delta} uger siden',monthAgo:'1 måned siden',monthsAgo:'{delta} måneder siden',yearAgo:'1 år siden',yearsAgo:'{delta} år siden',lessThanMinuteUntil:'mindre end et minut fra nu',minuteUntil:'omkring et minut fra nu',minutesUntil:'{delta} minutter fra nu',hourUntil:'omkring en time fra nu',hoursUntil:'omkring {delta} timer fra nu',dayUntil:'1 dag fra nu',daysUntil:'{delta} dage fra nu',weekUntil:'1 uge fra nu',weeksUntil:'{delta} uger fra nu',monthUntil:'1 måned fra nu',monthsUntil:'{delta} måneder fra nu',yearUntil:'1 år fra nu',yearsUntil:'{delta} år fra nu'});Locale.define('cs-CZ','FormValidator',{required:'Tato položka je povinná.',minLength:'Zadejte prosím alespoň {minLength} znaků (napsáno {length} znaků).',maxLength:'Zadejte prosím méně než {maxLength} znaků (nápsáno {length} znaků).',integer:'Zadejte prosím celé číslo. Desetinná čísla (např. 1.25) nejsou povolena.',numeric:'Zadejte jen číselné hodnoty (tj. "1" nebo "1.1" nebo "-1" nebo "-1.1").',digits:'Zadejte prosím pouze čísla a interpunkční znaménka(například telefonní číslo s pomlčkami nebo tečkami je povoleno).',alpha:'Zadejte prosím pouze písmena (a-z). Mezery nebo jiné znaky nejsou povoleny.',alphanum:'Zadejte prosím pouze písmena (a-z) nebo číslice (0-9). Mezery nebo jiné znaky nejsou povoleny.',dateSuchAs:'Zadejte prosím platné datum jako {date}',dateInFormatMDY:'Zadejte prosím platné datum jako MM / DD / RRRR (tj. "12/31/1999")',email:'Zadejte prosím platnou e-mailovou adresu. Například "fred@domain.com".',url:'Zadejte prosím platnou URL adresu jako http://www.example.com.',currencyDollar:'Zadejte prosím platnou částku. Například $100.00.',oneRequired:'Zadejte prosím alespoň jednu hodnotu pro tyto položky.',errorPrefix:'Chyba: ',warningPrefix:'Upozornění: ',noSpace:'V této položce nejsou povoleny mezery',reqChkByNode:'Nejsou vybrány žádné položky.',requiredChk:'Tato položka je vyžadována.',reqChkByName:'Prosím vyberte {label}.',match:'Tato položka se musí shodovat s položkou {matchName}',startDate:'datum zahájení',endDate:'datum ukončení',currendDate:'aktuální datum',afterDate:'Datum by mělo být stejné nebo větší než {label}.',beforeDate:'Datum by mělo být stejné nebo menší než {label}.',startMonth:'Vyberte počáteční měsíc.',sameMonth:'Tyto dva datumy musí být ve stejném měsíci - změňte jeden z nich.',creditcard:'Zadané číslo kreditní karty je neplatné. Prosím opravte ho. Bylo zadáno {length} čísel.'});Locale.define('es-VE','Number',{decimal:',',group:'.',negative:{prefix:'-'},currency:{decimals:2,prefix:'Bs. '},percentage:{decimals:2,suffix:'%'}});(function(){var parsers={'json':JSON.decode};Locale.Set.defineParser=function(name,fn){parsers[name]=fn;};Locale.Set.from=function(set,type){if(instanceOf(set,Locale.Set))return set;if(!type&&typeOf(set)=='string')type='json';if(parsers[type])set=parsers[type](set);var locale=new Locale.Set;locale.sets=set.sets||{};if(set.inherits){locale.inherits.locales=Array.from(set.inherits.locales);locale.inherits.sets=set.inherits.sets||{};}
return locale;};})();Locale.define('nl-NL','Date',{months:['januari','februari','maart','april','mei','juni','juli','augustus','september','oktober','november','december'],months_abbr:['jan','feb','mrt','apr','mei','jun','jul','aug','sep','okt','nov','dec'],days:['zondag','maandag','dinsdag','woensdag','donderdag','vrijdag','zaterdag'],days_abbr:['zo','ma','di','wo','do','vr','za'],dateOrder:['date','month','year'],shortDate:'%d-%m-%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'e',lessThanMinuteAgo:'minder dan een minuut geleden',minuteAgo:'ongeveer een minuut geleden',minutesAgo:'{delta} minuten geleden',hourAgo:'ongeveer een uur geleden',hoursAgo:'ongeveer {delta} uur geleden',dayAgo:'een dag geleden',daysAgo:'{delta} dagen geleden',weekAgo:'een week geleden',weeksAgo:'{delta} weken geleden',monthAgo:'een maand geleden',monthsAgo:'{delta} maanden geleden',yearAgo:'een jaar geleden',yearsAgo:'{delta} jaar geleden',lessThanMinuteUntil:'over minder dan een minuut',minuteUntil:'over ongeveer een minuut',minutesUntil:'over {delta} minuten',hourUntil:'over ongeveer een uur',hoursUntil:'over {delta} uur',dayUntil:'over ongeveer een dag',daysUntil:'over {delta} dagen',weekUntil:'over een week',weeksUntil:'over {delta} weken',monthUntil:'over een maand',monthsUntil:'over {delta} maanden',yearUntil:'over een jaar',yearsUntil:'over {delta} jaar'});Locale.define('EU','Number',{decimal:',',group:'.',currency:{prefix:'€ '}});Locale.define('fr-FR','Number',{group:' '}).inherit('EU','Number');(function(){var pluralize=function(n,one,two,three,other){return(n>=1&&n<=3)?arguments[n]:other;};Locale.define('si-SI','Date',{months:['januar','februar','marec','april','maj','junij','julij','avgust','september','oktober','november','december'],months_abbr:['jan','feb','mar','apr','maj','jun','jul','avg','sep','okt','nov','dec'],days:['nedelja','ponedeljek','torek','sreda','četrtek','petek','sobota'],days_abbr:['ned','pon','tor','sre','čet','pet','sob'],dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H.%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'manj kot minuto nazaj',minuteAgo:'minuto nazaj',minutesAgo:function(delta){return'{delta} '+pluralize(delta,'minuto','minuti','minute','minut')+' nazaj';},hourAgo:'uro nazaj',hoursAgo:function(delta){return'{delta} '+pluralize(delta,'uro','uri','ure','ur')+' nazaj';},dayAgo:'dan nazaj',daysAgo:function(delta){return'{delta} '+pluralize(delta,'dan','dneva','dni','dni')+' nazaj';},weekAgo:'teden nazaj',weeksAgo:function(delta){return'{delta} '+pluralize(delta,'teden','tedna','tedne','tednov')+' nazaj';},monthAgo:'mesec nazaj',monthsAgo:function(delta){return'{delta} '+pluralize(delta,'mesec','meseca','mesece','mesecov')+' nazaj';},yearthAgo:'leto nazaj',yearsAgo:function(delta){return'{delta} '+pluralize(delta,'leto','leti','leta','let')+' nazaj';},lessThanMinuteUntil:'še manj kot minuto',minuteUntil:'še minuta',minutesUntil:function(delta){return'še {delta} '+pluralize(delta,'minuta','minuti','minute','minut');},hourUntil:'še ura',hoursUntil:function(delta){return'še {delta} '+pluralize(delta,'ura','uri','ure','ur');},dayUntil:'še dan',daysUntil:function(delta){return'še {delta} '+pluralize(delta,'dan','dneva','dnevi','dni');},weekUntil:'še tedn',weeksUntil:function(delta){return'še {delta} '+pluralize(delta,'teden','tedna','tedni','tednov');},monthUntil:'še mesec',monthsUntil:function(delta){return'še {delta} '+pluralize(delta,'mesec','meseca','meseci','mesecov');},yearUntil:'še leto',yearsUntil:function(delta){return'še {delta} '+pluralize(delta,'leto','leti','leta','let');}});})();Locale.define('es-ES','Date',{months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],months_abbr:['ene','feb','mar','abr','may','jun','jul','ago','sep','oct','nov','dic'],days:['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'],days_abbr:['dom','lun','mar','mié','juv','vie','sáb'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'hace menos de un minuto',minuteAgo:'hace un minuto',minutesAgo:'hace {delta} minutos',hourAgo:'hace una hora',hoursAgo:'hace unas {delta} horas',dayAgo:'hace un día',daysAgo:'hace {delta} días',weekAgo:'hace una semana',weeksAgo:'hace unas {delta} semanas',monthAgo:'hace un mes',monthsAgo:'hace {delta} meses',yearAgo:'hace un año',yearsAgo:'hace {delta} años',lessThanMinuteUntil:'menos de un minuto desde ahora',minuteUntil:'un minuto desde ahora',minutesUntil:'{delta} minutos desde ahora',hourUntil:'una hora desde ahora',hoursUntil:'unas {delta} horas desde ahora',dayUntil:'un día desde ahora',daysUntil:'{delta} días desde ahora',weekUntil:'una semana desde ahora',weeksUntil:'unas {delta} semanas desde ahora',monthUntil:'un mes desde ahora',monthsUntil:'{delta} meses desde ahora',yearUntil:'un año desde ahora',yearsUntil:'{delta} años desde ahora'});Locale.define('es-VE').inherit('es-ES','Date');Locale.define('nl-NL','FormValidator',{required:'Dit veld is verplicht.',length:'Vul precies {length} karakters in (je hebt {elLength} karakters ingevoerd).',minLength:'Vul minimaal {minLength} karakters in (je hebt {length} karakters ingevoerd).',maxLength:'Vul niet meer dan {maxLength} karakters in (je hebt {length} karakters ingevoerd).',integer:'Vul een getal in. Getallen met decimalen (bijvoorbeeld 1.25) zijn niet toegestaan.',numeric:'Vul alleen numerieke waarden in (bijvoorbeeld "1" of "1.1" of "-1" of "-1.1").',digits:'Vul alleen nummers en leestekens in (bijvoorbeeld een telefoonnummer met streepjes is toegestaan).',alpha:'Vul alleen letters in (a-z). Spaties en andere karakters zijn niet toegestaan.',alphanum:'Vul alleen letters (a-z) of nummers (0-9) in. Spaties en andere karakters zijn niet toegestaan.',dateSuchAs:'Vul een geldige datum in, zoals {date}',dateInFormatMDY:'Vul een geldige datum, in het formaat MM/DD/YYYY (bijvoorbeeld "12/31/1999")',email:'Vul een geldig e-mailadres in. Bijvoorbeeld "fred@domein.nl".',url:'Vul een geldige URL in, zoals http://www.example.com.',currencyDollar:'Vul een geldig $ bedrag in. Bijvoorbeeld $100.00 .',oneRequired:'Vul iets in bij in ieder geval een van deze velden.',warningPrefix:'Waarschuwing: ',errorPrefix:'Fout: ',noSpace:'Spaties zijn niet toegestaan in dit veld.',reqChkByNode:'Er zijn geen items geselecteerd.',requiredChk:'Dit veld is verplicht.',reqChkByName:'Selecteer een {label}.',match:'Dit veld moet overeen komen met het {matchName} veld',startDate:'de begin datum',endDate:'de eind datum',currendDate:'de huidige datum',afterDate:'De datum moet hetzelfde of na {label} zijn.',beforeDate:'De datum moet hetzelfde of voor {label} zijn.',startMonth:'Selecteer een begin maand',sameMonth:'Deze twee data moeten in dezelfde maand zijn - u moet een van beide aanpassen.',creditcard:'Het ingevulde creditcardnummer is niet geldig. Controleer het nummer en probeer opnieuw. {length} getallen ingevuld.'});Locale.define('ar','Date',{dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M'});Locale.define('pt-BR','Number',{decimal:',',group:'.',currency:{prefix:'R$ '}});Locale.define('fi-FI','Date',{months:['tammikuu','helmikuu','maaliskuu','huhtikuu','toukokuu','kesäkuu','heinäkuu','elokuu','syyskuu','lokakuu','marraskuu','joulukuu'],months_abbr:['tammik.','helmik.','maalisk.','huhtik.','toukok.','kesäk.','heinäk.','elok.','syysk.','lokak.','marrask.','jouluk.'],days:['sunnuntai','maanantai','tiistai','keskiviikko','torstai','perjantai','lauantai'],days_abbr:['su','ma','ti','ke','to','pe','la'],dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'vajaa minuutti sitten',minuteAgo:'noin minuutti sitten',minutesAgo:'{delta} minuuttia sitten',hourAgo:'noin tunti sitten',hoursAgo:'noin {delta} tuntia sitten',dayAgo:'päivä sitten',daysAgo:'{delta} päivää sitten',weekAgo:'viikko sitten',weeksAgo:'{delta} viikkoa sitten',monthAgo:'kuukausi sitten',monthsAgo:'{delta} kuukautta sitten',yearAgo:'vuosi sitten',yearsAgo:'{delta} vuotta sitten',lessThanMinuteUntil:'vajaan minuutin kuluttua',minuteUntil:'noin minuutin kuluttua',minutesUntil:'{delta} minuutin kuluttua',hourUntil:'noin tunnin kuluttua',hoursUntil:'noin {delta} tunnin kuluttua',dayUntil:'päivän kuluttua',daysUntil:'{delta} päivän kuluttua',weekUntil:'viikon kuluttua',weeksUntil:'{delta} viikon kuluttua',monthUntil:'kuukauden kuluttua',monthsUntil:'{delta} kuukauden kuluttua',yearUntil:'vuoden kuluttua',yearsUntil:'{delta} vuoden kuluttua'});Locale.define('fr-FR','FormValidator',{required:'Ce champ est obligatoire.',length:'Veuillez saisir {length} caract&egrave;re(s) (vous avez saisi {elLength} caract&egrave;re(s)',minLength:'Veuillez saisir un minimum de {minLength} caract&egrave;re(s) (vous avez saisi {length} caract&egrave;re(s)).',maxLength:'Veuillez saisir un maximum de {maxLength} caract&egrave;re(s) (vous avez saisi {length} caract&egrave;re(s)).',integer:'Veuillez saisir un nombre entier dans ce champ. Les nombres d&eacute;cimaux (ex : "1,25") ne sont pas autoris&eacute;s.',numeric:'Veuillez saisir uniquement des chiffres dans ce champ (ex : "1" ou "1,1" ou "-1" ou "-1,1").',digits:"Veuillez saisir uniquement des chiffres et des signes de ponctuation dans ce champ (ex : un num&eacute;ro de t&eacute;l&eacute;phone avec des traits d'union est autoris&eacute;).",alpha:'Veuillez saisir uniquement des lettres (a-z) dans ce champ. Les espaces ou autres caract&egrave;res ne sont pas autoris&eacute;s.',alphanum:'Veuillez saisir uniquement des lettres (a-z) ou des chiffres (0-9) dans ce champ. Les espaces ou autres caract&egrave;res ne sont pas autoris&eacute;s.',dateSuchAs:'Veuillez saisir une date correcte comme {date}',dateInFormatMDY:'Veuillez saisir une date correcte, au format JJ/MM/AAAA (ex : "31/11/1999").',email:'Veuillez saisir une adresse de courrier &eacute;lectronique. Par example "fred@domaine.com".',url:'Veuillez saisir une URL, comme http://www.example.com.',currencyDollar:'Veuillez saisir une quantit&eacute; correcte. Par example 100,00&euro;.',oneRequired:'Veuillez s&eacute;lectionner au moins une de ces options.',errorPrefix:'Erreur : ',warningPrefix:'Attention : ',noSpace:"Ce champ n'accepte pas les espaces.",reqChkByNode:"Aucun &eacute;l&eacute;ment n'est s&eacute;lectionn&eacute;.",requiredChk:'Ce champ est obligatoire.',reqChkByName:'Veuillez s&eacute;lectionner un(e) {label}.',match:'Ce champ doit correspondre avec le champ {matchName}.',startDate:'date de d&eacute;but',endDate:'date de fin',currendDate:'date actuelle',afterDate:'La date doit &ecirc;tre identique ou post&eacute;rieure &agrave; {label}.',beforeDate:'La date doit &ecirc;tre identique ou ant&eacute;rieure &agrave; {label}.',startMonth:'Veuillez s&eacute;lectionner un mois de d&eacute;but.',sameMonth:'Ces deux dates doivent &ecirc;tre dans le m&ecirc;me mois - vous devez en modifier une.',creditcard:'Le num&eacute;ro de carte de cr&eacute;dit est invalide. Merci de v&eacute;rifier le num&eacute;ro et de r&eacute;essayer. Vous avez entr&eacute; {length} chiffre(s).'});(function(){var pluralize=function(n,one,few,many,other){var d=(n/10).toInt(),z=n%10,s=(n/100).toInt();if(d==1&&n>10)return many;if(z==1)return one;if(z>0&&z<5)return few;return many;};Locale.define('uk-UA','Date',{months:['Січень','Лютий','Березень','Квітень','Травень','Червень','Липень','Серпень','Вересень','Жовтень','Листопад','Грудень'],months_abbr:['Січ','Лют','Бер','Квіт','Трав','Черв','Лип','Серп','Вер','Жовт','Лист','Груд'],days:['Неділя','Понеділок','Вівторок','Середа','Четвер',"П'ятниця",'Субота'],days_abbr:['Нд','Пн','Вт','Ср','Чт','Пт','Сб'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M',AM:'до полудня',PM:'по полудню',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'меньше хвилини тому',minuteAgo:'хвилину тому',minutesAgo:function(delta){return'{delta} '+pluralize(delta,'хвилину','хвилини','хвилин')+' тому';},hourAgo:'годину тому',hoursAgo:function(delta){return'{delta} '+pluralize(delta,'годину','години','годин')+' тому';},dayAgo:'вчора',daysAgo:function(delta){return'{delta} '+pluralize(delta,'день','дня','днів')+' тому';},weekAgo:'тиждень тому',weeksAgo:function(delta){return'{delta} '+pluralize(delta,'тиждень','тижні','тижнів')+' тому';},monthAgo:'місяць тому',monthsAgo:function(delta){return'{delta} '+pluralize(delta,'місяць','місяці','місяців')+' тому';},yearAgo:'рік тому',yearsAgo:function(delta){return'{delta} '+pluralize(delta,'рік','роки','років')+' тому';},lessThanMinuteUntil:'за мить',minuteUntil:'через хвилину',minutesUntil:function(delta){return'через {delta} '+pluralize(delta,'хвилину','хвилини','хвилин');},hourUntil:'через годину',hoursUntil:function(delta){return'через {delta} '+pluralize(delta,'годину','години','годин');},dayUntil:'завтра',daysUntil:function(delta){return'через {delta} '+pluralize(delta,'день','дня','днів');},weekUntil:'через тиждень',weeksUntil:function(delta){return'через {delta} '+pluralize(delta,'тиждень','тижні','тижнів');},monthUntil:'через місяць',monthesUntil:function(delta){return'через {delta} '+pluralize(delta,'місяць','місяці','місяців');},yearUntil:'через рік',yearsUntil:function(delta){return'через {delta} '+pluralize(delta,'рік','роки','років');}});})();Locale.define('ru-RU','FormValidator',{required:'Это поле обязательно к заполнению.',minLength:'Пожалуйста, введите хотя бы {minLength} символов (Вы ввели {length}).',maxLength:'Пожалуйста, введите не больше {maxLength} символов (Вы ввели {length}).',integer:'Пожалуйста, введите в это поле число. Дробные числа (например 1.25) тут не разрешены.',numeric:'Пожалуйста, введите в это поле число (например "1" или "1.1", или "-1", или "-1.1").',digits:'В этом поле Вы можете использовать только цифры и знаки пунктуации (например, телефонный номер со знаками дефиса или с точками).',alpha:'В этом поле можно использовать только латинские буквы (a-z). Пробелы и другие символы запрещены.',alphanum:'В этом поле можно использовать только латинские буквы (a-z) и цифры (0-9). Пробелы и другие символы запрещены.',dateSuchAs:'Пожалуйста, введите корректную дату {date}',dateInFormatMDY:'Пожалуйста, введите дату в формате ММ/ДД/ГГГГ (например "12/31/1999")',email:'Пожалуйста, введите корректный емейл-адрес. Для примера "fred@domain.com".',url:'Пожалуйста, введите правильную ссылку вида http://www.example.com.',currencyDollar:'Пожалуйста, введите сумму в долларах. Например: $100.00 .',oneRequired:'Пожалуйста, выберите хоть что-нибудь в одном из этих полей.',errorPrefix:'Ошибка: ',warningPrefix:'Внимание: '});Locale.define('sv-SE','Date',{months:['januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december'],months_abbr:['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'],days:['söndag','måndag','tisdag','onsdag','torsdag','fredag','lördag'],days_abbr:['sön','mån','tis','ons','tor','fre','lör'],dateOrder:['year','month','date'],shortDate:'%Y-%m-%d',shortTime:'%H:%M',AM:'',PM:'',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'mindre än en minut sedan',minuteAgo:'ungefär en minut sedan',minutesAgo:'{delta} minuter sedan',hourAgo:'ungefär en timme sedan',hoursAgo:'ungefär {delta} timmar sedan',dayAgo:'1 dag sedan',daysAgo:'{delta} dagar sedan',lessThanMinuteUntil:'mindre än en minut sedan',minuteUntil:'ungefär en minut sedan',minutesUntil:'{delta} minuter sedan',hourUntil:'ungefär en timme sedan',hoursUntil:'ungefär {delta} timmar sedan',dayUntil:'1 dag sedan',daysUntil:'{delta} dagar sedan'});Locale.define('et-EE','FormValidator',{required:'Väli peab olema täidetud.',minLength:'Palun sisestage vähemalt {minLength} tähte (te sisestasite {length} tähte).',maxLength:'Palun ärge sisestage rohkem kui {maxLength} tähte (te sisestasite {length} tähte).',integer:'Palun sisestage väljale täisarv. Kümnendarvud (näiteks 1.25) ei ole lubatud.',numeric:'Palun sisestage ainult numbreid väljale (näiteks "1", "1.1", "-1" või "-1.1").',digits:'Palun kasutage ainult numbreid ja kirjavahemärke (telefoninumbri sisestamisel on lubatud kasutada kriipse ja punkte).',alpha:'Palun kasutage ainult tähti (a-z). Tühikud ja teised sümbolid on keelatud.',alphanum:'Palun kasutage ainult tähti (a-z) või numbreid (0-9). Tühikud ja teised sümbolid on keelatud.',dateSuchAs:'Palun sisestage kehtiv kuupäev kujul {date}',dateInFormatMDY:'Palun sisestage kehtiv kuupäev kujul MM.DD.YYYY (näiteks: "12.31.1999").',email:'Palun sisestage kehtiv e-maili aadress (näiteks: "fred@domain.com").',url:'Palun sisestage kehtiv URL (näiteks: http://www.example.com).',currencyDollar:'Palun sisestage kehtiv $ summa (näiteks: $100.00).',oneRequired:'Palun sisestage midagi vähemalt ühele antud väljadest.',errorPrefix:'Viga: ',warningPrefix:'Hoiatus: ',noSpace:'Väli ei tohi sisaldada tühikuid.',reqChkByNode:'Ükski väljadest pole valitud.',requiredChk:'Välja täitmine on vajalik.',reqChkByName:'Palun valige üks {label}.',match:'Väli peab sobima {matchName} väljaga',startDate:'algkuupäev',endDate:'lõppkuupäev',currendDate:'praegune kuupäev',afterDate:'Kuupäev peab olema võrdne või pärast {label}.',beforeDate:'Kuupäev peab olema võrdne või enne {label}.',startMonth:'Palun valige algkuupäev.',sameMonth:'Antud kaks kuupäeva peavad olema samas kuus - peate muutma ühte kuupäeva.'});Locale.define('en-US','FormValidator',{required:'This field is required.',length:'Please enter {length} characters (you entered {elLength} characters)',minLength:'Please enter at least {minLength} characters (you entered {length} characters).',maxLength:'Please enter no more than {maxLength} characters (you entered {length} characters).',integer:'Please enter an integer in this field. Numbers with decimals (e.g. 1.25) are not permitted.',numeric:'Please enter only numeric values in this field (i.e. "1" or "1.1" or "-1" or "-1.1").',digits:'Please use numbers and punctuation only in this field (for example, a phone number with dashes or dots is permitted).',alpha:'Please use only letters (a-z) within this field. No spaces or other characters are allowed.',alphanum:'Please use only letters (a-z) or numbers (0-9) in this field. No spaces or other characters are allowed.',dateSuchAs:'Please enter a valid date such as {date}',dateInFormatMDY:'Please enter a valid date such as MM/DD/YYYY (i.e. "12/31/1999")',email:'Please enter a valid email address. For example "fred@domain.com".',url:'Please enter a valid URL such as http://www.example.com.',currencyDollar:'Please enter a valid $ amount. For example $100.00 .',oneRequired:'Please enter something for at least one of these inputs.',errorPrefix:'Error: ',warningPrefix:'Warning: ',noSpace:'There can be no spaces in this input.',reqChkByNode:'No items are selected.',requiredChk:'This field is required.',reqChkByName:'Please select a {label}.',match:'This field needs to match the {matchName} field',startDate:'the start date',endDate:'the end date',currendDate:'the current date',afterDate:'The date should be the same or after {label}.',beforeDate:'The date should be the same or before {label}.',startMonth:'Please select a start month',sameMonth:'These two dates must be in the same month - you must change one or the other.',creditcard:'The credit card number entered is invalid. Please check the number and try again. {length} digits entered.'});(function(){var pluralize=function(n,one,few,many,other){var modulo10=n%10,modulo100=n%100;if(modulo10==1&&modulo100!=11){return one;}else if((modulo10==2||modulo10==3||modulo10==4)&&!(modulo100==12||modulo100==13||modulo100==14)){return few;}else if(modulo10==0||(modulo10==5||modulo10==6||modulo10==7||modulo10==8||modulo10==9)||(modulo100==11||modulo100==12||modulo100==13||modulo100==14)){return many;}else{return other;}};Locale.define('ru-RU','Date',{months:['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],months_abbr:['янв','февр','март','апр','май','июнь','июль','авг','сент','окт','нояб','дек'],days:['Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота'],days_abbr:['Вс','Пн','Вт','Ср','Чт','Пт','Сб'],dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'меньше минуты назад',minuteAgo:'минуту назад',minutesAgo:function(delta){return'{delta} '+pluralize(delta,'минуту','минуты','минут')+' назад';},hourAgo:'час назад',hoursAgo:function(delta){return'{delta} '+pluralize(delta,'час','часа','часов')+' назад';},dayAgo:'вчера',daysAgo:function(delta){return'{delta} '+pluralize(delta,'день','дня','дней')+' назад';},weekAgo:'неделю назад',weeksAgo:function(delta){return'{delta} '+pluralize(delta,'неделя','недели','недель')+' назад';},monthAgo:'месяц назад',monthsAgo:function(delta){return'{delta} '+pluralize(delta,'месяц','месяца','месецев')+' назад';},yearAgo:'год назад',yearsAgo:function(delta){return'{delta} '+pluralize(delta,'год','года','лет')+' назад';},lessThanMinuteUntil:'меньше чем через минуту',minuteUntil:'через минуту',minutesUntil:function(delta){return'через {delta} '+pluralize(delta,'час','часа','часов')+'';},hourUntil:'через час',hoursUntil:function(delta){return'через {delta} '+pluralize(delta,'час','часа','часов')+'';},dayUntil:'завтра',daysUntil:function(delta){return'через {delta} '+pluralize(delta,'день','дня','дней')+'';},weekUntil:'через неделю',weeksUntil:function(delta){return'через {delta} '+pluralize(delta,'неделю','недели','недель')+'';},monthUntil:'через месяц',monthsUntil:function(delta){return'через {delta} '+pluralize(delta,'месяц','месяца','месецев')+'';},yearUntil:'через',yearsUntil:function(delta){return'через {delta} '+pluralize(delta,'год','года','лет')+'';}});})();Locale.define('he-IL','FormValidator',{required:'נא למלא שדה זה.',minLength:'נא להזין לפחות {minLength} תווים (הזנת {length} תווים).',maxLength:'נא להזין עד {maxLength} תווים (הזנת {length} תווים).',integer:'נא להזין מספר שלם לשדה זה. מספרים עשרוניים (כמו 1.25) אינם חוקיים.',numeric:'נא להזין ערך מספרי בלבד בשדה זה (כמו "1", "1.1", "-1" או "-1.1").',digits:'נא להזין רק ספרות וסימני הפרדה בשדה זה (למשל, מספר טלפון עם מקפים או נקודות הוא חוקי).',alpha:'נא להזין רק אותיות באנגלית (a-z) בשדה זה. רווחים או תווים אחרים אינם חוקיים.',alphanum:'נא להזין רק אותריות באנגלית (a-z) או ספרות (0-9) בשדה זה. אווחרים או תווים אחרים אינם חוקיים.',dateSuchAs:'נא להזין תאריך חוקי, כמו {date}',dateInFormatMDY:'נא להזין תאריך חוקי בפורמט MM/DD/YYYY (כמו "12/31/1999")',email:'נא להזין כתובת אימייל חוקית. לדוגמה: "fred@domain.com".',url:'נא להזין כתובת אתר חוקית, כמו http://www.example.com.',currencyDollar:'נא להזין סכום דולרי חוקי. לדוגמה $100.00.',oneRequired:'נא לבחור לפחות בשדה אחד.',errorPrefix:'שגיאה: ',warningPrefix:'אזהרה: ',noSpace:'אין להזין רווחים בשדה זה.',reqChkByNode:'נא לבחור אחת מהאפשרויות.',requiredChk:'שדה זה נדרש.',reqChkByName:'נא לבחור {label}.',match:'שדה זה צריך להתאים לשדה {matchName}',startDate:'תאריך ההתחלה',endDate:'תאריך הסיום',currendDate:'התאריך הנוכחי',afterDate:'התאריך צריך להיות זהה או אחרי {label}.',beforeDate:'התאריך צריך להיות זהה או לפני {label}.',startMonth:'נא לבחור חודש התחלה',sameMonth:'שני תאריכים אלה צריכים להיות באותו חודש - נא לשנות אחד התאריכים.',creditcard:'מספר כרטיס האשראי שהוזן אינו חוקי. נא לבדוק שנית. הוזנו {length} ספרות.'});Locale.define('de-DE','FormValidator',{required:'Dieses Eingabefeld muss ausgefüllt werden.',minLength:'Geben Sie bitte mindestens {minLength} Zeichen ein (Sie haben nur {length} Zeichen eingegeben).',maxLength:'Geben Sie bitte nicht mehr als {maxLength} Zeichen ein (Sie haben {length} Zeichen eingegeben).',integer:'Geben Sie in diesem Eingabefeld bitte eine ganze Zahl ein. Dezimalzahlen (z.B. "1.25") sind nicht erlaubt.',numeric:'Geben Sie in diesem Eingabefeld bitte nur Zahlenwerte (z.B. "1", "1.1", "-1" oder "-1.1") ein.',digits:'Geben Sie in diesem Eingabefeld bitte nur Zahlen und Satzzeichen ein (z.B. eine Telefonnummer mit Bindestrichen und Punkten ist erlaubt).',alpha:'Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) ein. Leerzeichen und andere Zeichen sind nicht erlaubt.',alphanum:'Geben Sie in diesem Eingabefeld bitte nur Buchstaben (a-z) und Zahlen (0-9) ein. Leerzeichen oder andere Zeichen sind nicht erlaubt.',dateSuchAs:'Geben Sie bitte ein gültiges Datum ein (z.B. "{date}").',dateInFormatMDY:'Geben Sie bitte ein gültiges Datum im Format TT.MM.JJJJ ein (z.B. "31.12.1999").',email:'Geben Sie bitte eine gültige E-Mail-Adresse ein (z.B. "max@mustermann.de").',url:'Geben Sie bitte eine gültige URL ein (z.B. "http://www.example.com").',currencyDollar:'Geben Sie bitte einen gültigen Betrag in EURO ein (z.B. 100.00€).',oneRequired:'Bitte füllen Sie mindestens ein Eingabefeld aus.',errorPrefix:'Fehler: ',warningPrefix:'Warnung: ',noSpace:'Es darf kein Leerzeichen in diesem Eingabefeld sein.',reqChkByNode:'Es wurden keine Elemente gewählt.',requiredChk:'Dieses Feld muss ausgefüllt werden.',reqChkByName:'Bitte wählen Sie ein {label}.',match:'Dieses Eingabefeld muss mit dem {matchName} Eingabefeld übereinstimmen.',startDate:'Das Anfangsdatum',endDate:'Das Enddatum',currendDate:'Das aktuelle Datum',afterDate:'Das Datum sollte zur gleichen Zeit oder später sein als {label}.',beforeDate:'Das Datum sollte zur gleichen Zeit oder früher sein als {label}.',startMonth:'Wählen Sie bitte einen Anfangsmonat',sameMonth:'Diese zwei Datumsangaben müssen im selben Monat sein - Sie müssen eines von beiden verändern.',creditcard:'Die eingegebene Kreditkartennummer ist ungültig. Bitte überprüfen Sie diese und versuchen Sie es erneut. {length} Zahlen eingegeben.'});Locale.define('tr-TR','Date',{months:['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],months_abbr:['Oca','Şub','Mar','Nis','May','Haz','Tem','Ağu','Eyl','Eki','Kas','Ara'],days:['Pazar','Pazartesi','Salı','Çarşamba','Perşembe','Cuma','Cumartesi'],days_abbr:['Pa','Pzt','Sa','Ça','Pe','Cu','Cmt'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H.%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'bir dakikadan önce',minuteAgo:'yaklaşık bir dakika önce',minutesAgo:'{delta} dakika önce',hourAgo:'bir saat kadar önce',hoursAgo:'{delta} saat kadar önce',dayAgo:'bir gün önce',daysAgo:'{delta} gün önce',weekAgo:'bir hafta önce',weeksAgo:'{delta} hafta önce',monthAgo:'bir ay önce',monthsAgo:'{delta} ay önce',yearAgo:'bir yıl önce',yearsAgo:'{delta} yıl önce',lessThanMinuteUntil:'bir dakikadan az sonra',minuteUntil:'bir dakika kadar sonra',minutesUntil:'{delta} dakika sonra',hourUntil:'bir saat kadar sonra',hoursUntil:'{delta} saat kadar sonra',dayUntil:'bir gün sonra',daysUntil:'{delta} gün sonra',weekUntil:'bir hafta sonra',weeksUntil:'{delta} hafta sonra',monthUntil:'bir ay sonra',monthsUntil:'{delta} ay sonra',yearUntil:'bir yıl sonra',yearsUntil:'{delta} yıl sonra'});Locale.define('en-GB','Date',{dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M'}).inherit('en-US','Date');Locale.define('ca-CA','Date',{months:['Gener','Febrer','Març','Abril','Maig','Juny','Juli','Agost','Setembre','Octubre','Novembre','Desembre'],months_abbr:['gen.','febr.','març','abr.','maig','juny','jul.','ag.','set.','oct.','nov.','des.'],days:['Diumenge','Dilluns','Dimarts','Dimecres','Dijous','Divendres','Dissabte'],days_abbr:['dg','dl','dt','dc','dj','dv','ds'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:0,ordinal:'',lessThanMinuteAgo:'fa menys d`un minut',minuteAgo:'fa un minut',minutesAgo:'fa {delta} minuts',hourAgo:'fa un hora',hoursAgo:'fa unes {delta} hores',dayAgo:'fa un dia',daysAgo:'fa {delta} dies',lessThanMinuteUntil:'menys d`un minut des d`ara',minuteUntil:'un minut des d`ara',minutesUntil:'{delta} minuts des d`ara',hourUntil:'un hora des d`ara',hoursUntil:'unes {delta} hores des d`ara',dayUntil:'1 dia des d`ara',daysUntil:'{delta} dies des d`ara'});Locale.define('pt-PT','Date',{months:['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],months_abbr:['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'],days:['Domingo','Segunda-feira','Terça-feira','Quarta-feira','Quinta-feira','Sexta-feira','Sábado'],days_abbr:['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],dateOrder:['date','month','year'],shortDate:'%d-%m-%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'º',lessThanMinuteAgo:'há menos de um minuto',minuteAgo:'há cerca de um minuto',minutesAgo:'há {delta} minutos',hourAgo:'há cerca de uma hora',hoursAgo:'há cerca de {delta} horas',dayAgo:'há um dia',daysAgo:'há {delta} dias',weekAgo:'há uma semana',weeksAgo:'há {delta} semanas',monthAgo:'há um mês',monthsAgo:'há {delta} meses',yearAgo:'há um ano',yearsAgo:'há {delta} anos',lessThanMinuteUntil:'em menos de um minuto',minuteUntil:'em um minuto',minutesUntil:'em {delta} minutos',hourUntil:'em uma hora',hoursUntil:'em {delta} horas',dayUntil:'em um dia',daysUntil:'em {delta} dias',weekUntil:'em uma semana',weeksUntil:'em {delta} semanas',monthUntil:'em um mês',monthsUntil:'em {delta} meses',yearUntil:'em um ano',yearsUntil:'em {delta} anos'});Locale.define('pl-PL','Date',{months:['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],months_abbr:['sty','lut','mar','kwi','maj','cze','lip','sie','wrz','paź','lis','gru'],days:['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'],days_abbr:['niedz.','pon.','wt.','śr.','czw.','pt.','sob.'],dateOrder:['year','month','date'],shortDate:'%Y-%m-%d',shortTime:'%H:%M',AM:'nad ranem',PM:'po południu',firstDayOfWeek:1,ordinal:function(dayOfMonth){return(dayOfMonth>3&&dayOfMonth<21)?'ty':['ty','szy','gi','ci','ty'][Math.min(dayOfMonth%10,4)];},lessThanMinuteAgo:'mniej niż minute temu',minuteAgo:'około minutę temu',minutesAgo:'{delta} minut temu',hourAgo:'około godzinę temu',hoursAgo:'około {delta} godzin temu',dayAgo:'Wczoraj',daysAgo:'{delta} dni temu',lessThanMinuteUntil:'za niecałą minutę',minuteUntil:'za około minutę',minutesUntil:'za {delta} minut',hourUntil:'za około godzinę',hoursUntil:'za około {delta} godzin',dayUntil:'za 1 dzień',daysUntil:'za {delta} dni'});Locale.define('pt-PT','FormValidator',{required:'Este campo é necessário.',minLength:'Digite pelo menos{minLength} caracteres (comprimento {length} caracteres).',maxLength:'Não insira mais de {maxLength} caracteres (comprimento {length} caracteres).',integer:'Digite um número inteiro neste domínio. Com números decimais (por exemplo, 1,25), não são permitidas.',numeric:'Digite apenas valores numéricos neste domínio (p.ex., "1" ou "1.1" ou "-1" ou "-1,1").',digits:'Por favor, use números e pontuação apenas neste campo (p.ex., um número de telefone com traços ou pontos é permitida).',alpha:'Por favor use somente letras (a-z), com nesta área. Não utilize espaços nem outros caracteres são permitidos.',alphanum:'Use somente letras (a-z) ou números (0-9) neste campo. Não utilize espaços nem outros caracteres são permitidos.',dateSuchAs:'Digite uma data válida, como {date}',dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (p.ex. "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "fred@domain.com".',url:'Digite uma URL válida, como http://www.example.com.',currencyDollar:'Digite um valor válido $. Por exemplo $ 100,00. ',oneRequired:'Digite algo para pelo menos um desses insumos.',errorPrefix:'Erro: ',warningPrefix:'Aviso: '});Locale.define('sv-SE','Number',{currency:{prefix:'SEK '}}).inherit('EU','Number');Locale.define('no-NO','FormValidator',{required:'Dette feltet er pÃ¥krevd.',minLength:'Vennligst skriv inn minst {minLength} tegn (du skrev {length} tegn).',maxLength:'Vennligst skriv inn maksimalt {maxLength} tegn (du skrev {length} tegn).',integer:'Vennligst skriv inn et tall i dette feltet. Tall med desimaler (for eksempel 1,25) er ikke tillat.',numeric:'Vennligst skriv inn kun numeriske verdier i dette feltet (for eksempel "1", "1.1", "-1" eller "-1.1").',digits:'Vennligst bruk kun nummer og skilletegn i dette feltet.',alpha:'Vennligst bruk kun bokstaver (a-z) i dette feltet. Ingen mellomrom eller andre tegn er tillat.',alphanum:'Vennligst bruk kun bokstaver (a-z) eller nummer (0-9) i dette feltet. Ingen mellomrom eller andre tegn er tillat.',dateSuchAs:'Vennligst skriv inn en gyldig dato, som {date}',dateInFormatMDY:'Vennligst skriv inn en gyldig dato, i formatet MM/DD/YYYY (for eksempel "12/31/1999")',email:'Vennligst skriv inn en gyldig epost-adresse. For eksempel "espen@domene.no".',url:'Vennligst skriv inn en gyldig URL, for eksempel http://www.example.com.',currencyDollar:'Vennligst fyll ut et gyldig $ belÃ¸p. For eksempel $100.00 .',oneRequired:'Vennligst fyll ut noe i minst ett av disse feltene.',errorPrefix:'Feil: ',warningPrefix:'Advarsel: '});Locale.define('ca-CA','FormValidator',{required:'Aquest camp es obligatori.',minLength:'Per favor introdueix al menys {minLength} caracters (has introduit {length} caracters).',maxLength:'Per favor introdueix no mes de {maxLength} caracters (has introduit {length} caracters).',integer:'Per favor introdueix un nombre enter en aquest camp. Nombres amb decimals (p.e. 1,25) no estan permesos.',numeric:'Per favor introdueix sols valors numerics en aquest camp (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:'Per favor usa sols numeros i puntuacio en aquest camp (per exemple, un nombre de telefon amb guions i punts no esta permes).',alpha:'Per favor utilitza lletres nomes (a-z) en aquest camp. No s´admiteixen espais ni altres caracters.',alphanum:'Per favor, utilitza nomes lletres (a-z) o numeros (0-9) en aquest camp. No s´admiteixen espais ni altres caracters.',dateSuchAs:'Per favor introdueix una data valida com {date}',dateInFormatMDY:'Per favor introdueix una data valida com DD/MM/YYYY (p.e. "31/12/1999")',email:'Per favor, introdueix una adreça de correu electronic valida. Per exemple, "fred@domain.com".',url:'Per favor introdueix una URL valida com http://www.example.com.',currencyDollar:'Per favor introdueix una quantitat valida de €. Per exemple €100,00 .',oneRequired:'Per favor introdueix alguna cosa per al menys una d´aquestes entrades.',errorPrefix:'Error: ',warningPrefix:'Avis: ',noSpace:'No poden haver espais en aquesta entrada.',reqChkByNode:'No hi han elements seleccionats.',requiredChk:'Aquest camp es obligatori.',reqChkByName:'Per favor selecciona una {label}.',match:'Aquest camp necessita coincidir amb el camp {matchName}',startDate:'la data de inici',endDate:'la data de fi',currendDate:'la data actual',afterDate:'La data deu ser igual o posterior a {label}.',beforeDate:'La data deu ser igual o anterior a {label}.',startMonth:'Per favor selecciona un mes d´orige',sameMonth:'Aquestes dos dates deuen estar dins del mateix mes - deus canviar una o altra.'});Locale.define('tr-TR','FormValidator',{required:'Bu alan zorunlu.',minLength:'Lütfen en az {minLength} karakter girin (siz {length} karakter girdiniz).',maxLength:'Lütfen en fazla {maxLength} karakter girin (siz {length} karakter girdiniz).',integer:'Lütfen bu alana sadece tamsayı girin. Ondalıklı sayılar (ör: 1.25) kullanılamaz.',numeric:'Lütfen bu alana sadece sayısal değer girin (ör: "1", "1.1", "-1" ya da "-1.1").',digits:'Lütfen bu alana sadece sayısal değer ve noktalama işareti girin (örneğin, nokta ve tire içeren bir telefon numarası kullanılabilir).',alpha:'Lütfen bu alanda yalnızca harf kullanın. Boşluk ve diğer karakterler kullanılamaz.',alphanum:'Lütfen bu alanda sadece harf ve rakam kullanın. Boşluk ve diğer karakterler kullanılamaz.',dateSuchAs:'Lütfen geçerli bir tarih girin (Ör: {date})',dateInFormatMDY:'Lütfen geçerli bir tarih girin (GG/AA/YYYY, ör: "31/12/1999")',email:'Lütfen geçerli bir email adresi girin. Ör: "kemal@etikan.com".',url:'Lütfen geçerli bir URL girin. Ör: http://www.example.com.',currencyDollar:'Lütfen geçerli bir TL miktarı girin. Ör: 100,00 TL .',oneRequired:'Lütfen en az bir tanesini doldurun.',errorPrefix:'Hata: ',warningPrefix:'Uyarı: ',noSpace:'Bu alanda boşluk kullanılamaz.',reqChkByNode:'Hiçbir öğe seçilmemiş.',requiredChk:'Bu alan zorunlu.',reqChkByName:'Lütfen bir {label} girin.',match:'Bu alan, {matchName} alanıyla uyuşmalı',startDate:'başlangıç tarihi',endDate:'bitiş tarihi',currendDate:'bugünün tarihi',afterDate:'Tarih, {label} tarihiyle aynı gün ya da ondan sonra olmalıdır.',beforeDate:'Tarih, {label} tarihiyle aynı gün ya da ondan önce olmalıdır.',startMonth:'Lütfen bir başlangıç ayı seçin',sameMonth:'Bu iki tarih aynı ayda olmalı - bir tanesini değiştirmeniz gerekiyor.',creditcard:'Girdiğiniz kredi kartı numarası geçersiz. Lütfen kontrol edip tekrar deneyin. {length} hane girildi.'});Locale.define('pt-BR','Date',{shortDate:'%d/%m/%Y'}).inherit('pt-PT','Date');Locale.define('es-ES','FormValidator',{required:'Este campo es obligatorio.',minLength:'Por favor introduce al menos {minLength} caracteres (has introducido {length} caracteres).',maxLength:'Por favor introduce no m&aacute;s de {maxLength} caracteres (has introducido {length} caracteres).',integer:'Por favor introduce un n&uacute;mero entero en este campo. N&uacute;meros con decimales (p.e. 1,25) no se permiten.',numeric:'Por favor introduce solo valores num&eacute;ricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:'Por favor usa solo n&uacute;meros y puntuaci&oacute;n en este campo (por ejemplo, un n&uacute;mero de tel&eacute;fono con guiones y puntos no esta permitido).',alpha:'Por favor usa letras solo (a-z) en este campo. No se admiten espacios ni otros caracteres.',alphanum:'Por favor, usa solo letras (a-z) o n&uacute;meros (0-9) en este campo. No se admiten espacios ni otros caracteres.',dateSuchAs:'Por favor introduce una fecha v&aacute;lida como {date}',dateInFormatMDY:'Por favor introduce una fecha v&aacute;lida como DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, introduce una direcci&oacute;n de email v&aacute;lida. Por ejemplo, "fred@domain.com".',url:'Por favor introduce una URL v&aacute;lida como http://www.example.com.',currencyDollar:'Por favor introduce una cantidad v&aacute;lida de €. Por ejemplo €100,00 .',oneRequired:'Por favor introduce algo para por lo menos una de estas entradas.',errorPrefix:'Error: ',warningPrefix:'Aviso: ',noSpace:'No pueden haber espacios en esta entrada.',reqChkByNode:'No hay elementos seleccionados.',requiredChk:'Este campo es obligatorio.',reqChkByName:'Por favor selecciona una {label}.',match:'Este campo necesita coincidir con el campo {matchName}',startDate:'la fecha de inicio',endDate:'la fecha de fin',currendDate:'la fecha actual',afterDate:'La fecha debe ser igual o posterior a {label}.',beforeDate:'La fecha debe ser igual o anterior a {label}.',startMonth:'Por favor selecciona un mes de origen',sameMonth:'Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.'});Locale.define('no-NO','Date',{dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,lessThanMinuteAgo:'kortere enn et minutt siden',minuteAgo:'omtrent et minutt siden',minutesAgo:'{delta} minutter siden',hourAgo:'omtrent en time siden',hoursAgo:'omtrent {delta} timer siden',dayAgo:'{delta} dag siden',daysAgo:'{delta} dager siden'});Locale.define('es-AR','FormValidator',{required:'Este campo es obligatorio.',minLength:'Por favor ingrese al menos {minLength} caracteres (ha ingresado {length} caracteres).',maxLength:'Por favor no ingrese más de {maxLength} caracteres (ha ingresado {length} caracteres).',integer:'Por favor ingrese un número entero en este campo. Números con decimales (p.e. 1,25) no se permiten.',numeric:'Por favor ingrese solo valores numéricos en este campo (p.e. "1" o "1,1" o "-1" o "-1,1").',digits:'Por favor use sólo números y puntuación en este campo (por ejemplo, un número de teléfono con guiones y/o puntos no está permitido).',alpha:'Por favor use sólo letras (a-z) en este campo. No se permiten espacios ni otros caracteres.',alphanum:'Por favor, usa sólo letras (a-z) o números (0-9) en este campo. No se permiten espacios u otros caracteres.',dateSuchAs:'Por favor ingrese una fecha válida como {date}',dateInFormatMDY:'Por favor ingrese una fecha válida, utulizando el formato DD/MM/YYYY (p.e. "31/12/1999")',email:'Por favor, ingrese una dirección de e-mail válida. Por ejemplo, "fred@dominio.com".',url:'Por favor ingrese una URL válida como http://www.example.com.',currencyDollar:'Por favor ingrese una cantidad válida de pesos. Por ejemplo $100,00 .',oneRequired:'Por favor ingrese algo para por lo menos una de estas entradas.',errorPrefix:'Error: ',warningPrefix:'Advertencia: ',noSpace:'No se permiten espacios en este campo.',reqChkByNode:'No hay elementos seleccionados.',requiredChk:'Este campo es obligatorio.',reqChkByName:'Por favor selecciona una {label}.',match:'Este campo necesita coincidir con el campo {matchName}',startDate:'la fecha de inicio',endDate:'la fecha de fin',currendDate:'la fecha actual',afterDate:'La fecha debe ser igual o posterior a {label}.',beforeDate:'La fecha debe ser igual o anterior a {label}.',startMonth:'Por favor selecciona un mes de origen',sameMonth:'Estas dos fechas deben estar en el mismo mes - debes cambiar una u otra.'});Locale.define('da-DK','FormValidator',{required:'Feltet skal udfyldes.',minLength:'Skriv mindst {minLength} tegn (du skrev {length} tegn).',maxLength:'Skriv maksimalt {maxLength} tegn (du skrev {length} tegn).',integer:'Skriv et tal i dette felt. Decimal tal (f.eks. 1.25) er ikke tilladt.',numeric:'Skriv kun tal i dette felt (i.e. "1" eller "1.1" eller "-1" eller "-1.1").',digits:'Skriv kun tal og tegnsætning i dette felt (eksempel, et telefon nummer med bindestreg eller punktum er tilladt).',alpha:'Skriv kun bogstaver (a-z) i dette felt. Mellemrum og andre tegn er ikke tilladt.',alphanum:'Skriv kun bogstaver (a-z) eller tal (0-9) i dette felt. Mellemrum og andre tegn er ikke tilladt.',dateSuchAs:'Skriv en gyldig dato som {date}',dateInFormatMDY:'Skriv dato i formatet DD-MM-YYYY (f.eks. "31-12-1999")',email:'Skriv en gyldig e-mail adresse. F.eks "fred@domain.com".',url:'Skriv en gyldig URL adresse. F.eks "http://www.example.com".',currencyDollar:'Skriv et gldigt beløb. F.eks Kr.100.00 .',oneRequired:'Et eller flere af felterne i denne formular skal udfyldes.',errorPrefix:'Fejl: ',warningPrefix:'Advarsel: ',noSpace:'Der må ikke benyttes mellemrum i dette felt.',reqChkByNode:'Foretag et valg.',requiredChk:'Dette felt skal udfyldes.',reqChkByName:'Vælg en {label}.',match:'Dette felt skal matche {matchName} feltet',startDate:'start dato',endDate:'slut dato',currendDate:'dags dato',afterDate:'Datoen skal være større end eller lig med {label}.',beforeDate:'Datoen skal være mindre end eller lig med {label}.',startMonth:'Vælg en start måned',sameMonth:'De valgte datoer skal være i samme måned - skift en af dem.'});Locale.define('fi-FI','FormValidator',{required:'Tämä kenttä on pakollinen.',minLength:'Ole hyvä ja anna vähintään {minLength} merkkiä (annoit {length} merkkiä).',maxLength:'Älä anna enempää kuin {maxLength} merkkiä (annoit {length} merkkiä).',integer:'Ole hyvä ja anna kokonaisluku. Luvut, joissa on desimaaleja (esim. 1.25) eivät ole sallittuja.',numeric:'Anna tähän kenttään lukuarvo (kuten "1" tai "1.1" tai "-1" tai "-1.1").',digits:'Käytä pelkästään numeroita ja välimerkkejä tässä kentässä (syötteet, kuten esim. puhelinnumero, jossa on väliviivoja, pilkkuja tai pisteitä, kelpaa).',alpha:'Anna tähän kenttään vain kirjaimia (a-z). Välilyönnit tai muut merkit eivät ole sallittuja.',alphanum:'Anna tähän kenttään vain kirjaimia (a-z) tai numeroita (0-9). Välilyönnit tai muut merkit eivät ole sallittuja.',dateSuchAs:'Ole hyvä ja anna kelvollinen päivmäärä, kuten esimerkiksi {date}',dateInFormatMDY:'Ole hyvä ja anna kelvollinen päivämäärä muodossa pp/kk/vvvv (kuten "12/31/1999")',email:'Ole hyvä ja anna kelvollinen sähköpostiosoite (kuten esimerkiksi "matti@meikalainen.com").',url:'Ole hyvä ja anna kelvollinen URL, kuten esimerkiksi http://www.example.com.',currencyDollar:'Ole hyvä ja anna kelvollinen eurosumma (kuten esimerkiksi 100,00 EUR) .',oneRequired:'Ole hyvä ja syötä jotakin ainakin johonkin näistä kentistä.',errorPrefix:'Virhe: ',warningPrefix:'Varoitus: ',noSpace:'Tässä syötteessä ei voi olla välilyöntejä',reqChkByNode:'Ei valintoja.',requiredChk:'Tämä kenttä on pakollinen.',reqChkByName:'Ole hyvä ja valitse {label}.',match:'Tämän kentän tulee vastata kenttää {matchName}',startDate:'alkupäivämäärä',endDate:'loppupäivämäärä',currendDate:'nykyinen päivämäärä',afterDate:'Päivämäärän tulisi olla sama tai myöhäisempi ajankohta kuin {label}.',beforeDate:'Päivämäärän tulisi olla sama tai aikaisempi ajankohta kuin {label}.',startMonth:'Ole hyvä ja valitse aloituskuukausi',sameMonth:'Näiden kahden päivämäärän tulee olla saman kuun sisällä -- sinun pitää muuttaa jompaa kumpaa.',creditcard:'Annettu luottokortin numero ei kelpaa. Ole hyvä ja tarkista numero sekä yritä uudelleen. {length} numeroa syötetty.'});Locale.define('fa','Date',{months:['ژانویه','فوریه','مارس','آپریل','مه','ژوئن','ژوئیه','آگوست','سپتامبر','اکتبر','نوامبر','دسامبر'],months_abbr:['1','2','3','4','5','6','7','8','9','10','11','12'],days:['یکشنبه','دوشنبه','سه شنبه','چهارشنبه','پنجشنبه','جمعه','شنبه'],days_abbr:['ي','د','س','چ','پ','ج','ش'],dateOrder:['month','date','year'],shortDate:'%m/%d/%Y',shortTime:'%I:%M%p',AM:'ق.ظ',PM:'ب.ظ',ordinal:'ام',lessThanMinuteAgo:'کمتر از یک دقیقه پیش',minuteAgo:'حدود یک دقیقه پیش',minutesAgo:'{delta} دقیقه پیش',hourAgo:'حدود یک ساعت پیش',hoursAgo:'حدود {delta} ساعت پیش',dayAgo:'1 روز پیش',daysAgo:'{delta} روز پیش',weekAgo:'1 هفته پیش',weeksAgo:'{delta} هفته پیش',monthAgo:'1 ماه پیش',monthsAgo:'{delta} ماه پیش',yearAgo:'1 سال پیش',yearsAgo:'{delta} سال پیش',lessThanMinuteUntil:'کمتر از یک دقیقه از حالا',minuteUntil:'حدود یک دقیقه از حالا',minutesUntil:'{delta} دقیقه از حالا',hourUntil:'حدود یک ساعت از حالا',hoursUntil:'حدود {delta} ساعت از حالا',dayUntil:'1 روز از حالا',daysUntil:'{delta} روز از حالا',weekUntil:'1 هفته از حالا',weeksUntil:'{delta} هفته از حالا',monthUntil:'1 ماه از حالا',monthsUntil:'{delta} ماه از حالا',yearUntil:'1 سال از حالا',yearsUntil:'{delta} سال از حالا'});Locale.define('it-IT','FormValidator',{required:'Il campo &egrave; obbligatorio.',minLength:'Inserire almeno {minLength} caratteri (ne sono stati inseriti {length}).',maxLength:'Inserire al massimo {maxLength} caratteri (ne sono stati inseriti {length}).',integer:'Inserire un numero intero. Non sono consentiti decimali (es.: 1.25).',numeric:'Inserire solo valori numerici (es.: "1" oppure "1.1" oppure "-1" oppure "-1.1").',digits:'Inserire solo numeri e caratteri di punteggiatura. Per esempio &egrave; consentito un numero telefonico con trattini o punti.',alpha:'Inserire solo lettere (a-z). Non sono consentiti spazi o altri caratteri.',alphanum:'Inserire solo lettere (a-z) o numeri (0-9). Non sono consentiti spazi o altri caratteri.',dateSuchAs:'Inserire una data valida del tipo {date}',dateInFormatMDY:'Inserire una data valida nel formato MM/GG/AAAA (es.: "12/31/1999")',email:'Inserire un indirizzo email valido. Per esempio "nome@dominio.com".',url:'Inserire un indirizzo valido. Per esempio "http://www.example.com".',currencyDollar:'Inserire un importo valido. Per esempio "$100.00".',oneRequired:'Completare almeno uno dei campi richiesti.',errorPrefix:'Errore: ',warningPrefix:'Attenzione: ',noSpace:'Non sono consentiti spazi.',reqChkByNode:'Nessuna voce selezionata.',requiredChk:'Il campo &egrave; obbligatorio.',reqChkByName:'Selezionare un(a) {label}.',match:'Il valore deve corrispondere al campo {matchName}',startDate:"data d'inizio",endDate:'data di fine',currendDate:'data attuale',afterDate:'La data deve corrispondere o essere successiva al {label}.',beforeDate:'La data deve corrispondere o essere precedente al {label}.',startMonth:"Selezionare un mese d'inizio",sameMonth:'Le due date devono essere dello stesso mese - occorre modificarne una.'});Locale.define('es-VE','FormValidator',{digits:'Por favor usa solo n&uacute;meros y puntuaci&oacute;n en este campo. Por ejemplo, un n&uacute;mero de tel&eacute;fono con guiones y puntos no esta permitido.',alpha:'Por favor usa solo letras (a-z) en este campo. No se admiten espacios ni otros caracteres.',currencyDollar:'Por favor introduce una cantidad v&aacute;lida de Bs. Por ejemplo Bs. 100,00 .',oneRequired:'Por favor introduce un valor para por lo menos una de estas entradas.',startDate:'La fecha de inicio',endDate:'La fecha de fin',currendDate:'La fecha actual'}).inherit('es-ES','FormValidator');Locale.define('fa','FormValidator',{required:'این فیلد الزامی است.',minLength:'شما باید حداقل {minLength} حرف وارد کنید ({length} حرف وارد کرده اید).',maxLength:'لطفا حداکثر {maxLength} حرف وارد کنید (شما {length} حرف وارد کرده اید).',integer:'لطفا از عدد صحیح استفاده کنید. اعداد اعشاری (مانند 1.25) مجاز نیستند.',numeric:'لطفا فقط داده عددی وارد کنید (مانند "1" یا "1.1" یا "1-" یا "1.1-").',digits:'لطفا فقط از اعداد و علامتها در این فیلد استفاده کنید (برای مثال شماره تلفن با خط تیره و نقطه قابل قبول است).',alpha:'لطفا فقط از حروف الفباء برای این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.',alphanum:'لطفا فقط از حروف الفباء و اعداد در این بخش استفاده کنید. کاراکترهای دیگر و فاصله مجاز نیستند.',dateSuchAs:'لطفا یک تاریخ معتبر مانند {date} وارد کنید.',dateInFormatMDY:'لطفا یک تاریخ معتبر به شکل MM/DD/YYYY وارد کنید (مانند "12/31/1999").',email:'لطفا یک آدرس ایمیل معتبر وارد کنید. برای مثال "fred@domain.com".',url:'لطفا یک URL معتبر مانند http://www.example.com وارد کنید.',currencyDollar:'لطفا یک محدوده معتبر برای این بخش وارد کنید مانند 100.00$ .',oneRequired:'لطفا حداقل یکی از فیلدها را پر کنید.',errorPrefix:'خطا: ',warningPrefix:'هشدار: ',noSpace:'استفاده از فاصله در این بخش مجاز نیست.',reqChkByNode:'موردی انتخاب نشده است.',requiredChk:'این فیلد الزامی است.',reqChkByName:'لطفا یک {label} را انتخاب کنید.',match:'این فیلد باید با فیلد {matchName} مطابقت داشته باشد.',startDate:'تاریخ شروع',endDate:'تاریخ پایان',currendDate:'تاریخ کنونی',afterDate:'تاریخ میبایست برابر یا بعد از {label} باشد',beforeDate:'تاریخ میبایست برابر یا قبل از {label} باشد',startMonth:'لطفا ماه شروع را انتخاب کنید',sameMonth:'این دو تاریخ باید در یک ماه باشند - شما باید یکی یا هر دو را تغییر دهید.',creditcard:'شماره کارت اعتباری که وارد کرده اید معتبر نیست. لطفا شماره را بررسی کنید و مجددا تلاش کنید. {length} رقم وارد شده است.'});Locale.define('sv-SE','FormValidator',{required:'Fältet är obligatoriskt.',minLength:'Ange minst {minLength} tecken (du angav {length} tecken).',maxLength:'Ange högst {maxLength} tecken (du angav {length} tecken). ',integer:'Ange ett heltal i fältet. Tal med decimaler (t.ex. 1,25) är inte tillåtna.',numeric:'Ange endast numeriska värden i detta fält (t.ex. "1" eller "1.1" eller "-1" eller "-1,1").',digits:'Använd endast siffror och skiljetecken i detta fält (till exempel ett telefonnummer med bindestreck tillåtet).',alpha:'Använd endast bokstäver (a-ö) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',alphanum:'Använd endast bokstäver (a-ö) och siffror (0-9) i detta fält. Inga mellanslag eller andra tecken är tillåtna.',dateSuchAs:'Ange ett giltigt datum som t.ex. {date}',dateInFormatMDY:'Ange ett giltigt datum som t.ex. YYYY-MM-DD (i.e. "1999-12-31")',email:'Ange en giltig e-postadress. Till exempel "erik@domain.com".',url:'Ange en giltig webbadress som http://www.example.com.',currencyDollar:'Ange en giltig belopp. Exempelvis 100,00.',oneRequired:'Vänligen ange minst ett av dessa alternativ.',errorPrefix:'Fel: ',warningPrefix:'Varning: ',noSpace:'Det får inte finnas några mellanslag i detta fält.',reqChkByNode:'Inga objekt är valda.',requiredChk:'Detta är ett obligatoriskt fält.',reqChkByName:'Välj en {label}.',match:'Detta fält måste matcha {matchName}',startDate:'startdatumet',endDate:'slutdatum',currendDate:'dagens datum',afterDate:'Datumet bör vara samma eller senare än {label}.',beforeDate:'Datumet bör vara samma eller tidigare än {label}.',startMonth:'Välj en start månad',sameMonth:'Dessa två datum måste vara i samma månad - du måste ändra det ena eller det andra.'});Locale.define('hu-HU','FormValidator',{required:'A mező kitöltése kötelező.',minLength:'Legalább {minLength} karakter megadása szükséges (megadva {length} karakter).',maxLength:'Legfeljebb {maxLength} karakter megadása lehetséges (megadva {length} karakter).',integer:'Egész szám megadása szükséges. A tizedesjegyek (pl. 1.25) nem engedélyezettek.',numeric:'Szám megadása szükséges (pl. "1" vagy "1.1" vagy "-1" vagy "-1.1").',digits:'Csak számok és írásjelek megadása lehetséges (pl. telefonszám kötőjelek és/vagy perjelekkel).',alpha:'Csak betűk (a-z) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.',alphanum:'Csak betűk (a-z) vagy számok (0-9) megadása lehetséges. Szóköz és egyéb karakterek nem engedélyezettek.',dateSuchAs:'Valós dátum megadása szükséges (pl. {date}).',dateInFormatMDY:'Valós dátum megadása szükséges ÉÉÉÉ.HH.NN. formában. (pl. "1999.12.31.")',email:'Valós e-mail cím megadása szükséges (pl. "fred@domain.hu").',url:'Valós URL megadása szükséges (pl. http://www.example.com).',currencyDollar:'Valós pénzösszeg megadása szükséges (pl. 100.00 Ft.).',oneRequired:'Az alábbi mezők legalább egyikének kitöltése kötelező.',errorPrefix:'Hiba: ',warningPrefix:'Figyelem: ',noSpace:'A mező nem tartalmazhat szóközöket.',reqChkByNode:'Nincs egyetlen kijelölt elem sem.',requiredChk:'A mező kitöltése kötelező.',reqChkByName:'Egy {label} kiválasztása szükséges.',match:'A mezőnek egyeznie kell a(z) {matchName} mezővel.',startDate:'a kezdet dátuma',endDate:'a vég dátuma',currendDate:'jelenlegi dátum',afterDate:'A dátum nem lehet kisebb, mint {label}.',beforeDate:'A dátum nem lehet nagyobb, mint {label}.',startMonth:'Kezdeti hónap megadása szükséges.',sameMonth:'A két dátumnak ugyanazon hónapban kell lennie.',creditcard:'A megadott bankkártyaszám nem valódi (megadva {length} számjegy).'});Locale.define('uk-UA','FormValidator',{required:'Це поле повинне бути заповненим.',minLength:'Введіть хоча б {minLength} символів (Ви ввели {length}).',maxLength:'Кількість символів не може бути більше {maxLength} (Ви ввели {length}).',integer:'Введіть в це поле число. Дробові числа (наприклад 1.25) не дозволені.',numeric:'Введіть в це поле число (наприклад "1" або "1.1", або "-1", або "-1.1").',digits:'В цьому полі ви можете використовувати лише цифри і знаки пунктіації (наприклад, телефонний номер з знаками дефізу або з крапками).',alpha:'В цьому полі можна використовувати лише латинські літери (a-z). Пробіли і інші символи заборонені.',alphanum:'В цьому полі можна використовувати лише латинські літери (a-z) і цифри (0-9). Пробіли і інші символи заборонені.',dateSuchAs:'Введіть коректну дату {date}.',dateInFormatMDY:'Введіть дату в форматі ММ/ДД/РРРР (наприклад "12/31/2009").',email:'Введіть коректну адресу електронної пошти (наприклад "name@domain.com").',url:'Введіть коректне інтернет-посилання (наприклад http://www.example.com).',currencyDollar:'Введіть суму в доларах (наприклад "$100.00").',oneRequired:'Заповніть одне з полів.',errorPrefix:'Помилка: ',warningPrefix:'Увага: ',noSpace:'Пробіли заборонені.',reqChkByNode:'Не відмічено жодного варіанту.',requiredChk:'Це поле повинне бути віміченим.',reqChkByName:'Будь ласка, відмітьте {label}.',match:'Це поле повинно відповідати {matchName}',startDate:'початкова дата',endDate:'кінцева дата',currendDate:'сьогоднішня дата',afterDate:'Ця дата повинна бути такою ж, або пізнішою за {label}.',beforeDate:'Ця дата повинна бути такою ж, або ранішою за {label}.',startMonth:'Будь ласка, виберіть початковий місяць',sameMonth:'Ці дати повинні відноситись одного і того ж місяця. Будь ласка, змініть одну з них.',creditcard:'Номер кредитної карти введений неправильно. Будь ласка, перевірте його. Введено {length} символів.'});Locale.define('de-DE','Date',{months:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],months_abbr:['Jan','Feb','Mär','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],days:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],days_abbr:['So.','Mo.','Di.','Mi.','Do.','Fr.','Sa.'],dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H:%M',AM:'vormittags',PM:'nachmittags',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'vor weniger als einer Minute',minuteAgo:'vor einer Minute',minutesAgo:'vor {delta} Minuten',hourAgo:'vor einer Stunde',hoursAgo:'vor {delta} Stunden',dayAgo:'vor einem Tag',daysAgo:'vor {delta} Tagen',weekAgo:'vor einer Woche',weeksAgo:'vor {delta} Wochen',monthAgo:'vor einem Monat',monthsAgo:'vor {delta} Monaten',yearAgo:'vor einem Jahr',yearsAgo:'vor {delta} Jahren',lessThanMinuteUntil:'in weniger als einer Minute',minuteUntil:'in einer Minute',minutesUntil:'in {delta} Minuten',hourUntil:'in ca. einer Stunde',hoursUntil:'in ca. {delta} Stunden',dayUntil:'in einem Tag',daysUntil:'in {delta} Tagen',weekUntil:'in einer Woche',weeksUntil:'in {delta} Wochen',monthUntil:'in einem Monat',monthsUntil:'in {delta} Monaten',yearUntil:'in einem Jahr',yearsUntil:'in {delta} Jahren'});Locale.define('fr-FR','Date',{months:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],months_abbr:['janv.','févr.','mars','avr.','mai','juin','juil.','août','sept.','oct.','nov.','déc.'],days:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],days_abbr:['dim.','lun.','mar.','mer.','jeu.','ven.','sam.'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:function(dayOfMonth){return(dayOfMonth>1)?'':'er';},lessThanMinuteAgo:"il y a moins d'une minute",minuteAgo:'il y a une minute',minutesAgo:'il y a {delta} minutes',hourAgo:'il y a une heure',hoursAgo:'il y a {delta} heures',dayAgo:'il y a un jour',daysAgo:'il y a {delta} jours',weekAgo:'il y a une semaine',weeksAgo:'il y a {delta} semaines',monthAgo:'il y a 1 mois',monthsAgo:'il y a {delta} mois',yearthAgo:'il y a 1 an',yearsAgo:'il y a {delta} ans',lessThanMinuteUntil:"dans moins d'une minute",minuteUntil:'dans une minute',minutesUntil:'dans {delta} minutes',hourUntil:'dans une heure',hoursUntil:'dans {delta} heures',dayUntil:'dans un jour',daysUntil:'dans {delta} jours',weekUntil:'dans 1 semaine',weeksUntil:'dans {delta} semaines',monthUntil:'dans 1 mois',monthsUntil:'dans {delta} mois',yearUntil:'dans 1 an',yearsUntil:'dans {delta} ans'});Locale.define('pl-PL','FormValidator',{required:'To pole jest wymagane.',minLength:'Wymagane jest przynajmniej {minLength} znaków (wpisanych zostało tylko {length}).',maxLength:'Dozwolone jest nie więcej niż {maxLength} znaków (wpisanych zostało {length})',integer:'To pole wymaga liczb całych. Liczby dziesiętne (np. 1.25) są niedozwolone.',numeric:'Prosimy używać tylko numerycznych wartości w tym polu (np. "1", "1.1", "-1" lub "-1.1").',digits:'Prosimy używać liczb oraz zankow punktuacyjnych w typ polu (dla przykładu, przy numerze telefonu myślniki i kropki są dozwolone).',alpha:'Prosimy używać tylko liter (a-z) w tym polu. Spacje oraz inne znaki są niedozwolone.',alphanum:'Prosimy używać tylko liter (a-z) lub liczb (0-9) w tym polu. Spacje oraz inne znaki są niedozwolone.',dateSuchAs:'Prosimy podać prawidłową datę w formacie: {date}',dateInFormatMDY:'Prosimy podać poprawną date w formacie DD.MM.RRRR (i.e. "12.01.2009")',email:'Prosimy podać prawidłowy adres e-mail, np. "jan@domena.pl".',url:'Prosimy podać prawidłowy adres URL, np. http://www.example.com.',currencyDollar:'Prosimy podać prawidłową sumę w PLN. Dla przykładu: 100.00 PLN.',oneRequired:'Prosimy wypełnić chociaż jedno z pól.',errorPrefix:'Błąd: ',warningPrefix:'Uwaga: ',noSpace:'W tym polu nie mogą znajdować się spacje.',reqChkByNode:'Brak zaznaczonych elementów.',requiredChk:'To pole jest wymagane.',reqChkByName:'Prosimy wybrać z {label}.',match:'To pole musi być takie samo jak {matchName}',startDate:'data początkowa',endDate:'data końcowa',currendDate:'aktualna data',afterDate:'Podana data poinna być taka sama lub po {label}.',beforeDate:'Podana data poinna być taka sama lub przed {label}.',startMonth:'Prosimy wybrać początkowy miesiąc.',sameMonth:'Te dwie daty muszą być w zakresie tego samego miesiąca - wymagana jest zmiana któregoś z pól.'});Locale.define('fi-FI','Number',{group:' '}).inherit('EU','Number');Locale.define('si-SI','FormValidator',{required:'To polje je obvezno',minLength:'Prosim, vnesite vsaj {minLength} znakov (vnesli ste {length} znakov).',maxLength:'Prosim, ne vnesite več kot {maxLength} znakov (vnesli ste {length} znakov).',integer:'Prosim, vnesite celo število. Decimalna števila (kot 1,25) niso dovoljena.',numeric:'Prosim, vnesite samo numerične vrednosti (kot "1" ali "1.1" ali "-1" ali "-1.1").',digits:'Prosim, uporabite številke in ločila le na tem polju (na primer, dovoljena je telefonska številka z pomišlaji ali pikami).',alpha:'Prosim, uporabite le črke v tem plju. Presledki in drugi znaki niso dovoljeni.',alphanum:'Prosim, uporabite samo črke ali številke v tem polju. Presledki in drugi znaki niso dovoljeni.',dateSuchAs:'Prosim, vnesite pravilen datum kot {date}',dateInFormatMDY:'Prosim, vnesite pravilen datum kot MM.DD.YYYY (primer "12.31.1999")',email:'Prosim, vnesite pravilen email naslov. Na primer "fred@domain.com".',url:'Prosim, vnesite pravilen URL kot http://www.example.com.',currencyDollar:'Prosim, vnesit epravilno vrednost €. Primer 100,00€ .',oneRequired:'Prosimo, vnesite nekaj za vsaj eno izmed teh polj.',errorPrefix:'Napaka: ',warningPrefix:'Opozorilo: ',noSpace:'To vnosno polje ne dopušča presledkov.',reqChkByNode:'Nič niste izbrali.',requiredChk:'To polje je obvezno',reqChkByName:'Prosim, izberite {label}.',match:'To polje se mora ujemati z poljem {matchName}',startDate:'datum začetka',endDate:'datum konca',currendDate:'trenuten datum',afterDate:'Datum bi moral biti isti ali po {label}.',beforeDate:'Datum bi moral biti isti ali pred {label}.',startMonth:'Prosim, vnesite začetni datum',sameMonth:'Ta dva datuma morata biti v istem mesecu - premeniti morate eno ali drugo.',creditcard:'Številka kreditne kartice ni pravilna. Preverite številko ali poskusite še enkrat. Vnešenih {length} znakov.'});Locale.define('hu-HU','Date',{months:['Január','Február','Március','Április','Május','Június','Július','Augusztus','Szeptember','Október','November','December'],months_abbr:['jan.','febr.','márc.','ápr.','máj.','jún.','júl.','aug.','szept.','okt.','nov.','dec.'],days:['Vasárnap','Hétfő','Kedd','Szerda','Csütörtök','Péntek','Szombat'],days_abbr:['V','H','K','Sze','Cs','P','Szo'],dateOrder:['year','month','date'],shortDate:'%Y.%m.%d.',shortTime:'%I:%M',AM:'de.',PM:'du.',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'alig egy perce',minuteAgo:'egy perce',minutesAgo:'{delta} perce',hourAgo:'egy órája',hoursAgo:'{delta} órája',dayAgo:'1 napja',daysAgo:'{delta} napja',weekAgo:'1 hete',weeksAgo:'{delta} hete',monthAgo:'1 hónapja',monthsAgo:'{delta} hónapja',yearAgo:'1 éve',yearsAgo:'{delta} éve',lessThanMinuteUntil:'alig egy perc múlva',minuteUntil:'egy perc múlva',minutesUntil:'{delta} perc múlva',hourUntil:'egy óra múlva',hoursUntil:'{delta} óra múlva',dayUntil:'1 nap múlva',daysUntil:'{delta} nap múlva',weekUntil:'1 hét múlva',weeksUntil:'{delta} hét múlva',monthUntil:'1 hónap múlva',monthsUntil:'{delta} hónap múlva',yearUntil:'1 év múlva',yearsUntil:'{delta} év múlva'});Locale.define('de-DE').inherit('EU','Number');Locale.define('it-IT','Date',{months:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],months_abbr:['gen','feb','mar','apr','mag','giu','lug','ago','set','ott','nov','dic'],days:['Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato'],days_abbr:['dom','lun','mar','mer','gio','ven','sab'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H.%M',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'º',lessThanMinuteAgo:'meno di un minuto fa',minuteAgo:'circa un minuto fa',minutesAgo:'circa {delta} minuti fa',hourAgo:"circa un'ora fa",hoursAgo:'circa {delta} ore fa',dayAgo:'circa 1 giorno fa',daysAgo:'circa {delta} giorni fa',weekAgo:'una settimana fa',weeksAgo:'{delta} settimane fa',monthAgo:'un mese fa',monthsAgo:'{delta} mesi fa',yearAgo:'un anno fa',yearsAgo:'{delta} anni fa',lessThanMinuteUntil:'tra meno di un minuto',minuteUntil:'tra circa un minuto',minutesUntil:'tra circa {delta} minuti',hourUntil:"tra circa un'ora",hoursUntil:'tra circa {delta} ore',dayUntil:'tra circa un giorno',daysUntil:'tra circa {delta} giorni',weekUntil:'tra una settimana',weeksUntil:'tra {delta} settimane',monthUntil:'tra un mese',monthsUntil:'tra {delta} mesi',yearUntil:'tra un anno',yearsUntil:'tra {delta} anni'});Locale.define('tr-TR','Number',{currency:{decimals:0,suffix:' TL'}}).inherit('EU','Number');Locale.define('ja-JP','Number',{decimal:'.',group:',',currency:{decimals:0,prefix:'\\'}});Locale.define('de-CH').inherit('de-DE','Date');(function(){var pluralize=function(n,one,few,other){if(n==1)return one;else if(n==2||n==3||n==4)return few;else return other;};Locale.define('cs-CZ','Date',{months:['Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec'],months_abbr:['ledna','února','března','dubna','května','června','července','srpna','září','října','listopadu','prosince'],days:['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'],days_abbr:['ne','po','út','st','čt','pá','so'],dateOrder:['date','month','year'],shortDate:'%d.%m.%Y',shortTime:'%H:%M',AM:'dop.',PM:'odp.',firstDayOfWeek:1,ordinal:'.',lessThanMinuteAgo:'před chvílí',minuteAgo:'přibližně před minutou',minutesAgo:function(delta){return'před {delta} '+pluralize(delta,'minutou','minutami','minutami');},hourAgo:'přibližně před hodinou',hoursAgo:function(delta){return'před {delta} '+pluralize(delta,'hodinou','hodinami','hodinami');},dayAgo:'před dnem',daysAgo:function(delta){return'před {delta} '+pluralize(delta,'dnem','dny','dny');},weekAgo:'před týdnem',weeksAgo:function(delta){return'před {delta} '+pluralize(delta,'týdnem','týdny','týdny');},monthAgo:'před měsícem',monthsAgo:function(delta){return'před {delta} '+pluralize(delta,'měsícem','měsíci','měsíci');},yearAgo:'před rokem',yearsAgo:function(delta){return'před {delta} '+pluralize(delta,'rokem','lety','lety');},lessThanMinuteUntil:'za chvíli',minuteUntil:'přibližně za minutu',minutesUntil:function(delta){return'za {delta} '+pluralize(delta,'minutu','minuty','minut');},hourUntil:'přibližně za hodinu',hoursUntil:function(delta){return'za {delta} '+pluralize(delta,'hodinu','hodiny','hodin');},dayUntil:'za den',daysUntil:function(delta){return'za {delta} '+pluralize(delta,'den','dny','dnů');},weekUntil:'za týden',weeksUntil:function(delta){return'za {delta} '+pluralize(delta,'týden','týdny','týdnů');},monthUntil:'za měsíc',monthsUntil:function(delta){return'za {delta} '+pluralize(delta,'měsíc','měsíce','měsíců');},yearUntil:'za rok',yearsUntil:function(delta){return'za {delta} '+pluralize(delta,'rok','roky','let');}});})();Locale.define("ja-JP","FormValidator",{required:'入力は必須です。',minLength:'入力文字数は{minLength}以上にしてください。({length}文字)',maxLength:'入力文字数は{maxLength}以下にしてください。({length}文字)',integer:'整数を入力してください。',numeric:'入力できるのは数値だけです。(例: "1", "1.1", "-1", "-1.1"....)',digits:'入力できるのは数値と句読記号です。 (例: -や+を含む電話番号など).',alpha:'入力できるのは半角英字だけです。それ以外の文字は入力できません。',alphanum:'入力できるのは半角英数字だけです。それ以外の文字は入力できません。',dateSuchAs:'有効な日付を入力してください。{date}',dateInFormatMDY:'日付の書式に誤りがあります。YYYY/MM/DD (i.e. "1999/12/31")',email:'メールアドレスに誤りがあります。',url:'URLアドレスに誤りがあります。',currencyDollar:'金額に誤りがあります。',oneRequired:'ひとつ以上入力してください。',errorPrefix:'エラー: ',warningPrefix:'警告: ',noSpace:'スペースは入力できません。',reqChkByNode:'選択されていません。',requiredChk:'この項目は必須です。',reqChkByName:'{label}を選択してください。',match:'{matchName}が入力されている場合必須です。',startDate:'開始日',endDate:'終了日',currendDate:'今日',afterDate:'{label}以降の日付にしてください。',beforeDate:'{label}以前の日付にしてください。',startMonth:'開始月を選択してください。',sameMonth:'日付が同一です。どちらかを変更してください。'});Locale.define('zh-CHS','Number',{currency:{prefix:'￥ '}}).inherit('en-US','Number');Locale.define('zh-CHT').inherit('zh-CHS','Number');if(!window.Form)window.Form={};var InputValidator=this.InputValidator=new Class({Implements:[Options],options:{errorMsg:'Validation failed.',test:Function.from(true)},initialize:function(className,options){this.setOptions(options);this.className=className;},test:function(field,props){field=document.id(field);return(field)?this.options.test(field,props||this.getProps(field)):false;},getError:function(field,props){field=document.id(field);var err=this.options.errorMsg;if(typeOf(err)=='function')err=err(field,props||this.getProps(field));return err;},getProps:function(field){field=document.id(field);return(field)?field.get('validatorProps'):{};}});Element.Properties.validators={get:function(){return(this.get('data-validators')||this.className).clean().split(' ');}};Element.Properties.validatorProps={set:function(props){return this.eliminate('$moo:validatorProps').store('$moo:validatorProps',props);},get:function(props){if(props)this.set(props);if(this.retrieve('$moo:validatorProps'))return this.retrieve('$moo:validatorProps');if(this.getProperty('data-validator-properties')||this.getProperty('validatorProps')){try{this.store('$moo:validatorProps',JSON.decode(this.getProperty('validatorProps')||this.getProperty('data-validator-properties')));}catch(e){return{};}}else{var vals=this.get('validators').filter(function(cls){return cls.test(':');});if(!vals.length){this.store('$moo:validatorProps',{});}else{props={};vals.each(function(cls){var split=cls.split(':');if(split[1]){try{props[split[0]]=JSON.decode(split[1]);}catch(e){}}});this.store('$moo:validatorProps',props);}}
return this.retrieve('$moo:validatorProps');}};Form.Validator=new Class({Implements:[Options,Events],Binds:['onSubmit'],options:{fieldSelectors:'input, select, textarea',ignoreHidden:true,ignoreDisabled:true,useTitles:false,evaluateOnSubmit:true,evaluateFieldsOnBlur:true,evaluateFieldsOnChange:true,serial:true,stopOnFailure:true,warningPrefix:function(){return Form.Validator.getMsg('warningPrefix')||'Warning: ';},errorPrefix:function(){return Form.Validator.getMsg('errorPrefix')||'Error: ';}},initialize:function(form,options){this.setOptions(options);this.element=document.id(form);this.element.store('validator',this);this.warningPrefix=Function.from(this.options.warningPrefix)();this.errorPrefix=Function.from(this.options.errorPrefix)();if(this.options.evaluateOnSubmit)this.element.addEvent('submit',this.onSubmit);if(this.options.evaluateFieldsOnBlur||this.options.evaluateFieldsOnChange)this.watchFields(this.getFields());},toElement:function(){return this.element;},getFields:function(){return(this.fields=this.element.getElements(this.options.fieldSelectors));},watchFields:function(fields){fields.each(function(el){if(this.options.evaluateFieldsOnBlur)
el.addEvent('blur',this.validationMonitor.pass([el,false],this));if(this.options.evaluateFieldsOnChange)
el.addEvent('change',this.validationMonitor.pass([el,true],this));},this);},validationMonitor:function(){clearTimeout(this.timer);this.timer=this.validateField.delay(50,this,arguments);},onSubmit:function(event){if(this.validate(event))this.reset();},reset:function(){this.getFields().each(this.resetField,this);return this;},validate:function(event){var result=this.getFields().map(function(field){return this.validateField(field,true);},this).every(function(v){return v;});this.fireEvent('formValidate',[result,this.element,event]);if(this.options.stopOnFailure&&!result&&event)event.preventDefault();return result;},validateField:function(field,force){if(this.paused)return true;field=document.id(field);var passed=!field.hasClass('validation-failed');var failed,warned;if(this.options.serial&&!force){failed=this.element.getElement('.validation-failed');warned=this.element.getElement('.warning');}
if(field&&(!failed||force||field.hasClass('validation-failed')||(failed&&!this.options.serial))){var validationTypes=field.get('validators');var validators=validationTypes.some(function(cn){return this.getValidator(cn);},this);var validatorsFailed=[];validationTypes.each(function(className){if(className&&!this.test(className,field))validatorsFailed.include(className);},this);passed=validatorsFailed.length===0;if(validators&&!this.hasValidator(field,'warnOnly')){if(passed){field.addClass('validation-passed').removeClass('validation-failed');this.fireEvent('elementPass',[field]);}else{field.addClass('validation-failed').removeClass('validation-passed');this.fireEvent('elementFail',[field,validatorsFailed]);}}
if(!warned){var warnings=validationTypes.some(function(cn){if(cn.test('^warn'))
return this.getValidator(cn.replace(/^warn-/,''));else return null;},this);field.removeClass('warning');var warnResult=validationTypes.map(function(cn){if(cn.test('^warn'))
return this.test(cn.replace(/^warn-/,''),field,true);else return null;},this);}}
return passed;},test:function(className,field,warn){field=document.id(field);if((this.options.ignoreHidden&&!field.isVisible())||(this.options.ignoreDisabled&&field.get('disabled')))return true;var validator=this.getValidator(className);if(warn!=null)warn=false;if(this.hasValidator(field,'warnOnly'))warn=true;var isValid=this.hasValidator(field,'ignoreValidation')||(validator?validator.test(field):true);if(validator&&field.isVisible())this.fireEvent('elementValidate',[isValid,field,className,warn]);if(warn)return true;return isValid;},hasValidator:function(field,value){return field.get('validators').contains(value);},resetField:function(field){field=document.id(field);if(field){field.get('validators').each(function(className){if(className.test('^warn-'))className=className.replace(/^warn-/,'');field.removeClass('validation-failed');field.removeClass('warning');field.removeClass('validation-passed');},this);}
return this;},stop:function(){this.paused=true;return this;},start:function(){this.paused=false;return this;},ignoreField:function(field,warn){field=document.id(field);if(field){this.enforceField(field);if(warn)field.addClass('warnOnly');else field.addClass('ignoreValidation');}
return this;},enforceField:function(field){field=document.id(field);if(field)field.removeClass('warnOnly').removeClass('ignoreValidation');return this;}});Form.Validator.getMsg=function(key){return Locale.get('FormValidator.'+key);};Form.Validator.adders={validators:{},add:function(className,options){this.validators[className]=new InputValidator(className,options);if(!this.initialize){this.implement({validators:this.validators});}},addAllThese:function(validators){Array.from(validators).each(function(validator){this.add(validator[0],validator[1]);},this);},getValidator:function(className){return this.validators[className.split(':')[0]];}};Object.append(Form.Validator,Form.Validator.adders);Form.Validator.implement(Form.Validator.adders);Form.Validator.add('IsEmpty',{errorMsg:false,test:function(element){if(element.type=='select-one'||element.type=='select')
return!(element.selectedIndex>=0&&element.options[element.selectedIndex].value!='');else
return((element.get('value')==null)||(element.get('value').length==0));}});Form.Validator.addAllThese([['required',{errorMsg:function(){return Form.Validator.getMsg('required');},test:function(element){return!Form.Validator.getValidator('IsEmpty').test(element);}}],['length',{errorMsg:function(element,props){if(typeOf(props.length)!='null')
return Form.Validator.getMsg('length').substitute({length:props.length,elLength:element.get('value').length});else return'';},test:function(element,props){if(typeOf(props.length)!='null')return(element.get('value').length==props.length||element.get('value').length==0);else return true;}}],['minLength',{errorMsg:function(element,props){if(typeOf(props.minLength)!='null')
return Form.Validator.getMsg('minLength').substitute({minLength:props.minLength,length:element.get('value').length});else return'';},test:function(element,props){if(typeOf(props.minLength)!='null')return(element.get('value').length>=(props.minLength||0));else return true;}}],['maxLength',{errorMsg:function(element,props){if(typeOf(props.maxLength)!='null')
return Form.Validator.getMsg('maxLength').substitute({maxLength:props.maxLength,length:element.get('value').length});else return'';},test:function(element,props){return element.get('value').length<=(props.maxLength||10000);}}],['validate-integer',{errorMsg:Form.Validator.getMsg.pass('integer'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^(-?[1-9]\d*|0)$/).test(element.get('value'));}}],['validate-numeric',{errorMsg:Form.Validator.getMsg.pass('numeric'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^-?(?:0$0(?=\d*\.)|[1-9]|0)\d*(\.\d+)?$/).test(element.get('value'));}}],['validate-digits',{errorMsg:Form.Validator.getMsg.pass('digits'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^[\d() .:\-\+#]+$/.test(element.get('value')));}}],['validate-alpha',{errorMsg:Form.Validator.getMsg.pass('alpha'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^[a-zA-Z]+$/).test(element.get('value'));}}],['validate-alphanum',{errorMsg:Form.Validator.getMsg.pass('alphanum'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||!(/\W/).test(element.get('value'));}}],['validate-date',{errorMsg:function(element,props){if(Date.parse){var format=props.dateFormat||'%x';return Form.Validator.getMsg('dateSuchAs').substitute({date:new Date().format(format)});}else{return Form.Validator.getMsg('dateInFormatMDY');}},test:function(element,props){if(Form.Validator.getValidator('IsEmpty').test(element))return true;var dateLocale=Locale.getCurrent().sets.Date,dateNouns=new RegExp([dateLocale.days,dateLocale.days_abbr,dateLocale.months,dateLocale.months_abbr].flatten().join('|'),'i'),value=element.get('value'),wordsInValue=value.match(/[a-z]+/gi);if(wordsInValue&&!wordsInValue.every(dateNouns.exec,dateNouns))return false;var date=Date.parse(value),format=props.dateFormat||'%x',formatted=date.format(format);if(formatted!='invalid date')element.set('value',formatted);return date.isValid();}}],['validate-email',{errorMsg:Form.Validator.getMsg.pass('email'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]\.?){0,63}[a-z0-9!#$%&'*+\/=?^_`{|}~-]@(?:(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)*[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])$/i).test(element.get('value'));}}],['validate-url',{errorMsg:Form.Validator.getMsg.pass('url'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^(https?|ftp|rmtp|mms):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i).test(element.get('value'));}}],['validate-currency-dollar',{errorMsg:Form.Validator.getMsg.pass('currencyDollar'),test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(element.get('value'));}}],['validate-one-required',{errorMsg:Form.Validator.getMsg.pass('oneRequired'),test:function(element,props){var p=document.id(props['validate-one-required'])||element.getParent(props['validate-one-required']);return p.getElements('input').some(function(el){if(['checkbox','radio'].contains(el.get('type')))return el.get('checked');return el.get('value');});}}]]);Element.Properties.validator={set:function(options){this.get('validator').setOptions(options);},get:function(){var validator=this.retrieve('validator');if(!validator){validator=new Form.Validator(this);this.store('validator',validator);}
return validator;}};Element.implement({validate:function(options){if(options)this.set('validator',options);return this.get('validator').validate();}});Locale.define('zh-CHS','FormValidator',{required:'此项必填。',minLength:'请至少输入 {minLength} 个字符 (已输入 {length} 个)。',maxLength:'最多只能输入 {maxLength} 个字符 (已输入 {length} 个)。',integer:'请输入一个整数，不能包含小数点。例如："1", "200"。',numeric:'请输入一个数字，例如："1", "1.1", "-1", "-1.1"。',digits:'请输入由数字和标点符号组成的内容。例如电话号码。',alpha:'请输入 A-Z 的 26 个字母，不能包含空格或任何其他字符。',alphanum:'请输入 A-Z 的 26 个字母或 0-9 的 10 个数字，不能包含空格或任何其他字符。',dateSuchAs:'请输入合法的日期格式，如：{date}。',dateInFormatMDY:'请输入合法的日期格式，例如：YYYY-MM-DD ("2010-12-31")。',email:'请输入合法的电子信箱地址，例如："fred@domain.com"。',url:'请输入合法的 Url 地址，例如：http://www.example.com。',currencyDollar:'请输入合法的货币符号，例如：￥100.0',oneRequired:'请至少选择一项。',errorPrefix:'错误：',warningPrefix:'警告：',noSpace:'不能包含空格。',reqChkByNode:'未选择任何内容。',requiredChk:'此项必填。',reqChkByName:'请选择 {label}.',match:'必须与{matchName}相匹配',startDate:'起始日期',endDate:'结束日期',currendDate:'当前日期',afterDate:'日期必须等于或晚于 {label}.',beforeDate:'日期必须早于或等于 {label}.',startMonth:'请选择起始月份',sameMonth:'您必须修改两个日期中的一个，以确保它们在同一月份。',creditcard:'您输入的信用卡号码不正确。当前已输入{length}个字符。'});Locale.define('zh-CHT','FormValidator',{required:'此項必填。 ',minLength:'請至少輸入{minLength} 個字符(已輸入{length} 個)。 ',maxLength:'最多只能輸入{maxLength} 個字符(已輸入{length} 個)。 ',integer:'請輸入一個整數，不能包含小數點。例如："1", "200"。 ',numeric:'請輸入一個數字，例如："1", "1.1", "-1", "-1.1"。 ',digits:'請輸入由數字和標點符號組成的內容。例如電話號碼。 ',alpha:'請輸入AZ 的26 個字母，不能包含空格或任何其他字符。 ',alphanum:'請輸入AZ 的26 個字母或0-9 的10 個數字，不能包含空格或任何其他字符。 ',dateSuchAs:'請輸入合法的日期格式，如：{date}。 ',dateInFormatMDY:'請輸入合法的日期格式，例如：YYYY-MM-DD ("2010-12-31")。 ',email:'請輸入合法的電子信箱地址，例如："fred@domain.com"。 ',url:'請輸入合法的Url 地址，例如：http://www.example.com。 ',currencyDollar:'請輸入合法的貨幣符號，例如：￥100.0',oneRequired:'請至少選擇一項。 ',errorPrefix:'錯誤：',warningPrefix:'警告：',noSpace:'不能包含空格。 ',reqChkByNode:'未選擇任何內容。 ',requiredChk:'此項必填。 ',reqChkByName:'請選擇 {label}.',match:'必須與{matchName}相匹配',startDate:'起始日期',endDate:'結束日期',currendDate:'當前日期',afterDate:'日期必須等於或晚於{label}.',beforeDate:'日期必須早於或等於{label}.',startMonth:'請選擇起始月份',sameMonth:'您必須修改兩個日期中的一個，以確保它們在同一月份。 ',creditcard:'您輸入的信用卡號碼不正確。當前已輸入{length}個字符。 '});Form.Validator.add('validate-currency-yuan',{errorMsg:function(){return Form.Validator.getMsg('currencyYuan');},test:function(element){return Form.Validator.getValidator('IsEmpty').test(element)||(/^￥?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/).test(element.get('value'));}});Locale.define('he-IL','Number',{decimal:'.',group:',',currency:{suffix:' ₪'}});Locale.define('zh-CHS','Date',{months:['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],months_abbr:['一','二','三','四','五','六','七','八','九','十','十一','十二'],days:['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],days_abbr:['日','一','二','三','四','五','六'],dateOrder:['year','month','date'],shortDate:'%Y-%m-%d',shortTime:'%I:%M%p',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'不到1分钟前',minuteAgo:'大约1分钟前',minutesAgo:'{delta}分钟之前',hourAgo:'大约1小时前',hoursAgo:'大约{delta}小时前',dayAgo:'1天前',daysAgo:'{delta}天前',weekAgo:'1星期前',weeksAgo:'{delta}星期前',monthAgo:'1个月前',monthsAgo:'{delta}个月前',yearAgo:'1年前',yearsAgo:'{delta}年前',lessThanMinuteUntil:'从现在开始不到1分钟',minuteUntil:'从现在开始約1分钟',minutesUntil:'从现在开始约{delta}分钟',hourUntil:'从现在开始1小时',hoursUntil:'从现在开始约{delta}小时',dayUntil:'从现在开始1天',daysUntil:'从现在开始{delta}天',weekUntil:'从现在开始1星期',weeksUntil:'从现在开始{delta}星期',monthUntil:'从现在开始一个月',monthsUntil:'从现在开始{delta}个月',yearUntil:'从现在开始1年',yearsUntil:'从现在开始{delta}年'});Locale.define('zh-CHT','Date',{months:['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],months_abbr:['一','二','三','四','五','六','七','八','九','十','十一','十二'],days:['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],days_abbr:['日','一','二','三','四','五','六'],dateOrder:['year','month','date'],shortDate:'%Y-%m-%d',shortTime:'%I:%M%p',AM:'AM',PM:'PM',firstDayOfWeek:1,ordinal:'',lessThanMinuteAgo:'不到1分鐘前',minuteAgo:'大約1分鐘前',minutesAgo:'{delta}分鐘之前',hourAgo:'大約1小時前',hoursAgo:'大約{delta}小時前',dayAgo:'1天前',daysAgo:'{delta}天前',weekAgo:'1星期前',weeksAgo:'{delta}星期前',monthAgo:'1个月前',monthsAgo:'{delta}个月前',yearAgo:'1年前',yearsAgo:'{delta}年前',lessThanMinuteUntil:'從現在開始不到1分鐘',minuteUntil:'從現在開始約1分鐘',minutesUntil:'從現在開始約{delta}分鐘',hourUntil:'從現在開始1小時',hoursUntil:'從現在開始約{delta}小時',dayUntil:'從現在開始1天',daysUntil:'從現在開始{delta}天',weekUntil:'從現在開始1星期',weeksUntil:'從現在開始{delta}星期',monthUntil:'從現在開始一個月',monthsUntil:'從現在開始{delta}個月',yearUntil:'從現在開始1年',yearsUntil:'從現在開始{delta}年'});Locale.define('ja-JP','Date',{months:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],months_abbr:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],days:['日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日'],days_abbr:['日','月','火','水','木','金','土'],dateOrder:['year','month','date'],shortDate:'%Y/%m/%d',shortTime:'%H:%M',AM:'午前',PM:'午後',firstDayOfWeek:0,ordinal:'',lessThanMinuteAgo:'1分以内前',minuteAgo:'約1分前',minutesAgo:'約{delta}分前',hourAgo:'約1時間前',hoursAgo:'約{delta}時間前',dayAgo:'1日前',daysAgo:'{delta}日前',weekAgo:'1週間前',weeksAgo:'{delta}週間前',monthAgo:'1ヶ月前',monthsAgo:'{delta}ヶ月前',yearAgo:'1年前',yearsAgo:'{delta}年前',lessThanMinuteUntil:'今から約1分以内',minuteUntil:'今から約1分',minutesUntil:'今から約{delta}分',hourUntil:'今から約1時間',hoursUntil:'今から約{delta}時間',dayUntil:'今から1日間',daysUntil:'今から{delta}日間',weekUntil:'今から1週間',weeksUntil:'今から{delta}週間',monthUntil:'今から1ヶ月',monthsUntil:'今から{delta}ヶ月',yearUntil:'今から1年',yearsUntil:'今から{delta}年'});Locale.define('nl-NL').inherit('EU','Number');Locale.define('es-AR').inherit('es-ES','Date');Locale.define('pt-BR','FormValidator',{required:'Este campo é obrigatório.',minLength:'Digite pelo menos {minLength} caracteres (tamanho atual: {length}).',maxLength:'Não digite mais de {maxLength} caracteres (tamanho atual: {length}).',integer:'Por favor digite apenas um número inteiro neste campo. Não são permitidos números decimais (por exemplo, 1,25).',numeric:'Por favor digite apenas valores numéricos neste campo (por exemplo, "1" ou "1.1" ou "-1" ou "-1,1").',digits:'Por favor use apenas números e pontuação neste campo (por exemplo, um número de telefone com traços ou pontos é permitido).',alpha:'Por favor use somente letras (a-z). Espaço e outros caracteres não são permitidos.',alphanum:'Use somente letras (a-z) ou números (0-9) neste campo. Espaço e outros caracteres não são permitidos.',dateSuchAs:'Digite uma data válida, como {date}',dateInFormatMDY:'Digite uma data válida, como DD/MM/YYYY (por exemplo, "31/12/1999")',email:'Digite um endereço de email válido. Por exemplo "nome@dominio.com".',url:'Digite uma URL válida. Exemplo: http://www.example.com.',currencyDollar:'Digite um valor em dinheiro válido. Exemplo: R$100,00 .',oneRequired:'Digite algo para pelo menos um desses campos.',errorPrefix:'Erro: ',warningPrefix:'Aviso: ',noSpace:'Não é possível digitar espaços neste campo.',reqChkByNode:'Não foi selecionado nenhum item.',requiredChk:'Este campo é obrigatório.',reqChkByName:'Por favor digite um {label}.',match:'Este campo deve ser igual ao campo {matchName}.',startDate:'a data inicial',endDate:'a data final',currendDate:'a data atual',afterDate:'A data deve ser igual ou posterior a {label}.',beforeDate:'A data deve ser igual ou anterior a {label}.',startMonth:'Por favor selecione uma data inicial.',sameMonth:'Estas duas datas devem ter o mesmo mês - você deve modificar uma das duas.',creditcard:'O número do cartão de crédito informado é inválido. Por favor verifique o valor e tente novamente. {length} números informados.'});Locale.define('he-IL','Date',{months:['ינואר','פברואר','מרץ','אפריל','מאי','יוני','יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],months_abbr:['ינואר','פברואר','מרץ','אפריל','מאי','יוני','יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],days:['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],days_abbr:['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],dateOrder:['date','month','year'],shortDate:'%d/%m/%Y',shortTime:'%H:%M',AM:'AM',PM:'PM',firstDayOfWeek:0,ordinal:'',lessThanMinuteAgo:'לפני פחות מדקה',minuteAgo:'לפני כדקה',minutesAgo:'לפני {delta} דקות',hourAgo:'לפני כשעה',hoursAgo:'לפני {delta} שעות',dayAgo:'לפני יום',daysAgo:'לפני {delta} ימים',weekAgo:'לפני שבוע',weeksAgo:'לפני {delta} שבועות',monthAgo:'לפני חודש',monthsAgo:'לפני {delta} חודשים',yearAgo:'לפני שנה',yearsAgo:'לפני {delta} שנים',lessThanMinuteUntil:'בעוד פחות מדקה',minuteUntil:'בעוד כדקה',minutesUntil:'בעוד {delta} דקות',hourUntil:'בעוד כשעה',hoursUntil:'בעוד {delta} שעות',dayUntil:'בעוד יום',daysUntil:'בעוד {delta} ימים',weekUntil:'בעוד שבוע',weeksUntil:'בעוד {delta} שבועות',monthUntil:'בעוד חודש',monthsUntil:'בעוד {delta} חודשים',yearUntil:'בעוד שנה',yearsUntil:'בעוד {delta} שנים'});Fx.Slide=new Class({Extends:Fx,options:{mode:'vertical',wrapper:false,hideOverflow:true,resetHeight:false},initialize:function(element,options){element=this.element=this.subject=document.id(element);this.parent(options);options=this.options;var wrapper=element.retrieve('wrapper'),styles=element.getStyles('margin','position','overflow');if(options.hideOverflow)styles=Object.append(styles,{overflow:'hidden'});if(options.wrapper)wrapper=document.id(options.wrapper).setStyles(styles);if(!wrapper)wrapper=new Element('div',{styles:styles}).wraps(element);element.store('wrapper',wrapper).setStyle('margin',0);if(element.getStyle('overflow')=='visible')element.setStyle('overflow','hidden');this.now=[];this.open=true;this.wrapper=wrapper;this.addEvent('complete',function(){this.open=(wrapper['offset'+this.layout.capitalize()]!=0);if(this.open&&this.options.resetHeight)wrapper.setStyle('height','');},true);},vertical:function(){this.margin='margin-top';this.layout='height';this.offset=this.element.offsetHeight;},horizontal:function(){this.margin='margin-left';this.layout='width';this.offset=this.element.offsetWidth;},set:function(now){this.element.setStyle(this.margin,now[0]);this.wrapper.setStyle(this.layout,now[1]);return this;},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(how,mode){if(!this.check(how,mode))return this;this[mode||this.options.mode]();var margin=this.element.getStyle(this.margin).toInt(),layout=this.wrapper.getStyle(this.layout).toInt(),caseIn=[[margin,layout],[0,this.offset]],caseOut=[[margin,layout],[-this.offset,0]],start;switch(how){case'in':start=caseIn;break;case'out':start=caseOut;break;case'toggle':start=(layout==0)?caseIn:caseOut;}
return this.parent(start[0],start[1]);},slideIn:function(mode){return this.start('in',mode);},slideOut:function(mode){return this.start('out',mode);},hide:function(mode){this[mode||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(mode){this[mode||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(mode){return this.start('toggle',mode);}});Element.Properties.slide={set:function(options){this.get('slide').cancel().setOptions(options);return this;},get:function(){var slide=this.retrieve('slide');if(!slide){slide=new Fx.Slide(this,{link:'cancel'});this.store('slide',slide);}
return slide;}};Element.implement({slide:function(how,mode){how=how||'toggle';var slide=this.get('slide'),toggle;switch(how){case'hide':slide.hide(mode);break;case'show':slide.show(mode);break;case'toggle':var flag=this.retrieve('slide:flag',slide.open);slide[flag?'slideOut':'slideIn'](mode);this.store('slide:flag',!flag);toggle=true;break;default:slide.start(how,mode);}
if(!toggle)this.eliminate('slide:flag');return this;}});Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom)iNow[p]=this.parent(iFrom[p],iTo[p],delta);}
return now;},set:function(now){for(var i in now){if(!this.elements[i])continue;var iNow=now[i];for(var p in iNow)this.render(this.elements[i],p,iNow[p],this.options.unit);}
return this;},start:function(obj){if(!this.check(obj))return this;var from={},to={};for(var i in obj){if(!this.elements[i])continue;var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}
return this.parent(from,to);}});Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:'vertical'},initialize:function(elements,options){this.parent(elements,options);this.elements.each(function(el){if(el.getStyle('position')=='static')el.setStyle('position','relative');});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(el,index){return index;});},sort:function(){if(!this.check(arguments))return this;var newOrder=Array.flatten(arguments);var top=0,left=0,next={},zero={},vert=this.options.mode=='vertical';var current=this.elements.map(function(el,index){var size=el.getComputedSize({styles:['border','padding','margin']});var val;if(vert){val={top:top,margin:size['margin-top'],height:size.totalHeight};top+=val.height-size['margin-top'];}else{val={left:left,margin:size['margin-left'],width:size.totalWidth};left+=val.width;}
var plane=vert?'top':'left';zero[index]={};var start=el.getStyle(plane).toInt();zero[index][plane]=start||0;return val;},this);this.set(zero);newOrder=newOrder.map(function(i){return i.toInt();});if(newOrder.length!=this.elements.length){this.currentOrder.each(function(index){if(!newOrder.contains(index))newOrder.push(index);});if(newOrder.length>this.elements.length)
newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length);}
var margin=0;top=left=0;newOrder.each(function(item){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height;}else{newPos.left=left-current[item].left;left+=current[item].width;}
margin=margin+current[item].margin;next[item]=newPos;},this);var mapped={};Array.clone(newOrder).sort().each(function(index){mapped[index]=next[index];});this.start(mapped);this.currentOrder=newOrder;return this;},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle('opacity',0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}));},this);this.elements.setStyle('opacity',1);this.elements=$$(rearranged);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(el,index){return index;});},getCurrentOrder:function(){return this.currentOrder;},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el);},this));},swap:function(one,two){if(typeOf(one)=='element')one=this.elements.indexOf(one);if(typeOf(two)=='element')two=this.elements.indexOf(two);var newOrder=Array.clone(this.currentOrder);newOrder[this.currentOrder.indexOf(one)]=two;newOrder[this.currentOrder.indexOf(two)]=one;return this.sort(newOrder);}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);if(typeOf(this.element)!='element')this.element=document.id(this.element.getDocument().body);if(this.options.wheelStops){var stopper=this.element,cancel=this.cancel.pass(false,this);this.addEvent('start',function(){stopper.addEvent('mousewheel',cancel);},true);this.addEvent('complete',function(){stopper.removeEvent('mousewheel',cancel);},true);}},set:function(){var now=Array.flatten(arguments);if(Browser.firefox)now=[Math.round(now[0]),Math.round(now[1])];this.element.scrollTo(now[0],now[1]);return this;},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(x,y){if(!this.check(x,y))return this;var scroll=this.element.getScroll();return this.parent([scroll.x,scroll.y],[x,y]);},calculateScroll:function(x,y){var element=this.element,scrollSize=element.getScrollSize(),scroll=element.getScroll(),size=element.getSize(),offset=this.options.offset,values={x:x,y:y};for(var z in values){if(!values[z]&&values[z]!==0)values[z]=scroll[z];if(typeOf(values[z])!='number')values[z]=scrollSize[z]-size[z];values[z]+=offset[z];}
return[values.x,values.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0));},toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll('right',false));},toBottom:function(){return this.start.apply(this,this.calculateScroll(false,'bottom'));},toElement:function(el,axes){axes=axes?Array.from(axes):['x','y'];var scroll=isBody(this.element)?{x:0,y:0}:this.element.getScroll();var position=Object.map(document.id(el).getPosition(this.element),function(value,axis){return axes.contains(axis)?value+scroll[axis]:false;});return this.start.apply(this,this.calculateScroll(position.x,position.y));},toElementEdge:function(el,axes,offset){axes=axes?Array.from(axes):['x','y'];el=document.id(el);var to={},position=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize(),edge={x:position.x+size.x,y:position.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis])to[axis]=edge[axis]-containerSize[axis];if(position[axis]<scroll[axis])to[axis]=position[axis];}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;},toElementCenter:function(el,axes,offset){axes=axes?Array.from(axes):['x','y'];el=document.id(el);var to={},position=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize();['x','y'].each(function(axis){if(axes.contains(axis)){to[axis]=position[axis]-(containerSize[axis]-size[axis])/2;}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;}});function isBody(element){return(/^(?:body|html)$/i).test(element.tagName);}})();Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:'center',edge:false,offset:{x:0,y:0}},start:function(destination){var element=this.element,topLeft=element.getStyles('top','left');if(topLeft.top=='auto'||topLeft.left=='auto'){element.setPosition(element.getPosition(element.getOffsetParent()));}
return this.parent(element.position(Object.merge({},this.options,destination,{returnPos:true})));}});Element.Properties.move={set:function(options){this.get('move').cancel().setOptions(options);return this;},get:function(){var move=this.retrieve('move');if(!move){move=new Fx.Move(this,{link:'cancel'});this.store('move',move);}
return move;}};Element.implement({move:function(options){this.get('move').start(options);return this;}});Fx.SmoothScroll=new Class({Extends:Fx.Scroll,options:{axes:['x','y']},initialize:function(options,context){context=context||document;this.doc=context.getDocument();this.parent(this.doc,options);var win=context.getWindow(),location=win.location.href.match(/^[^#]*/)[0]+'#',links=$$(this.options.links||this.doc.links);links.each(function(link){if(link.href.indexOf(location)!=0)return;var anchor=link.href.substr(location.length);if(anchor)this.useLink(link,anchor);},this);this.addEvent('complete',function(){win.location.hash=this.anchor;this.element.scrollTo(this.to[0],this.to[1]);},true);},useLink:function(link,anchor){link.addEvent('click',function(event){var el=document.id(anchor)||this.doc.getElement('a[name='+anchor+']');if(!el)return;event.preventDefault();this.toElement(el,this.options.axes).chain(function(){this.fireEvent('scrolledTo',[link,el]);}.bind(this));this.anchor=anchor;}.bind(this));return this;}});Fx.Accordion=new Class({Extends:Fx.Elements,options:{fixedHeight:false,fixedWidth:false,display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:'click',initialDisplayFx:true,resetHeight:true},initialize:function(){var defined=function(obj){return obj!=null;};var params=Array.link(arguments,{'container':Type.isElement,'options':Type.isObject,'togglers':defined,'elements':defined});this.parent(params.elements,params.options);var options=this.options,togglers=this.togglers=$$(params.togglers);this.previous=-1;this.internalChain=new Chain();if(options.alwaysHide)this.options.link='chain';if(options.show||this.options.show===0){options.display=false;this.previous=options.show;}
if(options.start){options.display=false;options.show=false;}
var effects=this.effects={};if(options.opacity)effects.opacity='fullOpacity';if(options.width)effects.width=options.fixedWidth?'fullWidth':'offsetWidth';if(options.height)effects.height=options.fixedHeight?'fullHeight':'scrollHeight';for(var i=0,l=togglers.length;i<l;i++)this.addSection(togglers[i],this.elements[i]);this.elements.each(function(el,i){if(options.show===i){this.fireEvent('active',[togglers[i],el]);}else{for(var fx in effects)el.setStyle(fx,0);}},this);if(options.display||options.display===0||options.initialDisplayFx===false){this.display(options.display,options.initialDisplayFx);}
if(options.fixedHeight!==false)options.resetHeight=false;this.addEvent('complete',this.internalChain.callChain.bind(this.internalChain));},addSection:function(toggler,element){toggler=document.id(toggler);element=document.id(element);this.togglers.include(toggler);this.elements.include(element);var togglers=this.togglers,options=this.options,test=togglers.contains(toggler),idx=togglers.indexOf(toggler),displayer=this.display.pass(idx,this);toggler.store('accordion:display',displayer).addEvent(options.trigger,displayer);if(options.height)element.setStyles({'padding-top':0,'border-top':'none','padding-bottom':0,'border-bottom':'none'});if(options.width)element.setStyles({'padding-left':0,'border-left':'none','padding-right':0,'border-right':'none'});element.fullOpacity=1;if(options.fixedWidth)element.fullWidth=options.fixedWidth;if(options.fixedHeight)element.fullHeight=options.fixedHeight;element.setStyle('overflow','hidden');if(!test)for(var fx in this.effects){element.setStyle(fx,0);}
return this;},removeSection:function(toggler,displayIndex){var togglers=this.togglers,idx=togglers.indexOf(toggler),element=this.elements[idx];var remover=function(){togglers.erase(toggler);this.elements.erase(element);this.detach(toggler);}.bind(this);if(this.now==idx||displayIndex!=null){this.display(displayIndex!=null?displayIndex:(idx-1>=0?idx-1:0)).chain(remover);}else{remover();}
return this;},detach:function(toggler){var remove=function(toggler){toggler.removeEvent(this.options.trigger,toggler.retrieve('accordion:display'));}.bind(this);if(!toggler)this.togglers.each(remove);else remove(toggler);return this;},display:function(index,useFx){if(!this.check(index,useFx))return this;var obj={},elements=this.elements,options=this.options,effects=this.effects;if(useFx==null)useFx=true;if(typeOf(index)=='element')index=elements.indexOf(index);if(index==this.previous&&!options.alwaysHide)return this;if(options.resetHeight){var prev=elements[this.previous];if(prev&&!this.selfHidden){for(var fx in effects)prev.setStyle(fx,prev[effects[fx]]);}}
if((this.timer&&options.link=='chain')||(index===this.previous&&!options.alwaysHide))return this;this.previous=index;this.selfHidden=false;elements.each(function(el,i){obj[i]={};var hide;if(i!=index){hide=true;}else if(options.alwaysHide&&((el.offsetHeight>0&&options.height)||el.offsetWidth>0&&options.width)){hide=true;this.selfHidden=true;}
this.fireEvent(hide?'background':'active',[this.togglers[i],el]);for(var fx in effects)obj[i][fx]=hide?0:el[effects[fx]];if(!useFx&&!hide&&options.resetHeight)obj[i].height='auto';},this);this.internalChain.clearChain();this.internalChain.chain(function(){if(options.resetHeight&&!this.selfHidden){var el=elements[index];if(el)el.setStyle('height','auto');}}.bind(this));return useFx?this.start(obj):this.set(obj).internalChain.callChain();}});(function(){var hideTheseOf=function(object){var hideThese=object.options.hideInputs;if(window.OverText){var otClasses=[null];OverText.each(function(ot){otClasses.include('.'+ot.options.labelClass);});if(otClasses)hideThese+=otClasses.join(', ');}
return(hideThese)?object.element.getElements(hideThese):null;};Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:'cancel',styles:['padding','border','margin'],transitionOpacity:!Browser.ie6,mode:'vertical',display:function(){return this.element.get('tag')!='tr'?'block':'table-row';},opacity:1,hideInputs:Browser.ie?'select, input, textarea, object, embed':null},dissolve:function(){if(!this.hiding&&!this.showing){if(this.element.getStyle('display')!='none'){this.hiding=true;this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});if(this.options.transitionOpacity)startStyles.opacity=this.options.opacity;var zero={};Object.each(startStyles,function(style,name){zero[name]=[style,0];});this.element.setStyles({display:Function.from(this.options.display).call(this),overflow:'hidden'});var hideThese=hideTheseOf(this);if(hideThese)hideThese.setStyle('visibility','hidden');this.$chain.unshift(function(){if(this.hidden){this.hiding=false;this.element.style.cssText=this.cssText;this.element.setStyle('display','none');if(hideThese)hideThese.setStyle('visibility','visible');}
this.fireEvent('hide',this.element);this.callChain();}.bind(this));this.start(zero);}else{this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element);}}else if(this.options.link=='chain'){this.chain(this.dissolve.bind(this));}else if(this.options.link=='cancel'&&!this.hiding){this.cancel();this.dissolve();}
return this;},reveal:function(){if(!this.showing&&!this.hiding){if(this.element.getStyle('display')=='none'){this.hiding=false;this.showing=true;this.hidden=false;this.cssText=this.element.style.cssText;var startStyles;this.element.measure(function(){startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});}.bind(this));if(this.options.heightOverride!=null)startStyles.height=this.options.heightOverride.toInt();if(this.options.widthOverride!=null)startStyles.width=this.options.widthOverride.toInt();if(this.options.transitionOpacity){this.element.setStyle('opacity',0);startStyles.opacity=this.options.opacity;}
var zero={height:0,display:Function.from(this.options.display).call(this)};Object.each(startStyles,function(style,name){zero[name]=0;});zero.overflow='hidden';this.element.setStyles(zero);var hideThese=hideTheseOf(this);if(hideThese)hideThese.setStyle('visibility','hidden');this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle('display',Function.from(this.options.display).call(this));if(!this.hidden)this.showing=false;if(hideThese)hideThese.setStyle('visibility','visible');this.callChain();this.fireEvent('show',this.element);}.bind(this));this.start(startStyles);}else{this.callChain();this.fireEvent('complete',this.element);this.fireEvent('show',this.element);}}else if(this.options.link=='chain'){this.chain(this.reveal.bind(this));}else if(this.options.link=='cancel'&&!this.showing){this.cancel();this.reveal();}
return this;},toggle:function(){if(this.element.getStyle('display')=='none'){this.reveal();}else{this.dissolve();}
return this;},cancel:function(){this.parent.apply(this,arguments);if(this.cssText!=null)this.element.style.cssText=this.cssText;this.hiding=false;this.showing=false;return this;}});Element.Properties.reveal={set:function(options){this.get('reveal').cancel().setOptions(options);return this;},get:function(){var reveal=this.retrieve('reveal');if(!reveal){reveal=new Fx.Reveal(this);this.store('reveal',reveal);}
return reveal;}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get('reveal').setOptions(options).reveal();return this;},dissolve:function(options){this.get('reveal').setOptions(options).dissolve();return this;},nix:function(options){var params=Array.link(arguments,{destroy:Type.isBoolean,options:Type.isObject});this.get('reveal').setOptions(options).dissolve().chain(function(){this[params.destroy?'destroy':'dispose']();}.bind(this));return this;},wink:function(){var params=Array.link(arguments,{duration:Type.isNumber,options:Type.isObject});var reveal=this.get('reveal').setOptions(params.options);reveal.reveal().chain(function(){(function(){reveal.dissolve();}).delay(params.duration||2000);});}});})();var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:'px',grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:'left',y:'top'}},initialize:function(){var params=Array.link(arguments,{'options':Type.isObject,'element':function(obj){return obj!=null;}});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=typeOf(this.options.handle);this.handles=((htype=='array'||htype=='collection')?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={'now':{},'pos':{}};this.value={'start':{},'now':{}};this.selection=(Browser.ie)?'selectstart':'mousedown';if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false);Drag.ondragstartFixed=true;}
this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)};this.attach();},attach:function(){this.handles.addEvent('mousedown',this.bound.start);return this;},detach:function(){this.handles.removeEvent('mousedown',this.bound.start);return this;},start:function(event){var options=this.options;if(event.rightClick)return;if(options.preventDefault)event.preventDefault();if(options.stopPropagation)event.stopPropagation();this.mouse.start=event.page;this.fireEvent('beforeStart',this.element);var limit=options.limit;this.limit={x:[],y:[]};var z,coordinates;for(z in options.modifiers){if(!options.modifiers[z])continue;var style=this.element.getStyle(options.modifiers[z]);if(style&&!style.match(/px$/)){if(!coordinates)coordinates=this.element.getCoordinates(this.element.getOffsetParent());style=coordinates[options.modifiers[z]];}
if(options.style)this.value.now[z]=(style||0).toInt();else this.value.now[z]=this.element[options.modifiers[z]];if(options.invert)this.value.now[z]*=-1;this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){var i=2;while(i--){var limitZI=limit[z][i];if(limitZI||limitZI===0)this.limit[z][i]=(typeof limitZI=='function')?limitZI():limitZI;}}}
if(typeOf(this.options.grid)=='number')this.options.grid={x:this.options.grid,y:this.options.grid};var events={mousemove:this.bound.check,mouseup:this.bound.cancel};events[this.selection]=this.bound.eventStop;this.document.addEvents(events);},check:function(event){if(this.options.preventDefault)event.preventDefault();var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent('start',[this.element,event]).fireEvent('snap',this.element);}},drag:function(event){var options=this.options;if(options.preventDefault)event.preventDefault();this.mouse.now=event.page;for(var z in options.modifiers){if(!options.modifiers[z])continue;this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(options.invert)this.value.now[z]*=-1;if(options.limit&&this.limit[z]){if((this.limit[z][1]||this.limit[z][1]===0)&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];}else if((this.limit[z][0]||this.limit[z][0]===0)&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];}}
if(options.grid[z])this.value.now[z]-=((this.value.now[z]-(this.limit[z][0]||0))%options.grid[z]);if(options.style)this.element.setStyle(options.modifiers[z],this.value.now[z]+options.unit);else this.element[options.modifiers[z]]=this.value.now[z];}
this.fireEvent('drag',[this.element,event]);},cancel:function(event){this.document.removeEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});if(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent('cancel',this.element);}},stop:function(event){var events={mousemove:this.bound.drag,mouseup:this.bound.stop};events[this.selection]=this.bound.eventStop;this.document.removeEvents(events);if(event)this.fireEvent('complete',[this.element,event]);}});Element.implement({makeResizable:function(options){var drag=new Drag(this,Object.merge({modifiers:{x:'width',y:'height'}},options));this.store('resizer',drag);return drag.addEvent('drag',function(){this.fireEvent('resize',drag);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(element,options){this.parent(element,options);element=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&typeOf(this.container)!='element')
this.container=document.id(this.container.getDocument().body);if(this.options.style){if(this.options.modifiers.x=='left'&&this.options.modifiers.y=='top'){var parent=element.getOffsetParent(),styles=element.getStyles('left','top');if(parent&&(styles.left=='auto'||styles.top=='auto')){element.setPosition(element.getPosition(parent));}}
if(element.getStyle('position')=='static')element.setStyle('position','absolute');}
this.addEvent('start',this.checkDroppables,true);this.overed=null;},start:function(event){if(this.container)this.options.limit=this.calculateLimit();if(this.options.precalculate){this.positions=this.droppables.map(function(el){return el.getCoordinates();});}
this.parent(event);},calculateLimit:function(){var element=this.element,container=this.container,offsetParent=document.id(element.getOffsetParent())||document.body,containerCoordinates=container.getCoordinates(offsetParent),elementMargin={},elementBorder={},containerMargin={},containerBorder={},offsetParentPadding={};['top','right','bottom','left'].each(function(pad){elementMargin[pad]=element.getStyle('margin-'+pad).toInt();elementBorder[pad]=element.getStyle('border-'+pad).toInt();containerMargin[pad]=container.getStyle('margin-'+pad).toInt();containerBorder[pad]=container.getStyle('border-'+pad).toInt();offsetParentPadding[pad]=offsetParent.getStyle('padding-'+pad).toInt();},this);var width=element.offsetWidth+elementMargin.left+elementMargin.right,height=element.offsetHeight+elementMargin.top+elementMargin.bottom,left=0,top=0,right=containerCoordinates.right-containerBorder.right-width,bottom=containerCoordinates.bottom-containerBorder.bottom-height;if(this.options.includeMargins){left+=elementMargin.left;top+=elementMargin.top;}else{right+=elementMargin.right;bottom+=elementMargin.bottom;}
if(element.getStyle('position')=='relative'){var coords=element.getCoordinates(offsetParent);coords.left-=element.getStyle('left').toInt();coords.top-=element.getStyle('top').toInt();left-=coords.left;top-=coords.top;if(container.getStyle('position')!='relative'){left+=containerBorder.left;top+=containerBorder.top;}
right+=elementMargin.left-coords.left;bottom+=elementMargin.top-coords.top;if(container!=offsetParent){left+=containerMargin.left+offsetParentPadding.left;top+=((Browser.ie6||Browser.ie7)?0:containerMargin.top)+offsetParentPadding.top;}}else{left-=elementMargin.left;top-=elementMargin.top;if(container!=offsetParent){left+=containerCoordinates.left+containerBorder.left;top+=containerCoordinates.top+containerBorder.top;}}
return{x:[left,right],y:[top,bottom]};},getDroppableCoordinates:function(element){var position=element.getCoordinates();if(element.getStyle('position')=='fixed'){var scroll=window.getScroll();position.left+=scroll.x;position.right+=scroll.x;position.top+=scroll.y;position.bottom+=scroll.y;}
return position;},checkDroppables:function(){var overed=this.droppables.filter(function(el,i){el=this.positions?this.positions[i]:this.getDroppableCoordinates(el);var now=this.mouse.now;return(now.x>el.left&&now.x<el.right&&now.y<el.bottom&&now.y>el.top);},this).getLast();if(this.overed!=overed){if(this.overed)this.fireEvent('leave',[this.element,this.overed]);if(overed)this.fireEvent('enter',[this.element,overed]);this.overed=overed;}},drag:function(event){this.parent(event);if(this.options.checkDroppables&&this.droppables.length)this.checkDroppables();},stop:function(event){this.checkDroppables();this.fireEvent('drop',[this.element,this.overed,event]);this.overed=null;return this.parent(event);}});Element.implement({makeDraggable:function(options){var drag=new Drag.Move(this,options);this.store('dragger',drag);return drag;}});var Slider=new Class({Implements:[Events,Options],Binds:['clickedElement','draggedKnob','scrolledElement'],options:{onTick:function(position){this.setKnobPosition(position);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:'horizontal'},initialize:function(element,knob,options){this.setOptions(options);options=this.options;this.element=document.id(element);knob=this.knob=document.id(knob);this.previousChange=this.previousEnd=this.step=-1;var limit={},modifiers={x:false,y:false};switch(options.mode){case'vertical':this.axis='y';this.property='top';this.offset='offsetHeight';break;case'horizontal':this.axis='x';this.property='left';this.offset='offsetWidth';}
this.setSliderDimensions();this.setRange(options.range);if(knob.getStyle('position')=='static')knob.setStyle('position','relative');knob.setStyle(this.property,-options.offset);modifiers[this.axis]=this.property;limit[this.axis]=[-options.offset,this.full-options.offset];var dragOptions={snap:0,limit:limit,modifiers:modifiers,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(options.snap)this.setSnap(dragOptions);this.drag=new Drag(knob,dragOptions);this.attach();if(options.initialStep!=null)this.set(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).removeEvent('mousewheel',this.scrolledElement);this.drag.detach();return this;},autosize:function(){this.setSliderDimensions().setKnobPosition(this.toPosition(this.step));this.drag.options.limit[this.axis]=[-this.options.offset,this.full-this.options.offset];if(this.options.snap)this.setSnap();return this;},setSnap:function(options){if(!options)options=this.drag.options;options.grid=Math.ceil(this.stepWidth);options.limit[this.axis][1]=this.full;return this;},setKnobPosition:function(position){if(this.options.snap)position=this.toPosition(this.step);this.knob.setStyle(this.property,position);return this;},setSliderDimensions:function(){this.full=this.element.measure(function(){this.half=this.knob[this.offset]/2;return this.element[this.offset]-this.knob[this.offset]+(this.options.offset*2);}.bind(this));return this;},set:function(step){if(!((this.range>0)^(step<this.min)))step=this.min;if(!((this.range>0)^(step>this.max)))step=this.max;this.step=Math.round(step);return this.checkStep().fireEvent('tick',this.toPosition(this.step)).end();},setRange:function(range,pos){this.min=Array.pick([range[0],0]);this.max=Array.pick([range[1],this.options.steps]);this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);if(range)this.set(Array.pick([pos,this.step]).floor(this.min).max(this.max));return this;},clickedElement:function(event){if(this.isDragging||event.target==this.knob)return;var dir=this.range<0?-1:1,position=event.page[this.axis]-this.element.getPosition()[this.axis]-this.half;position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep().fireEvent('tick',position).end();},scrolledElement:function(event){var mode=(this.options.mode=='horizontal')?(event.wheel<0):(event.wheel>0);this.set(this.step+(mode?-1:1)*this.stepSize);event.stop();},draggedKnob:function(){var dir=this.range<0?-1:1,position=this.drag.value.now[this.axis];position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();},checkStep:function(){var step=this.step;if(this.previousChange!=step){this.previousChange=step;this.fireEvent('change',step);}
return this;},end:function(){var step=this.step;if(this.previousEnd!==step){this.previousEnd=step;this.fireEvent('complete',step+'');}
return this;},toStep:function(position){var step=(position+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(step-=step%this.stepSize):step;},toPosition:function(step){return(this.full*Math.abs(this.min-step))/(this.steps*this.stepSize)-this.options.offset;}});var Sortables=new Class({Implements:[Events,Options],options:{opacity:1,clone:false,revert:false,handle:false,dragOptions:{}},initialize:function(lists,options){this.setOptions(options);this.elements=[];this.lists=[];this.idle=true;this.addLists($$(document.id(lists)||lists));if(!this.options.clone)this.options.revert=false;if(this.options.revert)this.effect=new Fx.Morph(null,Object.merge({duration:250,link:'cancel'},this.options.revert));},attach:function(){this.addLists(this.lists);return this;},detach:function(){this.lists=this.removeLists(this.lists);return this;},addItems:function(){Array.flatten(arguments).each(function(element){this.elements.push(element);var start=element.retrieve('sortables:start',function(event){this.start.call(this,event,element);}.bind(this));(this.options.handle?element.getElement(this.options.handle)||element:element).addEvent('mousedown',start);},this);return this;},addLists:function(){Array.flatten(arguments).each(function(list){this.lists.include(list);this.addItems(list.getChildren());},this);return this;},removeItems:function(){return $$(Array.flatten(arguments).map(function(element){this.elements.erase(element);var start=element.retrieve('sortables:start');(this.options.handle?element.getElement(this.options.handle)||element:element).removeEvent('mousedown',start);return element;},this));},removeLists:function(){return $$(Array.flatten(arguments).map(function(list){this.lists.erase(list);this.removeItems(list.getChildren());return list;},this));},getClone:function(event,element){if(!this.options.clone)return new Element(element.tagName).inject(document.body);if(typeOf(this.options.clone)=='function')return this.options.clone.call(this,event,element,this.list);var clone=element.clone(true).setStyles({margin:0,position:'absolute',visibility:'hidden',width:element.getStyle('width')}).addEvent('mousedown',function(event){element.fireEvent('mousedown',event);});if(clone.get('html').test('radio')){clone.getElements('input[type=radio]').each(function(input,i){input.set('name','clone_'+i);if(input.get('checked'))element.getElements('input[type=radio]')[i].set('checked',true);});}
return clone.inject(this.list).setPosition(element.getPosition(element.getOffsetParent()));},getDroppables:function(){var droppables=this.list.getChildren().erase(this.clone).erase(this.element);if(!this.options.constrain)droppables.append(this.lists).erase(this.list);return droppables;},insert:function(dragging,element){var where='inside';if(this.lists.contains(element)){this.list=element;this.drag.droppables=this.getDroppables();}else{where=this.element.getAllPrevious().contains(element)?'before':'after';}
this.element.inject(element,where);this.fireEvent('sort',[this.element,this.clone]);},start:function(event,element){if(!this.idle||event.rightClick||['button','input','a','textarea'].contains(event.target.get('tag')))return;this.idle=false;this.element=element;this.opacity=element.get('opacity');this.list=element.getParent();this.clone=this.getClone(event,element);this.drag=new Drag.Move(this.clone,Object.merge({droppables:this.getDroppables()},this.options.dragOptions)).addEvents({onSnap:function(){event.stop();this.clone.setStyle('visibility','visible');this.element.set('opacity',this.options.opacity||0);this.fireEvent('start',[this.element,this.clone]);}.bind(this),onEnter:this.insert.bind(this),onCancel:this.end.bind(this),onComplete:this.end.bind(this)});this.clone.inject(this.element,'before');this.drag.start(event);},end:function(){this.drag.detach();this.element.set('opacity',this.opacity);if(this.effect){var dim=this.element.getStyles('width','height'),clone=this.clone,pos=clone.computePosition(this.element.getPosition(this.clone.getOffsetParent()));var destroy=function(){this.removeEvent('cancel',destroy);clone.destroy();};this.effect.element=clone;this.effect.start({top:pos.top,left:pos.left,width:dim.width,height:dim.height,opacity:0.25}).addEvent('cancel',destroy).chain(destroy);}else{this.clone.destroy();}
this.reset();},reset:function(){this.idle=true;this.fireEvent('complete',this.element);},serialize:function(){var params=Array.link(arguments,{modifier:Type.isFunction,index:function(obj){return obj!=null;}});var serial=this.lists.map(function(list){return list.getChildren().map(params.modifier||function(element){return element.get('id');},this);},this);var index=params.index;if(this.lists.length==1)index=0;return(index||index===0)&&index>=0&&index<this.lists.length?serial[index]:serial;}});(function(){var Keyboard=this.Keyboard=new Class({Extends:Events,Implements:[Options],options:{defaultEventType:'keydown',active:false,manager:null,events:{},nonParsedEvents:['activate','deactivate','onactivate','ondeactivate','changed','onchanged']},initialize:function(options){if(options&&options.manager){this._manager=options.manager;delete options.manager;}
this.setOptions(options);this._setup();},addEvent:function(type,fn,internal){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn,internal);},removeEvent:function(type,fn){return this.parent(Keyboard.parse(type,this.options.defaultEventType,this.options.nonParsedEvents),fn);},toggleActive:function(){return this[this.isActive()?'deactivate':'activate']();},activate:function(instance){if(instance){if(instance.isActive())return this;if(this._activeKB&&instance!=this._activeKB){this.previous=this._activeKB;this.previous.fireEvent('deactivate');}
this._activeKB=instance.fireEvent('activate');Keyboard.manager.fireEvent('changed');}else if(this._manager){this._manager.activate(this);}
return this;},isActive:function(){return this._manager?(this._manager._activeKB==this):(Keyboard.manager==this);},deactivate:function(instance){if(instance){if(instance===this._activeKB){this._activeKB=null;instance.fireEvent('deactivate');Keyboard.manager.fireEvent('changed');}}else if(this._manager){this._manager.deactivate(this);}
return this;},relinquish:function(){if(this.isActive()&&this._manager&&this._manager.previous)this._manager.activate(this._manager.previous);else this.deactivate();return this;},manage:function(instance){if(instance._manager)instance._manager.drop(instance);this._instances.push(instance);instance._manager=this;if(!this._activeKB)this.activate(instance);return this;},drop:function(instance){instance.relinquish();this._instances.erase(instance);if(this._activeKB==instance){if(this.previous&&this._instances.contains(this.previous))this.activate(this.previous);else this._activeKB=this._instances[0];}
return this;},trace:function(){Keyboard.trace(this);},each:function(fn){Keyboard.each(this,fn);},_instances:[],_disable:function(instance){if(this._activeKB==instance)this._activeKB=null;},_setup:function(){this.addEvents(this.options.events);if(Keyboard.manager&&!this._manager)Keyboard.manager.manage(this);if(this.options.active)this.activate();else this.relinquish();},_handle:function(event,type){if(event.preventKeyboardPropagation)return;var bubbles=!!this._manager;if(bubbles&&this._activeKB){this._activeKB._handle(event,type);if(event.preventKeyboardPropagation)return;}
this.fireEvent(type,event);if(!bubbles&&this._activeKB)this._activeKB._handle(event,type);}});var parsed={};var modifiers=['shift','control','alt','meta'];var regex=/^(?:shift|control|ctrl|alt|meta)$/;Keyboard.parse=function(type,eventType,ignore){if(ignore&&ignore.contains(type.toLowerCase()))return type;type=type.toLowerCase().replace(/^(keyup|keydown):/,function($0,$1){eventType=$1;return'';});if(!parsed[type]){var key,mods={};type.split('+').each(function(part){if(regex.test(part))mods[part]=true;else key=part;});mods.control=mods.control||mods.ctrl;var keys=[];modifiers.each(function(mod){if(mods[mod])keys.push(mod);});if(key)keys.push(key);parsed[type]=keys.join('+');}
return eventType+':keys('+parsed[type]+')';};Keyboard.each=function(keyboard,fn){var current=keyboard||Keyboard.manager;while(current){fn.run(current);current=current._activeKB;}};Keyboard.stop=function(event){event.preventKeyboardPropagation=true;};Keyboard.manager=new Keyboard({active:true});Keyboard.trace=function(keyboard){keyboard=keyboard||Keyboard.manager;var hasConsole=window.console&&console.log;if(hasConsole)console.log('the following items have focus: ');Keyboard.each(keyboard,function(current){if(hasConsole)console.log(document.id(current.widget)||current.wiget||current);});};var handler=function(event){var keys=[];modifiers.each(function(mod){if(event[mod])keys.push(mod);});if(!regex.test(event.key))keys.push(event.key);Keyboard.manager._handle(event,event.type+':keys('+keys.join('+')+')');};document.addEvents({'keyup':handler,'keydown':handler});})();var HtmlTable=new Class({Implements:[Options,Events,Class.Occlude],options:{properties:{cellpadding:0,cellspacing:0,border:0},rows:[],headers:[],footers:[]},property:'HtmlTable',initialize:function(){var params=Array.link(arguments,{options:Type.isObject,table:Type.isElement,id:Type.isString});this.setOptions(params.options);if(!params.table&&params.id)params.table=document.id(params.id);this.element=params.table||new Element('table',this.options.properties);if(this.occlude())return this.occluded;this.build();},build:function(){this.element.store('HtmlTable',this);this.body=document.id(this.element.tBodies[0])||new Element('tbody').inject(this.element);$$(this.body.rows);if(this.options.headers.length)this.setHeaders(this.options.headers);else this.thead=document.id(this.element.tHead);if(this.thead)this.head=this.getHead();if(this.options.footers.length)this.setFooters(this.options.footers);this.tfoot=document.id(this.element.tFoot);if(this.tfoot)this.foot=document.id(this.tfoot.rows[0]);this.options.rows.each(function(row){this.push(row);},this);},toElement:function(){return this.element;},empty:function(){this.body.empty();return this;},set:function(what,items){var target=(what=='headers')?'tHead':'tFoot',lower=target.toLowerCase();this[lower]=(document.id(this.element[target])||new Element(lower).inject(this.element,'top')).empty();var data=this.push(items,{},this[lower],what=='headers'?'th':'td');if(what=='headers')this.head=this.getHead();else this.foot=this.getHead();return data;},getHead:function(){var rows=this.thead.rows;return rows.length>1?$$(rows):rows.length?document.id(rows[0]):false;},setHeaders:function(headers){this.set('headers',headers);return this;},setFooters:function(footers){this.set('footers',footers);return this;},update:function(tr,row,tag){var tds=tr.getChildren(tag||'td'),last=tds.length-1;row.each(function(data,index){var td=tds[index]||new Element(tag||'td').inject(tr),content=(data?data.content:'')||data,type=typeOf(content);if(data&&data.properties)td.set(data.properties);if(/(element(s?)|array|collection)/.test(type))td.empty().adopt(content);else td.set('html',content);if(index>last)tds.push(td);else tds[index]=td;});return{tr:tr,tds:tds};},push:function(row,rowProperties,target,tag,where){if(typeOf(row)=='element'&&row.get('tag')=='tr'){row.inject(target||this.body,where);return{tr:row,tds:row.getChildren('td')};}
return this.update(new Element('tr',rowProperties).inject(target||this.body,where),row,tag);},pushMany:function(rows,rowProperties,target,tag,where){return rows.map(function(row){return this.push(row,rowProperties,target,tag,where);},this);}});['adopt','inject','wraps','grab','replaces','dispose'].each(function(method){HtmlTable.implement(method,function(){this.element[method].apply(this.element,arguments);return this;});});HtmlTable=Class.refactor(HtmlTable,{options:{classZebra:'table-tr-odd',zebra:true,zebraOnlyVisibleRows:true},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;if(this.options.zebra)this.updateZebras();},updateZebras:function(){var index=0;Array.each(this.body.rows,function(row){if(!this.options.zebraOnlyVisibleRows||row.isDisplayed()){this.zebra(row,index++);}},this);},setRowStyle:function(row,i){if(this.previous)this.previous(row,i);this.zebra(row,i);},zebra:function(row,i){return row[((i%2)?'remove':'add')+'Class'](this.options.classZebra);},push:function(){var pushed=this.previous.apply(this,arguments);if(this.options.zebra)this.updateZebras();return pushed;}});var Scroller=new Class({Implements:[Events,Options],options:{area:20,velocity:1,onChange:function(x,y){this.element.scrollTo(x,y);},fps:50},initialize:function(element,options){this.setOptions(options);this.element=document.id(element);this.docBody=document.id(this.element.getDocument().body);this.listener=(typeOf(this.element)!='element')?this.docBody:this.element;this.timer=null;this.bound={attach:this.attach.bind(this),detach:this.detach.bind(this),getCoords:this.getCoords.bind(this)};},start:function(){this.listener.addEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});return this;},stop:function(){this.listener.removeEvents({mouseover:this.bound.attach,mouseleave:this.bound.detach});this.detach();this.timer=clearInterval(this.timer);return this;},attach:function(){this.listener.addEvent('mousemove',this.bound.getCoords);},detach:function(){this.listener.removeEvent('mousemove',this.bound.getCoords);this.timer=clearInterval(this.timer);},getCoords:function(event){this.page=(this.listener.get('tag')=='body')?event.client:event.page;if(!this.timer)this.timer=this.scroll.periodical(Math.round(1000/this.options.fps),this);},scroll:function(){var size=this.element.getSize(),scroll=this.element.getScroll(),pos=this.element!=this.docBody?this.element.getOffsets():{x:0,y:0},scrollSize=this.element.getScrollSize(),change={x:0,y:0},top=this.options.area.top||this.options.area,bottom=this.options.area.bottom||this.options.area;for(var z in this.page){if(this.page[z]<(top+pos[z])&&scroll[z]!=0){change[z]=(this.page[z]-top-pos[z])*this.options.velocity;}else if(this.page[z]+bottom>(size[z]+pos[z])&&scroll[z]+size[z]!=scrollSize[z]){change[z]=(this.page[z]-size[z]+bottom-pos[z])*this.options.velocity;}
change[z]=change[z].round();}
if(change.y||change.x)this.fireEvent('change',[scroll.x+change.x,scroll.y+change.y]);}});(function(){var read=function(option,element){return(option)?(typeOf(option)=='function'?option(element):element.get(option)):'';};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle('display','block');},onHide:function(){this.tip.setStyle('display','none');},title:'title',text:function(element){return element.get('rel')||element.get('href');},showDelay:100,hideDelay:100,className:'tip-wrap',offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false,waiAria:true},initialize:function(){var params=Array.link(arguments,{options:Type.isObject,elements:function(obj){return obj!=null;}});this.setOptions(params.options);if(params.elements)this.attach(params.elements);this.container=new Element('div',{'class':'tip'});if(this.options.id){this.container.set('id',this.options.id);if(this.options.waiAria)this.attachWaiAria();}},toElement:function(){if(this.tip)return this.tip;this.tip=new Element('div',{'class':this.options.className,styles:{position:'absolute',top:0,left:0}}).adopt(new Element('div',{'class':'tip-top'}),this.container,new Element('div',{'class':'tip-bottom'}));return this.tip;},attachWaiAria:function(){var id=this.options.id;this.container.set('role','tooltip');if(!this.waiAria){this.waiAria={show:function(element){if(id)element.set('aria-describedby',id);this.container.set('aria-hidden','false');},hide:function(element){if(id)element.erase('aria-describedby');this.container.set('aria-hidden','true');}};}
this.addEvents(this.waiAria);},detachWaiAria:function(){if(this.waiAria){this.container.erase('role');this.container.erase('aria-hidden');this.removeEvents(this.waiAria);}},attach:function(elements){$$(elements).each(function(element){var title=read(this.options.title,element),text=read(this.options.text,element);element.set('title','').store('tip:native',title).retrieve('tip:title',title);element.retrieve('tip:text',text);this.fireEvent('attach',[element]);var events=['enter','leave'];if(!this.options.fixed)events.push('move');events.each(function(value){var event=element.retrieve('tip:'+value);if(!event)event=function(event){this['element'+value.capitalize()].apply(this,[event,element]);}.bind(this);element.store('tip:'+value,event).addEvent('mouse'+value,event);},this);},this);return this;},detach:function(elements){$$(elements).each(function(element){['enter','leave','move'].each(function(value){element.removeEvent('mouse'+value,element.retrieve('tip:'+value)).eliminate('tip:'+value);});this.fireEvent('detach',[element]);if(this.options.title=='title'){var original=element.retrieve('tip:native');if(original)element.set('title',original);}},this);return this;},elementEnter:function(event,element){clearTimeout(this.timer);this.timer=(function(){this.container.empty();['title','text'].each(function(value){var content=element.retrieve('tip:'+value);var div=this['_'+value+'Element']=new Element('div',{'class':'tip-'+value}).inject(this.container);if(content)this.fill(div,content);},this);this.show(element);this.position((this.options.fixed)?{page:element.getPosition()}:event);}).delay(this.options.showDelay,this);},elementLeave:function(event,element){clearTimeout(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,element);this.fireForParent(event,element);},setTitle:function(title){if(this._titleElement){this._titleElement.empty();this.fill(this._titleElement,title);}
return this;},setText:function(text){if(this._textElement){this._textElement.empty();this.fill(this._textElement,text);}
return this;},fireForParent:function(event,element){element=element.getParent();if(!element||element==document.body)return;if(element.retrieve('tip:enter'))element.fireEvent('mouseenter',event);else this.fireForParent(event,element);},elementMove:function(event,element){this.position(event);},position:function(event){if(!this.tip)document.id(this);var size=window.getSize(),scroll=window.getScroll(),tip={x:this.tip.offsetWidth,y:this.tip.offsetHeight},props={x:'left',y:'top'},bounds={y:false,x2:false,y2:false,x:false},obj={};for(var z in props){obj[props[z]]=event.page[z]+this.options.offset[z];if(obj[props[z]]<0)bounds[z]=true;if((obj[props[z]]+tip[z]-scroll[z])>size[z]-this.options.windowPadding[z]){obj[props[z]]=event.page[z]-this.options.offset[z]-tip[z];bounds[z+'2']=true;}}
this.fireEvent('bound',bounds);this.tip.setStyles(obj);},fill:function(element,contents){if(typeof contents=='string')element.set('html',contents);else element.adopt(contents);},show:function(element){if(!this.tip)document.id(this);if(!this.tip.getParent())this.tip.inject(document.body);this.fireEvent('show',[this.tip,element]);},hide:function(element){if(!this.tip)document.id(this);this.fireEvent('hide',[this.tip,element]);}});})();var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:'iframeShim',src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.ie6||(Browser.firefox&&Browser.version<3&&Browser.Platform.mac))},property:'IframeShim',initialize:function(element,options){this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var zIndex=this.element.getStyle('zIndex').toInt();if(!zIndex){zIndex=1;var pos=this.element.getStyle('position');if(pos=='static'||!pos)this.element.setStyle('position','relative');this.element.setStyle('zIndex',zIndex);}
zIndex=((this.options.zIndex!=null||this.options.zIndex===0)&&zIndex>this.options.zIndex)?this.options.zIndex:zIndex-1;if(zIndex<0)zIndex=1;this.shim=new Element('iframe',{src:this.options.src,scrolling:'no',frameborder:0,styles:{zIndex:zIndex,position:'absolute',border:'none',filter:'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'},'class':this.options.className}).store('IframeShim',this);var inject=(function(){this.shim.inject(this.element,'after');this[this.options.display?'show':'hide']();this.fireEvent('inject');}).bind(this);if(!IframeShim.ready)window.addEvent('load',inject);else inject();}else{this.position=this.hide=this.show=this.dispose=Function.from(this);}},position:function(){if(!IframeShim.ready||!this.shim)return this;var size=this.element.measure(function(){return this.getSize();});if(this.options.margin!=undefined){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}
this.shim.set({width:size.x,height:size.y}).position({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.shim)this.shim.setStyle('display','none');return this;},show:function(){if(this.shim)this.shim.setStyle('display','block');return this.position();},dispose:function(){if(this.shim)this.shim.dispose();return this;},destroy:function(){if(this.shim)this.shim.destroy();return this;}});window.addEvent('load',function(){IframeShim.ready=true;});var Mask=new Class({Implements:[Options,Events],Binds:['position'],options:{style:{},'class':'mask',maskMargins:false,useIframeShim:true,iframeShimOptions:{}},initialize:function(target,options){this.target=document.id(target)||document.id(document.body);this.target.store('mask',this);this.setOptions(options);this.render();this.inject();},render:function(){this.element=new Element('div',{'class':this.options['class'],id:this.options.id||'mask-'+String.uniqueID(),styles:Object.merge({},this.options.style,{display:'none'}),events:{click:function(event){this.fireEvent('click',event);if(this.options.hideOnClick)this.hide();}.bind(this)}});this.hidden=true;},toElement:function(){return this.element;},inject:function(target,where){where=where||(this.options.inject?this.options.inject.where:'')||this.target==document.body?'inside':'after';target=target||(this.options.inject&&this.options.inject.target)||this.target;this.element.inject(target,where);if(this.options.useIframeShim){this.shim=new IframeShim(this.element,this.options.iframeShimOptions);this.addEvents({show:this.shim.show.bind(this.shim),hide:this.shim.hide.bind(this.shim),destroy:this.shim.destroy.bind(this.shim)});}},position:function(){this.resize(this.options.width,this.options.height);this.element.position({relativeTo:this.target,position:'topLeft',ignoreMargins:!this.options.maskMargins,ignoreScroll:this.target==document.body});return this;},resize:function(x,y){var opt={styles:['padding','border']};if(this.options.maskMargins)opt.styles.push('margin');var dim=this.target.getComputedSize(opt);if(this.target==document.body){this.element.setStyles({width:0,height:0});var win=window.getScrollSize();if(dim.totalHeight<win.y)dim.totalHeight=win.y;if(dim.totalWidth<win.x)dim.totalWidth=win.x;}
this.element.setStyles({width:Array.pick([x,dim.totalWidth,dim.x]),height:Array.pick([y,dim.totalHeight,dim.y])});return this;},show:function(){if(!this.hidden)return this;window.addEvent('resize',this.position);this.position();this.showMask.apply(this,arguments);return this;},showMask:function(){this.element.setStyle('display','block');this.hidden=false;this.fireEvent('show');},hide:function(){if(this.hidden)return this;window.removeEvent('resize',this.position);this.hideMask.apply(this,arguments);if(this.options.destroyOnHide)return this.destroy();return this;},hideMask:function(){this.element.setStyle('display','none');this.hidden=true;this.fireEvent('hide');},toggle:function(){this[this.hidden?'show':'hide']();},destroy:function(){this.hide();this.element.destroy();this.fireEvent('destroy');this.target.eliminate('mask');}});Element.Properties.mask={set:function(options){var mask=this.retrieve('mask');if(mask)mask.destroy();return this.eliminate('mask').store('mask:options',options);},get:function(){var mask=this.retrieve('mask');if(!mask){mask=new Mask(this,this.retrieve('mask:options'));this.store('mask',mask);}
return mask;}};Element.implement({mask:function(options){if(options)this.set('mask',options);this.get('mask').show();return this;},unmask:function(){this.get('mask').hide();return this;}});var Spinner=new Class({Extends:Mask,Implements:Chain,options:{'class':'spinner',containerPosition:{},content:{'class':'spinner-content'},messageContainer:{'class':'spinner-msg'},img:{'class':'spinner-img'},fxOptions:{link:'chain'}},initialize:function(target,options){this.target=document.id(target)||document.id(document.body);this.target.store('spinner',this);this.setOptions(options);this.render();this.inject();var deactivate=function(){this.active=false;}.bind(this);this.addEvents({hide:deactivate,show:deactivate});},render:function(){this.parent();this.element.set('id',this.options.id||'spinner-'+String.uniqueID());this.content=document.id(this.options.content)||new Element('div',this.options.content);this.content.inject(this.element);if(this.options.message){this.msg=document.id(this.options.message)||new Element('p',this.options.messageContainer).appendText(this.options.message);this.msg.inject(this.content);}
if(this.options.img){this.img=document.id(this.options.img)||new Element('div',this.options.img);this.img.inject(this.content);}
this.element.set('tween',this.options.fxOptions);},show:function(noFx){if(this.active)return this.chain(this.show.bind(this));if(!this.hidden){this.callChain.delay(20,this);return this;}
this.active=true;return this.parent(noFx);},showMask:function(noFx){var pos=function(){this.content.position(Object.merge({relativeTo:this.element},this.options.containerPosition));}.bind(this);if(noFx){this.parent();pos();}else{if(!this.options.style.opacity)this.options.style.opacity=this.element.getStyle('opacity').toFloat();this.element.setStyles({display:'block',opacity:0}).tween('opacity',this.options.style.opacity);pos();this.hidden=false;this.fireEvent('show');this.callChain();}},hide:function(noFx){if(this.active)return this.chain(this.hide.bind(this));if(this.hidden){this.callChain.delay(20,this);return this;}
this.active=true;return this.parent(noFx);},hideMask:function(noFx){if(noFx)return this.parent();this.element.tween('opacity',0).get('tween').chain(function(){this.element.setStyle('display','none');this.hidden=true;this.fireEvent('hide');this.callChain();}.bind(this));},destroy:function(){this.content.destroy();this.parent();this.target.eliminate('spinner');}});Request=Class.refactor(Request,{options:{useSpinner:false,spinnerOptions:{},spinnerTarget:false},initialize:function(options){this._send=this.send;this.send=function(options){var spinner=this.getSpinner();if(spinner)spinner.chain(this._send.pass(options,this)).show();else this._send(options);return this;};this.previous(options);},getSpinner:function(){if(!this.spinner){var update=document.id(this.options.spinnerTarget)||document.id(this.options.update);if(this.options.useSpinner&&update){update.set('spinner',this.options.spinnerOptions);var spinner=this.spinner=update.get('spinner');['complete','exception','cancel'].each(function(event){this.addEvent(event,spinner.hide.bind(spinner));},this);}}
return this.spinner;}});Element.Properties.spinner={set:function(options){var spinner=this.retrieve('spinner');if(spinner)spinner.destroy();return this.eliminate('spinner').store('spinner:options',options);},get:function(){var spinner=this.retrieve('spinner');if(!spinner){spinner=new Spinner(this,this.retrieve('spinner:options'));this.store('spinner',spinner);}
return spinner;}};Element.implement({spin:function(options){if(options)this.set('spinner',options);this.get('spinner').show();return this;},unspin:function(){this.get('spinner').hide();return this;}});Keyboard.prototype.options.nonParsedEvents.combine(['rebound','onrebound']);Keyboard.implement({addShortcut:function(name,shortcut){this._shortcuts=this._shortcuts||[];this._shortcutIndex=this._shortcutIndex||{};shortcut.getKeyboard=Function.from(this);shortcut.name=name;this._shortcutIndex[name]=shortcut;this._shortcuts.push(shortcut);if(shortcut.keys)this.addEvent(shortcut.keys,shortcut.handler);return this;},addShortcuts:function(obj){for(var name in obj)this.addShortcut(name,obj[name]);return this;},removeShortcut:function(name){var shortcut=this.getShortcut(name);if(shortcut&&shortcut.keys){this.removeEvent(shortcut.keys,shortcut.handler);delete this._shortcutIndex[name];this._shortcuts.erase(shortcut);}
return this;},removeShortcuts:function(names){names.each(this.removeShortcut,this);return this;},getShortcuts:function(){return this._shortcuts||[];},getShortcut:function(name){return(this._shortcutIndex||{})[name];}});Keyboard.rebind=function(newKeys,shortcuts){Array.from(shortcuts).each(function(shortcut){shortcut.getKeyboard().removeEvent(shortcut.keys,shortcut.handler);shortcut.getKeyboard().addEvent(newKeys,shortcut.handler);shortcut.keys=newKeys;shortcut.getKeyboard().fireEvent('rebound');});};Keyboard.getActiveShortcuts=function(keyboard){var activeKBS=[],activeSCS=[];Keyboard.each(keyboard,[].push.bind(activeKBS));activeKBS.each(function(kb){activeSCS.extend(kb.getShortcuts());});return activeSCS;};Keyboard.getShortcut=function(name,keyboard,opts){opts=opts||{};var shortcuts=opts.many?[]:null,set=opts.many?function(kb){var shortcut=kb.getShortcut(name);if(shortcut)shortcuts.push(shortcut);}:function(kb){if(!shortcuts)shortcuts=kb.getShortcut(name);};Keyboard.each(keyboard,set);return shortcuts;};Keyboard.getShortcuts=function(name,keyboard){return Keyboard.getShortcut(name,keyboard,{many:true});};HtmlTable=Class.refactor(HtmlTable,{options:{useKeyboard:true,classRowSelected:'table-tr-selected',classRowHovered:'table-tr-hovered',classSelectable:'table-selectable',shiftForMultiSelect:true,allowMultiSelect:true,selectable:false,selectHiddenRows:false},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;this.selectedRows=new Elements();if(!this.bound)this.bound={};this.bound.mouseleave=this.mouseleave.bind(this);this.bound.clickRow=this.clickRow.bind(this);this.bound.activateKeyboard=function(){if(this.keyboard&&this.selectEnabled)this.keyboard.activate();}.bind(this);if(this.options.selectable)this.enableSelect();},empty:function(){this.selectNone();return this.previous();},enableSelect:function(){this.selectEnabled=true;this.attachSelects();this.element.addClass(this.options.classSelectable);return this;},disableSelect:function(){this.selectEnabled=false;this.attachSelects(false);this.element.removeClass(this.options.classSelectable);return this;},push:function(){var ret=this.previous.apply(this,arguments);this.updateSelects();return ret;},toggleRow:function(row){return this[(this.isSelected(row)?'de':'')+'selectRow'](row);},selectRow:function(row,_nocheck){if(this.isSelected(row)||(!_nocheck&&!this.body.getChildren().contains(row)))return;if(!this.options.allowMultiSelect)this.selectNone();if(!this.isSelected(row)){this.selectedRows.push(row);row.addClass(this.options.classRowSelected);this.fireEvent('rowFocus',[row,this.selectedRows]);this.fireEvent('stateChanged');}
this.focused=row;document.clearSelection();return this;},isSelected:function(row){return this.selectedRows.contains(row);},getSelected:function(){return this.selectedRows;},getSelected:function(){return this.selectedRows;},serialize:function(){var previousSerialization=this.previous.apply(this,arguments)||{};if(this.options.selectable){previousSerialization.selectedRows=this.selectedRows.map(function(row){return Array.indexOf(this.body.rows,row);}.bind(this));}
return previousSerialization;},restore:function(tableState){if(this.options.selectable&&tableState.selectedRows){tableState.selectedRows.each(function(index){this.selectRow(this.body.rows[index]);}.bind(this));}
this.previous.apply(this,arguments);},deselectRow:function(row,_nocheck){if(!this.isSelected(row)||(!_nocheck&&!this.body.getChildren().contains(row)))return;this.selectedRows=new Elements(Array.from(this.selectedRows).erase(row));row.removeClass(this.options.classRowSelected);this.fireEvent('rowUnfocus',[row,this.selectedRows]);this.fireEvent('stateChanged');return this;},selectAll:function(selectNone){if(!selectNone&&!this.options.allowMultiSelect)return;this.selectRange(0,this.body.rows.length,selectNone);return this;},selectNone:function(){return this.selectAll(true);},selectRange:function(startRow,endRow,_deselect){if(!this.options.allowMultiSelect&&!_deselect)return;var method=_deselect?'deselectRow':'selectRow',rows=Array.clone(this.body.rows);if(typeOf(startRow)=='element')startRow=rows.indexOf(startRow);if(typeOf(endRow)=='element')endRow=rows.indexOf(endRow);endRow=endRow<rows.length-1?endRow:rows.length-1;if(endRow<startRow){var tmp=startRow;startRow=endRow;endRow=tmp;}
for(var i=startRow;i<=endRow;i++){if(this.options.selectHiddenRows||rows[i].isDisplayed())this[method](rows[i],true);}
return this;},deselectRange:function(startRow,endRow){this.selectRange(startRow,endRow,true);},getSelected:function(){return this.selectedRows;},enterRow:function(row){if(this.hovered)this.hovered=this.leaveRow(this.hovered);this.hovered=row.addClass(this.options.classRowHovered);},leaveRow:function(row){row.removeClass(this.options.classRowHovered);},updateSelects:function(){Array.each(this.body.rows,function(row){var binders=row.retrieve('binders');if(!binders&&!this.selectEnabled)return;if(!binders){binders={mouseenter:this.enterRow.pass([row],this),mouseleave:this.leaveRow.pass([row],this)};row.store('binders',binders);}
if(this.selectEnabled)row.addEvents(binders);else row.removeEvents(binders);},this);},shiftFocus:function(offset,event){if(!this.focused)return this.selectRow(this.body.rows[0],event);var to=this.getRowByOffset(offset,this.options.selectHiddenRows);if(to===null||this.focused==this.body.rows[to])return this;this.toggleRow(this.body.rows[to],event);},clickRow:function(event,row){var selecting=(event.shift||event.meta||event.control)&&this.options.shiftForMultiSelect;if(!selecting&&!(event.rightClick&&this.isSelected(row)&&this.options.allowMultiSelect))this.selectNone();if(event.rightClick)this.selectRow(row);else this.toggleRow(row);if(event.shift){this.selectRange(this.rangeStart||this.body.rows[0],row,this.rangeStart?!this.isSelected(row):true);this.focused=row;}
this.rangeStart=row;},getRowByOffset:function(offset,includeHiddenRows){if(!this.focused)return 0;var index=Array.indexOf(this.body.rows,this.focused);if((index==0&&offset<0)||(index==this.body.rows.length-1&&offset>0))return null;if(includeHiddenRows){index+=offset;}else{var limit=0,count=0;if(offset>0){while(count<offset&&index<this.body.rows.length-1){if(this.body.rows[++index].isDisplayed())count++;}}else{while(count>offset&&index>0){if(this.body.rows[--index].isDisplayed())count--;}}}
return index;},attachSelects:function(attach){attach=attach!=null?attach:true;var method=attach?'addEvents':'removeEvents';this.element[method]({mouseleave:this.bound.mouseleave,click:this.bound.activateKeyboard});this.body[method]({'click:relay(tr)':this.bound.clickRow,'contextmenu:relay(tr)':this.bound.clickRow});if(this.options.useKeyboard||this.keyboard){if(!this.keyboard)this.keyboard=new Keyboard();if(!this.selectKeysDefined){this.selectKeysDefined=true;var timer,held;var move=function(offset){var mover=function(e){clearTimeout(timer);e.preventDefault();var to=this.body.rows[this.getRowByOffset(offset,this.options.selectHiddenRows)];if(e.shift&&to&&this.isSelected(to)){this.deselectRow(this.focused);this.focused=to;}else{if(to&&(!this.options.allowMultiSelect||!e.shift)){this.selectNone();}
this.shiftFocus(offset,e);}
if(held){timer=mover.delay(100,this,e);}else{timer=(function(){held=true;mover(e);}).delay(400);}}.bind(this);return mover;}.bind(this);var clear=function(){clearTimeout(timer);held=false;};this.keyboard.addEvents({'keydown:shift+up':move(-1),'keydown:shift+down':move(1),'keyup:shift+up':clear,'keyup:shift+down':clear,'keyup:up':clear,'keyup:down':clear});var shiftHint='';if(this.options.allowMultiSelect&&this.options.shiftForMultiSelect&&this.options.useKeyboard){shiftHint=" (Shift multi-selects).";}
this.keyboard.addShortcuts({'Select Previous Row':{keys:'up',shortcut:'up arrow',handler:move(-1),description:'Select the previous row in the table.'+shiftHint},'Select Next Row':{keys:'down',shortcut:'down arrow',handler:move(1),description:'Select the next row in the table.'+shiftHint}});}
this.keyboard[attach?'activate':'deactivate']();}
this.updateSelects();},mouseleave:function(){if(this.hovered)this.leaveRow(this.hovered);}});HtmlTable=Class.refactor(HtmlTable,{options:{sortIndex:0,sortReverse:false,parsers:[],defaultParser:'string',classSortable:'table-sortable',classHeadSort:'table-th-sort',classHeadSortRev:'table-th-sort-rev',classNoSort:'table-th-nosort',classGroupHead:'table-tr-group-head',classGroup:'table-tr-group',classCellSort:'table-td-sort',classSortSpan:'table-th-sort-span',sortable:false,thSelector:'th'},initialize:function(){this.previous.apply(this,arguments);if(this.occluded)return this.occluded;this.sorted={index:null,dir:1};if(!this.bound)this.bound={};this.bound.headClick=this.headClick.bind(this);this.sortSpans=new Elements();if(this.options.sortable){this.enableSort();if(this.options.sortIndex!=null)this.sort(this.options.sortIndex,this.options.sortReverse);}},attachSorts:function(attach){this.detachSorts();if(attach!==false)this.element.addEvent('click:relay('+this.options.thSelector+')',this.bound.headClick);},detachSorts:function(){this.element.removeEvents('click:relay('+this.options.thSelector+')');},setHeaders:function(){this.previous.apply(this,arguments);if(this.sortEnabled)this.setParsers();},setParsers:function(){this.parsers=this.detectParsers();},detectParsers:function(){return this.head&&this.head.getElements(this.options.thSelector).flatten().map(this.detectParser,this);},detectParser:function(cell,index){if(cell.hasClass(this.options.classNoSort)||cell.retrieve('htmltable-parser'))return cell.retrieve('htmltable-parser');var thDiv=new Element('div');thDiv.adopt(cell.childNodes).inject(cell);var sortSpan=new Element('span',{'class':this.options.classSortSpan}).inject(thDiv,'top');this.sortSpans.push(sortSpan);var parser=this.options.parsers[index],rows=this.body.rows,cancel;switch(typeOf(parser)){case'function':parser={convert:parser};cancel=true;break;case'string':parser=parser;cancel=true;break;}
if(!cancel){HtmlTable.ParserPriority.some(function(parserName){var current=HtmlTable.Parsers[parserName],match=current.match;if(!match)return false;for(var i=0,j=rows.length;i<j;i++){var cell=document.id(rows[i].cells[index]),text=cell?cell.get('html').clean():'';if(text&&match.test(text)){parser=current;return true;}}});}
if(!parser)parser=this.options.defaultParser;cell.store('htmltable-parser',parser);return parser;},headClick:function(event,el){if(!this.head||el.hasClass(this.options.classNoSort))return;return this.sort(Array.indexOf(this.head.getElements(this.options.thSelector).flatten(),el)%this.body.rows[0].cells.length);},serialize:function(){var previousSerialization=this.previous.apply(this,arguments)||{};if(this.options.sortable){previousSerialization.sortIndex=this.sorted.index;previousSerialization.sortReverse=this.sorted.reverse;}
return previousSerialization;},restore:function(tableState){if(this.options.sortable&&tableState.sortIndex){this.sort(tableState.sortIndex,tableState.sortReverse);}
this.previous.apply(this,arguments);},setSortedState:function(index,reverse){if(reverse!=null)this.sorted.reverse=reverse;else if(this.sorted.index==index)this.sorted.reverse=!this.sorted.reverse;else this.sorted.reverse=this.sorted.index==null;if(index!=null)this.sorted.index=index;},setHeadSort:function(sorted){var head=$$(!this.head.length?this.head.cells[this.sorted.index]:this.head.map(function(row){return row.getElements(this.options.thSelector)[this.sorted.index];},this).clean());if(!head.length)return;if(sorted){head.addClass(this.options.classHeadSort);if(this.sorted.reverse)head.addClass(this.options.classHeadSortRev);else head.removeClass(this.options.classHeadSortRev);}else{head.removeClass(this.options.classHeadSort).removeClass(this.options.classHeadSortRev);}},setRowSort:function(data,pre){var count=data.length,body=this.body,group,rowIndex;while(count){var item=data[--count],position=item.position,row=body.rows[position];if(row.disabled)continue;if(!pre){group=this.setGroupSort(group,row,item);this.setRowStyle(row,count);}
body.appendChild(row);for(rowIndex=0;rowIndex<count;rowIndex++){if(data[rowIndex].position>position)data[rowIndex].position--;}}},setRowStyle:function(row,i){this.previous(row,i);row.cells[this.sorted.index].addClass(this.options.classCellSort);},setGroupSort:function(group,row,item){if(group==item.value)row.removeClass(this.options.classGroupHead).addClass(this.options.classGroup);else row.removeClass(this.options.classGroup).addClass(this.options.classGroupHead);return item.value;},getParser:function(){var parser=this.parsers[this.sorted.index];return typeOf(parser)=='string'?HtmlTable.Parsers[parser]:parser;},sort:function(index,reverse,pre){if(!this.head)return;if(!pre){this.clearSort();this.setSortedState(index,reverse);this.setHeadSort(true);}
var parser=this.getParser();if(!parser)return;var rel;if(!Browser.ie){rel=this.body.getParent();this.body.dispose();}
var data=this.parseData(parser).sort(function(a,b){if(a.value===b.value)return 0;return a.value>b.value?1:-1;});if(this.sorted.reverse==(parser==HtmlTable.Parsers['input-checked']))data.reverse(true);this.setRowSort(data,pre);if(rel)rel.grab(this.body);this.fireEvent('stateChanged');return this.fireEvent('sort',[this.body,this.sorted.index]);},parseData:function(parser){return Array.map(this.body.rows,function(row,i){var value=parser.convert.call(document.id(row.cells[this.sorted.index]));return{position:i,value:value};},this);},clearSort:function(){this.setHeadSort(false);this.body.getElements('td').removeClass(this.options.classCellSort);},reSort:function(){if(this.sortEnabled)this.sort.call(this,this.sorted.index,this.sorted.reverse);return this;},enableSort:function(){this.element.addClass(this.options.classSortable);this.attachSorts(true);this.setParsers();this.sortEnabled=true;return this;},disableSort:function(){this.element.removeClass(this.options.classSortable);this.attachSorts(false);this.sortSpans.each(function(span){span.destroy();});this.sortSpans.empty();this.sortEnabled=false;return this;}});HtmlTable.ParserPriority=['date','input-checked','input-value','float','number'];HtmlTable.Parsers={'date':{match:/^\d{2}[-\/ ]\d{2}[-\/ ]\d{2,4}$/,convert:function(){var d=Date.parse(this.get('text').stripTags());return(typeOf(d)=='date')?d.format('db'):'';},type:'date'},'input-checked':{match:/ type="(radio|checkbox)" /,convert:function(){return this.getElement('input').checked;}},'input-value':{match:/<input/,convert:function(){return this.getElement('input').value;}},'number':{match:/^\d+[^\d.,]*$/,convert:function(){return this.get('text').stripTags().toInt();},number:true},'numberLax':{match:/^[^\d]+\d+$/,convert:function(){return this.get('text').replace(/[^-?^0-9]/,'').stripTags().toInt();},number:true},'float':{match:/^[\d]+\.[\d]+/,convert:function(){return this.get('text').replace(/[^-?^\d.]/,'').stripTags().toFloat();},number:true},'floatLax':{match:/^[^\d]+[\d]+\.[\d]+$/,convert:function(){return this.get('text').replace(/[^-?^\d.]/,'').stripTags();},number:true},'string':{match:null,convert:function(){return this.get('text').stripTags().toLowerCase();}},'title':{match:null,convert:function(){return this.title;}}};HtmlTable.defineParsers=function(parsers){HtmlTable.Parsers=Object.append(HtmlTable.Parsers,parsers);for(var parser in parsers){HtmlTable.ParserPriority.unshift(parser);}};Form.Validator.addAllThese([['validate-enforce-oncheck',{test:function(element,props){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;(props.toEnforce||document.id(props.enforceChildrenOf).getElements('input, select, textarea')).map(function(item){if(element.checked){fv.enforceField(item);}else{fv.ignoreField(item);fv.resetField(item);}});return true;}}],['validate-ignore-oncheck',{test:function(element,props){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;(props.toIgnore||document.id(props.ignoreChildrenOf).getElements('input, select, textarea')).each(function(item){if(element.checked){fv.ignoreField(item);fv.resetField(item);}else{fv.enforceField(item);}});return true;}}],['validate-nospace',{errorMsg:function(){return Form.Validator.getMsg('noSpace');},test:function(element,props){return!element.get('value').test(/\s/);}}],['validate-toggle-oncheck',{test:function(element,props){var fv=element.getParent('form').retrieve('validator');if(!fv)return true;var eleArr=props.toToggle||document.id(props.toToggleChildrenOf).getElements('input, select, textarea');if(!element.checked){eleArr.each(function(item){fv.ignoreField(item);fv.resetField(item);});}else{eleArr.each(function(item){fv.enforceField(item);});}
return true;}}],['validate-reqchk-bynode',{errorMsg:function(){return Form.Validator.getMsg('reqChkByNode');},test:function(element,props){return(document.id(props.nodeId).getElements(props.selector||'input[type=checkbox], input[type=radio]')).some(function(item){return item.checked;});}}],['validate-required-check',{errorMsg:function(element,props){return props.useTitle?element.get('title'):Form.Validator.getMsg('requiredChk');},test:function(element,props){return!!element.checked;}}],['validate-reqchk-byname',{errorMsg:function(element,props){return Form.Validator.getMsg('reqChkByName').substitute({label:props.label||element.get('type')});},test:function(element,props){var grpName=props.groupName||element.get('name');var oneCheckedItem=$$(document.getElementsByName(grpName)).some(function(item,index){return item.checked;});var fv=element.getParent('form').retrieve('validator');if(oneCheckedItem&&fv)fv.resetField(element);return oneCheckedItem;}}],['validate-match',{errorMsg:function(element,props){return Form.Validator.getMsg('match').substitute({matchName:props.matchName||document.id(props.matchInput).get('name')});},test:function(element,props){var eleVal=element.get('value');var matchVal=document.id(props.matchInput)&&document.id(props.matchInput).get('value');return eleVal&&matchVal?eleVal==matchVal:true;}}],['validate-after-date',{errorMsg:function(element,props){return Form.Validator.getMsg('afterDate').substitute({label:props.afterLabel||(props.afterElement?Form.Validator.getMsg('startDate'):Form.Validator.getMsg('currentDate'))});},test:function(element,props){var start=document.id(props.afterElement)?Date.parse(document.id(props.afterElement).get('value')):new Date();var end=Date.parse(element.get('value'));return end&&start?end>=start:true;}}],['validate-before-date',{errorMsg:function(element,props){return Form.Validator.getMsg('beforeDate').substitute({label:props.beforeLabel||(props.beforeElement?Form.Validator.getMsg('endDate'):Form.Validator.getMsg('currentDate'))});},test:function(element,props){var start=Date.parse(element.get('value'));var end=document.id(props.beforeElement)?Date.parse(document.id(props.beforeElement).get('value')):new Date();return end&&start?end>=start:true;}}],['validate-custom-required',{errorMsg:function(){return Form.Validator.getMsg('required');},test:function(element,props){return element.get('value')!=props.emptyValue;}}],['validate-same-month',{errorMsg:function(element,props){var startMo=document.id(props.sameMonthAs)&&document.id(props.sameMonthAs).get('value');var eleVal=element.get('value');if(eleVal!='')return Form.Validator.getMsg(startMo?'sameMonth':'startMonth');},test:function(element,props){var d1=Date.parse(element.get('value'));var d2=Date.parse(document.id(props.sameMonthAs)&&document.id(props.sameMonthAs).get('value'));return d1&&d2?d1.format('%B')==d2.format('%B'):true;}}],['validate-cc-num',{errorMsg:function(element){var ccNum=element.get('value').replace(/[^0-9]/g,'');return Form.Validator.getMsg('creditcard').substitute({length:ccNum.length});},test:function(element){if(Form.Validator.getValidator('IsEmpty').test(element))return true;var ccNum=element.get('value');ccNum=ccNum.replace(/[^0-9]/g,'');var valid_type=false;if(ccNum.test(/^4[0-9]{12}([0-9]{3})?$/))valid_type='Visa';else if(ccNum.test(/^5[1-5]([0-9]{14})$/))valid_type='Master Card';else if(ccNum.test(/^3[47][0-9]{13}$/))valid_type='American Express';else if(ccNum.test(/^6011[0-9]{12}$/))valid_type='Discover';if(valid_type){var sum=0;var cur=0;for(var i=ccNum.length-1;i>=0;--i){cur=ccNum.charAt(i).toInt();if(cur==0)continue;if((ccNum.length-i)%2==0)cur+=cur;if(cur>9){cur=cur.toString().charAt(0).toInt()+cur.toString().charAt(1).toInt();}
sum+=cur;}
if((sum%10)==0)return true;}
var chunks='';while(ccNum!=''){chunks+=' '+ccNum.substr(0,4);ccNum=ccNum.substr(4);}
element.getParent('form').retrieve('validator').ignoreField(element);element.set('value',chunks.clean());element.getParent('form').retrieve('validator').enforceField(element);return false;}}]]);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(form,target,options){this.element=document.id(form);if(this.occlude())return this.occluded;this.setOptions(options).setTarget(target).attach();},setTarget:function(target){this.target=document.id(target);if(!this.request){this.makeRequest();}else{this.request.setOptions({update:this.target});}
return this;},toElement:function(){return this.element;},makeRequest:function(){var self=this;this.request=new Request.HTML(Object.merge({update:this.target,emulation:false,spinnerTarget:this.element,method:this.element.get('method')||'post'},this.options.requestOptions)).addEvents({success:function(tree,elements,html,javascript){['complete','success'].each(function(evt){self.fireEvent(evt,[self.target,tree,elements,html,javascript]);});},failure:function(){self.fireEvent('complete',arguments).fireEvent('failure',arguments);},exception:function(){self.fireEvent('failure',arguments);}});return this.attachReset();},attachReset:function(){if(!this.options.resetForm)return this;this.request.addEvent('success',function(){Function.attempt(function(){this.element.reset();}.bind(this));if(window.OverText)OverText.update();}.bind(this));return this;},attach:function(attach){var method=(attach!=false)?'addEvent':'removeEvent';this.element[method]('click:relay(button, input[type=submit])',this.saveClickedButton.bind(this));var fv=this.element.retrieve('validator');if(fv)fv[method]('onFormValidate',this.onFormValidate);else this.element[method]('submit',this.onSubmit);return this;},detach:function(){return this.attach(false);},enable:function(){return this.attach();},disable:function(){return this.detach();},onFormValidate:function(valid,form,event){if(!event)return;var fv=this.element.retrieve('validator');if(valid||(fv&&!fv.options.stopOnFailure)){event.stop();this.send();}},onSubmit:function(event){var fv=this.element.retrieve('validator');if(fv){this.element.removeEvent('submit',this.onSubmit);fv.addEvent('onFormValidate',this.onFormValidate);this.element.validate();return;}
if(event)event.stop();this.send();},saveClickedButton:function(event,target){var targetName=target.get('name');if(!targetName||!this.options.sendButtonClicked)return;this.options.extraData[targetName]=target.get('value')||true;this.clickedCleaner=function(){delete this.options.extraData[targetName];this.clickedCleaner=function(){};}.bind(this);},clickedCleaner:function(){},send:function(){var str=this.element.toQueryString().trim(),data=Object.toQueryString(this.options.extraData);if(str)str+="&"+data;else str=data;this.fireEvent('send',[this.element,str.parseQueryString()]);this.request.send({data:str,url:this.options.requestOptions.url||this.element.get('action')});this.clickedCleaner();return this;}});Element.implement('formUpdate',function(update,options){var fq=this.retrieve('form.request');if(!fq){fq=new Form.Request(this,update,options);}else{if(update)fq.setTarget(update);if(options)fq.setOptions(options).makeRequest();}
fq.send();return this;});})();Form.Validator.Inline=new Class({Extends:Form.Validator,options:{showError:function(errorElement){if(errorElement.reveal)errorElement.reveal();else errorElement.setStyle('display','block');},hideError:function(errorElement){if(errorElement.dissolve)errorElement.dissolve();else errorElement.setStyle('display','none');},scrollToErrorsOnSubmit:true,scrollToErrorsOnBlur:false,scrollToErrorsOnChange:false,scrollFxOptions:{transition:'quad:out',offset:{y:-20}}},initialize:function(form,options){this.parent(form,options);this.addEvent('onElementValidate',function(isValid,field,className,warn){var validator=this.getValidator(className);if(!isValid&&validator.getError(field)){if(warn)field.addClass('warning');var advice=this.makeAdvice(className,field,validator.getError(field),warn);this.insertAdvice(advice,field);this.showAdvice(className,field);}else{this.hideAdvice(className,field);}});},makeAdvice:function(className,field,error,warn){var errorMsg=(warn)?this.warningPrefix:this.errorPrefix;errorMsg+=(this.options.useTitles)?field.title||error:error;var cssClass=(warn)?'warning-advice':'validation-advice';var advice=this.getAdvice(className,field);if(advice){advice=advice.set('html',errorMsg);}else{advice=new Element('div',{html:errorMsg,styles:{display:'none'},id:'advice-'+className.split(':')[0]+'-'+this.getFieldId(field)}).addClass(cssClass);}
field.store('$moo:advice-'+className,advice);return advice;},getFieldId:function(field){return field.id?field.id:field.id='input_'+field.name;},showAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&!field.retrieve('$moo:'+this.getPropName(className))&&(advice.getStyle('display')=='none'||advice.getStyle('visiblity')=='hidden'||advice.getStyle('opacity')==0)){field.store('$moo:'+this.getPropName(className),true);this.options.showError(advice);this.fireEvent('showAdvice',[field,advice,className]);}},hideAdvice:function(className,field){var advice=this.getAdvice(className,field);if(advice&&field.retrieve('$moo:'+this.getPropName(className))){field.store('$moo:'+this.getPropName(className),false);this.options.hideError(advice);this.fireEvent('hideAdvice',[field,advice,className]);}},getPropName:function(className){return'advice'+className;},resetField:function(field){field=document.id(field);if(!field)return this;this.parent(field);field.get('validators').each(function(className){this.hideAdvice(className,field);},this);return this;},getAllAdviceMessages:function(field,force){var advice=[];if(field.hasClass('ignoreValidation')&&!force)return advice;var validators=field.get('validators').some(function(cn){var warner=cn.test('^warn-')||field.hasClass('warnOnly');if(warner)cn=cn.replace(/^warn-/,'');var validator=this.getValidator(cn);if(!validator)return;advice.push({message:validator.getError(field),warnOnly:warner,passed:validator.test(),validator:validator});},this);return advice;},getAdvice:function(className,field){return field.retrieve('$moo:advice-'+className);},insertAdvice:function(advice,field){var props=field.get('validatorProps');if(!props.msgPos||!document.id(props.msgPos)){if(field.type&&field.type.toLowerCase()=='radio')field.getParent().adopt(advice);else advice.inject(document.id(field),'after');}else{document.id(props.msgPos).grab(advice);}},validateField:function(field,force,scroll){var result=this.parent(field,force);if(((this.options.scrollToErrorsOnSubmit&&scroll==null)||scroll)&&!result){var failed=document.id(this).getElement('.validation-failed');var par=document.id(this).getParent();while(par!=document.body&&par.getScrollSize().y==par.getSize().y){par=par.getParent();}
var fx=par.retrieve('$moo:fvScroller');if(!fx&&window.Fx&&Fx.Scroll){fx=new Fx.Scroll(par,this.options.scrollFxOptions);par.store('$moo:fvScroller',fx);}
if(failed){if(fx)fx.toElement(failed);else par.scrollTo(par.getScroll().x,failed.getPosition(par).y-20);}}
return result;},watchFields:function(fields){fields.each(function(el){if(this.options.evaluateFieldsOnBlur){el.addEvent('blur',this.validationMonitor.pass([el,false,this.options.scrollToErrorsOnBlur],this));}
if(this.options.evaluateFieldsOnChange){el.addEvent('change',this.validationMonitor.pass([el,true,this.options.scrollToErrorsOnChange],this));}},this);}});Form.Request.Append=new Class({Extends:Form.Request,options:{useReveal:true,revealOptions:{},inject:'bottom'},makeRequest:function(){this.request=new Request.HTML(Object.merge({url:this.element.get('action'),method:this.element.get('method')||'post',spinnerTarget:this.element},this.options.requestOptions,{evalScripts:false})).addEvents({success:function(tree,elements,html,javascript){var container;var kids=Elements.from(html);if(kids.length==1){container=kids[0];}else{container=new Element('div',{styles:{display:'none'}}).adopt(kids);}
container.inject(this.target,this.options.inject);if(this.options.requestOptions.evalScripts)Browser.exec(javascript);this.fireEvent('beforeEffect',container);var finish=function(){this.fireEvent('success',[container,this.target,tree,elements,html,javascript]);}.bind(this);if(this.options.useReveal){container.set('reveal',this.options.revealOptions).get('reveal').chain(finish);container.reveal();}else{finish();}}.bind(this),failure:function(xhr){this.fireEvent('failure',xhr);}.bind(this)});this.attachReset();}});var OverText=new Class({Implements:[Options,Events,Class.Occlude],Binds:['reposition','assert','focus','hide'],options:{element:'label',labelClass:'overTxtLabel',positionOptions:{position:'upperLeft',edge:'upperLeft',offset:{x:4,y:2}},poll:false,pollInterval:250,wrap:false},property:'OverText',initialize:function(element,options){element=this.element=document.id(element);if(this.occlude())return this.occluded;this.setOptions(options);this.attach(element);OverText.instances.push(this);if(this.options.poll)this.poll();},toElement:function(){return this.element;},attach:function(){var element=this.element,options=this.options,value=options.textOverride||element.get('alt')||element.get('title');if(!value)return this;var text=this.text=new Element(options.element,{'class':options.labelClass,styles:{lineHeight:'normal',position:'absolute',cursor:'text'},html:value,events:{click:this.hide.pass(options.element=='label',this)}}).inject(element,'after');if(options.element=='label'){if(!element.get('id'))element.set('id','input_'+String.uniqueID());text.set('for',element.get('id'));}
if(options.wrap){this.textHolder=new Element('div.overTxtWrapper',{styles:{lineHeight:'normal',position:'relative'}}).grab(text).inject(element,'before');}
return this.enable();},destroy:function(){this.element.eliminate(this.property);this.disable();if(this.text)this.text.destroy();if(this.textHolder)this.textHolder.destroy();return this;},disable:function(){this.element.removeEvents({focus:this.focus,blur:this.assert,change:this.assert});window.removeEvent('resize',this.reposition);this.hide(true,true);return this;},enable:function(){this.element.addEvents({focus:this.focus,blur:this.assert,change:this.assert});window.addEvent('resize',this.reposition);this.reposition();return this;},wrap:function(){if(this.options.element=='label'){if(!this.element.get('id'))this.element.set('id','input_'+String.uniqueID());this.text.set('for',this.element.get('id'));}},startPolling:function(){this.pollingPaused=false;return this.poll();},poll:function(stop){if(this.poller&&!stop)return this;if(stop){clearInterval(this.poller);}else{this.poller=(function(){if(!this.pollingPaused)this.assert(true);}).periodical(this.options.pollInterval,this);}
return this;},stopPolling:function(){this.pollingPaused=true;return this.poll(true);},focus:function(){if(this.text&&(!this.text.isDisplayed()||this.element.get('disabled')))return this;return this.hide();},hide:function(suppressFocus,force){if(this.text&&(this.text.isDisplayed()&&(!this.element.get('disabled')||force))){this.text.hide();this.fireEvent('textHide',[this.text,this.element]);this.pollingPaused=true;if(!suppressFocus){try{this.element.fireEvent('focus');this.element.focus();}catch(e){}}}
return this;},show:function(){if(this.text&&!this.text.isDisplayed()){this.text.show();this.reposition();this.fireEvent('textShow',[this.text,this.element]);this.pollingPaused=false;}
return this;},test:function(){return!this.element.get('value');},assert:function(suppressFocus){return this[this.test()?'show':'hide'](suppressFocus);},reposition:function(){this.assert(true);if(!this.element.isVisible())return this.stopPolling().hide();if(this.text&&this.test()){this.text.position(Object.merge(this.options.positionOptions,{relativeTo:this.element}));}
return this;}});OverText.instances=[];Object.append(OverText,{each:function(fn){return OverText.instances.each(function(ot,i){if(ot.element&&ot.text)fn.call(OverText,ot,i);});},update:function(){return OverText.each(function(ot){return ot.reposition();});},hideAll:function(){return OverText.each(function(ot){return ot.hide(true,true);});},showAll:function(){return OverText.each(function(ot){return ot.show();});}});(function(){var Table=this.Table=function(){this.length=0;var keys=[],values=[];this.set=function(key,value){var index=keys.indexOf(key);if(index==-1){var length=keys.length;keys[length]=key;values[length]=value;this.length++;}else{values[index]=value;}
return this;};this.get=function(key){var index=keys.indexOf(key);return(index==-1)?null:values[index];};this.erase=function(key){var index=keys.indexOf(key);if(index!=-1){this.length--;keys.splice(index,1);return values.splice(index,1)[0];}
return null;};this.each=this.forEach=function(fn,bind){for(var i=0,l=this.length;i<l;i++)fn.call(bind,keys[i],values[i],this);};};if(this.Type)new Type('Table',Table);})();(function(){this.Group=new Class({initialize:function(){this.instances=Array.flatten(arguments);},addEvent:function(type,fn){var instances=this.instances,len=instances.length,togo=len,args=new Array(len),self=this;instances.each(function(instance,i){instance.addEvent(type,function(){if(!args[i])togo--;args[i]=arguments;if(!togo){fn.call(self,instances,instance,args);togo=len;args=new Array(len);}});});}});})();Hash.Cookie=new Class({Extends:Cookie,options:{autoSave:true},initialize:function(name,options){this.parent(name,options);this.load();},save:function(){var value=JSON.encode(this.hash);if(!value||value.length>4096)return false;if(value=='{}')this.dispose();else this.write(value);return true;},load:function(){this.hash=new Hash(JSON.decode(this.read(),true));return this;}});Hash.each(Hash.prototype,function(method,name){if(typeof method=='function')Hash.Cookie.implement(name,function(){var value=method.apply(this.hash,arguments);if(this.options.autoSave)this.save();return value;});});(function(){var Color=this.Color=new Type('Color',function(color,type){if(arguments.length>=3){type='rgb';color=Array.slice(arguments,0,3);}else if(typeof color=='string'){if(color.match(/rgb/))color=color.rgbToHex().hexToRgb(true);else if(color.match(/hsb/))color=color.hsbToRgb();else color=color.hexToRgb(true);}
type=type||'rgb';switch(type){case'hsb':var old=color;color=color.hsbToRgb();color.hsb=old;break;case'hex':color=color.hexToRgb(true);break;}
color.rgb=color.slice(0,3);color.hsb=color.hsb||color.rgbToHsb();color.hex=color.rgbToHex();return Object.append(color,this);});Color.implement({mix:function(){var colors=Array.slice(arguments);var alpha=(typeOf(colors.getLast())=='number')?colors.pop():50;var rgb=this.slice();colors.each(function(color){color=new Color(color);for(var i=0;i<3;i++)rgb[i]=Math.round((rgb[i]/100*(100-alpha))+(color[i]/100*alpha));});return new Color(rgb,'rgb');},invert:function(){return new Color(this.map(function(value){return 255-value;}));},setHue:function(value){return new Color([value,this.hsb[1],this.hsb[2]],'hsb');},setSaturation:function(percent){return new Color([this.hsb[0],percent,this.hsb[2]],'hsb');},setBrightness:function(percent){return new Color([this.hsb[0],this.hsb[1],percent],'hsb');}});this.$RGB=function(r,g,b){return new Color([r,g,b],'rgb');};this.$HSB=function(h,s,b){return new Color([h,s,b],'hsb');};this.$HEX=function(hex){return new Color(hex,'hex');};Array.implement({rgbToHsb:function(){var red=this[0],green=this[1],blue=this[2],hue=0;var max=Math.max(red,green,blue),min=Math.min(red,green,blue);var delta=max-min;var brightness=max/255,saturation=(max!=0)?delta/max:0;if(saturation!=0){var rr=(max-red)/delta;var gr=(max-green)/delta;var br=(max-blue)/delta;if(red==max)hue=br-gr;else if(green==max)hue=2+rr-br;else hue=4+gr-rr;hue/=6;if(hue<0)hue++;}
return[Math.round(hue*360),Math.round(saturation*100),Math.round(brightness*100)];},hsbToRgb:function(){var br=Math.round(this[2]/100*255);if(this[1]==0){return[br,br,br];}else{var hue=this[0]%360;var f=hue%60;var p=Math.round((this[2]*(100-this[1]))/10000*255);var q=Math.round((this[2]*(6000-this[1]*f))/600000*255);var t=Math.round((this[2]*(6000-this[1]*(60-f)))/600000*255);switch(Math.floor(hue/60)){case 0:return[br,t,p];case 1:return[q,br,p];case 2:return[p,br,t];case 3:return[p,q,br];case 4:return[t,p,br];case 5:return[br,p,q];}}
return false;}});String.implement({rgbToHsb:function(){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHsb():null;},hsbToRgb:function(){var hsb=this.match(/\d{1,3}/g);return(hsb)?hsb.hsbToRgb():null;}});})();var Asset={javascript:function(source,properties){if(!properties)properties={};var script=new Element('script',{src:source,type:'text/javascript'}),doc=properties.document||document,load=properties.onload||properties.onLoad;delete properties.onload;delete properties.onLoad;delete properties.document;if(load){if(typeof script.onreadystatechange!='undefined'){script.addEvent('readystatechange',function(){if(['loaded','complete'].contains(this.readyState))load.call(this);});}else{script.addEvent('load',load);}}
return script.set(properties).inject(doc.head);},css:function(source,properties){if(!properties)properties={};var link=new Element('link',{rel:'stylesheet',media:'screen',type:'text/css',href:source});var load=properties.onload||properties.onLoad,doc=properties.document||document;delete properties.onload;delete properties.onLoad;delete properties.document;if(load)link.addEvent('load',load);return link.set(properties).inject(doc.head);},image:function(source,properties){if(!properties)properties={};var image=new Image(),element=document.id(image)||new Element('img');['load','abort','error'].each(function(name){var type='on'+name,cap='on'+name.capitalize(),event=properties[type]||properties[cap]||function(){};delete properties[cap];delete properties[type];image[type]=function(){if(!image)return;if(!element.parentNode){element.width=image.width;element.height=image.height;}
image=image.onload=image.onabort=image.onerror=null;event.delay(1,element,element);element.fireEvent(name,element,1);};});image.src=element.src=source;if(image&&image.complete)image.onload.delay(1);return element.set(properties);},images:function(sources,options){sources=Array.from(sources);var fn=function(){},counter=0;options=Object.merge({onComplete:fn,onProgress:fn,onError:fn,properties:{}},options);return new Elements(sources.map(function(source,index){return Asset.image(source,Object.append(options.properties,{onload:function(){counter++;options.onProgress.call(this,counter,index,source);if(counter==sources.length)options.onComplete();},onerror:function(){counter++;options.onError.call(this,counter,index,source);if(counter==sources.length)options.onComplete();}}));}));}};function $jx(id){var widget=null;id=document.id(id);if(id){widget=id.retrieve('jxWidget');if(!widget&&id!=document.body){widget=$jx(id.getParent());}}
return widget;}
Class.Mutators.Family=function(self,name){this.prototype.$family=function(){return self;};this.prototype.jxFamily=self;};if(typeof Jx==='undefined'){var Jx={};}
Jx.version="3.1-beta2";if(Jx.debug===undefined||Jx.debug===null){Jx.debug=false;}
window.addEvent('load',function(){if(!("console"in window)){window.console={};var empty=function(){};["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"].each(function(name){window.console[name]=empty;});}else{window.realConsole=window.console;window.console={};["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"].each(function(name){window.console[name]=function(){if(Jx.debug){window.realConsole[name].apply(realConsole,arguments);}};});}});if(Jx.baseURL===undefined||Jx.baseURL===null){(function(){var aScripts=document.getElementsByTagName('SCRIPT'),i,s,n,file;for(i=0;i<aScripts.length;i++){s=aScripts[i].src;n=s.lastIndexOf('/');file=s.slice(n+1,s.length-1);if(file.contains('jxlib')){Jx.baseURL=s.slice(0,n);break;}}})();}
if(Jx.aPixel===undefined||Jx.aPixel===null){Jx.aPixel=new Element('img',{alt:'',title:'',src:Jx.baseURL+'/a_pixel.png'});}
if(Jx.isAir===undefined||Jx.isAir===null){(function(){var aScripts=document.getElementsByTagName('SCRIPT'),src=aScripts[0].src;if(src.contains('app:')){Jx.isAir=true;}else{Jx.isAir=false;}})();}
Jx.setLanguage=function(lang){Jx.lang=lang;Locale.use(Jx.lang);};if(Jx.lang===undefined||Jx.lang===null){Jx.lang='en-US';}
Jx.setLanguage(Jx.lang);Jx.getText=function(val){var result='';if(Jx.type(val)=='string'||Jx.type(val)=='number'){result=val;}else if(Jx.type(val)=='function'){result=val();}else if(Jx.type(val)=='object'&&val.set!==undefined&&val.set!==null&&val.key!==undefined&&val.key!==null){if(val.value!==undefined){result=Locale.get(val.set+'.'+val.key+'.'+val.value);}else{result=Locale.get(val.set+'.'+val.key);}}
return result;},Jx.applyPNGFilter=function(o){var t=Jx.aPixel.src,s;if(o.src!=t){s=o.src;o.src=t;o.runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+s+"',sizingMethod='scale')";}};Jx.imgQueue=[];Jx.imgLoaded={};Jx.imagesLoading=0;Jx.addToImgQueue=function(obj){if(Jx.imgLoaded[obj.src]){obj.element.src=obj.src;}else{Jx.imgQueue.push(obj);Jx.imgLoaded[obj.src]=true;}
Jx.checkImgQueue();};Jx.checkImgQueue=function(){while(Jx.imagesLoading<2&&Jx.imgQueue.length>0){Jx.loadNextImg();}};Jx.loadNextImg=function(){var obj=Jx.imgQueue.shift();if(obj){++Jx.imagesLoading;obj.element.onload=function(){--Jx.imagesLoading;Jx.checkImgQueue();};obj.element.onerror=function(){--Jx.imagesLoading;Jx.checkImgQueue();};obj.element.src=obj.src;}};Jx.getNumber=function(n,def){var result=n===null||isNaN(parseInt(n,10))?(def||0):parseInt(n,10);return result;};Jx.getPageDimensions=function(){return{width:window.getWidth(),height:window.getHeight()};};Jx.type=function(obj){return typeOf(obj);};(function($){Element.implement({getBoxSizing:function(){var result='content-box',cm,sizing;if(Browser.ie||Browser.opera){cm=document.compatMode;if(cm=="BackCompat"||cm=="QuirksMode"){result='border-box';}else{result='content-box';}}else{if(arguments.length===0){node=document.documentElement;}
sizing=this.getStyle("-moz-box-sizing");if(!sizing){sizing=this.getStyle("box-sizing");}
result=(sizing?sizing:'content-box');}
return result;},getContentBoxSize:function(){var s=this.getSizes(['padding','border']);return{width:this.offsetWidth-s.padding.left-s.padding.right-s.border.left-s.border.right,height:this.offsetHeight-s.padding.bottom-s.padding.top-s.border.bottom-s.border.top};},getBorderBoxSize:function(){return{width:this.offsetWidth,height:this.offsetHeight};},getMarginBoxSize:function(){var s=this.getSizes(['margin']);return{width:this.offsetWidth+s.margin.left+s.margin.right,height:this.offsetHeight+s.margin.top+s.margin.bottom};},getSizes:function(which,edges){which=which||['padding','border','margin'];edges=edges||['left','top','right','bottom'];var result={},e,n;which.each(function(style){result[style]={};edges.each(function(edge){e=(style=='border')?edge+'-width':edge;n=this.getStyle(style+'-'+e);result[style][edge]=n===null||isNaN(parseInt(n,10))?0:parseInt(n,10);},this);},this);return result;},setContentBoxSize:function(size){var m,width,height;if(this.getBoxSizing()=='border-box'){m=this.measure(function(){return this.getSizes(['padding','border']);});if(size.width!==undefined&&size.width!==null){width=size.width+m.padding.left+m.padding.right+m.border.left+m.border.right;if(width<0){width=0;}
this.setStyle('width',width);}
if(size.height!==undefined&&size.height!==null){height=size.height+m.padding.top+m.padding.bottom+m.border.top+m.border.bottom;if(height<0){height=0;}
this.setStyle('height',height);}}else{if(size.width!==undefined&&size.width!==null&&size.width>=0){this.setStyle('width',width);}
if(size.height!==undefined&&size.height!==null&&size.height>=0){this.setStyle('height',height);}}},setBorderBoxSize:function(size){var m,width,height;if(this.getBoxSizing()=='content-box'){m=this.measure(function(){return this.getSizes();});if(size.width!==undefined&&size.width!==null){width=size.width-m.padding.left-m.padding.right-m.border.left-m.border.right-m.margin.left-m.margin.right;if(width<0){width=0;}
this.setStyle('width',width);}
if(size.height!==undefined&&size.height!==null){height=size.height-m.padding.top-m.padding.bottom-m.border.top-m.border.bottom-m.margin.top-m.margin.bottom;if(height<0){height=0;}
this.setStyle('height',height);}}else{if(size.width!==undefined&&size.width!==null&&size.width>=0){this.setStyle('width',width);}
if(size.height!==undefined&&size.height!==null&&size.height>=0){this.setStyle('height',height);}}},descendantOf:function(node){var parent=document.id(this.parentNode);while(parent!=node&&parent&&parent.parentNode&&parent.parentNode!=parent){parent=document.id(parent.parentNode);}
return parent==node;},findElement:function(type){var o=this,tagName=o.tagName;while(o.tagName!=type&&o&&o.parentNode&&o.parentNode!=o){o=document.id(o.parentNode);}
return o.tagName==type?o:false;}});Array.implement({'swap':function(a,b){var temp=this[a];this[a]=this[b];this[b]=temp;}});})(document.id||$);Jx.Object=new Class({Family:"Jx.Object",Implements:[Options,Events],plugins:null,pluginNamespace:'Other',parameters:['options'],options:{useLang:true,plugins:null},bound:null,ready:null,initialize:function(){this.plugins={};this.bound={};var numArgs=arguments.length,options={},parameters=this.parameters,numParams,index;if(numArgs>0){if(numArgs===1&&(Jx.type(arguments[0])==='object')&&parameters.length===1&&parameters[0]==='options'){options=arguments[0];}else{numParams=parameters.length;if(numParams<=numArgs){index=numParams;}else{index=numArgs;}
for(var i=0;i<index;i++){if(parameters[i]==='options'){Object.append(options,arguments[i]);}else{options[parameters[i]]=arguments[i];}}}}
this.setOptions(options);this.bound.changeText=this.changeText.bind(this);if(this.options.useLang){Locale.addEvent('change',this.bound.changeText);}
this.fireEvent('prePluginInit');this.initPlugins();this.fireEvent('postPluginInit');delete this.options.plugins;this.fireEvent('preInit');this.init();this.fireEvent('postInit');this.fireEvent('initializeDone');this.ready=true;},initPlugins:function(){var p;if(this.pluginNamespace!==undefined&&this.pluginNamespace!==null){if(this.options.plugins!==undefined&&this.options.plugins!==null&&Jx.type(this.options.plugins)==='array'){this.options.plugins.each(function(plugin){if(plugin instanceof Jx.Plugin){plugin.attach(this);this.plugins[plugin.name]=plugin;}else if(Jx.type(plugin)==='object'){if(Jx.Plugin[this.pluginNamespace][plugin.name.capitalize()]!==undefined&&Jx.Plugin[this.pluginNamespace][plugin.name.capitalize()]!==null){p=new Jx.Plugin[this.pluginNamespace][plugin.name.capitalize()](plugin.options);}else{p=new Jx.Adaptor[this.pluginNamespace][plugin.name.capitalize()](plugin.options);}
p.attach(this);}else if(Jx.type(plugin)==='string'){if(Jx.Plugin[this.pluginNamespace][plugin.capitalize()]!==undefined&&Jx.Plugin[this.pluginNamespace][plugin.capitalize()]!==null){p=new Jx.Plugin[this.pluginNamespace][plugin.capitalize()]();}else{p=new Jx.Adaptor[this.pluginNamespace][plugin.capitalize()]();}
p.attach(this);}},this);}}},destroy:function(){this.fireEvent('preDestroy');this.cleanup();this.fireEvent('postDestroy');},cleanup:function(){if(this.plugins.getLength>0){Object.each(this.plugins,function(plugin){plugin.detach();plugin.destroy();},this);}
this.plugins={};if(this.options.useLang&&this.bound.changeText!==undefined&&this.bound.changeText!==null){Locale.removeEvent('change',this.bound.changeText);}
this.bound=null;},init:function(){},registerPlugin:function(plugin){if(!Object.keys(this.plugins).contains(plugin.name)){this.plugins[plugin.name]=plugin;}},deregisterPlugin:function(plugin){if(Object.keys(this.plugins).contains(plugin.name)){delete this.plugins[plugin.name];}},getPlugin:function(name){if(Object.keys(this.plugins).contains(name)){return this.plugins[name];}},getText:function(val){this.i18n=val;return Jx.getText(val);},changeText:function(){},generateId:function(prefix){prefix=(prefix)?prefix:'jx-';var uid=$uid(this);delete this.uid;return prefix+uid;}});Document.implement({id:(function(){var types={string:function(id,nocash,doc){id=Slick.find(doc,'#'+id.replace(/(\W)/g,'\\$1'));return(id)?types.element(id,nocash):null;},element:function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^(?:object|embed)$/i).test(el.tagName)){Object.append(el,Element.Prototype);}
return el;},object:function(obj,nocash,doc){if(obj.toElement)return types.element(obj.toElement(doc),nocash);return null;}};types.textnode=types.whitespace=types.window=types.document=function(zero){return zero;};return function(el,nocash,doc){if(el&&el.$family&&el.uid)return el;if(el&&instanceOf(el,Jx.Object)){return types.element(el.toElement(doc||document),nocash);}
var type=typeOf(el);return(types[type])?types[type](el,nocash,doc||document):null;};})()});Jx.Layout=new Class({Extends:Jx.Object,Family:'Jx.Layout',options:{resizeWithWindow:false,propagate:true,position:'absolute',left:0,right:0,top:0,bottom:0,width:null,height:null,minWidth:0,minHeight:0,maxWidth:-1,maxHeight:-1},parameters:['domObj','options'],init:function(){this.domObj=document.id(this.options.domObj);this.domObj.resize=this.resize.bind(this);this.domObj.setStyle('position',this.options.position);this.domObj.store('jxLayout',this);if(this.options.resizeWithWindow||document.body==this.domObj.parentNode){window.addEvent('resize',this.windowResize.bind(this));window.addEvent('load',this.windowResize.bind(this));}},windowResize:function(){this.resize();if(this.resizeTimer){window.clearTimeout(this.resizeTimer);this.resizeTimer=null;}
this.resizeTimer=this.resize.delay(50,this);},resize:function(options){this.resizeTimer=null;var needsResize=false;if(options){for(var i in options){if(i=='forceResize'){continue;}
if(this.options[i]!=options[i]){needsResize=true;this.options[i]=options[i];}}
if(options.forceResize){needsResize=true;}}
if(!document.id(this.domObj.parentNode)){return;}
var parentSize;if(this.domObj.parentNode.tagName=='BODY'){parentSize=Jx.getPageDimensions();}else{parentSize=document.id(this.domObj.parentNode).getContentBoxSize();}
if(this.lastParentSize&&!needsResize){needsResize=(this.lastParentSize.width!=parentSize.width||this.lastParentSize.height!=parentSize.height);}else{needsResize=true;}
this.lastParentSize=parentSize;if(!needsResize){return;}
var l,t,w,h;if(this.options.left!=null){l=this.options.left;if(this.options.right==null){if(this.options.width==null){w=parentSize.width-l;if(w<this.options.minWidth){w=this.options.minWidth;}
if(this.options.maxWidth>=0&&w>this.options.maxWidth){w=this.options.maxWidth;}}else{w=this.options.width;}}else{if(this.options.width==null){w=parentSize.width-l-this.options.right;if(w<this.options.minWidth){w=this.options.minWidth;}
if(this.options.maxWidth>=0&&w>this.options.maxWidth){w=this.options.maxWidth;}}else{w=this.options.width;}}}else{if(this.options.right==null){if(this.options.width==null){l=0;w=parentSize.width;if(this.options.maxWidth>=0&&w>this.options.maxWidth){l=l+parseInt(w-this.options.maxWidth,10)/2;w=this.options.maxWidth;}}else{w=this.options.width;l=parseInt((parentSize.width-w)/2,10);if(l<0){l=0;}}}else{if(this.options.width!=null){w=this.options.width;l=parentSize.width-w-this.options.right;if(l<0){l=0;}}else{l=0;w=parentSize.width-this.options.right;if(w<this.options.minWidth){w=this.options.minWidth;}
if(this.options.maxWidth>=0&&w>this.options.maxWidth){l=w-this.options.maxWidth-this.options.right;w=this.options.maxWidth;}}}}
if(this.options.top!=null){t=this.options.top;if(this.options.bottom==null){if(this.options.height==null){h=parentSize.height-t;if(h<this.options.minHeight){h=this.options.minHeight;}
if(this.options.maxHeight>=0&&h>this.options.maxHeight){h=this.options.maxHeight;}}else{h=this.options.height;if(this.options.maxHeight>=0&&h>this.options.maxHeight){t=h-this.options.maxHeight;h=this.options.maxHeight;}}}else{if(this.options.height==null){h=parentSize.height-t-this.options.bottom;if(h<this.options.minHeight){h=this.options.minHeight;}
if(this.options.maxHeight>=0&&h>this.options.maxHeight){h=this.options.maxHeight;}}else{h=this.options.height;}}}else{if(this.options.bottom==null){if(this.options.height==null){t=0;h=parentSize.height;if(h<this.options.minHeight){h=this.options.minHeight;}
if(this.options.maxHeight>=0&&h>this.options.maxHeight){t=parseInt((parentSize.height-this.options.maxHeight)/2,10);h=this.options.maxHeight;}}else{h=this.options.height;t=parseInt((parentSize.height-h)/2,10);if(t<0){t=0;}}}else{if(this.options.height!=null){h=this.options.height;t=parentSize.height-h-this.options.bottom;if(t<0){t=0;}}else{t=0;h=parentSize.height-this.options.bottom;if(h<this.options.minHeight){h=this.options.minHeight;}
if(this.options.maxHeight>=0&&h>this.options.maxHeight){t=parentSize.height-this.options.maxHeight-this.options.bottom;h=this.options.maxHeight;}}}}
var sizeOpts={width:w};if(this.options.position=='absolute'){var m=document.id(this.domObj.parentNode).measure(function(){return this.getSizes(['padding'],['left','top']).padding;});this.domObj.setStyles({position:this.options.position,left:l+m.left,top:t+m.top});sizeOpts.height=h;}else{if(this.options.height){sizeOpts.height=this.options.height;}}
this.domObj.setBorderBoxSize(sizeOpts);if(this.options.propagate){var o={forceResize:options?options.forceResize:false};Array.from(this.domObj.childNodes).each(function(child){if(child.resize&&child.getStyle('display')!='none'){child.resize.delay(0,child,o);}});}
this.fireEvent('sizeChange',this);}});Jx.Splitter=new Class({Extends:Jx.Object,Family:'Jx.Splitter',domObj:null,elements:null,bars:null,firstUpdate:true,options:{useChildren:false,splitInto:2,elements:null,containerOptions:[],barOptions:[],layout:'horizontal',snaps:[],onStart:null,onFinish:null},parameters:['domObj','options'],init:function(){this.domObj=document.id(this.options.domObj);this.domObj.addClass('jxSplitContainer');var jxLayout=this.domObj.retrieve('jxLayout');if(jxLayout){jxLayout.addEvent('sizeChange',this.sizeChanged.bind(this));}
this.elements=[];this.bars=[];var i;var nSplits=2;if(this.options.useChildren){this.elements=this.domObj.getChildren();nSplits=this.elements.length;}else{nSplits=this.options.elements?this.options.elements.length:this.options.splitInto;for(i=0;i<nSplits;i++){var el;if(this.options.elements&&this.options.elements[i]){if(this.options.elements[i].domObj){el=this.options.elements[i].domObj;}else{el=document.id(this.options.elements[i]);}
if(!el){el=this.prepareElement();el.id=this.options.elements[i];}}else{el=this.prepareElement();}
this.elements[i]=el;this.domObj.adopt(this.elements[i]);}}
this.elements.each(function(el){el.addClass('jxSplitArea');});for(i=0;i<nSplits;i++){var jxl=this.elements[i].retrieve('jxLayout');if(!jxl){new Jx.Layout(this.elements[i],this.options.containerOptions[i]);}else{if(this.options.containerOptions[i]){jxl.resize(Object.merge({},this.options.containerOptions[i],{position:'absolute'}));}else{jxl.resize({position:'absolute'});}}}
for(i=1;i<nSplits;i++){var bar;if(this.options.prepareBar){bar=this.options.prepareBar(i-1);}else{bar=this.prepareBar();}
bar.store('splitterObj',this);bar.store('leftSide',this.elements[i-1]);bar.store('rightSide',this.elements[i]);this.elements[i-1].store('rightBar',bar);this.elements[i].store('leftBar',bar);this.domObj.adopt(bar);this.bars[i-1]=bar;}
if(Drag!=undefined){this.establishConstraints();}
for(i=0;i<this.options.barOptions.length;i++){if(!this.bars[i]){continue;}
var opt=this.options.barOptions[i];if(opt&&opt.snap&&(opt.snap=='before'||opt.snap=='after')){var element;if(opt.snap=='before'){element=this.bars[i].retrieve('leftSide');}else if(opt.snap=='after'){element=this.bars[i].retrieve('rightSide');}
var snap;var snapEvents;if(opt.snapElement){snap=opt.snapElement;snapEvents=opt.snapEvents||['click','dblclick'];}else{snap=this.bars[i];snapEvents=opt.snapEvents||['dblclick'];}
if(!snap.parentNode){this.bars[i].adopt(snap);}
new Jx.Splitter.Snap(snap,element,this,snapEvents);}}
for(i=0;i<this.options.snaps.length;i++){if(this.options.snaps[i]){new Jx.Splitter.Snap(this.options.snaps[i],this.elements[i],this);}}
this.sizeChanged();},prepareElement:function(){var o=new Element('div',{styles:{position:'absolute'}});return o;},prepareBar:function(){var o=new Element('div',{'class':'jxSplitBar'+this.options.layout.capitalize(),'title':this.getText({set:'Jx',key:'splitter',value:'barToolTip'})});return o;},establishConstraints:function(){var modifiers={x:null,y:null};var fn;if(this.options.layout=='horizontal'){modifiers.x="left";fn=this.dragHorizontal;}else{modifiers.y="top";fn=this.dragVertical;}
if(typeof Drag!='undefined'){this.bars.each(function(bar){var mask;new Drag(bar,{modifiers:modifiers,onSnap:(function(obj){obj.addClass('jxSplitBarDrag');this.fireEvent('snap',[obj]);}).bind(this),onCancel:(function(obj){mask.destroy();this.fireEvent('cancel',[obj]);}).bind(this),onDrag:(function(obj,event){this.fireEvent('drag',[obj,event]);}).bind(this),onComplete:(function(obj){mask.destroy();obj.removeClass('jxSplitBarDrag');if(obj.retrieve('splitterObj')!=this){return;}
fn.apply(this,[obj]);this.fireEvent('complete',[obj]);this.fireEvent('finish',[obj]);}).bind(this),onBeforeStart:(function(obj){this.fireEvent('beforeStart',[obj]);mask=new Element('div',{'class':'jxSplitterMask'}).inject(obj,'after');}).bind(this),onStart:(function(obj,event){this.fireEvent('start',[obj,event]);}).bind(this)});},this);}},dragHorizontal:function(obj){var leftEdge=parseInt(obj.style.left,10);var leftSide=obj.retrieve('leftSide');var rightSide=obj.retrieve('rightSide');var leftJxl=leftSide.retrieve('jxLayout');var rightJxl=rightSide.retrieve('jxLayout');var paddingLeft=this.domObj.measure(function(){var m=this.getSizes(['padding'],['left']);return m.padding.left;});var rsLeft,rsWidth,rsRight;var size=obj.retrieve('size');if(!size){size=obj.getBorderBoxSize();obj.store('size',size);}
rsLeft=leftEdge+size.width-paddingLeft;var parentSize=this.domObj.getContentBoxSize();if(rightJxl.options.width!=null){rsWidth=rightJxl.options.width+rightJxl.options.left-rsLeft;rsRight=parentSize.width-rsLeft-rsWidth;}else{rsWidth=parentSize.width-rightJxl.options.right-rsLeft;rsRight=rightJxl.options.right;}
if(rsWidth<0){rsWidth=0;}
if(rsWidth<rightJxl.options.minWidth){rsWidth=rightJxl.options.minWidth;}
if(rightJxl.options.maxWidth>=0&&rsWidth>rightJxl.options.maxWidth){rsWidth=rightJxl.options.maxWidth;}
rsLeft=parentSize.width-rsRight-rsWidth;leftEdge=rsLeft-size.width;var lsLeft,lsWidth;lsLeft=leftJxl.options.left;lsWidth=leftEdge-lsLeft;if(lsWidth<0){lsWidth=0;}
if(lsWidth<leftJxl.options.minWidth){lsWidth=leftJxl.options.minWidth;}
if(leftJxl.options.maxWidth>=0&&lsWidth>leftJxl.options.maxWidth){lsWidth=leftJxl.options.maxWidth;}
if(lsLeft+lsWidth!=leftEdge){leftEdge=lsLeft+lsWidth;var delta=leftEdge+size.width-rsLeft;rsLeft+=delta;rsWidth-=delta;}
obj.style.left=paddingLeft+leftEdge+'px';if(leftJxl.options.width==null){parentSize=this.domObj.getContentBoxSize();leftSide.resize({right:parentSize.width-lsLeft-lsWidth});}else{leftSide.resize({width:lsWidth});}
if(rightJxl.options.width==null){rightSide.resize({left:rsLeft});}else{rightSide.resize({left:rsLeft,width:rsWidth});}},dragVertical:function(obj){var topEdge=parseInt(obj.style.top,10);var topSide=obj.retrieve('leftSide');var bottomSide=obj.retrieve('rightSide');var topJxl=topSide.retrieve('jxLayout');var bottomJxl=bottomSide.retrieve('jxLayout');var paddingTop=this.domObj.measure(function(){var m=this.getSizes(['padding'],['top']);return m.padding.top;});var size=obj.retrieve('size');if(!size){size=obj.getBorderBoxSize();obj.store('size',size);}
var parentSize=this.domObj.getContentBoxSize();var bsTop,bsHeight,bsBottom;bsTop=topEdge+size.height-paddingTop;if(bottomJxl.options.height!=null){bsHeight=bottomJxl.options.height+bottomJxl.options.top-bsTop;bsBottom=parentSize.height-bsTop-bsHeight;}else{bsHeight=parentSize.height-bottomJxl.options.bottom-bsTop;bsBottom=bottomJxl.options.bottom;}
if(bsHeight<0){bsHeight=0;}
if(bsHeight<bottomJxl.options.minHeight){bsHeight=bottomJxl.options.minHeight;}
if(bottomJxl.options.maxHeight>=0&&bsHeight>bottomJxl.options.maxHeight){bsHeight=bottomJxl.options.maxHeight;}
bsTop=parentSize.height-bsBottom-bsHeight;topEdge=bsTop-size.height;var tsTop,tsHeight;tsTop=topJxl.options.top;tsHeight=topEdge-tsTop;if(tsHeight<0){tsHeight=0;}
if(tsHeight<topJxl.options.minHeight){tsHeight=topJxl.options.minHeight;}
if(topJxl.options.maxHeight>=0&&tsHeight>topJxl.options.maxHeight){tsHeight=topJxl.options.maxHeight;}
if(tsTop+tsHeight!=topEdge){topEdge=tsTop+tsHeight;var delta=topEdge+size.height-bsTop;bsTop+=delta;bsHeight-=delta;}
obj.style.top=paddingTop+topEdge+'px';if(topJxl.options.height==null){topSide.resize({bottom:parentSize.height-tsTop-tsHeight});}else{topSide.resize({height:tsHeight});}
if(bottomJxl.options.height==null){bottomSide.resize({top:bsTop});}else{bottomSide.resize({top:bsTop,height:bsHeight});}},sizeChanged:function(){if(this.options.layout=='horizontal'){this.horizontalResize();}else{this.verticalResize();}},horizontalResize:function(){var availableSpace=this.domObj.getContentBoxSize().width;var overallWidth=availableSpace;var i,e,jxo;for(i=0;i<this.bars.length;i++){var bar=this.bars[i];var size=bar.retrieve('size');if(!size||size.width==0){size=bar.getBorderBoxSize();bar.store('size',size);}
availableSpace-=size.width;}
var nVariable=0,w=0;for(i=0;i<this.elements.length;i++){e=this.elements[i];jxo=e.retrieve('jxLayout').options;if(jxo.width!=null){availableSpace-=parseInt(jxo.width,10);}else{w=0;if(jxo.right!=0||jxo.left!=0){w=e.getBorderBoxSize().width;}
availableSpace-=w;nVariable++;}}
if(nVariable==0){availableSpace+=jxo.width;jxo.width=null;nVariable=1;}
var amount=parseInt(availableSpace/nVariable,10);var remainder=availableSpace%nVariable;var leftPadding=this.domObj.measure(function(){var m=this.getSizes(['padding'],['left']);return m.padding.left;});var currentPosition=0;for(i=0;i<this.elements.length;i++){e=this.elements[i];var jxl=e.retrieve('jxLayout');jxo=jxl.options;if(jxo.width!=null){jxl.resize({left:currentPosition});currentPosition+=jxo.width;}else{var a=amount;if(nVariable==1){a+=remainder;}
nVariable--;if(jxo.right!=0||jxo.left!=0){w=e.getBorderBoxSize().width+a;}else{w=a;}
if(w<0){if(nVariable>0){amount=amount+w/nVariable;}
w=0;}
if(w<jxo.minWidth){if(nVariable>0){amount=amount+(w-jxo.minWidth)/nVariable;}
w=jxo.minWidth;}
if(jxo.maxWidth>=0&&w>jxo.maxWidth){if(nVariable>0){amount=amount+(w-jxo.maxWidth)/nVariable;}
w=e.options.maxWidth;}
var r=overallWidth-currentPosition-w;jxl.resize({left:currentPosition,right:r});currentPosition+=w;}
var rightBar=e.retrieve('rightBar');if(rightBar){rightBar.setStyle('left',leftPadding+currentPosition);currentPosition+=rightBar.retrieve('size').width;}}},verticalResize:function(){var availableSpace=this.domObj.getContentBoxSize().height;var overallHeight=availableSpace;var i,e,jxo;for(i=0;i<this.bars.length;i++){var bar=this.bars[i];var size=bar.retrieve('size');if(!size||size.height==0){size=bar.getBorderBoxSize();bar.store('size',size);}
availableSpace-=size.height;}
var nVariable=0,h=0;for(i=0;i<this.elements.length;i++){e=this.elements[i];jxo=e.retrieve('jxLayout').options;if(jxo.height!=null){availableSpace-=parseInt(jxo.height,10);}else{if(jxo.bottom!=0||jxo.top!=0){h=e.getBorderBoxSize().height;}
availableSpace-=h;nVariable++;}}
if(nVariable==0){availableSpace+=jxo.height;jxo.height=null;nVariable=1;}
var amount=parseInt(availableSpace/nVariable,10);var remainder=availableSpace%nVariable;var paddingTop=this.domObj.measure(function(){var m=this.getSizes(['padding'],['top']);return m.padding.top;});var currentPosition=0;for(i=0;i<this.elements.length;i++){e=this.elements[i];var jxl=e.retrieve('jxLayout');jxo=jxl.options;if(jxo.height!=null){jxl.resize({top:currentPosition});currentPosition+=jxo.height;}else{var a=amount;if(nVariable==1){a+=remainder;}
nVariable--;h=0;if(jxo.bottom!=0||jxo.top!=0){h=e.getBorderBoxSize().height+a;}else{h=a;}
if(h<0){if(nVariable>0){amount=amount+h/nVariable;}
h=0;}
if(h<jxo.minHeight){if(nVariable>0){amount=amount+(h-jxo.minHeight)/nVariable;}
h=jxo.minHeight;}
if(jxo.maxHeight>=0&&h>jxo.maxHeight){if(nVariable>0){amount=amount+(h-jxo.maxHeight)/nVariable;}
h=jxo.maxHeight;}
var r=overallHeight-currentPosition-h;jxl.resize({top:currentPosition,bottom:r});currentPosition+=h;}
var rightBar=e.retrieve('rightBar');if(rightBar){rightBar.style.top=paddingTop+currentPosition+'px';currentPosition+=rightBar.retrieve('size').height;}}},changeText:function(lang){this.parent();this.bars.each(function(bar){document.id(bar).set('title',this.getText({set:'Jx',key:'splitter',value:'barToolTip'}));},this);}});Jx.Splitter.Snap=new Class({Extends:Jx.Object,Family:'Jx.Splitter.Snap',snap:null,element:null,splitter:null,layout:'vertical',parameters:['snap','element','splitter','events'],init:function(){this.snap=this.options.snap;this.element=this.options.element;this.splitter=this.options.splitter;this.events=this.options.events;var jxl=this.element.retrieve('jxLayout');jxl.addEvent('sizeChange',this.sizeChange.bind(this));this.layout=this.splitter.options.layout;var jxo=jxl.options;var size=this.element.getContentBoxSize();if(this.layout=='vertical'){this.originalSize=size.height;this.minimumSize=jxo.minHeight?jxo.minHeight:0;}else{this.originalSize=size.width;this.minimumSize=jxo.minWidth?jxo.minWidth:0;}
this.events.each(function(eventName){this.snap.addEvent(eventName,this.toggleElement.bind(this));},this);},toggleElement:function(){var size=this.element.getContentBoxSize();var newSize={};if(this.layout=='vertical'){if(size.height==this.minimumSize){newSize.height=this.originalSize;}else{this.originalSize=size.height;newSize.height=this.minimumSize;}}else{if(size.width==this.minimumSize){newSize.width=this.originalSize;}else{this.originalSize=size.width;newSize.width=this.minimumSize;}}
this.element.resize(newSize);this.splitter.sizeChanged();},sizeChange:function(){var size=this.element.getContentBoxSize();if(this.layout=='vertical'){if(size.height==this.minimumSize){this.snap.addClass('jxSnapClosed');this.snap.removeClass('jxSnapOpened');}else{this.snap.addClass('jxSnapOpened');this.snap.removeClass('jxSnapClosed');}}else{if(size.width==this.minimumSize){this.snap.addClass('jxSnapClosed');this.snap.removeClass('jxSnapOpened');}else{this.snap.addClass('jxSnapOpened');this.snap.removeClass('jxSnapClosed');}}}});Jx.Stack=new(new Class({els:[],base:1000,increment:100,stack:function(el){this.unstack(el);this.els.push(el);this.setZIndex(el,this.els.length-1);},unstack:function(el){var elements=this.els;if(elements.contains(el)){el.setStyle('z-index','');var idx=elements.indexOf(el);elements.erase(el);for(var i=idx;i<elements.length;i++){this.setZIndex(elements[i],i);}}},setZIndex:function(obj,idx){idx=idx||this.els.indexOf(obj);if(idx!==false){document.id(obj).setStyle('z-index',this.base+(idx*this.increment));}}}))();Locale.define('en-US','Jx',{'widget':{busyMessage:'Working ...'},'colorpalette':{alphaLabel:'alpha (%)'},notice:{closeTip:'close this notice'},progressbar:{messageText:'Loading...',progressText:'{progress} of {total}'},field:{requiredText:'*'},file:{browseLabel:'Browse...'},'formatter':{'boolean':{'true':'Yes','false':'No'},'currency':{sign:'$'},'number':{decimalSeparator:'.',thousandsSeparator:','}},splitter:{barToolTip:'drag this bar to resize'},panelset:{barToolTip:'drag this bar to resize'},panel:{collapseTooltip:'Collapse/Expand Panel',collapseLabel:'Collapse',expandLabel:'Expand',maximizeTooltip:'Maximize Panel',maximizeLabel:'Maximize',restoreTooltip:'Restore Panel',restoreLabel:'Restore',closeTooltip:'Close Panel',closeLabel:'Close'},confirm:{affirmativeLabel:'Yes',negativeLabel:'No'},dialog:{resizeToolTip:'Resize dialog'},message:{okButton:'Ok'},prompt:{okButton:'Ok',cancelButton:'Cancel'},upload:{buttonText:'Upload Files'},'plugin':{'resize':{tooltip:'Drag to resize, double click to auto-size.'},'editor':{submitButton:'Save',cancelButton:'Cancel'}}});Jx.Widget=new Class({Extends:Jx.Object,Family:"Jx.Widget",options:{id:null,content:null,contentURL:null,loadOnDemand:false,cacheContent:true,template:'<div class="jxWidget"></div>',busyClass:'jxBusy',busyMask:{'class':'jxSpinner jxSpinnerLarge',img:{'class':'jxSpinnerImage'},content:{'class':'jxSpinnerContent'},messageContainer:{'class':'jxSpinnerMessage'},useIframeShim:true,iframeShimOptions:{className:'jxIframeShim'},fx:true},deferRender:false},classes:{domObj:'jxWidget'},busy:false,domObj:null,contentIsLoaded:false,chrome:null,init:function(){if(!this.options.deferRender){this.fireEvent('preRender');this.render();this.fireEvent('postRender');}else{this.fireEvent('deferRender');}},loadContent:function(element){var c,options=this.options,timeout;element=document.id(element);if(options.content){if(options.content.domObj){c=document.id(options.content.domObj);}else{c=document.id(options.content);}
if(c){if(options.content.addTo){options.content.addTo(element);}else{element.appendChild(c);}
this.contentIsLoaded=true;}else{element.innerHTML=options.content;this.contentIsLoaded=true;}}else if(options.contentURL){this.contentIsLoaded=false;this.req=new Request({url:options.contentURL,method:'get',evalScripts:true,onRequest:(function(){if(options.loadOnDemand&&typeOf(this)!='Jx.Panel'){this.setBusy(true);}}).bind(this),onSuccess:(function(html){element.innerHTML=html;this.contentIsLoaded=true;if(Jx.isAir){window.clearTimeout(this.reqTimeout);}
this.setBusy(false);this.fireEvent('contentLoaded',this);}).bind(this),onFailure:(function(){this.contentIsLoaded=true;this.fireEvent('contentLoadFailed',this);this.setBusy(false);}).bind(this)});this.req.send();if(Jx.isAir){timeout=(options.timeout!==undefined&&options.timeout!==null)?options.timeout:10000;this.reqTimeout=this.checkRequest.delay(timeout,this);}}else{this.contentIsLoaded=true;}
if(options.contentId){element.id=this.options.contentId;}
if(this.contentIsLoaded){this.fireEvent('contentLoaded',this);}},position:function(element,relative,options){element=document.id(element);relative=document.id(relative);var hor=Array.from(options.horizontal||['center center']),ver=Array.from(options.vertical||['center center']),offsets=Object.merge({},{top:0,right:0,bottom:0,left:0},options.offsets||{}),coords=relative.getCoordinates(),page,scroll,size,left,rigbht,top,bottom,n,parts;if(!document.id(element.parentNode)||element.parentNode==document.body){page=Jx.getPageDimensions();scroll=document.id(document.body).getScroll();}else{page=document.id(element.parentNode).getContentBoxSize();scroll=document.id(element.parentNode).getScroll();}
if(relative==document.body){coords.left+=scroll.x;coords.top+=scroll.y;}else if(element.parentNode==relative){coords.left=0;coords.top=0;}
size=element.getMarginBoxSize();if(!hor.some(function(opt){parts=opt.split(' ');if(parts.length!=2){return false;}
if(!isNaN(parseInt(parts[0],10))){n=parseInt(parts[0],10);if(n>=0){left=n;}else{left=coords.left+coords.width+n;}}else{switch(parts[0]){case'right':left=coords.left+coords.width;break;case'center':left=coords.left+Math.round(coords.width/2);break;case'left':default:left=coords.left;break;}}
if(!isNaN(parseInt(parts[1],10))){n=parseInt(parts[1],10);if(n<0){right=left+n;left=right-size.width;}else{left+=n;right=left+size.width;}
right=coords.left+coords.width+parseInt(parts[1],10);left=right-size.width;}else{switch(parts[1]){case'left':left-=offsets.left;right=left+size.width;break;case'right':left+=offsets.right;right=left;left=left-size.width;break;case'center':default:left=left-Math.round(size.width/2);right=left+size.width;break;}}
return(left>=scroll.x&&right<=scroll.x+page.width);})){if(right>page.width){left=scroll.x+page.width-size.width;}
if(left<0){left=0;}}
element.setStyle('left',left);if(!ver.some(function(opt){parts=opt.split(' ');if(parts.length!=2){return false;}
if(!isNaN(parseInt(parts[0],10))){top=parseInt(parts[0],10);}else{switch(parts[0]){case'bottom':top=coords.top+coords.height;break;case'center':top=coords.top+Math.round(coords.height/2);break;case'top':default:top=coords.top;break;}}
if(!isNaN(parseInt(parts[1],10))){var n=parseInt(parts[1],10);if(n>=0){top+=n;bottom=top+size.height;}else{bottom=top+n;top=bottom-size.height;}}else{switch(parts[1]){case'top':top-=offsets.top;bottom=top+size.height;break;case'bottom':top+=offsets.bottom;bottom=top;top=top-size.height;break;case'center':default:top=top-Math.round(size.height/2);bottom=top+size.height;break;}}
return(top>=scroll.y&&bottom<=scroll.y+page.height);})){if(bottom>page.height){top=scroll.y+page.height-size.height;}
if(top<0){top=0;}}
element.setStyle('top',top);var jxl=element.retrieve('jxLayout');if(jxl){jxl.options.left=left;jxl.options.top=top;}},makeChrome:function(element){var c=new Element('div',{'class':'jxChrome',events:{contextmenu:function(e){e.stop();}}}),src;element.adopt(c);this.chromeOffsets=c.measure(function(){return this.getSizes(['padding']).padding;});c.setStyle('padding',0);src=c.getStyle('backgroundImage');if(src!==null){if(!(src.contains('http://')||src.contains('https://')||src.contains('file://')||src.contains('app:/'))){src=null;}else{src=src.slice(4,-1);if(src.charAt(0)=='"'){src=src.slice(1,-1);}
c.setStyle('backgroundImage','none');['TR','TL','BL','BR'].each(function(s){c.adopt(new Element('div',{'class':'jxChrome'+s}).adopt(new Element('img',{'class':'png24',src:src,alt:'',title:''})));},this);}}
if(window.IframeShim!==undefined){this.shim=new IframeShim(c,{className:'jxIframeShim'});}
c.dispose();this.chrome=c;},showChrome:function(element){element=document.id(element)||document.id(this);if(element){if(!this.chrome){this.makeChrome(element);element.addClass('jxHasChrome');}
this.resizeChrome(element);if(this.shim){this.shim.show();}
if(element&&this.chrome.parentNode!==element){element.adopt(this.chrome);this.chrome.setStyle('z-index',-1);}}},hideChrome:function(){if(this.chrome){if(this.shim){this.shim.hide();}
this.chrome.parentNode.removeClass('jxHasChrome');this.chrome.dispose();}},resizeChrome:function(o){if(this.chrome&&Browser.ie&&Browser.ie4){this.chrome.setContentBoxSize(document.id(o).getBorderBoxSize());if(this.shim){this.shim.position();}}},addTo:function(reference,where){var el=document.id(this.addable)||document.id(this.domObj);if(el){if(reference instanceof Jx.Widget&&reference.add!==undefined){reference.add(el);}else{ref=document.id(reference);el.inject(ref,where);}
this.fireEvent('addTo',this);}
return this;},toElement:function(){return this.domObj;},processTemplate:function(template,classes,container){var h={},element,el;if(container!==undefined&&container!==null){element=container.set('html',template);}else{element=new Element('div',{html:template});}
Object.each(classes,function(klass){el=element.getElement('.'+klass);if(el!==undefined&&el!==null){h[klass]=el;}});return h;},dispose:function(){var el=document.id(this.addable)||document.id(this.domObj);if(el){el.dispose();}},cleanup:function(){if(this.domObj!==undefined&&this.domObj!==null){this.domObj.eliminate('jxWidget');this.domObj.destroy();}
if(this.addable!==undefined&&this.addable!==null){this.addable.destroy();}
if(this.domA!==undefined&&this.domA!==null){this.domA.destroy();}
if(this.classes!==undefined&&this.classes!==null){for(var k in this.classes){this[k]=null;}}
if(this.elements!==undefined&&this.classes!==null){this.elements=null;}
this.parent();},render:function(){this.elements=this.processElements(this.options.template,this.classes);if(this.domObj!==undefined&&this.domObj!==null){if(this.options.id!==undefined&&this.options.id!==null){this.domObj.set('id',this.options.id);}
if(this.options.parent!==undefined&&this.options.parent!==null&&Jx.type(this.options.parent)!='function'){this.addTo(this.options.parent);}
this.domObj.store('jxWidget',this);}},elements:null,processElements:function(template,classes){var keys=[],values=[];for(var key in classes){if(key!==undefined){values.push(classes[key]);keys.push(key);}}
elements=this.processTemplate(template,values);keys.each(function(key){if(key!='elements'&&elements[classes[key]]!==undefined&&elements[classes[key]]!==null){this[key]=elements[classes[key]];}},this);return elements;},isBusy:function(){return this.busy;},setBusy:function(state,message,forceMessage){if(this.busy==state){return;}
var options=this.options,z,size,opts,domObj=this.domObj;if(domObj===null||domObj===undefined)return;message=(message!==undefined&&message!==null)?message:{set:'Jx',key:'widget',value:'busyMessage'};forceMessage=(forceMessage!==undefined&&forceMessage!==null)?forceMessage:false;this.busy=state;this.fireEvent('busy',state);if(state){if(options.busyClass){domObj.addClass(options.busyClass);}
if(options.busyMask&&domObj.spin){z=Jx.getNumber(domObj.getStyle('z-index'));opts={style:{'z-index':z+1}};size=domObj.getBorderBoxSize();if(size.height<60||forceMessage){opts['class']='jxSpinner jxSpinnerSmall';opts.img=null;opts.message=new Element('p',{'class':'jxSpinnerMessage',html:'<span class="jxSpinnerImage"></span>'+this.getText(message)});}
opts=Object.merge({},options.busyMask,opts);domObj.set('spinner',opts);var spinner=domObj.get('spinner');spinner.show(!options.busyMask.fx);}}else{if(options.busyClass){domObj.removeClass(options.busyClass);}
if(options.busyMask&&this.domObj.unspin){domObj.get('spinner').hide(!options.busyMask.fx);}}},changeText:function(lang){if(this.busy){this.setBusy(false);this.setBusy(true);}},stack:function(el){Jx.Stack.stack(el||document.id(this));},unstack:function(el){Jx.Stack.unstack(el=el||document.id(this));}});if(Jx.isAir){Jx.Widget.implement({checkRequest:function(){if(this.req.xhr.readyState===1){window.clearTimeout(this.reqTimeout);this.req.cancel();this.contentIsLoaded=true;this.fireEvent('contentLoadFailed',this);}}});}
Jx.Container=new Class({Family:'Jx.Container',Extends:Jx.Widget,options:{items:null},items:null,render:function(){this.parent();this.domObj=new Element('div');new Jx.Layout(this.domObj);this.items=[];this.options.items.each(function(item){var itemObj=new item['class'](item);var layoutOpts={};if(item.layoutOpts){layoutOpts=item.layoutOpts;}
var itemContainer=new Element('div');itemContainer.grab(itemObj.domObj);new Jx.Layout(itemContainer,layoutOpts);this.domObj.grab(itemContainer);this.items.push(itemObj);},this);}});Jx.Selection=new Class({Extends:Jx.Object,Family:'Jx.Selection',options:{eventToFire:{select:'select',unselect:'unselect'},selectClass:'jxSelected',selectMode:'single',selectToggle:true,minimumSelection:0},selection:null,init:function(){this.selection=[];this.parent();},cleanup:function(){this.selection=null;this.parent();},defaultSelect:function(item){if(this.selection.length<this.options.minimumSelection){this.select(item);}},select:function(item){var options=this.options,selection=this.selection;item=document.id(item);if(options.selectMode==='multiple'){if(selection.contains(item)){this.unselect(item);}else{document.id(item).addClass(options.selectClass);selection.push(item);this.fireEvent(options.eventToFire.select,item);}}else if(options.selectMode=='single'){if(!this.selection.contains(item)){document.id(item).addClass(options.selectClass);selection.push(item);if(selection.length>1){this.unselect(selection[0]);}
this.fireEvent(options.eventToFire.select,item);}else{if(options.selectToggle){this.unselect(item);}}}},unselect:function(item){var selection=this.selection,options=this.options;if(selection.contains(item)&&selection.length>options.minimumSelection){document.id(item).removeClass(options.selectClass);selection.erase(item);this.fireEvent(options.eventToFire.unselect,[item,this]);}},selected:function(){return this.selection;},isSelected:function(item){return this.selection.contains(item);}});Jx.Widget.List=new Class({Extends:Jx.Widget,Family:'Jx.Widget.List',parameters:['options'],ownsSelection:false,container:null,selection:null,holdEvents:false,options:{selection:null,items:null,hover:false,hoverClass:'jxHover',press:false,pressClass:'jxPressed',select:false,returnJx:false,trackEvents:{mouseenter:{on:true,obj:'li'},mouseleave:{on:true,obj:'li'},mousedown:{on:true,obj:'li'},mouseup:{on:true,obj:'li'},keydown:{on:true,obj:'li'},keyup:{on:true,obj:'li'},click:{on:true,obj:'li'},dblclick:{on:true,obj:'li'},contextmenu:{on:true,obj:'li'}},template:'<div class="jxWidget jxListContainer"></div>',selectionFunction:function(el,e){var item=document.id(el).retrieve('jxListTargetItem')||el;return!item.hasClass('jxUnselectable');},selectionEvents:{select:true,unselect:true}},classes:{domObj:'jxWidget',container:'jxListContainer'},init:function(){this.parent();if(this.container){this.container.store('jxList',this);}
var target=this,options=this.options;this.bound=Object.merge({},this.bound,{'mousedown':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(target.isEnabled(el)){el.addClass(options.pressClass);target.fireEvent('mousedown',[el,target,e]);}}},'mouseup':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(target.isEnabled(el)){el.removeClass(options.pressClass);target.fireEvent('mouseup',[el,target,e]);}}},'mouseenter':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(target.isEnabled(el)){var el2=target.container.getElement('.'+options.hoverClass);if(el2!==null&&el2!==undefined){el2.removeClass(options.hoverClass);}
el.addClass(options.hoverClass);target.fireEvent('mouseenter',[el,target,e]);}}},'mouseleave':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(target.isEnabled(el)){el.removeClass(options.hoverClass);el.removeClass(options.pressClass);target.fireEvent('mouseleave',[el,target,e]);}}},'keydown':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(e.key=='enter'&&target.isEnabled(el)){el.addClass('jxPressed');}}},'keyup':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(e.key=='enter'&&target.isEnabled(el)){el.removeClass('jxPressed');}}},'click':function(e,el){if(!target.holdEvents){el=document.id($jx(el));console.log('click in Widget.List on ',el);if(target.selection&&target.isEnabled(el)&&target.isSelectable(el,e)){target.selection.select(el,target);}
target.fireEvent('click',[el,target,e]);}},'dblclick':function(e,el){if(!target.holdEvents){el=document.id($jx(el));if(target.selection&&target.isEnabled(el)&&target.isSelectable(el,e)){target.selection.select(el,target);}
target.fireEvent('dblclick',[el,target,e]);}},'contextmenu':function(e,el){if(!target.holdEvents){el=document.id($jx(el));var cm=el.retrieve('jxContextMenu');if(cm){cm.show(e);el.removeClass(options.pressClass);e.stop();}}},select:function(item){if(!target.holdEvents){item=document.id($jx(item));if(this.isEnabled(item)){var itemTarget;if(this.options.returnJx){itemTarget=$jx(item);}else{itemTarget=item.retrieve('jxListTargetItem')||item;}
this.fireEvent('select',itemTarget);}}}.bind(this),unselect:function(item){if(!target.holdEvents){item=document.id($jx(item));if(this.isEnabled(item)){var itemTarget;if(this.options.returnJx){itemTarget=$jx(item);}else{itemTarget=item.retrieve('jxListTargetItem')||item;}
this.fireEvent('unselect',itemTarget);}}}.bind(this)});var trackEvents=this.options.trackEvents;if(trackEvents){for(var key in trackEvents){if(trackEvents[key].on){if(trackEvents[key].obj!==null&&trackEvents[key].obj!==undefined){this.container.addEvent(key+':relay('+trackEvents[key].obj+')',this.bound[key]);}else{this.container.addEvent(key,this.bound[key]);}}}}
if(options.selection){this.setSelection(options.selection);options.select=true;}else if(options.select){var opts=Object.merge({},options);delete opts.plugins;this.selection=new Jx.Selection(opts);this.ownsSelection=true;}
if(this.selection!==undefined&&this.selection!==null){var selectionEvents=this.options.selectionEvents;for(var key in selectionEvents){if(selectionEvents[key]){this.selection.addEvent(key,this.bound[key])}}}
if(options.items!==undefined&&options.items!==null){this.add(options.items);}},isEnabled:function(el){var item=el.retrieve('jxListTargetItem')||el;return!item.hasClass('jxDisabled');},isSelectable:function(el,e){return this.options.selectionFunction(el,e);},setHoldEvents:function(state){this.holdEvents=state;},cleanup:function(){this.container.getChildren().each(function(item){this.remove(item);},this);if(this.selection&&this.ownsSelection){this.selection.removeEvents();this.selection.destroy();}
this.setSelection(null);this.container.eliminate('jxList');var bound=this.bound;bound.mousedown=null;bound.mouseup=null;bound.mouseenter=null;bound.mouseleave=null;bound.keydown=null;bound.keyup=null;bound.click=null;bound.select=null;bound.unselect=null;bound.contextmenu=null;this.parent();},stopListening:function(){this.container.removeEvents(this.bound);},add:function(item,position){if(Jx.type(item)=='array'){item.each(function(what){this.add(what,position);}.bind(this));return;}
var el=document.id(item),target=el.retrieve('jxListTarget')||el,bound=this.bound,options=this.options,container=this.container;if(target){target.store('jxListTargetItem',el);if(position!==undefined&&position!==null){if(Jx.type(position)=='number'){if(position<container.childNodes.length){el.inject(container.childNodes[position],'before');}else{el.inject(container,'bottom');}}else if(['top','bottom','after','before'].contains(position)){el.inject(container,position);}else{var tempEl=document.id(position);if(tempEl!==undefined&&tempEl!==null&&container.contains(tempEl)){el.inject(position,'after');}}}else{el.inject(container,'bottom');}
if(this.options.returnJx){this.fireEvent('add',$jx(item),this);}else{this.fireEvent('add',item,this);}
if(this.selection){this.selection.defaultSelect(el);}}},remove:function(item){var el=document.id(item),target;if(el&&this.container.contains(el)){this.unselect(el,true);el.dispose();target=el.retrieve('jxListTarget')||el;if(this.options.returnJx){this.fireEvent('remove',$jx(item),this);}else{this.fireEvent('remove',item,this);}
return item;}
return null;},replace:function(item,withItem){if(this.container.contains(document.id(item))){this.add(withItem,item);this.remove(item);}},indexOf:function(item){return Array.from(this.container.childNodes).indexOf(item);},count:function(){return this.container.childNodes.length;},items:function(){var items=Array.from(this.container.childNodes);if(this.options.returnJx){items=items.map(function(item){return $jx(item);});}
return items;},each:function(f,context){Array.from(this.container.childNodes).each(f,context);},select:function(item){if(this.selection){this.selection.select(item);}},unselect:function(item,force){if(this.selection){this.selection.unselect(item);}},selected:function(){return this.selection?this.selection.selected:[];},empty:function(){this.container.getChildren().each(function(item){this.remove(item);},this);},setSelection:function(selection){var sel=this.selection;if(sel==selection)return;if(sel){sel.removeEvents(this.bound);if(this.ownsSelection){sel.destroy();this.ownsSelection=false;}}
this.selection=selection;if(selection){selection.addEvents({select:this.bound.select,unselect:this.bound.unselect});}}});Jx.Tree=new Class({Extends:Jx.Widget.List,Family:'Jx.Tree',parameters:['options'],pluginNamespace:'Tree',selection:null,ownsSelection:false,list:null,dirty:true,domObj:null,options:{select:true,template:'<ul class="jxTreeRoot jxListContainer"></ul>',trackEvents:{mouseenter:{on:true,obj:'li > a'},mouseleave:{on:true,obj:'li > a'},click:{on:true,obj:'li > a, li > img'}}},classes:{domObj:'jxTreeRoot'},frozen:false,render:function(){this.parent();this.options.returnJx=true;this.bound.toggle=this.toggle.bind(this);this.addEvents({click:this.bound.toggle,dblclick:this.bound.toggle});if(this.options.parent){this.addTo(this.options.parent);}},freeze:function(){this.frozen=true;},thaw:function(){this.frozen=false;this.update(true);},setDirty:function(state){this.dirty=state;},add:function(item,position){if(Jx.type(item)=='array'){item.each(function(what){this.add(what,position);}.bind(this));return;}
if(item instanceof Jx.Tree.Folder){item.addEvents({add:function(what){this.fireEvent('add',what);}.bind(this),remove:function(what){this.fireEvent('remove',what);}.bind(this)});item.setSelection(this.selection);item.stopListening();}
item.owner=this;this.parent(item,position);this.setDirty(true);this.update(true);this.fireEvent('add',item);return this;},remove:function(item){if(item instanceof Jx.Tree.Folder){item.removeEvents('add');item.removeEvents('remove');item.removeEvents('disclose');item.setSelection(null);}
item.owner=null;this.parent(item);this.setDirty(true);this.update(true);return this;},replace:function(item,withItem){if(item instanceof Jx.Tree.Folder){item.setSelection(null);}
if(withItem instanceof Jx.Tree.Folder){withItem.setSelection(this.selection);}
item.owner=null;withItem.owner=this;this.parent(item,withItem);this.setDirty(true);this.update(true);return this;},cleanup:function(){this.freeze();this.parent();},update:function(shouldDescend){if(this.frozen)return;var last=this.count()-1;this.items().each(function(item,idx){var lastItem=idx==last,jx=$jx(item);if(jx instanceof Jx.Tree.Folder){jx.update(shouldDescend,lastItem);}else if(jx instanceof Jx.Tree.Item){jx.update(lastItem);}});this.setDirty(false);},empty:function(){this.items().each(function(item){if(item instanceof Jx.Tree.Folder){item.empty();}
this.remove(item);item.destroy();},this);this.setDirty(true);},findChild:function(path){if(path.length===0){return false;}
var name=path[0];var result=false;this.items().some(function(item){var treeItem=$jx(item);if(treeItem&&treeItem.getLabel()==name){if(path.length>0){var folder=$jx(item);if(folder&&folder instanceof Jx.Tree.Folder&&path.length>1){result=folder.findChild(path.slice(1,path.length));}else{result=treeItem;}}else{result=treeItem;}}
return result;});return result;},toggle:function(el,obj){console.log('in toggle method');if(!this.holdEvents){var jx=$jx(el);if(jx instanceof Jx.Tree.Folder&&jx.isEnabled(el)){if(jx.isOpen()){jx.collapse();}else{jx.expand();}}}
return this;},setSelection:function(selection){if(this.selection&&this.ownsSelection){this.selection.removeEvents(this.bound);this.selection.destroy();this.ownsSelection=false;}
this.selection=selection;this.parent(selection);this.each(function(item){var jx=$jx(item);if(jx instanceof Jx.Tree.Folder){jx.setSelection(selection);}});return this;}});Jx.Tree.Item=new Class({Extends:Jx.Widget,Family:'Jx.Tree.Item',selection:null,domObj:null,owner:null,options:{label:'',contextMenu:null,enabled:true,selectable:true,image:null,imageClass:'',lastLeafClass:'jxTreeLeafLast',template:'<li class="jxTreeContainer jxTreeLeaf"><img class="jxTreeImage" src="'+Jx.aPixel.src+'" alt="" title=""><a class="jxTreeItem" href="javascript:void(0);"><img class="jxTreeIcon" src="'+Jx.aPixel.src+'" alt="" title=""><span class="jxTreeLabel"></span></a></li>',busyMask:{message:null}},classes:{domObj:'jxTreeContainer',domA:'jxTreeItem',domImg:'jxTreeImage',domIcon:'jxTreeIcon',domLabel:'jxTreeLabel'},render:function(){this.parent();this.domObj=this.elements.jxTreeContainer;this.domObj.store('jxTreeItem',this);this.domA.store('jxTreeItem',this);if(this.options.contextMenu){this.domA.store('jxContextMenu',this.options.contextMenu);}
this.domObj.store('jxListTarget',this.domA);if(!this.options.selectable){this.domObj.addClass('jxUnselectable');}
if(this.options.id){this.domObj.id=this.options.id;}
if(!this.options.enabled){this.domObj.addClass('jxDisabled');}
if(this.options.image&&this.domIcon){this.domIcon.setStyle('backgroundImage','url('+this.options.image+')');if(this.options.imageClass){this.domIcon.addClass(this.options.imageClass);}}
if(this.options.label&&this.domLabel){this.setLabel(this.options.label);}
if(this.domA){this.domA.addEvents({drag:function(e){e.stop();}});if(typeof Drag!='undefined'){new Drag(this.domA,{onStart:function(){this.stop();}});}}
if(this.options.enabled!==undefined&&this.options.enabled!==null){this.enable(this.options.enabled,true);}},setDirty:function(state){this.dirty=state;if(state&&this.owner&&this.owner.setDirty){this.owner.setDirty(state);}},finalize:function(){this.destroy();},cleanup:function(){this.domObj.eliminate('jxTreeItem');this.domA.eliminate('jxTreeItem');this.domA.eliminate('jxContextMenu');this.domObj.eliminate('jxListTarget');this.domObj.eliminate('jxListTargetItem');this.domA.removeEvents();this.owner=null;this.selection=null;this.parent();},update:function(isLast){if(isLast){this.domObj.addClass(this.options.lastLeafClass);}else{this.domObj.removeClass(this.options.lastLeafClass);}},select:function(){if(this.selection&&this.options.enabled){this.selection.select(this.domA);}},getLabel:function(){return this.options.label;},setLabel:function(label){this.options.label=label;if(this.domLabel){this.domLabel.set('html',this.getText(label));this.setDirty(true);}},setImage:function(url,imageClass){if(this.domIcon&&url!==undefined&&url!==null){this.options.image=url;this.domIcon.setStyle('backgroundImage','url('+this.options.image+')');this.setDirty(true);}
if(this.domIcon&&imageClass!==undefined&&imageClass!==null){this.domIcon.removeClass(this.options.imageClass);this.options.imageClass=imageClass;this.domIcon.addClass(imageClass);this.setDirty(true);}},enable:function(state,force){if(this.options.enabled!=state||force){this.options.enabled=state;if(this.options.enabled){this.domObj.removeClass('jxDisabled');this.fireEvent('enabled',this);}else{this.domObj.addClass('jxDisabled');this.fireEvent('disabled',this);if(this.selection){this.selection.unselect(document.id(this));}}}},propertyChanged:function(obj){this.options.enabled=obj.isEnabled();if(this.options.enabled){this.domObj.removeClass('jxDisabled');}else{this.domObj.addClass('jxDisabled');}},setSelection:function(selection){this.selection=selection;},update:function(isLast){if(isLast){this.domObj.addClass(this.options.lastLeafClass);}else{this.domObj.removeClass(this.options.lastLeafClass);}},setBusy:function(state){if(this.busy==state){return;}
this.busy=state;this.fireEvent('busy',this.busy);if(this.busy){this.domImg.addClass(this.options.busyClass);}else{if(this.options.busyClass){this.domImg.removeClass(this.options.busyClass);}}},changeText:function(lang){this.parent();this.setLabel(this.options.label);}});Jx.Tree.Folder=new Class({Extends:Jx.Widget.List,Family:'Jx.Tree.Folder',options:{label:'',contextMenu:null,enabled:true,selectable:true,image:null,imageClass:'',open:false,select:false,trackEvents:false,template:'<li class="jxTreeContainer jxTreeBranch"><img class="jxTreeImage" src="'+Jx.aPixel.src+'" alt="" title=""><a class="jxTreeItem" href="javascript:void(0);"><img class="jxTreeIcon" src="'+Jx.aPixel.src+'" alt="" title=""><span class="jxTreeLabel"></span></a><ul class="jxTree jxListContainer"></ul></li>'},classes:{domObj:'jxTreeContainer',domA:'jxTreeItem',domImg:'jxTreeImage',domIcon:'jxTreeIcon',domLabel:'jxTreeLabel',domTree:'jxTree',container:'jxListContainer'},dirty:false,render:function(){this.parent();this.domObj.store('jxTreeFolder',this);this.options.returnJx=true;if(!this.options.selectable){this.domObj.addClass('jxUnselectable');}
if(this.options.id){this.domObj.id=this.options.id;}
if(!this.options.enabled){this.domObj.addClass('jxDisabled');}
if(this.options.image&&this.domIcon){this.domIcon.setStyle('backgroundImage','url('+this.options.image+')');if(this.options.imageClass){this.domIcon.addClass(this.options.imageClass);}}
if(this.options.label&&this.domLabel){this.setLabel(this.options.label);}
if(this.domA){this.domA.addEvents({drag:function(e){e.stop();}});if(typeof Drag!='undefined'){new Drag(this.domA,{onStart:function(){this.stop();}});}}
if(this.options.enabled!==undefined&&this.options.enabled!==null){this.enable(this.options.enabled,true);}
if(this.options.open){this.expand();}else{this.collapse();}},cleanup:function(){this.domObj.eliminate('jxTreeFolder');this.domObj.eliminate('jxTreeItem');this.domA.eliminate('jxTreeItem');this.domA.eliminate('jxContextMenu');this.domObj.eliminate('jxListTarget');this.domObj.eliminate('jxListTargetItem');this.parent();},add:function(item,position){if(Jx.type(item)=='array'){item.each(function(what){this.add(what,position);}.bind(this));return;}
if(item instanceof Jx.Tree.Folder){item.addEvents({add:function(what){this.fireEvent('add',what);}.bind(this),remove:function(what){this.fireEvent('remove',what);}.bind(this)});item.setSelection(this.selection);item.stopListening();}
item.owner=this;this.parent(item,position);this.setDirty(true);if(this.owner){this.owner.update(true);}
return this;},update:function(shouldDescend,isLast){if(!this.domObj.parentNode)return;if(isLast!==undefined&&isLast!==null){if(isLast){this.container.removeClass('jxTreeNest');}else{this.container.addClass('jxTreeNest');}}
if(this.dirty||(this.owner&&this.owner.dirty)){if(isLast===undefined||isLast===null){isLast=this.domObj.hasClass('jxTreeBranchLastOpen')||this.domObj.hasClass('jxTreeBranchLastClosed');}
['jxTreeBranchOpen','jxTreeBranchLastOpen','jxTreeBranchClosed','jxTreeBranchLastClosed'].each(function(c){this.removeClass(c);},this.domObj);var c='jxTreeBranch';c+=isLast?'Last':'';c+=this.options.open?'Open':'Closed';this.domObj.addClass(c);if(shouldDescend){var last=this.count()-1;this.items().each(function(item,idx){var lastItem=idx==last,jx=$jx(item);if(jx instanceof Jx.Tree.Folder){jx.update(shouldDescend,lastItem);}else if(jx instanceof Jx.Tree.Item){jx.update(lastItem);}});}}},expand:function(){this.options.open=true;this.container.setStyle('display','block');this.setDirty(true);this.update(true);this.fireEvent('disclosed',this);return this;},collapse:function(){this.options.open=false;this.container.setStyle('display','none');this.setDirty(true);this.update(true);this.fireEvent('disclosed',this);return this;},findChild:function(path){if(path.length===0){return this;}else{return this.tree.findChild(path);}},setSelection:function(selection){this.parent(selection);return this;},isEnabled:function(){return this.options.enabled;},isOpen:function(){return this.options.open;},setDirty:function(state){this.dirty=state;if(this.owner&&this.owner.setDirty){this.owner.setDirty(state);}},getLabel:function(){return this.options.label;},setLabel:function(label){this.options.label=label;if(this.domLabel){this.domLabel.set('html',this.getText(label));this.setDirty(true);}},setImage:function(url,imageClass){if(this.domIcon&&url!==undefined&&url!==null){this.options.image=url;this.domIcon.setStyle('backgroundImage','url('+this.options.image+')');this.setDirty(true);}
if(this.domIcon&&imageClass!==undefined&&imageClass!==null){this.domIcon.removeClass(this.options.imageClass);this.options.imageClass=imageClass;this.domIcon.addClass(imageClass);this.setDirty(true);}},enable:function(state,force){if(this.options.enabled!=state||force){this.options.enabled=state;if(this.options.enabled){this.domObj.removeClass('jxDisabled');this.fireEvent('enabled',this);}else{this.domObj.addClass('jxDisabled');this.fireEvent('disabled',this);if(this.selection){this.selection.unselect(document.id(this));}}}},propertyChanged:function(obj){this.options.enabled=obj.isEnabled();if(this.options.enabled){this.domObj.removeClass('jxDisabled');}else{this.domObj.addClass('jxDisabled');}},setBusy:function(state){if(this.busy==state){return;}
this.busy=state;this.fireEvent('busy',this.busy);if(this.busy){this.domImg.addClass(this.options.busyClass);}else{if(this.options.busyClass){this.domImg.removeClass(this.options.busyClass);}}},changeText:function(lang){this.parent();this.setLabel(this.options.label);}});Jx.List=new Class({Extends:Jx.Object,Family:'Jx.List',parameters:['container','options','selection'],ownsSelection:false,container:null,selection:null,options:{items:null,hover:false,hoverClass:'jxHover',press:false,pressClass:'jxPressed',select:false},init:function(){this.container=document.id(this.options.container);this.container.store('jxList',this);var target=this,options=this.options,isEnabled=function(el){var item=el.retrieve('jxListTargetItem')||el;return!item.hasClass('jxDisabled');},isSelectable=function(el){var item=el.retrieve('jxListTargetItem')||el;return!item.hasClass('jxUnselectable');};this.bound=Object.merge({},this.bound,{mousedown:function(){if(isEnabled(this)){this.addClass(options.pressClass);target.fireEvent('mousedown',this,target);}},mouseup:function(){if(isEnabled(this)){this.removeClass(options.pressClass);target.fireEvent('mouseup',this,target);}},mouseenter:function(){if(isEnabled(this)){this.addClass(options.hoverClass);target.fireEvent('mouseenter',this,target);}},mouseleave:function(){if(isEnabled(this)){this.removeClass(options.hoverClass);target.fireEvent('mouseleave',this,target);}},keydown:function(e){if(e.key=='enter'&&isEnabled(this)){this.addClass('jxPressed');}},keyup:function(e){if(e.key=='enter'&&isEnabled(this)){this.removeClass('jxPressed');}},click:function(e){if(target.selection&&isEnabled(this)&&isSelectable(this)){target.selection.select(this,target);}
target.fireEvent('click',this,target);},select:function(item){if(isEnabled(item)){var itemTarget=item.retrieve('jxListTargetItem')||item;target.fireEvent('select',itemTarget);}},unselect:function(item){if(isEnabled(item)){var itemTarget=item.retrieve('jxListTargetItem')||item;target.fireEvent('unselect',itemTarget);}},contextmenu:function(e){var cm=this.retrieve('jxContextMenu');if(cm){cm.show(e);this.removeClass(options.pressClass);}
e.stop();}});if(options.selection){this.setSelection(options.selection);options.select=true;}else if(options.select){this.selection=new Jx.Selection(options);this.ownsSelection=true;}
if(options.items!==undefined&&options.items!==null){this.add(options.items);}},cleanup:function(){this.container.getChildren().each(function(item){this.remove(item);},this);if(this.selection&&this.ownsSelection){this.selection.removeEvents();this.selection.destroy();}
this.setSelection(null);this.container.eliminate('jxList');var bound=this.bound;bound.mousedown=null;bound.mouseup=null;bound.mouseenter=null;bound.mouseleave=null;bound.keydown=null;bound.keyup=null;bound.click=null;bound.select=null;bound.unselect=null;bound.contextmenu=null;this.parent();},add:function(item,position){if(Jx.type(item)=='array'){item.each(function(what){this.add(what,position);}.bind(this));return;}
var el=document.id(item),target=el.retrieve('jxListTarget')||el,bound=this.bound,options=this.options,container=this.container;if(target){target.store('jxListTargetItem',el);target.addEvents({contextmenu:this.bound.contextmenu});if(options.press&&options.pressClass){target.addEvents({mousedown:bound.mousedown,mouseup:bound.mouseup,keyup:bound.keyup,keydown:bound.keydown});}
if(options.hover&&options.hoverClass){target.addEvents({mouseenter:bound.mouseenter,mouseleave:bound.mouseleave});}
if(this.selection){target.addEvents({click:bound.click});}
if(position!==undefined&&position!==null){if(Jx.type(position)=='number'){if(position<container.childNodes.length){el.inject(container.childNodes[position],'before');}else{el.inject(container,'bottom');}}else if(container.contains(document.id(position))){el.inject(position,'after');}
this.fireEvent('add',item,this);}else{el.inject(container,'bottom');this.fireEvent('add',item,this);}
if(this.selection){this.selection.defaultSelect(el);}}},remove:function(item){var el=document.id(item),target;if(el&&this.container.contains(el)){this.unselect(el,true);el.dispose();target=el.retrieve('jxListTarget')||el;target.removeEvents(this.bound);this.fireEvent('remove',item,this);return item;}
return null;},replace:function(item,withItem){if(this.container.contains(document.id(item))){this.add(withItem,item);this.remove(item);}},indexOf:function(item){return Array.from(this.container.childNodes).indexOf(item);},count:function(){return this.container.childNodes.length;},items:function(){return Array.from(this.container.childNodes);},each:function(f,context){Array.from(this.container.childNodes).each(f,context);},select:function(item){if(this.selection){this.selection.select(item);}},unselect:function(item,force){if(this.selection){this.selection.unselect(item);}},selected:function(){return this.selection?this.selection.selected:[];},empty:function(){this.container.getChildren().each(function(item){this.remove(item);},this);},setSelection:function(selection){var sel=this.selection;if(sel==selection)return;if(sel){sel.removeEvents(this.bound);if(this.ownsSelection){sel.destroy();this.ownsSelection=false;}}
this.selection=selection;if(selection){selection.addEvents({select:this.bound.select,unselect:this.bound.unselect});}}});Jx.Toolbar=new Class({Extends:Jx.Widget,Family:'Jx.Toolbar',list:null,domObj:null,isActive:false,options:{position:'top',parent:null,autoSize:false,align:'left',scroll:true,template:'<ul class="jxToolbar"></ul>'},classes:{domObj:'jxToolbar'},render:function(){this.parent();this.domObj.store('jxToolbar',this);if(this.options.id!==undefined&&this.options.id!==null){this.domObj.id=this.options.id;}
this.list=new Jx.List(this.domObj,{onAdd:function(item){this.fireEvent('add',this);}.bind(this),onRemove:function(item){this.fireEvent('remove',this);}.bind(this)});if(this.options.parent){this.addTo(this.options.parent);}
this.deactivateWatcher=this.deactivate.bind(this);if(this.options.items){this.add(this.options.items);}},addTo:function(parent){var tbc=document.id(parent).retrieve('jxBarContainer');if(!tbc){tbc=new Jx.Toolbar.Container({parent:parent,position:this.options.position,autoSize:this.options.autoSize,align:this.options.align,scroll:this.options.scroll});}
tbc.add(this);return this;},add:function(){Array.from(arguments).flatten().each(function(thing){var item=thing;if(item.domObj){item=item.domObj;}
if(item.tagName=='LI'){if(!item.hasClass('jxToolItem')){item.addClass('jxToolItem');}}else{item=new Jx.Toolbar.Item(thing);}
this.list.add(item);},this);this.update();return this;},remove:function(item){if(item.domObj){item=item.domObj;}
var li=item.findElement('LI');this.list.remove(li);this.update();return this;},empty:function(){this.list.each(function(item){this.remove(item);},this);},deactivate:function(){this.list.each(function(item){if(item.retrieve('jxMenu')){item.retrieve('jxMenu').hide();}});this.setActive(false);},isActive:function(){return this.isActive;},setActive:function(b){this.isActive=b;if(this.isActive){document.addEvent('click',this.deactivateWatcher);}else{document.removeEvent('click',this.deactivateWatcher);}},setVisibleItem:function(obj){if(this.visibleItem&&this.visibleItem.hide&&this.visibleItem!=obj){this.visibleItem.hide();}
this.visibleItem=obj;if(this.isActive()){this.visibleItem.show();}},showItem:function(item){this.fireEvent('show',item);},update:function(){this.fireEvent('update');},changeText:function(lang){this.update();}});Jx.Button=new Class({Extends:Jx.Widget,Family:'Jx.Button',options:{image:'',tooltip:'',label:'',toggle:false,toggleClass:'jxButtonToggle',pressedClass:'jxButtonPressed',activeClass:'jxButtonActive',active:false,enabled:true,href:'javascript:void(0);',target:'',template:'<span class="jxButtonContainer"><a class="jxButton"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>'},classes:{domObj:'jxButtonContainer',domA:'jxButton',domImg:'jxButtonIcon',domLabel:'jxButtonLabel'},render:function(){this.parent();var options=this.options,hasFocus,mouseDown;if(options.toggle){this.domObj.addClass(options.toggleClass);}
if(this.domA){this.domA.set({target:options.target,href:options.href,title:this.getText(options.tooltip),alt:this.getText(options.tooltip)});this.domA.addEvents({click:this.clicked.bind(this),drag:(function(e){e.stop();}).bind(this),mousedown:(function(e){this.domA.addClass(options.pressedClass);hasFocus=true;mouseDown=true;this.focus();}).bind(this),mouseup:(function(e){this.domA.removeClass(options.pressedClass);mouseDown=false;}).bind(this),mouseleave:(function(e){this.domA.removeClass(options.pressedClass);}).bind(this),mouseenter:(function(e){if(hasFocus&&mouseDown){this.domA.addClass(options.pressedClass);}}).bind(this),keydown:(function(e){if(e.key=='enter'){this.domA.addClass(options.pressedClass);}}).bind(this),keyup:(function(e){if(e.key=='enter'){this.domA.removeClass(options.pressedClass);}}).bind(this),blur:function(){hasFocus=false;}});if(typeof Drag!='undefined'){new Drag(this.domA,{onStart:function(){this.stop();}});}}
if(this.domImg){if(options.image||!options.label){this.domImg.set({title:this.getText(options.tooltip),alt:this.getText(options.tooltip)});if(options.image&&options.image.indexOf(Jx.aPixel.src)==-1){this.domImg.setStyle('backgroundImage',"url("+options.image+")");}
if(options.imageClass){this.domImg.addClass(options.imageClass);}}else{this.domImg.setStyle('display','none');}}
if(this.domLabel){if(options.label||this.domA.hasClass('jxDiscloser')){this.setLabel(options.label);}else{this.domLabel.setStyle('display','none');}}
if(options.id){this.domObj.set('id',options.id);}
this.setEnabled(options.enabled);if(options.active){options.active=false;this.setActive(true);}},clicked:function(evt){var options=this.options;if(options.enabled&&!this.isBusy()){if(options.toggle){this.setActive(!options.active);}else{this.fireEvent('click',{obj:this,event:evt});}}},isEnabled:function(){return this.options.enabled;},setEnabled:function(enabled){this.options.enabled=enabled;if(enabled){this.domObj.removeClass('jxDisabled');}else{this.domObj.addClass('jxDisabled');}},isActive:function(){return this.options.active;},setActive:function(active){var options=this.options;if(options.enabled&&!this.isBusy()){if(options.active==active){return;}
options.active=active;if(this.domA){if(options.active){this.domA.addClass(options.activeClass);}else{this.domA.removeClass(options.activeClass);}}
this.fireEvent(active?'down':'up',this);}},setImage:function(path){this.options.image=path;if(this.domImg){this.domImg.setStyle('backgroundImage',"url("+path+")");this.domImg.setStyle('display',path?null:'none');}},setLabel:function(label){this.options.label=label;if(this.domLabel){this.domLabel.set('html',this.getText(label));this.domLabel.setStyle('display',label||this.domA.hasClass('jxDiscloser')?null:'none');}},getLabel:function(){return this.options.label;},setTooltip:function(tooltip){if(this.domA){this.domA.set({'title':this.getText(tooltip),'alt':this.getText(tooltip)});}
if(this.domImg){var t=this.domImg.get('title');if(t!==undefined&&t!==null){this.domImg.set({'title':this.getText(tooltip),'alt':this.getText(tooltip)});}}},focus:function(){if(this.domA){this.domA.focus();}},blur:function(){if(this.domA){this.domA.blur();}},changeText:function(lang){this.parent();this.setLabel(this.options.label);this.setTooltip(this.options.tooltip);}});Jx.Toolbar.Item=new Class({Extends:Jx.Widget,Family:'Jx.Toolbar.Item',options:{active:true,template:'<li class="jxToolItem"></li>'},classes:{domObj:'jxToolItem'},parameters:['jxThing','options'],render:function(){this.parent();var el=document.id(this.options.jxThing);if(el){this.domObj.adopt(el);}}});Jx.Record=new Class({Extends:Jx.Object,Family:'Jx.Record',options:{separator:'.',primaryKey:'id'},data:null,state:null,fields:null,virtuals:{primaryKey:{type:'alphanumeric',get:function(){column=this.resolveCol(this.options.primaryKey);return this.data[column.name];}}},parameters:['store','fields','data','options'],init:function(){this.parent();if(this.options.fields!==undefined&&this.options.fields!==null){this.fields=this.options.fields;}
if(this.options.data!==undefined&&this.options.data!==null){this.processData(this.options.data);}else{this.data={};}
if(this.options.store!==undefined&&this.options.store!==null){this.store=this.options.store;}
for(var k in this.virtuals){var originalGet,originalSet;if(this.virtuals[k].get!==undefined){originalGet=this.virtuals[k].get;this.virtuals[k].get=originalGet.bind(this);}
if(this.virtuals[k].set!==undefined){originalSet=this.virtuals[k].set;this.virtuals[k].set=originalSet.bind(this);}}},get:function(column){if(Jx.type(column)=='string'&&this.virtuals[column]!==undefined&&this.virtuals[column].get!==undefined){return this.virtuals[column].get();}
column=this.resolveCol(column);if(column!==null&&Object.keys(this.data).contains(column.name)){return this.data[column.name];}else{return null;}},set:function(column,data){if(this.virtuals[column]!==undefined&&this.virtuals[column].set!==undefined){return this.virtuals[column].set(data);}
var type=Jx.type(column),oldValue;if(type!=='object'){column=this.resolveCol(column);}
if(column!==null){if(this.data===undefined||this.data===null){this.data={};}
oldValue=this.get(column);this.data[column.name]=data;this.state=Jx.Record.UPDATE;return[column.name,oldValue,data];}else{return null;}},equals:function(column,value){var col=this.resolveCol(column),currentValue=this.get(col.name);if(currentValue!==null){if(this.comparator===undefined||this.comparator===null){this.comparator=new Jx.Compare({separator:this.options.separator});}
var fn=this.comparator[col.type].bind(this.comparator);return(fn(currentValue,value)===0);}else{return false;}},processData:function(data){this.data={};this.fields.each(function(field){this.data[field.name]=data[field.name];},this);},resolveCol:function(col){var t=Jx.type(col),ret=null;if(t==='number'){ret=this.fields[col];}else if(t==='string'){if(Object.keys(this.virtuals).contains(col)){ret={name:col,type:this.virtuals[col].type};}else{this.fields.each(function(column){if(column.name===col){ret=column;}},this);}}
return ret;},asObject:function(){return this.data;}});Jx.Record.UPDATE=1;Jx.Record.DELETE=2;Jx.Record.INSERT=3;Jx.Store=new Class({Extends:Jx.Object,Family:'Jx.Store',options:{id:null,fields:[],protocol:null,strategies:null,record:null,recordOptions:{}},data:null,index:0,id:null,loaded:false,ready:false,deleted:null,init:function(){this.parent();this.deleted=[];if(this.options.id!==undefined&&this.options.id!==null){this.id=this.options.id;}
if(this.options.protocol===undefined||this.options.protocol===null){this.ready=false;return;}else{this.protocol=this.options.protocol;}
this.strategies={};if(this.options.strategies!==undefined&&this.options.strategies!==null){this.options.strategies.each(function(strategy){this.addStrategy(strategy);},this);}else{var strategy=new Jx.Store.Strategy.Full();this.addStrategy(strategy);}
if(this.options.record!==undefined&&this.options.record!==null){this.record=this.options.record;}else{this.record=Jx.Record;}},cleanup:function(){Object.each(this.strategies,function(strategy){strategy.destroy();},this);this.strategies=null;this.protocol.destroy();this.protocol=null;this.record=null;},getStrategy:function(name){if(Object.keys(this.strategies).contains(name)){return this.strategies[name];}
return null;},addStrategy:function(strategy){this.strategies[strategy.name]=strategy;strategy.setStore(this);strategy.activate();},load:function(params){this.fireEvent('storeLoad',params);},empty:function(){if(this.data!==undefined&&this.data!==null){this.data.empty();}},hasNext:function(){if(this.data!==undefined&&this.data!==null){return this.index<this.data.length-1;}
return null;},hasPrevious:function(){if(this.data!==undefined&&this.data!==null){return this.index>0;}
return null;},valid:function(){return(this.data!==undefined&&this.data!==null&&this.data[this.index]!==undefined);},next:function(){if(this.data!==undefined&&this.data!==null){this.index++;if(this.index===this.data.length){this.index=this.data.length-1;}
this.fireEvent('storeMove',this);return true;}else{return null;}},previous:function(){if(this.data!==undefined&&this.data!==null){this.index--;if(this.index<0){this.index=0;}
this.fireEvent('storeMove',this);return true;}else{return null;}},first:function(){if(this.data!==undefined&&this.data!==null){this.index=0;this.fireEvent('storeMove',this);return true;}else{return null;}},last:function(){if(this.data!==undefined&&this.data!==null){this.index=this.data.length-1;this.fireEvent('storeMove',this);return true;}else{return null;}},count:function(){if(this.data!==undefined&&this.data!==null){return this.data.length;}
return null;},getPosition:function(){if(this.data!==undefined&&this.data!==null){return this.index;}
return null;},moveTo:function(index){if(this.data!==undefined&&this.data!==null&&index>=0&&index<this.data.length){this.index=index;this.fireEvent('storeMove',this);return true;}else if(this.data===undefined&&this.data===null){return null;}else{return false;}},each:function(fn,bind,ignoreDeleted){if(this.data!==undefined&&this.data!==null){var data;if(ignoreDeleted){data=this.data.filter(function(record){return record.state!==Jx.Record.DELETE;},this);}else{data=this.data;}
data.each(fn,bind);}},get:function(column,index){if(index===undefined||index===null){index=this.index;}
return this.data[index].get(column);},set:function(column,data,index){if(index===undefined&&index!==null){index=this.index;}
var ret=this.data[index].set(column,data);ret.reverse();ret.push(index);ret.reverse();this.fireEvent('storeColumnChanged',ret);},refresh:function(){this.fireEvent('storeRefresh',this);},addRecord:function(data,position,insert){if(this.data===undefined&&this.data!==null){this.data=[];}
position=(position!==undefined&&position!==null)?position:'bottom';var record=data;if(!(data instanceof Jx.Record)){record=new(this.record)(this,this.options.fields,data,this.options.recordOptions);}
if(insert){record.state=Jx.Record.INSERT;}
if(position==='top'){this.data.reverse();this.data.push(record);this.data.reverse();}else{this.data.push(record);}
this.fireEvent('storeRecordAdded',[this,record,position]);},addRecords:function(data,position){var def=(data!==undefined&&data!==null),type=Jx.type(data);if(this.data===undefined||this.data===null){this.data=[];}
if(def&&type==='array'){this.fireEvent('storeBeginAddRecords',this);if(position==='top'){data.reverse();}
data.each(function(d){this.addRecord(d,position);},this);this.fireEvent('storeEndAddRecords',this);return true;}
return false;},getRecord:function(index){if(index===undefined&&index!==null){index=this.index;}
if(index instanceof Jx.Record){return index;}
if(Jx.type(index)==='number'){if(this.data!==undefined&&this.data!==null&&this.data[index]!==undefined){return this.data[index];}}
return null;},replace:function(data,index){if(data!==undefined&&this.data!==null){if(index===undefined&&index!==null){index=this.index;}
var record=new this.record(this,this.options.fields,data),oldRecord=this.data[index];this.data[index]=record;this.fireEvent('storeRecordReplaced',[oldRecord,record]);return true;}
return false;},deleteRecord:function(index){if(index===undefined&&index!==null){index=this.index;}
var record=this.data[index];record.state=Jx.Record.DELETE;this.data.splice(index,1);this.deleted.push(record);this.fireEvent('storeRecordDeleted',[this,record]);},insertRecord:function(data,position){this.addRecord(data,position,true);},getFields:function(){return this.options.fields;},findByColumn:function(column,value){if(typeof StopIteration==="undefined"){StopIteration=new Error("StopIteration");}
var index;try{this.data.each(function(record,idx){if(record.equals(column,value)){index=idx;throw StopIteration;}},this);}catch(error){if(error!==StopIteration){throw error;}
return index;}
return null;},removeRecord:function(index){if(index===undefined&&index!==null){index=this.index;}
this.data.splice(index,1);this.fireEvent('storeRecordRemoved',[this,index]);},removeRecords:function(first,last){for(var i=first;i<=last;i++){this.removeRecord(first);}
this.fireEvent('storeMultipleRecordsRemoved',[this,first,last]);},parseTemplate:function(template){var arr=[],s;this.options.fields.each(function(col){s='{'+col.name+'}';if(template.contains(s)){arr.push(col.name);}},this);return arr;},fillTemplate:function(index,template,columnsNeeded,obj){var record=null,itemObj;if(index!==undefined&&index!==null){if(index instanceof Jx.Record){record=index;}else{record=this.getRecord(index);}}else{record=this.getRecord(this.index);}
itemObj=(obj!==undefined&&obj!==null)?obj:{};columnsNeeded.each(function(col){itemObj[col]=record.get(col);},this);return template.substitute(itemObj);},equals:function(record,compareTo){record=this.getRecord(record);compareTo=this.getRecord(compareTo);return record.data==compareTo.data;}});Jx.Store.Strategy=new Class({Extends:Jx.Object,Family:'Jx.Store.Strategy',store:null,active:null,init:function(){this.parent();this.active=false;},setStore:function(store){if(store instanceof Jx.Store){this.store=store;return true;}
return false;},activate:function(){if(!this.active){this.active=true;return true;}
return false;},deactivate:function(){if(this.active){this.active=false;return true;}
return false;}});Jx.Store.Strategy.Paginate=new Class({Extends:Jx.Store.Strategy,Family:"Jx.Store.Strategy.Paginate",name:'paginate',options:{getPaginationParams:function(){return{page:this.page,itemsPerPage:this.itemsPerPage};},startingItemsPerPage:25,startingPage:1,expirationInterval:(1000*60*5),ignoreExpiration:false},data:null,cacheTimer:null,page:null,itemsPerPage:null,init:function(){this.parent();this.data={};this.cacheTimer={};this.bound.load=this.load.bind(this);this.bound.loadStore=this.loadStore.bind(this);this.itemsPerPage=this.options.startingItemsPerPage;this.page=this.options.startingPage;},activate:function(){this.parent();this.store.addEvent('storeLoad',this.bound.load);},deactivate:function(){this.parent();this.store.removeEvent('storeLoad',this.bound.load);},load:function(params){this.store.fireEvent('storeBeginDataLoad',this.store);this.store.protocol.addEvent('dataLoaded',this.bound.loadStore);this.params=params;var opts={data:Object.merge({},params,this.options.getPaginationParams.apply(this))};this.store.protocol.read(opts);},loadStore:function(resp){this.store.protocol.removeEvent('dataLoaded',this.bound.loadStore);if(resp.success()){if(resp.meta!==undefined&&resp.meta!==null){this.parseMetaData(resp.meta);}
this.data[this.page]=resp.data;this.loadData(resp.data);}else{this.store.fireEvent('storeDataLoadFailed',this.store);}},loadData:function(data){this.store.empty();this.store.loaded=false;if(!this.options.ignoreExpiration){var id=this.expirePage.delay(this.options.expirationInterval,this,this.page);this.cacheTimer[this.page]=id;}
this.store.addRecords(data);this.store.loaded=true;this.store.fireEvent('storeDataLoaded',this.store);},parseMetaData:function(meta){if(meta.columns!==undefined&&meta.columns!==null){this.store.options.fields=meta.columns;}
if(meta.totalItems!==undefined&&meta.totalItems!==null){this.totalItems=meta.totalItems;}
if(meta.totalPages!==undefined&&meta.totalPages!==null){this.totalPages=meta.totalPages;}
if(meta.primaryKey!==undefined&&meta.primaryKey!==null){this.store.options.recordOptions.primaryKey=meta.primaryKey;}},expirePage:function(page){delete this.data[page];delete this.cacheTimer[page];},setPage:function(page){if(Jx.type(page)==='string'){switch(page){case'first':this.page=1;break;case'last':this.page=this.totalPages;break;case'next':this.page++;break;case'previous':this.page--;break;default:this.page=this.page+Jx.getNumber(page);break;}}else{this.page=page;}
if(Object.keys(this.cacheTimer).contains(this.page)){window.clearTimeout(this.cacheTimer.get(this.page));delete this.cacheTimer[this.page];}
if(Object.keys(this.data).contains(this.page)){this.loadData(this.data[this.page]);}else{this.load(this.params);}},getPage:function(){return this.page;},getNumberOfPages:function(){return this.totalPages;},setPageSize:function(size){this.itemsPerPage=size;Object.each(this.cacheTimer,function(val){window.clearTimeout(val);},this);this.cacheTimer={};this.data={};this.load();},getPageSize:function(){return this.itemsPerPage;},getTotalCount:function(){return this.totalItems;}});Jx.Toolbar.Pager=new Class({Extends:Jx.Toolbar,options:{store:null,paginationOptions:{ignoreExpiration:true},scroll:false},currentPage:1,totalPages:1,init:function(){if(this.options.store!==undefined){this.store=this.options.store;}else{return;}
this.strategy=this.store.getStrategy('paginate');if(this.strategy===undefined){var full=this.store.getStrategy('full');if(full){full.deactivate();}
this.strategy=new Jx.Store.Strategy.Paginate(this.options.paginationOptions);this.store.addStrategy(this.strategy);}
this.parent();this.store.addEvent('storeDataLoaded',this.updateToolbar.bind(this));},render:function(){this.parent();this.counter=new Element('div',{html:'Page: 1 of X',id:'counter'});this.firstPage=new Jx.Button({id:'start',label:'<<',tooltip:'jump to first page',onClick:function(){this.strategy.setPage('first');}.bind(this)});this.previousPage=new Jx.Button({id:'previous',label:'<',tooltip:'previous page',onClick:function(){this.strategy.setPage('previous');}.bind(this)});this.nextPage=new Jx.Button({id:'next',label:'>',tooltip:'next page',onClick:function(){this.strategy.setPage('next');}.bind(this)});this.lastPage=new Jx.Button({id:'last',label:'>>',tooltip:'jump to last page',onClick:function(){this.strategy.setPage('last');}.bind(this)});this.add(this.firstPage,this.previousPage,new Jx.Toolbar.Item(this.counter),this.nextPage,this.lastPage);if(this.store.loaded){this.updateToolbar();}},updateToolbar:function(){this.currentPage=this.strategy.getPage();this.totalPages=this.strategy.getNumberOfPages();this.counter.set('html','Page '+this.currentPage+' of '+this.totalPages);if(this.currentPage==this.totalPages){this.enableButtons(true,false);}else if(this.currentPage==1){this.enableButtons(false,true);}else{this.enableButtons(true,true);}
this.update();},enableButtons:function(prev,next){this.nextPage.setEnabled(next);this.lastPage.setEnabled(next);this.firstPage.setEnabled(prev);this.previousPage.setEnabled(prev);}});Jx.Toolbar.Container=new Class({Extends:Jx.Widget,Family:'Jx.Toolbar.Container',Binds:['update'],pluginNamespace:'ToolbarContainer',domObj:null,options:{parent:null,position:'top',autoSize:false,scroll:true,align:'left',template:"<div class='jxBarContainer'><div class='jxBarControls'></div></div>",scrollerTemplate:"<div class='jxBarScroller'><div class='jxBarWrapper'></div></div>"},classes:{domObj:'jxBarContainer',scroller:'jxBarScroller',wrapper:'jxBarWrapper',controls:'jxBarControls'},updating:false,render:function(){this.parent();if(document.id(this.options.parent)){this.domObj=document.id(this.options.parent);this.elements={'jxBarContainer':this.domObj};this.domObj.addClass('jxBarContainer');this.domObj.grab(this.controls);this.domObj.addEvent('sizeChange',this.update);}
if(!['center','right'].contains(this.options.align)&&this.options.scroll){this.processElements(this.options.scrollerTemplate,this.classes);this.domObj.grab(this.scroller,'top');}
this.domObj.addClass('jxToolbarAlign'+
this.options.align.capitalize());this.domObj.store('jxBarContainer',this);if(['top','right','bottom','left'].contains(this.options.position)){this.domObj.addClass('jxBar'+
this.options.position.capitalize());}else{this.domObj.addClass('jxBarTop');this.options.position='top';}
if(this.options.scroll&&['top','bottom'].contains(this.options.position)){this.addEvent('addTo',function(){this.domObj.getParent().addEvent('sizeChange',this.update);this.update();});this.scrollLeft=new Jx.Button({image:Jx.aPixel.src}).addTo(this.controls,'bottom');document.id(this.scrollLeft).addClass('jxBarScrollLeft');this.scrollLeft.addEvents({click:this.scroll.bind(this,'left')});this.scrollRight=new Jx.Button({image:Jx.aPixel.src}).addTo(this.controls,'bottom');document.id(this.scrollRight).addClass('jxBarScrollRight');this.scrollRight.addEvents({click:this.scroll.bind(this,'right')});}else if(this.options.scroll&&['left','right'].contains(this.options.position)){this.options.scroll=false;}else{this.options.scroll=false;}
this.addEvent('add',this.update);if(this.options.toolbars){this.add(this.options.toolbars);}},update:function(){if(this.options.scroll){if(['top','bottom'].contains(this.options.position)){var tbcSize=this.domObj.getContentBoxSize().width;var s=0;var children=this.wrapper.getChildren();if(children.length>0){children.each(function(tb){s+=tb.getMarginBoxSize().width;},this);var scrollerSize=tbcSize;if(s===0){this.scrollLeft.setEnabled(false);this.scrollRight.setEnabled(false);}else{var leftMargin=this.wrapper.getStyle('margin-left').toInt();scrollerSize-=this.controls.getMarginBoxSize().width;if(leftMargin<0){this.scrollLeft.setEnabled(true);}else{this.scrollLeft.setEnabled(false);}
if(s+leftMargin>scrollerSize){this.scrollRight.setEnabled(true);}else{this.scrollRight.setEnabled(false);}}}else{this.scrollRight.setEnabled(false);this.scrollLeft.setEnabled(false);}
this.scroller.setStyle('width',scrollerSize);this.findFirstVisible();this.updating=false;}}},findFirstVisible:function(){if(this.scroller.retrieve('buttonPointer')!==undefined&&this.scroller.retrieve('buttonPointer')!==null){return;};var children=this.wrapper.getChildren();if(children.length>0){children.each(function(toolbar){var buttons=toolbar.getChildren();if(buttons.length>1){buttons.each(function(button){var pos=button.getCoordinates(this.scroller);if(pos.left>=0&&(this.scroller.retrieve('buttonPointer')===undefined||this.scroller.retrieve('buttonPointer')===null)){this.scroller.store('buttonPointer',button);}},this);}},this);}},add:function(){Array.from(arguments).flatten().each(function(thing){if(this.options.scroll){thing.addEvent('update',this.update.bind(this));thing.addEvent('show',this.scrollIntoView.bind(this));}
if(this.wrapper){this.wrapper.adopt(thing.domObj);}else{this.domObj.adopt(thing.domObj);}
this.domObj.addClass('jxBar'+this.options.position.capitalize());},this);if(arguments.length>0){this.fireEvent('add',this);}
return this;},scroll:function(direction){if(this.updating){return;}
this.updating=true;var w,ml,currentButton=this.scroller.retrieve('buttonPointer');if(direction==='left'){var previousButton=this.scroller.retrieve('previousPointer');if(!previousButton){previousButton=this.getPreviousButton(currentButton);}
if(previousButton){w=previousButton.getMarginBoxSize().width;ml=this.wrapper.getStyle('margin-left').toInt();ml+=w;if(typeof Fx!='undefined'&&typeof Fx.Tween!='undefined'){this.wrapper.set('tween',{property:'margin-left',onComplete:this.afterTweenLeft.bind(this,previousButton)});this.wrapper.get('tween').start(ml);}else{this.wrapper.setStyle('margin-left',ml);this.afterTweenLeft(previousButton);}}else{this.update();}}else{w=currentButton.getMarginBoxSize().width;ml=this.wrapper.getStyle('margin-left').toInt();ml-=w;if(typeof Fx!=='undefined'&&typeof Fx.Tween!=='undefined'){this.wrapper.set('tween',{property:'margin-left',onComplete:this.afterTweenRight.bind(this,currentButton)});this.wrapper.get('tween').start(ml);}else{this.wrapper.setStyle('margin-left',ml);this.afterTweenRight(currentButton);}}},afterTweenRight:function(currentButton){var np=this.getNextButton(currentButton);if(!np){np=currentButton;}
this.scroller.store('buttonPointer',np);if(np!==currentButton){this.scroller.store('previousPointer',currentButton);}
this.update();},afterTweenLeft:function(previousButton){this.scroller.store('buttonPointer',previousButton);var pp=this.getPreviousButton(previousButton);if(pp!==undefined&&pp!==null){this.scroller.store('previousPointer',pp);}else{this.scroller.eliminate('previousPointer');}
this.update();},remove:function(item){if(item instanceof Jx.Widget){item.dispose();}else{document.id(item).dispose();}
this.update();},scrollIntoView:function(item){var currentButton=this.scroller.retrieve('buttonPointer');if(currentButton===undefined||currentButton===null)return;if(item.domObj!==undefined&&item.domObj!==null){item=item.domObj;while(!item.hasClass('jxToolItem')){item=item.getParent();}}
var pos=item.getCoordinates(this.scroller);var scrollerSize=this.scroller.getStyle('width').toInt();if(pos.right>0&&pos.right<=scrollerSize&&pos.left>0&&pos.left<=scrollerSize){return;};if(pos.right>scrollerSize){var diff=pos.right-scrollerSize;var ml=this.wrapper.getStyle('margin-left').toInt();var w=currentButton.getMarginBoxSize().width;var np;while(w<diff&&currentButton!==undefined&&currentButton!==null){np=this.getNextButton(currentButton);if(np){w+=np.getMarginBoxSize().width;}else{break;}
currentButton=np;}
ml-=w;if(typeof Fx!='undefined'&&typeof Fx.Tween!='undefined'){var t=this.wrapper.get('tween');if(t===undefined||t===null){this.wrapper.set('tween',{onComplete:this.afterTweenRight.bind(this,currentButton)});t=this.wrapper.get('tween');;}
this.wrapper.tween("margin-left",ml);}else{this.wrapper.setStyle('margin-left',ml);this.afterTweenRight(currentButton);}}else{var ml=this.wrapper.getStyle('margin-left').toInt();ml-=pos.left;if(typeof Fx!='undefined'&&typeof Fx.Tween!='undefined'){var t=this.wrapper.get('tween');if(t===undefined||t===null){this.wrapper.set('tween',{onComplete:this.afterTweenLeft.bind(this,item)});}
this.wrapper.tween('margin-left',ml);}else{this.wrapper.setStyle('margin-left',ml);this.afterTweenLeft(item);}}},getPreviousButton:function(currentButton){pp=currentButton.getPrevious();if(pp===undefined&&pp===null){pp=currentButton.getParent().getPrevious();if(pp){pp=pp.getLast();}}
return pp;},getNextButton:function(currentButton){np=currentButton.getNext();if(!np){np=currentButton.getParent().getNext();if(np){np=np.getFirst();}}
return np;}});Jx.Toolbar.Separator=new Class({Extends:Jx.Widget,Family:'Jx.Toolbar.Separator',render:function(){this.domObj=new Element('li',{'class':'jxToolItem'});this.domSpan=new Element('span',{'class':'jxBarSeparator'});this.domObj.appendChild(this.domSpan);}});Locale.define('ru-RU-unicode','Jx',{'widget':{busyMessage:'Обработка...'},'colorpalette':{alphaLabel:'alpha (%)'},notice:{closeTip:'закрыть это сообщение'},progressbar:{messageText:'Загрузка...',progressText:'{progress} из {total}'},field:{requiredText:'*'},file:{browseLabel:'Выбрать...'},'formatter':{'boolean':{'true':'Да','false':'Нет'},'currency':{sign:'р.'},'number':{decimalSeparator:',',thousandsSeparator:' '}},splitter:{barToolTip:'потяни, чтобы изменить размер'},panelset:{barToolTip:'потяни, чтобы изменить размер'},panel:{collapseTooltip:'Свернуть/Развернуть Панель',collapseLabel:'Свернуть',expandLabel:'Развернуть',maximizeTooltip:'Увеличить Панель',maximizeLabel:'Увеличить',restoreTooltip:'Восстановить Панель',restoreLabel:'Восстановить',closeTooltip:'Закрыть Панель',closeLabel:'Закрыть'},confirm:{affirmativeLabel:'Да',negativeLabel:'Нет'},dialog:{resizeToolTip:'Изменить размер'},message:{okButton:'Ок'},prompt:{okButton:'Ок',cancelButton:'Отмена'},upload:{buttonText:'Загрузка файла'},'plugin':{'resize':{tooltip:'Потяни, чтобы изменить, двойной щелчок для авто размера.'},'editor':{submitButton:'Сохранить',cancelButton:'Отмена'}}});Locale.define('de-DE','Date',{months:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']});Locale.define('de-DE','Jx',{'widget':{busyMessage:'Arbeite ...'},'colorpalette':{alphaLabel:'alpha (%)'},notice:{closeTip:'Notiz schließen'},progressbar:{messageText:'Lade...',progressText:'{progress} von {total}'},field:{requiredText:'*'},file:{browseLabel:'Durchsuchen...'},'formatter':{'boolean':{'true':'Ja','false':'Nein'},'currency':{sign:'€'},'number':{decimalSeparator:',',thousandsSeparator:'.'}},splitter:{barToolTip:'Ziehen Sie diese Leiste um die Größe zu verändern'},panelset:{barToolTip:'Ziehen Sie diese Leiste um die Größe zu verändern'},panel:{collapseTooltip:'Panel ein-/ausklappen',collapseLabel:'Einklappen',expandLabel:'Ausklappen',maximizeTooltip:'Panel maximieren',maximizeLabel:'maximieren',restoreTooltip:'Panel wieder herstellen',restoreLabel:'wieder herstellen',closeTooltip:'Panel schließen',closeLabel:'Schließen'},confirm:{affirmativeLabel:'Ja',negativeLabel:'Nein'},dialog:{label:'Neues Fenster'},message:{okButton:'Ok'},prompt:{okButton:'Ok',cancelButton:'Abbrechen'},upload:{buttonText:'Dateien hochladen'},'plugin':{'resize':{tooltip:'Klicken um Größe zu verändern. Doppelklick für automatische Anpassung.'},'editor':{submitButton:'Speichern',cancelButton:'Abbrechen'}}});Locale.define('es-ES','Jx',{'widget':{busyMessage:'Procesando ...'},'colorpalette':{alphaLabel:'alpha (%)'},notice:{closeTip:'Cierre esta notificación'},progressbar:{messageText:'Cargando...',progressText:'{progress} de {total}'},field:{requiredText:'*'},file:{browseLabel:'Navegar...'},'formatter':{'boolean':{'true':'Si','false':'No'},'currency':{sign:'€'},'number':{decimalSeparator:',',thousandsSeparator:'.'}},splitter:{barToolTip:'Arrastre esta barra para redimensionar'},panelset:{barToolTip:'Arrastre esta barra para redimensionar'},panel:{collapseTooltip:'Colapsar/Expandir el Panel',collapseLabel:'Colapsar',expandLabel:'Expandir',maximizeTooltip:'Maximizar Panel',maximizeLabel:'Maximizar',restoreTooltip:'Restaurar Panel',restoreLabel:'Restaurar',closeTooltip:'Cerrar Panel',closeLabel:'Cerrar'},confirm:{affirmativeLabel:'Si',negativeLabel:'No'},dialog:{resizeToolTip:'Redimensionar Dialogo'},message:{okButton:'Ok'},prompt:{okButton:'Ok',cancelButton:'Cancelar'},upload:{buttonText:'Subir Archivos'},'plugin':{'resize':{tooltip:'Arrastre para redimensionar, Doble click para ajustar.'},'editor':{submitButton:'Guardar',cancelButton:'Cancelar'}}});Jx.Menu=new Class({Extends:Jx.Widget,Family:'Jx.Menu',button:null,subDomObj:null,list:null,parameters:['buttonOptions','options'],options:{exposeOnHover:false,hideDelay:0,template:"<div class='jxMenuContainer'><ul class='jxMenu'></ul></div>",buttonTemplate:'<span class="jxButtonContainer"><a class="jxButton jxButtonMenu jxDiscloser"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel"></span></span></a></span>',position:{horizontal:['left left'],vertical:['bottom top','top bottom']}},classes:{contentContainer:'jxMenuContainer',subDomObj:'jxMenu'},init:function(){this.bound.stop=function(e){e.stop();};this.bound.remove=function(item){if(item.setOwner)item.setOwner(null);};this.bound.show=this.show.bind(this);this.bound.mouseenter=this.onMouseEnter.bind(this);this.bound.mouseleave=this.onMouseLeave.bind(this);this.bound.keypress=this.keypressHandler.bind(this);this.bound.hide=this.hide.bind(this);this.parent();},render:function(){this.parent();if(!Jx.Menu.Menus){Jx.Menu.Menus=[];}
this.contentClone=this.contentContainer.clone();this.list=new Jx.List(this.subDomObj,{onRemove:this.bound.remove});if(this.options.buttonOptions){this.button=new Jx.Button(Object.merge({},this.options.buttonOptions,{template:this.options.buttonTemplate,onClick:this.bound.show}));this.button.domA.addEvent('mouseenter',this.bound.mouseenter);this.button.domA.addEvent('mouseleave',this.bound.mouseleave);this.domObj=this.button.domObj;this.domObj.store('jxMenu',this);}
this.subDomObj.addEvent('mouseenter',this.bound.mouseenter);this.subDomObj.addEvent('mouseleave',this.bound.mouseleave);this.subDomObj.store('jxSubMenu',this);if(this.options.parent){this.addTo(this.options.parent);}},cleanup:function(){if(this.hideTimer){window.clearTimeout(this.hideTimer);}
this.list.removeEvent('remove',this.bound.remove);this.list.destroy();this.list=null;if(this.button){this.domObj.eliminate('jxMenu');this.domObj=null;this.button.removeEvent('click',this.bound.show);this.button.domA.removeEvents({mouseenter:this.bound.mouseenter,mouseleave:this.bound.mouseleave});this.button.destroy();this.button=null;}
this.subDomObj.removeEvents({mouseenter:this.bound.mouseenter,mouseleave:this.bound.mouseleave});this.subDomObj.removeEvents();this.contentContainer.removeEvent('contextmenu',this.bound.stop);this.subDomObj.destroy();this.contentContainer.destroy();this.contentClone.destroy();this.bound.remove=null;this.bound.show=null;this.bound.stop=null;this.bound.mouseenter=null;this.bound.mouseleave=null;this.bound.keypress=null;this.bound.hide=null;this.parent();},add:function(item,position,owner){if(Jx.type(item)=='array'){item.each(function(i){if(i.setOwner){i.setOwner(owner||this);}},this);}else{if(item.setOwner){item.setOwner(owner||this);}}
this.list.add(item,position);return this;},remove:function(item){this.list.remove(item);return this;},replace:function(item,withItem){this.list.replace(item,withItem);return this;},empty:function(){this.list.each(function(item){if(item.empty){item.empty();}
if(item.setOwner){item.setOwner(null);}},this);this.list.empty();},deactivate:function(){this.hide();},onMouseEnter:function(e){if(this.hideTimer){window.clearTimeout(this.hideTimer);this.hideTimer=null;}
if(Jx.Menu.Menus[0]&&Jx.Menu.Menus[0]!=this){this.show.delay(1,this);}else if(this.options.exposeOnHover){if(Jx.Menu.Menus[0]&&Jx.Menu.Menus[0]==this){Jx.Menu.Menus[0]=null;}
this.show.delay(1,this);}},onMouseLeave:function(e){if(this.options.hideDelay>0){this.hideTimer=(function(){this.deactivate();}).delay(this.options.hideDelay,this);}},eventInMenu:function(e){var target=document.id(e.target);if(!target){return false;}
if(target.descendantOf(this.domObj)||target.descendantOf(this.subDomObj)){return true;}else{var ul=target.getParent('ul');if(ul){var sm=ul.retrieve('jxSubMenu');if(sm){if(sm.eventInMenu(e)){return true;}
var owner=sm.owner;while(owner){if(owner==this){return true;}
owner=owner.owner;}}}
return false;}},hide:function(e){if(e){if(this.visibleItem&&this.visibleItem.eventInMenu){if(this.visibleItem.eventInMenu(e)){return;}}else if(this.eventInMenu(e)){return;}}
if(Jx.Menu.Menus[0]&&Jx.Menu.Menus[0]==this){Jx.Menu.Menus[0]=null;}
if(this.button&&this.button.domA){this.button.domA.removeClass(this.button.options.activeClass);}
if(this.hideTimer){window.clearTimeout(this.hideTimer);}
this.list.each(function(item){item.retrieve('jxMenuItem').hide(e);});document.removeEvent('mousedown',this.bound.hide);document.removeEvent('keydown',this.bound.keypress);this.unstack(this.contentContainer);this.contentContainer.dispose();this.visibleItem=null;this.fireEvent('hide',this);},show:function(){if(this.button){if(Jx.Menu.Menus[0]){if(Jx.Menu.Menus[0]!=this){Jx.Menu.Menus[0].button.blur();Jx.Menu.Menus[0].hide();}else{this.hide();return;}}
Jx.Menu.Menus[0]=this;this.button.focus();if(this.list.count()==0){return;}}
if(this.hideTimer){window.clearTimeout(this.hideTimer);}
this.subDomObj.dispose();this.contentContainer.destroy();this.contentContainer=this.contentClone.clone();this.contentContainer.empty().adopt(this.subDomObj);this.contentContainer.addEvent('contextmenu',this.bound.stop);this.contentContainer.setStyle('display','none');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setStyles({visibility:'hidden',display:'block'});this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,this.domObj,Object.merge({},{offsets:this.chromeOffsets},this.options.position));this.stack(this.contentContainer);this.contentContainer.setStyle('visibility','visible');if(this.button&&this.button.domA){this.button.domA.addClass(this.button.options.activeClass);}
document.addEvent('mousedown',this.bound.hide);document.addEvent('keydown',this.bound.keypress);this.fireEvent('show',this);},setVisibleItem:function(obj){if(this.hideTimer){window.clearTimeout(this.hideTimer);}
if(this.visibleItem!=obj){if(this.visibleItem&&this.visibleItem.hide){this.visibleItem.hide();}
this.visibleItem=obj;this.visibleItem.show();}},keypressHandler:function(e){e=new Event(e);if(e.key=='esc'){this.hide();}},isEnabled:function(){return this.button?this.button.isEnabled():this.options.enabled;},setEnabled:function(enabled){return this.button?this.button.setEnabled(enabled):this.options.enable;},isActive:function(){return this.button?this.button.isActive():this.options.active;},setActive:function(active){if(this.button){this.button.setActive(active);}},setImage:function(path){if(this.button){this.button.setImage(path);}},setLabel:function(label){if(this.button){this.button.setLabel(label);}},getLabel:function(){return this.button?this.button.getLabel():'';},setTooltip:function(tooltip){if(this.button){this.button.setTooltip(tooltip);}},focus:function(){if(this.button){this.button.focus();}},blur:function(){if(this.button){this.button.blur();}}});Jx.Menu.Item=new Class({Extends:Jx.Button,Family:'Jx.Menu.Item',owner:null,options:{label:'&nbsp;',toggleClass:'jxMenuItemToggle',pressedClass:'jxMenuItemPressed',activeClass:'jxMenuItemActive',template:'<li class="jxMenuItemContainer"><a class="jxMenuItem"><span class="jxMenuItemContent"><img class="jxMenuItemIcon" src="'+Jx.aPixel.src+'"><span class="jxMenuItemLabel"></span></span></a></li>'},classes:{domObj:'jxMenuItemContainer',domA:'jxMenuItem',domImg:'jxMenuItemIcon',domLabel:'jxMenuItemLabel'},init:function(){this.bound.mouseover=this.onMouseOver.bind(this);this.parent();},render:function(){if(!this.options.image){this.options.image=Jx.aPixel.src;}
this.parent();if(this.options.image&&this.options.image!=Jx.aPixel.src){this.domObj.removeClass(this.options.toggleClass);}
if(this.options.target){this.domA.set('target',this.options.target);}
this.domObj.addEvent('mouseover',this.bound.mouseover);this.domObj.store('jxMenuItem',this);},cleanup:function(){this.domObj.eliminate('jxMenuItem');this.domObj.removeEvent('mouseover',this.bound.mouseover);this.bound.mouseover=null;this.owner=null;this.parent();},setOwner:function(obj){this.owner=obj;},hide:function(){this.blur.delay(1,this);},show:function(){},clicked:function(obj){var href=this.options.href&&this.options.href.indexOf('javascript:')!=0;if(this.options.enabled){if(!href){if(this.options.toggle){this.setActive.delay(1,this,!this.options.active);}
this.fireEvent.delay(1,this,['click',{obj:this}]);this.blur();}
if(this.owner&&this.owner.deactivate){this.owner.deactivate.delay(1,this.owner,obj.event);}}
return href?true:false;},onMouseOver:function(e){e.stop();if(this.owner&&this.owner.setVisibleItem){this.owner.setVisibleItem(this);}
return false;},changeText:function(lang){this.parent();if(this.owner&&this.owner.deactivate){this.owner.deactivate();}}});Jx.Panel=new Class({Extends:Jx.Widget,Family:'Jx.Panel',toolbarContainers:{top:null,right:null,bottom:null,left:null},options:{position:null,collapsedClass:'jxPanelMin',collapseClass:'jxPanelCollapse',menuClass:'jxPanelMenu',maximizeClass:'jxPanelMaximize',closeClass:'jxPanelClose',label:'&nbsp;',height:null,collapse:true,close:false,closed:false,hideTitle:false,toolbars:[],type:'panel',template:'<div class="jxPanel"><div class="jxPanelTitle"><img class="jxPanelIcon" src="'+Jx.aPixel.src+'" alt="" title=""/><span class="jxPanelLabel"></span><div class="jxPanelControls"></div></div><div class="jxPanelContentContainer"><div class="jxPanelContent"></div></div></div>',controlButtonTemplate:'<a class="jxButtonContainer jxButton"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>'},classes:{domObj:'jxPanel',title:'jxPanelTitle',domImg:'jxPanelIcon',domLabel:'jxPanelLabel',domControls:'jxPanelControls',contentContainer:'jxPanelContentContainer',content:'jxPanelContent'},pluginNamespace:'Panel',render:function(){this.parent();this.toolbars=this.options?this.options.toolbars||[]:[];this.options.position=(this.options.height!=undefined&&this.options.height!=null&&(this.options.position===undefined||this.options.position==null))?'relative':'absolute';if(this.options.image&&this.domImg){this.domImg.setStyle('backgroundImage','url('+this.options.image+')');}
if(this.options.label&&this.domLabel){this.setLabel(this.options.label);}
var tbDiv=new Element('div');this.domControls.adopt(tbDiv);this.toolbar=new Jx.Toolbar({parent:tbDiv,scroll:false});var that=this;if(this.options.menu){this.menu=new Jx.Menu({image:Jx.aPixel.src},{buttonTemplate:this.options.controlButtonTemplate});this.menu.domObj.addClass(this.options.menuClass);this.menu.domObj.addClass('jxButtonContentLeft');this.toolbar.add(this.menu);}
if(this.options.collapse){if(this.title){this.title.addEvent('dblclick',function(){that.toggleCollapse();});}
this.colB=new Jx.Button({template:this.options.controlButtonTemplate,image:Jx.aPixel.src,tooltip:{set:'Jx',key:'panel',value:'collapseTooltip'},onClick:function(){that.toggleCollapse();}});this.colB.domObj.addClass(this.options.collapseClass);this.addEvents({collapse:function(){this.colB.setTooltip({set:'Jx',key:'panel',value:'expandTooltip'});}.bind(this),expand:function(){this.colB.setTooltip({set:'Jx',key:'panel',value:'collapseTooltip'});}.bind(this)});this.toolbar.add(this.colB);if(this.menu){this.colM=new Jx.Menu.Item({label:this.options.collapseLabel,onClick:function(){that.toggleCollapse();}});var item=this.colM
this.addEvents({collapse:function(){this.colM.setLabel({set:'Jx',key:'panel',value:'expandLabel'});}.bind(this),expand:function(){this.colM.setLabel({set:'Jx',key:'panel',value:'collapseLabel'});}.bind(this)});this.menu.add(item);}}
if(this.options.maximize){this.maxB=new Jx.Button({template:this.options.controlButtonTemplate,image:Jx.aPixel.src,tooltip:{set:'Jx',key:'panel',value:'maximizeTooltip'},onClick:function(){that.maximize();}});this.maxB.domObj.addClass(this.options.maximizeClass);this.addEvents({maximize:function(){this.maxB.setTooltip({set:'Jx',key:'panel',value:'restoreTooltip'});}.bind(this),restore:function(){this.maxB.setTooltip({set:'Jx',key:'panel',value:'maximizeTooltip'});}.bind(this)});this.toolbar.add(this.maxB);if(this.menu){this.maxM=new Jx.Menu.Item({label:this.options.maximizeLabel,onClick:function(){that.maximize();}});this.addEvents({maximize:function(){this.maxM.setLabel({set:'Jx',key:'panel',value:'maximizeLabel'});}.bind(this),restore:function(){this.maxM.setLabel({set:'Jx',key:'panel',value:'restoreLabel'});}.bind(this)});this.menu.add(this.maxM);}}
if(this.options.close){this.closeB=new Jx.Button({template:this.options.controlButtonTemplate,image:Jx.aPixel.src,tooltip:{set:'Jx',key:'panel',value:'closeTooltip'},onClick:function(){that.close();}});this.closeB.domObj.addClass(this.options.closeClass);this.toolbar.add(this.closeB);if(this.menu){this.closeM=new Jx.Menu.Item({label:{set:'Jx',key:'panel',value:'closeLabel'},onClick:function(){that.close();}});this.menu.add(item);}}
if(this.options.id){this.domObj.id=this.options.id;}
var jxl=new Jx.Layout(this.domObj,Object.merge({},this.options,{propagate:false}));var layoutHandler=this.layoutContent.bind(this);jxl.addEvent('sizeChange',layoutHandler);if(this.options.hideTitle){this.title.dispose();}
if(Jx.type(this.options.toolbars)=='array'){this.options.toolbars.each(function(tb){var position=tb.options.position;var tbc=this.toolbarContainers[position];if(!tbc){tbc=new Element('div');new Jx.Layout(tbc);this.contentContainer.adopt(tbc);this.toolbarContainers[position]=tbc;}
tb.addTo(tbc);},this);}
new Jx.Layout(this.contentContainer);new Jx.Layout(this.content);if(this.shouldLoadContent()){this.loadContent(this.content);}
this.toggleCollapse(this.options.closed);this.addEvent('addTo',function(){this.domObj.resize();});if(this.options.parent){this.addTo(this.options.parent);}},layoutContent:function(){var titleHeight=0;var top=0;var bottom=0;var left=0;var right=0;var tbc;var tb;var position;if(!this.options.hideTitle&&this.title.parentNode==this.domObj){titleHeight=this.title.getMarginBoxSize().height;}
var domSize=this.domObj.getContentBoxSize();if(domSize.height>titleHeight){this.contentContainer.setStyle('display','block');this.options.closed=false;this.contentContainer.resize({top:titleHeight,height:null,bottom:0});['left','right'].each(function(position){if(this.toolbarContainers[position]){this.toolbarContainers[position].style.width='auto';}},this);['top','bottom'].each(function(position){if(this.toolbarContainers[position]){this.toolbarContainers[position].style.height='';}},this);if(Jx.type(this.options.toolbars)=='array'){this.options.toolbars.each(function(tb){tb.update();position=tb.options.position;tbc=this.toolbarContainers[position];if(Browser.ie&&Browser.ie4){var oldParent=document.id(tbc.parentNode);tbc.style.visibility='hidden';document.id(document.body).adopt(tbc);}
var size=tbc.getBorderBoxSize();if(Browser.ie&&Browser.ie4){oldParent.adopt(tbc);tbc.style.visibility='';}
switch(position){case'bottom':bottom=size.height;break;case'left':left=size.width;break;case'right':right=size.width;break;case'top':default:top=size.height;break;}},this);}
tbc=this.toolbarContainers['top'];if(tbc){tbc.resize({top:0,left:left,right:right,bottom:null,height:top,width:null});}
tbc=this.toolbarContainers['bottom'];if(tbc){tbc.resize({top:null,left:left,right:right,bottom:0,height:bottom,width:null});}
tbc=this.toolbarContainers['left'];if(tbc){tbc.resize({top:top,left:0,right:null,bottom:bottom,height:null,width:left});}
tbc=this.toolbarContainers['right'];if(tbc){tbc.resize({top:top,left:null,right:0,bottom:bottom,height:null,width:right});}
this.content.resize({top:top,bottom:bottom,left:left,right:right});}else{this.contentContainer.setStyle('display','none');this.options.closed=true;}
this.fireEvent('sizeChange',this);},setLabel:function(s){this.domLabel.set('html',this.getText(s));},getLabel:function(){return this.domLabel.get('html');},finalize:function(){this.domObj=null;this.deregisterIds();},maximize:function(){if(this.manager){this.manager.maximizePanel(this);}},setContent:function(html){this.content.innerHTML=html;this.bContentReady=true;},setContentURL:function(url){this.bContentReady=false;this.setBusy(true);if(arguments[1]){this.onContentReady=arguments[1];}
if(url.indexOf('?')==-1){url=url+'?';}
var a=new Request({url:url,method:'get',evalScripts:true,onSuccess:this.panelContentLoaded.bind(this),requestHeaders:['If-Modified-Since','Sat, 1 Jan 2000 00:00:00 GMT']}).send();},panelContentLoaded:function(html){this.content.innerHTML=html;this.bContentReady=true;this.setBusy(false);if(this.onContentReady){window.setTimeout(this.onContentReady.bind(this),1);}},toggleCollapse:function(state){if(state!=undefined&&state!=null){this.options.closed=state;}else{this.options.closed=!this.options.closed;}
if(this.options.closed){if(!this.domObj.hasClass(this.options.collapsedClass)){this.domObj.addClass(this.options.collapsedClass);this.contentContainer.setStyle('display','none');var m=this.domObj.measure(function(){return this.getSizes(['margin'],['top','bottom']).margin;});var height=m.top+m.bottom;if(this.title.parentNode==this.domObj){height+=this.title.getMarginBoxSize().height;}
this.domObj.resize({height:height});this.fireEvent('collapse',this);}}else{if(this.domObj.hasClass(this.options.collapsedClass)){this.domObj.removeClass(this.options.collapsedClass);this.contentContainer.setStyle('display','block');this.domObj.resize({height:this.options.height});this.fireEvent('expand',this);}}},close:function(){this.domObj.dispose();this.fireEvent('close',this);},changeText:function(lang){this.parent();if(this.closeB!=undefined&&this.closeB!=null){this.closeB.setTooltip({set:'Jx',key:'panel',value:'closeTooltip'});}
if(this.closeM!=undefined&&this.closeM!=null){this.closeM.setLabel({set:'Jx',key:'panel',value:'closeLabel'});}
if(this.maxB!=undefined&&this.maxB!=null){this.maxB.setTooltip({set:'Jx',key:'panel',value:'maximizeTooltip'});}
if(this.colB!=undefined&&this.colB!=null){this.colB.setTooltip({set:'Jx',key:'panel',value:'collapseTooltip'});}
if(this.colM!=undefined&&this.colM!=null){if(this.options.closed==true){this.colM.setLabel({set:'Jx',key:'panel',value:'expandLabel'});}else{this.colM.setLabel({set:'Jx',key:'panel',value:'collapseLabel'});}}
if(this.options.label&&this.domLabel){this.setLabel(this.options.label);}
this.layoutContent();},shouldLoadContent:function(){return true;}});Jx.Dialog=new Class({Extends:Jx.Panel,Family:'Jx.Dialog',options:{modal:true,maskOptions:{'class':'jxModalMask',maskMargins:true,useIframeShim:true,iframeShimOptions:{className:'jxIframeShim'}},eventMaskOptions:{'class':'jxEventMask',maskMargins:false,useIframeShim:false,destroyOnHide:true},position:'absolute',width:250,height:250,horizontal:'center center',vertical:'center center',label:'',resize:false,move:true,limit:false,close:true,destroyOnClose:false,useKeyboard:false,keys:{'esc':'close'},keyboardMethods:{},collapsedClass:'jxDialogMin',collapseClass:'jxDialogCollapse',menuClass:'jxDialogMenu',maximizeClass:'jxDialogMaximize',closeClass:'jxDialogClose',type:'dialog',template:'<div class="jxDialog"><div class="jxDialogTitle"><img class="jxDialogIcon" src="'+Jx.aPixel.src+'" alt="" title=""/><span class="jxDialogLabel"></span><div class="jxDialogControls"></div></div><div class="jxDialogContentContainer"><div class="jxDialogContent"></div></div></div>'},classes:{domObj:'jxDialog',title:'jxDialogTitle',domImg:'jxDialogIcon',domLabel:'jxDialogLabel',domControls:'jxDialogControls',contentContainer:'jxDialogContentContainer',content:'jxDialogContent'},keyboard:null,render:function(){this.isOpening=false;this.firstShow=true;this.options=Object.merge({},{parent:document.body},this.options,{position:'absolute'});this.parent();this.openOnLoaded=this.open.bind(this);this.options.parent=document.id(this.options.parent);this.domObj.setStyle('display','none');this.options.parent.adopt(this.domObj);if(this.options.move&&typeof Drag!='undefined'){this.title.addClass('jxDialogMoveable');this.options.limit=this.setDragLimit(this.options.limit);var self=this;new Drag(this.domObj,{handle:this.title,limit:this.options.limit,onBeforeStart:(function(){this.stack();}).bind(this),onStart:function(){if(!self.options.modal&&self.options.parent.mask){self.options.parent.mask(self.options.eventMaskOptions);}
self.contentContainer.setStyle('visibility','hidden');self.chrome.addClass('jxChromeDrag');if(self.options.limit){var coords=self.options.limitOrig.getCoordinates();for(var i in coords){window.console?console.log(i,coords[i]):false;}
this.options.limit=self.setDragLimit(self.options.limitOrig);}},onDrag:function(){if(this.options.limit){if(this.value.now.x+self.options.width>=this.options.limit.x[1]){this.value.now.x=this.options.limit.x[1]-self.options.width;this.element.setStyle('left',this.value.now.x);}
if(this.value.now.y+self.options.height>=this.options.limit.y[1]){this.value.now.y=this.options.limit.y[1]-self.options.height;this.element.setStyle('top',this.value.now.y);}}},onComplete:(function(){if(!this.options.modal&&this.options.parent.unmask){this.options.parent.unmask();}
this.chrome.removeClass('jxChromeDrag');this.contentContainer.setStyle('visibility','');var left=Math.max(this.chromeOffsets.left,parseInt(this.domObj.style.left,10));var top=Math.max(this.chromeOffsets.top,parseInt(this.domObj.style.top,10));this.options.horizontal=left+' left';this.options.vertical=top+' top';this.position(this.domObj,this.options.parent,this.options);this.options.left=parseInt(this.domObj.style.left,10);this.options.top=parseInt(this.domObj.style.top,10);if(!this.options.closed){this.domObj.resize(this.options);}}).bind(this)});}
if(this.options.resize&&typeof Drag!='undefined'){this.resizeHandle=new Element('div',{'class':'jxDialogResize',title:this.getText({set:'Jx',key:'panel',value:'resizeTooltip'}),styles:{'display':this.options.closed?'none':'block'}});this.domObj.appendChild(this.resizeHandle);this.resizeHandleSize=this.resizeHandle.getSize();this.resizeHandle.setStyles({bottom:this.resizeHandleSize.height,right:this.resizeHandleSize.width});this.domObj.makeResizable({handle:this.resizeHandle,onStart:(function(){if(!this.options.modal&&this.options.parent.mask){this.options.parent.mask(this.options.eventMaskOptions);}
this.contentContainer.setStyle('visibility','hidden');this.chrome.addClass('jxChromeDrag');}).bind(this),onDrag:(function(){this.resizeChrome(this.domObj);}).bind(this),onComplete:(function(){if(!this.options.modal&&this.options.parent.unmask){this.options.parent.unmask();}
this.chrome.removeClass('jxChromeDrag');var size=this.domObj.getMarginBoxSize();this.options.width=size.width;this.options.height=size.height;this.layoutContent();this.domObj.resize(this.options);this.contentContainer.setStyle('visibility','');this.fireEvent('resize');this.resizeChrome(this.domObj);}).bind(this)});}
this.domObj.addEvent('mousedown',(function(){this.stack();}).bind(this));this.initializeKeyboard();},resize:function(width,height,autoPosition){this.options.width=width;this.options.height=height;if(this.domObj.getStyle('display')!='none'){this.layoutContent();this.domObj.resize(this.options);this.fireEvent('resize');this.resizeChrome(this.domObj);if(autoPosition){this.position(this.domObj,this.options.parent,this.options);}}else{this.firstShow=false;}},sizeChanged:function(){if(!this.options.closed){this.layoutContent();}},toggleCollapse:function(state){if(state!=undefined&&state!=null){this.options.closed=state;}else{this.options.closed=!this.options.closed;}
if(this.options.closed){if(!this.domObj.hasClass(this.options.collapsedClass)){this.domObj.addClass(this.options.collapsedClass);}
this.contentContainer.setStyle('display','none');if(this.resizeHandle){this.resizeHandle.setStyle('display','none');}}else{if(this.domObj.hasClass(this.options.collapsedClass)){this.domObj.removeClass(this.options.collapsedClass);}
this.contentContainer.setStyle('display','block');if(this.resizeHandle){this.resizeHandle.setStyle('display','block');}}
if(this.options.closed){var m=this.domObj.measure(function(){return this.getSizes(['margin'],['top','bottom']).margin;});var size=this.title.getMarginBoxSize();this.domObj.resize({height:m.top+size.height+m.bottom});this.fireEvent('collapse');}else{this.domObj.resize(this.options);this.fireEvent('expand');}
this.showChrome(this.domObj);},maximize:function(){if(!this.maximized){var p=this.options.parent;var size;if(p===document.body){size=Jx.getPageDimensions();}else{size=p.getBorderBoxSize();}
this.previousSettings={width:this.options.width,height:this.options.height,horizontal:this.options.horizontal,vertical:this.options.vertical,left:this.options.left,right:this.options.right,top:this.options.top,bottom:this.options.bottom};this.options.width=size.width;this.options.height=size.height;this.options.vertical='0 top';this.options.horizontal='0 left';this.options.right=0;this.options.left=0;this.options.top=0;this.options.bottom=0;this.domObj.resize(this.options);this.fireEvent('resize');this.resizeChrome(this.domObj);this.maximized=true;this.domObj.addClass('jxDialogMaximized');this.fireEvent('maximize');}else{this.options=Object.merge({},this.options,this.previousSettings);this.domObj.resize(this.options);this.fireEvent('resize');this.resizeChrome(this.domObj);this.maximized=false;if(this.domObj.hasClass('jxDialogMaximized')){this.domObj.removeClass('jxDialogMaximized');}
this.fireEvent('restore');}},show:function(){this.domObj.setStyles({'display':'block','visibility':'hidden'});this.toolbar.update();if(this.options.modal&&this.options.parent.mask){var opts=Object.merge({},this.options.maskOptions||{},{style:{'z-index':Jx.getNumber(this.domObj.getStyle('z-index'))-1}});this.options.parent.mask(opts);Jx.Stack.stack(this.options.parent.get('mask').element);}
this.stack();if(this.options.closed){var m=this.domObj.measure(function(){return this.getSizes(['margin'],['top','bottom']).margin;});var size=this.title.getMarginBoxSize();this.domObj.resize({height:m.top+size.height+m.bottom});}else{this.domObj.resize(this.options);}
if(this.firstShow){this.contentContainer.resize({forceResize:true});this.layoutContent();this.firstShow=false;if(this.chrome){this.chrome.dispose();this.chrome=null;}}
this.showChrome(this.domObj);this.position(this.domObj,this.options.parent,this.options);this.domObj.setStyle('visibility','visible');},hide:function(){this.domObj.setStyle('display','none');this.unstack();if(this.options.modal&&this.options.parent.unmask){Jx.Stack.unstack(this.options.parent.get('mask').element);this.options.parent.unmask();}
if(this.options.useKeyboard&&this.keyboard!=null){this.keyboard.deactivate();}},openURL:function(url){if(url){this.options.contentURL=url;this.options.content=null;this.setBusy();this.loadContent(this.content);this.addEvent('contentLoaded',this.openOnLoaded);}else{this.open();}},open:function(){if(!this.isOpening){this.isOpening=true;}
if(!this.contentIsLoaded&&this.options.loadOnDemand){this.loadContent(this.content);}
if(this.contentIsLoaded){this.removeEvent('contentLoaded',this.openOnLoaded);this.show();this.fireEvent('open',this);this.isOpening=false;}else{this.addEvent('contentLoaded',this.openOnLoaded);}
if(this.options.useKeyboard&&this.keyboard!=null){this.keyboard.activate();}},close:function(){this.isOpening=false;this.hide();if(this.options.destroyOnClose){this.domObj.dispose();}
this.fireEvent('close',[this]);},cleanup:function(){},isOpen:function(){return!((this.domObj.getStyle('display')==='none')||(this.domObj.getStyle('visibility')==='hidden'));},changeText:function(lang){this.parent();if(this.maxM!=undefined&&this.maxM!=null){if(this.maximize){this.maxM.setLabel(this.getText({set:'Jx',key:'panel',value:'restoreLabel'}));}else{this.maxM.setLabel(this.getText({set:'Jx',key:'panel',value:'maximizeLabel'}));}}
if(this.resizeHandle!=undefined&&this.resizeHandle!=null){this.resizeHandle.set('title',this.getText({set:'Jx',key:'dialog',value:'resizeTooltip'}));}
this.toggleCollapse(false);},initializeKeyboard:function(){if(this.options.useKeyboard){var self=this;this.keyboardEvents={};this.keyboardMethods={close:function(ev){ev.preventDefault();self.close()}}
this.keyboard=new Keyboard({events:this.getKeyboardEvents()});}},getKeyboardEvents:function(){var self=this;for(var i in this.options.keys){if(this.keyboardEvents[i]===undefined||this.keyboardEvents[i]===null){if(this.keyboardMethods[this.options.keys[i]]!==undefined&&this.keyboardMethods[this.options.keys[i]]!==null){this.keyboardEvents[i]=this.keyboardMethods[this.options.keys[i]];}else if(this.options.keyboardMethods[this.options.keys[i]]!==undefined&&this.options.keyboardMethods[this.options.keys[i]]!==null){this.keyboardEvents[i]=this.options.keyboardMethods[this.options.keys[i]].bind(self);}else if(Jx.type(this.options.keys[i])=='function'){this.keyboardEvents[i]=this.options.keys[i].bind(self);}else{if(this.options.keyboardMethods[this.options.keys[i]]!=false){console!=undefined?console.warn("keyboard method %o not defined for %o",this.options.keys[i],this):false;}}}}
return this.keyboardEvents;},setDragLimit:function(reference){if(reference!==undefined&&reference!==null)this.options.limit=reference;var limitType=this.options.limit!=null?Jx.type(this.options.limit):false;if(this.options.limit&&limitType!='object'){var coords=false;switch(limitType){case'string':if(document.id(this.options.limit)){coords=document.id(this.options.limit).getCoordinates();}
break;case'element':case'document':case'window':coords=this.options.limit.getCoordinates();break;}
if(coords){this.options.limitOrig=this.options.limit;this.options.limit={x:[coords.left,coords.right],y:[coords.top,coords.bottom]}}else{this.options.limit=false;}}
return this.options.limit;},shouldLoadContent:function(){return!this.options.loadOnDemand;}});Jx.Fieldset=new Class({Extends:Jx.Widget,Family:'Jx.Fieldset',options:{legend:null,id:null,fieldsetClass:null,legendClass:null,template:'<fieldset class="jxFieldset"><legend><span class="jxFieldsetLegend"></span></legend></fieldset>',form:null},classes:{domObj:'jxFieldset',legend:'jxFieldsetLegend'},legend:null,render:function(){this.parent();this.id=this.options.id;if(this.options.form!==undefined&&this.options.form!==null&&this.options.form instanceof Jx.Form){this.form=this.options.form;}
if(this.domObj){if(this.options.id!==undefined&&this.options.id!==null){this.domObj.set('id',this.options.id);}
if(this.options.fieldsetClass!==undefined&&this.options.fieldsetClass!==null){this.domObj.addClass(this.options.fieldsetClass);}}
if(this.legend){if(this.options.legend!==undefined&&this.options.legend!==null){this.legend.set('html',this.getText(this.options.legend));if(this.options.legendClass!==undefined&&this.options.legendClass!==null){this.legend.addClass(this.options.legendClass);}}else{this.legend.destroy();}}},add:function(){var field;for(var x=0;x<arguments.length;x++){field=arguments[x];if(field instanceof Jx.Field&&(field.form===undefined||field.form===null)&&this.form!==undefined&&this.form!==null){field.form=this.form;this.form.addField(field);}
this.domObj.grab(field);}
return this;},addTo:function(what){if(what instanceof Jx.Form){this.form=what;this.form.add(this);}else if(what instanceof Jx.Fieldset){this.form=what.form;what.add(this);}else{this.parent(what);}
return this;}});Jx.Form=new Class({Extends:Jx.Widget,Family:'Jx.Form',options:{method:'post',action:'',fileUpload:false,formClass:null,name:'',acceptCharset:'utf-8',uploadFilesFirst:false,template:'<form class="jxForm"></form>'},defaultAction:null,fields:null,pluginNamespace:'Form',classes:{domObj:'jxForm'},init:function(){this.parent();this.fields={};this.data={};},render:function(){this.parent();this.domObj.set({'method':this.options.method,'action':this.options.action,'name':this.options.name,'accept-charset':this.options.acceptCharset,events:{keypress:function(e){if(e.key=='enter'&&e.target.tagName!="TEXTAREA"&&this.defaultAction&&this.defaultAction.click){document.id(this.defaultAction).focus();this.defaultAction.click();e.stop();}}.bind(this)}});if(this.options.fileUpload){this.domObj.set('enctype','multipart/form-data');}
if(this.options.formClass!==undefined&&this.options.formClass!==null){this.domObj.addClass(this.options.formClass);}},addField:function(field){this.fields[field.id]=field;if(field.options.defaultAction){this.defaultAction=field;}
this.fireEvent('fieldAdded',[field,this]);},isValid:function(evt){return true;},getValues:function(asQueryString){var queryString=this.domObj.toQueryString();if(asQueryString!==undefined&&asQueryString!==null&&asQueryString){return queryString;}else{return queryString.parseQueryString();}},setValues:function(values){Object.each(this.fields,function(item){item.setValue(values[item.name]);},this);},add:function(){var field;for(var x=0;x<arguments.length;x++){field=arguments[x];if(field instanceof Jx.Field&&(field.form===undefined||field.form===null)){field.form=this;this.addField(field);}else if(field instanceof Jx.Fieldset&&(field.form===undefined||field.form===null)){field.form=this;}
this.domObj.grab(field);}
return this;},reset:function(){Object.each(this.fields,function(field,name){field.reset();},this);this.fireEvent('reset',this);},getFieldsByName:function(name){var fields=[];Object.each(this.fields,function(val,id){if(val.name===name){fields.push(val);}},this);return fields;},getField:function(id){if(Object.keys(this.fields).contains(id)){return this.fields[id];}
return null;},setBusy:function(state){if(this.busy==state){return;}
this.parent(state);Object.each(this.fields,function(field){field.setBusy(state,true);});},submit:function(){var opts=this.options;if(opts.fileUpload){var files=this.findFiles();files.each(function(file){var inputs=file.getFileInputs();if(inputs.length>1){inputs.each(function(input){input.set('name',input.get('name')+'[]');},this);}
file.destroy();this.domObj.adopt(inputs);},this);}
this.domObj.submit();},ajaxSubmit:function(){var opts=this.options;if(opts.fileUpload){var files=this.findFiles();this.files=files.length;this.completed=0;files.each(function(file,index){file.addEvent('onFileUploadComplete',this.fileUploadComplete.bind(this));if(index==(this.files-1)&&!opts.uploadFilesFirst){file.upload(this);}else{file.upload();}},this);}else{this.submitForm();}},submitForm:function(){var data=this.getValues();var req=new Request.JSON({url:this.action,method:this.method,data:data,urlEncoded:true,onSuccess:function(responseJSON,responseText){this.fileUploadComplete(responseJSON,true);}.bind(this)});req.send();},findFiles:function(){var files=[];Object.each(this.fields,function(field){if(field instanceof Jx.Field.File){files.push(field);}},this);return files;},fileUploadComplete:function(data){this.completed++;Object.each(data,function(value,key){this.data[key]=value;},this);if(this.completed==this.files&&this.options.uploadFilesFirst){this.submitForm();}else{this.fireEvent('formSubmitComplete',[this.data]);}}});Jx.Field=new Class({Extends:Jx.Widget,Family:'Jx.Field',pluginNamespace:'Field',Binds:['changeText'],options:{id:null,name:null,label:null,labelSeparator:":",value:null,tag:null,tip:null,template:null,containerClass:null,labelClass:null,fieldClass:null,tagClass:null,required:false,readonly:false,disabled:false,defaultAction:false},overtextOptions:{element:'label'},field:null,label:null,tag:null,id:null,overText:null,type:'field',classes:{domObj:'jxInputContainer',label:'jxInputLabel',tag:'jxInputTag'},render:function(){this.classes.field='jxInput'+this.type;var name=(this.options.name!==undefined&&this.options.name!==null)?this.options.name:'';this.options.template=this.options.template.substitute({name:name});this.parent();this.id=this.generateId();this.name=this.options.name;if(this.type!==undefined&&this.type!==null){this.domObj.addClass('jxInputContainer'+this.type);}
if(this.options.containerClass!==undefined&&this.options.containerClass!==null){this.domObj.addClass(this.options.containerClass);}
if(this.options.required!==undefined&&this.options.required!==null&&this.options.required){this.domObj.addClass('jxFieldRequired');if(this.options.validatorClasses!==undefined&&is.options.validatorClasses!==null){this.options.validatorClasses='required '+this.options.validatorClasses;}else{this.options.validatorClasses='required';}}
if(this.field){if(this.options.fieldClass!==undefined&&this.options.fieldClass!==null){this.field.addClass(this.options.fieldClass);}
if(this.options.value!==undefined&&this.options.value!==null){this.field.set('value',this.options.value);}
this.field.set('id',this.id);if(this.options.readonly!==undefined&&this.options.readonly!==null&&this.options.readonly){this.field.set("readonly","readonly");this.field.addClass('jxFieldReadonly');}
if(this.options.disabled!==undefined&&this.options.disabled!==null&&this.options.disabled){this.field.set("disabled","disabled");this.field.addClass('jxFieldDisabled');}
this.field.addEvents({'focus':this.onFocus.bind(this),'blur':this.onBlur.bind(this),'change':this.onChange.bind(this)});this.field.store('field',this);if(this.label){this.label.addEvent('click',function(){this.field.focus();}.bind(this));}}
if(this.label){if(this.options.labelClass!==undefined&&this.options.labelClass!==null){this.label.addClass(this.options.labelClass);}
if(this.options.label!==undefined&&this.options.label!==null){this.label.set('html',this.getText(this.options.label)+
this.options.labelSeparator);}
this.label.set('for',this.id);if(this.options.required){this.requiredText=new Element('em',{'html':this.getText({set:'Jx',key:'field',value:'requiredText'}),'class':'required'});this.requiredText.inject(this.label);}}
if(this.tag){if(this.options.tagClass!==undefined&&this.options.tagClass!==null){this.tag.addClass(this.options.tagClass);}
if(this.options.tag!==undefined&&this.options.tag!==null){this.tag.set('html',this.options.tag);}}
if(this.options.form!==undefined&&this.options.form!==null&&this.options.form instanceof Jx.Form){this.form=this.options.form;this.form.addField(this);}},setValue:function(v){if(!this.options.readonly){this.field.set('value',v);}},getValue:function(){return this.field.get("value");},reset:function(){this.setValue(this.options.value);this.fireEvent('reset',this);},disable:function(){this.options.disabled=true;this.field.set("disabled","disabled");this.field.addClass('jxFieldDisabled');},enable:function(){this.options.disabled=false;this.field.erase("disabled");this.field.removeClass('jxFieldDisabled');},addTo:function(what,where){if(what instanceof Jx.Fieldset||what instanceof Jx.Form){what.add(this);}else{this.parent(what,where);}
return this;},changeText:function(lang){this.parent();if(this.options.label!==undefined&&this.options.label!==null&&this.label){this.label.set('html',this.getText(this.options.label)+this.options.labelSeparator);}
if(this.options.required){this.requiredText=new Element('em',{'html':this.getText({set:'Jx',key:'field',value:'requiredText'}),'class':'required'});this.requiredText.inject(this.label);}
if(this.requiredText!==undefined&&his.requiredText!==null){this.requiredText.set('html',this.getText({set:'Jx',key:'field',value:'requiredText'}));}},onFocus:function(){this.fireEvent('focus',this);},onBlur:function(){this.fireEvent('blur',this);},onChange:function(){this.fireEvent('change',this);},setBusy:function(state,withoutMask){if(!withoutMask){this.parent(state);}
this.field.set('readonly',state||this.options.readonly);}});Jx.Field.Text=new Class({Extends:Jx.Field,Family:"Jx.Field.Text",options:{overText:null,template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><input class="jxInputText" type="text" name="{name}"/><span class="jxInputTag"></span></span>'},type:'Text',render:function(){this.parent();this.field.addEvents({keydown:this.onKeyDown.bind(this),keyup:this.onKeyUp.bind(this)});if(this.options.overText!==undefined&&this.options.overText!==null){var opts=Object.append({},this.options.overText);this.field.set('alt',this.options.tip);this.overText=new OverText(this.field,opts);this.overText.show();}},onKeyDown:function(e){this.fireEvent('keydown',[this,e]);},onKeyUp:function(e){this.fireEvent('keyup',[this,e]);}});Jx.Dialog.Prompt=new Class({Extends:Jx.Dialog,Family:"Jx.Dialog.Prompt",options:{prompt:'',startingValue:'',fieldOptions:{type:'Text',options:{},validate:true,validatorOptions:{validators:['required'],validateOnBlur:true,validateOnChange:false},showErrorMsg:true},width:400,height:200,close:true,resize:true,collapse:false,useKeyboard:true,keys:{'esc':'cancel','enter':'ok'}},render:function(){this.buttons=new Jx.Toolbar({position:'bottom',scroll:false});this.ok=new Jx.Button({label:this.getText({set:'Jx',key:'prompt',value:'okButton'}),onClick:this.onClick.bind(this,true)});this.cancel=new Jx.Button({label:this.getText({set:'Jx',key:'prompt',value:'cancelButton'}),onClick:this.onClick.bind(this,false)});this.buttons.add(this.ok,this.cancel);this.options.toolbars=[this.buttons];var fOpts=this.options.fieldOptions;fOpts.options.label=this.getText(this.options.prompt);fOpts.options.value=this.options.startingValue;fOpts.options.containerClass='jxPrompt';if(Jx.type(fOpts.type)==='string'&&Jx.Field[fOpts.type.capitalize()]!=undefined&&Jx.Field[fOpts.type.capitalize()]!=null){this.field=new Jx.Field[fOpts.type.capitalize()](fOpts.options);}else if(Jx.type(fOpts.type)==='Jx.Object'){this.field=fOpts.type;}else{window.console?console.warn("Field type does not exist %o, using Jx.Field.Text",fOpts.type):false;this.field=new Jx.Field.Text(fOpts.options);}
if(this.options.fieldOptions.validate){this.validator=new Jx.Plugin.Field.Validator(this.options.fieldOptions.validatorOptions);this.validator.attach(this.field);}
this.options.content=document.id(this.field);if(this.options.useKeyboard){var self=this;this.options.keyboardMethods.ok=function(ev){ev.preventDefault();self.onClick(true);}
this.options.keyboardMethods.cancel=function(ev){ev.preventDefault();self.onClick(false);}}
this.parent();if(this.options.useKeyboard){this.keyboard.addEvents(this.getKeyboardEvents());}},onClick:function(value){if(value&&this.validator!=undefined&&this.validator!=null){if(this.validator.isValid()){this.isOpening=false;this.hide();this.fireEvent('close',[this,value,this.field.getValue()]);}else{this.field.field.focus.delay(50,this.field.field);}}else{this.isOpening=false;this.hide();this.fireEvent('close',[this,value,this.field.getValue()]);}},changeText:function(lang){this.parent();if(this.ok!=undefined&&this.ok!=null){this.ok.setLabel({set:'Jx',key:'prompt',value:'okButton'});}
if(this.cancel!=undefined&&this.cancel!=null){this.cancel.setLabel({set:'Jx',key:'prompt',value:'cancelButton'});}
this.field.label.set('html',this.getText(this.options.prompt));}});Jx.Panel.DataView=new Class({Extends:Jx.Panel,Family:"Jx.Panel.DataView",options:{data:null,sortColumns:null,itemTemplate:null,emptyTemplate:null,containerClass:null,itemClass:null,listOptions:{select:true,hover:true}},init:function(){this.domA=new Element('div');this.list=this.createList(this.domA,this.options.listOptions);this.parent();},render:function(){if(this.options.data===undefined||this.options.data===null){return;}
this.options.content=this.domA;this.parent();this.domA.addClass(this.options.containerClass);this.itemCols=this.parseTemplate(this.options.itemTemplate);this.bound.update=this.update.bind(this);this.options.data.addEvent('storeDataLoaded',this.bound.update);this.options.data.addEvent('storeSortFinished',this.bound.update);this.options.data.addEvent('storeDataLoadFailed',this.bound.update);if(this.options.data.loaded){this.update();}},draw:function(){var n=this.options.data.count();if(n!=undefined&&n!=null&&n>0){for(var i=0;i<n;i++){this.options.data.moveTo(i);var item=this.createItem();this.list.add(item);}}else{var empty=new Element('div',{html:this.options.emptyTemplate});this.list.add(item);}
this.fireEvent('renderDone',this);},createItem:function(){var itemObj={};this.itemCols.each(function(col){itemObj[col]=this.options.data.get(col);},this);var itemTemp=this.options.itemTemplate.substitute(itemObj);var item=new Element('div',{'class':this.options.itemClass,html:itemTemp});return item;},update:function(){if(!this.updating){this.updating=true;this.list.empty();this.options.data.sort(this.options.sortColumns);this.draw();this.updating=false;}},parseTemplate:function(template){var columns=this.options.data.getFields();var arr=[];columns.each(function(col){var s='{'+col.name+'}';if(template.contains(s)){arr.push(col.name);}},this);return arr;},enterItem:function(item,list){this.fireEvent('mouseenter',item,list);},leaveItem:function(item,list){this.fireEvent('mouseleave',item,list);},selectItem:function(item,list){this.fireEvent('select',item,list);},unselectItem:function(item,list){this.fireEvent('unselect',item,list);},addItem:function(item,list){this.fireEvent('add',item,list);},removeItem:function(item,list){this.fireEvent('remove',item,list);},createList:function(container,options){return new Jx.List(container,Object.append({onMouseenter:this.enterItem.bind(this),onMouseleave:this.leaveItem.bind(this),onSelect:this.selectItem.bind(this),onAdd:this.addItem.bind(this),onRemove:this.removeItem.bind(this),onUnselect:this.unselectItem.bind(this)},options));}});Jx.Panel.DataView.Group=new Class({Extends:Jx.Panel.DataView,Family:"Jx.Panel.DataView.Group",options:{groupTemplate:null,groupContainerClass:null,groupHeaderClass:null,listOptions:{select:false,hover:false},itemOptions:{select:true,hover:true,hoverClass:'jxItemHover',selectClass:'jxItemSelect'}},init:function(){this.groupCols=this.parseTemplate(this.options.groupTemplate);this.itemManager=new Jx.Selection({eventToFire:{select:'itemselect',unselect:'itemunselect'},selectClass:'jxItemSelected'});this.groupManager=new Jx.Selection({eventToFire:{select:'groupselect',unselect:'groupunselect'},selectClass:'jxGroupSelected'});this.parent();},render:function(){this.list=this.createList(this.domA,this.listOptions,this.groupManager);this.parent();},draw:function(){var d=this.options.data;var n=d.count();if(n!=undefined&&n!=null&&n>0){var currentGroup='';var itemList=null;for(var i=0;i<n;i++){d.moveTo(i);var group=d.get(this.options.sortColumns[0]);if(group!==currentGroup){var container=new Element('div',{'class':this.options.groupContainerClass});var l=this.createList(container,{select:false,hover:false});this.list.add(l.container);currentGroup=group;var obj={};this.groupCols.each(function(col){obj[col]=d.get(col);},this);var temp=this.options.groupTemplate.substitute(obj);var g=new Element('div',{'class':this.options.groupHeaderClass,'html':temp,id:'group-'+group.replace(" ","-","g")});l.add(g);var currentItemContainer=new Element('div',{'class':this.options.containerClass});itemList=this.createList(currentItemContainer,this.options.itemOptions,this.itemManager);l.add(itemList.container);}
var item=this.createItem();itemList.add(item);}}else{var empty=new Element('div',{html:this.options.emptyTemplate});this.list.add(empty);}
this.fireEvent('renderDone',this);},createList:function(container,options,manager){return new Jx.List(container,Object.append({onMouseenter:this.enterItem.bind(this),onMouseleave:this.leaveItem.bind(this),onAdd:this.addItem.bind(this),onRemove:this.removeItem.bind(this)},options),manager);}});Jx.Dialog.Message=new Class({Extends:Jx.Dialog,Family:'Jx.Dialog.Message',Binds:['onOk'],options:{message:'',width:300,height:150,close:true,resize:true,collapse:false,useKeyboard:true,keys:{'enter':'ok'},toolbarOptions:{align:"center",position:'bottom',scroll:false}},render:function(){this.buttons=new Jx.Toolbar(this.options.toolbarOptions);this.ok=new Jx.Button({label:this.getText({set:'Jx',key:'message',value:'okButton'}),onClick:this.onOk});this.buttons.add(this.ok);this.options.toolbars=[this.buttons];var type=Jx.type(this.options.message);if(type==='string'||type=='object'||type=='element'){this.question=new Element('div',{'class':'jxMessage'});switch(type){case'string':case'object':this.question.set('html',this.getText(this.options.message));break;case'element':this.options.message.inject(this.question);break;}}else{this.question=this.options.question;document.id(this.question).addClass('jxMessage');}
this.options.content=this.question;if(this.options.useKeyboard){var self=this;this.options.keyboardMethods.ok=function(ev){ev.preventDefault();self.close();}}
this.parent();if(this.options.useKeyboard){this.keyboard.addEvents(this.getKeyboardEvents());}},onOk:function(){this.close();},setMessage:function(message){this.options.message=message;if(this.question!=undefined&&this.question!=null){this.question.set('html',this.getText(message));}},changeText:function(lang){this.parent();if(this.ok!=undefined&&this.ok!=null){this.ok.setLabel({set:'Jx',key:'message',value:'okButton'});}
if(Jx.type(this.options.message)==='object'){this.question.set('html',this.getText(this.options.message))}}});Jx.ListItem=new Class({Extends:Jx.Widget,Family:'Jx.ListItem',options:{enabled:true,template:'<li class="jxListItemContainer jxListItem"></li>'},classes:{domObj:'jxListItemContainer',domContent:'jxListItem'},render:function(){this.parent();this.domContent.store('jxListItem',this);this.domObj.store('jxListTarget',this.domContent);this.loadContent(this.domContent);},enable:function(state){}});Jx.Dialog.Confirm=new Class({Extends:Jx.Dialog,Family:"Jx.Dialog.Confirm",options:{question:'',useKeyboard:true,keys:{'esc':'cancel','enter':'ok'},width:300,height:150,close:false,resize:true,collapse:false,toolbarOptions:{align:"center",position:'bottom',scroll:false}},keyboard:null,render:function(){this.buttons=new Jx.Toolbar(this.options.toolbarOptions);this.ok=new Jx.Button({label:this.getText({set:'Jx',key:'confirm',value:'affirmativeLabel'}),onClick:this.onClick.bind(this,true)}),this.cancel=new Jx.Button({label:this.getText({set:'Jx',key:'confirm',value:'negativeLabel'}),onClick:this.onClick.bind(this,false)})
this.buttons.add(this.ok,this.cancel);this.options.toolbars=[this.buttons];var type=Jx.type(this.options.question);if(type==='string'||type==='object'||type=='element'){this.question=new Element('div',{'class':'jxConfirmQuestion'});switch(type){case'string':case'object':this.question.set('html',this.getText(this.options.question));break;case'element':this.options.question.inject(this.question);break;}}else{this.question=this.options.question;document.id(this.question).addClass('jxConfirmQuestion');}
this.options.content=this.question;if(this.options.useKeyboard){var self=this;this.options.keyboardMethods.ok=function(ev){ev.preventDefault();self.onClick(true);}
this.options.keyboardMethods.cancel=function(ev){ev.preventDefault();self.onClick(false);}}
this.parent();if(this.options.useKeyboard){this.keyboard.addEvents(this.getKeyboardEvents());}},onClick:function(value){this.isOpening=false;this.hide();this.fireEvent('close',[this,value]);},changeText:function(lang){this.parent();if(this.ok!=undefined&&this.ok!=null){this.ok.setLabel({set:'Jx',key:'confirm',value:'affirmativeLabel'});}
if(this.cancel!=undefined&&this.cancel!=null){this.cancel.setLabel({set:'Jx',key:'confirm',value:'negativeLabel'});}
if(Jx.type(this.options.question)==='object'){this.question.set('html',this.getText(this.options.question))}}});Jx.ListView=new Class({Extends:Jx.Widget.List,Family:'Jx.ListView',pluginNamespace:'ListView',options:{template:'<ul class="jxListView jxListContainer"></ul>',},classes:{domObj:'jxListView'}});Jx.Field.Hidden=new Class({Extends:Jx.Field,Family:"Jx.Field.Hidden",options:{template:'<span class="jxInputContainer"><input class="jxInputHidden" type="hidden" name="{name}"/></span>'},type:'Hidden'});Jx.Field.File=new Class({Extends:Jx.Field,Family:'Jx.Field.File',options:{template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><div class="jxFileInputs"><input class="jxInputFile" type="file" name="{name}" /></div><span class="jxInputTag"></span></span>',autoUpload:false,progress:false,progressIDUrl:'',progressName:'APC_UPLOAD_PROGRESS',progressId:'progress_key',handlerUrl:'',progressUrl:'',debug:false,mode:'single'},type:'File',forms:null,init:function(){this.parent();this.forms={};this.isIFrameSetup=true;this.iframe=new Element('iframe',{name:this.generateId(),styles:{'display':'none','visibility':'hidden'}});this.iframe.inject(document.body);this.iframe.addEvent('load',this.processIFrameUpload.bind(this));},render:function(){this.parent();if(this.options.id===undefined||this.options.id===null){this.field.set('id',this.generateId());}
this.fake=new Element('div',{'class':'jxFileFake'});this.text=new Jx.Field.Text({template:'<span class="jxInputContainer"><input class="jxInputText" type="text" /></span>'});this.browseButton=new Jx.Button({label:this.getText({set:'Jx',key:'file',value:'browseLabel'})});this.fake.adopt(this.text,this.browseButton);this.field.grab(this.fake,'after');this.field.addEvents({change:this.copyValue.bind(this),mouseenter:this.mouseEnter.bind(this),mouseleave:this.mouseLeave.bind(this)});},copyValue:function(){if(this.options.mode=='single'&&this.field.value!==''&&(this.text.field.value!==this.field.value)){this.text.field.value=this.field.value;this.fireEvent('fileSelected',this);this.forms[this.field.value]=this.prepForm();if(this.options.autoUpload){this.uploadSingle();}}else if(this.options.mode=='multiple'){var filename=this.field.value;var form=this.prepForm();this.forms[filename]=form;this.text.setValue('');this.fireEvent('fileSelected',filename);}},mouseEnter:function(){this.browseButton.domA.addClass('jxButtonPressed');},mouseLeave:function(){this.browseButton.domA.removeClass('jxButtonPressed');},prepForm:function(){var form=new Jx.Form({action:this.options.handlerUrl,name:'jxUploadForm',fileUpload:true});var parent=document.id(this.field.getParent());var sibling=document.id(this.field).getPrevious();var clone=this.field.clone().cloneEvents(this.field);document.id(form).grab(this.field);if(sibling){clone.inject(sibling,'after');}else if(parent){clone.inject(parent,'top');}
this.field=clone;this.mouseLeave();return form;},upload:function(externalForm){if(Object.getLength(this.forms)>0){var keys=Object.keys(this.forms);this.currentKey=keys[0];var form=this.forms[this.currentKey];delete this.forms[this.currentKey];if(externalForm!==undefined&&externalForm!==null&&Object.getLength(this.forms)===0){var fields=externalForm.fields;Object.each(fields,function(field){if(!(field instanceof Jx.Field.File)){document.id(field).clone().inject(form);}}.bind(this));}
this.uploadSingle(form);}else{this.fireEvent('allUploadsComplete',this);}},uploadSingle:function(form){this.form=(form!==undefined&&form!==null)?form:this.prepForm();this.fireEvent('fileUploadBegin',[this.currentKey,this]);this.text.setValue('');document.id(this.form).set('target',this.iframe.get('name')).setStyles({visibility:'hidden',display:'none'}).inject(document.body);if(this.options.progress){var req=new Request.JSON({url:this.options.progressIDUrl,method:'get',onSuccess:this.submitUpload.bind(this)});req.send();}else{this.submitUpload();}},submitUpload:function(data){if(data!==undefined&&data!==null&&data.success&&data.id!==undefined&&data.id!==null){this.progressID=data.id;var id=new Jx.Field.Hidden({name:this.options.progressName,id:this.options.progressId,value:this.progressID});id.addTo(this.form,'top');}
document.id(this.form).submit();if(this.options.progress&&this.progressID!==undefined&&this.progressID!==null){this.pollUpload();}},pollUpload:function(){var d={id:this.progressID};var r=new Request.JSON({data:d,url:this.options.progressUrl,method:'get',onSuccess:this.processProgress.bind(this),onFailure:this.uploadFailure.bind(this)});r.send();},processProgress:function(data){if(data!==undefined&&data!==null){this.fireEvent('fileUploadProgress',[data,this.currentKey,this]);if(data.current<data.total){this.polling=true;this.pollUpload();}else{this.polling=false;}}},uploadFailure:function(xhr){this.fireEvent('fileUploadProgressError',[this,xhr]);},processIFrameUpload:function(){var iframeBody;if(this.isIFrameSetup){if(this.iframe.contentDocument&&this.iframe.contentDocument.defaultView){iframeBody=this.iframe.contentDocument.defaultView.document.body.innerHTML;}else{iframeBody=this.iframe.contentWindow.document.body.innerHTML;}
var data=JSON.decode(iframeBody);if(data!==undefined&&data!==null&&data.success!==undefined&&data.success!==null&&data.success){this.done=true;this.doneData=data;this.uploadCleanUp();this.fireEvent('fileUploadComplete',[data,this.currentKey,this]);}else{this.fireEvent('fileUploadError',[data,this.currentKey,this]);}
if(this.options.mode=='multiple'){this.upload();}else{this.fireEvent('allUploadsComplete',this);}}},uploadCleanUp:function(){if(!this.options.debug){this.form.destroy();}},remove:function(filename){if(Object.keys(this.forms).contains(filename)){delete this.forms[filename];}},changeText:function(lang){this.parent();if(this.browseButton!==undefined&&this.browseButton!==null){this.browseButton.setLabel(this.getText({set:'Jx',key:'file',value:'browseLabel'}));}},getFileInputs:function(){var inputs=[];Object.each(this.forms,function(form){var input=document.id(form).getElement('input[type=file]');inputs.push(input);},this);return inputs;}});Jx.Progressbar=new Class({Extends:Jx.Widget,Family:'Jx.Progressbar',options:{onUpdate:function(){},onComplete:function(){},parent:null,progressText:null,template:'<div class="jxProgressBar-container"><div class="jxProgressBar-message"></div><div class="jxProgressBar"><div class="jxProgressBar-outline"></div><div class="jxProgressBar-fill"></div><div class="jxProgressBar-text"></div></div></div>'},classes:{domObj:'jxProgressBar-container',message:'jxProgressBar-message',container:'jxProgressBar',outline:'jxProgressBar-outline',fill:'jxProgressBar-fill',text:'jxProgressBar-text'},bar:null,text:null,render:function(){this.parent();if(this.options.parent!==undefined&&this.options.parent!==null){this.domObj.inject(document.id(this.options.parent));}
this.domObj.addClass('jxProgressStarting');this.width=document.id(this.domObj).getContentBoxSize().width;if(this.message){if(Locale.get('Jx','progressbar').messageText!==undefined&&Locale.get('Jx','progressbar').messageText!==null){this.message.set('html',this.getText({set:'Jx',key:'progressbar',value:'messageText'}));}else{this.message.destroy();}}
if(this.fill){this.fill.setStyles({'width':0});}
var obj={};var progressText=this.options.progressText===null?this.getText({set:'Jx',key:'progressbar',value:'progressText'}):this.getText(this.options.progressText);if(progressText.contains('{progress}')){obj.progress=0;}
if(progressText.contains('{total}')){obj.total=0;}
if(this.text){this.text.set('html',progressText.substitute(obj));}},update:function(total,progress){if(this.domObj.hasClass('jxProgressStarting')){this.domObj.removeClass('jxProgressStarting').addClass('jxProgressWorking');}
var newWidth=(progress*this.width)/total;this.text.set('tween',{property:'width',onComplete:function(){var obj={};var progressText=this.options.progressText===null?this.getText({set:'Jx',key:'progressbar',value:'progressText'}):this.getText(this.options.progressText);if(progressText.contains('{progress}')){obj.progress=progress;}
if(progressText.contains('{total}')){obj.total=total;}
var t=progressText.substitute(obj);this.text.set('text',t);}.bind(this)});this.text.get('tween').start(newWidth);this.fill.set('tween',{property:'width',onComplete:(function(){if(total===progress){this.complete=true;this.domObj.removeClass('jxProgressWorking').addClass('jxProgressFinished');this.fireEvent('complete');}else{this.fireEvent('update');}}).bind(this)});this.fill.get('tween').start(newWidth);},changeText:function(lang){this.parent();if(this.message){this.message.set('html',this.getText({set:'Jx',key:'progressbar',value:'messageText'}));}}});Jx.Tooltip=new Class({Extends:Jx.Widget,Family:'Jx.Tooltip',Binds:['enter','leave','move'],options:{offsets:{x:15,y:15},showDelay:100,cssClass:null},parameters:['target','tip','options'],render:function(){this.parent();this.target=document.id(this.options.target);var t=this.target.retrieve('Tip');if(t){this.target.eliminate('Tip');}
this.domObj=new Element('div',{styles:{'position':'absolute','top':0,'left':0,'visibility':'hidden'}}).inject(document.body);if(Jx.type(this.options.tip)==='string'||Jx.type(this.options.tip)=='object'){this.domObj.set('html',this.getText(this.options.tip));}else{this.domObj.grab(this.options.tip);}
this.domObj.addClass('jxTooltip');if(this.options.cssClass!==undefined&&this.options.cssClass!==null){this.domObj.addClass(this.options.cssClass);}
this.options.target.store('Tip',this);this.options.target.addEvent('mouseenter',this.enter);this.options.target.addEvent('mouseleave',this.leave);this.options.target.addEvent('mousemove',this.move);},enter:function(event){this.timer=window.clearTimeout(this.timer);this.timer=(function(){this.domObj.setStyle('visibility','visible');this.position(event);}).delay(this.options.delay,this);},leave:function(event){this.timer=window.clearTimeout(this.timer);this.timer=(function(){this.domObj.setStyle('visibility','hidden');}).delay(this.options.delay,this);},move:function(event){this.position(event);},position:function(event){var size=window.getSize(),scroll=window.getScroll();var tipSize=this.domObj.getMarginBoxSize();var tip={x:this.domObj.offsetWidth,y:this.domObj.offsetHeight};var tipPlacement={x:event.page.x+this.options.offsets.x,y:event.page.y+this.options.offsets.y};if(event.page.y+this.options.offsets.y+tip.y+tipSize.height-scroll.y>size.y){tipPlacement.y=event.page.y-this.options.offsets.y-tipSize.height-scroll.y;}
if(event.page.x+this.options.offsets.x+tip.x+tipSize.width-scroll.x>size.x){tipPlacement.x=event.page.x-this.options.offsets.x-tipSize.width-scroll.x;}
this.domObj.setStyle('top',tipPlacement.y);this.domObj.setStyle('left',tipPlacement.x);},detach:function(){this.target.eliminate('Tip');this.destroy();}});Jx.Panel.FileUpload=new Class({Extends:Jx.Panel,Family:'Jx.Panel.FileUpload',Binds:['moveToQueue','fileUploadBegin','fileUploadComplete','allUploadsComplete','fileUploadProgressError,','fileUploadError','fileUploadProgress'],options:{file:{autoUpload:false,progress:false,progressIDUrl:'',handlerUrl:'',progressUrl:''},progressOptions:{template:"<li class='jxListItemContainer jxProgressBar-container' id='{id}'><div class='jxProgressBar'><div class='jxProgressBar-outline'></div><div class='jxProgressBar-fill'></div><div class='jxProgressBar-text'></div></div></li>",containerClass:'progress-container',messageText:null,messageClass:'progress-message',progressText:'Uploading {filename}',progressClass:'progress-bar'},onFileComplete:function(){},onComplete:function(){},prompt:null,removeOnComplete:false},domObjA:null,fileQueue:[],listTemplate:"<li class='jxListItemContainer' id='{id}'><a class='jxListItem' href='javascript:void(0);'><span class='itemLabel jxUploadFileName'>{name}</span><span class='jxUploadFileDelete' title='Remove this file from the queue.'></span></a></li>",render:function(){this.domObjA=new Element('div',{'class':'jxFileUploadPanel'});if(this.options.prompt!=undefined&&this.options.prompt!=null){var desc;if(Jx.type(this.options.prompt==='string')){desc=new Element('p',{html:this.options.prompt});}else{desc=this.options.prompt;}
desc.inject(this.domObjA);}
this.fileOpt=this.options.file;this.fileOpt.template='<div class="jxInputContainer jxFileInputs"><input class="jxInputFile" type="file" name={name} /></div>';this.file=new Jx.Field.File(this.fileOpt);this.file.addEvent('fileSelected',this.moveToQueue);this.file.addTo(this.domObjA);this.listView=new Jx.ListView({template:'<ul class="jxListView jxList jxUploadQueue"></ul>'}).addTo(this.domObjA);if(!this.options.file.autoUpload){this.uploadBtn=new Jx.Button({label:this.getText({set:'Jx',key:'upload',value:'buttonText'}),onClick:this.upload.bind(this)});var tlb=new Jx.Toolbar({position:'bottom',scroll:false}).add(this.uploadBtn);this.uploadBtn.setEnabled(false);this.options.toolbars=[tlb];}
this.options.content=this.domObjA;this.parent(this.options);},moveToQueue:function(filename){var theTemplate=new String(this.listTemplate).substitute({name:filename,id:filename});var item=new Jx.ListItem({template:theTemplate,enabled:true});$(item).getElement('.jxUploadFileDelete').addEvent('click',function(){this.listView.remove(item);this.file.remove(filename);if(this.listView.list.count()==0){this.uploadBtn.setEnabled(false);}}.bind(this));this.listView.add(item);if(!this.uploadBtn.isEnabled()){this.uploadBtn.setEnabled(true);}},upload:function(){this.file.addEvents({'fileUploadBegin':this.fileUploadBegin,'fileUploadComplete':this.fileUploadComplete,'allUploadsComplete':this.allUploadsComplete,'fileUploadError':this.fileUploadError,'fileUploadProgress':this.fileUploadProgress,'fileUploadProgressError':this.fileUploadError});this.file.upload();},fileUploadBegin:function(filename){if(this.options.file.progress){var options=Object.merge({},this.options.progressOptions);options.progressText=options.progressText.substitute({filename:filename});options.template=options.template.substitute({id:filename});this.pb=new Jx.Progressbar(options);var item=document.id(filename);this.oldContents=item;this.listView.replace(item,$(this.pb));}else{var icon=document.id(filename).getElement('.jxUploadFileDelete')
icon.addClass('jxUploadFileProgress').set('title','File Uploading...');}},fileUploadComplete:function(data,file){if(data.success!=undefined&&data.success!=null&&data.success){this.removeUploadedFile(file);}else{this.fileUploadError(data,file);}},fileUploadError:function(data,filename){if(this.options.file.progress){this.listView.replace(document.id(filename),this.oldContents);}
var icon=document.id(filename).getElement('.jxUploadFileDelete');icon.erase('title');if(icon.hasClass('jxUploadFileProgress')){icon.removeClass('jxUploadFileProgress').addClass('jxUploadFileError');}else{icon.addClass('jxUploadFileError');}
if(data.error!==undefined&&data.error!==null&&data.error.message!==undefined&&data.error.message!==null){var tt=new Jx.Tooltip(icon,data.error.message,{cssClass:'jxUploadFileErrorTip'});}},removeUploadedFile:function(filename){if(this.options.removeOnComplete){this.listView.remove(document.id(filename));}else{if(this.options.file.progress){this.listView.replace(document.id(filename),this.oldContents);}
var l=document.id(filename).getElement('.jxUploadFileDelete');if(l.hasClass('jxUploadFileDelete')){l.addClass('jxUploadFileComplete');}else if(l.hasClass('jxUploadFileProgress')){l.removeClass('jxUploadFileProgress').addClass('jxUploadFileComplete');}}
this.fireEvent('fileUploadComplete',filename);},fileUploadProgress:function(data,file){if(this.options.progress){this.pb.update(data.total,data.current);}},allUploadsComplete:function(){this.uploadBtn.setEnabled(false);this.fireEvent('allUploadsCompleted',this);},changeText:function(lang){this.parent();if(this.uploadBtn!=undefined&&this.uploadBtn!=null){this.uploadBtn.setLabel({set:'Jx',key:'upload',value:'buttonText'});}}});Jx.Notice=new Class({Extends:Jx.ListItem,Family:'Jx.Notice',options:{fx:'fade',chrome:false,enabled:true,template:'<li class="jxNoticeItemContainer"><div class="jxNoticeItem"><span class="jxNotice"></span><a class="jxNoticeClose" href="javascript:void(0);" title="'+Locale.get('Jx','notice').closeTip+'"></a></div></li>',klass:''},classes:{domObj:'jxNoticeItemContainer',domItem:'jxNoticeItem',domContent:'jxNotice',domClose:'jxNoticeClose'},render:function(){this.parent();if(this.options.klass){this.domObj.addClass(this.options.klass);}
if(this.domClose){this.domClose.addEvent('click',this.close.bind(this));}},close:function(){this.fireEvent('close',this);},show:function(el,onComplete){if(this.options.chrome){this.showChrome();}
if(this.options.fx){document.id(el).adopt(this);if(onComplete)onComplete();}else{document.id(el).adopt(this);if(onComplete)onComplete();}},hide:function(onComplete){if(this.options.chrome){this.hideChrome();}
if(this.options.fx){document.id(this).dispose();if(onComplete)onComplete();}else{document.id(this).dispose();if(onComplete)onComplete();}},changeText:function(lang){this.parent();}});Jx.Notice.Information=new Class({Extends:Jx.Notice,options:{template:'<li class="jxNoticeItemContainer"><div class="jxNoticeItem"><img class="jxNoticeIcon" src="'+Jx.aPixel.src+'" title="Success"><span class="jxNotice"></span><a class="jxNoticeClose" href="javascript:void(0);" title="'+Locale.get('Jx','notice').closeTip+'"></a></div></li>',klass:'jxNoticeInformation'}});Jx.Notice.Success=new Class({Extends:Jx.Notice,options:{template:'<li class="jxNoticeItemContainer"><div class="jxNoticeItem"><img class="jxNoticeIcon" src="'+Jx.aPixel.src+'" title="Success"><span class="jxNotice"></span><a class="jxNoticeClose" href="javascript:void(0);" title="'+Locale.get('Jx','notice').closeTip+'"></a></div></li>',klass:'jxNoticeSuccess'}});Jx.Notice.Warning=new Class({Extends:Jx.Notice,options:{template:'<li class="jxNoticeItemContainer"><div class="jxNoticeItem"><img class="jxNoticeIcon" src="'+Jx.aPixel.src+'" title="Warning"><span class="jxNotice"></span><a class="jxNoticeClose" href="javascript:void(0);" title="'+Locale.get('Jx','notice').closeTip+'"></a></div></li>',klass:'jxNoticeWarning'}});Jx.Notice.Error=new Class({Extends:Jx.Notice,options:{template:'<li class="jxNoticeItemContainer"><div class="jxNoticeItem"><img class="jxNoticeIcon" src="'+Jx.aPixel.src+'" title="Error"><span class="jxNotice"></span><a class="jxNoticeClose" href="javascript:void(0);" title="'+Locale.get('Jx','notice').closeTip+'"></a></div></li>',klass:'jxNoticeError'}});Jx.Notifier=new Class({Extends:Jx.ListView,Family:'Jx.Notifier',options:{parent:null,template:'<div class="jxNoticeListContainer"><ul class="jxNoticeList"></ul></div>',listOptions:{}},classes:{domObj:'jxNoticeListContainer',listObj:'jxNoticeList'},render:function(){this.parent();this.addEvent('postRender',function(){if(Jx.type(this.options.items)=='array'){this.options.items.each(function(item){this.add(item);},this);}}.bind(this));},add:function(notice){if(!(notice instanceof Jx.Notice)){notice=new Jx.Notice({content:notice});}
notice.addEvent('close',this.remove.bind(this));notice.show(this.listObj);},remove:function(notice){if(this.domObj.contains(document.id(notice))){notice.removeEvents('close');notice.hide();}}});Jx.Notifier.Float=new Class({Extends:Jx.Notifier,Family:'Jx.Notifier.Float',options:{chrome:true,fx:null,width:250,position:{horizontal:'center center',vertical:'top top'}},render:function(){this.parent();this.domObj.setStyle('position','absolute');if(this.options.width!==undefined&&this.options.width!==null){this.domObj.setStyle('width',this.options.width);}
this.position(this.domObj,this.options.parent,this.options.position);},add:function(notice){if(!(notice instanceof Jx.Notice)){notice=new Jx.Notice({content:notice});}
notice.options.chrome=this.options.chrome;this.parent(notice);}});Jx.Plugin=new Class({Extends:Jx.Object,Family:"Jx.Plugin",options:{},attach:function(obj){obj.registerPlugin(this);},detach:function(obj){obj.deregisterPlugin(this);},changeText:function(lang){if(this.busy){this.setBusy(false);this.setBusy(true);}}});Jx.Plugin.Form={};Jx.Plugin.Field={};Jx.Plugin.Field.Validator=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Field.Validator",name:'Field.Validator',options:{validators:[],validateOnBlur:true,validateOnChange:true},valid:null,errors:null,validators:null,init:function(){this.parent();this.errors=[];this.validators={};this.bound.validate=this.validate.bind(this);this.bound.reset=this.reset.bind(this);this.bound.postRender=this.onPostRender.bind(this);},attach:function(field){if(field===undefined||field===null||!(field instanceof Jx.Field)){return;}
this.field=field;if(this.field.options.required&&!this.options.validators.contains('required')){this.options.validators.reverse().push('required');this.options.validators.reverse();}
if(this.options.validateOnBlur){field.addEvent('blur',this.bound.validate);}
if(this.options.validateOnChange){field.addEvent('change',this.bound.validate);}
field.addEvent('reset',this.bound.reset);if(field.ready){this.onPostRender();}else{field.addEvent('postRender',this.bound.postRender);}},onPostRender:function(){this.options.validators.each(function(v){var t=Jx.type(v);if(t==='string'){this.field.field.addClass(v);}else if(t==='object'){this.validators[v.validator.name]=new InputValidator(v.validator.name,v.validator.options);this.field.field.addClass(v.validatorClass);}},this);this.field.removeEvent('postRender',this.bound.postRender);},detach:function(){if(this.field){this.field.removeEvent('blur',this.bound.validate);this.field.removeEvent('change',this.bound.validate);this.field.removeEvent('reset',this.bound.reset);this.field=null;}
this.validators=null;this.bound.validate=null;this.bound.reset=null;this.bound.postRender=null;this.bound=null;},validate:function(){window.clearTimeout(this.timer);this.timer=this.validateField.delay(50,this);},validateField:function(){this.valid=true;this.errors=[];this.options.validators.each(function(v){var val=(Jx.type(v)==='string')?Form.Validator.getValidator(v):this.validators[v.validator.name];if(val){if(!val.test(this.field.field)){this.valid=false;this.errors.push(val.getError(this.field.field));}}},this);if(!this.valid){this.field.domObj.removeClass('jxFieldSuccess').addClass('jxFieldError');this.field.fireEvent('fieldValidationFailed',[this.field,this]);}else{this.field.domObj.removeClass('jxFieldError').addClass('jxFieldSuccess');this.field.fireEvent('fieldValidationPassed',[this.field,this]);}
return this.valid;},isValid:function(){return this.validateField();},reset:function(){this.valid=null;this.errors=[];this.field.field.removeClass('jxFieldError').removeClass('jxFieldSuccess');},getErrors:function(){return this.errors;}});Jx.Plugin.Form.Validator=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Form.Validator",name:'Form.Validator',options:{fields:null,fieldDefaults:{validateOnBlur:true,validateOnChange:true},validateOnSubmit:true,suspendSubmit:false},errorMessage:null,init:function(){this.parent();this.bound.validate=this.validate.bind(this);this.bound.failed=this.fieldFailed.bind(this);this.bound.passed=this.fieldPassed.bind(this);this.bound.finish=this.finishSetup.bind(this);this.bound.fieldAdded=this.onFieldAdded.bind(this);},attach:function(form){if(form===undefined||form===null||!(form instanceof Jx.Form)){return;}
this.parent(form);this.form=form;var plugin=this;form.isValid=function(){return plugin.isValid();};this.plugins={};if(this.form.ready===true){this.finishSetup();}else{form.addEvent('postRender',this.bound.finish);}
form.addEvent('fieldAdded',this.bound.fieldAdded);},finishSetup:function(){var options=this.options;Object.each(options.fields,function(val,key){var opts=Object.merge({},options.fieldDefaults,val),fields=this.form.getFieldsByName(key),p;if(fields&&fields.length){p=new Jx.Plugin.Field.Validator(opts);this.plugins[key]=p;p.attach(fields[0]);fields[0].addEvent('fieldValidationFailed',this.bound.failed);fields[0].addEvent('fieldValidationPassed',this.bound.passed);}},this);if(options.validateOnSubmit&&!options.suspendSubmit){document.id(this.form).addEvent('submit',this.bound.validate);}else if(options.suspendSubmit){document.id(this.form).addEvent('submit',function(ev){ev.stop();});}},onFieldAdded:function(field,form){if(this.options.fields[field.name]!==undefined&&this.options.fields[field.name]!==null){var opts=Object.merge({},this.options.fieldDefaults,this.options.fields[field.name]),p=new Jx.Plugin.Field.Validator(opts);this.plugins[field.name]=p;p.attach(field);field.addEvent('fieldValidationFailed',this.bound.failed);field.addEvent('fieldValidationPassed',this.bound.passed);}},detach:function(){if(this.form){document.id(this.form).removeEvent('submit');}
this.form=null;Object.each(this.plugins,function(plugin){plugin.detach();plugin=null;},this);this.plugins=null;},isValid:function(){return this.validate();},validate:function(){var valid=true;this.errors={};Object.each(this.plugins,function(plugin){if(!plugin.isValid()){valid=false;this.errors[plugin.field.id]=plugin.getErrors();}},this);if(valid){this.fireEvent('formValidationPassed',[this.form,this]);}else{this.fireEvent('formValidationFailed',[this.form,this]);}
return valid;},fieldFailed:function(field,validator){this.form.fireEvent('fieldValidationFailed',[field,validator]);},fieldPassed:function(field,validator){this.form.fireEvent('fieldValidationPassed',[field,validator]);},getErrors:function(){if(this.errors!==undefined&&this.errors!==null){this.validate();}
return this.errors;}});Jx.Panel.Form=new Class({Extends:Jx.Panel,Family:'Jx.Panel.Form',notices:{},options:{fields:null,validators:null,formOptions:null},init:function(){this.parent();},render:function(){this.form=new Jx.Form(this.options.formOptions);this.options.content=document.id(this.form);this.parent();this.addFields(this.form,this.options.fields);if(this.options.validators!==undefined&&this.options.validators!==null){this.validator=new Jx.Plugin.Form.Validator(this.options.validators);this.validator.attach(this.form);this.form.addEvents({'fieldValidationFailed':this.fieldFailed.bind(this),'fieldValidationPassed':this.fieldPassed.bind(this)});this.form.fireEvent('postInit');}
this.domObj.resize();},addFields:function(container,options){Object.each(options,function(opt){var t=Jx.type(opt);if(t==='element'){opt.inject(document.id(container));}else if(opt instanceof Jx.Widget){opt.addTo(container);if(opt instanceof Jx.Field){this.form.addField(opt);}}else if(t==='object'&&opt.type!==undefined&&opt.type!==null){opt.options.parent=container;opt.options.form=this.form;if(opt.type.toLowerCase()==='fieldset'){var field=new Jx.Fieldset(opt.options);if(opt.children!==undefined&&opt.children!==null){this.addFields(field,opt.children);}}else{new Jx.Field[opt.type.capitalize()](opt.options);}}},this);},add:function(options){if(Jx.type(options)!=='array'){options=[options];}
this.addFields(this.form,options)},fieldPassed:function(field,validator){this.fireEvent('fieldPassed',[field,validator,this]);},fieldFailed:function(field,validator){this.fireEvent('fieldFailed',[field,validator,this]);}});Jx.PanelSet=new Class({Extends:Jx.Widget,Family:'Jx.PanelSet',options:{parent:null,panels:[]},panels:null,height:null,firstLayout:true,render:function(){if(this.options.panels){this.panels=this.options.panels;this.options.panels=null;}
this.domObj=new Element('div');new Jx.Layout(this.domObj);var d=new Element('div',{styles:{position:'absolute'}});new Jx.Layout(d,{minHeight:0,maxHeight:0,height:0});var elements=[d];this.panels.each(function(panel){elements.push(panel.domObj);panel.options.hideTitle=true;panel.contentContainer.resize({top:0});panel.toggleCollapse=this.maximizePanel.bind(this,panel);panel.domObj.store('Jx.Panel',panel);panel.manager=this;},this);this.splitter=new Jx.Splitter(this.domObj,{splitInto:this.panels.length+1,layout:'vertical',elements:elements,prepareBar:(function(i){var bar=new Element('div',{'class':'jxPanelBar','title':this.getText({set:'Jx',key:'panelset',value:'barToolTip'})});var panel=this.panels[i];panel.title.setStyle('visibility','hidden');document.id(document.body).adopt(panel.title);var size=panel.title.getBorderBoxSize();bar.adopt(panel.title);panel.title.setStyle('visibility','');bar.setStyle('height',size.height);bar.store('size',size);return bar;}).bind(this)});this.addEvent('addTo',function(){document.id(this.domObj.parentNode).setStyle('overflow','hidden');this.domObj.resize();});if(this.options.parent){this.addTo(this.options.parent);}},maximizePanel:function(panel){var domHeight=this.domObj.getContentBoxSize().height;var space=domHeight;var panelSize=panel.domObj.retrieve('jxLayout').options.maxHeight;var panelIndex,i,p,thePanel,o,panelHeight;for(i=1;i<this.splitter.elements.length;i++){p=this.splitter.elements[i];space-=p.retrieve('leftBar').getBorderBoxSize().height;if(p!==panel.domObj){thePanel=p.retrieve('Jx.Panel');o=p.retrieve('jxLayout').options;space-=o.minHeight;}else{panelIndex=i;}}
if(panelSize==-1||panelSize>=space){panelSize=space;space=0;}else{space=space-panelSize;}
var top=0;for(i=1;i<this.splitter.elements.length;i++){p=this.splitter.elements[i];top+=p.retrieve('leftBar').getBorderBoxSize().height;if(p!==panel.domObj){thePanel=p.retrieve('Jx.Panel');o=p.retrieve('jxLayout').options;panelHeight=o.height!=null?o.height:p.getBorderBoxSize().height;if(space>0){if(space>=panelHeight){space-=panelHeight;p.resize({top:top,height:panelHeight});top+=panelHeight;}else{if(space>o.minHeight){p.resize({top:top,height:space});top+=space;space=0;}else{p.resize({top:top,height:o.minHeight});top+=o.minHeight;}}}else{p.resize({top:top,height:o.minHeight});top+=o.minHeight;}
p.retrieve('rightBar').style.top=top+'px';}else{break;}}
var bottom=domHeight;for(i=this.splitter.elements.length-1;i>0;i--){p=this.splitter.elements[i];if(p!==panel.domObj){o=p.retrieve('jxLayout').options;panelHeight=o.height!=null?o.height:p.getBorderBoxSize().height;if(space>0){if(space>=panelHeight){bottom-=panelHeight;space-=panelHeight;p.resize({top:bottom,height:panelHeight});}else{if(space>o.minHeight){bottom-=space;p.resize({top:bottom,height:space});space=0;}else{bottom-=o.minHeight;p.resize({top:bottom,height:o.minHeight});}}}else{bottom-=o.minHeight;p.resize({top:bottom,height:o.minHeight,bottom:null});}
bottom-=p.retrieve('leftBar').getBorderBoxSize().height;p.retrieve('leftBar').style.top=bottom+'px';}else{break;}}
panel.domObj.resize({top:top,height:panelSize,bottom:null});this.fireEvent('panelMaximize',panel);},createText:function(lang){this.parent();}});Jx.Formatter=new Class({Extends:Jx.Object,Family:'Jx.Formatter',format:function(){}});Jx.Formatter.Text=new Class({Extends:Jx.Formatter,Family:"Jx.Formatter.Text",options:{maxLength:null,ellipsis:'...'},format:function(value){var text=''+value,max=this.options.maxLength,ellipsis=this.options.ellipsis;if(max&&text.length>max){text=text.substr(0,max-ellipsis.length)+ellipsis;}
return text;}});Jx.Formatter.Uri=new Class({Extends:Jx.Formatter,Family:"Jx.Formatter.Uri",options:{format:'<a href="{string}" target="_blank">{host}</a>'},format:function(value){var uri=new URI(value),uriContent={},pattern=[],patternTmp=this.options.format.match(/\\?\{([^{}]+)\}/g);patternTmp.each(function(e){pattern.push(e.slice(1,e.length-1));});for(var i=0,j=pattern.length;i<j;i++){switch(pattern[i]){case'string':uriContent[pattern[i]]=uri.toString();break;default:uriContent[pattern[i]]=uri.get(pattern[i]);break;}}
return this.options.format.substitute(uriContent);}});Jx.Formatter.Phone=new Class({Extends:Jx.Formatter,family:"Jx.Formatter.Phone",options:{useParens:true,separator:"-"},format:function(value){var sep=this.options.separator;var v=''+value;v=v.replace(/[^0-9]/g,'');var ret='';if(v.length===11){ret=v.charAt(0);v=v.substring(1);}
if(v.length===10){if(this.options.useParens){ret=ret+"("+v.substring(0,3)+")";}else{ret=ret+sep+v.substring(0,3)+sep;}
v=v.substring(3);}
ret=ret+v.substring(0,3)+sep+v.substring(3);return ret;}});Jx.Formatter.Boolean=new Class({Extends:Jx.Formatter,Family:"Jx.Formatter.Boolean",options:{},format:function(value){var b=false;var t=Jx.type(value);switch(t){case'string':if(value==='true'){b=true;}
break;case'number':if(value!==0){b=true;}
break;case'boolean':b=value;break;default:b=true;}
return b?this.getText({set:'Jx',key:'formatter.boolean',value:'true'}):this.getText({set:'Jx',key:'formatter.boolean',value:'false'});},changeText:function(lang){this.parent();}});Jx.Formatter.Date=new Class({Extends:Jx.Formatter,Family:"Jx.Formatter.Date",options:{format:'%B %d, %Y'},format:function(value){var d=Date.parse(value);return d.format(this.options.format);}});Jx.Formatter.Number=new Class({Extends:Jx.Formatter,Family:"Jx.Formatter.Number",options:{precision:2,useParens:true,useThousands:true},format:function(value){if(Jx.type(value)==='string'){var p=value.split(',');value=p.join('');value=value.toFloat();}
value=value.toFixed(this.options.precision);var parts=value.split('.');var dec=true;if(parts.length===1){dec=false;}
var neg=false;var main;var ret='';if(parts[0].contains('-')){neg=true;main=parts[0].substring(1,parts[0].length);}else{main=parts[0];}
if(this.options.useThousands){var l=main.length,left=l%3,j=0,ts=this.getText({set:'Jx',key:'formatter.number',value:'thousandsSeparator'});for(var i=0;i<l;i++){ret=ret+main.charAt(i);if(i===left-1&&i!==l-1){ret=ret+ts;}else if(i>=left){j++;if(j===3&&i!==l-1){ret=ret+ts;j=0;}}}}else{ret=parts[0];}
if(dec){ret=ret+this.getText({set:'Jx',key:'formatter.number',value:'decimalSeparator'})+parts[1];}
if(neg&&this.options.useParens){ret="("+ret+")";}else if(neg&&!this.options.useParens){ret="-"+ret;}
return ret;},changeText:function(lang){this.parent();}});Jx.Formatter.Currency=new Class({Extends:Jx.Formatter.Number,Family:"Jx.Formatter.Currency",options:{},format:function(value){this.options.precision=2;value=this.parent(value);var neg=false;if(value.contains('(')||value.contains('-')){neg=true;}
var ret;if(neg&&!this.options.useParens){ret="-"+this.getText({set:'Jx',key:'formatter.currency',value:'sign'})+value.substring(1,value.length);}else{ret=this.getText({set:'Jx',key:'formatter.currency',value:'sign'})+value;}
return ret;},changeText:function(lang){this.parent();}});Jx.Adaptor=new Class({Extends:Jx.Plugin,Family:'Jx.Adaptor',name:'Jx.Adaptor',options:{template:'',useTemplate:true,store:null},columnsNeeded:null,init:function(){var options=this.options;this.parent();this.store=options.store;if(options.useTemplate&&(this.store.getFields()!==undefined||this.store.getFields()!==null)){this.columnsNeeded=this.store.parseTemplate(options.template);}},attach:function(widget){this.parent(widget);this.widget=widget;},detach:function(){this.parent();}});Jx.Adaptor.ListView={}
Jx.Adaptor.ListView.Fill=new Class({Extends:Jx.Adaptor,Family:'Jx.Adaptor.Listview.Fill',Binds:['fill'],name:'listview.fill',options:{itemTemplate:"<li class='jxListItemContainer'><a class='jxListItem' href='javascript:void(0);'><span class='itemLabel'>{label}</span></a></li>",emptyMessage:null},itemColumnsNeeded:null,init:function(){this.parent();},attach:function(listview){this.parent(listview);this.currentIndex=0;this.store.addEvents({'storeDataLoaded':this.fill,'storeDataLoadFailed':this.fill,'storeRecordDeleted':this.fill});listview.addEvent('postRender',function(){if(this.store.loaded){this.fill();}}.bind(this));},detach:function(){this.parent();this.store.removeEvents({'storeDataLoaded':this.fill,'storeDataLoadFailed':this.fill,'storeRecordDeleted':this.fill});},fill:function(){this.widget.empty();if(this.columnsNeeded===undefined||this.columnsNeeded===null){this.columnsNeeded=this.store.parseTemplate(this.options.template);}
if(this.itemColumnsNeeded===undefined||this.itemColumnsNeeded===null){this.itemColumnsNeeded=this.store.parseTemplate(this.options.itemTemplate);}
var items=[];var maxRecords=this.store.count();if(maxRecords>0){for(var i=0;i<maxRecords;i++){var record=this.store.getRecord(i);var template=this.store.fillTemplate(record,this.options.template,this.columnsNeeded);var o={item:template};var theTemplate=this.store.fillTemplate(record,this.options.itemTemplate,this.columnsNeeded,o);var item=new Jx.ListItem({template:theTemplate});document.id(item).store('storeId',i);items.push(item);this.fireEvent('itemCreated',[item,record]);}}else{var template="<li class='jxListItemContainer'><a class='jxListItem' href='javascript:void(0);'><span class='itemLabel'>{label}</span></a></li>";var o={label:this.options.emptyMessage}
var theTemplate=new String(template).substitute(o);var item=new Jx.ListItem({template:theTemplate});items.push(item);}
this.widget.add(items);}});Jx.Adaptor.Tree=new Class({Extends:Jx.Adaptor,Family:'Jx.Adaptor.Tree',Binds:['fill','checkFolder'],options:{monitorFolders:false,startingNodeKey:-1,folderOptions:null,itemOptions:null},folders:null,currentRecord:-1,init:function(){this.folders={};this.parent();},attach:function(tree){this.parent(tree);this.tree=tree;if(this.options.monitorFolders){this.strategy=this.store.getStrategy('progressive');if(this.strategy===undefined||this.strategy===null){this.strategy=new Jx.Store.Strategy.Progressive({dropRecords:false,getPaginationParams:function(){return{};}});this.store.addStrategy(this.strategy);}else{this.strategy.options.dropRecords=false;this.strategy.options.getPaginationParams=function(){return{};};}}
this.store.addEvent('storeDataLoaded',this.fill);},detach:function(){this.parent();this.store.removeEvent('storeDataLoaded',this.fill);},firstLoad:function(){this.busy='tree';this.tree.setBusy(true);this.store.load({node:this.options.startingNodeKey});},fill:function(){var i,template,item,p,folder,options=this.options;if(this.busy=='tree'){this.tree.setBusy(false);this.busy='none';}else if(this.busy=='folder'){this.busyFolder.setBusy(false);this.busy='none';}
var l=this.store.count()-1;for(i=this.currentRecord+1;i<=l;i++){template=this.store.fillTemplate(i,options.template,this.columnsNeeded);if(this.hasChildren(i)){item=new Jx.Tree.Folder(Object.merge({},options.folderOptions,{label:template}));if(options.monitorFolders){item.addEvent('disclosed',this.checkFolder);}
this.folders[i]=item;}else{item=new Jx.Tree.Item(Object.merge({},options.itemOptions,{label:template}));}
document.id(item).store('index',i).store('jxAdaptor',this);if(this.hasParent(i)){p=this.getParentIndex(i);folder=this.folders[p];folder.add(item);}else{this.tree.add(item);}}
this.currentRecord=l;},checkFolder:function(folder){var items=folder.items(),index,node;if(items===undefined||items===null||items.length===0){index=document.id(folder).retrieve('index');node=this.store.get('primaryKey',index);this.busyFolder=folder;this.busyFolder.setBusy(true);this.busy='folder';this.store.load({node:node});}},hasChildren:function(){},hasParent:function(){},getParentIndex:function(){}});Jx.Adaptor.Tree.Mptt=new Class({Extends:Jx.Adaptor.Tree,Family:'Jx.Adaptor.Tree.Mptt',name:'tree.mptt',options:{left:'left',right:'right'},hasChildren:function(index){var l=this.store.get(this.options.left,index).toInt(),r=this.store.get(this.options.right,index).toInt();return(l+1!==r);},hasParent:function(index){var i=this.getParentIndex(index),result=false;if(i!==undefined&&i!==null){result=true;}
return result;},getParentIndex:function(index){var store=this.store,options=this.options,l,r,i,pl,pr;l=store.get(options.left,index).toInt();r=store.get(options.right,index).toInt();for(i=index-1;i>=0;i--){pl=store.get(options.left,i).toInt();pr=store.get(options.right,i).toInt();if(pl<l&&pr>r){return i;}}
return null;}});Jx.Adaptor.Tree.Object=new Class({Extends:Jx.Plugin,Family:'Jx.Adaptor.Tree.Object',options:{protocol:null,folderOptions:{open:false},itemOptions:{active:false}},init:function(){this.parent();this.bound.fill=this.fill.bind(this);},fill:function(resp){this.options.protocol.removeEvent('dataLoaded',this.bound.fill);if(resp.success()){this.tree.empty();var items=resp.data;for(var j=0;j<items.length;j++){this.makeItems(items[j],this.tree);}}},makeItems:function(node,tree){if(node.children!=undefined){var folder=new Jx.Tree.Folder(Object.merge({},this.options.folderOptions,{label:node.label,image:node.icon}));tree.add(folder);for(var j=0;j<node.children.length;j++){this.makeItems(node.children[j],folder);}}else{var item=new Jx.Tree.Item(Object.merge({},this.options.itemOptions,{label:node.label,image:node.icon,}));tree.add(item);}},load:function(params){this.options.protocol.addEvent('dataLoaded',this.bound.fill);var opts={};if(params!==undefined&&params!==null){opts.data=params;}else{opts.data={};}
opts.data.page=0;opts.data.itemsPerPage=-1;this.options.protocol.read(opts);},attach:function(tree){this.tree=tree;this.parent(tree);},detach:function(){this.tree=null;this.parent();}});Jx.Adaptor.Combo={};Jx.Adaptor.Tree.Parent=new Class({Extends:Jx.Adaptor.Tree,Family:'Jx.Adaptor.Tree.Parent',options:{parentColumn:'parent',folderColumn:'folder'},hasChildren:function(index){return this.store.get(this.options.folderColumn,index);},hasParent:function(index){if(this.store.get(this.options.parentColumn,index).toInt()!==-1){return true;}
return false;},getParentIndex:function(index){var pk=this.store.get(this.options.parentColumn,index);return this.store.findByColumn('primaryKey',pk);}});Jx.Adaptor.Combo.Fill=new Class({Extends:Jx.Adaptor,Family:'Jx.Adaptor.Combo.Fill',name:'combo.fill',Binds:['fill'],options:{imagePathColumn:null,imageClassColumn:null,selectedFn:null,noRepeats:false},labels:null,init:function(){this.parent();if(this.options.noRepeat){this.labels=[];}},attach:function(combo){this.parent(combo);this.store.addEvent('storeDataLoaded',this.fill);if(this.store.loaded){this.fill();}},detach:function(){this.parent();this.store.removeEvent('storeDataLoaded',this.fill);},fill:function(){var template,items=[],selected,obj,options=this.options,noRepeat=this.options.noRepeat;this.widget.empty();this.store.first();items=[];this.store.each(function(record){template=this.store.fillTemplate(record,options.template,this.columnsNeeded);if(!noRepeat||(noRepeat&&!this.labels.contains(template))){selected=false;if(Jx.type(options.selectedFn)=='function'){selected=options.selectedFn.apply(ths,Array.from(record));}
obj={label:template,image:record.get(options.imagePathColumn),imageClass:record.get(options.imageClassColumn),selected:selected};items.push(obj);if(noRepeat){this.labels.push(template);}}},this);this.widget.add(items);}});Jx.Styles=new(new Class({dynamicStyleMap:{},getCssRule:function(selector,styleSheetName){var ss=this.getDynamicStyleSheet(styleSheetName),rule=null,i;if(ss.indicies){i=ss.indicies.indexOf(selector);if(i==-1){rule=this.insertCssRule(selector,'',styleSheetName);}else{if(Browser.ie){rule=ss.sheet.rules[i];}else{rule=ss.sheet.cssRules[i];}}}
return rule;},insertCssRule:function(selector,declaration,styleSheetName){var ss=this.getDynamicStyleSheet(styleSheetName),rule,text=selector+" {"+declaration+"}",index;if(Browser.ie){if(declaration===''){declaration='{}';}
index=ss.styleSheet.addRule(selector,declaration);rule=ss.styleSheet.rules[index];}else{ss.sheet.insertRule(text,ss.indicies.length);rule=ss.sheet.cssRules[ss.indicies.length];}
ss.indicies.push(selector);return rule;},removeCssRule:function(selector,styleSheetName){var ss=this.getDynamicStyleSheet(styleSheetName),i=ss.indicies.indexOf(selector),result=false;ss.indicies.splice(i,1);if(Browser.ie){ss.removeRule(i);result=true;}else{ss.sheet.deleteRule(i);result=true;}
return result;},getDynamicStyleSheet:function(name){name=(name)?name:'default';if(!Object.keys(this.dynamicStyleMap).contains(name)){var sheet=new Element('style').set('type','text/css').inject(document.head);sheet.indicies=[];this.dynamicStyleMap[name]=sheet;}
return this.dynamicStyleMap[name];},enableStyleSheet:function(name){this.getDynamicStyleSheet(name).disabled=false;},disableStyleSheet:function(name){this.getDynamicStyleSheet(name).disabled=true;},removeStyleSheet:function(name){this.disableStyleSheet(name);this.getDynamicStyleSheet(name).dispose();delete this.dynamicStyleMap[name];},isStyleSheetDefined:function(name){return Object.keys(this.dynamicStyleMap).contains(name);}}))();Jx.Plugin.Grid={};Jx.Grid=new Class({Extends:Jx.Widget,Family:'Jx.Grid',Binds:['storeLoaded','clickColumnHeader','moveColumnHeader','clickRowHeader','moveRowHeader','clickCell','dblclickCell','moveCell','leaveGrid','resize','drawStore','scroll','addRow','removeRow','removeRows','updateRow','storeChangesCompleted'],pluginNamespace:'Grid',options:{parent:null,template:"<div class='jxWidget'><div class='jxGridContainer jxGridRowCol'></div><div class='jxGridContainer jxGridColumnsContainer'><table class='jxGridTable jxGridHeader jxGridColumns'><thead class='jxGridColumnHead'></thead></table></div><div class='jxGridContainer jxGridHeader jxGridRowContainer'><table class='jxGridTable jxGridRows'><thead class='jxGridRowBody'></thead></table></div><div class='jxGridContainer jxGridContentContainer'><table class='jxGridTable jxGridContent'><tbody class='jxGridTableBody'></tbody></table></div></div>",columnModel:null,rowModel:null,store:null},classes:{domObj:'jxWidget',columnContainer:'jxGridColumnsContainer',colObj:'jxGridColumns',colTableBody:'jxGridColumnHead',rowContainer:'jxGridRowContainer',rowObj:'jxGridRows',rowColContainer:'jxGridRowCol',rowTableBody:'jxGridRowBody',contentContainer:'jxGridContentContainer',gridObj:'jxGridContent',gridTableBody:'jxGridTableBody'},columnModel:null,rowModel:null,parameters:['options'],store:null,styleSheet:'JxGridStyles',hooks:null,uniqueId:null,init:function(){this.uniqueId=this.generateId('jxGrid_');this.store=this.options.store;var options=this.options,opts;if(options.rowModel!==undefined&&options.rowModel!==null){if(options.rowModel instanceof Jx.Grid.RowModel){this.rowModel=options.rowModel;this.rowModel.grid=this;}else if(Jx.type(options.rowModel)=='object'){this.rowModel=new Jx.Grid.RowModel(Object.append({grid:this},options.rowModel));}}else{this.rowModel=new Jx.Grid.RowModel({grid:this});}
if(options.columnModel!==undefined&&options.columnModel!==undefined){if(options.columnModel instanceof Jx.Grid.ColumnModel){this.columnModel=options.columnModel;this.columnModel.grid=this;}else if(Jx.type(options.columnModel)==='object'){this.columnModel=new Jx.Grid.ColumnModel(Object.append({grid:this},options.columnModel));}}else{this.columnModel=new Jx.Grid.ColumnModel({grid:this});}
this.hooks={'gridScroll':false,'gridColumnEnter':false,'gridColumnLeave':false,'gridColumnClick':false,'gridRowEnter':false,'gridRowLeave':false,'gridRowClick':false,'gridCellClick':false,'gridCellDblClick':false,'gridCellEnter':false,'gridCellLeave':false,'gridMouseLeave':false};this.storeEvents={'storeDataLoaded':this.storeLoaded,'storeRecordAdded':this.addRow,'storeColumnChanged':this.updateRow,'storeRecordRemoved':this.removeRow,'storeMultipleRecordsRemoved':this.removeRows,'storeChangesCompleted':this.storeChangesCompleted};this.parent();},wantEvent:function(eventName){var hook=this.hooks[eventName];if(hook===false){switch(eventName){case'gridColumnEnter':case'gridColumnLeave':this.colObj.addEvent('mousemove',this.moveColumnHeader);this.hooks=Object.merge(this.hooks,{'gridColumnEnter':true,'gridColumnLeave':true});break;case'gridColumnClick':this.colObj.addEvent('click',this.clickColumnHeader);this.hooks.gridColumnClick=true;break;case'gridRowEnter':case'gridRowLeave':this.rowObj.addEvent('mousemove',this.moveRowHeader);this.hooks=Object.merge(this.hooks,{'gridRowEnter':true,'gridRowLeave':true});break;case'gridRowClick':this.rowObj.addEvent('click',this.clickRowHeader);this.hooks.gridRowClick=true;break;case'gridCellEnter':case'gridCellLeave':this.gridObj.addEvent('mousemove',this.moveCell);this.hooks=Object.merge(this.hooks,{'gridCellEnter':true,'gridCellLeave':true});break;case'gridCellClick':this.gridObj.addEvent('click',this.clickCell);this.hooks.gridCellClick=true;break;case'gridCellDblClick':this.gridObj.addEvent('dblclick',this.dblclickCell);this.hooks.gridCellDblClick=true;break;case'gridMouseLeave':this.rowObj.addEvent('mouseleave',this.leaveGrid);this.colObj.addEvent('mouseleave',this.leaveGrid);this.gridObj.addEvent('mouseleave',this.leaveGrid);this.hooks.gridMouseLeave=true;break;case'gridScroll':this.contentContainer.addEvent('scroll',this.scroll);break;default:break;}}},scroll:function(){this.columnContainer.scrollLeft=this.contentContainer.scrollLeft;this.rowContainer.scrollTop=this.contentContainer.scrollTop;},render:function(){if(this.domObj){this.redraw();return;}
this.parent();var store=this.store;this.domObj.addClass(this.uniqueId);new Jx.Layout(this.domObj,{onSizeChange:this.resize});if(store instanceof Jx.Store){store.addEvents(this.storeEvents);if(store.loaded){this.storeLoaded(store);}}
if(!this.columnModel.useHeaders()){this.columnContainer.dispose();}else{this.wantEvent('gridScroll');}
if(!this.rowModel.useHeaders()){this.rowContainer.dispose();}else{this.wantEvent('gridScroll');}
this.contentContainer.setStyle('overflow','auto');if(document.id(this.options.parent)){this.addTo(this.options.parent);this.resize();}},resize:function(){var p=this.domObj.getParent(),parentSize=p.getSize(),colHeaderHeight=0,rowHeaderWidth=0;if(this.columnModel.useHeaders()){colHeaderHeight=this.columnModel.getHeaderHeight();}
if(this.rowModel.useHeaders()){rowHeaderWidth=this.rowModel.getRowHeaderWidth();}
this.rowColContainer.setBorderBoxSize({width:rowHeaderWidth,height:colHeaderHeight});this.columnContainer.setStyles({top:0,left:rowHeaderWidth}).setBorderBoxSize({width:parentSize.x-rowHeaderWidth,height:colHeaderHeight});this.rowContainer.setStyles({top:colHeaderHeight,left:0}).setBorderBoxSize({width:rowHeaderWidth,height:parentSize.y-colHeaderHeight});this.contentContainer.setStyles({top:colHeaderHeight,left:rowHeaderWidth}).setBorderBoxSize({width:parentSize.x-rowHeaderWidth,height:parentSize.y-colHeaderHeight});},setStore:function(store){if(this.store){this.store.removeEvents(this.storeEvents);}
if(store instanceof Jx.Store){this.store=store;store.addEvents(this.storeEvents);if(store.loaded){this.storeLoaded(store);}
this.render();this.domObj.resize();}else{this.destroyGrid();}},getStore:function(){return this.store;},storeLoaded:function(store){this.redraw();},storeChangesCompleted:function(results){if(results&&results.successful){}},redraw:function(){var store=this.store,template='',tr,columns=[],useRowHeaders=this.rowModel.useHeaders();this.fireEvent('beginCreateGrid');this.gridObj.getElement('tbody').empty();this.hoverColumn=this.hoverRow=this.hoverCell=null;store.options.fields.each(function(col,index){if(!this.columnModel.getByName(col.name)){var renderer=new Jx.Grid.Renderer.Text(),format=(col.format!==undefined&&col.format!==null)?col.format:null,template="<span class='jxGridCellContent'>"+((col.label!==undefined&&col.label!==null)?col.label:col.name).capitalize()+"</span>",column;if(col.renderer!==undefined){if(Jx.type(col.renderer)=='string'){if(Jx.Grid.Renderer[col.renderer.capitalize()]){renderer=new Jx.Grid.Renderer[col.renderer.capitalize()]();}}else if(Jx.type(col.renderer)=='object'&&col.renderer.type!==undefined&&col.renderer.type!==null&&Jx.Grid.Renderer[col.renderer.type.capitalize()]){renderer=new Jx.Grid.Renderer[col.renderer.type.capitalize()](col.renderer);}}
if(format){if(Jx.type(format)=='string'&&Jx.Formatter[format.capitalize()]!==undefined&&Jx.Formatter[format.capitalize()]!==null){renderer.options.formatter=new Jx.Formatter[format.capitalize()]();}else if(Jx.type(format)=='object'&&format.type!==undefined&&format.type!==null&&Jx.Formatter[format.type.capitalize()]!==undefined&&Jx.Formatter[format.type.capitalize()]!==null){renderer.options.formatter=new Jx.Formatter[format.type.capitalize()](format);}}
column=new Jx.Grid.Column({grid:this,template:template,renderMode:(col.renderMode!==undefined&&col.renderMode!==null)?col.renderMode:(col.width!==undefined&&col.width!==undefined)?'fixed':'fit',width:(col.width!==undefined&&col.width!==null)?col.width:null,isEditable:(col.editable!==undefined&&col.editable!==null)?col.editable:false,isSortable:(col.sortable!==undefined&&col.sortable!==null)?col.sortable:false,isResizable:(col.resizable!==undefined&&col.resizable!==null)?col.resizable:false,isHidden:true,name:col.name||'',renderer:renderer});columns.push(column);}},this);this.columnModel.addColumns(columns);if(this.columnModel.useHeaders()){tr=new Element('tr');this.columnModel.getHeaders(tr);tr.adopt(new Element('th',{'class':'jxGridColHead','html':'&nbsp',styles:{width:1000}}));this.colObj.getElement('thead').empty().adopt(tr);}
this.columnModel.calculateWidths();this.columnModel.createRules(this.styleSheet+'Columns','.'+this.uniqueId);this.drawStore();this.fireEvent('doneCreateGrid');},addRow:function(store,record,position){if(this.store.loaded){if(position==='bottom'){this.store.last();}else{this.store.first();}
this.drawRow(record,this.store.index,position);}},updateRow:function(index){var record=this.store.getRecord(index);this.drawRow(record,index,'replace');},removeRow:function(store,index){this.gridObj.deleteRow(index);this.rowObj.deleteRow(index);},removeRows:function(store,first,last){for(var i=first;i<=last;i++){this.removeRow(store,first);}},setColumnWidth:function(column,width){if(column){column.width=width;if(column.rule){column.rule.style.width=width+'px';}
if(column.cellRule){column.cellRule.style.width=width+'px';}}},drawStore:function(){var useHeaders=this.rowModel.useHeaders(),blank;this.domObj.resize();this.gridTableBody.empty();if(useHeaders){this.rowTableBody.empty();}
this.store.each(function(record,index){this.store.index=index;this.drawRow(record,index);},this);if(useHeaders){blank=new Element('tr',{styles:{height:1000}});blank.adopt(new Element('th',{'class':'jxGridRowHead',html:'&nbsp'}));this.rowTableBody.adopt(blank);}},drawRow:function(record,index,position){var columns=this.columnModel,body=this.gridTableBody,row=this.rowModel,store=this.store,rowHeaders=row.useHeaders(),autoRowHeight=row.options.rowHeight=='auto',rowBody=this.rowTableBody,rowHeaderColumn,rowHeaderColumnIndex,renderer,formatter,getData,tr,th,text=index+1,rh;if(position===undefined||position===null||!['top','bottom','replace'].contains(position)){position='bottom';}
tr=row.getGridRowElement(index,'');if(position=='replace'&&index<body.childNodes.length){tr.inject(body.childNodes[index],'after');body.childNodes[index].dispose();}else{tr.inject(body,position);}
columns.getRow(tr,record);if(rowHeaders){if(row.options.headerColumn){rowHeaderColumn=columns.getByName(row.options.headerColumn);renderer=rowHeaderColumn.options.renderer;if(!renderer.domInsert){formatter=rowHeaderColumn.options.formatter;rowHeaderColumnIndex=columns.columns.indexOf(rowHeaderColumn);getData=function(record){var data={},text='';if(renderer.options.textTemplate){text=store.fillTemplate(null,renderer.options.textTemplate,renderer.columnsNeeded);}else{text=record.data.get(rowHeaderColumn.name);}
data['col'+rowHeaderColumnIndex]=text;return data;};text=rowHeaderColumn.getTemplate(rowHeaderColumnIndex).substitute(getData(record));}else{text='';}}
th=row.getRowHeaderCell(text);if(row.options.headerColumn&&renderer.domInsert){th.adopt(rowHeaderColumn.getHTML());}
rh=new Element('tr').adopt(th);if(position=='replace'&&index<rowBody.childNodes.length){rh.inject(rowBody.childNodes[index],'after');rowBody.childNodes[index].dispose();}else{rh.inject(rowBody,position);}
if(autoRowHeight){rh.setBorderBoxSize({height:tr.getBorderBoxSize().height});}}
this.fireEvent('gridDrawRow',[index,record]);},clickColumnHeader:function(e){var target=e.target;if(target.getParent('thead')){target=target.tagName=='TH'?target:target.getParent('th');this.fireEvent('gridColumnClick',target);}},moveColumnHeader:function(e){var target=e.target;target=target.tagName=='TH'?target:target.getParent('th.jxGridColHead');if(target){if(this.hoverColumn!=target){if(this.hoverColumn){this.fireEvent('gridColumnLeave',this.hoverColumn);}
if(!target.hasClass('jxGridColHead')){this.leaveGrid(e);}else{this.hoverColumn=target;this.fireEvent('gridColumnEnter',target);}}}},clickRowHeader:function(e){var target=e.target;if(target.getParent('tbody')){target=target.tagName=='TH'?target:target.getParent('th');this.fireEvent('gridRowClick',target);}},moveRowHeader:function(e){var target=e.target;target=target.tagName=='TH'?target:target.getParent('th.jxGridRowHead');if(target){if(this.hoverRow!=target){if(this.hoverRow){this.fireEvent('gridRowLeave',this.hoverRow);}
if(!target.hasClass('jxGridRowHead')){this.leaveGrid(e);}else{this.hoverRow=target;this.fireEvent('gridRowEnter',target);}}}},clickCell:function(e){var target=e.target;if(target.getParent('tbody')){target=target.tagName=='TD'?target:target.getParent('td');this.fireEvent('gridCellClick',target);}},dblclickCell:function(e){var target=e.target;if(target.getParent('tbody')){target=target.tagName=='TD'?target:target.getParent('td');this.fireEvent('gridCellDblClick',target);}},moveCell:function(e){var target=e.target,data,body,row,index,column;target=target.tagName=='TD'?target:target.getParent('td.jxGridCell');if(target){if(this.hoverCell!=target){if(this.hoverCell){this.fireEvent('gridCellLeave',this.hoverCell);}
if(!target.hasClass('jxGridCell')){this.leaveGrid(e);}else{this.hoverCell=target;this.getCellData(target);this.fireEvent('gridCellEnter',target);}}}},getCellData:function(cell){var data=null,index,column,row;if(!cell.hasClass('jxGridCell')){cell=cell.getParent('td.jxGridCell');}
if(cell){body=this.gridTableBody;row=body.getChildren().indexOf(cell.getParent('tr'));this.columnModel.columns.some(function(col,idx){if(cell.hasClass('jxGridCol'+idx)){index=idx;column=col;return true;}
return false;});data={row:row,column:column,index:index};cell.store('jxCellData',data);}
return data;},leaveGrid:function(e){this.hoverCell=null;this.fireEvent('gridMouseLeave');},changeText:function(lang){this.parent();this.render();},addEvent:function(name,fn){this.wantEvent(name);this.parent(name,fn);}});Jx.Grid.Renderer=new Class({Extends:Jx.Widget,Family:'Jx.Grid.Renderer',parameters:['options'],options:{deferRender:true,template:'<span class="jxGridCellContent"></span>'},attached:null,domInsert:false,classes:{domObj:'jxGridCellContent'},column:null,init:function(){this.parent();this.attached=false;},render:function(){this.parent();},setColumn:function(column){if(column instanceof Jx.Grid.Column){this.column=column;}}});Jx.Field.Checkbox=new Class({Extends:Jx.Field,Family:"Jx.Field.Checkbox",options:{template:'<span class="jxInputContainer"><input class="jxInputCheck" type="checkbox" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span></span>',checked:false,labelSeparator:''},type:'Check',render:function(){this.parent();if(this.options.checked!==undefined&&this.options.checked!==null&&this.options.checked){if(Browser.ie){var parent=this.field.getParent();var sibling;if(parent){sibling=this.field.getPrevious();}
this.field.setStyle('visibility','hidden');this.field.inject(document.id(document.body));this.field.checked=true;this.field.defaultChecked=true;this.field.dispose();this.field.setStyle('visibility','visible');if(sibling){this.field.inject(sibling,'after');}else if(parent){this.field.inject(parent,'top');}}else{this.field.set("checked","checked");this.field.set("defaultChecked","checked");}}
if(this.label){this.label.addEvent('click',function(ev){this.setValue(this.getValue()!==null?false:true);}.bind(this));}},setValue:function(v){if(!this.options.readonly){if(v==='checked'||v==='true'||v===true){this.field.set('checked',"checked");}else{this.field.erase('checked');}}},getValue:function(){if(this.field.get("checked")){return this.field.get("value");}else{return null;}},reset:function(){if(this.options.checked){this.field.set('checked',"checked");}else{this.field.erase('checked');}},getChecked:function(){return this.field.get("checked");}});Jx.Grid.Renderer.Checkbox=new Class({Extends:Jx.Grid.Renderer,Family:'Jx.Grid.Renderer.Checkbox',Binds:['onBlur','onChange'],options:{useStore:false,field:null,updateStore:false,checkboxOptions:{template:'<input class="jxInputContainer jxInputCheck" type="checkbox" name="{name}"/>',name:''}},domInsert:true,init:function(){this.parent();},render:function(){this.parent();var checkbox=new Jx.Field.Checkbox(this.options.checkboxOptions);this.domObj.adopt(document.id(checkbox));if(this.options.useStore){checkbox.setValue(this.store.get(this.options.field));}
checkbox.addEvents({'blur':this.onBlur,'change':this.onChange});},setColumn:function(column){this.column=column;if(this.options.useStore){this.store=this.column.grid.getStore();this.attached=true;}},onBlur:function(field){if(this.options.updateStore){this.updateStore(field);}
this.column.grid.fireEvent('checkBlur',[this.column,field]);},onChange:function(field){if(this.options.updateStore){this.updateStore(field);}
this.fireEvent('change',[this.column,field]);},updateStore:function(field){var newValue=field.getValue();var data=document.id(field).getParent().retrieve('jxCellData');var row=data.row;if(this.store.get(this.options.field,row)!==newValue){this.store.set(this.options.field,newValue,row);}}});Jx.Grid.RowModel=new Class({Extends:Jx.Object,Family:'Jx.RowModel',options:{useHeaders:false,alternateRowColors:false,rowClasses:{odd:'jxGridRowOdd',even:'jxGridRowEven',all:'jxGridRowAll'},rowHeight:20,headerWidth:40,headerColumn:null},grid:null,heights:[],rules:{},parameters:['options','grid'],init:function(){this.parent();if(this.options.grid!==undefined&&this.options.grid!==null&&this.options.grid instanceof Jx.Grid){this.grid=this.options.grid;}},getGridRowElement:function(row,text){var o=this.options,rc=o.rowClasses,c=o.alternateRowColors?(row%2?rc.even:rc.odd):rc.all,tr=new Element('tr',{'class':'jxGridRow'+row+' '+c,html:text||''});return tr;},getRowHeaderCell:function(text){text=text?'<span class="jxGridCellContent">'+text+'</span>':'';return new Element('th',{'class':'jxGridRowHead',html:text});},getRowHeaderWidth:function(){var col,width;if(this.options.headerColumn){col=this.grid.columnModel.getByName(this.options.headerColumn);width=col.getWidth();if(width===undefined&&width===null){col.calculateWidth(true);width=col.getWidth();}}else{width=this.options.headerWidth;}
return width;},getHeight:function(row){var h=this.options.rowHeight,rowEl;if(this.heights[row]!==undefined&&this.heights[row]!==null){h=this.heights[row];}else if(this.options.rowHeight!==undefined&&this.options.rowHeight!==null){if(this.options.rowHeight=='auto'){h=20;rowEl=this.grid.gridTableBody.rows[row];if(rowEl){h=rowEl.getContentBoxSize().height;}}else if(Jx.type(this.options.rowHeight)!=='number'){h=20;}}
return h;},calculateHeights:function(){if(this.options.rowHeight==='auto'||this.options.rowHeight===undefined||this.options.rowHeight===null){document.id(this.grid.gridTableBody).getChildren().each(function(row){row=document.id(row);var data=row.retrieve('jxRowData');var s=row.getContentBoxSize();this.heights[data.row]=s.height;},this);document.id(this.grid.rowTableHead).getChildren().each(function(row){row=document.id(row);var data=row.retrieve('jxRowData');if(data){var s=row.getContentBoxSize();this.heights[data.row]=Math.max(this.heights[data.row],s.height);if(Browser.safari||Browser.chrome){this.heights[data.row]-=1;}}},this);}else{document.id(this.grid.rowTableHead).getChildren().each(function(row,idx){this.heights[idx]=this.options.rowHeight;},this);}},useHeaders:function(){return this.options.useHeaders;},getRowHeader:function(list){var th=this.getRowHeaderCell();th.store('jxCellData',{rowHeader:true,row:this.grid.store.getPosition()});list.add(th);},getRowHeaderColumn:function(){return this.options.headerColumn;}});Jx.Grid.Renderer.Text=new Class({Extends:Jx.Grid.Renderer,Family:'Jx.Grid.Renderer.Text',options:{formatter:null,textTemplate:null,css:null},store:null,columnsNeeded:null,init:function(){this.parent();var options=this.options,t;if(options.formatter!==undefined&&options.formatter!==null&&!(options.formatter instanceof Jx.Formatter)){t=Jx.type(options.formatter);if(t==='object'){if(options.formatter.options!==undefined&&options.formatter.options!==null){options.formatter.options={};}
options.formatter=new Jx.Formatter[options.formatter.name](options.formatter.options);}}},setColumn:function(column){this.parent();this.store=column.grid.getStore();this.attached=true;if(this.options.textTemplate!==undefined&&this.options.textTemplate!==null){this.columnsNeeded=this.store.parseTemplate(this.options.textTemplate);}},render:function(){this.parent();var text='';if(this.options.textTemplate!==undefined&&this.options.textTemplate!==null){if((this.columnsNeeded===undefined&&this.columnsNeeded===null)||(Jx.type(this.columnsNeeded)==='array'&&this.columnsNeeded.length===0)){this.columnsNeeded=this.store.parseTemplate(this.options.textTemplate);}
text=this.store.fillTemplate(null,this.options.textTemplate,this.columnsNeeded);}
if(this.options.formatter!==undefined&&this.options.formatter!==null){text=this.options.formatter.format(text);}
this.domObj.set('html',text);if(this.options.css!==undefined&&this.options.css!==null&&Jx.type(this.options.css)==='function'){this.domObj.addClass(this.options.css.apply(this,Array.from(text)));}else if(this.options.css!==undefined&&this.options.css!==null&&Jx.type(this.options.css)==='string'){this.domObj.addClass(this.options.css);}}});Jx.Grid.Renderer.Button=new Class({Extends:Jx.Grid.Renderer,Family:'Jx.Grid.Renderer.Button',Binds:[],options:{template:'<span class="buttons"></span>',buttonOptions:null},domInsert:true,classes:{domObj:'buttons'},init:function(){this.parent();},render:function(){this.parent();Array.from(this.options.buttonOptions).each(function(opts){var button=new Jx.Button(opts);this.domObj.grab(document.id(button));},this);}});Jx.Grid.Column=new Class({Extends:Jx.Widget,Family:'Jx.Grid.Column',options:{renderMode:'fit',width:100,isEditable:false,isSortable:false,isResizable:false,isHidden:false,name:'',label:null,template:null,renderer:null},classes:{domObj:'jxGridCellContent'},grid:null,parameters:['options','grid'],init:function(){this.name=this.options.name;if(this.options.template===undefined||this.options.template===null){if(this.options.label!==undefined&&this.options.label!==null){this.options.template='<span class="jxGridCellContent">'+this.options.label+'</span>';}else{this.options.template='<span class="jxGridCellContent">'+this.name.capitalize()+'</span>';}}
this.parent();if(this.options.grid!==undefined&&this.options.grid!==null&&this.options.grid instanceof Jx.Grid){this.grid=this.options.grid;}
if(this.options.renderer===undefined||this.options.renderer===null){this.options.renderer=new Jx.Grid.Renderer.Text({textTemplate:'{'+this.name+'}'});}else{if(!(this.options.renderer instanceof Jx.Grid.Renderer)){var t=Jx.type(this.options.renderer);if(t==='object'){if(this.options.renderer.options.textTemplate===undefined||this.options.renderer.options.textTemplate===null){this.options.renderer.options.textTemplate='{'+this.name+'}';}
if(this.options.renderer.name===undefined||this.options.renderer.name===null){this.options.renderer.name='Text';}
this.options.renderer=new Jx.Grid.Renderer[this.options.renderer.name.capitalize()](this.options.renderer.options);}}}
this.options.renderer.setColumn(this);},getTemplate:function(idx){return"<span class='jxGridCellContent' title='{col"+idx+"}'>{col"+idx+"}</span>";},getHeaderHTML:function(){if(this.isSortable()&&!this.sortImage){this.sortImage=new Element('img',{src:Jx.aPixel.src});this.sortImage.inject(this.domObj);}else{if(!this.isSortable()&&this.sortImage){this.sortImage.dispose();this.sortImage=null;}}
return this.domObj;},setWidth:function(newWidth,asCellWidth){asCellWidth=(asCellWidth!==undefined&&asCellWidth!==null)?asCellWidth:false;var delta=this.cellWidth-this.width;if(!asCellWidth){this.width=parseInt(newWidth,10);this.cellWidth=this.width+delta;this.options.width=newWidth;}else{this.width=parseInt(newWidth,10)-delta;this.cellWidth=newWidth;this.options.width=this.width;}
if(this.rule&&parseInt(this.width,10)>=0){this.rule.style.width=parseInt(this.width,10)+"px";}
if(this.cellRule&&parseInt(this.cellWidth,10)>=0){this.cellRule.style.width=parseInt(this.cellWidth,10)+"px";}},getWidth:function(){return this.width;},getCellWidth:function(){return this.cellWidth;},calculateWidth:function(rowHeader){rowHeader=(rowHeader!==undefined&&rowHeader!==null)?rowHeader:false;var maxWidth,maxCellWidth,store=this.grid.getStore(),t,s,oldPos,text,klass;store.first();if((this.options.renderMode=='fixed'||this.options.renderMode=='expand')&&store.valid()){t=new Element('span',{'class':'jxGridCellContent',html:'a',styles:{width:this.options.width}});s=this.measure(t,'jxGridCell');maxWidth=s.content.width;maxCellWidth=s.cell.width;}else{oldPos=store.getPosition();maxWidth=maxCellWidth=0;while(store.valid()){this.options.renderer.render();text=document.id(this.options.renderer);klass='jxGridCell';if(this.grid.rowModel.useHeaders()&&this.options.name===this.grid.rowModel.getRowHeaderColumn()){klass='jxGridRowHead';}
s=this.measure(text,klass,rowHeader,store.getPosition());if(s.content.width>maxWidth){maxWidth=s.content.width;}
if(s.cell.width>maxCellWidth){maxCellWidth=s.cell.width;}
if(store.hasNext()){store.next();}else{break;}}
if(!(this.grid.rowModel.useHeaders()&&this.options.name===this.grid.rowModel.getRowHeaderColumn())){klass='jxGridColHead';if(this.isEditable()){klass+=' jxColEditable';}
if(this.isResizable()){klass+=' jxColResizable';}
if(this.isSortable()){klass+=' jxColSortable';}
s=this.measure(this.domObj.clone(),klass);if(s.content.width>maxWidth){maxWidth=s.content.width;}
if(s.cell.width>maxCellWidth){maxCellWidth=s.cell.width;}}}
this.width=maxWidth;this.cellWidth=maxCellWidth;store.moveTo(oldPos);return this.width;},measure:function(text,klass,rowHeader,row){var d=new Element('span',{'class':klass}),s;text.inject(d);d.setStyles({'visibility':'hidden','width':'auto'});d.inject(document.body,'bottom');s=d.measure(function(){var el=this;if(!rowHeader){el=el.getFirst();}
return{content:el.getMarginBoxSize(),cell:el.getMarginBoxSize()};});d.destroy();return s;},isEditable:function(){return this.options.isEditable;},isSortable:function(){return this.options.isSortable;},isResizable:function(){return this.options.isResizable;},isHidden:function(){return this.options.isHidden;},isAttached:function(){return this.options.renderer.attached;},getHTML:function(){this.options.renderer.render();return document.id(this.options.renderer);}});Jx.Grid.ColumnModel=new Class({Extends:Jx.Object,Family:'Jx.Grid.ColumnModel',options:{headerRowHeight:20,useHeaders:false,columns:[]},columns:[],rowTemplate:null,parameters:['options','grid'],hasExpandable:null,init:function(){this.parent();if(this.options.grid!==undefined&&this.options.grid!==null&&this.options.grid instanceof Jx.Grid){this.grid=this.options.grid;}
this.hasExpandable=false;this.options.columns.each(function(col){if(col instanceof Jx.Grid.Column){this.columns.push(col);}else if(Jx.type(col)==="object"){this.columns.push(new Jx.Grid.Column(col,this.grid));}
var c=this.columns[this.columns.length-1];},this);this.buildTemplates();},addColumns:function(columns){Object.append(this.columns,columns);this.buildTemplates();},buildTemplates:function(){if(!this.grid){return;}
var rowTemplate='',hasExpandable=false,grid=this.grid,row=grid.rowModel,rhc=grid.rowModel.useHeaders()?this.getByName(row.options.headerColumn):null,colTemplate;this.columns.each(function(col,idx){var colTemplate='';if(!col.isHidden()&&col!=rhc){hasExpandable|=col.options.renderMode=='expand';if(!col.options.renderer||!col.options.renderer.domInsert){colTemplate=col.getTemplate(idx);}
rowTemplate+="<td class='jxGridCell jxGridCol"+idx+" jxGridCol"+col.options.name+"'>"+colTemplate+"</td>";}});if(!hasExpandable){rowTemplate+="<td><span class='jxGridCellUnattached'></span></td>";}
this.rowTemplate=rowTemplate;this.hasExpandable=hasExpandable;},getHeaderHeight:function(recalculate){if(this.height===undefined||this.height===null||recalculate){if(this.options.headerRowHeight!==undefined&&this.options.headerRowHeight!==null&&this.options.headerRowHeight!=='auto'){this.height=this.options.headerRowHeight;}}
return this.height;},useHeaders:function(){return this.options.useHeaders;},getByName:function(colName){var ret;this.columns.each(function(col){if(col.name===colName){ret=col;}},this);return ret;},getByField:function(field){var ret;this.columns.each(function(col){if(col.options.modelField===field){ret=col;}},this);return ret;},getByGridIndex:function(index){var headers=this.options.useHeaders?this.grid.colTableBody.getFirst().getChildren():this.grid.gridTableBody.getFirst().getChildren();var cell=headers[index];var hClasses=cell.get('class').split(' ').filter(function(cls){if(this.options.useHeaders)
return cls.test('jxColHead-');else
return cls.test('jxCol-');}.bind(this));var parts=hClasses[0].split('-');return this.getByName(parts[1]);},getHeaders:function(tr){var grid=this.grid,row=grid.rowModel,rhc=grid.rowModel.useHeaders()?this.getByName(row.options.headerColumn):null;if(this.useHeaders()){this.columns.each(function(col,idx){if(!col.isHidden()&&col!=rhc){var classes=['jxGridColHead','jxGridCol'+idx,'jxCol-'+col.options.name,'jxColHead-'+col.options.name],th;if(col.isEditable()){classes.push('jxColEditable');}
if(col.isResizable()){classes.push('jxColResizable');}
if(col.isSortable()){classes.push('jxColSortable');}
th=new Element('th',{'class':classes.join(' ')});th.store('jxCellData',{column:col,colHeader:true,index:idx});th.adopt(col.getHeaderHTML());th.inject(tr);}});if(!this.hasExpandable){new Element('th',{'class':'jxGridColHead jxGridCellUnattached'}).inject(tr);}}},getRow:function(tr,record){var data={},grid=this.grid,store=grid.store,row=grid.rowModel,rhc=grid.rowModel.useHeaders()?this.getByName(row.options.headerColumn):null,domInserts=[],i=0;this.columns.each(function(column,index){if(!column.isHidden()&&column!=rhc){if(column.options.renderer&&column.options.renderer.domInsert){domInserts.push({column:column,index:i});}else{var renderer=column.options.renderer,formatter=renderer.options.formatter,text='';if(renderer.options.textTemplate){text=store.fillTemplate(null,renderer.options.textTemplate,renderer.columnsNeeded);}else{text=record.data.get(column.name);}
if(formatter){text=formatter.format(text);}
data['col'+index]=text;}
i++;}});tr.set('html',this.rowTemplate.substitute(data));domInserts.each(function(obj){tr.childNodes[obj.index].adopt(obj.column.getHTML());});},calculateWidths:function(){var expand=null,totalWidth=0,rowHeaderWidth=0,gridSize=this.grid.contentContainer.getContentBoxSize(),leftOverSpace=0;this.columns.each(function(col,idx){var rowHeader=false;if(col.options.renderMode=='fixed'){col.calculateWidth();}else if(col.options.renderMode=='fit'){col.calculateWidth(rowHeader);}else if(col.options.renderMode=='expand'&&(expand===undefined||expand===null)){expand=col;}else{if(col.options.width!==undefined&&col.options.width!==null){col.setWidth(col.options.width);}else{col.calculateWidth(rowHeader);}}
if(!col.isHidden()){totalWidth+=Jx.getNumber(col.getCellWidth());if(rowHeader){rowHeaderWidth=col.getWidth();}}},this);if(gridSize.width>totalWidth){if(expand!==undefined&&expand!==null){leftOverSpace=gridSize.width-totalWidth;if(Browser.firefox){leftOverSpace-=this.getColumnCount(true);}else{leftOverSpace-=2;}
if(leftOverSpace>=expand.options.width){expand.options.width=leftOverSpace;expand.calculateWidth();expand.setWidth(leftOverSpace,true);totalWidth+=leftOverSpace;}else{expand.setWidth(expand.options.width);}}}
this.grid.gridObj.setContentBoxSize({'width':totalWidth});this.grid.colObj.setContentBoxSize({'width':totalWidth});},createRules:function(styleSheet,scope){var autoRowHeight=this.grid.rowModel.options.rowHeight=='auto';this.columns.each(function(col,idx){var selector=scope+' .jxGridCol'+idx,dec='';if(autoRowHeight){dec='white-space: normal !important';}
col.cellRule=Jx.Styles.insertCssRule(selector,dec,styleSheet);col.cellRule.style.width=col.getCellWidth()+"px";selector=scope+" .jxGridCol"+idx+" .jxGridCellContent";col.rule=Jx.Styles.insertCssRule(selector,dec,styleSheet);col.rule.style.width=col.getWidth()+"px";},this);},updateRule:function(column){var col=this.getByName(column);if(col.options.renderMode==='fit'){col.calculateWidth();}
col.rule.style.width=col.getWidth()+"px";col.cellRule.style.width=col.getCellWidth()+"px";},getColumnCount:function(noHidden){noHidden=(noHidden!==undefined&&noHidden!==null)?noHidden:false;var total=this.columns.length;if(noHidden){this.columns.each(function(col){if(col.isHidden()){total-=1;}},this);}
return total;},getIndexFromGrid:function(name){var headers=this.options.useHeaders?this.grid.colTableBody.getFirst().getChildren():this.grid.gridTableBody.getFirst().getChildren(),c,i=-1,self=this;headers.each(function(h){i++;var hClasses=h.get('class').split(' ').filter(function(cls){if(self.options.useHeaders)
return cls.test('jxColHead-');else
return cls.test('jxCol-');});hClasses.each(function(cls){if(cls.test(name)){c=i;}});},this);return c;}});Jx.Button.Flyout=new Class({Extends:Jx.Button,Family:'Jx.Button.Flyout',Binds:['keypressHandler','clickHandler'],options:{template:'<span class="jxButtonContainer"><a class="jxButton jxButtonFlyout jxDiscloser"><span class="jxButtonContent"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"><span class="jxButtonLabel "></span></a></span>',contentTemplate:'<div class="jxFlyout"><div class="jxFlyoutContent"></div></div>',position:{horizontal:['left left','right right'],vertical:['bottom top','top bottom']},positionElement:null,hasChrome:true},contentClasses:{contentContainer:'jxFlyout',content:'jxFlyoutContent'},content:null,render:function(){var options=this.options;if(!Jx.Button.Flyout.Stack){Jx.Button.Flyout.Stack=[];}
this.parent();this.processElements(options.contentTemplate,this.contentClasses);if(options.contentClass){this.content.addClass(options.contentClass);}
this.content.store('jxFlyout',this);if(!options.loadOnDemand||options.active){this.loadContent(this.content);}else{this.addEvent('contentLoaded',function(ev){this.show(ev);}.bind(this));}},cleanup:function(){this.content.eliminate('jxFlyout');this.content.destroy();Object.each(this.contentClasses,function(v,k){this[k]=null;},this);this.parent();},clicked:function(e){var options=this.options;if(!options.enabled){return;}
if(this.contentIsLoaded&&options.cacheContent){this.show(e);}else if(options.loadOnDemand||!options.cacheContent){this.loadContent(this.content);}else{this.show(e);}},show:function(e){var node,flyout,owner=this.owner,stack=Jx.Button.Flyout.Stack,options=this.options;if(!owner){this.owner=owner=document.body;node=document.id(this.domObj.parentNode);while(node!=document.body&&owner==document.body){flyout=node.retrieve('jxFlyout');if(flyout){this.owner=owner=flyout;break;}else{node=document.id(node.parentNode);}}}
if(stack[stack.length-1]==this){this.hide();return;}else if(owner!=document.body){if(owner.currentFlyout==this){this.hide();return;}else if(owner.currentFlyout){owner.currentFlyout.hide();}
owner.currentFlyout=this;}else{while(stack.length){stack[stack.length-1].hide();}}
stack.push(this);this.fireEvent('beforeOpen');options.active=true;this.domA.addClass(options.activeClass);this.contentContainer.setStyle('visibility','hidden');document.id(document.body).adopt(this.contentContainer);this.content.getChildren().each(function(child){if(child.resize){child.resize();}});var pos;if(options.hasChrome){this.showChrome(this.contentContainer);pos=Object.merge({},options.position,{offsets:this.chromeOffsets});}else{pos=options.position}
var rel=options.positionElement||this.domObj;this.position(this.contentContainer,rel,pos);this.contentContainer.setContentBoxSize(document.id(this.content).getMarginBoxSize());this.stack(this.contentContainer);this.contentContainer.setStyle('visibility','');document.addEvent('keydown',this.keypressHandler);document.addEvent('click',this.clickHandler);this.fireEvent('open',this);},hide:function(){if(this.owner!=document.body){this.owner.currentFlyout=null;}
Jx.Button.Flyout.Stack.pop();this.setActive(false);this.contentContainer.dispose();this.unstack(this.contentContainer);document.removeEvent('keydown',this.keypressHandler);document.removeEvent('click',this.clickHandler);this.fireEvent('close',this);},clickHandler:function(e){e=new Event(e);var elm=document.id(e.target),flyout=Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length-1];if(!elm.descendantOf(flyout.content)&&!elm.descendantOf(flyout.domObj)){flyout.hide();}},keypressHandler:function(e){e=new Event(e);if(e.key=='esc'){Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length-1].hide();}}});Jx.ButtonSet=new Class({Extends:Jx.Object,Family:'Jx.ButtonSet',Binds:['buttonChanged'],buttons:[],cleanup:function(){this.buttons.each(function(b){b.removeEvent('down',this.buttonChanged);b.setActive=null;},this);this.activeButton=null;this.buttons=null;this.parent();},add:function(){Array.from(arguments).each(function(button){if(button.domObj.hasClass(button.options.toggleClass)){button.domObj.removeClass(button.options.toggleClass);button.domObj.addClass(button.options.toggleClass+'Set');}
button.addEvent('down',this.buttonChanged);button.setActive=function(active){if(button.options.active&&this.activeButton==button){return;}else{Jx.Button.prototype.setActive.apply(button,[active]);}}.bind(this);if(!this.activeButton||button.options.active){button.options.active=false;button.setActive(true);}
this.buttons.push(button);},this);return this;},remove:function(button){this.buttons.erase(button);if(this.activeButton==button){if(this.buttons.length){this.buttons[0].setActive(true);}
button.removeEvent('down',this.buttonChanged);button.setActive=Jx.Button.prototype.setActive;}},empty:function(){this.buttons=[];this.activeButton=null;},setActiveButton:function(button){var b=this.activeButton;this.activeButton=button;if(b&&b!=button){b.setActive(false);}},buttonChanged:function(button){this.setActiveButton(button);this.fireEvent('change',this);}});Jx.Button.Multi=new Class({Extends:Jx.Button,Family:'Jx.Button.Multi',activeButton:null,buttons:null,options:{template:'<span class="jxButtonContainer"><a class="jxButton jxButtonMulti jxDiscloser"><span class="jxButtonContent"><img src="'+Jx.aPixel.src+'" class="jxButtonIcon"><span class="jxButtonLabel"></span></span></a><a class="jxButtonDisclose" href="javascript:void(0)"><img src="'+Jx.aPixel.src+'"></a></span>',menuOptions:{}},classes:{domObj:'jxButtonContainer',domA:'jxButton',domImg:'jxButtonIcon',domLabel:'jxButtonLabel',domDisclose:'jxButtonDisclose'},render:function(){this.parent();this.buttons=[];this.menu=new Jx.Menu({},this.options.menuOptions);this.menu.button=this;this.buttonSet=new Jx.ButtonSet();this.bound.click=this.clicked.bind(this);if(this.domDisclose){var button=this;var hasFocus;this.bound.disclose={click:function(e){if(this.list.count()===0){return;}
if(!button.options.enabled){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,this.button.domObj,{horizontal:['right right'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');document.addEvent('mousedown',this.bound.hide);document.addEvent('keyup',this.bound.keypress);this.fireEvent('show',this);}.bind(this.menu),mouseenter:function(){document.id(this.domObj.firstChild).addClass('jxButtonHover');if(hasFocus){this.domDisclose.addClass(this.options.pressedClass);}}.bind(this),mouseleave:function(){document.id(this.domObj.firstChild).removeClass('jxButtonHover');this.domDisclose.removeClass(this.options.pressedClass);}.bind(this),mousedown:function(e){this.domDisclose.addClass(this.options.pressedClass);hasFocus=true;this.focus();}.bind(this),mouseup:function(e){this.domDisclose.removeClass(this.options.pressedClass);}.bind(this),keydown:function(e){if(e.key=='enter'){this.domDisclose.addClass(this.options.pressedClass);}}.bind(this),keyup:function(e){if(e.key=='enter'){this.domDisclose.removeClass(this.options.pressedClass);}}.bind(this),blur:function(){hasFocus=false;}};this.domDisclose.addEvents({click:this.bound.disclose.click,mouseenter:this.bound.disclose.mouseenter,mouseleave:this.bound.disclose.mouseleave,mousedown:this.bound.disclose.mousedown,mouseup:this.bound.disclose.mouseup,keydown:this.bound.disclose.keydown,keyup:this.bound.disclose.keyup,blur:this.bound.disclose.blur});if(typeof Drag!='undefined'){new Drag(this.domDisclose,{onStart:function(){this.stop();}});}}
this.bound.show=function(){this.domA.addClass(this.options.activeClass);}.bind(this);this.bound.hide=function(){if(this.options.active){this.domA.addClass(this.options.activeClass);}}.bind(this);this.menu.addEvents({'show':this.bound.show,'hide':this.bound.hide});if(this.options.items){this.add(this.options.items);}},cleanup:function(){var self=this,bound=this.bound;if(self.domDisclose){self.domDisclose.removeEvents({click:bound.disclose.click,mouseenter:bound.disclose.mouseenter,mouseleave:bound.disclose.mouseleave,mousedown:bound.disclose.mousedown,mouseup:bound.disclose.mouseup,keydown:bound.disclose.keydown,keyup:bound.disclose.keyup,blur:bound.disclose.blur});}
self.buttonSet.destroy();self.buttonSet=null;self.buttons.each(function(b){b.removeEvents();self.menu.remove(b.multiButton);b.multiButton.destroy();b.multiButton=null;b.destroy();});self.buttons.empty();self.buttons=null;self.menu.removeEvents({'show':bound.show,'hide':bound.hide});self.menu.button=null;self.menu.destroy();self.menu=null;self.bound.show=null;self.bound.hide=null;self.bound.clicked=null;self.bound.disclose=null;self.activeButton=null;self.parent();},add:function(){Array.from(arguments).flatten().each(function(theButton){var f,opts,button;if(!theButton instanceof Jx.Button){return;}
theButton.domA.addClass('jxDiscloser');theButton.setLabel(theButton.options.label);this.buttons.push(theButton);f=this.setButton.bind(this,theButton);opts={image:theButton.options.image,imageClass:theButton.options.imageClass,label:theButton.options.label||'&nbsp;',enabled:theButton.options.enabled,tooltip:theButton.options.tooltip,toggle:true,onClick:f};if(!opts.image||opts.image.indexOf('a_pixel')!=-1){delete opts.image;}
button=new Jx.Menu.Item(opts);this.buttonSet.add(button);this.menu.add(button);theButton.multiButton=button;theButton.domA.addClass('jxButtonMulti');if(!this.activeButton){this.domA.dispose();this.setActiveButton(theButton);}},this);},remove:function(button){if(!button||!button.multiButton){return;}
if(this.menu.remove(button.multiButton)){button.multiButton=null;if(this.activeButton==button){if(!this.buttons.some(function(b){if(b!=button){this.setActiveButton(b);return true;}else{return false;}},this)){this.setActiveButton(null);}}
this.buttons.erase(button);}},empty:function(){this.buttons.each(function(b){this.remove(b);},this);},setActiveButton:function(button){if(this.activeButton){this.activeButton.domA.dispose();this.activeButton.domA.removeEvent('click',this.bound.click);}
if(button&&button.domA){this.domObj.grab(button.domA,'top');this.domA=button.domA;this.domA.addEvent('click',this.bound.click);if(this.options.toggle){this.options.active=false;this.setActive(true);}}
this.activeButton=button;},setButton:function(button){this.setActiveButton(button);button.clicked();}});Jx.ColorPalette=new Class({Extends:Jx.Widget,Family:'Jx.ColorPalette',domObj:null,options:{parent:null,color:'#000000',alpha:1,hexColors:['00','33','66','99','CC','FF']},render:function(){this.domObj=new Element('div',{id:this.options.id,'class':'jxColorPalette'});var top=new Element('div',{'class':'jxColorBar'});var d=new Element('div',{'class':'jxColorPreview'});this.selectedSwatch=new Element('div',{'class':'jxColorSelected'});this.previewSwatch=new Element('div',{'class':'jxColorHover'});d.adopt(this.selectedSwatch);d.adopt(this.previewSwatch);top.adopt(d);this.colorInputLabel=new Element('label',{'class':'jxColorLabel',html:'#'});top.adopt(this.colorInputLabel);var cc=this.changed.bind(this);this.colorInput=new Element('input',{'class':'jxHexInput','type':'text','maxLength':6,events:{'keyup':cc,'blur':cc,'change':cc}});top.adopt(this.colorInput);this.alphaLabel=new Element('label',{'class':'jxAlphaLabel','html':this.getText({set:'Jx',key:'colorpalette',value:'alphaLabel'})});top.adopt(this.alphaLabel);this.alphaInput=new Element('input',{'class':'jxAlphaInput','type':'text','maxLength':3,events:{'keyup':this.alphaChanged.bind(this)}});top.adopt(this.alphaInput);this.domObj.adopt(top);var swatchClick=this.swatchClick.bind(this);var swatchOver=this.swatchOver.bind(this);var table=new Element('table',{'class':'jxColorGrid'});var tbody=new Element('tbody');table.adopt(tbody);for(var i=0;i<12;i++){var tr=new Element('tr');for(var j=-3;j<18;j++){var bSkip=false;var r,g,b;if(j<0){if(j==-3||j==-1){r=g=b=0;bSkip=true;}else{if(i<6){r=g=b=i;}else{if(i==6){r=5;g=0;b=0;}else if(i==7){r=0;g=5;b=0;}else if(i==8){r=0;g=0;b=5;}else if(i==9){r=5;g=5;b=0;}else if(i==10){r=0;g=5;b=5;}else if(i==11){r=5;g=0;b=5;}}}}else{r=parseInt(i/6,10)*3+parseInt(j/6,10);g=j%6;b=i%6;}
var bgColor='#'+this.options.hexColors[r]+
this.options.hexColors[g]+
this.options.hexColors[b];var td=new Element('td');if(!bSkip){td.setStyle('backgroundColor',bgColor);var a=new Element('a',{'class':'colorSwatch '+(((r>2&&g>2)||(r>2&&b>2)||(g>2&&b>2))?'borderBlack':'borderWhite'),'href':'javascript:void(0)','title':bgColor,'alt':bgColor,events:{'mouseover':swatchOver,'click':swatchClick}});a.store('swatchColor',bgColor);td.adopt(a);}else{var span=new Element('span',{'class':'emptyCell'});td.adopt(span);}
tr.adopt(td);}
tbody.adopt(tr);}
this.domObj.adopt(table);this.updateSelected();if(this.options.parent){this.addTo(this.options.parent);}},swatchOver:function(e){var a=e.target;this.previewSwatch.setStyle('backgroundColor',a.retrieve('swatchColor'));},swatchClick:function(e){var a=e.target;this.options.color=a.retrieve('swatchColor');this.updateSelected();this.fireEvent('click',this);},changed:function(){var color=this.colorInput.value;if(color.substring(0,1)=='#'){color=color.substring(1);}
if(color.toLowerCase().match(/^[0-9a-f]{6}$/)){this.options.color='#'+color.toUpperCase();this.updateSelected();}},alphaChanged:function(){var alpha=this.alphaInput.value;if(alpha.match(/^[0-9]{1,3}$/)){this.options.alpha=parseFloat(alpha/100);this.updateSelected();}},setColor:function(color){this.colorInput.value=color;this.changed();},setAlpha:function(alpha){this.alphaInput.value=alpha;this.alphaChanged();},updateSelected:function(){var styles={'backgroundColor':this.options.color};this.colorInput.value=this.options.color.substring(1);this.alphaInput.value=parseInt(this.options.alpha*100,10);if(this.options.alpha<1){styles.opacity=this.options.alpha;styles.filter='Alpha(opacity='+(this.options.alpha*100)+')';}else{styles.opacity=1;styles.filter='';}
this.selectedSwatch.setStyles(styles);this.previewSwatch.setStyles(styles);this.fireEvent('change',this);},changeText:function(lang){this.parent();if(this.alphaLabel!==undefined&&this.alphaLabel!==null){this.alphaLabel.set('html',this.getText({set:'Jx',key:'colorpalette',value:'alphaLabel'}));}}});Jx.Button.Color=new Class({Extends:Jx.Button.Flyout,Family:'Jx.Button.Color',swatch:null,options:{color:'#000000',alpha:100,template:'<span class="jxButtonContainer"><a class="jxButton jxButtonFlyout jxDiscloser"><span class="jxButtonContent"><span class="jxButtonSwatch"><span class="jxButtonSwatchColor"></span></span><span class="jxButtonLabel"></span></span></a></span>'},classes:{domObj:'jxButtonContainer',domA:'jxButton',swatch:'jxButtonSwatchColor',domLabel:'jxButtonLabel'},render:function(){if(!Jx.Button.Color.ColorPalette){Jx.Button.Color.ColorPalette=new Jx.ColorPalette(this.options);}
this.options.image=Jx.aPixel.src;this.parent();this.updateSwatch();this.bound.changed=this.changed.bind(this);this.bound.hide=this.hide.bind(this);},cleanup:function(){this.bound.changed=false;this.bound.hide=false;this.parent();},clicked:function(){var cp=Jx.Button.Color.ColorPalette;if(cp.currentButton){cp.currentButton.hide();}
cp.currentButton=this;cp.addEvent('change',this.bound.changed);cp.addEvent('click',this.bound.hide);this.content.appendChild(cp.domObj);cp.domObj.setStyle('display','block');Jx.Button.Flyout.prototype.clicked.apply(this,arguments);cp.options.color=this.options.color;cp.options.alpha=this.options.alpha/100;cp.updateSelected();},hide:function(){var cp=Jx.Button.Color.ColorPalette;this.setActive(false);cp.removeEvent('change',this.bound.changed);cp.removeEvent('click',this.bound.hide);Jx.Button.Flyout.prototype.hide.apply(this,arguments);cp.currentButton=null;},setColor:function(color){this.options.color=color;this.updateSwatch();},setAlpha:function(alpha){this.options.alpha=alpha;this.updateSwatch();},changed:function(panel){var changed=false;if(this.options.color!=panel.options.color){this.options.color=panel.options.color;changed=true;}
if(this.options.alpha!=panel.options.alpha*100){this.options.alpha=panel.options.alpha*100;changed=true;}
if(changed){this.updateSwatch();this.fireEvent('change',this);}},updateSwatch:function(){var styles={'backgroundColor':this.options.color};if(this.options.alpha<100){styles.filter='Alpha(opacity='+(this.options.alpha)+')';styles.opacity=this.options.alpha/100;}else{styles.opacity=1;styles.filter='';}
this.swatch.setStyles(styles);}});Jx.Field.Spinner=new Class({Extends:Jx.Field.Text,Family:'Jx.Field.Spinner',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputText"  name="{name}"><span class="jxInputSpinners"></span></span><span class="jxInputTag"></span></span>'},render:function(){this.classes=Object.merge({},this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputSpinners'});this.parent();this.buttonUp=new Jx.Button({template:this.options.buttonTemplate,imageClass:'jxInputSpinUpIcon',onClick:function(){this.fireEvent('spinUp',this);}.bind(this)}).addTo(this.revealer);this.buttonDown=new Jx.Button({template:this.options.buttonTemplate,imageClass:'jxInputSpinDownIcon',onClick:function(){this.fireEvent('spinDown',this);}.bind(this)}).addTo(this.revealer);}});Jx.Field.NumberSpinner=new Class({Extends:Jx.Field.Spinner,Family:'Jx.Field.NumberSpinner',options:{allowNegative:true,value:0},init:function(){this.parent();this.bound={up:this.onSpinUp.bind(this),down:this.onSpinDown.bind(this)}
this.addEvents({onSpinUp:this.bound.up,onSpinDown:this.bound.down});},onSpinUp:function(){var num=this.getValue().toInt();num++;this.setValue(num);},onSpinDown:function(){var num=this.getValue().toInt();num--;if(!this.options.allowNegative&&num<0){num=0;}
this.setValue(num);}});Jx.Field.Radio=new Class({Extends:Jx.Field,Family:"Jx.Field.Radio",options:{template:'<span class="jxInputContainer"><input class="jxInputRadio" type="radio" name="{name}"/><label class="jxInputLabel"></label><span class="jxInputTag"></span></span>',checked:false,labelSeparator:''},type:'Radio',render:function(){this.parent();if(this.options.checked!==undefined&&this.options.checked!==null&&this.options.checked){if(Browser.ie){var parent=this.field.getParent();var sibling;if(parent){sibling=this.field.getPrevious();}
this.field.setStyle('visibility','hidden');this.field.inject(document.id(document.body));this.field.checked=true;this.field.defaultChecked=true;this.field.dispose();this.field.setStyle('visibility','visible');if(sibling){this.field.inject(sibling,'after');}else if(parent){this.field.inject(parent,'top');}}else{this.field.set("checked","checked");this.field.set("defaultChecked","checked");}}
this.label.addEvent('click',function(ev){this.field.checked?this.setValue(false):this.setValue(true);}.bind(this));},setValue:function(v){if(!this.options.readonly){if(v==='checked'||v==='true'||v===true){this.field.set('checked',"checked");}else{this.field.erase('checked');}}},getValue:function(){if(this.field.get("checked")){return this.field.get("value");}else{return null;}},reset:function(){if(this.options.checked){this.field.set('checked',"checked");}else{this.field.erase('checked');}}});Jx.Field.OptionGroup=new Class({Extends:Jx.Field,Family:'Jx.Field.OptionGroup',pluginNamespace:'OptionGroup',options:{template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputOptionGroup"></span><span class="jxInputTag"></span></span>',type:'check',items:null,columns:2,asArray:false,name:null},type:'OptionGroup',styleSheet:'jxFieldOptionGroup',columns:null,init:function(){this.columns=[];if(this.options.type==='check'){this.fieldType=Jx.Field.Checkbox;}else{this.fieldType=Jx.Field.Radio;}
this.uniqueId=this.generateId();this.parent();},render:function(){this.parent();this.domObj.set('id',this.uniqueId);for(var i=1;i<=this.options.columns;i++){this.columns.push(new Element('div',{'class':'jxOptionGroupColumn column-'+i}).inject(this.field));}
this.styleSheet+=this.uniqueId;this.columnWidth=Math.floor(1*100/this.options.columns);this.columnStyle=Jx.Styles.insertCssRule('#'+this.uniqueId+' .jxOptionGroupColumn','',this.styleSheet);this.columnStyle.style.width=this.columnWidth+'%';if(this.options.items!==undefined&&this.options.items!==null){this.add(this.options.items)}},add:function(items){if(Jx.type(items)==='string'){items=Array.from(items);}
var column=0;Object.each(items,function(item){if(this.options.asArray){if(this.options.name!==undefined&&this.options.name!==null){item.name=this.options.name+'[]';}else{if(!item.name.contains('[]')){item.name+='[]';}}}
new this.fieldType(item).addTo(this.columns[column]);column+=1;if(column===this.options.columns){column=0;}},this);},empty:function(){Object.each(this.columns,function(col){col.empty();},this);}});Jx.Field.Display=new Class({Extends:Jx.Field,options:{template:'<span class="jxInputContainer"><label class="jxInputLabel" ></label><span class="jxInputTag"></span></span>'},render:function(){this.parent();this.field=new Element('div',{html:this.options.value,id:this.id});this.field.inject(this.label,'after');this.field.store('field',this);},setValue:function(v){if(!this.options.readonly){this.field.set('html',v);}},getValue:function(){return this.field.get("html");}});Jx.Field.Textarea=new Class({Extends:Jx.Field,Family:"Jx.Field.Textarea",options:{rows:null,columns:null,template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><textarea class="jxInputTextarea" name="{name}"></textarea><span class="jxInputTag"></span></span>'},type:'Textarea',errorClass:'jxFormErrorTextarea',render:function(){this.parent();if(this.options.rows!==undefined&&this.options.rows!==null){this.field.set('rows',this.options.rows);}
if(this.options.columns!==undefined&&this.options.columns!==null){this.field.set('cols',this.options.columns);}}});Jx.Field.Color=new Class({Extends:Jx.Field,Family:"Jx.Field.Color",Binds:['changed','hide','keyup','changeText'],type:'Color',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputColor"  name="{name}"><img class="jxInputIcon" src="'+Jx.aPixel.src+'"><span class="jxInputRevealer"></span></span><span class="jxInputTag"></span></span>',showOnHover:false,showDelay:250,errorMsg:'Invalid Web-Color',color:'#000000'},button:null,validator:null,render:function(){this.classes=Object.merge(this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputRevealer',icon:'jxInputIcon'});this.parent();var self=this;if(!Jx.Field.Color.ColorPalette){Jx.Field.Color.ColorPalette=new Jx.ColorPalette(this.options);}
this.button=new Jx.Button.Flyout({template:this.options.buttonTemplate,imageClass:'jxInputRevealerIcon',positionElement:this.field,onBeforeOpen:function(){if(Jx.Field.Color.ColorPalette.currentButton){Jx.Field.Color.ColorPalette.currentButton.hide();}
Jx.Field.Color.ColorPalette.currentButton=this;Jx.Field.Color.ColorPalette.addEvent('change',self.changed);Jx.Field.Color.ColorPalette.addEvent('click',self.hide);this.content.appendChild(Jx.Field.Color.ColorPalette.domObj);Jx.Field.Color.ColorPalette.domObj.setStyle('display','block');},onOpen:function(){Jx.Field.Color.ColorPalette.options.color=self.options.color;Jx.Field.Color.ColorPalette.updateSelected();}}).addTo(this.revealer);this.validator=new Jx.Plugin.Field.Validator({validators:[{validatorClass:'colorHex',validator:{name:'colorValidator',options:{validateOnChange:false,errorMsg:self.options.errorMsg,test:function(field,props){var c;try{c=field.get('value').hexToRgb(true);if(c===null)return false;for(var i=0;i<3;i++){if(c[i].toString()=='NaN'){return false;}}}catch(e){return false;}
c=c.rgbToHex().toUpperCase();self.setColor(c);return true;}}}}],validateOnBlur:true,validateOnChange:true});this.validator.attach(this);this.field.addEvent('keyup',this.onKeyUp.bind(this));if(this.options.showOnHover){this.field.addEvent('mouseenter',function(ev){self.button.clicked.delay(self.options.showDelay,self.button);});}
this.setValue(this.options.color);this.icon.setStyle('background-color',this.options.color);},onKeyUp:function(ev){var color=this.getValue();if(color.substring(0,1)=='#'){color=color.substring(1);}
if(color.toLowerCase().match(/^[0-9a-f]{6}$/)){this.options.color='#'+color.toUpperCase();this.setColor(this.options.color);}},setColor:function(c){this.options.color=c;this.setValue(c);this.icon.setStyle('background-color',c);},changed:function(){var c=Jx.Field.Color.ColorPalette.options.color;this.setColor(c);this.fireEvent('change',this);},hide:function(){this.button.setActive(false);Jx.Field.Color.ColorPalette.removeEvent('change',this.changed);Jx.Field.Color.ColorPalette.removeEvent('click',this.hide);this.button.hide();Jx.Field.Color.ColorPalette.currentButton=null;},changeText:function(lang){this.parent();}});Jx.Field.Password=new Class({Extends:Jx.Field,Family:"Jx.Field.Password",options:{template:'<span class="jxInputContainer"><label class="jxInputLabel" ></label><input class="jxInputPassword" type="password" name="{name}"/><span class="jxInputTag"></span></span>'},type:'Password'});Jx.Field.Combo=new Class({Extends:Jx.Field,Family:'Jx.Field.Combo',pluginNamespace:'Combo',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputCombo"  name="{name}"><img class="jxInputIcon" src="'+Jx.aPixel.src+'"><span class="jxInputRevealer"></span></span><span class="jxInputTag"></span></span>'},type:'Combo',render:function(){this.classes=Object.merge(this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputRevealer',icon:'jxInputIcon'});this.parent();var button=new Jx.Button({template:this.options.buttonTemplate,imageClass:'jxInputRevealerIcon'}).addTo(this.revealer);this.menu=new Jx.Menu();this.menu.button=button;this.buttonSet=new Jx.ButtonSet();this.buttonSet=new Jx.ButtonSet({onChange:(function(set){var button=set.activeButton;var l=button.options.label;if(l=='&nbsp;'){l='';}
this.setLabel(l);var img=button.options.image;if(img.indexOf('a_pixel')!=-1){img='';}
this.setImage(img,button.options.imageClass);this.fireEvent('change',this);}).bind(this)});if(this.options.items){this.add(this.options.items);}
var that=this;button.addEvent('click',function(e){if(this.list.count()===0){return;}
if(!button.options.enabled){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,that.field,{horizontal:['left left','right right'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');document.addEvent('mousedown',this.bound.hide);document.addEvent('keyup',this.bound.keypress);this.fireEvent('show',this);}.bind(this.menu));this.menu.addEvents({'show':(function(){}).bind(this),'hide':(function(){}).bind(this)});},setLabel:function(label){if(this.field!==undefined&&this.field!==null){this.field.value=this.getText(label);}},setImage:function(url,imageClass){if(this.icon!==undefined&&this.icon!==null){this.icon.setStyle('background-image','url('+url+')');this.icon.setStyle('background-repeat','no-repeat');if(this.options.imageClass){this.icon.removeClass(this.options.imageClass);}
if(imageClass){this.options.imageClass=imageClass;this.icon.addClass(imageClass);this.icon.setStyle('background-position','');}else{this.options.imageClass=null;this.icon.setStyle('background-position','center center');}}
if(!url){this.wrapper.addClass('jxInputIconHidden');}else{this.wrapper.removeClass('jxInputIconHidden');}},valueChanged:function(){this.fireEvent('change',this);},setValue:function(value){this.field.set('value',value);this.buttonSet.buttons.each(function(button){button.setActive(button.options.label===value);},this);},onKeyPress:function(e){if(e.key=='enter'){this.valueChanged();}},add:function(){Array.from(arguments).flatten().each(function(opt){var button=new Jx.Menu.Item(Object.merge({},opt,{toggle:true}));this.menu.add(button);this.buttonSet.add(button);if(opt.selected){this.buttonSet.setActiveButton(button);}},this);},remove:function(idx){var item;if(Jx.type(idx)=='number'&&idx<this.buttonSet.buttons.length){item=this.buttonSet.buttons[idx];}else if(Jx.type(idx)=='string'){this.buttonSet.buttons.some(function(button){if(button.options.label===idx){item=button;return true;}
return false;},this);}
if(item){this.buttonSet.remove(item);this.menu.remove(item);}},empty:function(){this.menu.empty();this.buttonSet.empty();this.setLabel('');this.setImage(Jx.aPixel.src);},enable:function(){this.parent();this.menu.setEnabled(true);},disable:function(){this.parent();this.menu.setEnabled(false);}});Jx.Field.Select=new Class({Extends:Jx.Field,Family:"Jx.Field.Select",options:{mulitple:false,size:1,comboOpts:null,optGroups:null,template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><select class="jxInputSelect" name="{name}"></select><span class="jxInputTag"></span></span>'},type:'Select',render:function(){this.parent();if(this.options.multiple!==undefined&&this.options.multiple!==null){this.field.set('multiple',this.options.multiple);}
if(this.options.size!==undefined&&this.options.size!==null){this.field.set('size',this.options.size);}
if(this.options.optGroups!==undefined&&this.options.optGroups!==null){this.options.optGroups.each(function(group){var gr=new Element('optGroup');gr.set('label',group.name);group.options.each(function(option){var opt=new Element('option',{'value':option.value,'html':this.getText(option.text)});if(option.selected!==undefined&&option.selected!==null&&option.selected){opt.set("selected","selected");}
gr.grab(opt);},this);this.field.grab(gr);},this);}else if(this.options.comboOpts!==undefined&&this.options.comboOpts!==null){this.options.comboOpts.each(function(item){this.addOption(item);},this);}},addOption:function(item,position){var opt=new Element('option',{'value':item.value,'html':this.getText(item.text)});if(item.selected!==undefined&&item.selected!==null&&item.selected){opt.set("selected","selected");}
var where='bottom';var field=this.field;if(position!==undefined&&position!==null){if(Jx.type(position)=='integer'&&(position>=0&&position<field.options.length)){field=this.field.options[position];where='before';}else if(position=='top'){where='top';}}
opt.inject(field,where);},removeOption:function(item){},setValue:function(v){if(!this.options.readonly){$$(this.field.options).each(function(opt){if(opt.get('value')===v){document.id(opt).set("selected",true);}},this);}},getValue:function(){var index=this.field.selectedIndex;if(index>-1){var ret=this.field.options[index].get("value");if(ret===undefined&&ret===null){ret=this.field.options[index].get("text");}
return ret;}},empty:function(){if(this.field.options!==undefined&&this.field.options!==null){Array.from(this.field.options).each(function(option){this.field.remove(option);},this);}}});Jx.MonthPicker=new Class({Extends:Jx.Widget,Family:'Jx.MonthPicker',pluginNamespace:'MonthPicker',options:{template:'<div class="jxMonthPicker"><span class="jxMonthPickerLeft" align="center"></span><span class="jxMonthPickerRight" align="center"></span><div class="jxMonthPickerControls" align="center"></div></div>',month:null,year:null},classes:{domObj:'jxMonthPicker',left:'jxMonthPickerLeft',right:'jxMonthPickerRight',controls:'jxMonthPickerControls'},render:function(){this.parent();var self=this;var _monthCont=null;this.Months={};this.displayMonths=[];Jx.getText({set:'Date',key:'months_abbr'}).each(function(mo,index){self.Months[mo]=index;if(index%2==0){_monthCont=new Element('div');self.left.adopt(_monthCont);}
var monthField=new Element('span',{'class':'jxMonthPickerCell',html:mo,events:{click:function(event){if(self.monthSelected){self.monthSelected.removeClass('jxDatePickerSelected');}
event.target.addClass('jxDatePickerSelected');self.monthSelected=event.target;event.stop();}}});_monthCont.adopt(monthField);if(self.options.month&&self.options.month==index){monthField.addClass('jxDatePickerSelected');self.monthSelected=monthField;}
self.displayMonths.push(monthField);},this);this.displayYear=this.options.year-5;this.displayYears=[];var yearControls=new Element('div',{'class':'jxDatePickerBar',styles:{'margin-left':8}});self.right.adopt(yearControls);new Jx.Button({imageClass:'jxPrevDatePickerIcon',onClick:function(){self.displayYear-=10;self.updateYears();}}).addTo(yearControls);new Jx.Button({imageClass:'jxNextDatePickerIcon',onClick:function(){self.displayYear+=10;self.updateYears();}}).addTo(yearControls);var _yearCont=null;var two=true;for(i=this.options.year-5;i<this.options.year+5;i++){if(two){_yearCont=new Element('div');self.right.adopt(_yearCont);two=false;}else{two=true;}
var yearField=new Element('span',{'class':'jxMonthPickerCell',html:i,events:{click:function(event){if(self.yearSelected){self.yearSelected.removeClass('jxDatePickerSelected');}
event.target.addClass('jxDatePickerSelected');self.yearSelected=event.target;event.stop();}}});self.displayYears.push(yearField);_yearCont.adopt(yearField);if(self.options.year&&self.options.year==i){yearField.addClass('jxDatePickerSelected');self.yearSelected=yearField;}}
new Jx.Button({label:'Ok',onClick:function(objEvent){self.options.month=self.Months[self.monthSelected.get('html')];if(self.yearSelected){self.options.year=self.yearSelected.get('html');}
self.fireEvent('select');objEvent.event.stop();}}).addTo(this.controls);new Jx.Button({label:'Cancel',onClick:function(objEvent){self.fireEvent('cancel');objEvent.event.stop();}}).addTo(this.controls);},setMonth:function(_month){this.options.month=_month;if(this.monthSelected){this.monthSelected.removeClass('jxDatePickerSelected');}
this.monthSelected=this.displayMonths[_month];this.monthSelected.addClass('jxDatePickerSelected');},setYear:function(_year){this.options.year=_year;this.displayYear=_year;this.updateYears();},updateYears:function(){var self=this;var index=this.displayYear;if(this.yearSelected){this.yearSelected.removeClass('jxDatePickerSelected');}
this.displayYears.each(function(node){node.set('html',index);if(self.options.year==index){self.yearSelected=node;self.yearSelected.addClass('jxDatePickerSelected');}
index++;},this);}});Jx.DatePicker=new Class({Extends:Jx.Widget,Family:'Jx.DatePicker',pluginNamespace:'DatePicker',options:{template:'<div class="jxDatePicker" align="center"><div class="jxMonthPickerFly"></div><span class="jxDatePickerPrevButton"></span><span class="jxDatePickerBar"></span><span class="jxDatePickerNextButton"></span><table class="jxDatePickerTable"><thead><tr class="jxDatePickerWeekDays"></tr></thead><tbody class="jxDatePickerMonthDays"></tbody></table><div class="jxDatePickerToday"></div></div>',value:null},classes:{monthPickerFly:'jxMonthPickerFly',domObj:'jxDatePicker',prev:'jxDatePickerPrevButton',next:'jxDatePickerNextButton',today:'jxDatePickerToday',title:'jxDatePickerBar',table:'jxDatePickerTable',weekDays:'jxDatePickerWeekDays',monthDays:'jxDatePickerMonthDays'},render:function(){this.parent();if(this.options.value){if(Jx.type(this.options.value)=='string'){this.currentDate=new Date(this.options.value);}else{this.currentDate=this.options.value;}}else{this.currentDate=new Date();}
var self=this;Jx.getText({set:'Date',key:'days_abbr'}).each(function(day){self.weekDays.adopt(new Element('th',{'class':'jxDatePickerHeaderCell',html:day}));},this);new Jx.Button({imageClass:'jxPrevDatePickerIcon',onClick:function(){if(self.currentDate.getMonth()==0){self.currentDate.set('mo',11);self.currentDate.set('year',self.currentDate.get('year')-1);}else{self.currentDate.set('mo',self.currentDate.getMonth()-1);}
self.monthLabel.setLabel(this.getText({set:'Date',key:'months',value:self.currentDate.get('mo')})+' '+self.currentDate.get('year'));self.update();}}).addTo(this.prev);this.monthPicker=new Jx.MonthPicker({month:this.currentDate.get('mo'),year:this.currentDate.get('year'),onSelect:function(){self.currentDate.set('mo',this.options.month);self.currentDate.set('year',this.options.year);self.monthLabel.setLabel(this.getText({set:'Date',key:'months',value:self.currentDate.get('mo')})+' '+self.currentDate.get('year'));self.monthLabel.hide();self.update();},onCancel:function(){self.monthLabel.hide();}});this.monthLabel=new Jx.Button.Flyout({label:this.getText({set:'Date',key:'months',value:self.currentDate.get('mo')})+' '+self.currentDate.get('year'),tooltip:'Change the current month',positionElement:this.domObj,position:{horizontal:['left left'],vertical:['top top']},hasChrome:false,content:new Jx.Panel({width:171,height:156,collapsible:false,hideTitle:true,content:self.monthPicker}),onOpen:function(flyout){self.monthPicker.setMonth(self.currentDate.get('mo'));self.monthPicker.setYear(self.currentDate.get('year'));}});this.title.adopt(this.monthLabel);new Jx.Button({imageClass:'jxNextDatePickerIcon',onClick:function(){if(self.currentDate.getMonth()==11){self.currentDate.set('mo',0);self.currentDate.set('year',self.currentDate.get('year')+1);}else{self.currentDate.set('mo',self.currentDate.getMonth()+1);}
self.monthLabel.setLabel(this.getText({set:'Date',key:'months',value:self.currentDate.get('mo')})+' '+self.currentDate.get('year'));self.update();}}).addTo(this.next);new Jx.Button({label:'Today',onClick:function(){self.currentDate=new Date();self.update();self.fireEvent('select',new Date());}}).addTo(this.today);this.construct();this.update();},construct:function(){if(this.rendered){return;}
var self=this;for(var i=0;i<6;i++){var tr=new Element('tr');for(var j=0;j<7;j++){var td=new Element('td',{events:{click:function(event){if(event.target.get('html')!=''){self.currentDate.set('date',event.target.get('html'));if(self.selectedCell){self.selectedCell.removeClass('jxDatePickerSelected');}
event.target.addClass('jxDatePickerSelected');self.selectedCell=event.target;self.fireEvent('select',self.currentDate);}
event.stop();}}});tr.adopt(td);}
this.monthDays.adopt(tr);}
this.rendered=true;},update:function(){if(this.selectedCell){this.selectedCell.removeClass('jxDatePickerSelected');}
this.monthLabel.setLabel(this.getText({set:'Date',key:'months',value:this.currentDate.get('mo')})+' '+this.currentDate.get('year'));var firstDay=new Date(this.currentDate.get('year'),this.currentDate.get('mo'),1);var startingDay=firstDay.getDay();var lastDayOfMonth=this.currentDate.getLastDayOfMonth();var index=0;var day=1;var self=this;this.monthDays.getChildren().each(function(row){row.getChildren().each(function(node){if(index>=startingDay&&index<=lastDayOfMonth+startingDay-1){node.set('html',day);node.addClass('jxDatePickerCell');node.removeClass('jxDatePickerEmptyCell');if(day==self.currentDate.getDate()){self.selectedCell=node;self.selectedCell.addClass('jxDatePickerSelected');}
day++;}else{node.set('html','');node.removeClass('jxDatePickerCell');node.addClass('jxDatePickerEmptyCell');}
index++;});});}});Jx.Field.Date=new Class({Extends:Jx.Field,Family:'Jx.Field.Date',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputText"  name="{name}"><span class="jxInputRevealer"></span></span><span class="jxInputTag"></span></span>',format:'%d/%m/%Y'},type:'Text',render:function(){this.classes=Object.merge({},this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputRevealer',icon:'jxInputIcon'});this.parent();this.formatter=new Jx.Formatter.Date({format:this.options.format});var pickerContainer=new Element('div',{styles:{width:171,height:156}});var button=new Jx.Button.Flyout({template:this.options.buttonTemplate,imageClass:'jxInputRevealerIcon',positionElement:this.field,content:pickerContainer}).addTo(this.revealer);document.id(button.content).addClass('jxDateFieldFlyout');this.datePicker=new Jx.DatePicker({value:this.options.value,onSelect:function(value){var valueNew=this.formatter.format(value);this.setValue(valueNew);button.hide();}.bind(this)}).addTo(pickerContainer);button.addEvent('click',function(e){if(!button.options.enabled){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,that.field,{horizontal:['left left','right right'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');document.addEvent('mousedown',this.bound.hide);document.addEvent('keyup',this.bound.keypress);}.bind(this));}});Jx.Field.ComboBox=new Class({Extends:Jx.Field,Family:'Jx.Field.Combo',pluginNamespace:'Combo',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputCombo"  name="{name}"><span class="jxInputRevealer"></span></span><span class="jxInputTag"></span></span>',itemTemplate:'',store:null,displayField:null,valueField:'id',hiddenValue:null,emptyMessage:'',onChange:function(field){var store=this.options.store;var index=store.findByColumn(this.options.displayField,field.getValue());var record=this.options.store.getRecord(index);this.hiddenValue=store.get(this.options.valueField,index);}.bind(this)},type:'Combo',init:function(){this.hiddenValue=this.options.hiddenValue;if(this.options.itemTemplate===undefined||this.options.itemTemplate===null||this.options.itemTemplate==''){this.options.itemTemplate='{'+this.options.displayField+'}';}
this.parent();},getValue:function(){if(this.hiddenValue==null){return this.field.value;}
return this.hiddenValue;},render:function(){this.classes=Object.merge({},this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputRevealer',icon:'jxInputIcon'});this.parent();this.adaptor=new Jx.Adaptor.ListView.Fill({itemTemplate:"<li class='jxListItemContainer'><a class='jxListItem' href='javascript:void(0);'>{item}</a></li>",template:this.options.itemTemplate,emptyMessage:this.options.emptyMessage,store:this.options.store});this.listView=new Jx.ListView({plugins:[this.adaptor]});var button=new Jx.Button.Flyout({template:this.options.buttonTemplate,imageClass:'jxInputRevealerIcon',positionElement:this.field,content:new Jx.Panel({width:260,height:240,collapse:false,hideTitle:true,content:this.listView,toolbars:[new Jx.Toolbar.Pager({store:this.options.store,position:'bottom',align:'left',paginationOptions:{ignoreExpiration:true},})]})}).addTo(this.revealer);this.listView.addEvent('click',function(jx,listview,el){button.hide();var idx=document.id(jx).retrieve('storeId').toInt();this.setValue(this.options.store.get(this.options.displayField,idx));this.hiddenValue=this.options.store.get(this.options.valueField,idx);}.bind(this));}});Jx.Store.Response=new Class({Extends:Jx.Object,Family:'Jx.Store.Response',code:null,data:null,meta:null,requestType:null,requestParams:null,request:null,error:null,success:function(){return this.code>0;}});Jx.Store.Response.WAITING=2;Jx.Store.Response.SUCCESS=1;Jx.Store.Response.FAILURE=0;Jx.Store.Protocol=new Class({Extends:Jx.Object,Family:'Jx.Store.Protocol',parser:null,options:{combine:{insert:false,update:false,'delete':false}},init:function(){this.parent();if(this.options.parser!==undefined&&this.options.parser!==null){this.parser=this.options.parser;}},cleanup:function(){this.parser=null;this.parent();},read:function(){},insert:function(){},update:function(){},"delete":function(){},abort:function(){},combineRequests:function(op){return(this.options.combine[op]!==undefined&&this.options.combine[op]!==null)?this.options.combine[op]:false;}});Jx.Store.Protocol.Ajax=new Class({Extends:Jx.Store.Protocol,Family:"Jx.Store.Protocol.Ajax",options:{requestOptions:{method:'get'},rest:false,urls:{rest:null,insert:null,read:null,update:null,'delete':null},queue:{autoAdvance:true,concurrent:1},dataProperty:'data'},queue:null,init:function(){if(Jx.Store.Protocol.Ajax.UniqueId===undefined||Jx.Store.Protocol.Ajax.UniqueId===null){Jx.Store.Protocol.Ajax.UniqueId=1;}
this.queue=new Request.Queue({autoAdvance:this.options.queue.autoAdvance,concurrent:this.options.queue.concurrent});this.parent();},read:function(options){var resp=new Jx.Store.Response(),temp={},opts,req,uniqueId=Jx.Store.Protocol.Ajax.UniqueId();resp.requestType='read';resp.requestParams=arguments;if(this.options.rest){temp.url=this.options.urls.rest;}else{temp.url=this.options.urls.read;}
opts=Object.merge({},this.options.requestOptions,temp,options);opts.onSuccess=this.handleResponse.bind(this,resp);req=new Request(opts);resp.request=req;this.queue.addRequest(uniqueId,req);req.send();resp.code=Jx.Store.Response.WAITING;return resp;},handleResponse:function(response){var req=response.request,str=req.xhr.responseText,data=this.parser.parse(str);if(data!==undefined&&data!==null){if(data.success!==undefined&&data.success!==null&&data.success){if(data[this.options.dataProperty]!==undefined&&data[this.options.dataProperty]!==null){response.data=data[this.options.dataProperty];}
if(data.meta!==undefined&&data.meta!==null){response.meta=data.meta;}else{response.meta={};}
response.meta.success=data.success;response.code=Jx.Store.Response.SUCCESS;}else{response.code=Jx.Store.Response.FAILURE;response.error=(data.error!==undefined&&data.error!==null)?data.error:null;}}else{response.code=Jx.Store.Response.FAILURE;}
this.fireEvent('dataLoaded',response);},insert:function(record,options){if(this.options.rest){options=Object.merge({},{url:this.options.urls.rest},options);}else{options=Object.merge({},{url:this.options.urls.insert},options);}
this.options.requestOptions.method='POST';return this.run(record,options,"insert");},update:function(record,options){if(this.options.rest){options=Object.merge({},{url:this.options.urls.rest},options);this.options.requestOptions.method='PUT';}else{options=Object.merge({},{url:this.options.urls.update},options);this.options.requestOptions.method='POST';}
return this.run(record,options,"update");},"delete":function(record,options){if(this.options.rest){options=Object.merge({},{url:this.options.urls.rest},options);this.options.requestOptions.method='DELETE';}else{options=Object.merge({},{url:this.options.urls['delete']},options);this.options.requestOptions.method='POST';}
return this.run(record,options,"delete");},abort:function(response){response.request.cancel();},run:function(record,options,method){var resp=new Jx.Store.Response(),opts,req,data,uniqueId=Jx.Store.Protocol.Ajax.UniqueId();if(Jx.type(record)=='array'){if(!this.combineRequests(method)){record.each(function(r){this.run(r,options,method);},this);return;}else{data=[];record.each(function(r){data.push(this.parser.encode(r));},this);}}else{data=this.parser.encode(record);}
this.options.requestOptions.data=Object.merge({},this.options.requestOptions.data,{data:data});resp.requestType=method;resp.requestParams=[record,options,method];opts=Object.merge({},this.options.requestOptions,options);opts.onSuccess=this.handleResponse.bind(this,resp);req=new Request(opts);resp.request=req;this.queue.addRequest(uniqueId,req);req.send();resp.code=Jx.Store.Response.WAITING;return resp;}});Jx.Store.Protocol.Ajax.UniqueId=(function(){var uniqueId=1;return function(){return'req-'+(uniqueId++);};})();Jx.Field.TreeCombo=new Class({Extends:Jx.Field,Family:'Jx.Field.Combo',pluginNamespace:'TreeCombo',options:{buttonTemplate:'<a class="jxButtonContainer jxButton" href="javascript:void(0);"><img class="jxButtonIcon" src="'+Jx.aPixel.src+'"></a>',template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputWrapper"><input type="text" class="jxInputText"  name="{name}"><span class="jxInputRevealer"></span></span><span class="jxInputTag"></span></span>',hiddenValue:null,protocol:null,url:null,treeOptions:{}},type:'Text',render:function(){this.classes=Object.merge({},this.classes,{wrapper:'jxInputWrapper',revealer:'jxInputRevealer',icon:'jxInputIcon'});this.parent();if(this.options.protocol===null||this.options.protocol===undefined){this.protocol=new Jx.Store.Protocol.Ajax({urls:{read:this.options.url},parser:Jx.Store.Parser.JSON()});}else{this.protocol=this.options.protocol;}
this.adaptor=new Jx.Adaptor.Tree.Object({protocol:this.protocol});this.treeView=new Jx.Tree(Object.merge({},this.options.treeOptions,{plugins:[this.adaptor],selectionFunction:function(el,e){var item=document.id(el).retrieve('jxListTargetItem')||el,flag=!item.hasClass('jxUnselectable');var jx=$jx(el);if(jx instanceof Jx.Tree.Folder){if(e.target.hasClass('jxTreeImage')&&flag){flag=false;}}
return flag;}}));this.button=new Jx.Button.Flyout({template:this.options.buttonTemplate,imageClass:'jxInputRevealerIcon',positionElement:this.field,content:new Jx.Panel({width:260,height:240,collapse:false,hideTitle:true,content:this.treeView})}).addTo(this.revealer);this.treeView.addEvent('select',function(jx){this.button.hide();this.setValue(jx.getLabel());}.bind(this));this.button.addEvent('click',function(e){if(!button.options.enabled){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,that.field,{horizontal:['left left','right right'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');document.addEvent('mousedown',this.bound.hide);document.addEvent('keyup',this.bound.keypress);}.bind(this));this.adaptor.load();},setValue:function(value){this.field.set('value',value);},empty:function(){this.setValue('');this.treeView.empty();},load:function(){this.empty();this.adaptor.load();}});Jx.Editor=new Class({Extends:Jx.Widget,Family:'Jx.Editor',options:{template:'<span class="jxEditor"><span class="jxEditorToolbar"></span><span class="jxEditorIframe"></span><textarea class="jxEditorTextarea"></textarea></span></span>',editorCssFile:null,html:'<!DOCTYPE html><html style="height: 100%; margin: 0; padding: 0;"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">{stylesheet}</head><body style="height: 100%; padding: 0; margin: 0;"></body></html>',stylesheetTemplate:' <link href="{file}" type="text/css" rel="stylesheet" media="screen, projection" title="jxEditorStylesheet" />',content:null,buttons:null,cleanup:true,xhtml:true,semantics:true,textareaName:'editor'},classes:{domObj:'jxEditor',container:'jxEditorToolbar',iframe:'jxEditorIframe',textarea:'jxEditorTextarea'},pluginNamespace:'Editor',blockEls:/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD)$/i,init:function(){if(this.options.parent!==null&&this.options.parent!==undefined){this.options.deferRender=false;}else{this.options.deferRender=true;}
this.parent();},mode:null,keys:{},editorDisabled:false,toolbars:[],render:function(){this.parent();this.textarea.set('name',this.options.textareaName);var i=Array.from(this.options.buttons).length;for(var j=0;j<i;j++){var c=new Jx.Toolbar.Container({scroll:false}).addTo(this.container);this.toolbars.push(new Jx.Toolbar());c.add(this.toolbars[j]);}
if(this.options.parent){new Jx.Layout(this.domObj);this.domObj.resize();}
var iframe=new IFrame({'class':'jxEditorIframe',src:'javascript:""',frameborder:0});this.mode='iframe';iframe.replaces(this.iframe);this.iframe=iframe;this.iframe.setStyles({display:'block',visibility:''});this.win=iframe.contentWindow;this.doc=(this.win!==null&&this.win!==undefined)?this.win.document:iframe.contentDocument.document;if(Browser.firefox)this.doc.designMode='On';if(this.options.editorCssFile!==null&&this.options.editorCssFile!==undefined){this.options.stylesheetTemplate=this.options.stylesheetTemplate.substitute({file:this.options.editorCssFile});}else{this.options.stylesheetTemplate='';}
(Browser.ie)?this.doc.body.contentEditable=true:this.doc.designMode='On';this.options.html=this.options.html.substitute({stylesheet:this.options.stylesheetTemplate,js:this.options.mootoolsTemplate});this.doc.open();this.doc.write(this.options.html);this.doc.close();Object.append(this.win,new Window);Object.append(this.doc,new Document);if(Browser.Element){var winElement=this.win.Element.prototype;for(var method in Element){if(!method.test(/^[A-Z]|\$|prototype/)){winElement[method]=Element.prototype[method];}}}else{document.id(this.doc.body);}
if(this.options.content!==null&&this.options.content!==undefined){this.doc.body.set('html',this.options.content);this.textarea.set('value',this.options.content);}
if(Browser.ie||Browser.safari||Browser.chrome){this.doc.body.contentEditable=true;}else{this.doc.designMode='On';}
this.selection=new Jx.Editor.Selection(this.win);this.doc.addEvents({mouseup:this.editorMouseUp.bind(this),mousedown:function(e){this.editorStopEvent(e,'MouseDown');}.bind(this),mouseover:function(e){this.editorStopEvent(e,'MouseOver');}.bind(this),mouseout:function(e){this.editorStopEvent(e,'MouseOut');}.bind(this),mouseenter:this.editorMouseEnter.bind(this),mouseleave:function(e){this.editorStopEvent(e,'MouseLeave');}.bind(this),contextmenu:function(e){this.editorStopEvent(e,'ContextMenu');}.bind(this),click:this.editorClick.bind(this),dblclick:function(e){this.editorStopEvent(e,'DoubleClick');}.bind(this),keypress:this.editorKeyPress.bind(this),keyup:this.editorKeyUp.bind(this),keydown:this.editorKeyDown.bind(this),focus:this.editorFocus.bind(this),blur:this.editorBlur.bind(this)});if(this.win){this.win.addEvents({focus:this.editorFocus.bind(this),blur:this.editorBlur.bind(this)});}
['cut','copy','paste'].each(function(event){this.doc.body.addListener(event,function(e){this.editorStopEvent(e,event.capitalize());}.bind(this));},this);this.textarea.addEvent('keypress',this.textarea.retrieve('jx:textareaKeyListener',this.keyListener.bind(this)));if(Browser.firefox2){this.doc.addEvent('focus',function(){this.win.fireEvent('focus').focus();}.bind(this));}
this.oldContent=this.getContent();this.domObj.store('Jx.Editor',this);this.addEvent('postInit',function(){this.options.buttons.each(function(bar,index){this.options.plugins=bar;this.toolbar=this.toolbars[index];this.initPlugins();},this);}.bind(this));this.resize();},setContent:function(content){this.doc.body.set('html',content);return this;},getContent:function(){return this.doc.body.get('html');},execute:function(command,param1,param2){if(this.busy)return;this.busy=true;this.doc.execCommand(command,param1,param2);this.saveContent();this.focus();this.busy=false;return false;},toggleView:function(){this.fireEvent('preToggleView',this);if(this.mode==='textarea'){this.mode='iframe';this.iframe.setStyle('display','block');this.setContent(this.textarea.value);this.textarea.setStyle('display','none');}else{this.saveContent();this.mode='textarea';this.textarea.setStyle('display','block');this.iframe.setStyle('display','none');}
this.fireEvent('postToggleView',this);},saveContent:function(){if(this.mode==='iframe'){this.textarea.set('value',this.cleanup(this.getContent()));this.fireEvent('editorChange',[this.textarea.get('value'),this]);}
return this;},resize:function(){if(this.domObj.resize){this.domObj.resize();}else{new Jx.Layout(this.domObj);this.domObj.resize();}
var dimensions=this.domObj.getContentBoxSize();var tbDimensions=this.container.getMarginBoxSize();var styles={width:dimensions.width,height:dimensions.height-tbDimensions.height};this.iframe.setStyles(styles);this.textarea.setStyles(styles);},focus:function(){if(this.mode=='iframe'){if(this.win){this.win.focus();}else{this.iframe.focus();}}else{this.textarea.focus();}
this.fireEvent('editorFocus',this);return this;},enableToolbar:function(){Object.each(this.plugins,function(plugin){plugin.setEnabled(true);},this);},disableToolbar:function(){Object.each(this.plugins,function(plugin){plugin.setEnabled(false);},this);},editorStopEvent:function(e,event){if(this.editorDisabled){e.stop();return;}
this.fireEvent('editor'+event,[e,this]);},editorFocus:function(e){this.oldContent='';this.fireEvent('editorFocus',[e,this]);},editorBlur:function(e){this.oldContent=this.saveContent().getContent();this.fireEvent('editorBlur',[e,this]);},editorMouseUp:function(e){if(this.editorDisabled){e.stop();return;}
this.checkStates();this.fireEvent('editorMouseUp',[e,this]);},editorMouseEnter:function(e){if(this.editorDisabled){e.stop();return;}
if(this.oldContent&&this.getContent()!=this.oldContent){this.focus();this.fireEvent('editorPaste',[e,this]);}
this.fireEvent('editorMouseEnter',[e,this]);},editorClick:function(e){if(Browser.chrome||Browser.safari){var el=document.id(e.target);if(el.get('tag')=='img'){this.selection.selectNode(el);}}
this.fireEvent('editorClick',[e,this]);},editorKeyPress:function(e){if(this.editorDisabled){e.stop();return;}
this.keyListener(e);this.fireEvent('editorKeyPress',[e,this]);},editorKeyUp:function(e){if(this.editorDisabled){e.stop();return;}
var c=e.code;if(/^enter|left|up|right|down|delete|backspace$/i.test(e.key)||(c>=33&&c<=36)||c==45||e.meta||e.control){if(Browser.ie){clearTimeout(this.checkStateDelay);this.checkStatesDelay=this.checkStates.delay(500,this);}else{this.checkStates();}}
this.fireEvent('editorKeyUp',[e,this]);},editorKeyDown:function(e){if(this.editorDisabled){e.stop();return;}
if(e.key=='enter'){if(e.shift&&(Browser.chrome|Browser.safari)){var s=this.selection;var r=s.getRange();var br=this.doc.createElement('br');r.insertNode(br);r.setStartAfter(br);r.setEndAfter(br);s.setRange(r);if(s.getSelection().focusNode==br.previousSibling){var nbsp=this.doc.createTextNode('\u00a0');var p=br.parentNode;var ns=br.nextSibling;(ns)?p.insertBefore(nbsp,ns):p.appendChild(nbsp);s.selectNode(nbsp);s.collapse(1);}
this.win.scrollTo(0,Element.getOffsets(s.getRange().startContainer).y);e.preventDefault();}else if(Browser.firefox||Browser.chrome||Browser.safari){var node=this.selection.getNode();var isBlock=node.getParents().include(node).some(function(el){return el.nodeName.test(this.blockEls);}.bind(this));if(!isBlock)this.execute('insertparagraph',false,false);}}else{if(Browser.ie){var r=this.selection.getRange();var node=this.selection.getNode();if(r&&node.get('tag')!='li'){this.selection.insertContent('<br>');this.selection.collapse(false);}
e.preventDefault();}}
if(Browser.opera){var ctrlmeta=e.control||e.meta;if(ctrlmeta&&e.key=='x'){this.fireEvent('editorCut',[e,this]);}else if(ctrlmeta&&e.key=='c'){this.fireEvent('editorCopy',[e,this]);}else if((ctrlmeta&&e.key=='v')||(e.shift&&e.code==45)){this.fireEvent('editorPaste',[e,this]);}}
this.fireEvent('editorKeyDown',[e,this]);},keyListener:function(e){var key=(Browser.Platform.mac)?e.meta:e.control;if(!key||!this.keys[e.key])return;e.preventDefault();var plugin=this.keys[e.key];plugin.command();if(this.mode=='iframe')this.checkStates();},checkStates:function(){var element=this.selection.getNode();if(!element)return;if(Jx.type(element)!='element')return;Object.each(this.plugins,function(plugin){if(typeOf(plugin.checkState)=='function'){plugin.checkState(element);}},this);},cleanup:function(source){if(!this.options.cleanup)return source.trim();do{var oSource=source;if(this.options.baseURL){source=source.replace('="'+this.options.baseURL,'="');}
source=source.replace(/<br class\="webkit-block-placeholder">/gi,"<br />");source=source.replace(/<span class="Apple-style-span">(.*)<\/span>/gi,'$1');source=source.replace(/ class="Apple-style-span"/gi,'');source=source.replace(/<span style="">/gi,'');source=source.replace(/<p>\s*<br ?\/?>\s*<\/p>/gi,'<p>\u00a0</p>');source=source.replace(/<p>(&nbsp;|\s)*<\/p>/gi,'<p>\u00a0</p>');if(!this.options.semantics){source=source.replace(/\s*<br ?\/?>\s*<\/p>/gi,'</p>');}
if(this.options.xhtml){source=source.replace(/<br>/gi,"<br />");}
if(this.options.semantics){if(Browser.ie){source=source.replace(/<li>\s*<div>(.+?)<\/div><\/li>/g,'<li>$1</li>');}
if(Browser.safari||Browser.chrome){source=source.replace(/^([\w\s]+.*?)<div>/i,'<p>$1</p><div>');source=source.replace(/<div>(.+?)<\/div>/ig,'<p>$1</p>');}
if(!Browser.ie){source=source.replace(/<p>[\s\n]*(<(?:ul|ol)>.*?<\/(?:ul|ol)>)(.*?)<\/p>/ig,'$1<p>$2</p>');source=source.replace(/<\/(ol|ul)>\s*(?!<(?:p|ol|ul|img).*?>)((?:<[^>]*>)?\w.*)$/g,'</$1><p>$2</p>');}
source=source.replace(/<br[^>]*><\/p>/g,'</p>');source=source.replace(/<p>\s*(<img[^>]+>)\s*<\/p>/ig,'$1\n');source=source.replace(/<p([^>]*)>(.*?)<\/p>(?!\n)/g,'<p$1>$2</p>\n');source=source.replace(/<\/(ul|ol|p)>(?!\n)/g,'</$1>\n');source=source.replace(/><li>/g,'>\n\t<li>');source=source.replace(/([^\n])<\/(ol|ul)>/g,'$1\n</$2>');source=source.replace(/([^\n])<img/ig,'$1\n<img');source=source.replace(/^\s*$/g,'');}
source=source.replace(/<br ?\/?>$/gi,'');source=source.replace(/^<br ?\/?>/gi,'');if(this.options.paragraphise)source=source.replace(/(h[1-6]|p|div|address|pre|li|ol|ul|blockquote|center|dl|dt|dd)><br ?\/?>/gi,'$1>');source=source.replace(/<br ?\/?>\s*<\/(h1|h2|h3|h4|h5|h6|li|p)/gi,'</$1');source=source.replace(/<span style="font-weight: bold;">(.*)<\/span>/gi,'<strong>$1</strong>');source=source.replace(/<span style="font-style: italic;">(.*)<\/span>/gi,'<em>$1</em>');source=source.replace(/<b\b[^>]*>(.*?)<\/b[^>]*>/gi,'<strong>$1</strong>');source=source.replace(/<i\b[^>]*>(.*?)<\/i[^>]*>/gi,'<em>$1</em>');source=source.replace(/<u\b[^>]*>(.*?)<\/u[^>]*>/gi,'<span style="text-decoration: underline;">$1</span>');source=source.replace(/<strong><span style="font-weight: normal;">(.*)<\/span><\/strong>/gi,'$1');source=source.replace(/<em><span style="font-weight: normal;">(.*)<\/span><\/em>/gi,'$1');source=source.replace(/<span style="text-decoration: underline;"><span style="font-weight: normal;">(.*)<\/span><\/span>/gi,'$1');source=source.replace(/<strong style="font-weight: normal;">(.*)<\/strong>/gi,'$1');source=source.replace(/<em style="font-weight: normal;">(.*)<\/em>/gi,'$1');source=source.replace(/<[^> ]*/g,function(match){return match.toLowerCase();});source=source.replace(/<[^>]*>/g,function(match){match=match.replace(/ [^=]+=/g,function(match2){return match2.toLowerCase();});return match;});source=source.replace(/<[^!][^>]*>/g,function(match){match=match.replace(/( [^=]+=)([^"][^ >]*)/g,"$1\"$2\"");return match;});if(this.options.xhtml){source=source.replace(/<img([^>]+)(\s*[^\/])>(<\/img>)*/gi,'<img$1$2 />');}
source=source.replace(/<p>(?:\s*)<p>/g,'<p>');source=source.replace(/<\/p>\s*<\/p>/g,'</p>');source=source.replace(/<pre[^>]*>.*?<\/pre>/gi,function(match){return match.replace(/<br ?\/?>/gi,'\n');});source=source.trim();}
while(source!=oSource);return source;}});Jx.Field.Editor=new Class({Extends:Jx.Field,Family:'Jx.Field.Editor',options:{template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><span class="jxInputEditor"></span><span class="jxInputTag"></span></span>',editorOptions:{editorCssFile:'css/editor.css',buttons:[['bold','italic','underline','strikethrough','separator','alignment','separator','orderedlist','unorderedlist','indent','outdent'],['undo','redo','separator','customStyles','block','separator','link','unlink','image','separator','toggle']]}},type:'Editor',render:function(){this.parent();this.options.editorOptions.content=this.options.value;this.options.editorOptions.textareaName=this.options.name;if(this.options.parent!==null&&this.options.parent!==undefined){this.createEditor();}},addTo:function(reference,where){this.parent(reference,where);this.createEditor();},createEditor:function(){if(this.editor===undefined||this.editor===null||typeOf(this.editor)!=='Jx.Editor'){this.options.editorOptions.parent=document.id(this.field);this.editor=new Jx.Editor(this.options.editorOptions);this.editor.resize();this.field=this.editor.textarea;this.editor.addEvents({'editorChange':function(){this.fireEvent('change',this);}.bind(this),'editorBlur':function(){this.fireEvent('blur',this);}.bind(this)});}},getValue:function(){return this.editor.saveContent().getContent();},setValue:function(value){this.editor.setContent(value).saveContent();}});Jx.Field.Button=new Class({Extends:Jx.Field,Family:"Jx.Field.Button",options:{buttonClass:Jx.Button,buttonOptions:{},template:'<span class="jxInputContainer"><label class="jxInputLabel"></label><div class="jxInputButton"></div><span class="jxInputTag"></span></span>'},button:null,type:'Button',processTemplate:function(template,classes,container){var h=this.parent(template,classes,container);this.button=new this.options.buttonClass(this.options.buttonOptions);this.button.addEvent('click',function(){this.fireEvent('click');}.bind(this));var c=h.jxInputButton;if(c){this.button.domObj.replaces(c);}
this.button.setEnabled(!this.options.disabled);return h;},click:function(){this.button.clicked();},enable:function(){this.parent();this.button.setEnabled(true);},disable:function(){this.parent();this.button.setEnabled(false);}});Jx.Plugin.Panel={};Jx.Plugin.Panel.Notifier=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.FormPanel.ErrorDisplayTop",name:'Form.Validator',options:{notifierType:'inline',},notices:null,bound:null,init:function(){this.parent();this.bound={postInit:this.onPostInit.bind(this),fieldPassed:this.onFieldPassed.bind(this),fieldFailed:this.onFieldFailed.bind(this)};this.notices={};},attach:function(panel){this.parent(panel);this.panel=panel;panel.addEvents(this.bound);},onPostInit:function(){if(this.options.notifierType instanceof Jx.Notifier){this.notifier=this.options.notifierType;}else if(this.options.notifierType==='inline'){this.notifier=new Jx.Notifier();this.notifier.addTo(this.panel.content,'top');}else{this.notifier=new Jx.Notifier.Float({parent:document.body});}
this.panel.removeEvent('postInit',this.bound.postInit);},detach:function(){},onFieldPassed:function(field,validator,panel){if(this.notices[field.id]!==undefined&&this.notices[field.id]!==null){this.notices[field.id].close();}},onFieldFailed:function(field,validator,panel){var errs=validator.getErrors();var text=field.name+" has the following errors: "+errs.join(",")+".";var notice=new Jx.Notice.Error({content:text,onClose:function(){delete this.notices[field.id];}.bind(this)});this.notifier.add(notice);this.notices[field.id]=notice;}});Jx.Plugin.DataView={};Jx.Plugin.Tree={};Jx.Plugin.ToolbarContainer={};Jx.Plugin.ToolbarContainer.TabMenu=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.ToolbarContainer.TabMenu',Binds:['addButton'],options:{},tabs:[],init:function(){this.parent();},attach:function(toolbarContainer){this.parent(toolbarContainer);this.container=toolbarContainer;if(!this.container.options.scroll){return;}
this.menu=new Jx.Menu({},{buttonTemplate:'<span class="jxButtonContainer"><a class="jxButton jxButtonMenu jxDiscloser"><span class="jxButtonContent"><span class="jxButtonLabel"></span></span></a></span>'}).addTo(this.container.controls,'bottom');document.id(this.menu).addClass('jxTabMenuRevealer');this.container.update();var tb=document.id(this.container).getElement('ul').retrieve('jxToolbar');tb.list.each(function(item){this.addButton(item);},this);tb.list.addEvent('add',this.addButton);},detach:function(){this.parent();},addButton:function(item){var tab;tab=(item instanceof Jx.Tab)?item:document.id(item).getFirst().retrieve('jxTab');var l=tab.getLabel();if(l===undefined||l===null){l='';}
var mi=new Jx.Menu.Item({label:l,image:tab.options.image,onClick:function(){if(tab.isActive()){this.container.scrollIntoView(tab);}else{tab.setActive(true);}}.bind(this)});document.id(tab).store('menuItem',mi);tab.addEvent('close',function(){this.menu.remove(mi);}.bind(this));this.menu.add([mi]);}});Jx.Plugin.Form.InlineErrors=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Form.InlineErrors",name:'Form.InlineErrors',options:{},init:function(){this.parent();this.bound={fieldValidationPassed:this.onFieldPassed.bind(this),fieldValidationFailed:this.onFieldFailed.bind(this)};},attach:function(form){this.parent(form);this.form=form;form.addEvents(this.bound);},onFieldPassed:function(field,validator){field.domObj.getElements('.jxInlineError').destroy();},onFieldFailed:function(field,validator){var the_errors="";validator.getErrors().each(function(error){the_errors+=error+'<br />';});if(the_errors){the_errors.slice(0,'<br />'.length);}
if(field.label&&the_errors){if(field.error){field.error.destroy();}
var e=new Element("span",{'class':'jxInlineError',html:the_errors});field.error=e;e.inject(field,'bottom');}}});Jx.Slide=new Class({Implements:Jx.Object,Family:'Jx.Slide',Binds:['handleClick'],options:{target:null,trigger:null,type:'height',setOpenTo:'auto',onSlideOut:function(){},onSlideIn:function(){}},init:function(){this.target=document.id(this.options.target);this.target.set('tween',{onComplete:this.setDisplay.bind(this)});if(this.options.trigger!==undefined&&this.options.trigger!==null){this.trigger=document.id(this.options.trigger);this.trigger.addEvent('click',this.handleClick);}
this.target.store('slider',this);},handleClick:function(){var sizes=this.target.getMarginBoxSize();if(sizes.height===0){this.slide('in');}else{this.slide('out');}},setDisplay:function(){var h=this.target.getStyle(this.options.type).toInt();if(h===0){this.target.setStyle('display','none');this.fireEvent('slideOut',this.target);}else{if(this.target.getStyle('position')!=='absolute'){this.target.setStyle(this.options.type,this.options.setOpenTo);}
this.fireEvent('slideIn',this.target);}},slide:function(dir){var h;if(dir==='in'){h=this.target.retrieve(this.options.type);this.target.setStyles({overflow:'hidden',display:'block'});this.target.setStyles(this.options.type,0);this.target.tween(this.options.type,h);}else{if(this.options.type==='height'){h=this.target.getMarginBoxSize().height;}else{h=this.target.getMarginBoxSize().width;}
this.target.store(this.options.type,h);this.target.setStyle('overflow','hidden');this.target.setStyle(this.options.type,h);this.target.tween(this.options.type,0);}}});Jx.Plugin.DataView.GroupFolder=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.DataView.GroupFolder",options:{headerClass:null},headerState:null,init:function(){this.headerState={};},attach:function(dataView){if(dataView===undefined||dataView===null||!(dataview instanceof Jx.Panel.DataView)){return;}
this.dv=dataView;this.dv.addEvent('renderDone',this.setHeaders.bind(this));},setHeaders:function(){var headers=this.dv.domA.getElements('.'+this.dv.options.groupHeaderClass);headers.each(function(header){var id=header.get('id');var s=new Jx.Slide({target:header.getNext(),trigger:id,onSlideOut:this.onSlideOut.bind(this,header),onSlideIn:this.onSlideIn.bind(this,header)});if(Object.keys(this.headerState).contains(id)){var state=this.headerState[id];if(state==='open'){s.slide('in');}else{s.slide('out');}}else{s.slide('in');}},this);},onSlideIn:function(header){this.headerState[header.get('id')]='open';if(header.hasClass(this.options.headerClass+'-closed')){header.removeClass(this.options.headerClass+'-closed');}
header.addClass(this.options.headerClass+'-open');},onSlideOut:function(header){this.headerState[header.get('id')]='closed';if(header.hasClass(this.options.headerClass+'-open')){header.removeClass(this.options.headerClass+'-open');}
header.addClass(this.options.headerClass+'-closed');}});Jx.Plugin.Tree.Sorter=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Tree.Sorter',options:{indicatorOffset:0,cloneOffset:{x:16,y:16},cloneOpacity:0.8,precalculate:false},tree:null,active:false,init:function(){this.bound={add:this.onFolderAdd.bind(this),startDrag:this.onStartDrag.bind(this),complete:this.onComplete.bind(this)};},attach:function(tree){if(tree===undefined||tree===null||!(tree instanceof Jx.Tree)){return;}
this.tree=tree;this.tree.addEvents({add:this.bound.add});this.tree.sortable=new Sortables(this.tree.container,{handle:'a.jxTreeItem',onStart:this.bound.startDrag,onComplete:this.bound.complete});this.parent(tree);},detach:function(){this.parent();},onFolderAdd:function(item){if(item instanceof Jx.Tree.Folder){item.sortable=new Sortables(item.container,{handle:'a.jxTreeItem',onStart:this.onStartDrag.bind(this),onComplete:this.onComplete.bind(this)});}
item.owner.sortable.addItems(document.id(item));},onComplete:function(element){console.log('onComplete fired by sortable');if(this.active){var previous=$jx(element.getPrevious('li'));element=$jx(element);this.tree.fireEvent('jxTreeSortDone',[element,previous]);var fn=function(){this.tree.setHoldEvents(false);}.delay(250,this);}},onStartDrag:function(element,clone){console.log('onStart fired by sortable');this.tree.setHoldEvents(true);this.active=true;element.removeClass('jxHover');}});Jx.Slider=new Class({Extends:Jx.Widget,Family:'Jx.Slider',options:{template:'<div class="jxSliderContainer"><div class="jxSliderKnob"></div></div>',max:100,min:0,step:1,mode:'horizontal',wheel:true,snap:true,startAt:0,offset:0,onChange:function(){},onComplete:function(){}},classes:{domObj:'jxSliderContainer',knob:'jxSliderKnob'},slider:null,knob:null,sliderOpts:null,disabled:false,render:function(){this.parent();this.sliderOpts={range:[this.options.min,this.options.max],snap:this.options.snap,mode:this.options.mode,wheel:this.options.wheel,steps:(this.options.max-this.options.min)/this.options.step,offset:this.options.offset,onChange:this.change.bind(this),onComplete:this.complete.bind(this)};},change:function(step){this.fireEvent('change',[step,this]);},complete:function(step){this.fireEvent('complete',[step,this]);},start:function(){if(this.slider===undefined||this.slider===null){this.slider=new Slider(this.domObj,this.knob,this.sliderOpts);}
this.slider.set(this.options.startAt);},set:function(value){this.slider.set(value);},enable:function(){if(this.disabled){this.slider.attach();this.domObj.removeClass('jxSliderDisabled');this.disabled=false;}},disable:function(){if(!this.disabled){this.slider.detach();this.domObj.addClass('jxSliderDisabled');this.disabled=true;}}});Jx.Editor.Selection=new Class({Extends:Jx.Object,Family:'Jx.Editor.Selection',parameters:["win","options"],options:{},init:function(){this.parent();this.win=this.options.win;},getSelection:function(){this.win.focus();return(this.win.getSelection)?this.win.getSelection():this.win.document.selection;},getRange:function(){var s=this.getSelection();if(!s)return null;try{return s.rangeCount>0?s.getRangeAt(0):(s.createRange?s.createRange():null);}catch(e){return this.doc.body.createTextRange();}},setRange:function(range){if(range.select){Function.attempt(function(){range.select();});}else{var s=this.getSelection();if(s.addRange){s.removeAllRanges();s.addRange(range);}}},selectNode:function(node,collapse){var r=this.getRange();var s=this.getSelection();if(r.moveToElementText){Function.attempt(function(){r.moveToElementText(node);r.select();});}else if(s.addRange){collapse?r.selectNodeContents(node):r.selectNode(node);s.removeAllRanges();s.addRange(r);}else{s.setBaseAndExtent(node,0,node,1);}
return node;},isCollapsed:function(){var r=this.getRange();if(r.item)return false;return r.boundingWidth==0||this.getSelection().isCollapsed;},collapse:function(toStart){var r=this.getRange();var s=this.getSelection();if(r.select){r.collapse(toStart);r.select();}else{toStart?s.collapseToStart():s.collapseToEnd();}},getContent:function(){var r=this.getRange();var body=new Element('body');if(this.isCollapsed())return'';if(r.cloneContents){body.appendChild(r.cloneContents());}else if((r.item!==undefined&&r.item!==null)||(r.htmlText!==undefined&&r.htmlText!==null)){body.set('html',r.item?r.item(0).outerHTML:r.htmlText);}else{body.set('html',r.toString());}
var content=body.get('html');return content;},getText:function(){var r=this.getRange();var s=this.getSelection();return this.isCollapsed()?'':r.text||(s.toString?s.toString():'');},getNode:function(){var r=this.getRange();if(!Browser.ie){var el=null;if(r){el=r.commonAncestorContainer;if(!r.collapsed)
if(r.startContainer==r.endContainer)
if(r.startOffset-r.endOffset<2)
if(r.startContainer.hasChildNodes())
el=r.startContainer.childNodes[r.startOffset];while(typeOf(el)!='element')el=el.parentNode;}
return document.id(el);}
return document.id(r.item?r.item(0):r.parentElement());},insertContent:function(content){if(Browser.ie){var r=this.getRange();r.pasteHTML(content);r.collapse(false);r.select();}else{this.win.document.execCommand('insertHTML',false,content);}}});Jx.Scrollbar=new Class({Extends:Jx.Widget,Family:'Jx.Scrollbar',Binds:['scrollIt'],options:{direction:'vertical',useMouseWheel:true,useScrollers:true,scrollerInterval:50,template:'<div class="jxScrollbarContainer"><div class="jxScrollLeft"></div><div class="jxSlider"></div><div class="jxScrollRight"></div></div>'},classes:{domObj:'jxScrollbarContainer',scrollLeft:'jxScrollLeft',scrollRight:'jxScrollRight',sliderHolder:'jxSlider'},el:null,parameters:['element','options'],render:function(){this.parent();this.el=document.id(this.options.element);if(this.el){this.el.addClass('jxHas'+this.options.direction.capitalize()+'Scrollbar');var children=this.el.getChildren();this.wrapper=new Element('div',{'class':'jxScrollbarChildWrapper'});this.wrapper.setStyles({width:this.el.getStyle('width'),height:this.el.getStyle('height')});children.inject(this.wrapper);this.wrapper.inject(this.el);this.domObj.inject(this.el);var scrollSize=this.wrapper.getScrollSize();var size=this.wrapper.getContentBoxSize();this.steps=this.options.direction==='horizontal'?scrollSize.x-size.width:scrollSize.y-size.height;this.slider=new Jx.Slider({snap:false,min:0,max:this.steps,step:1,mode:this.options.direction,onChange:this.scrollIt});if(!this.options.useScrollers){this.scrollLeft.dispose();this.scrollRight.dispose();if(this.options.direction==='horizontal'){this.sliderHolder.setStyle('width','100%');}else{this.sliderHolder.setStyle('height','100%');}}else{this.scrollLeft.addEvents({mousedown:function(){this.slider.slider.set(this.slider.slider.step-this.options.scrollerInterval);this.pid=function(){this.slider.slider.set(this.slider.slider.step-this.options.scrollerInterval);}.periodical(1000,this);}.bind(this),mouseup:function(){window.clearInterval(this.pid);}.bind(this)});this.scrollRight.addEvents({mousedown:function(){this.slider.slider.set(this.slider.slider.step+this.options.scrollerInterval);this.pid=function(){this.slider.slider.set(this.slider.slider.step+this.options.scrollerInterval);}.periodical(1000,this);}.bind(this),mouseup:function(){window.clearInterval(this.pid);}.bind(this)});var holderSize,scrollerRightSize,scrollerLeftSize;if(this.options.direction==='horizontal'){scrollerRightSize=this.scrollRight.getMarginBoxSize().width;scrollerLeftSize=this.scrollLeft.getMarginBoxSize().width;holderSize=size.width-scrollerRightSize-scrollerLeftSize;this.sliderHolder.setStyle('width',holderSize+'px');}else{scrollerRightSize=this.scrollRight.getMarginBoxSize().height;scrollerLeftSize=this.scrollLeft.getMarginBoxSize().height;holderSize=size.height-scrollerRightSize-scrollerLeftSize;this.sliderHolder.setStyle('height',holderSize+'px');}}
document.id(this.slider).inject(this.sliderHolder);if(this.options.useMouseWheel){$$(this.el,this.domObj).addEvent('mousewheel',function(e){e=new Event(e).stop();var step=this.slider.slider.step-e.wheel*30;this.slider.slider.set(step);}.bind(this));}
document.id(document.body).addEvent('mouseleave',function(){this.slider.slider.drag.stop();}.bind(this));this.slider.start();}},scrollIt:function(step){var x=this.options.direction==='horizontal'?step:0;var y=this.options.direction==='horizontal'?0:step;this.wrapper.scrollTo(x,y);}});Jx.Tab=new Class({Extends:Jx.Button,Family:'Jx.Tab',content:null,options:{toggleClass:'jxTabToggle',pressedClass:'jxTabPressed',activeClass:'jxTabActive',activeTabClass:'tabContentActive',template:'<span class="jxTabContainer"><a class="jxTab"><span class="jxTabContent"><img class="jxTabIcon" src="'+Jx.aPixel.src+'"><span class="jxTabLabel"></span></span></a><a class="jxTabClose"></a></span>',contentTemplate:'<div class="tabContent"></div>',close:false,shouldClose:true},classes:{domObj:'jxTabContainer',domA:'jxTab',domImg:'jxTabIcon',domLabel:'jxTabLabel',domClose:'jxTabClose',content:'tabContent'},render:function(){this.options=Object.merge({},this.options,{toggle:true});this.parent();this.domObj.store('jxTab',this);this.processElements(this.options.contentTemplate,this.classes);new Jx.Layout(this.content,this.options);if(!this.options.loadOnDemand||this.options.active){this.loadContent(this.content);if(this.options.active){this.clicked();}}else{this.addEvent('contentLoaded',function(ev){this.setActive(true);}.bind(this));}
this.addEvent('down',function(){this.content.addClass(this.options.activeTabClass);}.bind(this));this.addEvent('up',function(){this.content.removeClass(this.options.activeTabClass);}.bind(this));if(this.domClose){if(this.options.close){this.domObj.addClass('jxTabClose');this.domClose.addEvent('click',(function(){var shouldClose=true;if(this.options.shouldClose!==undefined&&this.options.shouldClose!==null){if(typeof this.options.shouldClose=='function'){shouldClose=this.options.shouldClose();}else{shouldClose=this.options.shouldClose;}}
if(shouldClose){this.fireEvent('close');}}).bind(this));}else{this.domClose.dispose();}}},clicked:function(evt){if(this.options.enabled){if(this.contentIsLoaded&&this.options.cacheContent){this.setActive(true);}else if(this.options.loadOnDemand||!this.options.cacheContent){this.loadContent(this.content);}else{this.setActive(true);}}}});Jx.Button.Tab=new Class({Extends:Jx.Tab,init:function(){if(console.warn){console.warn('WARNING: Jx.Button.Tab has been renamed to Jx.Tab');}else{console.log('WARNING: Jx.Button.Tab has been renamed to Jx.Tab');}
this.parent();}});Jx.TabSet=new Class({Extends:Jx.Object,Family:'Jx.TabSet',tabs:null,domObj:null,parameters:['domObj','options'],init:function(){this.tabs=[];this.domObj=document.id(this.options.domObj);if(!this.domObj.hasClass('jxTabSetContainer')){this.domObj.addClass('jxTabSetContainer');}
this.setActiveTabFn=this.setActiveTab.bind(this);},resizeTabBox:function(){if(this.activeTab&&this.activeTab.content.resize){this.activeTab.content.resize({forceResize:true});}},add:function(){Array.from(arguments).flatten().each(function(tab){if(tab instanceof Jx.Tab){tab.addEvent('down',this.setActiveTabFn);tab.tabSet=this;this.domObj.appendChild(tab.content);this.tabs.push(tab);if((!this.activeTab||tab.options.active)&&tab.options.enabled){tab.options.active=false;tab.setActive(true);}}},this);return this;},remove:function(tab){if(tab instanceof Jx.Tab&&this.tabs.indexOf(tab)!=-1){this.tabs.erase(tab);if(this.activeTab==tab){if(this.tabs.length){this.tabs[0].setActive(true);}}
tab.removeEvent('down',this.setActiveTabFn);tab.content.dispose();}},setActiveTab:function(tab){if(this.activeTab&&this.activeTab!=tab){this.activeTab.setActive(false);}
this.activeTab=tab;if(this.activeTab.content.resize){this.activeTab.content.resize({forceResize:true});}
this.fireEvent('tabChange',[this,tab]);}});Jx.TabBox=new Class({Extends:Jx.Widget,Family:'Jx.TabBox',options:{parent:null,position:'top',height:null,width:null,scroll:true},tabBar:null,tabSet:null,render:function(){this.parent();this.tabBar=new Jx.Toolbar({position:this.options.position,scroll:this.options.scroll});this.panel=new Jx.Panel({toolbars:[this.tabBar],hideTitle:true,height:this.options.height,width:this.options.width});this.panel.domObj.addClass('jxTabBox');this.tabSet=new Jx.TabSet(this.panel.content);this.tabSet.addEvent('tabChange',function(tabSet,tab){this.showItem(tab);}.bind(this.tabBar));this.domObj=this.panel.domObj;this.panel.addEvent('sizeChange',(function(){this.tabSet.resizeTabBox();this.tabBar.domObj.getParent('.jxBarContainer').retrieve('jxBarContainer').update();this.tabBar.domObj.getParent('.jxBarContainer').addClass('jxTabBar'+this.options.position.capitalize());}).bind(this));this.tabBar.addEvents({add:(function(){this.domObj.resize({forceResize:true});}).bind(this),remove:(function(){this.domObj.resize({forceResize:true});}).bind(this)});this.addEvent('addTo',function(){this.domObj.resize({forceResize:true});});if(this.options.parent){this.addTo(this.options.parent);}},add:function(){this.tabBar.add.apply(this.tabBar,arguments);this.tabSet.add.apply(this.tabSet,arguments);Array.from(arguments).flatten().each(function(tab){tab.addEvents({close:(function(){this.tabBar.remove(tab);this.tabSet.remove(tab);}).bind(this)});},this);return this;},remove:function(tab){this.tabBar.remove(tab);this.tabSet.remove(tab);}});Jx.Menu.SubMenu=new Class({Extends:Jx.Menu.Item,Family:'Jx.Menu.SubMenu',subDomObj:null,owner:null,visibleItem:null,list:null,options:{template:'<li class="jxMenuItemContainer"><a class="jxMenuItem jxButtonSubMenu"><span class="jxMenuItemContent"><img class="jxMenuItemIcon" src="'+Jx.aPixel.src+'"><span class="jxMenuItemLabel"></span></span></a></li>',position:{horizontal:['right left','left right'],vertical:['top top']}},render:function(){this.parent();this.open=false;this.menu=new Jx.Menu(null,{position:this.options.position});this.menu.domObj=this.domObj;},cleanup:function(){this.menu.domObj=null;this.menu.destroy();this.menu=null;this.parent();},setOwner:function(obj){this.owner=obj;this.menu.owner=obj;},show:function(){if(this.open||this.menu.list.count()==0){return;}
this.menu.show();this.open=true;},eventInMenu:function(e){if(this.visibleItem&&this.visibleItem.eventInMenu&&this.visibleItem.eventInMenu(e)){return true;}
return document.id(e.target).descendantOf(this.domObj)||this.menu.eventInMenu(e);},hide:function(){if(!this.open){return;}
this.open=false;this.menu.hide();this.visibleItem=null;},add:function(item,position){this.menu.add(item,position,this);return this;},remove:function(item){this.menu.remove(item);return this;},replace:function(item,withItem){this.menu.replace(item,withItem);return this;},empty:function(){this.menu.empty();},deactivate:function(e){if(this.owner){this.owner.deactivate(e);}},isActive:function(){if(this.owner){return this.owner.isActive();}else{return false;}},setActive:function(isActive){if(this.owner&&this.owner.setActive){this.owner.setActive(isActive);}},setVisibleItem:function(obj){if(this.visibleItem!=obj){if(this.visibleItem&&this.visibleItem.hide){this.visibleItem.hide();}
this.visibleItem=obj;this.visibleItem.show();}}});Jx.Menu.Separator=new Class({Extends:Jx.Widget,Family:'Jx.Menu.Separator',domObj:null,owner:null,options:{template:"<li class='jxMenuItemContainer jxMenuItem'><span class='jxMenuSeparator'>&nbsp;</span></li>"},classes:{domObj:'jxMenuItem'},render:function(){this.parent();this.domObj.store('jxMenuItem',this);},cleanup:function(){this.domObj.eliminate('jxMenuItem');this.owner=null;this.parent();},setOwner:function(obj){this.owner=obj;},hide:function(){},show:function(){}});Jx.Menu.Context=new Class({Extends:Jx.Menu,Family:'Jx.Menu.Context',parameters:['id','options'],render:function(){this.id=document.id(this.options.id);if(this.id){this.id.addEvent('contextmenu',this.show.bind(this));}
this.parent();},show:function(e){if(this.list.count()==0){return;}
this.target=e.target;this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');document.id(document.body).adopt(this.contentContainer);this.contentContainer.setStyles({width:null,height:null});this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.position(this.contentContainer,document.body,{horizontal:[e.page.x+' left'],vertical:[e.page.y+' top',e.page.y+' bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');this.showChrome(this.contentContainer);document.addEvent('mousedown',this.bound.hide);document.addEvent('keyup',this.bound.keypress);e.stop();}});Jx.Compare=new Class({Extends:Jx.Object,Family:'Jx.Compare',options:{separator:'.'},alphanumeric:function(a,b){return(a===b)?0:(a<b)?-1:1;},numeric:function(a,b){return this.alphanumeric(this.convert(a),this.convert(b));},convert:function(val){if(Jx.type(val)==='string'){var neg=false;if(val.substr(0,1)=='-'){neg=true;}
val=parseFloat(val.replace(/^[^\d\.]*([\d., ]+).*/g,"$1").replace(new RegExp("[^\\\d"+this.options.separator+"]","g"),'').replace(/,/,'.'))||0;if(neg){val=val*-1;}}
return val||0;},ignorecase:function(a,b){return this.alphanumeric((""+a).toLowerCase(),(""+b).toLowerCase());},currency:function(a,b){return this.numeric(a,b);},date:function(a,b){var x=new Date().parse(a),y=new Date().parse(b);return(x<y)?-1:(x>y)?1:0;},'boolean':function(a,b){return(a===true&&b===false)?-1:(a===b)?0:1;}});Jx.Sort=new Class({Extends:Jx.Object,Family:'Jx.Sort',options:{timeIt:false,onStart:function(){},onEnd:function(){}},timer:null,data:null,comparator:function(){},col:null,parameters:['data','fn','col','options'],init:function(){this.parent();if(this.options.timeIt){this.addEvent('start',this.startTimer.bind(this));this.addEvent('stop',this.stopTimer.bind(this));}
this.data=this.options.data;this.comparator=this.options.fn;this.col=this.options.col;},sort:function(){},startTimer:function(){this.timer=new Date();},stopTimer:function(){this.end=new Date();this.dif=this.timer.diff(this.end,'ms');},setData:function(data){if(data!==undefined&&data!==null){this.data=data;}},setColumn:function(col){if(col!==undefined&&col!==null){this.col=col;}},setComparator:function(fn){this.comparator=fn;}});Jx.Sort.Nativesort=new Class({Extends:Jx.Sort,Family:'Jx.Sort.Nativesort',name:'nativesort',sort:function(){this.fireEvent('start');var compare=function(a,b){return this.comparator((this.data[a]).get(this.col),(this.data[b]).get(this.col));};this.data.sort(compare);this.fireEvent('stop');return this.data;}});Jx.Store.Strategy.Progressive=new Class({Extends:Jx.Store.Strategy.Paginate,Family:"Jx.Store.Strategy.Progressive",name:'progressive',options:{maxRecords:1000,dropRecords:true},startingPage:0,maxPages:null,loadedPages:0,loadAt:'bottom',init:function(){this.parent();if(this.options.dropPages){this.maxPages=Math.ceil(this.options.maxRecords/this.itemsPerPage);}},loadStore:function(resp){this.store.protocol.removeEvent('dataLoaded',this.bound.loadStore);if(resp.success()){if(resp.meta!==undefined&&resp.meta!==null){this.parseMetaData(resp.meta);}
this.loadData(resp.data);}else{this.store.fireEvent('storeDataLoadFailed',this.store);}},loadData:function(data){this.store.loaded=false;this.store.addRecords(data,this.loadAt);this.store.loaded=true;this.loadedPages++;this.store.fireEvent('storeDataLoaded',this.store);},nextPage:function(params){if(params===undefined||params===null){params={};}
if(this.options.dropRecords&&this.totalPages>this.startingPage+this.loadedPages){this.loadAt='bottom';if(this.loadedPages>=this.maxPages){this.startingPage++;this.store.removeRecords(0,this.itemsPerPage-1);this.loadedPages--;}}
this.page=this.startingPage+this.loadedPages+1;this.load(Object.merge({},this.params,params));},previousPage:function(params){if(!this.options.dropRecords){return;}
if(params===undefined||params===null){params={};}
if(this.startingPage>0){this.loadAt='top';if(this.loadedPages>=this.maxPages){this.startingPage--;this.store.removeRecords(this.options.maxRecords-this.itemsPerPage,this.options.maxRecords);this.loadedPages--;}
this.page=this.startingPage;this.load(Object.merge({},this.params,params));}}});Jx.Store.Protocol.Local=new Class({Extends:Jx.Store.Protocol,Family:"Jx.Store.Protocol.Local",parameters:['data','options'],data:null,init:function(){this.parent();if(this.options.data!==undefined&&this.options.data!==null){this.data=this.parser.parse(this.options.data);}},read:function(options){var resp=new Jx.Store.Response(),page=options.data.page,itemsPerPage=options.data.itemsPerPage,start,end,data=this.data;resp.requestType='read';resp.requestParams=arguments;if(data!==undefined&&data!==null){if(page<=1&&itemsPerPage===-1){resp.data=data;resp.meta={count:data.length};}else{start=(page-1)*itemsPerPage;end=start+itemsPerPage;resp.data=data.slice(start,end);resp.meta={page:page,itemsPerPage:itemsPerPage,totalItems:data.length,totalPages:Math.ceil(data.length/itemsPerPage)};}
resp.code=Jx.Store.Response.SUCCESS;this.fireEvent('dataLoaded',resp);}else{resp.code=Jx.Store.Response.SUCCESS;this.fireEvent('dataLoaded',resp);}}});Jx.Store.Parser=new Class({Extends:Jx.Object,Family:'Jx.Store.Parser',parse:function(){},encode:function(){}});Jx.Sort.Heapsort=new Class({Extends:Jx.Sort,Family:'Jx.Sort.Heapsort',name:'heapsort',sort:function(){this.fireEvent('start');var count=this.data.length,end;if(count===1){return this.data;}
if(count>2){this.heapify(count);end=count-1;while(end>1){this.data.swap(end,0);end=end-1;this.siftDown(0,end);}}else{if((this.comparator((this.data[0]).get(this.col),(this.data[1]).get(this.col))>0)){this.data.swap(0,1);}}
this.fireEvent('stop');return this.data;},heapify:function(count){var start=Math.round((count-2)/2);while(start>=0){this.siftDown(start,count-1);start=start-1;}},siftDown:function(start,end){var root=start,child;while(root*2<=end){child=root*2;if((child+1<end)&&(this.comparator((this.data[child]).get(this.col),(this.data[child+1]).get(this.col))<0)){child=child+1;}
if((this.comparator((this.data[root]).get(this.col),(this.data[child]).get(this.col))<0)){this.data.swap(root,child);root=child;}else{return;}}}});Jx.Store.Parser.JSON=new Class({Extends:Jx.Store.Parser,Family:"Jx.Store.Parser.JSON",options:{secure:false},parse:function(data){var type=Jx.type(data);if(type==='string'){return JSON.decode(data,this.options.secure);}
return data;},encode:function(object){var data;if(object instanceof Jx.Record){data=object.asObject();}else{data=object;}
return JSON.encode(data);}});Jx.Sort.Mergesort=new Class({Extends:Jx.Sort,Family:'Jx.Sort.Mergesort',name:'mergesort',sort:function(){this.fireEvent('start');var d=this.mergeSort(this.data);this.fireEvent('stop');return d;},mergeSort:function(arr){if(arr.length<=1){return arr;}
var middle=(arr.length)/2,left=arr.slice(0,middle),right=arr.slice(middle),result;left=this.mergeSort(left);right=this.mergeSort(right);result=this.merge(left,right);return result;},merge:function(left,right){var result=[];while(left.length>0&&right.length>0){if(this.comparator((left[0]).get(this.col),(right[0]).get(this.col))<=0){result.push(left[0]);left=left.slice(1);}else{result.push(right[0]);right=right.slice(1);}}
while(left.length>0){result.push(left[0]);left=left.slice(1);}
while(right.length>0){result.push(right[0]);right=right.slice(1);}
return result;}});Jx.Store.Strategy.Sort=new Class({Extends:Jx.Store.Strategy,Family:"Jx.Store.Strategy.Sort",name:'sort',options:{sortOnStoreEvents:['storeColumnChanged','storeDataLoaded'],defaultSort:'merge',separator:'.',sortCols:[]},sorters:{quick:"Quicksort",merge:"Mergesort",heap:"Heapsort",'native':"Nativesort"},init:function(){this.parent();this.bound.sort=this.sort.bind(this);},activate:function(){if(this.options.sortOnStoreEvents!==undefined&&this.options.sortOnStoreEvents!==null){this.options.sortOnStoreEvents.each(function(ev){this.store.addEvent(ev,this.bound.sort);},this);}},deactivate:function(){if(this.options.sortOnStoreEvents!==undefined&&this.options.sortOnStoreEvents!==null){this.options.sortOnStoreEvents.each(function(ev){this.store.removeEvent(ev,this.bound.sort);},this);}},sort:function(cols,sort,dir){if(this.store.count()){this.store.fireEvent('sortStart',this);var c;if(cols!==undefined&&cols!==null&&Jx.type(cols)==='array'){c=this.options.sortCols=cols;}else if(cols!==undefined&&cols!==null&&Jx.type(cols)==='string'){this.options.sortCols=[];this.options.sortCols.push(cols);c=this.options.sortCols;}else if(this.options.sortCols!==undefined&&this.options.sortCols!==null){c=this.options.sortCols;}else{return null;}
this.sortType=sort;this.store.data=this.doSort(c[0],sort,this.store.data,true);if(c.length>1){this.store.data=this.subSort(this.store.data,0,1);}
if(dir!==undefined&&dir!==null&&dir==='desc'){this.store.data.reverse();}
this.store.fireEvent('storeSortFinished',this);}},subSort:function(data,groupByCol,sortByCol){if(sortByCol>=this.options.sortCols.length){return data;}
var result=[];var sub=[];var groupCol=this.options.sortCols[groupByCol];var sortCol=this.options.sortCols[sortByCol];var group=data[0].get(groupCol);this.sorter.setColumn(sortCol);for(var i=0;i<data.length;i++){if(group===(data[i]).get(groupCol)){sub.push(data[i]);}else{if(sub.length>1){result=result.concat(this.subSort(this.doSort(sortCol,this.sortType,sub,true),groupByCol+1,sortByCol+1));}else{result=result.concat(sub);}
group=(data[i]).get(groupCol);sub.empty();sub.push(data[i]);}}
if(sub.length>1){this.sorter.setData(sub);result=result.concat(this.subSort(this.doSort(sortCol,this.sortType,sub,true),groupByCol+1,sortByCol+1));}else{result=result.concat(sub);}
return result;},doSort:function(col,sort,data,ret,options){options={}||options;sort=(sort)?this.sorters[sort]:this.sorters[this.options.defaultSort];data=data?data:this.data;ret=ret?true:false;if(this.comparator===undefined||this.comparator===null){this.comparator=new Jx.Compare({separator:this.options.separator});}
this.col=col=this.resolveCol(col);var fn=this.comparator[col.type].bind(this.comparator);if(this.sorter===undefined||this.sorter===null){this.sorter=new Jx.Sort[sort](data,fn,col.name,options);}else{this.sorter.setComparator(fn);this.sorter.setColumn(col.name);this.sorter.setData(data);}
var d=this.sorter.sort();if(ret){return d;}else{this.data=d;}},resolveCol:function(col){var t=Jx.type(col);if(t==='number'){col=this.store.options.fields[col];}else if(t==='string'){this.store.options.fields.each(function(column){if(column.name===col){col=column;}},this);}
return col;}});Jx.Store.Strategy.Full=new Class({Extends:Jx.Store.Strategy,Family:"Jx.Store.Strategy.Full",name:'full',options:{},init:function(){this.parent();this.bound.load=this.load.bind(this);this.bound.loadStore=this.loadStore.bind(this);},activate:function(){this.parent();this.store.addEvent('storeLoad',this.bound.load);},deactivate:function(){this.parent();this.store.removeEvent('storeLoad',this.bound.load);},load:function(params){this.store.fireEvent('storeBeginDataLoad',this.store);this.store.protocol.addEvent('dataLoaded',this.bound.loadStore);var opts={};if(params!==undefined&&params!==null){opts.data=params;}else{opts.data={};}
opts.data.page=0;opts.data.itemsPerPage=-1;this.store.protocol.read(opts);},loadStore:function(resp){this.store.protocol.removeEvent('dataLoaded',this.bound.loadStore);if(resp.success()){this.store.empty();if(resp.meta!==undefined&&resp.meta!==null){this.parseMetaData(resp.meta);}
this.store.addRecords(resp.data);this.store.loaded=true;this.store.fireEvent('storeDataLoaded',this.store);}else{this.store.loaded=false;this.store.fireEvent('storeDataLoadFailed',[this.store,resp]);}},parseMetaData:function(meta){if(meta.columns!==undefined&&meta.columns!==null){this.store.options.fields=meta.columns;}
if(meta.primaryKey!==undefined&&meta.primaryKey!==null){this.store.options.recordOptions.primaryKey=meta.primaryKey;}}});Jx.Sort.Quicksort=new Class({Extends:Jx.Sort,Family:'Jx.Sort.Quicksort',name:'quicksort',sort:function(left,right){this.fireEvent('start');if(left===undefined||left===null){left=0;}
if(right===undefined&&right===null){right=this.data.length-1;}
this.quicksort(left,right);this.fireEvent('stop');return this.data;},quicksort:function(left,right){if(left>=right){return;}
var index=this.partition(left,right);this.quicksort(left,index-1);this.quicksort(index+1,right);},partition:function(left,right){this.findMedianOfMedians(left,right);var pivotIndex=left,pivotValue=(this.data[pivotIndex]).get(this.col),index=left,i;this.data.swap(pivotIndex,right);for(i=left;i<right;i++){if(this.comparator((this.data[i]).get(this.col),pivotValue)<0){this.data.swap(i,index);index=index+1;}}
this.data.swap(right,index);return index;},findMedianOfMedians:function(left,right){if(left===right){return this.data[left];}
var i,shift=1,endIndex,medianIndex;while(shift<=(right-left)){for(i=left;i<=right;i+=shift*5){endIndex=(i+shift*5-1<right)?i+shift*5-1:right;medianIndex=this.findMedianIndex(i,endIndex,shift);this.data.swap(i,medianIndex);}
shift*=5;}
return this.data[left];},findMedianIndex:function(left,right,shift){var groups=Math.round((right-left)/shift+1),k=Math.round(left+groups/2*shift),i,minIndex,v,minValue,j;if(k>this.data.length-1){k=this.data.length-1;}
for(i=left;i<k;i+=shift){minIndex=i;v=this.data[minIndex];minValue=v.get(this.col);for(j=i;j<=right;j+=shift){if(this.comparator((this.data[j]).get(this.col),minValue)<0){minIndex=j;minValue=(this.data[minIndex]).get(this.col);}}
this.data.swap(i,minIndex);}
return k;}});Jx.Store.Strategy.Save=new Class({Extends:Jx.Store.Strategy,Family:'Jx.Store.Strategy.Save',name:'save',options:{autoSave:false},failedChanges:[],successfulChanges:[],totalChanges:0,init:function(){this.bound.save=this.saveRecord.bind(this);this.bound.update=this.updateRecord.bind(this);this.bound.completed=this.onComplete.bind(this);this.parent();},activate:function(){this.parent();if(Jx.type(this.options.autoSave)==='number'){this.periodicalId=this.save.periodical(this.options.autoSave,this);}else if(this.options.autoSave){this.store.addEvent('storeRecordAdded',this.bound.save);this.store.addEvent('storeColumnChanged',this.bound.update);this.store.addEvent('storeRecordDeleted',this.bound.save);}},deactivate:function(){this.parent();if(this.periodicalId!==undefined&&this.periodicalId!==null){window.clearInterval(this.periodicalId);}else if(this.options.autoSave){this.store.removeEvent('storeRecordAdded',this.bound.save);this.store.removeEvent('storeColumnChanged',this.bound.update);this.store.removeEvent('storeRecordDeleted',this.bound.save);}},updateRecord:function(index,column,oldValue,newValue){var resp=this.saveRecord(this.store,this.store.getRecord(index));if(resp){resp.index=index;}},saveRecord:function(store,record){if(!this.updating&&record.state!==undefined&&record.state!==null){if(this.totalChanges===0){store.protocol.addEvent('dataLoaded',this.bound.completed);}
this.totalChanges++;var ret;switch(record.state){case Jx.Record.UPDATE:ret=store.protocol.update(record);break;case Jx.Record.DELETE:ret=store.protocol['delete'](record);break;case Jx.Record.INSERT:ret=store.protocol.insert(record);break;default:break;}
return ret;}},save:function(options){if(this.store.loaded){var records=[];records[Jx.Record.UPDATE]=[];records[Jx.Record.INSERT]=[];this.store.data.each(function(record){if(record!==undefined&&record!==null&&record.state!==undefined&&record.state!==null){records[record.state].push(record);}},this);records[Jx.Record.DELETE]=this.store.deleted;if(!this.updating){if(this.totalChanges===0){this.store.protocol.addEvent('dataLoaded',this.bound.completed);}
this.totalChanges+=records[Jx.Record.UPDATE].length+
records[Jx.Record.INSERT].length+
records[Jx.Record.DELETE].length;if(records[Jx.Record.UPDATE].length){this.store.protocol.update(records[Jx.Record.UPDATE],options);}
if(records[Jx.Record.INSERT].length){this.store.protocol.insert(records[Jx.Record.INSERT],options);}
if(records[Jx.Record.DELETE].length){this.store.protocol['delete'](records[Jx.Record.DELETE],options);}}}},onComplete:function(response){if(!response.success()||(response.meta!==undefined&&response.meta!==null&&!response.meta.success)){this.failedChanges.push(response);}else{var records=[response.requestParams[0]].flatten(),responseData=(response.data!==undefined&&response.data!==null)?[response.data].flatten():null;records.each(function(record,index){if(response.requestType==='delete'){this.store.deleted.erase(record);}else{if(response.requestType==='insert'||response.requestType=='update'){if(responseData&&responseData[index]!==undefined&&responseData[index]!==null){this.updating=true;Object.each(responseData[index],function(val,key){var d=record.set(key,val);if(d[1]!=val){d.unshift(index);record.store.fireEvent('storeColumnChanged',d);}});this.updating=false;}}
record.state=null;}
this.totalChanges--;},this);this.successfulChanges.push(response);}
if(this.totalChanges===0){this.store.protocol.removeEvent('dataLoaded',this.bound.completed);this.store.fireEvent('storeChangesCompleted',{successful:this.successfulChanges,failed:this.failedChanges});this.successfulChanges=[];this.failedChanges=[];}}});Jx.Plugin.Grid.Prelighter=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Grid.Prelighter",name:'Prelighter',options:{cell:false,row:false,column:false,rowHeader:false,columnHeader:false},init:function(){this.parent();this.bound.lighton=this.lighton.bind(this);this.bound.lightoff=this.lightoff.bind(this);this.bound.mouseleave=this.mouseleave.bind(this);},attach:function(grid){if(grid===undefined||grid===null||!(grid instanceof Jx.Grid)){return;}
this.parent(grid);this.grid=grid;grid.wantEvent('gridCellEnter');grid.wantEvent('gridCellLeave');grid.wantEvent('gridRowEnter');grid.wantEvent('gridRowLeave');grid.wantEvent('gridColumnEnter');grid.wantEvent('gridColumnLeave');grid.wantEvent('gridMouseLeave');grid.addEvent('gridCellEnter',this.bound.lighton);grid.addEvent('gridCellLeave',this.bound.lightoff);grid.addEvent('gridRowEnter',this.bound.lighton);grid.addEvent('gridRowLeave',this.bound.lightoff);grid.addEvent('gridColumnEnter',this.bound.lighton);grid.addEvent('gridColumnLeave',this.bound.lightoff);grid.addEvent('gridMouseLeave',this.bound.mouseleave);},detach:function(){if(this.grid){this.grid.removeEvent('gridCellEnter',this.bound.lighton);this.grid.removeEvent('gridCellLeave',this.bound.lightoff);this.grid.removeEvent('gridRowEnter',this.bound.lighton);this.grid.removeEvent('gridRowLeave',this.bound.lightoff);this.grid.removeEvent('gridColumnEnter',this.bound.lighton);this.grid.removeEvent('gridColumnLeave',this.bound.lightoff);this.grid.removeEvent('gridMouseLeave',this.bound.mouseleave);}
this.grid=null;},activate:function(opt){this.options[opt]=true;},deactivate:function(opt){this.options[opt]=false;},lighton:function(cell){this.light(cell,true);},lightoff:function(cell){this.light(cell,false);},light:function(cell,on){var parent=cell.getParent(),rowIndex=parent.getParent().getChildren().indexOf(parent),colIndex=cell.getParent().getChildren().indexOf(cell);if(this.options.cell){this.prelightCell(cell,on);}
if(this.options.row){this.prelightRow(rowIndex,on);}
if(this.options.column){this.prelightColumn(colIndex,on);}
if(this.options.rowHeader){this.prelightRowHeader(rowIndex,on);}
if(this.options.columnHeader){this.prelightColumnHeader(colIndex,on);}},prelightRowHeader:function(row,on){if(this.prelitRowHeader!==undefined&&this.prelitRowHeader!==null&&!on){this.prelitRowHeader.removeClass('jxGridRowHeaderPrelight');}else if(on){this.prelitRowHeader=(row>=0&&row<this.grid.rowTableBody.rows.length)?this.grid.rowTableBody.rows[row].cells[0]:null;if(this.prelitRowHeader){this.prelitRowHeader.addClass('jxGridRowHeaderPrelight');}}},prelightColumnHeader:function(col,on){if(this.grid.colTableBody.rows.length===0){return;}
if(this.prelitColumnHeader!==undefined&&this.prelitColumnHeader!==null&&!on){this.prelitColumnHeader.removeClass('jxGridColumnHeaderPrelight');}else if(on){this.prelitColumnHeader=(col>=0&&col<this.grid.colTableBody.rows[0].cells.length)?this.grid.colTableBody.rows[0].cells[col]:null;if(this.prelitColumnHeader){this.prelitColumnHeader.addClass('jxGridColumnHeaderPrelight');}}},prelightRow:function(row,on){if(this.prelitRow!=undefined&&this.prelitRow!=null&&!on){this.prelitRow.removeClass('jxGridRowPrelight');}else if(on){this.prelitRow=(row>=0&&row<this.grid.gridTableBody.rows.length)?this.grid.gridTableBody.rows[row]:null;if(this.prelitRow){this.prelitRow.addClass('jxGridRowPrelight');}}
this.prelightRowHeader(row,on);},prelightColumn:function(col,on){if(col>=0&&col<this.grid.gridTableBody.rows[0].cells.length){if(this.prelitColumn!=undefined&&this.prelitColumn!=null&&!on){for(var i=0;i<this.grid.gridTableBody.rows.length;i++){this.grid.gridTableBody.rows[i].cells[this.prelitColumn].removeClass('jxGridColumnPrelight');}}else if(on){this.prelitColumn=col;for(i=0;i<this.grid.gridTableBody.rows.length;i++){this.grid.gridTableBody.rows[i].cells[col].addClass('jxGridColumnPrelight');}}
this.prelightColumnHeader(col,on);}},prelightCell:function(cell,on){if(this.prelitCell!==undefined&&this.prelitCell!==null&&!on){this.prelitCell.removeClass('jxGridCellPrelight');}else if(on){this.prelitCell=cell;if(this.prelitCell){this.prelitCell.addClass('jxGridCellPrelight');}}},mouseleave:function(){if(this.prelitCell!==undefined&&this.prelitCell!==null){this.prelitCell.removeClass('jxGridCellPrelight');}
if(this.prelitColumn!==undefined&&this.prelitColumn!==null){for(var i=0;i<this.grid.gridTableBody.rows.length;i++){this.grid.gridTableBody.rows[i].cells[this.prelitColumn].removeClass('jxGridColumnPrelight');}}
if(this.prelitRow!==undefined&&this.prelitRow!==null){this.prelitRow.removeClass('jxGridRowPrelight');}
if(this.prelitColumnHeader!==undefined&&this.prelitColumnHeader!==null){this.prelitColumnHeader.removeClass('jxGridColumnHeaderPrelight');}
if(this.prelitRowHeader!==undefined&&this.prelitRowHeader!==null){this.prelitRowHeader.removeClass('jxGridRowHeaderPrelight');}}});Jx.Plugin.Grid.Selector=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Grid.Selector',name:'Selector',Binds:['select','checkSelection','checkAll','afterGridRender','onCellClick','sort','updateCheckColumn','updateSelectedRows','onPostRender'],options:{cell:false,row:false,column:false,multiple:false,useCheckColumn:false,checkAsHeader:false,sortableColumn:false},domInsert:true,selected:null,init:function(){this.parent();this.selected={cells:[],columns:[],rows:[],rowHeads:[],columnHeads:[]};},attach:function(grid){if(grid===undefined||grid===null||!(grid instanceof Jx.Grid)){return;}
this.parent(grid);var options=this.options,template;this.grid=grid;grid.addEvent('gridSortFinished',this.updateSelectedRows);if(grid.ready){this.onPostRender();}else{grid.addEvent('postRender',this.onPostRender);}},onPostRender:function(){var grid=this.grid,options=this.options;if(options.useCheckColumn){grid.addEvent('gridDrawRow',this.updateCheckColumn);template='<span class="jxGridCellContent">';if(options.multiple){template+='<span class="jxInputContainer jxInputContainerCheck"><input class="jxInputCheck" type="checkbox" name="checkAll" id="checkAll"/></span>';}else{template+='</span>';}
template+="</span>";this.checkColumn=new Jx.Grid.Column({template:template,renderMode:'fixed',width:20,renderer:null,name:'selection',isSortable:options.sortableColumn||false,sort:options.sortableColumn?this.sort:null},grid);this.checkColumn.options.renderer=this;grid.columnModel.columns.reverse();grid.columnModel.columns.push(this.checkColumn);grid.columnModel.columns.reverse();if(options.checkAsHeader){this.oldHeaderColumn=grid.rowModel.options.headerColumn;grid.rowModel.options.useHeaders=true;grid.rowModel.options.headerColumn='selection';if(options.multiple){grid.addEvent('doneCreateGrid',this.afterGridRender);}}
if(options.multiple){document.id(this.checkColumn).getElement('input').addEvents({'change':this.checkAll});}}else{grid.wantEvent('gridCellClick');grid.addEvent('gridCellClick',this.onCellClick);}},render:function(){this.domObj=new Element('span',{'class':'jxGridCellContent'});new Element('input',{'class':'jxGridSelector',type:'checkbox',events:{change:this.checkSelection}}).inject(this.domObj);},toElement:function(){return this.domObj;},updateCheckColumn:function(index,record){var state=this.selected.rows.contains(index),r=this.grid.gridTableBody.rows,tr=document.id((index>=0&&index<r.length)?r[index]:null);if(tr){tr.store('jxRowData',{row:index});if(state){tr.addClass('jxGridRowSelected');}else{tr.removeClass('jxGridRowSelected');}
this.setCheckField(index,state);}},afterGridRender:function(){if(this.options.checkAsHeader){var chkCol=document.id(this.checkColumn).clone();chkCol.getElement('input').addEvent('change',this.checkAll);this.grid.rowColContainer.adopt(chkCol);}
this.grid.removeEvent('doneCreateGrid',this.afterGridRender);},detach:function(){var grid=this.grid,options=this.options,col;if(grid){grid.gridTableBody.removeEvents({click:this.onCellClick});if(this.checkColumn){grid.columnModel.columns.erase(this.checkColumn);this.checkColumn.destroy();this.checkColumn=null;}
if(options.useCheckColumn){grid.removeEvent('gridDrawRow',this.updateCheckColumn);if(options.checkAsHeader){grid.rowModel.options.headerColumn=this.oldHeaderColumn;}}}
this.grid.removeEvent('gridSortFinished',this.updateSelectedRows);this.grid=null;},activate:function(opt){this.options[opt]=true;},deactivate:function(opt){var gridTableRows=this.grid.gridTableBody.rows,selected=this.selected,i;this.options[opt]=false;if(opt==='cell'){selected.cells.each(function(cell){cell.removeClass('jxGridCellSelected');});selected.cells=[];}else if(opt==='row'){this.getSelectedRows().each(function(row){idx=row.retrieve('jxRowData').row;row.removeClass('jxGridRowSelected');this.setCheckField(idx,false);},this);selected.rows=[];selected.rowHeads.each(function(rowHead){rowHead.removeClass('jxGridRowHeaderSelected');});selected.rowHeads=[];}else{selected.columns.each(function(column){for(i=0;i<gridTableRows.length;i++){gridTableRows[i].cells[column].removeClass('jxGridColumnSelected');}});selected.columns=[];selected.columnHeads.each(function(rowHead){rowHead.removeClass('jxGridColumnHeaderSelected');},this);selected.columnHeads=[];}},onCellClick:function(cell){if(cell){this.select(cell);}},select:function(cell){var data=cell.retrieve('jxCellData'),options=this.options,col;if(options.cell&&data.row!==undefined&&data.row!==null&&data.index!==undefined&&data.index!==null){this.selectCell(cell);}
if(options.row&&data.row!==undefined&&data.row!==null){this.selectRow(data.row);}
if(options.column&&data.index!==undefined&&data.index!==null){if(this.grid.rowModel.useHeaders()){this.selectColumn(data.index-1);}else{this.selectColumn(data.index);}}},selectCell:function(cell){if(!this.options.cell){return;}
var cells=this.selected.cells;if(cell.hasClass('jxGridCellSelected')){cell.removeClass('jxGridCellSelected');cells.erase(cell);this.fireEvent('unselectCell',cell);}else{cell.addClass('jxGridCellSelected');cells.push(cell);this.fireEvent('selectCell',cell);}},updateSelectedRows:function(){if(!this.options.row){return;}
var options=this.options,r=this.grid.gridTableBody.rows,rows=[];for(var i=0;i<r.length;i++){if(r[i].hasClass('jxGridRowSelected')){rows.push(i);}}
this.selected.rows=rows;},selectRow:function(row,silently){if(!this.options.row){return;}
var options=this.options,r=this.grid.gridTableBody.rows,tr=document.id((row>=0&&row<r.length)?r[row]:null),rows=this.selected.rows,silently=(silently!==undefined&&silently!==null)?silently:false;if(tr){if(tr.hasClass('jxGridRowSelected')){tr.removeClass('jxGridRowSelected');this.setCheckField(row,false);if(options.multiple&&options.useCheckColumn){if(options.checkAsHeader){document.id(this.grid.rowColContainer).getElement('input').removeProperty('checked');}else{document.id(this.checkColumn).getElement('input').removeProperty('checked');}}
rows.erase(row);if(!silently){this.fireEvent('unselectRow',row);}}else{tr.store('jxRowData',{row:row});rows.push(row);tr.addClass('jxGridRowSelected');this.setCheckField(row,true);if(!silently){this.fireEvent('selectRow',row);}}
if(!this.options.multiple){var unselected=[];this.getSelectedRows().each(function(row){var idx;if(row!==tr){idx=row.retrieve('jxRowData').row;row.removeClass('jxGridRowSelected');this.setCheckField(idx,false);rows.erase(row);unselected.push(idx);if(!silently){this.fireEvent('unselectRow',row);}}},this);if(unselected.length&&!silently){this.fireEvent('unselectRows',[unselected]);}}}
this.selectRowHeader(row);},setCheckField:function(row,checked){var grid=this.grid,options=this.options,check,col,cell;if(options.useCheckColumn){if(options.checkAsHeader){cell=document.id(grid.rowTableBody.rows[row].cells[0]);}else{col=grid.columnModel.getIndexFromGrid(this.checkColumn.name);cell=document.id(grid.gridTableBody.rows[row].cells[col]);}
check=cell.getElement('.jxGridSelector');check.set('checked',checked);}},selectRowHeader:function(row){if(!this.grid.rowModel.useHeaders()){return;}
var rows=this.grid.rowTableBody.rows,cell=document.id((row>=0&&row<rows.length)?rows[row].cells[0]:null),cells;if(!cell){return;}
cells=this.selected.rowHeads;if(cells.contains(cell)){cell.removeClass('jxGridRowHeaderSelected');cells.erase(cell);}else{cell.addClass('jxGridRowHeaderSelected');cells.push(cell);}
if(!this.options.multiple){cells.each(function(c){if(c!==cell){c.removeClass('jxGridRowHeaderSelected');cells.erase(c);}},this);}},selectColumn:function(col){var gridTable=this.grid.gridTableBody,cols=this.selected.columns,m='',i;if(col>=0&&col<gridTable.rows[0].cells.length){if(cols.contains(col)){m='removeClass';cols.erase(col);this.fireEvent('unselectColumn',col);}else{m='addClass';cols.push(col);this.fireEvent('selectColumn',col);}
for(i=0;i<gridTable.rows.length;i++){gridTable.rows[i].cells[col][m]('jxGridColumnSelected');}
if(!this.options.multiple){cols.each(function(c){if(c!==col){for(i=0;i<gridTable.rows.length;i++){gridTable.rows[i].cells[c].removeClass('jxGridColumnSelected');}
cols.erase(c);this.fireEvent('unselectColumn',c);}},this);}
this.selectColumnHeader(col);}},selectColumnHeader:function(col){var rows=this.grid.colTableBody;if(rows.length===0||!this.grid.rowModel.useHeaders()){return;}
var cell=(col>=0&&col<rows[0].cells.length)?rows[0].cells[col]:null;if(cell===null){return;}
cell=document.id(cell);cells=this.selected.columnHeads;if(cells.contains(cell)){cell.removeClass('jxGridColumnHeaderSelected');cells.erase(cell);}else{cell.addClass('jxGridColumnHeaderSelected');cells.push(cell);}
if(!this.options.multiple){cells.each(function(c){if(c!==cell){c.removeClass('jxGridColumnHeaderSelected');cells.erase(c);}});}},checkSelection:function(event){var cell=event.target.getParent('tr'),row;if(cell){row=cell.getParent().getChildren().indexOf(cell);this.selectRow(row);}},checkAll:function(){var grid=this.grid,col,rows,selection=[],checked=this.options.checkAsHeader?grid.rowColContainer.getElement('input').get('checked'):this.checkColumn.domObj.getElement('input').get('checked'),event=checked?'selectRows':'unselectRows';if(this.options.checkAsHeader){col=0;rows=grid.rowTableBody.rows;}else{col=grid.columnModel.getIndexFromGrid(this.checkColumn.name);rows=grid.gridTableBody.rows;}
Array.from(rows).each(function(row,idx){var check=row.cells[col].getElement('input');if(check!==undefined&&check!==null){var rowChecked=check.get('checked');if(rowChecked!==checked){this.selectRow(idx,true);selection.push(idx);}}},this);this.fireEvent(event,[selection]);},sort:function(dir){var grid=this.grid,store=grid.store,data=store.data,gridTableBody=grid.gridTableBody,gridParent=gridTableBody.getParent(),useHeaders=grid.rowModel.useHeaders(),rowTableBody=grid.rowTableBody,rowParent=rowTableBody.getParent(),selected=this.getSelectedRows();if(!this.options.row||selected.length==0){console.log('not sorting by selection, nothing to sort');return;}
store.each(function(record,index){record.dom={cell:gridTableBody.childNodes[index],row:useHeaders?rowTableBody.childNodes[index]:null};});gridTableBody.dispose();if(useHeaders){rowTableBody.dispose();}
selected.sort(function(a,b){return a.retrieve('jxRowData').row-b.retrieve('jxRowData').row;}).each(function(row){console.log('moving row '+row.retrieve('jxRowData').row+' to beginning of array');data.unshift(data.splice(row.retrieve('jxRowData').row,1)[0]);});if(dir=='desc'){data.reverse();}
store.each(function(record,index){record.dom.cell.inject(gridTableBody);record.dom.cell.store('jxRowData',{row:index});if(useHeaders){record.dom.row.inject(rowTableBody);}});if(gridParent){gridParent.adopt(gridTableBody);}
if(useHeaders&&rowParent){rowParent.adopt(rowTableBody);}},getSelectedRows:function(){var rows=[],selected=this.selected.rows,r=this.grid.gridTableBody.rows;selected.each(function(row){var tr=document.id((row>=0&&row<r.length)?r[row]:null);if(tr){rows.push(tr);}});return rows;}});Jx.Plugin.Grid.Resize=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Grid.Resize",name:'Resize',Binds:['createHandles','removeHandles'],options:{column:false,row:false,tooltip:''},els:{column:[],row:[]},drags:{column:[],row:[]},attach:function(grid){if(grid===undefined||grid===null||!(grid instanceof Jx.Grid)){return;}
this.parent(grid);this.grid=grid;if(grid.columnModel.useHeaders()){grid.addEvent('doneCreateGrid',this.createHandles);grid.addEvent('beginCreateGrid',this.removeHandles);grid.addEvent('postRender',this.createHandles);}},detach:function(){this.parent();if(this.grid){this.grid.removeEvent('doneCreateGrid',this.createHandles);this.grid.removeEvent('beginCreateGrid',this.removeHandles);}
this.grid=null;},activate:function(option){if(this.options[option]!==undefined&&this.options[option]!==null){this.options[option]=true;}
if(this.grid.columnModel.useHeaders()){this.createHandles();}},deactivate:function(option){if(this.options[option]!==undefined&&this.options[option]!==null){this.options[option]=false;}
this.createHandles();},removeHandles:function(){['column','row'].each(function(option){this.els[option].each(function(el){el.dispose();});this.els[option]=[];this.drags[option].each(function(drag){drag.detach();});this.drags[option]=[];},this);},createHandles:function(){var grid=this.grid,store=grid.store;this.removeHandles();if(this.options.column&&grid.columnModel.useHeaders()){grid.columnModel.columns.each(function(col,idx){var rhc=(grid.rowModel.getRowHeaderColumn()==col.name);if(col.isResizable()&&!col.isHidden()&&!rhc){var colEl=grid.colObj.getElement('.jxGridCol'+idx+' .jxGridCellContent');var el=new Element('div',{'class':'jxGridColumnResize',title:this.options.tooltip==''?this.getText({set:'Jx',key:'plugin.resize',value:'tooltip'}):this.getText(this.options.tooltip),events:{dblclick:function(){}}}).inject(colEl);this.els.column.push(el);this.drags.column.push(new Drag(el,{limit:{y:[0,0]},snap:2,onBeforeStart:function(el){var l=el.getPosition(el.parentNode).x.toInt();el.setStyles({left:l,right:null});},onStart:function(el){var l=el.getPosition(el.parentNode).x.toInt();el.setStyles({left:l,right:null});},onDrag:function(el){var w=el.getPosition(el.parentNode).x.toInt();col.setWidth(w);},onComplete:function(el){el.setStyle('left',null);}}));}},this);}},changeText:function(lang){this.parent();var txt=this.options.tooltip==''?this.getText({set:'Jx',key:'plugin.resize',value:'tooltip'}):this.getText(this.options.tooltip);['column','row'].each(function(option){this.els[option].each(function(el){el.set('title',txt);});},this);}});Jx.Plugin.Grid.Editor=new Class({Extends:Jx.Plugin,Family:"Jx.Plugin.Grid.Editor",name:'Editor',Binds:['activate','deactivate','changeText','onCellClick'],options:{enabled:true,blurDelay:500,popup:{use:true,useLabels:false,useButtons:true,button:{submit:{label:'',image:'images/accept.png'},cancel:{label:'',image:'images/cancel.png'}},template:'<div class="jxGridEditorPopup"><div class="jxGridEditorPopupInnerWrapper"></div></div>'},validate:true,fieldOptions:[{field:'*',type:'Text',options:{},validatorOptions:{validators:[],validateOnBlur:true,validateOnChange:false}}],fieldFormatted:true,cellChangeFx:{use:true,success:'#090',error:'#F00'},cellOutline:{use:true,style:'2px solid #88c3e7'},useKeyboard:true,keys:{'ctrl+shift+enter':'saveNGoUp','tab':'saveNGoRight','ctrl+enter':'saveNGoDown','shift+tab':'saveNGoLeft','enter':'saveNClose','ctrl+up':'cancelNGoUp','ctrl+right':'cancelNGoRight','ctrl+down':'cancelNGoDown','ctrl+left':'cancelNGoLeft','esc':'cancelNClose','up':'valueIncrement','down':'valueDecrement'},keyboardMethods:{},keypressLoop:true,linkClickListener:true},classes:['jxGridEditorPopup','jxGridEditorPopupInnerWrapper'],activeCell:{field:null,cell:null,span:null,oldValue:null,newValue:{data:null,error:false},timeoutId:null,data:{},fieldOptions:{}},popup:{domObj:null,innerWarpper:null,closeIcon:null,button:{submit:null,cancel:null}},keyboard:null,keyboardMethods:{},init:function(){this.parent();},attach:function(grid){if(grid===undefined||grid===null||!(grid instanceof Jx.Grid)){return;}
this.parent(grid);this.grid=grid;this.grid.addEvent('gridCellClick',this.onCellClick);if(this.getFieldOptionsByColName('*').field!='*'){this.options.fieldOptions.unshift({field:'*',type:'Text',options:{},validatorOptions:{validators:[],validateOnBlur:true,validateOnChange:false}});}
var self=this;this.keyboardMethods={saveNClose:function(ev){if(self.activeCell.fieldOptions.type!='Textarea'||(self.activeCell.fieldOptions.type=='Textarea'&&ev.key!='enter')){self.deactivate();}},saveNGoUp:function(ev){ev.preventDefault();self.getPrevCellInCol();},saveNGoRight:function(ev){ev.preventDefault();self.getNextCellInRow();},saveNGoDown:function(ev){ev.preventDefault();self.getNextCellInCol();},saveNGoLeft:function(ev){ev.preventDefault();self.getPrevCellInRow();},cancelNClose:function(ev){ev.preventDefault();self.deactivate(false);},cancelNGoUp:function(ev){ev.preventDefault();self.getPrevCellInCol(false);},cancelNGoRight:function(ev){ev.preventDefault();self.getNextCellInRow(false);},cancelNGoDown:function(ev){ev.preventDefault();self.getNextCellInCol(false);},cancelNGoLeft:function(ev){ev.preventDefault();self.getPrevCellInRow(false);},valueIncrement:function(ev){ev.preventDefault();self.cellValueIncrement(true);},valueDecrement:function(ev){ev.preventDefault();self.cellValueIncrement(false);}};var keyboardEvents={};for(var i in this.options.keys){if(this.keyboardMethods[this.options.keys[i]]!==undefined&&this.keyboardMethods[this.options.keys[i]]!==null){keyboardEvents[i]=this.keyboardMethods[this.options.keys[i]];}else if(this.options.keyboardMethods[this.options.keys[i]]!==undefined&&this.options.keyboardMethods[this.options.keys[i]]!==null){keyboardEvents[i]=this.options.keyboardMethods[this.options.keys[i]].bind(self);}else if(Jx.type(this.options.keys[i])=='function'){keyboardEvents[i]=this.options.keys[i].bind(self);}else{console!=undefined?console.warn("keyboard method %o not defined",this.options.keys[i]):false;}}
this.keyboard=new Keyboard({events:keyboardEvents});this.addFormatterUriClickListener();},detach:function(){if(this.grid){this.grid.removeEvent('gridCellClick',this.onCellClick);}
this.grid=null;this.keyboard=null;},enable:function(){this.options.enabled=true;},disable:function(close,save){close=(close!==undefined&&close!==null)?close:true;save=(save!==undefined&&save!==null)?save:false;if(close&&this.activeCell.cell!=null){this.deactivate(save);}
this.options.enabled=false;},onCellClick:function(cell){this.activate(cell);},activate:function(cell){if(!this.options.enabled||!cell)
return;if(this.activeCell.cell){if(this.activeCell.cell!=cell){if(!this.deactivate()){return;}}else{return;}}
var data=this.grid.getCellData(cell);if(!data||data.row===undefined||data.row===null||data.column===undefined||data.column===null){if(console!==undefined){console.warn('out of grid %o',cell);console.warn('data was %o',data);}
return;}
if(!data.column.options.isEditable){return;}
if(this.activeCell.timeoutId){clearTimeout(activeCell.timeoutId);}
this.grid.store.moveTo(data.row);var options=this.options,grid=this.grid,store=grid.getStore(),index=grid.columns.getIndexFromGrid(data.column.name),colOptions=data.column.options,activeCell={oldValue:store.get(data.column.name),newValue:{data:null,error:false},fieldOptions:this.getFieldOptionsByColName(data.column.name),data:data,cell:cell,span:cell.getElement('span.jxGridCellContent'),validator:null,field:null,timeoutId:null},jxFieldOptions=activeCell.fieldOptions.options,oldValue,groups,k,n;if(data.column.options.validate!==undefined||data.column.options.validate!==null||typeof(data.column.options.validate)!='boolean'){data.column.options.validate=options.validate;cell.store('jxCellData',data);}
switch(activeCell.fieldOptions.type){case'Text':case'Color':case'Password':case'File':jxFieldOptions.value=activeCell.oldValue;break;case'Textarea':jxFieldOptions.value=activeCell.oldValue.replace(/<br \/>/gi,'\n');break;case'Select':jxFieldOptions.value=oldValue=activeCell.oldValue.toString();function setCombos(opts,oldValue){for(var i=0,j=opts.length;i<j;i++){if(opts[i].value==oldValue){opts[i].selected=true;}else{opts[i].selected=false;}}
return opts;}
if(jxFieldOptions.comboOpts){jxFieldOptions.comboOpts=setCombos(jxFieldOptions.comboOpts,oldValue);}else if(jxFieldOptions.optGroups){groups=jxFieldOptions.optGroups;for(k=0,n=groups.length;k<n;k++){groups[k].options=setCombos(groups[k].options,oldValue);}
jxFieldOptions.optGroups=groups;}
break;case'Radio':case'Checkbox':default:console!=undefined?console.warn("Fieldtype %o is not supported yet. If you have set a validator for a column, you maybe have forgotton to enter a field type.",activeCell.fieldOptions.type):false;return;break;}
if(options.fieldFormatted&&colOptions.renderer.options.formatter!=null){if(colOptions.fieldFormatted===undefined||colOptions.fieldFormatted===null||colOptions.fieldFormatted==true){jxFieldOptions.value=colOptions.renderer.options.formatter.format(jxFieldOptions.value);activeCell.oldValue=jxFieldOptions.value;}}
activeCell.field=new Jx.Field[activeCell.fieldOptions.type.capitalize()](jxFieldOptions);if(options.validate&&colOptions.validate){activeCell.validator=new Jx.Plugin.Field.Validator(activeCell.fieldOptions.validatorOptions);activeCell.validator.attach(activeCell.field);}
this.activeCell=activeCell;this.setStyles(cell);if(options.useKeyboard){this.keyboard.activate();}
if(typeof(options.blurDelay)=='string'){options.blurDelay=options.blurDelay.toInt()?options.blurDelay.toInt():false;}
if(options.blurDelay!==false&&typeof(options.blurDelay)=='number'){activeCell.field.field.addEvents({'blur':function(){clearTimeout(activeCell.timeoutId);activeCell.timeoutId=this.deactivate.delay(this.options.blurDelay);}.bind(this),'focus':function(){clearTimeout(activeCell.timeoutId);},'mouseover':function(){clearTimeout(activeCell.timeoutId);}});if(this.popup.domObj!=null){this.popup.domObj.addEvent('mouseenter',function(){clearTimeout(activeCell.timeoutId);});}}
activeCell.field.field.focus();},deactivate:function(save){var newValue={data:null,error:false},index,activeCell=this.activeCell,grid=this.grid,store=grid.store,options=this.options,highlighter,cellBg;clearTimeout(activeCell.timeoutId);if(activeCell.field!==null){save=(save!==undefined&&save!==null)?save:true;if(save&&activeCell.field.getValue().toString()!=activeCell.oldValue.toString()){store.moveTo(activeCell.data.row);switch(activeCell.fieldOptions.type){case'Select':index=activeCell.field.field.selectedIndex;newValue.data=document.id(activeCell.field.field.options[index]).get('value');break;case'Textarea':newValue.data=activeCell.field.getValue().replace(/\n/gi,'<br />');break;default:newValue.data=activeCell.field.getValue();break;}
if(save){activeCell.newValue.data=newValue.data;}
if(activeCell.validator!=null&&!activeCell.validator.isValid()){newValue.error=true;activeCell.field.field.focus.delay(50,activeCell.field.field);}}else{activeCell.span.show();}
if(save&&newValue.data!=null&&newValue.error==false){store.set(activeCell.data.column.name,newValue.data);this.addFormatterUriClickListener();}else if(newValue.error==true){activeCell.span.show();}
if(activeCell.data.row!==undefined&&activeCell.data.row!==null&&activeCell.data.index!==undefined&&activeCell.data.index!==null){var colIndex=grid.row.useHeaders()?activeCell.data.index-1:activeCell.data.index;this.activeCell.cell=grid.gridTableBody.rows[this.activeCell.data.row].cells[colIndex];}
if(options.useKeyboard){activeCell.field.removeEvent('keypress',this.setKeyboard);}
if(options.cellChangeFx.use){highlighter=new Fx.Tween(this.activeCell.cell,{duration:250,onComplete:function(ev){this.element.removeProperty('style');}});cellBg=activeCell.cell.getStyle('background-color');cellBg=cellBg=='transparent'?'#fff':cellBg;if(newValue.data!=null&&newValue.error==false){highlighter.start('background-color',options.cellChangeFx.success,cellBg);}else if(newValue.error){highlighter.start('background-color',options.cellChangeFx.error,cellBg);}}
if(newValue.error){if(options.cellChangeFx.use){activeCell.field.field.highlight(options.cellChangeFx.error);}
activeCell.field.field.setStyle('border','1px solid '+options.cellChangeFx.error);activeCell.field.field.focus();return false;}else{this.keyboard.deactivate();this.unsetActiveField();return true;}}},setStyles:function(cell){var styles,size,options=this.options,activeCell=this.activeCell;if(options.popup.use){if(options.popup.useLabels){activeCell.field.options.label=activeCell.data.column.options.header;activeCell.field.render();}
styles={field:{'width':activeCell.field.type=='Select'?cell.getContentBoxSize().width+5+"px":cell.getContentBoxSize().width-14+"px",'margin':'auto 0'}};activeCell.field.field.setStyles(styles.field);this.showPopUp(cell);}else{size=cell.getContentBoxSize();styles={domObj:{position:'absolute'},field:{width:size.width+"px",'margin-left':0}};activeCell.field.domObj.setStyles(styles.domObj);activeCell.field.field.setStyles(styles.field);activeCell.field.domObj.inject(document.body);Jx.Widget.prototype.position(activeCell.field.domObj,cell,{horizontal:['left left'],vertical:['top top']});activeCell.span.hide();}
if(options.cellOutline.use){cell.setStyle('outline',options.cellOutline.style);}},showPopUp:function(cell){if(this.popup.domObj!=null){Jx.Widget.prototype.position(this.popup.domObj,cell,{horizontal:['left left'],vertical:['top top']});this.activeCell.field.domObj.inject(this.popup.innerWrapper,'top');this.popup.domObj.show();this.setPopUpButtons();this.setPopUpStylesAfterRendering();}else{this.createPopUp(cell);}},createPopUp:function(cell){var coords=cell.getCoordinates(),self=this,popup=null,innerWrapper=null,closeIcon=null,submit=null,cancel=null,template=Jx.Widget.prototype.processTemplate(this.options.popup.template,this.classes);popup=template.jxGridEditorPopup;innerWrapper=template.jxGridEditorPopupInnerWrapper;popup.setStyles({'left':coords.left+'px','top':coords.top+'px'});this.popup.domObj=popup;this.popup.innerWrapper=innerWrapper;this.popup.closeIcon=closeIcon;this.setPopUpButtons();this.activeCell.field.domObj.inject(this.popup.innerWrapper,'top');this.popup.domObj.inject(document.body);this.setPopUpStylesAfterRendering();},setPopUpStylesAfterRendering:function(){if(this.options.popup.useButtons&&this.popup.button.submit!=null&&this.popup.button.cancel!=null){this.popup.domObj.setStyle('min-width',this.popup.button.submit.domObj.getSize().x+this.popup.button.cancel.domObj.getSize().x+"px");}else{if(this.popup.button.submit!=null)
this.popup.button.submit.domObj.hide();if(this.popup.button.cancel!=null)
this.popup.button.cancel.domObj.hide();}
this.activeCell.field.field.setStyle('width',this.activeCell.field.type=='Select'?this.popup.domObj.getSize().x-7+"px":this.popup.domObj.getSize().x-17+"px");},setPopUpButtons:function(){var self=this,button={submit:null,cancel:null};if(this.options.popup.useButtons&&this.popup.innerWrapper!=null&&this.popup.button.submit==null){button.submit=new Jx.Button({label:this.options.popup.button.submit.label.length==0?this.getText({set:'Jx',key:'plugin.editor',value:'submitButton'}):this.getText(this.options.popup.button.submit.label),image:this.options.popup.button.submit.image,onClick:function(){self.deactivate(true);}}).addTo(this.popup.innerWrapper);button.cancel=new Jx.Button({label:this.options.popup.button.cancel.label.length==0?this.getText({set:'Jx',key:'plugin.editor',value:'cancelButton'}):this.getText(this.options.popup.button.cancel.label),image:this.options.popup.button.cancel.image,onClick:function(){self.deactivate(false);}}).addTo(this.popup.innerWrapper);}else if(this.options.popup.useButtons&&this.popup.button.submit!=null){button={submit:this.popup.button.submit,cancel:this.popup.button.cancel};}else if(this.options.popup.useButtons==false&&this.popup.button.submit!=null){this.popup.button.submit.cleanup();this.popup.button.cancel.cleanup();}
this.popup.button=button;},unsetActiveField:function(){this.activeCell.field.destroy();if(this.popup.domObj!=null){this.popup.domObj.removeEvent('mouseenter');this.popup.domObj.hide();}
this.activeCell.cell.setStyle('outline','0px');this.activeCell={field:null,oldValue:null,newValue:{data:null,error:false},cell:null,span:null,timeoutId:null,data:{},fieldOptions:{},validator:null};},unsetPopUp:function(){if(this.popup.domObj!=null){this.popup.domObj.destroy();this.popup.innerWrapper=null;this.popup.closeIcon=null;this.popup.button.submit=null;this.popup.button.cancel=null;}},getNextCellInRow:function(save){save=(save!==undefined&&save!==null)?save:true;var nextCell=true,nextRow=true,sumCols=this.grid.columns.columns.length,jxCellClass='td.jxGridCell:not(.jxGridCellUnattached)',i=0,data,cell=this.activeCell.cell,options=this.options;if(this.activeCell.cell!=null){do{nextCell=i>0?nextCell.getNext(jxCellClass):cell.getNext(jxCellClass);if(nextCell==null){nextRow=cell.getParent('tr').getNext();if(nextRow==null&&options.keypressLoop){nextRow=cell.getParent('tbody').getFirst();}else if(nextRow==null&&!options.keypressLoop){return;}
nextCell=nextRow.getFirst(jxCellClass);}
data=this.grid.getCellData(nextCell);i++;if(i==sumCols*2){this.deactivate(save);return;}}while(data&&!data.column.options.isEditable);if(save===false){this.deactivate(save);}
this.activate(nextCell);}},getPrevCellInRow:function(save){save=(save!==undefined&&save!==null)?save:true;var prevCell,prevRow,i=0,data,row,index,cell=this.activeCell.cell,sumCols=this.grid.columns.columns.length,jxCellClass='td.jxGridCell:not(.jxGridCellUnattached)',options=this.options;if(cell!=null){do{prevCell=i>0?prevCell.getPrevious(jxCellClass):cell.getPrevious(jxCellClass);if(prevCell==null){prevRow=cell.getParent('tr').getPrevious();if(prevRow==null&&options.keypressLoop){prevRow=cell.getParent('tbody').getLast();}else if(prevRow==null&&!options.keypressLoop){return;}
prevCell=prevRow.getLast(jxCellClass);}
data=this.grid.getCellData(prevCell);row=data.row;index=data.index;i++;if(i==sumCols*2){this.deactivate(save);return;}}while(data&&!data.column.options.isEditable);if(save===false){this.deactivate(save);}
this.activate(prevCell);}},getNextCellInCol:function(save){var nextRow,nextCell,activeCell=this.activeCell;save=(save!==undefined&&save!==null)?save:true;if(activeCell.cell!=null){nextRow=activeCell.cell.getParent().getNext();if(nextRow==null){nextRow=activeCell.cell.getParent('tbody').getFirst();}
nextCell=nextRow.getElement('td.jxGridCol'+activeCell.data.index);if(save===false){this.deactivate(save);}
this.activate(nextCell);}},getPrevCellInCol:function(save){var prevRow,prevCell,activeCell=this.activeCell;save=(save!==undefined&&save!==null)?save:true;if(activeCell.cell!=null){prevRow=activeCell.cell.getParent().getPrevious();if(prevRow==null){prevRow=activeCell.cell.getParent('tbody').getLast();}
prevCell=prevRow.getElement('td.jxGridCol'+activeCell.data.index);if(save===false){this.deactivate(save);}
this.activate(prevCell);}},cellValueIncrement:function(bool){var activeCell=this.activeCell,dataType=activeCell.data.column.options.dataType,valueNew=null,formatter;switch(dataType){case'numeric':case'currency':valueNew=activeCell.field.getValue().toInt();if(typeof(valueNew)=='number'){if(bool){valueNew++;}else{valueNew--;}}
break;case'date':valueNew=Date.parse(activeCell.field.getValue());if(valueNew instanceof Date){if(bool){valueNew.increment();}else{valueNew.decrement();}
formatter=new Jx.Formatter.Date();valueNew=formatter.format(valueNew);}
break;}
if(valueNew!=null){activeCell.field.setValue(valueNew);}},cellIsInGrid:function(row,index){if(row!==undefined&&row!==null&&index!==undefined&&index!==null){if(row>=0&&index>=0&&row<=this.grid.gridTableBody.rows.length&&index<=this.grid.gridTableBody.rows[row].cells.length){return true;}else{return false;}}else{return false;}},getFieldOptionsByColName:function(colName){var fo=this.options.fieldOptions,r=this.options.fieldOptions[0];for(var i=0,j=fo.length;i<j;i++){if(fo[i].field==colName){r=fo[i];break;}}
return r;},addFormatterUriClickListener:function(){if(this.options.linkClickListener){var uriCols=[],tableCols,anchor;this.grid.columns.columns.each(function(col,i){if(col.options.renderer.options.formatter!=null&&col.options.renderer.options.formatter instanceof Jx.Formatter.Uri){uriCols.push(i);}});this.grid.gridObj.getElements('tr').each(function(tr,i){tableCols=tr.getElements('td.jxGridCell');for(var j=0,k=uriCols.length;j<k;j++){anchor=tableCols[uriCols[j]-1].getElement('a');if(anchor){anchor.removeEvent('click');anchor.addEvent('click',function(ev){if(!ev.control){ev.preventDefault();}});}}});}},changeText:function(lang){this.parent();if(this.options.popup.use&&this.options.popup.useButtons){if(this.popup.button.submit!=null){this.popup.button.submit.cleanup();this.popup.button.cancel.cleanup();this.popup.button.submit=null;this.popup.button.cancel=null;this.setPopUpButtons();}}}});Jx.Plugin.Grid.Sorter=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Grid.Sorter',name:'Sorter',Binds:['sort','modifyHeaders'],current:null,direction:null,options:{sortableClass:'jxColSortable',ascendingClass:'jxGridColumnSortedAsc',descendingClass:'jxGridColumnSortedDesc'},attach:function(grid){if(grid===undefined||grid===null||!(grid instanceof Jx.Grid)){return;}
this.parent(grid);this.grid=grid;this.grid.addEvent('gridColumnClick',this.sort);this.grid.addEvent('doneCreateGrid',this.modifyHeaders);},detach:function(){if(this.grid){this.grid.removeEvent('gridColumnClick',this.sort);}
this.grid=null;},modifyHeaders:function(){var grid=this.grid,columnTable=grid.colObj,store=grid.store,c=this.options.sortableClass;if(grid.columnModel.useHeaders()){grid.columnModel.columns.each(function(col,index){if(!col.isHidden()&&col.isSortable()){var th=columnTable.getElement('.jxGridCol'+index);th.addClass(c);}});}},sort:function(el){var current=this.current,grid=this.grid,gridTableBody=grid.gridTableBody,gridParent=gridTableBody.getParent(),rowTableBody=grid.rowTableBody,rowParent=rowTableBody.getParent(),useHeaders=grid.rowModel.useHeaders(),store=grid.store,sorter=store.getStrategy('sort'),data=el.retrieve('jxCellData'),dir='asc',opt=this.options;if(data.column!==undefined&&data.column!==null&&data.column.isSortable()){if(el.hasClass(opt.ascendingClass)){el.removeClass(opt.ascendingClass).addClass(opt.descendingClass);dir='desc';}else if(el.hasClass(opt.descendingClass)){el.removeClass(opt.descendingClass).addClass(opt.ascendingClass);}else{el.addClass(opt.ascendingClass);}
if(current&&el!=current){current.removeClass(opt.ascendingClass).removeClass(opt.descendingClass);}
this.current=el;this.grid.fireEvent('gridSortStarting');if(data.column.options.sort!==undefined&&data.column.options.sort!==null&&Jx.type(data.column.options.sort)=='function'){data.column.options.sort(dir);}else{if(sorter){gridTableBody.dispose();if(useHeaders){rowTableBody.dispose();}
store.each(function(record,index){record.dom={cell:gridTableBody.childNodes[index],row:useHeaders?rowTableBody.childNodes[index]:null};});sorter.sort(data.column.name,null,dir);store.each(function(record,index){record.dom.cell.inject(gridTableBody);if(useHeaders){record.dom.row.inject(rowTableBody);}});if(gridParent){gridParent.adopt(gridTableBody);}
if(useHeaders&&rowParent){rowParent.adopt(rowTableBody);}}}
this.grid.fireEvent('gridSortFinished');}}});Jx.Plugin.Editor={};Jx.Plugin.Editor.ButtonSet=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Editor.ButtonSet',options:{buttons:null},buttonSet:null,buttons:[],prefix:'jxEditorButton',init:function(){this.parent();this.buttonSet=new Jx.ButtonSet();},attach:function(editor){this.parent(editor);this.editor=editor;Object.each(this.options.buttons,function(config,action){var button=new Jx.Button({toggle:true,image:config.image,imageClass:this.prefix+config.imageClass,tooltip:config.title});this.editor.toolbar.add(button);this.buttons.push(button);this.buttonSet.add(button);button.action=action;button.addEvents({down:this.command.bind(this,action),up:this.command.bind(this,action)});},this);},detach:function(){this.parent();},checkState:function(element){this.buttons.each(function(button){this.setState(false,button);if(button.action){try{if(this.editor.doc.queryCommandState(button.action)){this.setState(true,button);return;}}catch(e){}}
if(button.options.tags){var el=element;do{var tag=el.tagName.toLowerCase();if(button.options.tags.contains(tag)){this.setState(true,button);break;}}while((el=Element.getParent(el))!=null);}
if(button.options.css){var el=element;do{found=false;for(var prop in button.options.css){var css=button.options.css[prop];if(Element.getStyle(el,prop).contains(css)){this.setState(true,button);found=true;}}
if(found||el.tagName.test(this.editor.blockEls))break;}
while((el=element.getParent(el))!=null);}},this);},setState:function(state,button){this.settingState=true;button.setActive(state);this.settingState=false;},command:function(action){if(!this.settingState){this.editor.execute(action,false,false);}},setEnabled:function(state){this.buttons.each(function(button){button.setEnabled(state);},this);}});Jx.Plugin.Editor.Alignment=new Class({Extends:Jx.Plugin.Editor.ButtonSet,Family:'Jx.Plugin.Editor.Aligmment',name:'alignment',options:{buttons:{justifyleft:{image:Jx.aPixel.src,imageClass:'JustifyLeft',title:'Align Left',css:{'text-align':'left'}},justifyright:{image:Jx.aPixel.src,imageClass:'JustifyRight',title:'Align Right',css:{'text-align':'right'}},justifycenter:{image:Jx.aPixel.src,imageClass:'JustifyCenter',title:'Align Center',css:{'text-align':'center'},tags:['center']},justifyfull:{image:Jx.aPixel.src,imageClass:'JustifyFull',title:'Align Full',css:{'text-align':'justify'}}}}});Jx.Plugin.Editor.Button=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Editor.Button',options:{image:'',toggle:false,shortcut:null,title:'',imageClass:'',prefix:'jxEditorButton'},tags:null,css:null,action:null,attach:function(editor){this.editor=editor;this.selection=editor.selection;this.parent(editor);var tt=this.options.title;tt=(this.options.shortcut!==null&&this.options.shortcut!==undefined)?tt+" (ctrl-"+this.options.shortcut+")":tt;this.button=new Jx.Button({toggle:this.options.toggle,image:this.options.image,imageClass:this.options.prefix+this.options.imageClass,tooltip:tt});this.editor.toolbar.add(this.button);if(this.options.toggle){this.button.addEvents({down:this.command.bind(this),up:this.command.bind(this)});}else{this.button.addEvent('click',this.command.bind(this));}
this.editor.keys[this.options.shortcut]=this;},detach:function(){this.button.destroy();this.parent(editor);},setState:function(state){if(this.options.toggle){this.settingState=true;this.button.setActive(state);}
this.settingState=false;},getState:function(){if(this.options.toggle){return this.button.isActive();}
return false;},checkState:function(element){this.setState(false);if(this.action){try{if(this.editor.doc.queryCommandState(this.action)){this.setState(true);return;}}catch(e){}}
if(this.tags){var el=element;do{var tag=el.tagName.toLowerCase();if(this.tags.contains(tag)){this.setState(true);break;}}
while((el.tagName.toLowerCase()!='body')&&((el=Element.getParent(el))!=null));}
if(this.css){var el=element;do{found=false;for(var prop in this.css){var css=this.css[prop];if(Element.getStyle(el,prop).contains(css)){this.setState(true);found=true;}}
if(found||el.tagName.test(this.editor.blockEls))break;}
while((el.tagName.toLowerCase()!='body')&&((el=Element.getParent(el))!=null));}},command:function(){if(!this.settingState){this.editor.execute(this.action,false,false);}},setEnabled:function(state){this.button.setEnabled(state);}});Jx.Plugin.Editor.Toggle=new Class({Family:'Jx.Plugin.Editor.Toggle',Extends:Jx.Plugin.Editor.Button,name:'toggle',options:{image:Jx.aPixel.src,imageClass:'ToggleView',toggle:true,title:'Toggle View'},command:function(){if(this.editor.mode=='textarea'){this.editor.enableToolbar();}else{this.editor.disableToolbar();}
this.editor.toggleView();},setEnabled:function(){}});Jx.Plugin.Editor.Underline=new Class({Family:'Jx.Plugin.Editor.Underline',Extends:Jx.Plugin.Editor.Button,name:'underline',options:{image:Jx.aPixel.src,imageClass:'Underline',toggle:true,shortcut:'u',title:'Underline'},tags:['u'],css:{'text-decoration':'underline'},action:'underline'});Jx.Plugin.Editor.Orderedlist=new Class({Family:'Jx.Plugin.Editor.Orderedlist',Extends:Jx.Plugin.Editor.Button,name:'orderedlist',options:{image:Jx.aPixel.src,imageClass:'OrderedList',toggle:false,title:'Ordered List'},tags:['ol'],action:'insertorderedlist'});Jx.Plugin.Editor.CustomStyles=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Editor.CustomStyles',options:{styles:[]},rules:[],name:'customStyles',activeClass:'',attach:function(editor){this.editor=editor;this.parent(editor);Array.from(this.options.styles).each(function(style){this.rules.push(style);},this);var items=[];items.push({value:'',text:'',selected:true});this.rules.each(function(rule){items.push({value:rule,text:rule});},this);this.settingState=true;this.button=new Jx.Field.Select({comboOpts:items,label:'Choose a Style'});this.button.field.addEvent('change',this.command.bind(this));this.editor.toolbar.add(this.button);this.editor.toolbar.update();this.settingState=false;},detach:function(){this.button.destroy();this.parent(editor);},checkState:function(element){if(!this.settingState){for(i=0;i<this.rules.length;i++){if(element.hasClass(this.rules[i])){this.settingState=true;this.button.setValue(this.rules[i]);this.settingState=false;return;}}
this.button.setValue('');}},command:function(){if(!this.settingState){var klass=this.button.getValue();var node=this.editor.selection.getNode();if(klass!==''){node.removeClass(this.activeClass);if(node.hasClass(klass)){node.removeClass(klass);}else{node.addClass(klass);}
this.activeClass=klass;}else{this.rules.each(function(rule){if(node.hasClass(rule)){node.removeClass(rule);}},this);}}},setEnabled:function(state){if(state){this.button.enable();}else{this.button.disable();}}});Jx.Plugin.Editor.Unlink=new Class({Family:'Jx.Plugin.Editor.Unlink',Extends:Jx.Plugin.Editor.Button,name:'unlink',options:{image:Jx.aPixel.src,imageClass:'Unlink',toggle:false,title:'Remove Hyperlink'},action:'unlink'});Jx.Plugin.Editor.Redo=new Class({Family:'Jx.Plugin.Editor.Redo',Extends:Jx.Plugin.Editor.Button,name:'redo',options:{image:Jx.aPixel.src,imageClass:'Redo',toggle:false,shortcut:'y',title:'Redo'},action:'redo'});Jx.Plugin.Editor.Indent=new Class({Family:'Jx.Plugin.Editor.Indent',Extends:Jx.Plugin.Editor.Button,name:'indent',options:{image:Jx.aPixel.src,imageClass:'Indent',toggle:false,title:'Indent'},tags:['blockquote'],action:'indent'});Jx.Plugin.Editor.Image=new Class({Family:'Jx.Plugin.Editor.Image',Extends:Jx.Plugin.Editor.Button,name:'image',options:{image:Jx.aPixel.src,imageClass:'Image',toggle:false,shortcut:'m',title:'Insert Image'},tags:['img'],action:'insertimage',command:function(){new Jx.Dialog.Prompt({prompt:'Enter the address of the image:',onClose:this.finish.bind(this)}).open();},finish:function(dialog,result,url){if(result){this.editor.execute(this.action,false,url.trim());}}});Jx.Plugin.Editor.Strikethrough=new Class({Family:'Jx.Plugin.Editor.Strikethrough',Extends:Jx.Plugin.Editor.Button,name:'strikethrough',options:{image:Jx.aPixel.src,imageClass:'Strikethrough',toggle:true,title:'Strike Through',shortcut:'s'},tags:['s','strike'],css:{'text-decoration':'line-through'},action:'strikethrough'});Jx.Plugin.Editor.Bold=new Class({Extends:Jx.Plugin.Editor.Button,Family:'Jx.Plugin.Editor.Bold',name:'bold',options:{image:Jx.aPixel.src,imageClass:'Bold',toggle:true,shortcut:'b',title:'Bold'},tags:['b','strong'],css:{'font-weight':'bold'},action:'bold',init:function(){this.parent();this.bound={setup:this.setup.bind(this),parse:this.setup.bind(this)};},attach:function(editor){this.parent(editor);this.editor.addEvent('preToggleView',this.bound.parse);this.editor.addEvent('postPluginInit',this.bound.setup);},setup:function(){var result=this.parse();if(result){this.editor.setContent(result);}
this.editor.removeEvent('postPluginInit',this.bound.setup);},parse:function(){if(Browser.firefox){var s=this.editor.textarea.get('value');s.replace(/<strong([^>]*)>/gi,'<b$1>');s.replace(/<\/strong>/gi,'</b>');this.editor.textarea.set('html',s);return s;}
return null;}});Jx.Plugin.Editor.Outdent=new Class({Family:'Jx.Plugin.Editor.Outdent',Extends:Jx.Plugin.Editor.Button,name:'outdent',options:{image:Jx.aPixel.src,imageClass:'Outdent',toggle:false,title:'Outdent'},action:'outdent'});Jx.Plugin.Editor.Link=new Class({Family:'Jx.Plugin.Editor.Link',Extends:Jx.Plugin.Editor.Button,name:'createlink',options:{image:Jx.aPixel.src,imageClass:'Link',toggle:false,shortcut:'l',title:'Create Hyperlink'},tags:['a'],action:'createlink',command:function(){if(this.editor.selection.isCollapsed()){new Jx.Dialog.Message({message:'Please select the text you wish to hyperlink.'}).open();}else{var text=this.editor.selection.getText();new Jx.Dialog.Prompt({prompt:'Enter the web address you wish to link to. <br/> The text you selected to link to: "'+text+'"',startingValue:'http://',onClose:this.finish.bind(this)}).open();}},finish:function(dialog,result,url){if(result){this.editor.execute('createlink',false,url.trim());}}});Jx.Plugin.Editor.Italic=new Class({Family:'Jx.Plugin.Editor.Italic',Extends:Jx.Plugin.Editor.Button,name:'italic',options:{image:Jx.aPixel.src,imageClass:'Italic',toggle:true,shortcut:'i',title:'Italic'},tags:['i','em'],css:{'font-style':'italic'},action:'italic',init:function(){this.parent();this.bound={setup:this.setup.bind(this),parse:this.setup.bind(this)};},attach:function(editor){this.parent(editor);this.editor.addEvent('preToggleView',this.bound.parse);this.editor.addEvent('postPluginInit',this.bound.setup);},setup:function(){var result=this.parse();if(result){this.editor.setContent(result);}
this.editor.removeEvent('postPluginInit',this.bound.setup);},parse:function(){if(Browser.firefox){var s=this.editor.textarea.get('value').replace(/<embed([^>]*)>/gi,'<tmpembed$1>').replace(/<em([^>]*)>/gi,'<i$1>').replace(/<tmpembed([^>]*)>/gi,'<embed$1>').replace(/<\/em>/gi,'</i>');this.editor.textarea.set('value',s);return s;}
return null;}});Jx.Plugin.Editor.Block=new Class({Extends:Jx.Plugin,Family:'Jx.Plugin.Editor.Block',name:'block',tags:['p','div','h1','h2','h3','h4','h5','h6','pre','address'],action:'formatblock',attach:function(editor){this.editor=editor;this.parent(editor);items=[{value:'',text:''}];this.tags.each(function(tag){items.push({value:tag,text:tag});});this.button=new Jx.Field.Select({comboOpts:items,label:'Block Type'});this.button.field.addEvent('change',this.command.bind(this));this.editor.toolbar.add(this.button);},detach:function(){this.button.destroy();this.parent(editor);},checkState:function(element){this.setState(false);if(this.tags){var el=element;do{var tag=el.tagName.toLowerCase();if(this.tags.contains(tag)){this.setState(true,tag);break;}}
while((el.tagName.toLowerCase()!='body')&&((el=Element.getParent(el))!=null));}},command:function(){if(!this.settingState){var tag=this.button.getValue();if(tag!==''){var block='<'+this.button.getValue()+'>';this.editor.execute(this.action,false,block);}}},setEnabled:function(state){if(state){this.button.enable();}else{this.button.disable();}},setState:function(flag,tag){if(!flag){tag='';}
this.button.setValue(tag);}});Jx.Plugin.Editor.Unorderedlist=new Class({Family:'Jx.Plugin.Editor.Unoderedlist',Extends:Jx.Plugin.Editor.Button,name:'unorderedlist',options:{image:Jx.aPixel.src,imageClass:'UnorderedList',toggle:false,title:'Unordered List'},tags:['ul'],action:'insertunorderedlist'});Jx.Plugin.Editor.Undo=new Class({Family:'Jx.Plugin.Editor.Undo',Extends:Jx.Plugin.Editor.Button,name:'undo',options:{image:Jx.aPixel.src,imageClass:'Undo',toggle:false,shortcut:'z',title:'Undo'},action:'undo'});Jx.Plugin.Editor.Separator=new Class({Family:'Jx.Plugin.Editor.Separator',Extends:Jx.Plugin,name:'separator',attach:function(editor){this.button=new Jx.Toolbar.Separator();editor.toolbar.add(this.button);}});
