/********************************************************************************
Copyright (C)  2001-2003 Datarroba
All rights reserved. Unauthorized usage, reproduction, modification and
distribution of this software is strictly prohibited.
Company....: Datarroba - Consultoria Informática, Lda.
Author.....: Paulo Matos
File.......: utilDialog.js
Version....: 4.0
Description: Functions for modal dialog and popup window features
********************************************************************************/

/****************  OPEN VARIABLES  ****************/
var uriDialog		= "../mvc/dialogFrame2.jsp?";
var uriDialogTop	= "dialogTop.jsp";

var isWindow		= "window"; // default
var isDialog		= "dialog";
var isChrome		= "chrome";

var winLeft		= 50;
var winTop		= 50;

var openArguments;

/**************  CHROMELESS WINDOW  ***************/
var winRestoreLeft;
var winRestoreTop;
var winRestoreWidth;
var winRestoreHeight;

var currentEventX	= -1;
var currentEventY	= -1;

var btnMaximizeClass	= "btnMaximize";
var btnRestoreClass	= "btnRestore";
var notPrintClass	= "notprint";

/****************  MODAL DIALOG  *****************/
var dialogWidth		= 640;
var dialogProperties	 = 'dialogWidth:' + dialogWidth + 'px;';
dialogProperties	+= 'dialogHeight:170px;';
dialogProperties	+= 'dialogLeft:' + winLeft + ';';
dialogProperties	+= 'dialogTop:' + winTop + ';';
dialogProperties	+= 'status:no;';
dialogProperties	+= 'help:no;';
dialogProperties	+= 'minimize:no;';
dialogProperties	+= 'maximize:no;';
dialogProperties	+= 'border:thick;';

/*******************  WINDOW  ********************/
var openWidth		= 630;
var openHeight		= 170;
var openProperties	 = 'width=' + openWidth + ',';
openProperties		+= 'height=' + openHeight + ',';
openProperties		+= 'left=' + winLeft + ',';
openProperties		+= 'top=' + winTop + ',';
openProperties		+= 'channelmode=no,';
openProperties		+= 'directories=no,';
openProperties		+= 'location=no,';
openProperties		+= 'menubar=no,';
openProperties		+= 'resizable=yes,';
openProperties		+= 'scrollbars=no,';
openProperties		+= 'status=no,';
openProperties		+= 'titlebar=no,';
openProperties		+= 'toolbar=no';


/**************************************************
 *		x PROPERTIES
 **************************************************/

// myBodyObj é do tipo Body Object
function getXWidth(myBodyObj) {
	if(myBodyObj.getAttribute("xWidth") != null)
		return myBodyObj.getAttribute("xWidth");
	else
		return dialogWidth;
}

// myObj é do tipo Body Object
function getXHeight(myBodyObj) {
	var heightTokens = myBodyObj.getAttribute("xHeight");
	if(heightTokens != null) {
		heightTokens = heightTokens.split(",");
		switch(heightTokens.length) {
			case 1: return heightTokens[0];
			case 3: if((heightTokens[2] == "") ||
				   (heightTokens[2].toLowerCase() == "true"))
					return heightTokens[0];
				else
					return heightTokens[1];
		}
	}
	
	return heightTokens;
}

// myBodyObj é do tipo Body Object
function getXBtnDisabled(myBodyObj) {
	return (myBodyObj.getAttribute("xBtnDisabled") != null);
}

// myBodyObj é do tipo Body Object
function getXBtnListClick(myBodyObj) {
	return (myBodyObj.getAttribute("xBtnListClick") != null);
}

// myBodyObj é do tipo Body Object
function getXBtnResetChild(myBodyObj) {
	return (myBodyObj.getAttribute("xBtnResetChild") != null);
}

// myBodyObj é do tipo Body Object
function getXPrint(myBodyObj) {
	if(myBodyObj.getAttribute("xPrint") != null)
		return myBodyObj.getAttribute("xPrint");
	else
		return "none";
}

// myBodyObj é do tipo Body Object
function getXNotReset(myBodyObj) {
	return (myBodyObj.getAttribute("xNotReset") != null);
}

// myBodyObj é do tipo Body Object
function getXUriTarget(myBodyObj) {
	if(myBodyObj.getAttribute("xUriTarget") != null)
		return myBodyObj.getAttribute("xUriTarget");
	else
		return isWindow;
}

