window.addEvent('load',function(){if(!("console"in window)||!("firebug"in window.console)){var names=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];window.console={};for(var i=0;i<names.length;++i){window.console[names[i]]=function(){};}}});Class.Mutators.Family=function(self,name){if($defined(name)){self.$family={'name':name};$[name]=$.object;return self;}
else{this.implement('$family',{'name':self});}};if(typeof Jx=='undefined'){var Jx={};(function(){var aScripts=document.getElementsByTagName('SCRIPT');Jx.aPixel=document.createElement('img',{alt:'',title:''});Jx.aPixel.src='/a_pixel.png';Jx.baseURL=Jx.aPixel.src.substring(0,Jx.aPixel.src.indexOf('a_pixel.png'));var src=aScripts[0].src;if(src.contains('app:')){Jx.isAir=true;}else{Jx.isAir=false;}})();}
Jx.applyPNGFilter=function(o){var t=Jx.aPixel.src;if(o.src!=t){var 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.createIframeShim=function(){return new Element('iframe',{'class':'jxIframeShim','scrolling':'no','frameborder':0});};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()};}
Element.implement({getBoxSizing:function(){var result='content-box';if(Browser.Engine.trident||Browser.Engine.presto){var cm=document["compatMode"];if(cm=="BackCompat"||cm=="QuirksMode"){result='border-box';}else{result='content-box';}}else{if(arguments.length===0){node=document.documentElement;}
var sizing=this.getStyle("-moz-box-sizing");if(!sizing){sizing=this.getStyle("box-sizing");}
result=(sizing?sizing:'content-box');}
return result;},getContentBoxSize:function(){var w=this.offsetWidth;var h=this.offsetHeight;var padding=this.getPaddingSize();var border=this.getBorderSize();w=w-padding.left-padding.right-border.left-border.right;h=h-padding.bottom-padding.top-border.bottom-border.top;return{width:w,height:h};},getBorderBoxSize:function(){var w=this.offsetWidth;var h=this.offsetHeight;return{width:w,height:h};},getMarginBoxSize:function(){var margins=this.getMarginSize();var w=this.offsetWidth+margins.left+margins.right;var h=this.offsetHeight+margins.top+margins.bottom;return{width:w,height:h};},setContentBoxSize:function(size){if(this.getBoxSizing()=='border-box'){var padding=this.getPaddingSize();var border=this.getBorderSize();if(typeof size.width!='undefined'){var width=(size.width+padding.left+padding.right+border.left+border.right);if(width<0){width=0;}
this.style.width=width+'px';}
if(typeof size.height!='undefined'){var height=(size.height+padding.top+padding.bottom+border.top+border.bottom);if(height<0){height=0;}
this.style.height=height+'px';}}else{if(typeof size.width!='undefined'){this.style.width=size.width+'px';}
if(typeof size.height!='undefined'){this.style.height=size.height+'px';}}},setBorderBoxSize:function(size){if(this.getBoxSizing()=='content-box'){var padding=this.getPaddingSize();var border=this.getBorderSize();var margin=this.getMarginSize();if(typeof size.width!='undefined'){var width=(size.width-padding.left-padding.right-border.left-border.right-margin.left-margin.right);if(width<0){width=0;}
this.style.width=width+'px';}
if(typeof size.height!='undefined'){var height=(size.height-padding.top-padding.bottom-border.top-border.bottom-margin.top-margin.bottom);if(height<0){height=0;}
this.style.height=height+'px';}}else{if(typeof size.width!='undefined'&&size.width>=0){this.style.width=size.width+'px';}
if(typeof size.height!='undefined'&&size.height>=0){this.style.height=size.height+'px';}}},getPaddingSize:function(){var l=Jx.getNumber(this.getStyle('padding-left'));var t=Jx.getNumber(this.getStyle('padding-top'));var r=Jx.getNumber(this.getStyle('padding-right'));var b=Jx.getNumber(this.getStyle('padding-bottom'));return{left:l,top:t,right:r,bottom:b};},getBorderSize:function(){var l=Jx.getNumber(this.getStyle('border-left-width'));var t=Jx.getNumber(this.getStyle('border-top-width'));var r=Jx.getNumber(this.getStyle('border-right-width'));var b=Jx.getNumber(this.getStyle('border-bottom-width'));return{left:l,top:t,right:r,bottom:b};},getMarginSize:function(){var l=Jx.getNumber(this.getStyle('margin-left'));var t=Jx.getNumber(this.getStyle('margin-top'));var r=Jx.getNumber(this.getStyle('margin-right'));var b=Jx.getNumber(this.getStyle('margin-bottom'));return{left:l,top:t,right:r,bottom:b};},descendantOf:function(node){var parent=$(this.parentNode);while(parent!=node&&parent&&parent.parentNode&&parent.parentNode!=parent){parent=$(parent.parentNode);}
return parent==node;},findElement:function(type){var o=this;var tagName=o.tagName;while(o.tagName!=type&&o&&o.parentNode&&o.parentNode!=o){o=$(o.parentNode);}
return o.tagName==type?o:false;}});Jx.ContentLoader=new Class({contentIsLoaded:false,loadContent:function(element){element=$(element);if(this.options.content){var c;if(this.options.content.domObj){c=$(this.options.content.domObj);}else{c=$(this.options.content);}
if(c){if(this.options.content.addTo){this.options.content.addTo(element);}else{element.appendChild(c);}
this.contentIsLoaded=true;}else{element.innerHTML=this.options.content;this.contentIsLoaded=true;}}else if(this.options.contentURL){this.contentIsLoaded=false;this.req=new Request({url:this.options.contentURL,method:'get',evalScripts:true,onSuccess:(function(html){element.innerHTML=html;this.contentIsLoaded=true;if(Jx.isAir){$clear(this.reqTimeout);}
this.fireEvent('contentLoaded',this);}).bind(this),onFailure:(function(){this.contentIsLoaded=true;this.fireEvent('contentLoadFailed',this);}).bind(this),headers:{'If-Modified-Since':'Sat, 1 Jan 2000 00:00:00 GMT'}});this.req.send();if(Jx.isAir){var timeout=$defined(this.options.timeout)?this.options.timeout:10000;this.reqTimeout=this.checkRequest.delay(timeout,this);}}else{this.contentIsLoaded=true;}
if(this.options.contentId){element.id=this.options.contentId;}
if(this.contentIsLoaded){this.fireEvent('contentLoaded',this);}},processContent:function(element){$A(element.childNodes).each(function(node){if(node.tagName=='INPUT'||node.tagName=='SELECT'||node.tagName=='TEXTAREA'){if(node.type=='button'){node.addEvent('click',function(){this.fireEvent('click',this,node);});}else{node.addEvent('change',function(){this.fireEvent('change',node);});}}else{if(node.childNodes){this.processContent(node);}}},this);}});if(Jx.isAir){Jx.ContentLoader.implement({checkRequest:function(){if(this.req.xhr.readyState===1){$clear(this.reqTimeout);this.req.cancel();this.contentIsLoaded=true;this.fireEvent('contentLoadFailed',this);}}});}
Jx.AutoPosition=new Class({position:function(element,relative,options){element=$(element);relative=$(relative);var hor=$splat(options.horizontal||['center center']);var ver=$splat(options.vertical||['center center']);var offsets=$merge({top:0,right:0,bottom:0,left:0},options.offsets||{});var coords=relative.getCoordinates();var page;var scroll;if(!$(element.parentNode)||element.parentNode==document.body){page=Jx.getPageDimensions();scroll=$(document.body).getScroll();}else{page=$(element.parentNode).getContentBoxSize();scroll=$(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;}
var size=element.getMarginBoxSize();var left;var right;var top;var bottom;var n;if(!hor.some(function(opt){var 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){var 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;}}});Jx.Chrome=new Class({chrome:null,makeChrome:function(element){var c=new Element('div',{'class':'jxChrome',events:{contextmenu:function(e){e.stop();}}});element.adopt(c);this.chromeOffsets=c.getPaddingSize();c.setStyle('padding',0);var src=c.getStyle('backgroundImage');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.opera){c.adopt(Jx.createIframeShim());}
c.dispose();this.chrome=c;},showChrome:function(element){element=$(element);if(!this.chrome){this.makeChrome(element);}
this.resizeChrome(element);if(element&&this.chrome.parentNode!==element){element.adopt(this.chrome);}},hideChrome:function(){if(this.chrome){this.chrome.dispose();}},resizeChrome:function(o){if(this.chrome&&Browser.Engine.trident4){this.chrome.setContentBoxSize($(o).getBorderBoxSize());}}});Jx.Addable=new Class({addable:null,addTo:function(reference,where){$(this.addable||this.domObj).inject(reference,where);this.fireEvent('addTo',this);return this;},toElement:function(){return this.addable||this.domObj;}});Jx.Button=new Class({Family:'Jx.Button',Implements:[Options,Events,Jx.Addable],domObj:null,options:{id:'',type:'Button',image:'',tooltip:'',label:'',toggle:false,toggleClass:'Toggle',halign:'center',valign:'middle',active:false,enabled:true,container:'div'},initialize:function(options){this.setOptions(options);var d=new Element(this.options.container,{'class':'jx'+this.options.type+'Container'});if(this.options.toggle&&this.options.toggleClass){d.addClass('jx'+this.options.type+this.options.toggleClass);}
var hasFocus;var mouseDown;var a=new Element('a',{'class':'jx'+this.options.type,href:'javascript:void(0)',title:this.options.tooltip,alt:this.options.tooltip,events:{click:this.clicked.bindWithEvent(this),drag:(function(e){e.stop();}).bindWithEvent(this),mousedown:(function(e){this.domA.addClass('jx'+this.options.type+'Pressed');hasFocus=true;mouseDown=true;this.focus();}).bindWithEvent(this),mouseup:(function(e){this.domA.removeClass('jx'+this.options.type+'Pressed');mouseDown=false;}).bindWithEvent(this),mouseleave:(function(e){this.domA.removeClass('jx'+this.options.type+'Pressed');}).bindWithEvent(this),mouseenter:(function(e){if(hasFocus&&mouseDown){this.domA.addClass('jx'+this.options.type+'Pressed');}}).bindWithEvent(this),keydown:(function(e){if(e.key=='enter'){this.domA.addClass('jx'+this.options.type+'Pressed');}}).bindWithEvent(this),keyup:(function(e){if(e.key=='enter'){this.domA.removeClass('jx'+this.options.type+'Pressed');}}).bindWithEvent(this),blur:function(){hasFocus=false;}}});d.adopt(a);if(typeof Drag!='undefined'){new Drag(a,{onStart:function(){this.stop();}});}
var s=new Element('span',{'class':'jx'+this.options.type+'Content'});a.adopt(s);if(this.options.image||!this.options.label){var i=new Element('img',{'class':'jx'+this.options.type+'Icon','src':Jx.aPixel.src,title:this.options.tooltip,alt:this.options.tooltip});if(this.options.image&&this.options.image.indexOf('a_pixel.png')==-1){i.setStyle('backgroundImage',"url("+this.options.image+")");}
s.appendChild(i);if(this.options.imageClass){i.addClass(this.options.imageClass);}
this.domImg=i;}
var l=new Element('span',{html:this.options.label});if(this.options.label){l.addClass('jx'+this.options.type+'Label');}
s.appendChild(l);if(this.options.id){d.id=this.options.id;}
if(this.options.halign=='left'){d.addClass('jx'+this.options.type+'ContentLeft');}
if(this.options.valign=='top'){d.addClass('jx'+this.options.type+'ContentTop');}
this.domA=a;this.domLabel=l;this.domObj=d;this.setEnabled(this.options.enabled);if(this.options.active){this.options.active=false;this.setActive(true);}},clicked:function(evt){if(this.options.enabled){if(this.options.toggle){this.setActive(!this.options.active);}else{this.fireEvent('click',{obj:this,event:evt});}}},isEnabled:function(){return this.options.enabled;},setEnabled:function(enabled){this.options.enabled=enabled;if(this.options.enabled){this.domObj.removeClass('jxDisabled');}else{this.domObj.addClass('jxDisabled');}},isActive:function(){return this.options.active;},setActive:function(active){if(this.options.active==active){return;}
this.options.active=active;if(this.options.active){this.domA.addClass('jx'+this.options.type+'Active');this.fireEvent('down',this);}else{this.domA.removeClass('jx'+this.options.type+'Active');this.fireEvent('up',this);}},setImage:function(path){this.options.image=path;if(path){if(!this.domImg){var i=new Element('img',{'class':'jx'+this.options.type+'Icon','src':Jx.aPixel.src,alt:'',title:''});if(this.options.imageClass){i.addClass(this.options.imageClass);}
this.domA.firstChild.grab(i,'top');this.domImg=i;}
this.domImg.setStyle('backgroundImage',"url("+this.options.image+")");}else if(this.domImg){this.domImg.dispose();this.domImg=null;}},setLabel:function(label){this.domLabel.set('html',label);if(!label&&this.domLabel.hasClass('jxButtonLabel')){this.domLabel.removeClass('jxButtonLabel');}else if(label&&!this.domLabel.hasClass('jxButtonLabel')){this.domLabel.addClass('jxButtonLabel');}},getLabel:function(){return this.domLabel?this.domLabel.innerHTML:'';},setTooltip:function(tooltip){if(this.domA){this.domA.set({'title':tooltip,'alt':tooltip});}},focus:function(){this.domA.focus();},blur:function(){this.domA.blur();}});Jx.Button.Flyout=new Class({Family:'Jx.Button.Flyout',Extends:Jx.Button,Implements:[Jx.ContentLoader,Jx.AutoPosition,Jx.Chrome],content:null,initialize:function(options){if(!Jx.Button.Flyout.Stack){Jx.Button.Flyout.Stack=[];}
this.parent(options);this.domA.addClass('jx'+this.options.type+'Flyout');this.contentContainer=new Element('div',{'class':'jxFlyout'});this.content=new Element('div',{'class':'jxFlyoutContent'});if(this.options.contentClass){this.content.addClass(this.options.contentClass);}
this.contentContainer.adopt(this.content);this.content.store('jxFlyout',this);this.loadContent(this.content);this.keypressWatcher=this.keypressHandler.bindWithEvent(this);this.hideWatcher=this.clickHandler.bindWithEvent(this);},clicked:function(e){if(!this.options.enabled){return;}
if(!this.owner){this.owner=document.body;var node=$(this.domObj.parentNode);while(node!=document.body&&this.owner==document.body){var flyout=node.retrieve('jxFlyout');if(flyout){this.owner=flyout;break;}else{node=$(node.parentNode);}}}
if(Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length-1]==this){this.hide();return;}else if(this.owner!=document.body){if(this.owner.currentFlyout==this){this.hide();return;}else if(this.owner.currentFlyout){this.owner.currentFlyout.hide();}
this.owner.currentFlyout=this;}else{while(Jx.Button.Flyout.Stack.length){Jx.Button.Flyout.Stack[Jx.Button.Flyout.Stack.length-1].hide();}}
Jx.Button.Flyout.Stack.push(this);this.options.active=true;this.domA.addClass('jx'+this.options.type+'Active');this.contentContainer.setStyle('visibility','hidden');$(document.body).adopt(this.contentContainer);this.content.getChildren().each(function(child){if(child.resize){child.resize();}});this.showChrome(this.contentContainer);this.position(this.contentContainer,this.domObj,{horizontal:['left left','right right'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setContentBoxSize($(this.content).getMarginBoxSize());this.contentContainer.setStyle('visibility','');document.addEvent('keydown',this.keypressWatcher);document.addEvent('click',this.hideWatcher);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();document.removeEvent('keydown',this.keypressWatcher);document.removeEvent('click',this.hideWatcher);this.fireEvent('close',this);},clickHandler:function(e){e=new Event(e);var elm=$(e.target);var 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.Layout=new Class({Family:'Jx.Layout',Implements:[Options,Events],options:{propagate:true,position:'absolute',left:0,right:0,top:0,bottom:0,width:null,height:null,minWidth:0,minHeight:0,maxWidth:-1,maxHeight:-1},initialize:function(domObj,options){this.setOptions(options);this.domObj=$(domObj);this.domObj.resize=this.resize.bind(this);this.domObj.setStyle('position',this.options.position);this.domObj.store('jxLayout',this);if(document.body==this.domObj.parentNode){window.addEvent('resize',this.windowResize.bindWithEvent(this));window.addEvent('load',this.windowResize.bind(this));}},windowResize:function(){this.resize();if(this.resizeTimer){$clear(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(!$(this.domObj.parentNode)){return;}
var parentSize;if(this.domObj.parentNode.tagName=='BODY'){parentSize=Jx.getPageDimensions();}else{parentSize=$(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)/2;w=this.options.maxWidth;}}else{w=this.options.width;l=parseInt((parentSize.width-w)/2);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);h=this.options.maxHeight;}}else{h=this.options.height;t=parseInt((parentSize.height-h)/2);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 padding=$(this.domObj.parentNode).getPaddingSize();this.domObj.setStyles({position:this.options.position,left:l+padding.left,top:t+padding.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};$A(this.domObj.childNodes).each(function(child){if(child.resize&&child.getStyle('display')!='none'){child.resize.delay(0,child,o);}});}
this.fireEvent('sizeChange',this);}});Jx.Button.Tab=new Class({Family:'Jx.Button.Tab',Extends:Jx.Button,Implements:[Jx.ContentLoader],content:null,initialize:function(options){this.parent($merge(options,{type:'Tab',toggle:true}));this.content=new Element('div',{'class':'tabContent'});new Jx.Layout(this.content,options);this.loadContent(this.content);var that=this;this.addEvent('down',function(){that.content.addClass('tabContentActive');});this.addEvent('up',function(){that.content.removeClass('tabContentActive');});if(this.options.close){this.domObj.addClass('jxTabClose');var a=new Element('a',{'class':'jxTabClose',events:{'click':(function(){this.fireEvent('close');}).bind(this)}});a.adopt(new Element('img',{src:Jx.aPixel.src,alt:'',title:''}));this.domObj.adopt(a);}},clicked:function(evt){if(this.options.enabled){this.setActive(true);}}});Jx.ColorPalette=new Class({Family:'Jx.ColorPalette',Implements:[Options,Events,Jx.Addable],domObj:null,options:{parent:null,color:'#000000',alpha:1,hexColors:['00','33','66','99','CC','FF'],alphaLabel:'alpha (%)'},initialize:function(options){this.setOptions(options);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.options.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.bindWithEvent(this);var swatchOver=this.swatchOver.bindWithEvent(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)*3+parseInt(j/6);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);if(this.options.alpha<1){styles.opacity=this.options.alpha;styles.filter='Alpha(opacity='+(this.options.alpha*100)+')';}else{styles.opacity='';styles.filter='';}
this.selectedSwatch.setStyles(styles);this.previewSwatch.setStyles(styles);this.fireEvent('change',this);}});Jx.Button.Color=new Class({Family:'Jx.Button.Color',Extends:Jx.Button.Flyout,swatch:null,options:{color:'#000000',alpha:100},initialize:function(options){if(!Jx.Button.Color.ColorPalette){Jx.Button.Color.ColorPalette=new Jx.ColorPalette(this.options);}
var d=new Element('span',{'class':'jxButtonSwatch'});this.selectedSwatch=new Element('span');d.appendChild(this.selectedSwatch);this.colorChangeFn=this.changed.bind(this);this.hideFn=this.hide.bind(this);options.image=Jx.aPixel.src;this.parent(options);d.replaces(this.domImg);this.updateSwatch();},clicked:function(){if(Jx.Button.Color.ColorPalette.currentButton){Jx.Button.Color.ColorPalette.currentButton.hide();}
Jx.Button.Color.ColorPalette.currentButton=this;Jx.Button.Color.ColorPalette.addEvent('change',this.colorChangeFn);Jx.Button.Color.ColorPalette.addEvent('click',this.hideFn);this.content.appendChild(Jx.Button.Color.ColorPalette.domObj);Jx.Button.Color.ColorPalette.domObj.setStyle('display','block');Jx.Button.Flyout.prototype.clicked.apply(this,arguments);Jx.Button.Color.ColorPalette.options.color=this.options.color;Jx.Button.Color.ColorPalette.options.alpha=this.options.alpha/100;Jx.Button.Color.ColorPalette.updateSelected();},hide:function(){this.setActive(false);Jx.Button.Color.ColorPalette.removeEvent('change',this.colorChangeFn);Jx.Button.Color.ColorPalette.removeEvent('click',this.hideFn);Jx.Button.Flyout.prototype.hide.apply(this,arguments);Jx.Button.Color.ColorPalette.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='';styles.filter='';}
this.selectedSwatch.setStyles(styles);}});Jx.Menu=new Class({Family:'Jx.Menu',Implements:[Options,Events,Jx.AutoPosition,Jx.Chrome,Jx.Addable],domObj:null,button:null,subDomObj:null,items:null,initialize:function(options){this.setOptions(options);if(!Jx.Menu.Menus){Jx.Menu.Menus=[];}
this.items=[];this.contentContainer=new Element('div',{'class':'jxMenuContainer',events:{contextmenu:function(e){e.stop();}}});this.subDomObj=new Element('ul',{'class':'jxMenu'});this.contentContainer.adopt(this.subDomObj);if(options){this.button=new Jx.Button($merge(options,{onClick:this.show.bind(this)}));this.button.domA.addClass('jxButtonMenu');this.button.domA.addEvent('mouseover',this.onMouseOver.bindWithEvent(this));this.domObj=this.button.domObj;}
this.hideWatcher=this.hide.bindWithEvent(this);this.keypressWatcher=this.keypressHandler.bindWithEvent(this);if(this.options.parent){this.addTo(this.options.parent);}},add:function(){$A(arguments).flatten().each(function(item){this.items.push(item);item.setOwner(this);this.subDomObj.adopt(item.domObj);},this);return this;},deactivate:function(){this.hide();},onMouseOver:function(e){if(Jx.Menu.Menus[0]&&Jx.Menu.Menus[0]!=this){this.show({event:e});}},eventInMenu:function(e){var target=$(e.target);if(!target){return false;}
if(target.descendantOf(this.domObj)||target.descendantOf(this.subDomObj)){return true;}else{var ul=target.findElement('ul');if(ul){var sm=ul.retrieve('jxSubMenu');if(sm){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('jx'+this.button.options.type+'Active');}
this.items.each(function(item){item.hide(e);});document.removeEvent('mousedown',this.hideWatcher);document.removeEvent('keydown',this.keypressWatcher);this.contentContainer.setStyle('display','none');this.fireEvent('hide',this);},show:function(o){var e=o.event;if(Jx.Menu.Menus[0]){if(Jx.Menu.Menus[0]!=this){Jx.Menu.Menus[0].button.blur();Jx.Menu.Menus[0].hide(e);}else{this.hide();return;}}
if(this.items.length===0){return;}
Jx.Menu.Menus[0]=this;this.button.focus();this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');$(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,this.button.domObj,{horizontal:['left left'],vertical:['bottom top','top bottom'],offsets:this.chromeOffsets});this.contentContainer.setStyle('visibility','');if(this.button&&this.button.domA){this.button.domA.addClass('jx'+this.button.options.type+'Active');}
if(e){}
document.addEvent('mousedown',this.hideWatcher);document.addEvent('keydown',this.keypressWatcher);this.fireEvent('show',this);},setVisibleItem:function(obj){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();}}});Jx.ButtonSet=new Class({Family:'Jx.ButtonSet',Implements:[Options,Events],buttons:null,initialize:function(options){this.setOptions(options);this.buttons=[];this.buttonChangedHandler=this.buttonChanged.bind(this);},add:function(){$A(arguments).each(function(button){if(button.domObj.hasClass('jx'+button.options.type+'Toggle')){button.domObj.removeClass('jx'+button.options.type+'Toggle');button.domObj.addClass('jx'+button.options.type+'Set');}
button.addEvent('down',this.buttonChangedHandler);var that=this;button.setActive=function(active){if(this.options.active&&that.activeButton==this){return;}else{Jx.Button.prototype.setActive.apply(this,[active]);}};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.buttonChangedHandler);button.setActive=Jx.Button.prototype.setActive;}},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({Family:'Jx.Button.Multi',Extends:Jx.Button,activeButton:null,buttons:null,initialize:function(opts){this.parent(opts);this.buttons=[];this.domA.addClass('jxButtonMulti');this.menu=new Jx.Menu();this.menu.button=this;this.buttonSet=new Jx.ButtonSet();this.clickHandler=this.clicked.bind(this);var a=new Element('a',{'class':'jxButtonDisclose','href':'javascript:void(0)'});var button=this;var hasFocus;a.addEvents({'click':(function(e){if(this.items.length===0){return;}
if(!button.options.enabled){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');$(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.hideWatcher);document.addEvent('keyup',this.keypressWatcher);this.fireEvent('show',this);}).bindWithEvent(this.menu),'mouseenter':(function(){$(this.domObj.firstChild).addClass('jxButtonHover');if(hasFocus){a.addClass('jx'+this.options.type+'Pressed');}}).bind(this),'mouseleave':(function(){$(this.domObj.firstChild).removeClass('jxButtonHover');a.removeClass('jx'+this.options.type+'Pressed');}).bind(this),mousedown:(function(e){a.addClass('jx'+this.options.type+'Pressed');hasFocus=true;this.focus();}).bindWithEvent(this),mouseup:(function(e){a.removeClass('jx'+this.options.type+'Pressed');}).bindWithEvent(this),keydown:(function(e){if(e.key=='enter'){a.addClass('jx'+this.options.type+'Pressed');}}).bindWithEvent(this),keyup:(function(e){if(e.key=='enter'){a.removeClass('jx'+this.options.type+'Pressed');}}).bindWithEvent(this),blur:function(){hasFocus=false;}});if(typeof Drag!='undefined'){new Drag(a,{onStart:function(){this.stop();}});}
this.menu.addEvents({'show':(function(){this.domA.addClass('jxButtonActive');}).bind(this),'hide':(function(){if(this.options.active){this.domA.addClass('jxButtonActive');}}).bind(this)});a.adopt(new Element('img',{src:Jx.aPixel.src,alt:'',title:''}));this.domObj.adopt(a);this.discloser=a;if(this.options.items){this.add(this.options.items);}},add:function(){$A(arguments).flatten().each(function(theButton){if(!theButton instanceof Jx.Button){return;}
this.buttons.push(theButton);var f=this.setButton.bind(this,theButton);var opts=$merge(theButton.options,{toggle:true,onClick:f});if(!opts.label){opts.label='&nbsp;';}
if(!opts.image||opts.image.indexOf('a_pixel')!=-1){delete opts.image;}
var 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);}},setActiveButton:function(button){if(this.activeButton){this.activeButton.domA.dispose();this.activeButton.domA.removeEvent(this.clickHandler);}
if(button&&button.domA){this.domObj.grab(button.domA,'top');this.domA=button.domA;this.domA.addEvent('click',this.clickHandler);if(this.options.toggle){this.options.active=false;this.setActive(true);}}
this.activeButton=button;},setButton:function(button){this.setActiveButton(button);button.clicked();}});Jx.Menu.Item=new Class({Family:'Jx.Menu.Item',Extends:Jx.Button,owner:null,options:{enabled:true,image:null,label:'&nbsp;',toggleClass:'Toggle'},initialize:function(options){this.parent($merge({image:Jx.aPixel.src},options,{container:'li',type:'MenuItem',toggleClass:(options.image?null:this.options.toggleClass)}));this.domObj.addEvent('mouseover',this.onMouseOver.bindWithEvent(this));},setOwner:function(obj){this.owner=obj;},hide:function(){this.blur();},show:$empty,clicked:function(obj){if(this.options.enabled){if(this.options.toggle){this.setActive(!this.options.active);}
this.fireEvent('click',this);if(this.owner&&this.owner.deactivate){this.owner.deactivate(obj.event);}}},onMouseOver:function(e){if(this.owner&&this.owner.setVisibleItem){this.owner.setVisibleItem(this);}
this.show(e);}});Jx.Button.Combo=new Class({Family:'Jx.Button.Combo',Extends:Jx.Button.Multi,domObj:null,ul:null,currentSelection:null,options:{editable:false,label:''},initialize:function(options){this.parent();this.setOptions(options);this.domA.removeClass('jxButtonMulti');if(this.options.editable){var s=new Element('span',{'class':'jxButton'});s.adopt(this.domA.firstChild);this.domA=s.replaces(this.domA);this.domA.addClass('jxButtonComboDefault');this.domA.addClass('jxButtonEditCombo');this.domInput=new Element('input',{type:'text',events:{change:this.valueChanged.bindWithEvent(this),keydown:this.onKeyPress.bindWithEvent(this),focus:(function(){if(this.domA.hasClass('jxButtonComboDefault')){this.domInput.value='';this.domA.removeClass('jxButtonComboDefault');}}).bind(this)},value:this.options.label});this.domLabel.empty();this.domLabel.addClass('jxComboInput');this.domLabel.adopt(this.domInput);}else{this.discloser.dispose();this.domA.addClass('jxButtonCombo');this.addEvent('click',(function(e){this.discloser.fireEvent('click',e);}).bindWithEvent(this));}
this.buttonSet=new Jx.ButtonSet({onChange:(function(set){var button=set.activeButton;this.domA.removeClass('jxButtonComboDefault');if(this.options.editable){this.domInput.value=button.options.label;}else{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);if(this.options.imageClass&&this.domImg){this.domImg.removeClass(this.options.imageClass);}
if(button.options.imageClass&&this.domImg){this.options.imageClass=button.options.imageClass;this.domImg.addClass(button.options.imageClass);}
this.fireEvent('change',this);}).bind(this)});if(this.options.items){this.add(this.options.items);}
this.setEnabled(this.options.enabled);},setEnabled:function(enabled){this.options.enabled=enabled;if(this.options.enabled){this.domObj.removeClass('jxDisabled');if(this.domInput){this.domInput.disabled=false;}}else{this.domObj.addClass('jxDisabled');if(this.domInput){this.domInput.disabled=true;}}},valueChanged:function(){this.fireEvent('change',this);},onKeyPress:function(e){if(e.key=='enter'){this.valueChanged();}},add:function(){$A(arguments).flatten().each(function(opt){var button=new Jx.Menu.Item($merge(opt,{toggle:true}));this.menu.add(button);this.buttonSet.add(button);},this);},remove:function(idx){},setValue:function(value){if(this.options.editable){this.domInput.value=value;}else{this.setLabel(value);}},getValue:function(){value='';if(this.options.editable){value=this.domInput.value;}else{value=this.getLabel();}
return value;}});Jx.Panel=new Class({Family:'Jx.Panel',Implements:[Options,Events,Jx.ContentLoader,Jx.Addable],toolbarContainers:{top:null,right:null,bottom:null,left:null},options:{position:'absolute',type:'Panel',id:'',label:'&nbsp;',height:null,collapse:true,collapseTooltip:'Collapse/Expand Panel',collapseLabel:'Collapse',expandLabel:'Expand',maximizeTooltip:'Maximize Panel',maximizeLabel:'Maximize',close:false,closeTooltip:'Close Panel',closeLabel:'Close',closed:false,hideTitle:false,toolbars:[]},initialize:function(options){this.setOptions(options);this.toolbars=options?options.toolbars||[]:[];if($defined(this.options.height)&&!$defined(options.position)){this.options.position='relative';}
this.title=new Element('div',{'class':'jx'+this.options.type+'Title'});var i=new Element('img',{'class':'jx'+this.options.type+'Icon',src:Jx.aPixel.src,alt:'',title:''});if(this.options.image){i.setStyle('backgroundImage','url('+this.options.image+')');}
this.title.adopt(i);this.labelObj=new Element('span',{'class':'jx'+this.options.type+'Label',html:this.options.label});this.title.adopt(this.labelObj);var controls=new Element('div',{'class':'jx'+this.options.type+'Controls'});var tbDiv=new Element('div');controls.adopt(tbDiv);this.toolbar=new Jx.Toolbar({parent:tbDiv});this.title.adopt(controls);var that=this;if(this.options.menu){this.menu=new Jx.Menu({image:Jx.aPixel.src});this.menu.domObj.addClass('jx'+this.options.type+'Menu');this.menu.domObj.addClass('jxButtonContentLeft');this.toolbar.add(this.menu);}
if(this.options.collapse){var b=new Jx.Button({image:Jx.aPixel.src,tooltip:this.options.collapseTooltip,onClick:function(){that.toggleCollapse();}});b.domObj.addClass('jx'+this.options.type+'Collapse');this.toolbar.add(b);if(this.menu){var item=new Jx.Menu.Item({label:this.options.collapseLabel,onClick:function(){that.toggleCollapse();}});this.addEvents({collapse:function(){item.setLabel(this.options.expandLabel);},expand:function(){item.setLabel(this.options.collapseLabel);}});this.menu.add(item);}}
if(this.options.maximize){var b=new Jx.Button({image:Jx.aPixel.src,tooltip:this.options.maximizeTooltip,onClick:function(){that.maximize();}});b.domObj.addClass('jx'+this.options.type+'Maximize');this.toolbar.add(b);if(this.menu){var item=new Jx.Menu.Item({label:this.options.maximizeLabel,onClick:function(){that.maximize();}});this.menu.add(item);}}
if(this.options.close){var b=new Jx.Button({image:Jx.aPixel.src,tooltip:this.options.closeTooltip,onClick:function(){that.close();}});b.domObj.addClass('jx'+this.options.type+'Close');this.toolbar.add(b);if(this.menu){var item=new Jx.Menu.Item({label:this.options.closeLabel,onClick:function(){that.close();}});this.menu.add(item);}}
this.title.addEvent('dblclick',function(){that.toggleCollapse();});this.domObj=new Element('div',{'class':'jx'+this.options.type});if(this.options.id){this.domObj.id=this.options.id;}
var jxl=new Jx.Layout(this.domObj,$merge(this.options,{propagate:false}));var layoutHandler=this.layoutContent.bind(this);jxl.addEvent('sizeChange',layoutHandler);if(!this.options.hideTitle){this.domObj.adopt(this.title);}
this.contentContainer=new Element('div',{'class':'jx'+this.options.type+'ContentContainer'});this.domObj.adopt(this.contentContainer);if($type(this.options.toolbars)=='array'){this.options.toolbars.each(function(tb){var position=tb.options.position;var tbc=this.toolbarContainers[position];if(!tbc){var tbc=new Element('div');new Jx.Layout(tbc);this.contentContainer.adopt(tbc);this.toolbarContainers[position]=tbc;}
tb.addTo(tbc);},this);}
this.content=new Element('div',{'class':'jx'+this.options.type+'Content'});this.contentContainer.adopt(this.content);new Jx.Layout(this.contentContainer);new Jx.Layout(this.content);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($type(this.options.toolbars)=='array'){this.options.toolbars.each(function(tb){position=tb.options.position;tbc=this.toolbarContainers[position];if(Browser.Engine.trident4){var oldParent=$(tbc.parentNode);tbc.style.visibility='hidden';$(document.body).adopt(tbc);}
var size=tbc.getBorderBoxSize();if(Browser.Engine.trident4){oldParent.adopt(tbc);tbc.style.visibility='';}
switch(position){case'top':top=size.height;break;case'bottom':bottom=size.height;break;case'left':left=size.width;break;case'right':right=size.width;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.labelObj.innerHTML=s;},getLabel:function(){return this.labelObj.innerHTML;},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);}},setBusy:function(isBusy){this.busyCount+=isBusy?1:-1;if(this.loadingObj){this.loadingObj.img.style.visibility=(this.busyCount>0)?'visible':'hidden';}},toggleCollapse:function(state){if($defined(state)){this.options.closed=state;}else{this.options.closed=!this.options.closed;}
if(this.options.closed){if(!this.domObj.hasClass('jx'+this.options.type+'Min')){this.domObj.addClass('jx'+this.options.type+'Min');this.contentContainer.setStyle('display','none');var margin=this.domObj.getMarginSize();var height=margin.top+margin.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('jx'+this.options.type+'Min')){this.domObj.removeClass('jx'+this.options.type+'Min');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);}});Jx.Dialog=new Class({Family:'Jx.Dialog',Extends:Jx.Panel,Implements:[Jx.AutoPosition,Jx.Chrome],blanket:null,options:{modal:true,position:'absolute',width:250,height:250,horizontal:'center center',vertical:'center center',label:'New Dialog',id:'',parent:null,resize:false,resizeTooltip:'',move:true,close:true},initialize:function(options){this.isOpening=false;this.firstShow=true;this.parent($merge({parent:document.body},options,{type:'Dialog',position:'absolute'}));this.options.parent=$(this.options.parent);if(this.options.modal){this.blanket=new Element('div',{'class':'jxDialogModal',styles:{display:'none',zIndex:-1}});this.blanket.resize=(function(){var ss=$(document.body).getScrollSize();this.setStyles({width:ss.x,height:ss.y});}).bind(this.blanket);this.options.parent.adopt(this.blanket);window.addEvent('resize',this.blanket.resize);}
this.domObj.setStyle('display','none');this.options.parent.adopt(this.domObj);if(this.options.move&&typeof Drag!='undefined'){this.title.addClass('jxDialogMoveable');new Drag(this.domObj,{handle:this.title,onBeforeStart:(function(){Jx.Dialog.orderDialogs(this);}).bind(this),onStart:(function(){this.contentContainer.setStyle('visibility','hidden');this.chrome.addClass('jxChromeDrag');}).bind(this),onComplete:(function(){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.options.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(){this.contentContainer.setStyle('visibility','hidden');this.chrome.addClass('jxChromeDrag');}).bind(this),onDrag:(function(){this.resizeChrome(this.domObj);}).bind(this),onComplete:(function(){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(){Jx.Dialog.orderDialogs(this);}).bind(this));},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($defined(state)){this.options.closed=state;}else{this.options.closed=!this.options.closed;}
if(this.options.closed){if(!this.domObj.hasClass('jx'+this.options.type+'Min')){this.domObj.addClass('jx'+this.options.type+'Min');}
this.contentContainer.setStyle('display','none');if(this.resizeHandle){this.resizeHandle.setStyle('display','none');}}else{if(this.domObj.hasClass('jx'+this.options.type+'Min')){this.domObj.removeClass('jx'+this.options.type+'Min');}
this.contentContainer.setStyle('display','block');if(this.resizeHandle){this.resizeHandle.setStyle('display','block');}}
if(this.options.closed){var margin=this.domObj.getMarginSize();var size=this.title.getMarginBoxSize();this.domObj.resize({height:margin.top+size.height+margin.bottom});this.fireEvent('collapse');}else{this.domObj.resize(this.options);this.fireEvent('expand');}
this.showChrome(this.domObj);},show:function(){this.domObj.setStyles({'display':'block','visibility':'hidden'});if(this.blanket){this.blanket.resize();}
Jx.Dialog.orderDialogs(this);if(this.blanket){this.blanket.setStyles({visibility:'visible',display:'block'});}
if(this.options.closed){var margin=this.domObj.getMarginSize();var size=this.title.getMarginBoxSize();this.domObj.resize({height:margin.top+size.height+margin.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','');},hide:function(){Jx.Dialog.Stack.erase(this);Jx.Dialog.ZIndex--;this.domObj.setStyle('display','none');if(this.blanket){this.blanket.setStyle('visibility','hidden');Jx.Dialog.ZIndex--;}},openURL:function(url){if(url){this.options.contentURL=url;this.loadContent(this.content);}else{this.open();}},open:function(){if(!this.isOpening){this.isOpening=true;}
if(this.contentIsLoaded){this.show();this.fireEvent('open',this);this.isOpening=false;}else{this.addEvent('contentLoaded',this.open.bind(this));}},close:function(){this.isOpening=false;this.hide();this.fireEvent('close');}});Jx.Dialog.Stack=[];Jx.Dialog.BaseZIndex=null;Jx.Dialog.orderDialogs=function(d){Jx.Dialog.Stack.erase(d).push(d);if(Jx.Dialog.BaseZIndex===null){Jx.Dialog.BaseZIndex=Math.max(Jx.Dialog.Stack[0].domObj.getStyle('zIndex').toInt(),1);}
Jx.Dialog.Stack.each(function(d,i){var z=Jx.Dialog.BaseZIndex+i;if(d.blanket){d.blanket.setStyle('zIndex',z);}
d.domObj.setStyle('zIndex',z);});};Jx.Splitter=new Class({Family:'Jx.Splitter',Implements:[Options],domObj:null,elements:null,bars:null,firstUpdate:true,options:{useChildren:false,splitInto:2,elements:null,containerOptions:[],barOptions:[],layout:'horizontal',snaps:[],barTooltip:'drag this bar to resize',onStart:null,onFinish:null},initialize:function(domObj,options){this.setOptions(options);this.domObj=$(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 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(var i=0;i<nSplits;i++){var el;if(this.options.elements&&this.options.elements[i]){if(options.elements[i].domObj){el=options.elements[i].domObj;}else{el=$(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(var 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{jxl.resize({position:'absolute'});}}
for(var 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($defined(Drag)){this.establishConstraints();}
for(var 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(var 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.options.barTitle});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');},onComplete:(function(obj){mask.destroy();obj.removeClass('jxSplitBarDrag');if(obj.retrieve('splitterObj')!=this){return;}
fn.apply(this,[obj]);}).bind(this),onStart:(function(obj){mask=new Element('div',{'class':'jxSplitterMask'}).inject(obj,'after');if(this.options.onStart){this.options.onStart();}}).bind(this),onFinish:(function(){if(this.options.onFinish){this.options.onFinish();}}).bind(this)});},this);}},dragHorizontal:function(obj){var leftEdge=parseInt(obj.style.left);var leftSide=obj.retrieve('leftSide');var rightSide=obj.retrieve('rightSide');var leftJxl=leftSide.retrieve('jxLayout');var rightJxl=rightSide.retrieve('jxLayout');var paddingLeft=this.domObj.getPaddingSize().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){var 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);var topSide=obj.retrieve('leftSide');var bottomSide=obj.retrieve('rightSide');var topJxl=topSide.retrieve('jxLayout');var bottomJxl=bottomSide.retrieve('jxLayout');var paddingTop=this.domObj.getPaddingSize().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;for(var 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;var jxo;for(var i=0;i<this.elements.length;i++){var e=this.elements[i];jxo=e.retrieve('jxLayout').options;if(jxo.width!=null){availableSpace-=parseInt(jxo.width);}else{var 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);var remainder=availableSpace%nVariable;var leftPadding=this.domObj.getPaddingSize().left;var currentPosition=0;for(var i=0;i<this.elements.length;i++){var e=this.elements[i];var jxl=e.retrieve('jxLayout');var jxo=jxl.options;if(jxo.width!=null){jxl.resize({left:currentPosition});currentPosition+=jxo.width;}else{var a=amount;if(nVariable==1){a+=remainder;}
nVariable--;var w=0;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;for(var 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;var jxo;for(var i=0;i<this.elements.length;i++){var e=this.elements[i];jxo=e.retrieve('jxLayout').options;if(jxo.height!=null){availableSpace-=parseInt(jxo.height);}else{var h=0;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);var remainder=availableSpace%nVariable;var paddingTop=this.domObj.getPaddingSize().top;var currentPosition=0;for(var i=0;i<this.elements.length;i++){var e=this.elements[i];var jxl=e.retrieve('jxLayout');var jxo=jxl.options;if(jxo.height!=null){jxl.resize({top:currentPosition});currentPosition+=jxo.height;}else{var a=amount;if(nVariable==1){a+=remainder;}
nVariable--;var 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;}}}});Jx.PanelSet=new Class({Family:'Jx.PanelSet',Implements:[Options,Events,Jx.Addable],options:{parent:null,panels:[],barTooltip:'drag this bar to resize'},panels:null,height:null,firstLayout:true,initialize:function(options){if(options&&options.panels){this.panels=options.panels;options.panels=null;}
this.setOptions(options);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.options.barTooltip});var panel=this.panels[i];panel.title.setStyle('visibility','hidden');$(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(){$(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;for(var i=1;i<this.splitter.elements.length;i++){var p=this.splitter.elements[i];space-=p.retrieve('leftBar').getBorderBoxSize().height;if(p!==panel.domObj){var thePanel=p.retrieve('Jx.Panel');var 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(var i=1;i<this.splitter.elements.length;i++){var p=this.splitter.elements[i];top+=p.retrieve('leftBar').getBorderBoxSize().height;if(p!==panel.domObj){var thePanel=p.retrieve('Jx.Panel');var o=p.retrieve('jxLayout').options;var panelHeight=$chk(o.height)?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(var i=this.splitter.elements.length-1;i>0;i--){p=this.splitter.elements[i];if(p!==panel.domObj){var o=p.retrieve('jxLayout').options;var panelHeight=$chk(o.height)?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});}});Jx.Grid=new Class({Family:'Jx.Grid',Implements:[Options,Events,Jx.Addable],domObj:null,model:null,options:{parent:null,alternateRowColors:false,rowHeaders:false,columnHeaders:false,rowSelection:false,columnSelection:false,cellPrelight:false,rowPrelight:false,columnPrelight:false,rowHeaderPrelight:false,columnHeaderPrelight:false,cellSelection:false},initialize:function(options){this.setOptions(options);this.domObj=new Element('div');new Jx.Layout(this.domObj,{onSizeChange:this.resize.bind(this)});if(this.options.parent){this.addTo(this.options.parent);}
this.rowColObj=new Element('div',{'class':'jxGridContainer'});this.colObj=new Element('div',{'class':'jxGridContainer'});this.colTable=new Element('table',{'class':'jxGridTable'});this.colTableHead=new Element('thead');this.colTable.appendChild(this.colTableHead);this.colTableBody=new Element('tbody');this.colTable.appendChild(this.colTableBody);this.colObj.appendChild(this.colTable);this.rowObj=new Element('div',{'class':'jxGridContainer'});this.rowTable=new Element('table',{'class':'jxGridTable'});this.rowTableHead=new Element('thead');this.rowTable.appendChild(this.rowTableHead);this.rowObj.appendChild(this.rowTable);this.gridObj=new Element('div',{'class':'jxGridContainer',styles:{overflow:'scroll'}});this.gridTable=new Element('table',{'class':'jxGridTable'});this.gridTableBody=new Element('tbody');this.gridTable.appendChild(this.gridTableBody);this.gridObj.appendChild(this.gridTable);this.domObj.appendChild(this.rowColObj);this.domObj.appendChild(this.rowObj);this.domObj.appendChild(this.colObj);this.domObj.appendChild(this.gridObj);this.gridObj.addEvent('scroll',this.onScroll.bind(this));this.gridObj.addEvent('click',this.onClickGrid.bindWithEvent(this));this.rowObj.addEvent('click',this.onClickRowHeader.bindWithEvent(this));this.colObj.addEvent('click',this.onClickColumnHeader.bindWithEvent(this));this.gridObj.addEvent('mousemove',this.onMouseMoveGrid.bindWithEvent(this));this.rowObj.addEvent('mousemove',this.onMouseMoveRowHeader.bindWithEvent(this));this.colObj.addEvent('mousemove',this.onMouseMoveColumnHeader.bindWithEvent(this));},onScroll:function(){this.colObj.scrollLeft=this.gridObj.scrollLeft;this.rowObj.scrollTop=this.gridObj.scrollTop;},resize:function(){if(!this.model){return;}
var colHeight=this.options.columnHeaders?this.model.getColumnHeaderHeight():1;var rowWidth=this.options.rowHeaders?this.model.getRowHeaderWidth():1;var size=Element.getContentBoxSize(this.domObj);this.rowColObj.setStyles({width:rowWidth-1,height:colHeight-1});this.rowObj.setStyles({top:colHeight,left:0,width:rowWidth-1,height:size.height-colHeight-1});this.colObj.setStyles({top:0,left:rowWidth,width:size.width-rowWidth-1,height:colHeight-1});this.gridObj.setStyles({top:colHeight,left:rowWidth,width:size.width-rowWidth-1,height:size.height-colHeight-1});},setModel:function(model){this.model=model;if(this.model){if(this.domObj.resize){this.domObj.resize();}
this.createGrid();this.resize();}else{this.destroyGrid();}},destroyGrid:function(){var n=this.colTableHead.cloneNode(false);this.colTable.replaceChild(n,this.colTableHead);this.colTableHead=n;n=this.colTableBody.cloneNode(false);this.colTable.replaceChild(n,this.colTableBody);this.colTableBody=n;n=this.rowTableHead.cloneNode(false);this.rowTable.replaceChild(n,this.rowTableHead);this.rowTableHead=n;n=this.gridTableBody.cloneNode(false);this.gridTable.replaceChild(n,this.gridTableBody);this.gridTableBody=n;},createGrid:function(){this.destroyGrid();if(this.model){var model=this.model;var nColumns=model.getColumnCount();var nRows=model.getRowCount();if(this.options.columnHeaders){var colHeight=model.getColumnHeaderHeight();var trHead=new Element('tr');this.colTableHead.appendChild(trHead);var trBody=new Element('tr');this.colTableBody.appendChild(trBody);var th=new Element('th',{styles:{width:0,height:0}});trHead.appendChild(th);th=th.cloneNode(true);th.setStyle('height',colHeight);trBody.appendChild(th);for(var i=0;i<nColumns;i++){var colWidth=model.getColumnWidth(i);th=new Element('th',{'class':'jxGridColHeadHide',styles:{width:colWidth}});var p=new Element('p',{styles:{height:0,width:colWidth}});th.appendChild(p);trHead.appendChild(th);th=new Element('th',{'class':'jxGridColHead',html:model.getColumnHeaderHTML(i)});trBody.appendChild(th);}
var th=new Element('th',{styles:{width:1000,height:0}});trHead.appendChild(th);th=th.cloneNode(true);th.setStyle('height',colHeight-1);th.className='jxGridColHead';trBody.appendChild(th);}
if(this.options.rowHeaders){var rowWidth=model.getRowHeaderWidth();var tr=new Element('tr');var td=new Element('td',{styles:{width:0,height:0}});tr.appendChild(td);var th=new Element('th',{styles:{width:rowWidth,height:0}});tr.appendChild(th);this.rowTableHead.appendChild(tr);for(var i=0;i<nRows;i++){var rowHeight=model.getRowHeight(i);var tr=new Element('tr');var td=new Element('td',{'class':'jxGridRowHeadHide',styles:{width:0,height:rowHeight}});var p=new Element('p',{styles:{width:0,height:rowHeight}});td.appendChild(p);tr.appendChild(td);var th=new Element('th',{'class':'jxGridRowHead',html:model.getRowHeaderHTML(i)});tr.appendChild(th);this.rowTableHead.appendChild(tr);}
var tr=new Element('tr');var td=new Element('td',{styles:{width:0,height:1000}});tr.appendChild(td);var th=new Element('th',{'class':'jxGridRowHead',styles:{width:rowWidth,height:1000}});tr.appendChild(th);this.rowTableHead.appendChild(tr);}
var colHeight=model.getColumnHeaderHeight();var trBody=new Element('tr');this.gridTableBody.appendChild(trBody);var td=new Element('td',{styles:{width:0,height:0}});trBody.appendChild(td);for(var i=0;i<nColumns;i++){var colWidth=model.getColumnWidth(i);td=new Element('td',{'class':'jxGridColHeadHide',styles:{width:colWidth}});var p=new Element('p',{styles:{width:colWidth,height:0}});td.appendChild(p);trBody.appendChild(td);}
for(var j=0;j<nRows;j++){var rowHeight=model.getRowHeight(j);var actualRowHeight=rowHeight;var tr=new Element('tr');this.gridTableBody.appendChild(tr);var td=new Element('td',{'class':'jxGridRowHeadHide',styles:{width:0,height:rowHeight}});var p=new Element('p',{styles:{height:rowHeight}});td.appendChild(p);tr.appendChild(td);for(var i=0;i<nColumns;i++){var colWidth=model.getColumnWidth(i);td=new Element('td',{'class':'jxGridCell'});td.innerHTML=model.getValueAt(j,i);tr.appendChild(td);var tdSize=td.getSize();if(tdSize.height>actualRowHeight){actualRowHeight=tdSize.height;}}
if(document.all){actualRowHeight-=1;}
if(this.options.rowHeaders){this.setRowHeaderHeight(j,actualRowHeight);}
if(this.options.alternateRowColors){tr.className=(j%2)?'jxGridRowOdd':'jxGridRowEven';}else{tr.className='jxGridRowAll';}}}},setRowHeaderHeight:function(row,height){this.rowTableHead.childNodes[row+1].childNodes[0].childNodes[0].style.height=(height)+'px';},gridChanged:function(model,row,col,value){if(this.model==model){this.gridObj.childNodes[row].childNodes[col].innerHTML=value;}},prelightRowHeader:function(row){var cell=(row>=0&&row<this.rowTableHead.rows.length-1)?this.rowTableHead.rows[row+1].cells[1]:null;if(this.prelitRowHeader!=cell){if(this.prelitRowHeader){this.prelitRowHeader.removeClass('jxGridRowHeaderPrelight');}
this.prelitRowHeader=cell;if(this.prelitRowHeader){this.prelitRowHeader.addClass('jxGridRowHeaderPrelight');}}},prelightColumnHeader:function(col){if(this.colTableBody.rows.length==0){return;}
var cell=(col>=0&&col<this.colTableBody.rows[0].cells.length-1)?this.colTableBody.rows[0].cells[col+1]:null;if(this.prelitColumnHeader!=cell){if(this.prelitColumnHeader){this.prelitColumnHeader.removeClass('jxGridColumnHeaderPrelight');}
this.prelitColumnHeader=cell;if(this.prelitColumnHeader){this.prelitColumnHeader.addClass('jxGridColumnHeaderPrelight');}}},prelightRow:function(row){var tr=(row>=0&&row<this.gridTableBody.rows.length-1)?this.gridTableBody.rows[row+1]:null;if(this.prelitRow!=row){if(this.prelitRow){this.prelitRow.removeClass('jxGridRowPrelight');}
this.prelitRow=tr;if(this.prelitRow){this.prelightRowHeader(row);this.prelitRow.addClass('jxGridRowPrelight');}}},prelightColumn:function(col){if(col>=0&&col<this.gridTable.rows[0].cells.length){if($chk(this.prelitColumn)){for(var i=0;i<this.gridTable.rows.length;i++){this.gridTable.rows[i].cells[this.prelitColumn+1].removeClass('jxGridColumnPrelight');}}
this.prelitColumn=col;for(var i=0;i<this.gridTable.rows.length;i++){this.gridTable.rows[i].cells[col+1].addClass('jxGridColumnPrelight');}}
this.prelightColumnHeader(col);},prelightCell:function(row,col){var td=(row>=0&&col>=0&&row<this.gridTableBody.rows.length-1&&col<this.gridTableBody.rows[row+1].cells.length-1)?this.gridTableBody.rows[row+1].cells[col+1]:null;if(this.prelitCell!=td){if(this.prelitCell){this.prelitCell.removeClass('jxGridCellPrelight');}
this.prelitCell=td;if(this.prelitCell){this.prelitCell.addClass('jxGridCellPrelight');}}},selectCell:function(row,col){var td=(row>=0&&col>=0&&row<this.gridTableBody.rows.length-1&&col<this.gridTableBody.rows[row+1].cells.length-1)?this.gridTableBody.rows[row+1].cells[col+1]:null;if(!td){return;}
if(this.selectedCell){this.selectedCell.removeClass('jxGridCellSelected');}
this.selectedCell=td;this.selectedCell.addClass('jxGridCellSelected');},selectRowHeader:function(row,selected){var cell=(row>=0&&row<this.rowTableHead.rows.length-1)?this.rowTableHead.rows[row+1].cells[1]:null;if(!cell){return;}
if(selected){cell.addClass('jxGridRowHeaderSelected');}else{cell.removeClass('jxGridRowHeaderSelected');}},selectRow:function(row,selected){var tr=(row>=0&&row<this.gridTableBody.rows.length-1)?this.gridTableBody.rows[row+1]:null;if(tr){if(selected){tr.addClass('jxGridRowSelected');}else{tr.removeClass('jxGridRowSelected');}
this.selectRowHeader(row,selected);}},selectColumnHeader:function(col,selected){if(this.colTableBody.rows.length==0){return;}
var cell=(col>=0&&col<this.colTableBody.rows[0].cells.length-1)?this.colTableBody.rows[0].cells[col+1]:null;if(cell==null){return;}
if(selected){cell.addClass('jxGridColumnHeaderSelected');}else{cell.removeClass('jxGridColumnHeaderSelected');}},selectColumn:function(col,selected){if(col>=0&&col<this.gridTable.rows[0].cells.length){if(selected){for(var i=0;i<this.gridTable.rows.length;i++){this.gridTable.rows[i].cells[col+1].addClass('jxGridColumnSelected');}}else{for(var i=0;i<this.gridTable.rows.length;i++){this.gridTable.rows[i].cells[col+1].removeClass('jxGridColumnSelected');}}
this.selectColumnHeader(col,selected);}},onMouseMoveGrid:function(e){var rc=this.getRowColumnFromEvent(e);if(this.options.cellPrelight){this.prelightCell(rc.row,rc.column);}
if(this.options.rowPrelight){this.prelightRow(rc.row);}
if(this.options.rowHeaderPrelight){this.prelightRowHeader(rc.row);}
if(this.options.columnPrelight){this.prelightColumn(rc.column);}
if(this.options.columnHeaderPrelight){this.prelightColumnHeader(rc.column);}},onMouseMoveRowHeader:function(e){if(this.options.rowPrelight){var rc=this.getRowColumnFromEvent(e);this.prelightRow(rc.row);}},onMouseMoveColumnHeader:function(e){if(this.options.columnPrelight){var rc=this.getRowColumnFromEvent(e);this.prelightColumn(rc.column);}},onClickGrid:function(e){var rc=this.getRowColumnFromEvent(e);if(this.options.cellSelection&&this.model.cellSelected){this.model.cellSelected(this,rc.row,rc.column);}
if(this.options.rowSelection&&this.model.rowSelected){this.model.rowSelected(this,rc.row);}
if(this.options.columnSelection&&this.model.columnSelected){this.model.columnSelected(this,rc.column);}},onClickRowHeader:function(e){var rc=this.getRowColumnFromEvent(e);if(this.options.rowSelection&&this.model.rowSelected){this.model.rowSelected(this,rc.row);}},onClickColumnHeader:function(e){var rc=this.getRowColumnFromEvent(e);if(this.options.columnSelection&&this.model.columnSelected){this.model.columnSelected(this,rc.column);}},getRowColumnFromEvent:function(e){var td=e.target;if(td.tagName!='TD'&&td.tagName!='TH'){return{row:-1,column:-1};}
var tr=td.parentNode;var col=td.cellIndex-1;var row=tr.rowIndex-1;if(col==-1){for(var i=0;i<tr.childNodes.length;i++){if(tr.childNodes[i]==td){col=i-1;break;}}}
return{row:row,column:col};}});Jx.Grid.Model=new Class({Family:'Jx.Grid.Model',Implements:[Events,Options],options:{colHeaderHeight:28,rowHeaderWidth:28,colWidth:50,rowHeight:20,rowHeaders:null,columnHeaders:null},data:null,initialize:function(data,options){this.data=data||[];this.setOptions(options);},getColumnCount:function(){return(this.data&&this.data[0])?this.data[0].length:0;},getColumnHeaderHTML:function(col){return this.options.columnHeaders?this.options.columnHeaders[col]:col+1;},getColumnHeaderHeight:function(){return this.options.colHeaderHeight;},getColumnWidth:function(col){return this.options.colWidth;},getRowHeaderHTML:function(row){return this.options.rowHeaders?this.options.rowHeaders[row]:row+1;},getRowHeaderWidth:function(){return this.options.rowHeaderWidth;},getRowHeight:function(row){return this.options.rowHeight;},getRowCount:function(){return this.data.length},getValueAt:function(row,col){return(this.data&&$chk(this.data[row]))?this.data[row][col]:'';},setColumnWidth:function(){},isCellEditable:function(){return false},setValueAt:function(row,col,value){},rowSelected:function(grid,row){if(this.selectedRow!=null){grid.selectRow(this.selectedRow,false);}
this.selectedRow=row;grid.selectRow(row,true);this.fireEvent('select-row',row);},columnSelected:function(grid,col){if(this.selectedCol!=null){grid.selectColumn(this.selectedCol,false);}
this.selectedCol=col;grid.selectColumn(col,true);this.fireEvent('select-column',col);},cellSelected:function(grid,row,col){grid.selectCell(row,col);this.fireEvent('select-cell',[row,col]);}});Jx.Menu.Context=new Class({Family:'Jx.Menu.Context',Extends:Jx.Menu,initialize:function(id){this.parent();if($(id)){$(id).addEvent('contextmenu',this.show.bindWithEvent(this));}},show:function(e){if(this.items.length==0){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');$(document.body).adopt(this.contentContainer);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.hideWatcher);document.addEvent('keyup',this.keypressWatcher);e.stop();}});Jx.Menu.Separator=new Class({Family:'Jx.Menu.Separator',domObj:null,owner:null,initialize:function(){this.domObj=new Element('li',{'class':'jxMenuItem'});var span=new Element('span',{'class':'jxMenuSeparator','html':'&nbsp;'});this.domObj.appendChild(span);},setOwner:function(obj){this.owner=obj;},hide:$empty,show:$empty});Jx.Menu.SubMenu=new Class({Family:'Jx.Menu.SubMenu',Extends:Jx.Menu.Item,Implements:[Jx.AutoPosition,Jx.Chrome],subDomObj:null,owner:null,visibleItem:null,items:null,initialize:function(options){this.open=false;this.items=[];this.parent(options);this.domA.addClass('jxButtonSubMenu');this.contentContainer=new Element('div',{'class':'jxMenuContainer'});this.subDomObj=new Element('ul',{'class':'jxSubMenu'});this.contentContainer.adopt(this.subDomObj);},setOwner:function(obj){this.owner=obj;},show:function(){if(this.open||this.items.length==0){return;}
this.contentContainer.setStyle('visibility','hidden');this.contentContainer.setStyle('display','block');$(document.body).adopt(this.contentContainer);this.contentContainer.setContentBoxSize(this.subDomObj.getMarginBoxSize());this.showChrome(this.contentContainer);this.position(this.contentContainer,this.domObj,{horizontal:['right left','left right'],vertical:['top top'],offsets:this.chromeOffsets});this.open=true;this.contentContainer.setStyle('visibility','');this.setActive(true);},eventInMenu:function(e){if(this.visibleItem&&this.visibleItem.eventInMenu&&this.visibleItem.eventInMenu(e)){return true;}
return $(e.target).descendantOf(this.domObj)||$(e.target).descendantOf(this.subDomObj)||this.items.some(function(item){return item instanceof Jx.Menu.SubMenu&&item.eventInMenu(e);});},hide:function(){if(!this.open){return;}
this.open=false;this.items.each(function(item){item.hide();});this.contentContainer.setStyle('display','none');this.visibleItem=null;},add:function(){var that=this;$A(arguments).each(function(item){that.items.push(item);item.setOwner(that);that.subDomObj.adopt(item.domObj);});return this;},insertBefore:function(newItem,targetItem){var bInserted=false;for(var i=0;i<this.items.length;i++){if(this.items[i]==targetItem){this.items.splice(i,0,newItem);this.subDomObj.insertBefore(newItem.domObj,targetItem.domObj);bInserted=true;break;}}
if(!bInserted){this.add(newItem);}},remove:function(item){for(var i=0;i<this.items.length;i++){if(this.items[i]==item){this.items.splice(i,1);this.subDomObj.removeChild(item.domObj);break;}}},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.Splitter.Snap=new Class({Family:'Jx.Splitter.Snap',snap:null,element:null,splitter:null,layout:'vertical',initialize:function(snap,element,splitter,events){this.snap=snap;this.element=element;var jxl=element.retrieve('jxLayout');jxl.addEvent('sizeChange',this.sizeChange.bind(this));this.splitter=splitter;this.layout=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;}
events.each(function(eventName){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.Toolbar=new Class({Family:'Jx.Toolbar',Implements:[Options,Events],items:null,domObj:null,isActive:false,options:{type:'Toolbar',parent:null,autoSize:false,scroll:true},initialize:function(options){this.setOptions(options);this.items=[];this.domObj=new Element('ul',{id:this.options.id,'class':'jx'+this.options.type});if(this.options.parent){this.addTo(this.options.parent);}
this.deactivateWatcher=this.deactivate.bindWithEvent(this);if(this.options.items){this.add(this.options.items);}},addTo:function(parent){var tbc=$(parent).retrieve('jxBarContainer');if(!tbc){tbc=new Jx.Toolbar.Container({parent:parent,position:this.options.position,autoSize:this.options.autoSize,scroll:this.options.scroll});}
tbc.add(this);return this;},add:function(){$A(arguments).flatten().each(function(thing){if(thing.domObj){thing=thing.domObj;}
if(thing.tagName=='LI'){if(!thing.hasClass('jxToolItem')){thing.addClass('jxToolItem');}
this.domObj.appendChild(thing);}else{var item=new Jx.Toolbar.Item(thing);this.domObj.appendChild(item.domObj);}},this);if(arguments.length>0){this.fireEvent('add',this);}
return this;},remove:function(item){if(item.domObj){item=item.domObj;}
var li=item.findElement('LI');if(li&&li.parentNode==this.domObj){item.dispose();li.dispose();this.fireEvent('remove',this);}else{return null;}},deactivate:function(){this.items.each(function(o){o.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);}});Jx.TabSet=new Class({Family:'Jx.TabSet',Implements:[Options,Events],tabs:null,domObj:null,initialize:function(domObj,options){this.setOptions(options);this.tabs=[];this.domObj=$(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(){$A(arguments).each(function(tab){if(tab instanceof Jx.Button.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.Button.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({Family:'Jx.TabBox',Implements:[Options,Events,Jx.Addable],options:{parent:null,position:'top',height:null,width:null,scroll:true},tabBar:null,tabSet:null,initialize:function(options){this.setOptions(options);this.tabBar=new Jx.Toolbar({type:'TabBar',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();}).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);$A(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.Toolbar.Container=new Class({Family:'Jx.Toolbar.Container',Implements:[Options,Events,Jx.Addable],domObj:null,options:{parent:null,position:'top',autoSize:false,scroll:true},initialize:function(options){this.setOptions(options);var d=$(this.options.parent);this.domObj=d||new Element('div');this.domObj.addClass('jxBarContainer');if(this.options.scroll){this.scroller=new Element('div',{'class':'jxBarScroller'});this.domObj.adopt(this.scroller);}
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',this.update.bind(this));if(typeof Fx!='undefined'&&typeof Fx.Tween!='undefined'){this.scrollFx=scrollFx=new Fx.Tween(this.scroller,{link:'chain'});}
this.scrollLeft=new Jx.Button({image:Jx.aPixel.src}).addTo(this.domObj);this.scrollLeft.domObj.addClass('jxBarScrollLeft');this.scrollLeft.addEvents({click:(function(){var from=this.scroller.getStyle('left').toInt();if(isNaN(from)){from=0;}
var to=Math.min(from+100,0);if(to>=0){this.scrollLeft.domObj.setStyle('visibility','hidden');}
this.scrollRight.domObj.setStyle('visibility','');if($defined(this.scrollFx)){this.scrollFx.start('left',from,to);}else{this.scroller.setStyle('left',to);}}).bind(this)});this.scrollRight=new Jx.Button({image:Jx.aPixel.src}).addTo(this.domObj);this.scrollRight.domObj.addClass('jxBarScrollRight');this.scrollRight.addEvents({click:(function(){var from=this.scroller.getStyle('left').toInt();if(isNaN(from)){from=0;}
var to=Math.max(from-100,this.scrollWidth);if(to==this.scrollWidth){this.scrollRight.domObj.setStyle('visibility','hidden');}
this.scrollLeft.domObj.setStyle('visibility','');if($defined(this.scrollFx)){this.scrollFx.start('left',from,to);}else{this.scroller.setStyle('left',to);}}).bind(this)});}else{this.options.scroll=false;}
if(this.options.toolbars){this.add(this.options.toolbars);}},update:function(){if(this.options.autoSize){(function(){var x=0;this.scroller.getChildren().each(function(child){x+=child.getSize().x;});this.domObj.setStyles({width:x});this.measure();}).delay(1,this);}else{this.measure();}},measure:function(){if((!this.scrollLeftSize||!this.scrollLeftSize.x)&&this.domObj.parentNode){this.scrollLeftSize=this.scrollLeft.domObj.getSize();this.scrollRightSize=this.scrollRight.domObj.getSize();}
this.scrollWidth=this.domObj.getSize().x;this.scroller.getChildren().each(function(child){this.scrollWidth-=child.getSize().x;},this);if(this.scrollWidth<0){var l=this.scroller.getStyle('left').toInt();if(l<0){this.scrollLeft.domObj.setStyle('visibility','');}else{this.scrollLeft.domObj.setStyle('visibility','hidden');}
if(l<=this.scrollWidth){this.scrollRight.domObj.setStyle('visibility','hidden');if(l<this.scrollWidth){if($defined(this.scrollFx)){this.scrollFx.start('left',l,this.scrollWidth);}else{this.scroller.setStyle('left',this.scrollWidth);}}}else{this.scrollRight.domObj.setStyle('visibility','');}}else{this.scrollLeft.domObj.setStyle('visibility','hidden');this.scrollRight.domObj.setStyle('visibility','hidden');var from=this.scroller.getStyle('left').toInt();if(!isNaN(from)&&from!==0){if($defined(this.scrollFx)){this.scrollFx.start('left',0);}else{this.scroller.setStyle('left',0);}}}},add:function(){$A(arguments).flatten().each(function(thing){if(this.options.scroll){thing.addEvent('add',this.update.bind(this));thing.addEvent('remove',this.update.bind(this));thing.addEvent('show',this.scrollIntoView.bind(this));}
if(this.scroller){this.scroller.adopt(thing.domObj);}else{this.domObj.adopt(thing.domObj);}
this.domObj.addClass('jx'+thing.options.type+this.options.position.capitalize());},this);if(this.options.scroll){this.update();}
if(arguments.length>0){this.fireEvent('add',this);}
return this;},remove:function(item){},scrollIntoView:function(item){var width=this.domObj.getSize().x;var coords=item.domObj.getCoordinates(this.scroller);var l=this.scroller.getStyle('left');if(l==='auto'||l.length<=0){l=0;}else{l=l.toInt();}
var slSize=this.scrollLeftSize?this.scrollLeftSize.x:0;var srSize=this.scrollRightSize?this.scrollRightSize.x:0;var left=l;if(l<-coords.left+slSize){left=-coords.left+slSize;if(left>=0){left=0;}}else if(width-coords.right-srSize<l){left=width-coords.right-srSize;if(left<this.scrollWidth){left=this.scrollWidth;}}
if(left<0){this.scrollLeft.domObj.setStyle('visibility','');}else{this.scrollLeft.domObj.setStyle('visibility','hidden');}
if(left<=this.scrollWidth){this.scrollRight.domObj.setStyle('visibility','hidden');}else{this.scrollRight.domObj.setStyle('visibility','');}
if(left!=l){if($defined(this.scrollFx)){this.scrollFx.start('left',left);}else{this.scroller.setStyle('left',left);}}}});Jx.Toolbar.Item=new Class({Family:'Jx.Toolbar.Item',Implements:[Options],options:{active:true},domObj:null,initialize:function(jxThing){this.al=[];this.domObj=new Element('li',{'class':'jxToolItem'});if(jxThing){if(jxThing.domObj){this.domObj.appendChild(jxThing.domObj);if(jxThing instanceof Jx.Button.Tab){this.domObj.addClass('jxTabItem');}}else{this.domObj.appendChild(jxThing);if(jxThing.hasClass('jxTab')){this.domObj.addClass('jxTabItem');}}}}});Jx.Toolbar.Separator=new Class({Family:'Jx.Toolbar.Separator',domObj:null,initialize:function(){this.domObj=new Element('li',{'class':'jxToolItem'});this.domSpan=new Element('span',{'class':'jxBarSeparator'});this.domObj.appendChild(this.domSpan);}});Jx.TreeItem=new Class({Family:'Jx.TreeItem',Implements:[Options,Events],domObj:null,owner:null,options:{label:'',data:null,contextMenu:null,enabled:true,type:'Item',image:null,imageClass:''},initialize:function(options){this.setOptions(options);this.domObj=new Element('li',{'class':'jxTree'+this.options.type});if(this.options.id){this.domObj.id=this.options.id;}
this.domNode=new Element('img',{'class':'jxTreeImage',src:Jx.aPixel.src,alt:'',title:''});this.domObj.appendChild(this.domNode);this.domLabel=(this.options.draw)?this.options.draw.apply(this):this.draw();this.domObj.appendChild(this.domLabel);this.domObj.store('jxTreeItem',this);if(!this.options.enabled){this.domObj.addClass('jxDisabled');}},draw:function(){var domImg=new Element('img',{'class':'jxTreeIcon',src:Jx.aPixel.src,alt:'',title:''});if(this.options.image){domImg.setStyle('backgroundImage','url('+this.options.image+')');}
if(this.options.imageClass){domImg.addClass(this.options.imageClass);}
var hasFocus;var mouseDown;var domA=new Element('a',{href:'javascript:void(0)',html:this.options.label});domA.addEvents({click:this.selected.bind(this),dblclick:this.selected.bind(this),drag:function(e){e.stop();},contextmenu:function(e){e.stop();},mousedown:(function(e){domA.addClass('jxTreeItemPressed');hasFocus=true;mouseDown=true;domA.focus();if(e.rightClick&&this.options.contextMenu){this.options.contextMenu.show(e);}}).bind(this),mouseup:function(e){domA.removeClass('jxTreeItemPressed');mouseDown=false;},mouseleave:function(e){domA.removeClass('jxTreeItemPressed');},mouseenter:function(e){if(hasFocus&&mouseDown){domA.addClass('jxTreeItemPressed');}},keydown:function(e){if(e.key=='enter'){domA.addClass('jxTreeItemPressed');}},keyup:function(e){if(e.key=='enter'){domA.removeClass('jxTreeItemPressed');}},blur:function(){hasFocus=false;}});domA.appendChild(domImg);if(typeof Drag!='undefined'){new Drag(domA,{onStart:function(){this.stop();}});}
return domA;},finalize:function(){this.finalizeItem();},finalizeItem:function(){if(!this.domObj){return;}
this.options=null;this.domObj.dispose();this.domObj=null;this.owner=null;},clone:function(){return new Jx.TreeItem(this.options);},update:function(shouldDescend){var isLast=(arguments.length>1)?arguments[1]:(this.owner&&this.owner.isLastNode(this));if(isLast){this.domObj.removeClass('jxTree'+this.options.type);this.domObj.addClass('jxTree'+this.options.type+'Last');}else{this.domObj.removeClass('jxTree'+this.options.type+'Last');this.domObj.addClass('jxTree'+this.options.type);}},selected:function(e){this.fireEvent('click',this);},getName:function(){return this.options.label;},propertyChanged:function(obj){this.options.enabled=obj.isEnabled();if(this.options.enabled){this.domObj.removeClass('jxDisabled');}else{this.domObj.addClass('jxDisabled');}}});Jx.TreeFolder=new Class({Family:'Jx.TreeFolder',Extends:Jx.TreeItem,subDomObj:null,nodes:null,options:{open:false},initialize:function(options){this.parent($merge(options,{type:'Branch'}));$(this.domNode).addEvent('click',this.clicked.bindWithEvent(this));this.addEvent('click',this.clicked.bindWithEvent(this));this.nodes=[];this.subDomObj=new Element('ul',{'class':'jxTree'});this.domObj.appendChild(this.subDomObj);if(this.options.open){this.expand();}else{this.collapse();}},finalize:function(){this.finalizeFolder();this.finalizeItem();this.subDomObj.dispose();this.subDomObj=null;},finalizeFolder:function(){this.domObj.childNodes[0].removeEvents();for(var i=this.nodes.length-1;i>=0;i--){this.nodes[i].finalize();this.nodes.pop();}},clone:function(){var node=new Jx.TreeFolder(this.options);this.nodes.each(function(n){node.append(n.clone());});return node;},isLastNode:function(node){if(this.nodes.length==0){return false;}else{return this.nodes[this.nodes.length-1]==node;}},update:function(shouldDescend){if(!this.parent)return;var isLast=false;if(arguments.length>1){isLast=arguments[1];}else{isLast=(this.owner&&this.owner.isLastNode(this));}
var c='jxTree'+this.options.type;c+=isLast?'Last':'';c+=this.options.open?'Open':'Closed';this.domObj.className=c;if(isLast){this.subDomObj.className='jxTree';}else{this.subDomObj.className='jxTree jxTreeNest';}
if(this.nodes&&shouldDescend){var that=this;this.nodes.each(function(n,i){n.update(false,i==that.nodes.length-1);});}},append:function(node){node.owner=this;this.nodes.push(node);this.subDomObj.appendChild(node.domObj);this.update(true);return this;},insert:function(node,refNode){node.owner=this;if(!refNode){this.nodes.unshift(node);if(this.subDomObj.childNodes.length==0){this.subDomObj.appendChild(node.domObj);}else{this.subDomObj.insertBefore(node.domObj,this.subDomObj.childNodes[0]);}}else{var b=false;for(var i=0;i<this.nodes.length;i++){if(this.nodes[i]==refNode){i=i+1;if(i<this.nodes.length){this.nodes.splice(i,0,node);this.subDomObj.insertBefore(node.domObj,this.subDomObj.childNodes[i]);b=true;break;}}}
if(!b){this.nodes.push(node);this.subDomObj.appendChild(node.domObj);}}
this.update(true);return this;},remove:function(node){node.owner=null;for(var i=0;i<this.nodes.length;i++){if(this.nodes[i]==node){this.nodes.splice(i,1);this.subDomObj.removeChild(this.subDomObj.childNodes[i]);break;}}
this.update(true);return this;},replace:function(newNode,refNode){var b=false;for(var i=0;i<this.nodes.length;i++){if(this.nodes[i]==refNode){if(i<this.nodes.length){newNode.owner=this;this.nodes.splice(i,1,newNode);this.subDomObj.replaceChild(newNode.domObj,refNode.domObj);return true;}}}
return false;},clicked:function(e){if(this.options.open){this.collapse();}else{this.expand();}},expand:function(){this.options.open=true;this.subDomObj.setStyle('display','block');this.update(true);this.fireEvent('disclosed',this);},collapse:function(){this.options.open=false;this.subDomObj.setStyle('display','none');this.update(true);this.fireEvent('disclosed',this);},findChild:function(path){if(path.length==0)
return this;if(path.length==1)
{for(var i=0;i<this.nodes.length;i++)
{if(this.nodes[i].getName()==path[0])
return this.nodes[i];}
return null;}
var childName=path.shift();for(var i=0;i<this.nodes.length;i++)
{if(this.nodes[i].getName()==childName&&this.nodes[i].findChild)
return this.nodes[i].findChild(path);}
return null;}});Jx.Tree=new Class({Extends:Jx.TreeFolder,Implements:[Jx.Addable],Family:'Jx.Tree',initialize:function(options){this.parent(options);this.subDomObj=new Element('ul',{'class':'jxTreeRoot'});this.nodes=[];this.isOpen=true;this.addable=this.subDomObj;if(this.options.parent){this.addTo(this.options.parent);}},finalize:function(){this.clear();this.subDomObj.parentNode.removeChild(this.subDomObj);},clear:function(){for(var i=this.nodes.length-1;i>=0;i--){this.subDomObj.removeChild(this.nodes[i].domObj);this.nodes[i].finalize();this.nodes.pop();}},update:function(shouldDescend){var bLast=true;if(this.subDomObj)
{if(bLast){this.subDomObj.removeClass('jxTreeNest');}else{this.subDomObj.addClass('jxTreeNest');}}
if(this.nodes&&shouldDescend){this.nodes.each(function(n){n.update(false);});}},append:function(node){node.owner=this;this.nodes.push(node);this.subDomObj.appendChild(node.domObj);this.update(true);return this;}});
