
var MochaUI=new Hash({options:new Hash({useEffects:true}),Columns:{instances:new Hash()},Panels:{instances:new Hash()},Windows:{instances:new Hash(),indexLevel:100,windowIDCount:0,windowsVisible:true},ieSupport:'excanvas',focusingWindow:'false',updateContent:function(updateOptions){var options={'element':null,'childElement':null,'title':null,'content':null,'loadMethod':null,'url':null,'padding':null};$extend(options,updateOptions);if(!options.element)return;var element=options.element;if(MochaUI.Windows.instances.get(element.id)){var recipient='window';var currentInstance=MochaUI.Windows.instances.get(element.id);var spinnerEl=currentInstance.spinnerEl;if(options.title){currentInstance.titleEl.set('html',options.title);}}
else{var recipient='panel';var currentInstance=MochaUI.Panels.instances.get(element.id);if(options.title){currentInstance.titleEl.set('html',options.title);}}
var contentEl=currentInstance.contentEl;if(options.childElement!=null){var contentContainer=options.childElement;}
else{var contentContainer=currentInstance.contentEl;}
var loadMethod=options.loadMethod!=null?options.loadMethod:currentInstance.options.loadMethod;if(contentContainer==currentInstance.contentEl){currentInstance.contentWrapperEl.setStyles({'overflow':currentInstance.options.scrollbars==true&&loadMethod!='iframe'?'auto':'hidden'});}
var contentWrapperEl=currentInstance.contentWrapperEl;if(options.padding!=null){contentEl.setStyles({'padding-top':options.padding.top,'padding-bottom':options.padding.bottom,'padding-left':options.padding.left,'padding-right':options.padding.right});}
if(contentContainer==contentEl){contentEl.empty();}
switch(loadMethod){case'xhr':new Request.HTML({url:options.url,update:contentContainer,evalScripts:currentInstance.options.evalScripts,evalResponse:currentInstance.options.evalResponse,onRequest:function(){if(recipient=='window'&&contentContainer==contentEl){currentInstance.showSpinner(spinnerEl);}
else if(recipient=='panel'&&contentContainer==contentEl&&$('spinner')){$('spinner').setStyle('visibility','visible');}}.bind(this),onFailure:function(){if(contentContainer==contentEl){contentContainer.set('html','<p><strong>Error Loading XMLHttpRequest</strong></p>');if(recipient=='window'){currentInstance.hideSpinner(spinnerEl);}
else if(recipient=='panel'&&$('spinner')){$('spinner').setStyle('visibility','hidden');}}}.bind(this),onException:function(){}.bind(this),onSuccess:function(){if(contentContainer==contentEl){if(recipient=='window'){currentInstance.hideSpinner(spinnerEl);}
else if(recipient=='panel'&&$('spinner')){$('spinner').setStyle('visibility','hidden');}
currentInstance.fireEvent('onContentLoaded',element);}}.bind(this),onComplete:function(){}.bind(this)}).get();break;case'iframe':if(currentInstance.options.contentURL==''||contentContainer!=contentEl){break;}
currentInstance.iframeEl=new Element('iframe',{'id':currentInstance.options.id+'_iframe','name':currentInstance.options.id+'_iframe','class':'mochaIframe','src':options.url,'marginwidth':0,'marginheight':0,'frameBorder':0,'scrolling':'auto','styles':{'height':contentWrapperEl.offsetHeight-contentWrapperEl.getStyle('border-top').toInt()-contentWrapperEl.getStyle('border-bottom').toInt(),'width':currentInstance.panelEl?contentWrapperEl.offsetWidth-contentWrapperEl.getStyle('border-left').toInt()-contentWrapperEl.getStyle('border-right').toInt():'100%'}}).injectInside(contentEl);currentInstance.iframeEl.addEvent('load',function(e){if(recipient=='window'){currentInstance.hideSpinner(spinnerEl);}
else if(recipient=='panel'&&contentContainer==contentEl&&$('spinner')){$('spinner').setStyle('visibility','hidden');}
currentInstance.fireEvent('onContentLoaded',element);}.bind(this));if(recipient=='window'){currentInstance.showSpinner(spinnerEl);}
else if(recipient=='panel'&&contentContainer==contentEl&&$('spinner')){$('spinner').setStyle('visibility','visible');}
break;case'html':default:var elementTypes=new Array('element','textnode','whitespace','collection');if(elementTypes.contains($type(options.content))){options.content.inject(contentContainer);}else{contentContainer.set('html',options.content);}
currentInstance.fireEvent('onContentLoaded',element);break;}},reloadIframe:function(iframe){if(Browser.Engine.gecko){$(iframe).src=$(iframe).src;}
else{top.frames[iframe].location.reload(true);}},collapseToggle:function(windowEl){var instances=MochaUI.Windows.instances;var currentInstance=instances.get(windowEl.id);var handles=currentInstance.windowEl.getElements('.handle');if(currentInstance.isMaximized==true)return;if(currentInstance.isCollapsed==false){currentInstance.isCollapsed=true;handles.setStyle('display','none');if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','hidden');}
currentInstance.contentBorderEl.setStyles({visibility:'hidden',position:'absolute',top:-10000,left:-10000});if(currentInstance.toolbarWrapperEl){currentInstance.toolbarWrapperEl.setStyles({visibility:'hidden',position:'absolute',top:-10000,left:-10000});}
currentInstance.drawWindowCollapsed(windowEl);}
else{currentInstance.isCollapsed=false;currentInstance.drawWindow(windowEl);currentInstance.contentBorderEl.setStyles({visibility:'visible',position:null,top:null,left:null});if(currentInstance.toolbarWrapperEl){currentInstance.toolbarWrapperEl.setStyles({visibility:'visible',position:null,top:null,left:null});}
if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
handles.setStyle('display','block');}},closeWindow:function(windowEl){var instances=MochaUI.Windows.instances;var currentInstance=instances.get(windowEl.id);if(!currentInstance)
return;if(windowEl!=$(windowEl)||currentInstance.isClosing)return;currentInstance.isClosing=true;currentInstance.fireEvent('onClose',windowEl);if(currentInstance.check)currentInstance.check.destroy();if((currentInstance.options.type=='modal'||currentInstance.options.type=='modal2')&&Browser.Engine.trident4){$('modalFix').setStyle('display','none');}
if(MochaUI.options.useEffects==false){if(currentInstance.options.type=='modal'||currentInstance.options.type=='modal2'){$('modalOverlay').setStyle('opacity',0);}
MochaUI.closingJobs(windowEl);return true;}
else{if(Browser.Engine.trident)currentInstance.drawWindow(windowEl,false);if(currentInstance.options.type=='modal'||currentInstance.options.type=='modal2'){MochaUI.Modal.modalOverlayCloseMorph.start({'opacity':0});}
var closeMorph=new Fx.Morph(windowEl,{duration:120,onComplete:function(){MochaUI.closingJobs(windowEl);return true;}.bind(this)});closeMorph.start({'opacity':.4});}},closingJobs:function(windowEl){var instances=MochaUI.Windows.instances;var currentInstance=instances.get(windowEl.id);windowEl.setStyle('visibility','hidden');windowEl.destroy();currentInstance.fireEvent('onCloseComplete');if(currentInstance.options.type!='notification'){var newFocus=this.getWindowWithHighestZindex();this.focusWindow(newFocus);}
instances.erase(currentInstance.options.id);if(this.loadingWorkspace==true){this.windowUnload();}
if(MochaUI.Dock&&$(MochaUI.options.dock)&&currentInstance.options.type=='window'){var currentButton=$(currentInstance.options.id+'_dockTab');if(currentButton!=null){MochaUI.Dock.dockSortables.removeItems(currentButton).destroy();}
MochaUI.Desktop.setDesktopSize();}},closeAll:function(){$$('div.mocha').each(function(windowEl){this.closeWindow(windowEl);}.bind(this));},toggleWindowVisibility:function(){MochaUI.Windows.instances.each(function(instance){if(instance.options.type=='modal'||instance.options.type=='modal2'||instance.isMinimized==true)return;var id=$(instance.options.id);if(id.getStyle('visibility')=='visible'){if(instance.iframe){instance.iframeEl.setStyle('visibility','hidden');}
if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle('visibility','hidden');}
instance.contentBorderEl.setStyle('visibility','hidden');id.setStyle('visibility','hidden');MochaUI.Windows.windowsVisible=false;}
else{id.setStyle('visibility','visible');instance.contentBorderEl.setStyle('visibility','visible');if(instance.iframe){instance.iframeEl.setStyle('visibility','visible');}
if(instance.toolbarEl){instance.toolbarWrapperEl.setStyle('visibility','visible');}
MochaUI.Windows.windowsVisible=true;}}.bind(this));},focusWindow:function(windowEl,fireEvent){MochaUI.focusingWindow='true';var windowClicked=function(){MochaUI.focusingWindow='false';};windowClicked.delay(170,this);if($$('.mocha').length==0)return;if(windowEl!=$(windowEl)||windowEl.hasClass('isFocused'))return;var instances=MochaUI.Windows.instances;var currentInstance=instances.get(windowEl.id);if(currentInstance.options.type=='notification')return;MochaUI.Windows.indexLevel+=2;windowEl.setStyle('zIndex',MochaUI.Windows.indexLevel);$('windowUnderlay').setStyle('zIndex',MochaUI.Windows.indexLevel-1).inject($(windowEl),'after');instances.each(function(instance){if(instance.windowEl.hasClass('isFocused')){instance.fireEvent('onBlur',instance.windowEl);}
instance.windowEl.removeClass('isFocused');});if(MochaUI.Dock&&$(MochaUI.options.dock)&&currentInstance.options.type=='window'){MochaUI.Dock.makeActiveTab();}
currentInstance.windowEl.addClass('isFocused');if(fireEvent!=false){currentInstance.fireEvent('onFocus',windowEl);}},getWindowWithHighestZindex:function(){this.highestZindex=0;$$('div.mocha').each(function(element){this.zIndex=element.getStyle('zIndex');if(this.zIndex>=this.highestZindex){this.highestZindex=this.zIndex;}}.bind(this));$$('div.mocha').each(function(element){if(element.getStyle('zIndex')==this.highestZindex){this.windowWithHighestZindex=element;}}.bind(this));return this.windowWithHighestZindex;},blurAll:function(){if(MochaUI.focusingWindow=='false'){$$('.mocha').each(function(windowEl){var instances=MochaUI.Windows.instances;var currentInstance=instances.get(windowEl.id);if(currentInstance.options.type!='modal'&&currentInstance.options.type!='modal2'){windowEl.removeClass('isFocused');}});$$('div.dockTab').removeClass('activeDockTab');}},roundedRect:function(ctx,x,y,width,height,radius,rgb,a){ctx.fillStyle='rgba('+rgb.join(',')+','+a+')';ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill();},triangle:function(ctx,x,y,width,height,rgb,a){ctx.beginPath();ctx.moveTo(x+width,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.closePath();ctx.fillStyle='rgba('+rgb.join(',')+','+a+')';ctx.fill();},circle:function(ctx,x,y,diameter,rgb,a){ctx.beginPath();ctx.moveTo(x,y);ctx.arc(x,y,diameter,0,Math.PI*2,true);ctx.fillStyle='rgba('+rgb.join(',')+','+a+')';ctx.fill();},centerWindow:function(windowEl){if(!windowEl){MochaUI.Windows.instances.each(function(instance){if(instance.windowEl.hasClass('isFocused')){windowEl=instance.windowEl;}});}
var currentInstance=MochaUI.Windows.instances.get(windowEl.id);var options=currentInstance.options;var dimensions=options.container.getCoordinates();var windowPosTop=(dimensions.height*.5)-((options.height+currentInstance.headerFooterShadow)*.5);if(windowPosTop<0){windowPosTop=0;}
var windowPosLeft=(dimensions.width*.5)-(options.width*.5);if(windowPosLeft<0){windowPosLeft=0;}
if(MochaUI.options.useEffects==true){currentInstance.morph.start({'top':windowPosTop,'left':windowPosLeft});}
else{windowEl.setStyles({'top':windowPosTop,'left':windowPosLeft});}},notification:function(message){new MochaUI.Window({loadMethod:'html',closeAfter:2500,type:'notification',addClass:'notification',content:message,width:300,height:40,y:50,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,bodyBgColor:[255,255,255]});},dynamicResize:function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);var contentWrapperEl=currentInstance.contentWrapperEl;var contentEl=currentInstance.contentEl;contentWrapperEl.setStyle('height',contentEl.offsetHeight);contentWrapperEl.setStyle('width',contentEl.offsetWidth);currentInstance.drawWindow(windowEl);},garbageCleanUp:function(){$$('div.mocha').each(function(el){el.destroy();}.bind(this));},underlayInitialize:function(){var windowUnderlay=new Element('div',{'id':'windowUnderlay','styles':{'height':parent.getCoordinates().height,'opacity':.01,'display':'none'}}).inject(document.body);},setUnderlaySize:function(){try
{$('windowUnderlay').setStyle('height',parent.getCoordinates().height);}
catch(e){}}});function fixPNG(myImage){if(Browser.Engine.trident4&&document.body.filters){var imgID=(myImage.id)?"id='"+myImage.id+"' ":"";var imgClass=(myImage.className)?"class='"+myImage.className+"' ":"";var imgTitle=(myImage.title)?"title='"+myImage.title+"' ":"title='"+myImage.alt+"' ";var imgStyle="display:inline-block;"+myImage.style.cssText;var strNewHTML="<span "+imgID+imgClass+imgTitle
+" style=\""+"width:"+myImage.width
+"px; height:"+myImage.height
+"px;"+imgStyle+";"
+"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
+"(src=\'"+myImage.src+"\', sizingMethod='scale');\"></span>";myImage.outerHTML=strNewHTML;}}
document.addEvent('keydown',function(event){if(event.key=='q'&&event.control&&event.alt){MochaUI.toggleWindowVisibility();}});document.addEvent('mousedown',function(event){MochaUI.blurAll.delay(50);});document.addEvent('domready',function(){MochaUI.underlayInitialize();});window.addEvent('resize',function(){MochaUI.setUnderlaySize();});MochaUI.Windows.windowOptions={id:null,title:'New Window',icon:false,type:'window',loadMethod:'html',contentURL:'pages/lipsum.html',closeAfter:false,evalScripts:true,evalResponse:false,content:'Window content',toolbar:false,toolbarPosition:'top',toolbarHeight:29,toolbarURL:'pages/lipsum.html',toolbarContent:'',toolbar2:false,toolbar2Position:'bottom',toolbar2Height:29,toolbar2URL:'pages/lipsum.html',toolbar2Content:'',container:null,restrict:true,shape:'box',collapsible:true,minimizable:true,maximizable:true,closable:true,draggable:null,draggableGrid:false,draggableLimit:false,draggableSnap:false,resizable:null,resizeLimit:{'x':[250,2500],'y':[125,2000]},addClass:'',width:300,height:125,x:null,y:null,scrollbars:true,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,shadowOffset:{'x':0,'y':1},controlsOffset:{'right':6,'top':6},useCanvas:true,useCanvasControls:true,useSpinner:true,headerHeight:25,footerHeight:25,cornerRadius:8,contentBgColor:'#fff',headerStartColor:[250,250,250],headerStopColor:[229,229,229],bodyBgColor:[229,229,229],minimizeBgColor:[255,255,255],minimizeColor:[0,0,0],maximizeBgColor:[255,255,255],maximizeColor:[0,0,0],closeBgColor:[255,255,255],closeColor:[0,0,0],resizableColor:[254,254,254],onBeforeBuild:$empty,onContentLoaded:$empty,onFocus:$empty,onBlur:$empty,onResize:$empty,onMinimize:$empty,onMaximize:$empty,onRestore:$empty,onClose:$empty,onCloseComplete:$empty};MochaUI.Window=new Class({options:MochaUI.Windows.windowOptions,initialize:function(options){this.setOptions(options);var options=this.options;$extend(this,{mochaControlsWidth:0,minimizebuttonX:0,maximizebuttonX:0,closebuttonX:0,headerFooterShadow:options.headerHeight+options.footerHeight+(options.shadowBlur*2),oldTop:0,oldLeft:0,isMaximized:false,isMinimized:false,isCollapsed:false,timestamp:$time()});if(options.type!='window'){options.container=document.body;options.minimizable=false;}
if(!options.container){options.container=MochaUI.Desktop.desktop?MochaUI.Desktop.desktop:document.body;}
if(options.resizable==null){if(options.type!='window'||options.shape=='gauge'){options.resizable=false;}
else{options.resizable=true;}}
if(options.draggable==null){if(options.type!='window'){options.draggable=false;}
else{options.draggable=true;}}
if(options.shape=='gauge'||options.type=='notification'){options.collapsible=false;options.maximizable=false;options.contentBgColor='transparent';options.scrollbars=false;options.footerHeight=0;}
if(options.type=='notification'){options.closable=false;options.headerHeight=0;}
if(MochaUI.Dock&&$(MochaUI.options.dock)){if(MochaUI.Dock.dock&&options.type!='modal'&&options.type!='modal2'){options.minimizable=options.minimizable;}}
else{options.minimizable=false;}
options.maximizable=MochaUI.Desktop.desktop&&options.maximizable&&options.type!='modal'&&options.type!='modal2';if(this.options.type=='modal2'){this.options.shadowBlur=0;this.options.shadowOffset={'x':0,'y':0};this.options.useSpinner=false;this.options.useCanvas=false;this.options.footerHeight=0;this.options.headerHeight=0;}
if(options.id==null){options.id='win'+(++MochaUI.Windows.windowIDCount);}
this.windowEl=$(options.id);this.newWindow();return this;},saveValues:function(){var coordinates=this.windowEl.getCoordinates();this.options.x=coordinates.left.toInt();this.options.y=coordinates.top.toInt();},newWindow:function(properties){var instances=MochaUI.Windows.instances;var instanceID=instances.get(this.options.id);if(instanceID){var currentInstance=instanceID;}
if(this.windowEl&&!this.isClosing){if(currentInstance.isMinimized){MochaUI.Dock.restoreMinimized(this.windowEl);}
if(currentInstance.isCollapsed){MochaUI.collapseToggle(this.windowEl);setTimeout(MochaUI.focusWindow.pass(this.windowEl,this),10);}
else{var coordinates=document.getCoordinates();if(this.windowEl.getStyle('left').toInt()>coordinates.width||this.windowEl.getStyle('top').toInt()>coordinates.height){MochaUI.centerWindow(this.windowEl);}
setTimeout(MochaUI.focusWindow.pass(this.windowEl,this),10);}
return;}
else{instances.set(this.options.id,this);}
this.isClosing=false;this.fireEvent('onBeforeBuild');MochaUI.Windows.indexLevel++;this.windowEl=new Element('div',{'class':'mocha','id':this.options.id,'styles':{'width':this.options.width,'height':this.options.height,'display':'block','opacity':0,'zIndex':MochaUI.Windows.indexLevel+=2}});this.windowEl.addClass(this.options.addClass);if(this.options.type=='modal2'){this.windowEl.addClass('modal2');}
if(Browser.Engine.trident&&this.options.shape=='gauge'){this.windowEl.setStyle('background','url(../images/spacer.gif)');}
if((this.options.type=='modal'||this.options.type=='modal2')&&Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){this.windowEl.setStyle('position','fixed');}}}
if(this.options.loadMethod=='iframe'){this.options.padding={top:0,right:0,bottom:0,left:0};}
this.insertWindowElements();this.titleEl.set('html',this.options.title);this.contentWrapperEl.setStyles({'overflow':'hidden','background':this.options.contentBgColor});this.contentEl.setStyles({'padding-top':this.options.padding.top,'padding-bottom':this.options.padding.bottom,'padding-left':this.options.padding.left,'padding-right':this.options.padding.right});if(this.options.shape=='gauge'){if(this.options.useCanvasControls){this.canvasControlsEl.setStyle('display','none');}
else{this.controlsEl.setStyle('display','none');}
this.windowEl.addEvent('mouseover',function(){this.mouseover=true;var showControls=function(){if(this.mouseover!=false){if(this.options.useCanvasControls){this.canvasControlsEl.setStyle('display','block');}
else{this.controlsEl.setStyle('display','block');}
this.canvasHeaderEl.setStyle('display','block');this.titleEl.setStyle('display','block');}};showControls.delay(150,this);}.bind(this));this.windowEl.addEvent('mouseleave',function(){this.mouseover=false;if(this.options.useCanvasControls){this.canvasControlsEl.setStyle('display','none');}
else{this.controlsEl.setStyle('display','none');}
this.canvasHeaderEl.setStyle('display','none');this.titleEl.setStyle('display','none');}.bind(this));}
this.windowEl.injectInside(this.options.container);if(this.options.type!='notification'){this.setMochaControlsWidth();}
MochaUI.updateContent({'element':this.windowEl,'content':this.options.content,'url':this.options.contentURL});if(this.options.toolbar==true){MochaUI.updateContent({'element':this.windowEl,'childElement':this.toolbarEl,'content':this.options.toolbarContent,'loadMethod':'xhr','url':this.options.toolbarURL});}
if(this.options.toolbar2==true){MochaUI.updateContent({'element':this.windowEl,'childElement':this.toolbar2El,'content':this.options.toolbar2Content,'loadMethod':'xhr','url':this.options.toolbar2URL});}
this.drawWindow(this.windowEl);this.attachDraggable(this.windowEl);this.attachResizable(this.windowEl);this.setupEvents(this.windowEl);if(this.options.resizable){this.adjustHandles();}
if(this.options.container==document.body||this.options.container==MochaUI.Desktop.desktop){var dimensions=window.getSize();}
else{var dimensions=$(this.options.container).getSize();}
if(!this.options.y){var y=(dimensions.y*.5)-((this.options.height+this.headerFooterShadow+this.windowEl.getStyle('border-top').toInt()+this.windowEl.getStyle('border-bottom').toInt())*.5);}
else{var y=this.options.y-this.options.shadowBlur;}
if(!this.options.x){var x=(dimensions.x*.5)-(this.options.width*.5);}
else{var x=this.options.x-this.options.shadowBlur;}
this.windowEl.setStyles({'top':y,'left':x});if(MochaUI.options.useEffects==true){if(Browser.Engine.trident){this.drawWindow(this.windowEl,false);}
this.opacityMorph=new Fx.Morph(this.windowEl,{'duration':350,onComplete:function(){if(Browser.Engine.trident){this.drawWindow(this.windowEl);}}.bind(this)});}
if(this.options.type=='modal'||this.options.type=='modal2'){MochaUI.currentModal=this.windowEl;if(Browser.Engine.trident4){$('modalFix').setStyle('display','block');}
$('modalOverlay').setStyle('display','block');if(MochaUI.options.useEffects==false){$('modalOverlay').setStyle('opacity',.6);this.windowEl.setStyles({'zIndex':11000,'opacity':1});}
else{MochaUI.Modal.modalOverlayCloseMorph.cancel();MochaUI.Modal.modalOverlayOpenMorph.start({'opacity':.6});this.windowEl.setStyles({'zIndex':11000});this.opacityMorph.start({'opacity':1});}
$$('.dockTab').removeClass('activeDockTab');$$('.mocha').removeClass('isFocused');this.windowEl.addClass('isFocused');}
else if(MochaUI.options.useEffects==false){this.windowEl.setStyle('opacity',1);setTimeout(MochaUI.focusWindow.pass(this.windowEl,this),10);}
else{this.opacityMorph.start({'opacity':1});setTimeout(MochaUI.focusWindow.pass(this.windowEl,this),10);}
this.morph=new Fx.Morph(this.windowEl,{'duration':200});if($(this.windowEl.id+'LinkCheck')){this.check=new Element('div',{'class':'check','id':this.options.id+'_check'}).inject(this.windowEl.id+'LinkCheck');}
if(this.options.closeAfter!=false){MochaUI.closeWindow.delay(this.options.closeAfter,this,this.windowEl);}
if(MochaUI.Dock&&$(MochaUI.options.dock)&&this.options.type=='window'){MochaUI.Dock.createDockTab(this.windowEl);}},setupEvents:function(windowEl){if(this.closeButtonEl){this.closeButtonEl.addEvent('click',function(e){new Event(e).stop();MochaUI.closeWindow(windowEl);}.bind(this));}
if(this.options.type=='window'){windowEl.addEvent('mousedown',function(){MochaUI.focusWindow(windowEl);}.bind(this));}
if(this.minimizeButtonEl){this.minimizeButtonEl.addEvent('click',function(e){new Event(e).stop();MochaUI.Dock.minimizeWindow(windowEl);}.bind(this));}
if(this.maximizeButtonEl){this.maximizeButtonEl.addEvent('click',function(e){new Event(e).stop();if(this.isMaximized){MochaUI.Desktop.restoreWindow(windowEl);}else{MochaUI.Desktop.maximizeWindow(windowEl);}}.bind(this));}
if(this.options.collapsible==true){this.titleEl.addEvent('selectstart',function(e){e=new Event(e).stop();}.bind(this));this.titleBarEl.addEvent('mousedown',function(e){if(Browser.Engine.trident){this.titleEl.setCapture();}}.bind(this));this.titleBarEl.addEvent('mouseup',function(e){if(Browser.Engine.trident){this.titleEl.releaseCapture();}}.bind(this));this.titleBarEl.addEvent('dblclick',function(e){e=new Event(e).stop();MochaUI.collapseToggle(this.windowEl);}.bind(this));}},attachDraggable:function(windowEl){if(!this.options.draggable)return;this.windowDrag=new Drag.Move(windowEl,{handle:this.titleBarEl,container:this.options.restrict==true?$(this.options.container):false,grid:this.options.draggableGrid,limit:this.options.draggableLimit,snap:this.options.draggableSnap,onStart:function(){if(this.options.type!='modal'&&this.options.type!='modal2'){MochaUI.focusWindow(windowEl);$('windowUnderlay').setStyle('display','block');}
if(this.iframeEl)
this.iframeEl.setStyle('visibility','hidden');}.bind(this),onComplete:function(){if(this.options.type!='modal'&&this.options.type!='modal2'){$('windowUnderlay').setStyle('display','none');}
if(this.iframeEl){this.iframeEl.setStyle('visibility','visible');}
this.saveValues();}.bind(this)});},attachResizable:function(windowEl){if(!this.options.resizable)return;this.resizable1=this.windowEl.makeResizable({handle:[this.n,this.ne,this.nw],limit:{y:[function(){return this.windowEl.getStyle('top').toInt()+this.windowEl.getStyle('height').toInt()-this.options.resizeLimit.y[1];}.bind(this),function(){return this.windowEl.getStyle('top').toInt()+this.windowEl.getStyle('height').toInt()-this.options.resizeLimit.y[0];}.bind(this)]},modifiers:{x:false,y:'top'},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.y2=this.coords.top.toInt()+this.contentWrapperEl.offsetHeight;}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle('height',this.y2-this.coords.top.toInt());this.drawWindow(windowEl);this.adjustHandles();}.bind(this),onComplete:function(){this.resizeOnComplete();}.bind(this)});this.resizable2=this.contentWrapperEl.makeResizable({handle:[this.e,this.ne],limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)]},modifiers:{x:'width',y:false},onStart:function(){this.resizeOnStart();}.bind(this),onDrag:function(){this.drawWindow(windowEl);this.adjustHandles();}.bind(this),onComplete:function(){this.resizeOnComplete();}.bind(this)});this.resizable3=this.contentWrapperEl.makeResizable({container:this.options.restrict==true?$(this.options.container):false,handle:this.se,limit:{x:[this.options.resizeLimit.x[0]-(this.options.shadowBlur*2),this.options.resizeLimit.x[1]-(this.options.shadowBlur*2)],y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:'width',y:'height'},onStart:function(){this.resizeOnStart();}.bind(this),onDrag:function(){this.drawWindow(windowEl);this.adjustHandles();}.bind(this),onComplete:function(){this.resizeOnComplete();}.bind(this)});this.resizable4=this.contentWrapperEl.makeResizable({handle:[this.s,this.sw],limit:{y:[this.options.resizeLimit.y[0]-this.headerFooterShadow,this.options.resizeLimit.y[1]-this.headerFooterShadow]},modifiers:{x:false,y:'height'},onStart:function(){this.resizeOnStart();}.bind(this),onDrag:function(){this.drawWindow(windowEl);this.adjustHandles();}.bind(this),onComplete:function(){this.resizeOnComplete();}.bind(this)});this.resizable5=this.windowEl.makeResizable({handle:[this.w,this.sw,this.nw],limit:{x:[function(){return this.windowEl.getStyle('left').toInt()+this.windowEl.getStyle('width').toInt()-this.options.resizeLimit.x[1];}.bind(this),function(){return this.windowEl.getStyle('left').toInt()+this.windowEl.getStyle('width').toInt()-this.options.resizeLimit.x[0];}.bind(this)]},modifiers:{x:'left',y:false},onStart:function(){this.resizeOnStart();this.coords=this.contentWrapperEl.getCoordinates();this.x2=this.coords.left.toInt()+this.contentWrapperEl.offsetWidth;}.bind(this),onDrag:function(){this.coords=this.contentWrapperEl.getCoordinates();this.contentWrapperEl.setStyle('width',this.x2-this.coords.left.toInt());this.drawWindow(windowEl);this.adjustHandles();}.bind(this),onComplete:function(){this.resizeOnComplete();}.bind(this)});},resizeOnStart:function(){$('windowUnderlay').setStyle('display','block');if(this.iframeEl){this.iframeEl.setStyle('visibility','hidden');}},resizeOnComplete:function(){$('windowUnderlay').setStyle('display','none');if(this.iframeEl){this.iframeEl.setStyle('visibility','visible');}
this.fireEvent('onResize',this.windowEl);},adjustHandles:function(){var shadowBlur=this.options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;var top=shadowBlur-shadowOffset.y-1;var right=shadowBlur+shadowOffset.x-1;var bottom=shadowBlur+shadowOffset.y-1;var left=shadowBlur-shadowOffset.x-1;var coordinates=this.windowEl.getCoordinates();var width=coordinates.width-shadowBlur2x+2;var height=coordinates.height-shadowBlur2x+2;this.n.setStyles({'top':top,'left':left+10,'width':width-20});this.e.setStyles({'top':top+10,'right':right,'height':height-30});this.s.setStyles({'bottom':bottom,'left':left+10,'width':width-30});this.w.setStyles({'top':top+10,'left':left,'height':height-20});this.ne.setStyles({'top':top,'right':right});this.se.setStyles({'bottom':bottom,'right':right});this.sw.setStyles({'bottom':bottom,'left':left});this.nw.setStyles({'top':top,'left':left});},detachResizable:function(){this.resizable1.detach();this.resizable2.detach();this.resizable3.detach();this.resizable4.detach();this.resizable5.detach();this.windowEl.getElements('.handle').setStyle('display','none');},reattachResizable:function(){this.resizable1.attach();this.resizable2.attach();this.resizable3.attach();this.resizable4.attach();this.resizable5.attach();this.windowEl.getElements('.handle').setStyle('display','block');},insertWindowElements:function(){var options=this.options;var height=options.height;var width=options.width;var id=options.id;var cache={};if(Browser.Engine.trident4){cache.zIndexFixEl=new Element('iframe',{'id':id+'_zIndexFix','class':'zIndexFix','scrolling':'no','marginWidth':0,'marginHeight':0,'src':''}).inject(this.windowEl);}
cache.overlayEl=new Element('div',{'id':id+'_overlay','class':'mochaOverlay'}).inject(this.windowEl);cache.titleBarEl=new Element('div',{'id':id+'_titleBar','class':'mochaTitlebar','styles':{'cursor':options.draggable?'move':'default'}}).inject(cache.overlayEl,'top');cache.titleEl=new Element('h3',{'id':id+'_title','class':'mochaTitle'}).inject(cache.titleBarEl);if(options.icon!=false){cache.titleBarEl.setStyles({'padding-left':15,'background':'url('+options.icon+') 5px 5px no-repeat'});}
cache.contentBorderEl=new Element('div',{'id':id+'_contentBorder','class':'mochaContentBorder'}).inject(cache.overlayEl);if(options.toolbar){cache.toolbarWrapperEl=new Element('div',{'id':id+'_toolbarWrapper','class':'mochaToolbarWrapper'}).inject(cache.contentBorderEl,options.toolbarPosition=='bottom'?'after':'before');if(options.toolbarPosition=='bottom'){cache.toolbarWrapperEl.addClass('bottom');}
cache.toolbarEl=new Element('div',{'id':id+'_toolbar','class':'mochaToolbar'}).inject(cache.toolbarWrapperEl);}
if(options.toolbar2){cache.toolbar2WrapperEl=new Element('div',{'id':id+'_toolbar2Wrapper','class':'mochaToolbarWrapper'}).inject(cache.contentBorderEl,options.toolbar2Position=='bottom'?'after':'before');if(options.toolbar2Position=='bottom'){cache.toolbar2WrapperEl.addClass('bottom');}
cache.toolbar2El=new Element('div',{'id':id+'_toolbar2','class':'mochaToolbar'}).inject(cache.toolbar2WrapperEl);}
cache.contentWrapperEl=new Element('div',{'id':id+'_contentWrapper','class':'mochaContentWrapper','styles':{'width':width+'px','height':height+'px'}}).inject(cache.contentBorderEl);if(this.options.shape=='gauge'){cache.contentBorderEl.setStyle('borderWidth',0);}
cache.contentEl=new Element('div',{'id':id+'_content','class':'mochaContent'}).inject(cache.contentWrapperEl);if(this.options.useCanvas==true){cache.canvasEl=new Element('canvas',{'id':id+'_canvas','class':'mochaCanvas','width':1,'height':1}).inject(this.windowEl);if(Browser.Engine.trident&&MochaUI.ieSupport=='excanvas'){G_vmlCanvasManager.initElement(cache.canvasEl);cache.canvasEl=this.windowEl.getElement('.mochaCanvas');}}
cache.controlsEl=new Element('div',{'id':id+'_controls','class':'mochaControls'}).inject(cache.overlayEl,'after');if(options.useCanvasControls==true){cache.canvasControlsEl=new Element('canvas',{'id':id+'_canvasControls','class':'mochaCanvasControls','width':14,'height':14}).inject(this.windowEl);if(Browser.Engine.trident&&MochaUI.ieSupport=='excanvas'){G_vmlCanvasManager.initElement(cache.canvasControlsEl);cache.canvasControlsEl=this.windowEl.getElement('.mochaCanvasControls');}}
if(options.closable){cache.closeButtonEl=new Element('div',{'id':id+'_closeButton','class':'mochaCloseButton','title':'Close'}).inject(cache.controlsEl);if(options.useCanvasControls==true){cache.closeButtonEl.setStyle('background','none');}}
if(options.maximizable){cache.maximizeButtonEl=new Element('div',{'id':id+'_maximizeButton','class':'mochaMaximizeButton','title':'Maximize'}).inject(cache.controlsEl);if(options.useCanvasControls==true){cache.maximizeButtonEl.setStyle('background','none');}}
if(options.minimizable){cache.minimizeButtonEl=new Element('div',{'id':id+'_minimizeButton','class':'mochaMinimizeButton','title':'Minimize'}).inject(cache.controlsEl);if(options.useCanvasControls==true){cache.minimizeButtonEl.setStyle('background','none');}}
if(options.useSpinner==true&&options.shape!='gauge'&&options.type!='notification'){cache.spinnerEl=new Element('div',{'id':id+'_spinner','class':'mochaSpinner','width':16,'height':16}).inject(this.windowEl,'bottom');}
if(this.options.shape=='gauge'){cache.canvasHeaderEl=new Element('canvas',{'id':id+'_canvasHeader','class':'mochaCanvasHeader','width':this.options.width,'height':26}).inject(this.windowEl,'bottom');if(Browser.Engine.trident&&MochaUI.ieSupport=='excanvas'){G_vmlCanvasManager.initElement(cache.canvasHeaderEl);cache.canvasHeaderEl=this.windowEl.getElement('.mochaCanvasHeader');}}
if(Browser.Engine.trident){cache.overlayEl.setStyle('zIndex',2);}
if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){cache.overlayEl.setStyle('overflow','auto');}}}
if(options.resizable){cache.n=new Element('div',{'id':id+'_resizeHandle_n','class':'handle','styles':{'top':0,'left':10,'cursor':'n-resize'}}).inject(cache.overlayEl,'after');cache.ne=new Element('div',{'id':id+'_resizeHandle_ne','class':'handle corner','styles':{'top':0,'right':0,'cursor':'ne-resize'}}).inject(cache.overlayEl,'after');cache.e=new Element('div',{'id':id+'_resizeHandle_e','class':'handle','styles':{'top':10,'right':0,'cursor':'e-resize'}}).inject(cache.overlayEl,'after');cache.se=new Element('div',{'id':id+'_resizeHandle_se','class':'handle cornerSE','styles':{'bottom':0,'right':0,'cursor':'se-resize'}}).inject(cache.overlayEl,'after');cache.s=new Element('div',{'id':id+'_resizeHandle_s','class':'handle','styles':{'bottom':0,'left':10,'cursor':'s-resize'}}).inject(cache.overlayEl,'after');cache.sw=new Element('div',{'id':id+'_resizeHandle_sw','class':'handle corner','styles':{'bottom':0,'left':0,'cursor':'sw-resize'}}).inject(cache.overlayEl,'after');cache.w=new Element('div',{'id':id+'_resizeHandle_w','class':'handle','styles':{'top':10,'left':0,'cursor':'w-resize'}}).inject(cache.overlayEl,'after');cache.nw=new Element('div',{'id':id+'_resizeHandle_nw','class':'handle corner','styles':{'top':0,'left':0,'cursor':'nw-resize'}}).inject(cache.overlayEl,'after');}
$extend(this,cache);},drawWindow:function(windowEl,shadows){if(this.isCollapsed){this.drawWindowCollapsed(windowEl,shadows);return;}
var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=this.options.shadowOffset;this.overlayEl.setStyles({'width':this.contentWrapperEl.offsetWidth});if(this.iframeEl){this.iframeEl.setStyles({'height':this.contentWrapperEl.offsetHeight});}
var borderHeight=this.contentBorderEl.getStyle('border-top').toInt()+this.contentBorderEl.getStyle('border-bottom').toInt();var toolbarHeight=this.toolbarWrapperEl?this.toolbarWrapperEl.getStyle('height').toInt()+this.toolbarWrapperEl.getStyle('border-top').toInt():0;var toolbar2Height=this.toolbar2WrapperEl?this.toolbar2WrapperEl.getStyle('height').toInt()+this.toolbar2WrapperEl.getStyle('border-top').toInt():0;this.headerFooterShadow=options.headerHeight+options.footerHeight+shadowBlur2x;var height=this.contentWrapperEl.getStyle('height').toInt()+this.headerFooterShadow+toolbarHeight+toolbar2Height+borderHeight;var width=this.contentWrapperEl.getStyle('width').toInt()+shadowBlur2x;this.windowEl.setStyles({'height':height,'width':width});this.overlayEl.setStyles({'height':height,'top':shadowBlur-shadowOffset.y,'left':shadowBlur-shadowOffset.x});if(this.options.useCanvas==true){this.canvasEl.height=height;this.canvasEl.width=width;}
if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({'width':width,'height':height})}
this.titleBarEl.setStyles({'width':width-shadowBlur2x,'height':options.headerHeight});if(options.useSpinner==true&&options.shape!='gauge'&&options.type!='notification'){this.spinnerEl.setStyles({'left':shadowBlur-shadowOffset.x+3,'bottom':shadowBlur+shadowOffset.y+4});}
if(this.options.useCanvas!=false){var ctx=this.canvasEl.getContext('2d');ctx.clearRect(0,0,width,height);switch(options.shape){case'box':this.drawBox(ctx,width,height,shadowBlur,shadowOffset,shadows);break;case'gauge':this.drawGauge(ctx,width,height,shadowBlur,shadowOffset,shadows);break;}
if(options.resizable){MochaUI.triangle(ctx,width-(shadowBlur+shadowOffset.x+17),height-(shadowBlur+shadowOffset.y+18),11,11,options.resizableColor,1.0);}
if(Browser.Engine.trident){MochaUI.triangle(ctx,0,0,10,10,options.resizableColor,0);}}
if(options.type!='notification'&&options.useCanvasControls==true){this.drawControls(width,height,shadows);}},drawWindowCollapsed:function(windowEl,shadows){var options=this.options;var shadowBlur=options.shadowBlur;var shadowBlur2x=shadowBlur*2;var shadowOffset=options.shadowOffset;var headerShadow=options.headerHeight+shadowBlur2x+2;var height=headerShadow;var width=this.contentWrapperEl.getStyle('width').toInt()+shadowBlur2x;this.windowEl.setStyle('height',height);this.overlayEl.setStyles({'height':height,'top':shadowBlur-shadowOffset.y,'left':shadowBlur-shadowOffset.x});this.canvasEl.height=height;this.canvasEl.width=width;if(Browser.Engine.trident4){this.zIndexFixEl.setStyles({'width':width,'height':height});}
this.windowEl.setStyle('width',width);this.overlayEl.setStyle('width',width);this.titleBarEl.setStyles({'width':width-shadowBlur2x,'height':options.headerHeight});if(this.options.useCanvas!=false){var ctx=this.canvasEl.getContext('2d');ctx.clearRect(0,0,width,height);this.drawBoxCollapsed(ctx,width,height,shadowBlur,shadowOffset,shadows);if(options.useCanvasControls==true){this.drawControls(width,height,shadows);}
if(Browser.Engine.trident){MochaUI.triangle(ctx,0,0,10,10,options.resizableColor,0);}}},drawControls:function(width,height,shadows){var options=this.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var controlsOffset=options.controlsOffset;this.controlsEl.setStyles({'right':shadowBlur+shadowOffset.x+controlsOffset.right,'top':shadowBlur-shadowOffset.y+controlsOffset.top});this.canvasControlsEl.setStyles({'right':shadowBlur+shadowOffset.x+controlsOffset.right,'top':shadowBlur-shadowOffset.y+controlsOffset.top});this.closebuttonX=options.closable?this.mochaControlsWidth-7:this.mochaControlsWidth+12;this.maximizebuttonX=this.closebuttonX-(options.maximizable?19:0);this.minimizebuttonX=this.maximizebuttonX-(options.minimizable?19:0);var ctx2=this.canvasControlsEl.getContext('2d');ctx2.clearRect(0,0,100,100);if(this.options.closable){this.closebutton(ctx2,this.closebuttonX,7,options.closeBgColor,1.0,options.closeColor,1.0);}
if(this.options.maximizable){this.maximizebutton(ctx2,this.maximizebuttonX,7,options.maximizeBgColor,1.0,options.maximizeColor,1.0);}
if(this.options.minimizable){this.minimizebutton(ctx2,this.minimizebuttonX,7,options.minimizeBgColor,1.0,options.minimizeColor,1.0);}},drawBox:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var shadowBlur2x=shadowBlur*2;var cornerRadius=this.options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MochaUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?.29:.065+(x*.01));}}
this.bodyRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,height-shadowBlur2x,cornerRadius,this.options.bodyBgColor);if(this.options.type!='notification'){this.topRoundedRect(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,this.options.headerHeight,cornerRadius,this.options.headerStartColor,this.options.headerStopColor);}},drawBoxCollapsed:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var shadowBlur2x=shadowBlur*2;var cornerRadius=options.cornerRadius;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MochaUI.roundedRect(ctx,shadowOffset.x+x,shadowOffset.y+x,width-(x*2)-shadowOffset.x,height-(x*2)-shadowOffset.y,cornerRadius+(shadowBlur-x),[0,0,0],x==shadowBlur?.3:.06+(x*.01));}}
this.topRoundedRect2(ctx,shadowBlur-shadowOffset.x,shadowBlur-shadowOffset.y,width-shadowBlur2x,options.headerHeight+2,cornerRadius,options.headerStartColor,options.headerStopColor);},drawGauge:function(ctx,width,height,shadowBlur,shadowOffset,shadows){var options=this.options;var radius=(width*.5)-(shadowBlur)+16;if(shadows!=false){for(var x=0;x<=shadowBlur;x++){MochaUI.circle(ctx,width*.5+shadowOffset.x,(height+options.headerHeight)*.5+shadowOffset.x,(width*.5)-(x*2)-shadowOffset.x,[0,0,0],x==shadowBlur?.75:.075+(x*.04));}}
MochaUI.circle(ctx,width*.5-shadowOffset.x,(height+options.headerHeight)*.5-shadowOffset.y,(width*.5)-shadowBlur,options.bodyBgColor,1);this.canvasHeaderEl.setStyles({'top':shadowBlur-shadowOffset.y,'left':shadowBlur-shadowOffset.x});var ctx=this.canvasHeaderEl.getContext('2d');ctx.clearRect(0,0,width,100);ctx.beginPath();ctx.lineWidth=24;ctx.lineCap='round';ctx.moveTo(13,13);ctx.lineTo(width-(shadowBlur*2)-13,13);ctx.strokeStyle='rgba(0, 0, 0, .65)';ctx.stroke();},bodyRoundedRect:function(ctx,x,y,width,height,radius,rgb){ctx.fillStyle='rgba('+rgb.join(',')+', 100)';ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill();},topRoundedRect:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){var lingrad=ctx.createLinearGradient(0,0,0,height);lingrad.addColorStop(0,'rgba('+headerStartColor.join(',')+', 1)');lingrad.addColorStop(1,'rgba('+headerStopColor.join(',')+', 1)');ctx.fillStyle=lingrad;ctx.beginPath();ctx.moveTo(x,y);ctx.lineTo(x,y+height);ctx.lineTo(x+width,y+height);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill();},topRoundedRect2:function(ctx,x,y,width,height,radius,headerStartColor,headerStopColor){var lingrad=ctx.createLinearGradient(0,this.options.shadowBlur-1,0,height+this.options.shadowBlur+3);lingrad.addColorStop(0,'rgba('+headerStartColor.join(',')+', 1)');lingrad.addColorStop(1,'rgba('+headerStopColor.join(',')+', 1)');ctx.fillStyle=lingrad;ctx.beginPath();ctx.moveTo(x,y+radius);ctx.lineTo(x,y+height-radius);ctx.quadraticCurveTo(x,y+height,x+radius,y+height);ctx.lineTo(x+width-radius,y+height);ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);ctx.lineTo(x+width,y+radius);ctx.quadraticCurveTo(x+width,y,x+width-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);ctx.fill();},maximizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.moveTo(x,y);ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle='rgba('+rgbBg.join(',')+','+aBg+')';ctx.fill();ctx.strokeStyle='rgba('+rgb.join(',')+','+a+')';ctx.beginPath();ctx.moveTo(x,y-4);ctx.lineTo(x,y+4);ctx.stroke();ctx.beginPath();ctx.moveTo(x-4,y);ctx.lineTo(x+4,y);ctx.stroke();},closebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.moveTo(x,y);ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle='rgba('+rgbBg.join(',')+','+aBg+')';ctx.fill();ctx.strokeStyle='rgba('+rgb.join(',')+','+a+')';ctx.beginPath();ctx.moveTo(x-3,y-3);ctx.lineTo(x+3,y+3);ctx.stroke();ctx.beginPath();ctx.moveTo(x+3,y-3);ctx.lineTo(x-3,y+3);ctx.stroke();},minimizebutton:function(ctx,x,y,rgbBg,aBg,rgb,a){ctx.beginPath();ctx.moveTo(x,y);ctx.arc(x,y,7,0,Math.PI*2,true);ctx.fillStyle='rgba('+rgbBg.join(',')+','+aBg+')';ctx.fill();ctx.strokeStyle='rgba('+rgb.join(',')+','+a+')';ctx.beginPath();ctx.moveTo(x-4,y);ctx.lineTo(x+4,y);ctx.stroke();},hideSpinner:function(spinner){if($(spinner))$(spinner).setStyle('visibility','hidden');},showSpinner:function(spinner){if(!this.options.useSpinner||this.options.shape=='gauge'||this.options.type=='notification')return;$(spinner).setStyles({'visibility':'visible'});},setMochaControlsWidth:function(){this.mochaControlsWidth=0;var options=this.options;if(options.minimizable){this.mochaControlsWidth+=(this.minimizeButtonEl.getStyle('margin-left').toInt()+this.minimizeButtonEl.getStyle('width').toInt());}
if(options.maximizable){this.mochaControlsWidth+=(this.maximizeButtonEl.getStyle('margin-left').toInt()+this.maximizeButtonEl.getStyle('width').toInt());}
if(options.closable){this.mochaControlsWidth+=(this.closeButtonEl.getStyle('margin-left').toInt()+this.closeButtonEl.getStyle('width').toInt());}
this.controlsEl.setStyle('width',this.mochaControlsWidth);if(options.useCanvasControls==true){this.canvasControlsEl.setProperty('width',this.mochaControlsWidth);}}});MochaUI.Window.implement(new Options,new Events);MochaUI.Modal=new Class({Extends:MochaUI.Window,Implements:[Events,Options],initialize:function(options){this.modalInitialize();window.addEvent('resize',function(){this.setModalSize();}.bind(this));},modalInitialize:function(){var modalOverlay=new Element('div',{'id':'modalOverlay','styles':{'height':document.getCoordinates().height,'opacity':.6}}).inject(document.body);modalOverlay.addEvent('click',function(e){MochaUI.closeWindow(MochaUI.currentModal);});if(Browser.Engine.trident4){var modalFix=new Element('iframe',{'id':'modalFix','scrolling':'no','marginWidth':0,'marginHeight':0,'src':'','styles':{'height':document.getCoordinates().height}}).inject(document.body);}
this.modalOverlayOpenMorph=new Fx.Morph($('modalOverlay'),{'duration':150});this.modalOverlayCloseMorph=new Fx.Morph($('modalOverlay'),{'duration':150,onComplete:function(){$('modalOverlay').setStyle('display','none');if(Browser.Engine.trident4){$('modalFix').setStyle('display','none');}}.bind(this)});},setModalSize:function(){$('modalOverlay').setStyle('height',document.getCoordinates().height);if(Browser.Engine.trident4){$('modalFix').setStyle('height',document.getCoordinates().height);}}});MochaUI.Modal.implement(new Options,new Events);MochaUI.extend({NewWindowsFromHTML:function(){$$('div.mocha').each(function(el){if(Browser.Engine.presto||Browser.Engine.trident5){el.setStyle('display','block');}
var title=el.getElement('h3.mochaTitle');var elDimensions=el.getStyles('height','width');var properties={id:el.getProperty('id'),height:elDimensions.height.toInt(),width:elDimensions.width.toInt(),x:el.getStyle('left').toInt(),y:el.getStyle('top').toInt()};if(title){properties.title=title.innerHTML;title.destroy();}
properties.content=el.innerHTML;el.destroy();new MochaUI.Window(properties,true);}.bind(this));}});MochaUI.extend({newWindowsFromJSON:function(properties){properties.each(function(properties){new MochaUI.Window(properties);}.bind(this));}});MochaUI.options.extend({viewportTopOffset:30,viewportLeftOffset:20,windowTopOffset:50,windowLeftOffset:40});MochaUI.extend({arrangeCascade:function(){var coordinates=document.getCoordinates();var openWindows=0;MochaUI.Windows.instances.each(function(instance){if(!instance.isMinimized)openWindows++;});if((this.options.windowTopOffset*(openWindows+1))>=(coordinates.height-this.options.viewportTopOffset)){var topOffset=(coordinates.height-this.options.viewportTopOffset)/(openWindows+1);}
else{var topOffset=this.options.windowTopOffset;}
if((this.options.windowLeftOffset*(openWindows+1))>=(coordinates.width-this.options.viewportLeftOffset-20)){var leftOffset=(coordinates.width-this.options.viewportLeftOffset-20)/(openWindows+1);}
else{var leftOffset=this.options.windowLeftOffset;}
var x=this.options.viewportLeftOffset;var y=this.options.viewportTopOffset;$$('div.mocha').each(function(windowEl){var currentWindowClass=MochaUI.Windows.instances.get(windowEl.id);if(!currentWindowClass.isMinimized&&!currentWindowClass.isMaximized){id=windowEl.id;MochaUI.focusWindow(windowEl);x+=leftOffset;y+=topOffset;if(MochaUI.options.useEffects==false){windowEl.setStyles({'top':y,'left':x});}
else{var cascadeMorph=new Fx.Morph(windowEl,{'duration':550});cascadeMorph.start({'top':y,'left':x});}}}.bind(this));}});MochaUI.extend({arrangeTile:function(){var x=10;var y=10;var instances=MochaUI.Windows.instances;var windowsNum=0;instances.each(function(instance){if(!instance.isMinimized&&!instance.isMaximized){windowsNum++;}});var cols=3;var rows=Math.ceil(windowsNum/cols);var coordinates=document.getCoordinates();var col_width=((coordinates.width-this.options.viewportLeftOffset)/cols);var col_height=((coordinates.height-this.options.viewportTopOffset)/rows);var row=0;var col=0;instances.each(function(instance){if(!instance.isMinimized&&!instance.isMaximized){var content=instance.contentWrapperEl;var content_coords=content.getCoordinates();var window_coords=instance.windowEl.getCoordinates();var padding_top=content_coords.top-window_coords.top;var padding_bottom=window_coords.height-content_coords.height-padding_top;var padding_left=content_coords.left-window_coords.left;var padding_right=window_coords.width-content_coords.width-padding_left;var left=(x+(col*col_width));var top=(y+(row*col_height));instance.windowEl.setStyles({'left':left,'top':top});instance.drawWindow(instance.windowEl);MochaUI.focusWindow(instance.windowEl);if(++col===cols){row++;col=0;}}}.bind(this));}});MochaUI.extend({initializeTabs:function(el){$(el).getElements('li').each(function(listitem){listitem.addEvent('click',function(e){MochaUI.selected(this,el);});});},selected:function(el,parent){$(parent).getChildren().each(function(listitem){listitem.removeClass('selected');});el.addClass('selected');}});MochaUI.Desktop=new Class({Extends:MochaUI.Window,Implements:[Events,Options],options:{desktop:'desktop',desktopHeader:'desktopHeader',desktopFooter:'desktopFooter',desktopNavBar:'desktopNavbar',pageWrapper:'pageWrapper',page:'page',desktopFooter:'desktopFooterWrapper'},initialize:function(options){this.setOptions(options);this.desktop=$(this.options.desktop);this.desktopHeader=$(this.options.desktopHeader);this.desktopNavBar=$(this.options.desktopNavBar);this.pageWrapper=$(this.options.pageWrapper);this.page=$(this.options.page);this.desktopFooter=$(this.options.desktopFooter);if(!MochaUI.Dock.dockWrapper){this.setDesktopSize();}
this.menuInitialize();window.addEvent('resize',function(e){this.onBrowserResize();}.bind(this));},menuInitialize:function(){if(Browser.Engine.trident4&&this.desktopNavBar){this.desktopNavBar.getElements('li').each(function(element){element.addEvent('mouseenter',function(){this.addClass('ieHover');});element.addEvent('mouseleave',function(){this.removeClass('ieHover');});});};},onBrowserResize:function(){this.setDesktopSize();setTimeout(function(){MochaUI.Windows.instances.each(function(instance){if(instance.isMaximized){if(instance.iframeEl){instance.iframeEl.setStyle('visibility','hidden');}
var coordinates=document.getCoordinates();var borderHeight=instance.contentBorderEl.getStyle('border-top').toInt()+instance.contentBorderEl.getStyle('border-bottom').toInt();var toolbarHeight=instance.toolbarWrapperEl?instance.toolbarWrapperEl.getStyle('height').toInt()+instance.toolbarWrapperEl.getStyle('border-top').toInt():0;instance.contentWrapperEl.setStyles({'height':coordinates.height-instance.options.headerHeight-instance.options.footerHeight-borderHeight-toolbarHeight,'width':coordinates.width});instance.drawWindow($(instance.options.id));if(instance.iframeEl){instance.iframeEl.setStyles({'height':instance.contentWrapperEl.getStyle('height')});instance.iframeEl.setStyle('visibility','visible');}}}.bind(this));}.bind(this),100);},setDesktopSize:function(){var windowDimensions=window.getCoordinates();var dockWrapper=$(MochaUI.options.dockWrapper);if(this.desktop){this.desktop.setStyle('height',windowDimensions.height);}
if(this.pageWrapper){var dockOffset=MochaUI.dockVisible?dockWrapper.offsetHeight:0;var pageWrapperHeight=windowDimensions.height;pageWrapperHeight-=this.pageWrapper.getStyle('border-top').toInt();pageWrapperHeight-=this.pageWrapper.getStyle('border-bottom').toInt();if(this.desktopHeader){pageWrapperHeight-=this.desktopHeader.offsetHeight;}
if(this.desktopFooter){pageWrapperHeight-=this.desktopFooter.offsetHeight;}
pageWrapperHeight-=dockOffset;if(pageWrapperHeight<0){pageWrapperHeight=0;}
this.pageWrapper.setStyle('height',pageWrapperHeight);}
if(MochaUI.Columns.instances.getKeys().length>0){MochaUI.Desktop.resizePanels();}},resizePanels:function(){if(Browser.Engine.trident4){$$('.pad').setStyle('display','none');$$('.rHeight').setStyle('height',1);}
MochaUI.panelHeight();MochaUI.rWidth();if(Browser.Engine.trident4)$$('.pad').setStyle('display','block');},maximizeWindow:function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);var options=currentInstance.options;var windowDrag=currentInstance.windowDrag;if(windowEl!=$(windowEl)||currentInstance.isMaximized)return;if(currentInstance.isCollapsed){MochaUI.collapseToggle(windowEl);}
currentInstance.isMaximized=true;if(currentInstance.options.restrict){windowDrag.detach();if(options.resizable){currentInstance.detachResizable();}
currentInstance.titleBarEl.setStyle('cursor','default');}
if(options.container!=this.desktop){this.desktop.grab(windowEl);if(this.options.restrict){windowDrag.container=this.desktop;}}
currentInstance.oldTop=windowEl.getStyle('top');currentInstance.oldLeft=windowEl.getStyle('left');var contentWrapperEl=currentInstance.contentWrapperEl;contentWrapperEl.oldWidth=contentWrapperEl.getStyle('width');contentWrapperEl.oldHeight=contentWrapperEl.getStyle('height');if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','hidden');}
var windowDimensions=document.getCoordinates();var options=currentInstance.options;var shadowBlur=options.shadowBlur;var shadowOffset=options.shadowOffset;var newHeight=windowDimensions.height-options.headerHeight-options.footerHeight;newHeight-=currentInstance.contentBorderEl.getStyle('border-top').toInt();newHeight-=currentInstance.contentBorderEl.getStyle('border-bottom').toInt();newHeight-=(currentInstance.toolbarWrapperEl?currentInstance.toolbarWrapperEl.getStyle('height').toInt()+currentInstance.toolbarWrapperEl.getStyle('border-top').toInt():0);if(MochaUI.options.useEffects==false){windowEl.setStyles({'top':shadowOffset.y-shadowBlur,'left':shadowOffset.x-shadowBlur});currentInstance.contentWrapperEl.setStyles({'height':newHeight,'width':windowDimensions.width});currentInstance.drawWindow(windowEl);if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
currentInstance.fireEvent('onMaximize',windowEl);}
else{var maximizeMorph=new Fx.Elements([contentWrapperEl,windowEl],{duration:70,onStart:function(windowEl){currentInstance.maximizeAnimation=currentInstance.drawWindow.periodical(20,currentInstance,windowEl);}.bind(this),onComplete:function(windowEl){$clear(currentInstance.maximizeAnimation);currentInstance.drawWindow(windowEl);if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
currentInstance.fireEvent('onMaximize',windowEl);}.bind(this)});maximizeMorph.start({'0':{'height':newHeight,'width':windowDimensions.width},'1':{'top':shadowOffset.y-shadowBlur,'left':shadowOffset.x-shadowBlur}});}
currentInstance.maximizeButtonEl.setProperty('title','Restore');MochaUI.focusWindow(windowEl);},restoreWindow:function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);if(windowEl!=$(windowEl)||!currentInstance.isMaximized)return;var options=currentInstance.options;currentInstance.isMaximized=false;if(options.restrict){currentInstance.windowDrag.attach();if(options.resizable){currentInstance.reattachResizable();}
currentInstance.titleBarEl.setStyle('cursor','move');}
if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','hidden');}
var contentWrapperEl=currentInstance.contentWrapperEl;if(MochaUI.options.useEffects==false){contentWrapperEl.setStyles({'width':contentWrapperEl.oldWidth,'height':contentWrapperEl.oldHeight});currentInstance.drawWindow(windowEl);windowEl.setStyles({'top':currentInstance.oldTop,'left':currentInstance.oldLeft});if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
if(options.container!=this.desktop){$(options.container).grab(windowEl);if(options.restrict){currentInstance.windowDrag.container=$(options.container);}}
currentInstance.fireEvent('onRestore',windowEl);}
else{var restoreMorph=new Fx.Elements([contentWrapperEl,windowEl],{'duration':150,'onStart':function(windowEl){currentInstance.maximizeAnimation=currentInstance.drawWindow.periodical(20,currentInstance,windowEl);}.bind(this),'onComplete':function(el){$clear(currentInstance.maximizeAnimation);currentInstance.drawWindow(windowEl);if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
if(options.container!=this.desktop){$(options.container).grab(windowEl);if(options.restrict){currentInstance.windowDrag.container=$(options.container);}}
currentInstance.fireEvent('onRestore',windowEl);}.bind(this)});restoreMorph.start({'0':{'height':contentWrapperEl.oldHeight,'width':contentWrapperEl.oldWidth},'1':{'top':currentInstance.oldTop,'left':currentInstance.oldLeft}});}
currentInstance.maximizeButtonEl.setProperty('title','Maximize');}});MochaUI.Desktop.implement(new Options,new Events);MochaUI.Column=new Class({Extends:MochaUI.Desktop,Implements:[Events,Options],options:{id:null,placement:null,width:null,resizeLimit:[],onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldWidth:0});var options=this.options;var instances=MochaUI.Columns.instances;var instanceID=instances.get(options.id);if(instanceID){var currentInstance=instanceID;}
if(this.columnEl){return;}
else{instances.set(options.id,this);}
this.columnEl=new Element('div',{'id':this.options.id,'class':'column expanded','styles':{'width':options.placement=='main'?null:options.width}}).inject($(MochaUI.Desktop.pageWrapper));var parent=this.columnEl.getParent();var columnHeight=parent.getStyle('height').toInt();this.columnEl.setStyle('height',columnHeight);if(options.placement=='main'){this.columnEl.addClass('rWidth');}
this.spacerEl=new Element('div',{'id':this.options.id+'_spacer','class':'horizontalHandle'}).inject(this.columnEl);switch(this.options.placement){case'left':this.handleEl=new Element('div',{'id':this.options.id+'_handle','class':'columnHandle'}).inject(this.columnEl,'after');this.handleIconEl=new Element('div',{'id':options.id+'_handle_icon','class':'handleIcon'}).inject(this.handleEl);addResizeRight(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break;case'right':this.handleEl=new Element('div',{'id':this.options.id+'_handle','class':'columnHandle'}).inject(this.columnEl,'before');this.handleIconEl=new Element('div',{'id':options.id+'_handle_icon','class':'handleIcon'}).inject(this.handleEl);addResizeLeft(this.columnEl,options.resizeLimit[0],options.resizeLimit[1]);break;}
if(this.handleEl!=null){this.handleEl.addEvent('dblclick',function(){this.columnToggle();}.bind(this));}
MochaUI.rWidth();},columnToggle:function(){var column=this.columnEl;if(this.isCollapsed==false){this.oldWidth=column.getStyle('width').toInt();this.resize.detach();this.handleEl.removeEvents('dblclick');this.handleEl.addEvent('click',function(){this.columnToggle();}.bind(this));this.handleEl.setStyle('cursor','pointer').addClass('detached');column.setStyle('width',0);this.isCollapsed=true;column.addClass('collapsed');column.removeClass('expanded');MochaUI.rWidth();this.fireEvent('onCollapse');}
else{column.setStyle('width',this.oldWidth);this.isCollapsed=false;column.addClass('expanded');column.removeClass('collapsed');this.handleEl.removeEvents('click');this.handleEl.addEvent('dblclick',function(){this.columnToggle();}.bind(this));this.resize.attach();this.handleEl.setStyle('cursor','e-resize').addClass('attached');MochaUI.rWidth();this.fireEvent('onExpand');}}});MochaUI.Column.implement(new Options,new Events);MochaUI.Panel=new Class({Extends:MochaUI.Desktop,Implements:[Events,Options],options:{id:null,title:'New Panel',column:null,loadMethod:'html',contentURL:'pages/lipsum.html',evalScripts:true,evalResponse:false,content:'Panel content',tabsURL:null,footer:false,footerURL:'pages/lipsum.html',height:125,addClass:'',scrollbars:true,padding:{top:8,right:8,bottom:8,left:8},panelBackground:'#f8f8f8',onBeforeBuild:$empty,onContentLoaded:$empty,onResize:$empty,onCollapse:$empty,onExpand:$empty},initialize:function(options){this.setOptions(options);$extend(this,{timestamp:$time(),isCollapsed:false,oldHeight:0,partner:null});var instances=MochaUI.Panels.instances;var instanceID=instances.get(this.options.id);if(instanceID){var currentInstance=instanceID;}
if(this.panelEl){return;}
else{instances.set(this.options.id,this);}
this.fireEvent('onBeforeBuild');if(this.options.loadMethod=='iframe'){this.options.scrollbars=false;this.options.padding={top:0,right:0,bottom:0,left:0};}
this.showHandle=true;if($(this.options.column).getChildren().length==0){this.showHandle=false;}
this.panelEl=new Element('div',{'id':this.options.id,'class':'panel expanded','styles':{'height':this.options.height,'background':this.options.panelBackground}}).inject($(this.options.column));this.panelEl.addClass(this.options.addClass);this.contentEl=new Element('div',{'id':this.options.id+'_pad','class':'pad'}).inject(this.panelEl);if(this.options.footer){this.footerWrapperEl=new Element('div',{'id':this.options.id+'_panelFooterWrapper','class':'panel-footerWrapper'}).inject(this.panelEl);this.footerEl=new Element('div',{'id':this.options.id+'_panelFooter','class':'panel-footer'}).inject(this.footerWrapperEl);MochaUI.updateContent({'element':this.panelEl,'childElement':this.footerEl,'loadMethod':'xhr','url':this.options.footerURL});}
this.contentWrapperEl=this.panelEl;this.contentWrapperEl.setStyles({'overflow':this.options.scrollbars&&!this.iframeEl?'auto':'hidden'});this.contentEl.setStyles({'padding-top':this.options.padding.top,'padding-bottom':this.options.padding.bottom,'padding-left':this.options.padding.left,'padding-right':this.options.padding.right});this.panelHeaderEl=new Element('div',{'id':this.options.id+'_header','class':'panel-header'}).inject(this.panelEl,'before');this.panelHeaderToolboxEl=new Element('div',{'id':this.options.id+'_headerToolbox','class':'panel-header-toolbox'}).inject(this.panelHeaderEl);this.collapseToggleEl=new Element('div',{'id':this.options.id+'_minmize','class':'panel-collapse icon16','styles':{'width':16,'height':16},'title':'Collapse Panel'}).inject(this.panelHeaderToolboxEl);this.collapseToggleEl.addEvent('click',function(event){var panel=this.panelEl;var instances=MochaUI.Panels.instances;var expandedSiblings=[];panel.getAllPrevious('.panel').each(function(sibling){var currentInstance=instances.get(sibling.id);if(currentInstance.isCollapsed==false){expandedSiblings.push(sibling);}});panel.getAllNext('.panel').each(function(sibling){var currentInstance=instances.get(sibling.id);if(currentInstance.isCollapsed==false){expandedSiblings.push(sibling);}});if(this.isCollapsed==false){var currentColumn=MochaUI.Columns.instances.get($(this.options.column).id);if(expandedSiblings.length==0&&currentColumn.options.placement!='main'){var currentColumn=MochaUI.Columns.instances.get($(this.options.column).id);currentColumn.columnToggle();return;}
else if(expandedSiblings.length==0&&currentColumn.options.placement=='main'){return;}
this.oldHeight=panel.getStyle('height').toInt();if(this.oldHeight<10)this.oldHeight=20;panel.setStyle('height',0);this.isCollapsed=true;panel.addClass('collapsed');panel.removeClass('expanded');MochaUI.panelHeight(this.options.column,panel,'collapsing');this.collapseToggleEl.removeClass('panel-collapsed');this.collapseToggleEl.addClass('panel-expand');this.collapseToggleEl.setProperty('title','Expand Panel');this.fireEvent('onCollapse');}
else{panel.setStyle('height',this.oldHeight);this.isCollapsed=false;panel.addClass('expanded');panel.removeClass('collapsed');MochaUI.panelHeight(this.options.column,panel,'expanding');this.collapseToggleEl.removeClass('panel-expand');this.collapseToggleEl.addClass('panel-collapsed');this.collapseToggleEl.setProperty('title','Collapse Panel');this.fireEvent('onExpand');}}.bind(this));this.panelHeaderContentEl=new Element('div',{'id':this.options.id+'_headerContent','class':'panel-headerContent'}).inject(this.panelHeaderEl);this.titleEl=new Element('h2',{'id':this.options.id+'_title'}).inject(this.panelHeaderContentEl);if(this.options.tabsURL==null){this.titleEl.set('html',this.options.title);}
else{this.panelHeaderContentEl.addClass('tabs');MochaUI.updateContent({'element':this.panelEl,'childElement':this.panelHeaderContentEl,'loadMethod':'xhr','url':this.options.tabsURL});}
this.handleEl=new Element('div',{'id':this.options.id+'_handle','class':'horizontalHandle','styles':{'display':this.showHandle==true?'block':'none'}}).inject(this.panelEl,'after');this.handleIconEl=new Element('div',{'id':this.options.id+'_handle_icon','class':'handleIcon'}).inject(this.handleEl);addResizeBottom(this.options.id);MochaUI.updateContent({'element':this.panelEl,'content':this.options.content,'url':this.options.contentURL});MochaUI.panelHeight(this.options.column,this.panelEl,'new');}});MochaUI.Panel.implement(new Options,new Events);MochaUI.extend({panelHeight:function(column,changing,action){if(column!=null){MochaUI.panelHeight2($(column),changing,action);}
else{$$('.column').each(function(column){MochaUI.panelHeight2(column);}.bind(this));}},panelHeight2:function(column,changing,action){var instances=MochaUI.Panels.instances;var parent=column.getParent();var columnHeight=parent.getStyle('height').toInt();if(Browser.Engine.trident4){columnHeight-=1;}
column.setStyle('height',columnHeight);var panels=column.getChildren('.panel');var panelsExpanded=column.getChildren('.expanded');var panelsToResize=[];var tallestPanel;var tallestPanelHeight=0;this.panelsHeight=0;this.height=0;panels.each(function(panel){currentInstance=instances.get(panel.id);if(panel.hasClass('expanded')&&panel.getNext('.expanded')){currentInstance.partner=panel.getNext('.expanded');currentInstance.resize.attach();currentInstance.handleEl.setStyles({'display':'block','cursor':'n-resize'}).removeClass('detached');}
else{currentInstance.resize.detach();currentInstance.handleEl.setStyle('cursor',null).addClass('detached');}
if(panel.getNext('.panel')==null){currentInstance.handleEl.setStyle('display','none');}}.bind(this));column.getChildren().each(function(el){if(el.hasClass('panel')){var currentInstance=instances.get(el.id);areAnyNextSiblingsExpanded=function(el){var test;el.getAllNext('.panel').each(function(sibling){var siblingInstance=instances.get(sibling.id);if(siblingInstance.isCollapsed==false){test=true;}}.bind(this));return test;}.bind(this);areAnyExpandingNextSiblingsExpanded=function(){var test;changing.getAllNext('.panel').each(function(sibling){var siblingInstance=instances.get(sibling.id);if(siblingInstance.isCollapsed==false){test=true;}}.bind(this));return test;}.bind(this);if(action=='new'){if(currentInstance.isCollapsed!=true&&el!=changing){panelsToResize.push(el);}
if(currentInstance.isCollapsed!=true&&el!=changing){this.panelsHeight+=el.offsetHeight.toInt();}}
else if(action==null||action=='collapsing'){if(currentInstance.isCollapsed!=true&&(el.getAllNext('.panel').contains(changing)!=true||areAnyNextSiblingsExpanded(el)!=true)){panelsToResize.push(el);}
if(currentInstance.isCollapsed!=true&&(el.getAllNext('.panel').contains(changing)!=true||areAnyNextSiblingsExpanded(el)!=true)){this.panelsHeight+=el.offsetHeight.toInt();}}
else if(action=='expanding'){if(currentInstance.isCollapsed!=true&&(el.getAllNext('.panel').contains(changing)!=true||(areAnyExpandingNextSiblingsExpanded()!=true&&el.getNext('.expanded')==changing))&&el!=changing){panelsToResize.push(el);}
if(currentInstance.isCollapsed!=true&&(el.getAllNext('.panel').contains(changing)!=true||(areAnyExpandingNextSiblingsExpanded()!=true&&el.getNext('.expanded')==changing))&&el!=changing){this.panelsHeight+=el.offsetHeight.toInt();}}
if(el.style.height){this.height+=el.getStyle('height').toInt();}}
else{this.height+=el.offsetHeight.toInt();}}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;this.height=0;column.getChildren().each(function(el){this.height+=el.offsetHeight.toInt();}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;panelsToResize.each(function(panel){var ratio=this.panelsHeight/panel.offsetHeight.toInt();var newPanelHeight=panel.getStyle('height').toInt()+(remainingHeight/ratio);if(newPanelHeight<1){newPanelHeight=0;}
panel.setStyle('height',newPanelHeight);}.bind(this));this.height=0;column.getChildren().each(function(el){this.height+=el.offsetHeight.toInt();if(el.hasClass('panel')&&el.getStyle('height').toInt()>tallestPanelHeight){tallestPanel=el;tallestPanelHeight=el.getStyle('height').toInt();}}.bind(this));var remainingHeight=column.offsetHeight.toInt()-this.height;if((remainingHeight>0||remainingHeight<0)&&tallestPanelHeight>0){tallestPanel.setStyle('height',tallestPanel.getStyle('height').toInt()+remainingHeight);if(tallestPanel.getStyle('height')<1){tallestPanel.setStyle('height',0);}}
$$('.columnHandle').each(function(handle){var handleHeight=parent.getStyle('height').toInt()-handle.getStyle('border-top').toInt()-handle.getStyle('border-bottom').toInt();if(Browser.Engine.trident4){handleHeight-=1;}
handle.setStyle('height',handleHeight);});panelsExpanded.each(function(panel){MochaUI.resizeChildren(panel);}.bind(this));},resizeChildren:function(panel){var instances=MochaUI.Panels.instances;var currentInstance=instances.get(panel.id);var contentWrapperEl=currentInstance.contentWrapperEl;if(currentInstance.iframeEl){currentInstance.iframeEl.setStyles({'height':contentWrapperEl.getStyle('height'),'width':contentWrapperEl.offsetWidth-contentWrapperEl.getStyle('border-left').toInt()-contentWrapperEl.getStyle('border-right').toInt()});}},rWidth:function(){$$('.rWidth').each(function(column){var currentWidth=column.offsetWidth.toInt();currentWidth-=column.getStyle('border-left').toInt();currentWidth-=column.getStyle('border-right').toInt();var parent=column.getParent();this.width=0;parent.getChildren().each(function(el){if(el.hasClass('mocha')!=true){this.width+=el.offsetWidth.toInt();}}.bind(this));var remainingWidth=parent.offsetWidth.toInt()-this.width;var newWidth=currentWidth+remainingWidth;if(newWidth<1)newWidth=0;column.setStyle('width',newWidth);column.getChildren('.panel').each(function(panel){panel.setStyle('width',newWidth-panel.getStyle('border-left').toInt()-panel.getStyle('border-right').toInt());MochaUI.resizeChildren(panel);}.bind(this));});}});function addResizeRight(element,min,max){if(!$(element))return;element=$(element);var instances=MochaUI.Columns.instances;var currentInstance=instances.get(element.id);var handle=element.getNext('.columnHandle');handle.setStyle('cursor','e-resize');if(!min)min=50;if(!max)max=250;if(Browser.Engine.trident){handle.addEvents({'mousedown':function(){handle.setCapture();},'mouseup':function(){handle.releaseCapture();}});}
currentInstance.resize=element.makeResizable({handle:handle,modifiers:{x:'width',y:false},limit:{x:[min,max]},onStart:function(){element.getElements('iframe').setStyle('visibility','hidden');element.getNext('.column').getElements('iframe').setStyle('visibility','hidden');}.bind(this),onDrag:function(){MochaUI.rWidth();if(Browser.Engine.trident4){element.getChildren().each(function(el){var width=$(element).getStyle('width').toInt();width-=el.getStyle('border-right').toInt();width-=el.getStyle('border-left').toInt();width-=el.getStyle('padding-right').toInt();width-=el.getStyle('padding-left').toInt();el.setStyle('width',width);}.bind(this));}}.bind(this),onComplete:function(){MochaUI.rWidth();element.getElements('iframe').setStyle('visibility','visible');element.getNext('.column').getElements('iframe').setStyle('visibility','visible');currentInstance.fireEvent('onResize');}.bind(this)});}
function addResizeLeft(element,min,max){if(!$(element))return;element=$(element);var instances=MochaUI.Columns.instances;var currentInstance=instances.get(element.id);var handle=element.getPrevious('.columnHandle');handle.setStyle('cursor','e-resize');var partner=element.getPrevious('.column');if(!min)min=50;if(!max)max=250;if(Browser.Engine.trident){handle.addEvents({'mousedown':function(){handle.setCapture();},'mouseup':function(){handle.releaseCapture();}});}
currentInstance.resize=element.makeResizable({handle:handle,modifiers:{x:'width',y:false},invert:true,limit:{x:[min,max]},onStart:function(){$(element).getElements('iframe').setStyle('visibility','hidden');partner.getElements('iframe').setStyle('visibility','hidden');}.bind(this),onDrag:function(){MochaUI.rWidth();}.bind(this),onComplete:function(){MochaUI.rWidth();$(element).getElements('iframe').setStyle('visibility','visible');partner.getElements('iframe').setStyle('visibility','visible');currentInstance.fireEvent('onResize');}.bind(this)});}
function addResizeBottom(element){if(!$(element))return;var element=$(element);var instances=MochaUI.Panels.instances;var currentInstance=instances.get(element.id);var handle=currentInstance.handleEl;handle.setStyle('cursor','n-resize');partner=currentInstance.partner;min=0;max=function(){return element.getStyle('height').toInt()+partner.getStyle('height').toInt();}.bind(this);if(Browser.Engine.trident){handle.addEvents({'mousedown':function(){handle.setCapture();},'mouseup':function(){handle.releaseCapture();}});}
currentInstance.resize=element.makeResizable({handle:handle,modifiers:{x:false,y:'height'},limit:{y:[min,max]},invert:false,onBeforeStart:function(){partner=currentInstance.partner;this.originalHeight=element.getStyle('height').toInt();this.partnerOriginalHeight=partner.getStyle('height').toInt();}.bind(this),onStart:function(){if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','hidden');}
partner.getElements('iframe').setStyle('visibility','hidden');}.bind(this),onDrag:function(){partnerHeight=partnerOriginalHeight+(this.originalHeight-element.getStyle('height').toInt());partner.setStyle('height',partnerHeight);MochaUI.resizeChildren(element,element.getStyle('height').toInt());MochaUI.resizeChildren(partner,partnerHeight);}.bind(this),onComplete:function(){partnerHeight=partnerOriginalHeight+(this.originalHeight-element.getStyle('height').toInt());partner.setStyle('height',partnerHeight);MochaUI.resizeChildren(element,element.getStyle('height').toInt());MochaUI.resizeChildren(partner,partnerHeight);if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
partner.getElements('iframe').setStyle('visibility','visible');currentInstance.fireEvent('onResize');}.bind(this)});}
MochaUI.options.extend({dockWrapper:'dockWrapper',dock:'dock'});window.addEvent('domready',function(){if($('dockWrapper')){MochaUI.dockVisible=false;}});MochaUI.extend({minimizeAll:function(){$$('div.mocha').each(function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);if(!currentInstance.isMinimized&&currentInstance.options.minimizable==true){MochaUI.Dock.minimizeWindow(windowEl);}}.bind(this));}});MochaUI.Dock=new Class({Extends:MochaUI.Window,Implements:[Events,Options],options:{useControls:false,dockPosition:'bottom',dockTabColor:[255,255,255],trueButtonColor:[70,245,70],enabledButtonColor:[125,208,250],disabledButtonColor:[170,170,170]},initialize:function(options){if(!MochaUI.Desktop)return;this.setOptions(options);this.dockWrapper=$(MochaUI.options.dockWrapper);this.dock=$(MochaUI.options.dock);this.autoHideEvent=null;this.dockAutoHide=false;if(!this.dockWrapper)return;if(!this.options.useControls){if($('dockPlacement')){$('dockPlacement').setStyle('cursor','default');}
if($('dockAutoHide')){$('dockAutoHide').setStyle('cursor','default');}}
this.dockWrapper.setStyles({});if(this.options.useControls){this.initializeDockControls();}
if($('dockLinkCheck')){this.sidebarCheck=new Element('div',{'class':'check','id':'dock_check'}).inject($('dockLinkCheck'));}
this.dockSortables=new Sortables('#dockSort',{opacity:Browser.Engine.trident?1:.5,constrain:true,clone:false,revert:false});MochaUI.Desktop.setDesktopSize();},initializeDockControls:function(){if(this.options.useControls){var canvas=new Element('canvas',{'id':'dockCanvas','width':'15','height':'18'}).inject(this.dock);if(Browser.Engine.trident&&MochaUI.ieSupport=='excanvas'){G_vmlCanvasManager.initElement(canvas);}}
var dockPlacement=$('dockPlacement');var dockAutoHide=$('dockAutoHide');dockPlacement.setProperty('title','Position Dock Top');dockPlacement.addEvent('click',function(){this.moveDock();}.bind(this));dockAutoHide.setProperty('title','Turn Auto Hide On');dockAutoHide.addEvent('click',function(event){if(this.dockWrapper.getProperty('dockPosition')=='top')
return false;var ctx=$('dockCanvas').getContext('2d');this.dockAutoHide=!this.dockAutoHide;if(this.dockAutoHide){$('dockAutoHide').setProperty('title','Turn Auto Hide Off');MochaUI.circle(ctx,5,14,3,this.options.trueButtonColor,1.0);this.autoHideEvent=function(event){if(!this.dockAutoHide)
return;if(!MochaUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight;if(dockHotspotHeight<25)dockHotspotHeight=25;}
else if(MochaUI.Desktop.desktopFooter){var dockHotspotHeight=this.dockWrapper.offsetHeight+MochaUI.Desktop.desktopFooter.offsetHeight;if(dockHotspotHeight<25)dockHotspotHeight=25;}
if(!MochaUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MochaUI.dockVisible){this.dockWrapper.setStyle('display','block');MochaUI.dockVisible=true;MochaUI.Desktop.setDesktopSize();}}
else if(MochaUI.Desktop.desktopFooter&&event.client.y>(document.getCoordinates().height-dockHotspotHeight)){if(!MochaUI.dockVisible){this.dockWrapper.setStyle('display','block');MochaUI.dockVisible=true;MochaUI.Desktop.setDesktopSize();}}
else if(MochaUI.dockVisible){this.dockWrapper.setStyle('display','none');MochaUI.dockVisible=false;MochaUI.Desktop.setDesktopSize();}}.bind(this);document.addEvent('mousemove',this.autoHideEvent);}else{$('dockAutoHide').setProperty('title','Turn Auto Hide On');MochaUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1.0);document.removeEvent('mousemove',this.autoHideEvent);}}.bind(this));var ctx=$('dockCanvas').getContext('2d');ctx.clearRect(0,0,100,100);MochaUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1.0);MochaUI.circle(ctx,5,14,3,this.options.enabledButtonColor,1.0);if(this.options.dockPosition=='top'){this.moveDock();}},moveDock:function(){var ctx=$('dockCanvas').getContext('2d');if(this.dockWrapper.getStyle('position')!='relative'){this.dockWrapper.setStyles({'position':'relative','bottom':null});this.dockWrapper.addClass('top');MochaUI.Desktop.setDesktopSize();this.dockWrapper.setProperty('dockPosition','top');ctx.clearRect(0,0,100,100);MochaUI.circle(ctx,5,4,3,this.options.enabledButtonColor,1.0);MochaUI.circle(ctx,5,14,3,this.options.disabledButtonColor,1.0);$('dockPlacement').setProperty('title','Position Dock Bottom');$('dockAutoHide').setProperty('title','Auto Hide Disabled in Top Dock Position');this.dockAutoHide=false;}},createDockTab:function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);var dockTab=new Element('div',{'id':currentInstance.options.id+'_dockTab','class':'dockTab','title':titleText}).inject($('dockClear'),'before');dockTab.addEvent('mousedown',function(e){new Event(e).stop();this.timeDown=$time();});dockTab.addEvent('mouseup',function(e){this.timeUp=$time();if((this.timeUp-this.timeDown)<275){if(MochaUI.Windows.windowsVisible==false){MochaUI.toggleWindowVisibility();if(currentInstance.isMinimized==true){MochaUI.Dock.restoreMinimized.delay(25,MochaUI.Dock,windowEl);}
else{MochaUI.focusWindow(windowEl);}
return;}
if(currentInstance.isMinimized==true){MochaUI.Dock.restoreMinimized.delay(25,MochaUI.Dock,windowEl);}
else{if(currentInstance.windowEl.hasClass('isFocused')&&currentInstance.options.minimizable==true){MochaUI.Dock.minimizeWindow(windowEl)}
else{MochaUI.focusWindow(windowEl);}
var coordinates=document.getCoordinates();if(windowEl.getStyle('left').toInt()>coordinates.width||windowEl.getStyle('top').toInt()>coordinates.height){MochaUI.centerWindow(windowEl);}}}});this.dockSortables.addItems(dockTab);var titleText=currentInstance.titleEl.innerHTML;var dockTabText=new Element('div',{'id':currentInstance.options.id+'_dockTabText','class':'dockText'}).set('html',titleText.substring(0,20)+(titleText.length>20?'...':'')).inject($(dockTab));if(currentInstance.options.icon!=false){}
MochaUI.Desktop.setDesktopSize();},makeActiveTab:function(){var windowEl=MochaUI.getWindowWithHighestZindex();var currentInstance=MochaUI.Windows.instances.get(windowEl.id);$$('div.dockTab').removeClass('activeDockTab');if(currentInstance.isMinimized!=true){currentInstance.windowEl.addClass('isFocused');var currentButton=$(currentInstance.options.id+'_dockTab');if(currentButton!=null){currentButton.addClass('activeDockTab');}}
else{currentInstance.windowEl.removeClass('isFocused');}},minimizeWindow:function(windowEl){if(windowEl!=$(windowEl))return;var currentInstance=MochaUI.Windows.instances.get(windowEl.id);currentInstance.isMinimized=true;if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','hidden');}
currentInstance.contentBorderEl.setStyle('visibility','hidden');if(currentInstance.toolbarWrapperEl){currentInstance.toolbarWrapperEl.setStyle('visibility','hidden');}
windowEl.setStyle('visibility','hidden');if(Browser.Platform.mac&&Browser.Engine.gecko){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffversion=new Number(RegExp.$1);if(ffversion<3){currentInstance.contentWrapperEl.setStyle('overflow','hidden');}}}
MochaUI.Desktop.setDesktopSize();setTimeout(function(){windowEl.setStyle('zIndex',1);windowEl.removeClass('isFocused');this.makeActiveTab();}.bind(this),100);currentInstance.fireEvent('onMinimize',windowEl);},restoreMinimized:function(windowEl){var currentInstance=MochaUI.Windows.instances.get(windowEl.id);if(currentInstance.isMinimized==false)return;if(MochaUI.Windows.windowsVisible==false){MochaUI.toggleWindowVisibility();}
MochaUI.Desktop.setDesktopSize();if(currentInstance.options.scrollbars==true&&!currentInstance.iframeEl){currentInstance.contentWrapperEl.setStyle('overflow','auto');}
if(currentInstance.isCollapsed){MochaUI.collapseToggle(windowEl);}
windowEl.setStyle('visibility','visible');currentInstance.contentBorderEl.setStyle('visibility','visible');if(currentInstance.toolbarWrapperEl){currentInstance.toolbarWrapperEl.setStyle('visibility','visible');}
if(currentInstance.iframeEl){currentInstance.iframeEl.setStyle('visibility','visible');}
currentInstance.isMinimized=false;MochaUI.focusWindow(windowEl);currentInstance.fireEvent('onRestore',windowEl);}});MochaUI.Dock.implement(new Options,new Events);MochaUI.extend({saveWorkspace:function(){this.cookie=new Hash.Cookie('mochaUIworkspaceCookie',{duration:3600});this.cookie.empty();MochaUI.Windows.instances.each(function(instance){instance.saveValues();this.cookie.set(instance.options.id,{'id':instance.options.id,'top':instance.options.y,'left':instance.options.x});}.bind(this));this.cookie.save();new MochaUI.Window({loadMethod:'html',type:'notification',addClass:'notification',content:'Workspace saved.',closeAfter:'1400',width:200,height:40,y:53,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,bodyBgColor:[255,255,255]});},windowUnload:function(){if($$('div.mocha').length==0&&this.myChain){this.myChain.callChain();}},loadWorkspace2:function(workspaceWindows){workspaceWindows.each(function(instance){windowFunction=eval('MochaUI.'+instance.id+'Window');if(windowFunction){eval('MochaUI.'+instance.id+'Window();');$(instance.id).setStyles({top:instance.top,left:instance.left});}}.bind(this));this.loadingWorkspace=false;},loadWorkspace:function(){cookie=new Hash.Cookie('mochaUIworkspaceCookie',{duration:3600});workspaceWindows=cookie.load();if(!cookie.getKeys().length){new MochaUI.Window({loadMethod:'html',type:'notification',addClass:'notification',content:'You have no saved workspace.',closeAfter:'1400',width:220,height:40,y:25,padding:{top:10,right:12,bottom:10,left:12},shadowBlur:5,bodyBgColor:[255,255,255]});return;}
if($$('div.mocha').length!=0){this.loadingWorkspace=true;this.myChain=new Chain();this.myChain.chain(function(){$$('div.mocha').each(function(el){this.closeWindow(el);}.bind(this));}.bind(this),function(){this.loadWorkspace2(workspaceWindows);}.bind(this));this.myChain.callChain();}
else{this.loadWorkspace2(workspaceWindows);}}});