// myBodyObj é do tipo Body Object
function getXIsErrorPage(myBodyObj) {
	return (myBodyObj.getAttribute("xIsErrorPage") != null);
}


/**************************************************
 *		ONLOAD FUNCTIONS
 **************************************************/

function onLoadDialog() {
	var myDialogWidth  = getXWidth(document.body);
	var myDialogHeight = getXHeight(document.body);
	var btnDisabled    = getXBtnDisabled(document.body);
	var btnListClick   = getXBtnListClick(document.body);
	var btnResetChild  = getXBtnResetChild(document.body);
	var print	   = getXPrint(document.body);
	var notReset	   = getXNotReset(document.body);
	var isErrorPage	   = getXIsErrorPage(document.body);

	if((myDialogHeight != null) && top.frames.length) {
		var topFrame	= top.frames.topFrame;

		if(!btnDisabled) {
			var btnDisabled	= false;
			var btnStyle	= "";
			var btnTabIndex	= 1;
		}
		else {
			var btnDisabled	= true;
			var btnStyle	= "Alpha(Opacity='50',FinishOpacity='50',Style='0') Grey";
			var btnTabIndex	= -1;
		}

		var btnConfirm	 = topFrame.document.all.confirmar;
		var btnReset	 = topFrame.document.all.btnReset;
		var printDiv	 = topFrame.document.all.printDiv;
		var btnPrint	 = topFrame.document.all.btnPrint;
		var btnPrintExt	 = topFrame.document.all.btnPrintExtended;
		var btnPrintRed	 = topFrame.document.all.btnPrintReduced;
		var btnMinimize	 = topFrame.document.all.btnMinimize;
		var btnMaximize	 = topFrame.document.all.btnMaximize;
		var chromeHeader = topFrame.document.all.chromeHeader;
		var uriTarget	 = getXUriTarget(topFrame.document.body);

		if(btnConfirm) {
			btnConfirm.disabled	= btnDisabled;
			btnConfirm.style.filter	= btnStyle;
			btnConfirm.tabIndex	= btnTabIndex;
		}
		if(btnReset) {
			btnReset.disabled	= btnDisabled;
			btnReset.style.filter	= btnStyle;
			btnReset.tabIndex	= btnTabIndex;
			if(!notReset)
				btnReset.style.display	= "";
		}
		if(printDiv && (print != "none")) {
			printDiv.style.display = "";
			btnPrint.tabIndex = 1;
			if(btnPrintExt && ((print == "all") || (print == "extended"))) {
				btnPrintExt.style.display = "";
				btnPrintExt.tabIndex = 1;
			}
			else {
				btnPrintExt.style.display = "none";
				btnPrintExt.tabIndex = -1;
			}
			if(btnPrintRed && ((print == "all") || (print == "reduced"))) {
				btnPrintRed.style.display = "";
				btnPrintRed.tabIndex = 1;
			}
			else {
				btnPrintRed.style.display = "none";
				btnPrintRed.tabIndex = -1;
			}
		}
		if(uriTarget == isChrome) {
			btnMinimize.style.display  = "";
			btnMaximize.style.display  = "";
			chromeHeader.style.display = "";
			chromeHeader.style.cursor  = "move";
			chromeHeader.onmousemove = function() {
				if((topFrame.event.button == 1) && (currentEventX != -1) && (btnMaximize.className == btnMaximizeClass)) {
					top.moveTo(topFrame.event.screenX - currentEventX + top.screenLeft - 3, topFrame.event.screenY - currentEventY + top.screenTop - 3);
					currentEventX = topFrame.event.screenX;
					currentEventY = topFrame.event.screenY;
				}
			}
			chromeHeader.onmousedown = function() {
				if(topFrame.event.button == 1) {
					currentEventX = topFrame.event.screenX;
					currentEventY = topFrame.event.screenY;
     				}
			}
		}

		if(top.dialogHeight) { // se for modal dialog
			top.dialogWidth  = myDialogWidth  + "px";
			top.dialogHeight = myDialogHeight + "px";
		}
		else {
			if(top.document.body.scrollWidth == openWidth) {
				top.resizeBy(0, myDialogHeight - top.document.body.scrollHeight - 26);
				top.resizeBy(myDialogWidth - top.document.body.scrollWidth - 10, 0);
			}
		}
	}

	if(btnListClick)
		document.all(btnListName).click();

	if(btnResetChild)
		top.frames.main.onAfterResetStr += getDOMPath(this) + 'document.all.btnReset.click();';
}


/**************************************************
 *		WINDOW OPEN FUNCTIONS
 **************************************************/

/////////////////////////////////////////////////////////////////
// Esta função retorna o valor especificado pela modal dialog OU
// retorna false se a janela for aberta com open. Isto porque a
// acção que segue a openWindow() só é desenrolada se o valor
// devolvido for true.
// --------------------------------------------------------------
// myUri é do tipo String Object
// isDialog é do tipo boolean
function openWindow(myUri, winType) {
	if(winType == isDialog)
		return window.showModalDialog(myUri, '', dialogProperties);
	else if(winType == isChrome) {
		var win = window.open(myUri, '_blank', openProperties+',fullscreen=yes');

		win.moveTo(winLeft, winTop);
		win.resizeTo(openWidth + 6, openHeight);
	}
	else { // default
		var win = window.open(myUri, '_blank', openProperties+',fullscreen=no');
	}

	return false;

//	openIT('http://www.dynamicdrive.com/faqs.htm',550,300,null,null,'mywin002',5,false,false,true,'#FF8000','#FFC184');
}

function openEdit(myUri, myObj, isModal) {
	if(isModal) {
		return window.showModalDialog(myUri, myObj, dialogProperties);
	}
	else {
		openArguments = myObj;
		window.open(myUri, '_blank', openProperties);
	}

	return null;
}


/**************************************************
 *		WINDOW BUTTON ACTIONS
 **************************************************/

function btnSubmitClick(btnObj) {
	btnObj.blur();

	document.forms.myForm.btnSubmit.click();
}

function btnResetClick(btnObj) {
	btnObj.blur();

	document.forms.myForm.reset();
	document.forms.myForm.onafterreset();
}

function btnPrintExtendedClick(btnObj) {
	btnObj.blur();

	var fileImgs	= document.all('fileImg');
	var fileImgsExt	= document.all('fileImgExt');

	if(fileImgs) {
		if(!fileImgs.length)
			fileImgs = new Array(fileImgs);
		if(!fileImgsExt.length)
			fileImgsExt = new Array(fileImgsExt);
		for(var i = 0; i < fileImgs.length; i++)
			fileImgs[i].className = notPrintClass;
		for(var j = 0; j < fileImgsExt.length; j++)
			fileImgsExt[j].style.display = '';
	}
	expandDiv('TABLE','none');
	printConfig(true);
	printWindow(window);

	if(fileImgs) {
		for(var k = 0; k < fileImgs.length; k++)
			fileImgs[k].className = '';
		for(var l = 0; l < fileImgsExt.length; l++)
			fileImgsExt[l].style.display = 'none';
	}
}

function btnPrintReducedClick(btnObj) {
	btnObj.blur();

	expandDiv('TABLE','block');
	printConfig(false);
	printWindow(window);
}

function btnPrintClick(btnObj) {
	btnObj.blur();

	printConfig(false);
	printWindow(window);
}

function btnMinimizeClick(btnObj) {
	btnObj.blur();

	top.blur();
}

function btnMaximizeClick(btnObj) {
	btnObj.blur();

	if(btnObj.className == btnMaximizeClass) {
		winRestoreLeft	 = top.screenLeft - 3;
		winRestoreTop	 = top.screenTop - 3;
		winRestoreWidth  = top.document.body.scrollWidth + 6;
		winRestoreHeight = top.document.body.scrollHeight + 6;

		top.moveTo(0, 0);
		top.resizeTo(screen.availWidth, screen.availHeight);
		btnObj.className = btnRestoreClass;
		top.onresize	 = function() {
					top.moveTo(0, 0);
					top.resizeTo(screen.availWidth, screen.availHeight);
				   }
	}
	else {
		top.moveTo(winRestoreLeft, winRestoreTop);
		top.resizeTo(winRestoreWidth, winRestoreHeight);
		btnObj.className = btnMaximizeClass;
		top.onresize = null;
	}
}

function btnExitClick(btnObj) {
	top.close();
}

function disableButtons() {
	if(parent.frames.topFrame && parent.frames.topFrame.document.all.confirmar)
		with(parent.frames.topFrame.document.all) {
			toggleReadonly(true, [confirmar, btnReset, btnPrint]);
			confirmar.style.left = 0;
			btnReset.style.left = 0;
			printAuxDiv.style.display = 'none';
			printDiv.onmousemove = printDiv.onmouseout = null;
		}
}

/**************************************************
 *	CHROMELESS GARBAGE (It has to be clean)
 **************************************************/

/*
		var xqw;
//		alert(external);
//		open(external.menuArguments.location.href);

		xqw=(window.open(myUri, "", "fullscreen,resizable=1,status=1,titlebar=1,toolbar=1")).resizeTo(400,400);
/*
		xqw.self.resizeTo(500,400);
		//alert(xqw.document.body.style.posWidth);
		//xqw.document.body.style.posWidth = 100;
		//alert(xqw.document.body.style.posWidth);
		xqw=xqw.self;
		//xqw.document.body.style.posWidth = 100;
		xqw.name="true";
		xqw.self.moveTo(50,50);
		xqw.self.resizeBy(-10,-100);
//		alert(xqw.name + " / " +
//		    xqw.offscreenBuffering + " / " +
//		    xqw.status);
*/

function chromeless(u,n,W,H,X,Y,cU,cO,cL,mU,mO,xU,xO,rU,rO,tH,tW,wB,wBs,wBG,wBGs,wNS,fSO,brd,max,min,res,tsz){
	var c=(document.all&&navigator.userAgent.indexOf("Win")!=-1)?1:0
	var v=navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE ")+5,navigator.appVersion.indexOf("MSIE ")+8)
	min=(v>=5.5?min:false);
	var w=window.screen.width; var h=window.screen.height
	var W=W||w; W=(typeof(W)=='string'?Math.ceil(parseInt(W)*w/100):W); W+=(brd*2+2)*c
	var H=H||h; H=(typeof(H)=='string'?Math.ceil(parseInt(H)*h/100):H); H+=(tsz+brd+2)*c
	var X=X||Math.ceil((w-W)/2)
	var Y=Y||Math.ceil((h-H)/2)
	var s=",width="+W+",height="+H

	if(c){
		var cTIT='\n'+
		'<html><head><META HTTP-EQUIV="imagetoolbar" CONTENT="no">\n'+
		'<script>\n'+
		'var IcU=new Image();IcU.src="'+cU+'";var IcO=new Image();IcO.src="'+cO+'";var IcL=new Image();IcL.src="'+cL+'";var IxU=new Image();IxU.src="'+xU+'";var IxO=new Image();IxO.src="'+xO+'";var IrU=new Image();IrU.src="'+rU+'";var IrO=new Image();IrO.src="'+rO+'";var ImU=new Image();ImU.src="'+mU+'";var ImO=new Image();ImO.src="'+mO+'"\n'+
		'document.onmousemove=document.onselectstart=document.ondragstart=document.oncontextmenu=new Function("wMOV();return false");\n'+
		'b=-1\n'+
		'wLOA=function(){if(top.ok&&document.body){'+(min?'bMIN.style.visibility="visible";':'')+'bLOA.style.visibility="hidden";wRSZ()}else setTimeout("wLOA()",500)};wLOA()\n'+
		'wRSZ=function(){var dw=document.body.clientWidth;bCLO.style.pixelLeft=dw-22;bMIN.style.pixelLeft=bLOA.style.pixelLeft=dw-62;bFUL.style.pixelLeft=bRES.style.pixelLeft=dw-42}\n'+
		'wMAX=function(m){top.mod=m;if(m){top.mT(0,0);top.rT('+w+','+h+');bFUL.style.visibility="hidden";bRES.style.visibility="visible"}else{top.mT(top.px,top.py);top.rT(top.sW,top.sH);bFUL.style.visibility="visible";bRES.style.visibility="hidden"}}\n'+
		'wDBL=function(){if(!top.mod)wMAX(1);else wMAX(0)}\n'+
		'wMIN=function(){top.window.moveTo(0,-4000);if(top.opener&&!top.opener.closed){top.opener.window.focus()};top.window.blur()}\n'+
		'wMOV=function(){\n'+
		'if(b==0){top.bCOL("'+wBG+'","'+wB+'");b=-1}\n'+
		'if(b==2&&!top.mod){top.px=event.screenX-ofx-1;top.py=event.screenY-ofy-1;top.mT(top.px,top.py)}\n'+
		'if(b==1){top.bCOL("'+wBGs+'","'+wBs+'");ofx=event.x;ofy=event.y;b=2}\n'+
		'}</script></head>\n'+
		'<body onresize="wRSZ()" bgcolor='+wBG+'>\n'+
		'<div style="position:absolute;left:5px;top:4px;width:2000px">'+tH+'</div>\n'+
		'<img id=bMOV style="position:absolute;left:-50px;top:-50px" '+(max?'ondblclick="wDBL()"':'')+' onmousemove="wMOV()" onmousedown="b=1;wMOV()" onmouseup="b=0;wMOV()" border=0 src="" width=2000 height=2000>\n'+
		'<img id=bFUL style="position:absolute;top:4px;left:'+(W-42)+'px;'+(max?'':'display:none')+'" src="'+xU+'" border=0 onmouseover="this.src=IxO.src" onmouseout="this.src=IxU.src" onmouseup="this.src=IxU.src" onmousedown="this.src=IxU.src" onclick="wMAX(1)">\n'+
		'<img id=bRES style="position:absolute;top:4px;left:'+(W-42)+'px;visibility:hidden" src="'+rU+'" border=0  onmouseover="this.src=IrO.src" onmouseout="this.src=IrU.src" onmouseup="this.src=IrU.src" onmousedown="this.src=IrU.src" onclick="wMAX(0)">\n'+
		'<img id=bCLO style="position:absolute;top:4px;left:'+(W-22)+'px;" src="'+cU+'" border=0  onmouseover="this.src=IcO.src" onmouseout="this.src=IcU.src" onmouseup="this.src=IcU.src" onmousedown="this.src=IcU.src" onclick="top.window.close()">\n'+
		'<img id=bLOA style="position:absolute;top:4px;left:'+(W-62)+'px;" src="'+cL+'" border=0 >\n'+
		'<img id=bMIN style="position:absolute;top:4px;left:'+(W-62)+'px;visibility:hidden" src="'+mU+'" border=0  onmouseover="this.src=ImO.src" onmouseout="this.src=ImU.src" onmouseup="this.src=ImU.src" onmousedown="this.src=ImU.src" onclick="wMIN()">\n'+
		'</body>\n'+
		'</html>'
		
		cTIT=cTIT.replace(/\//g,"\\\/").replace(/\"/g,"\\\"").replace(/\n/g,"\\n")


		cRES=function(b,s){
			var tmp='\n'+
			'<html><head><META HTTP-EQUIV="imagetoolbar" CONTENT="no">\n'+
			'<script>\n'+
			'document.onmousemove=document.onselectstart=document.ondragstart=document.oncontextmenu=new Function("wMOV();return false");\n'+
			'b=-1\n'+
			'wMOV=function(){if(!top.mod){\n'+
			'if(b==0){top.sH=top.fH;top.sW=top.fW;b=-1}\n'+
			'if(b==2&&(1=='+b+'||4=='+b+'||5=='+b+')){tmp=event.screenY-oH;if(top.sH+tmp>100){top.fH=top.sH+tmp}}\n'+
			'if(b==2&&(2=='+b+'||4=='+b+')){tmp=event.screenX-oW;if(top.sW-tmp>100){top.fW=top.sW-tmp;top.px=event.screenX-ofx-1}}\n'+
			'if(b==2&&(3=='+b+'||5=='+b+')){tmp=event.screenX-oW;top.fW=top.sW+tmp}\n'+
			'if(b==2){setTimeout("top.rT(top.fW,top.fH);top.mT(top.px,top.py);",10)}\n'+
			'if(b==1){ofx=event.x;oH=event.screenY;oW=event.screenX;b=2}\n'+
			'}}</script></head>\n'+
			'<body bgcolor='+wBG+'>\n'+
			'<img style="cursor:'+s+'-resize" id=bMOV style="position:absolute;left:-50px;top:-50px" onmousemove="wMOV()" onmousedown="b=1;wMOV()" onmouseup="b=0;wMOV()" border=0 src="" width=3000 height=2000>\n'+
			'</body>\n'+
			'</html>'
			return tmp.replace(/\//g,"\\\/").replace(/\"/g,"\\\"").replace(/\n/g,"\\n")
		}

		var cRESd=cRES(1,'s'),cRESl=cRES(2,'w'),cRESr=cRES(3,'e'),cRESbl=cRES(4,'sw'),cRESbr=cRES(5,'se')
top.frames.topFrame.topHeader.innerText = cRESd;
		var cFRM='<HTML><HEAD><TITLE>'+tW+'</TITLE>\n'+
		'<script>\n'+
		'ok=0;mod=0;sH=fH='+(H)+';sW=fW='+(W)+';px='+(X)+';py='+(Y)+'\n'+
		'bCOL=function(c1,c2){fT.document.bgColor=n0.document.bgColor=n1.document.bgColor=n2.document.bgColor=n3.document.bgColor=n4.document.bgColor=c1;bL.document.bgColor=bT.document.bgColor=bR.document.bgColor=bB.document.bgColor=c2}\n'+
		'mTIT=function(){if(frames.length>8){fT.document.write("'+cTIT+'");fT.document.close();if ('+res+'){n2.document.write("'+cRESd+'");n2.document.close();n1.document.write("'+cRESr+'");n1.document.close();n0.document.write("'+cRESl+'");n0.document.close();n3.document.write("'+cRESbl+'");n3.document.close();n4.document.write("'+cRESbr+'");n4.document.close()};top.bCOL("'+wBG+'","'+wB+'")}else{setTimeout("mTIT()",20)}}\n'+
		'mT=function(x,y){top.window.moveTo(x,y)}\n'+
		'rT=function(w,h){top.window.resizeTo(w,h)}\n'+
		'top.rT(fW,fH);top.mT(px,py)\n'+
		'mTIT()\n'+
		'</script></HEAD>\n'+
		'<frameset border=0 framespacing=0 frameborder=0 rows="100%">\n'+
		'				<frame name=main src="'+u+'" '+fSO+'>\n'+
		'</frameset>\n'+
		'</HTML>'

/*
		var CWIN=window.open("",n,"fullscreen=1"+s)
		CWIN.moveTo(5000,0)
		CWIN.ft=true
		CWIN.document.write(cFRM)
		CWIN.document.close()
*/
	} else {
		var CWIN=window.open(u,n,wNS+s,true)
		CWIN.moveTo(X,Y)
	}
	CWIN.focus()
	CWIN.setURL=function(u) { if (this && !this.closed) { if (this.frames.main) this.frames.main.location.href=u; else this.location.href=u } }
	CWIN.closeIT=function() { if (this && !this.closed) this.close() }
	return CWIN
}                            

function openIT(u,W,H,X,Y,n,b,x,m,r) {
	var cU  ='close.gif'   //gif for close on normal state.
	var cO  ='close.gif'  //gif for close on mouseover.
	var cL  ='clock.gif'      //gif for loading indicator.
	var mU  ='minimize.gif'     //gif for minimize to taskbar on normal state.
	var mO  ='minimize.gif'    //gif for minimize to taskbar on mouseover.
	var xU  ='max.gif'     //gif for maximize normal state.
	var xO  ='max.gif'    //gif for maximize on mouseover.
	var rU  ='restore.gif'     //gif for minimize on normal state.
	var rO  ='restore.gif'    //gif for minimize on mouseover.
	var tH  ='<font face=verdana size=2>Chromeless Window</font>'   //title for the title bar in html format.
	var tW  ='Chromeless Window'   //title for the task bar of Windows.
	var wB  ='#D5D5FF'   //Border color.
	var wBs ='#D5D5FF'   //Border color on window drag.
	var wBG ='#D5D5FF'   //Background of the title bar.
	var wBGs='#D5D5FF'   //Background of the title bar on window drag.
	var wNS ='toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0'  //Html parameters for Netscape.
	var fSO ='scrolling=auto noresize'   //Html parameters for main content frame.
	var brd =b||5;   //Extra border size.
	var max =x||false;   //Maxzimize option (true|false).
	var min =m||false;   //Minimize to taskbar option (true|false).
	var res =r||false;   //Resizable window (true|false).
	var tsz =20;   //Height of title bar.
	return chromeless(u,n,W,H,X,Y,cU,cO,cL,mU,mO,xU,xO,rU,rO,tH,tW,wB,wBs,wBG,wBGs,wNS,fSO,brd,max,min,res,tsz)
}
