// Property of Omega Technology Group, Inc.
// http://www.OmegaTechnologyGroup.com
// Layout Debug Module
// Version: 2.0
// Dated: 2007 March 01

var debugRunning = false;
var debugVisible = false;

function runDebug() {
	debugRunning = true;
	var par = document.body;
	
	var elm01 = document.createElement('DIV');
	elm01.id = 'debugDiv';
	elm01.style.position = 'absolute';
	par.insertBefore(elm01,par.firstChild);
	dbDiv = new LayerObj('debugDiv');
	dbDiv.setPos(25,25);
	dbDiv.setSize(250,250);
	dbDiv.setStyle("z-index",100);
	dbDiv.setVisible(false);

	dbPlate = appendElem('IMG', 'debugPlate', dbDiv.obj);
	dbPlate.obj.src = 'scripts/debug/debugplate.gif';
	dbPlate.obj.border = '3px';
	dbPlate.setPos(0,0);
	dbPlate.setSize(245,245);
	
	dbClose = appendElem('IMG', 'debugClose', dbDiv.obj);
	dbClose.obj.src = 'scripts/debug/debugclose.gif';
	dbClose.setPos(221,5);

	dbResize = appendElem('IMG', 'debugResize', dbDiv.obj);
	dbResize.obj.src = 'scripts/debug/debugresize.gif';
	dbResize.setPos(194,5);

	dbLabel1 = appendText('debugLabel1', dbDiv.obj, 'Id');
	dbLabel1.setPos(30,5);
	dbEdit1 = appendElem('INPUT', 'debugEdit1', dbDiv.obj);
	dbEdit1.obj.type = 'text';
	dbEdit1.obj.readOnly = true;
	dbEdit1.setPos(50,5);
	dbEdit1.setSize(100,14);

	dbLabel2 = appendText('debugLabel2', dbDiv.obj, 'Parent');
	dbLabel2.setPos(5,27);
	dbEdit2 = appendElem('INPUT', 'debugEdit2', dbDiv.obj);
	dbEdit2.obj.type = 'text';
	dbEdit2.obj.readOnly = true;
	dbEdit2.setPos(50,27);
	dbEdit2.setSize(100,14);

	dbLabel3 = appendText('debugLabel3', dbDiv.obj, 'Lt');
	dbLabel3.setPos(5,55);
	dbEdit3 = appendElem('INPUT', 'debugEdit3', dbDiv.obj);
	dbEdit3.obj.type = 'text';
	dbEdit3.obj.readOnly = true;
	dbEdit3.setPos(53,55);
	dbEdit3.setSize(30,14);

	dbLabel5 = appendText('debugLabel5', dbDiv.obj, 'Top');
	dbLabel5.setPos(100,55);
	dbEdit5 = appendElem('INPUT', 'debugEdit5', dbDiv.obj);
	dbEdit5.obj.type = 'text';
	dbEdit5.obj.readOnly = true;
	dbEdit5.setPos(155,55);
	dbEdit5.setSize(30,14);

	dbLabel9 = appendText('debugLabel9', dbDiv.obj, 'Width');
	dbLabel9.setPos(5,77);
	dbEdit9 = appendElem('INPUT', 'debugEdit9', dbDiv.obj);
	dbEdit9.obj.type = 'text';
	dbEdit9.obj.readOnly = true;
	dbEdit9.setPos(53,77);
	dbEdit9.setSize(30,14);

	dbLabel10 = appendText('debugLabel10', dbDiv.obj, 'Height');
	dbLabel10.setPos(100,77);
	dbEdit10 = appendElem('INPUT', 'debugEdit10', dbDiv.obj);
	dbEdit10.obj.type = 'text';
	dbEdit10.obj.readOnly = true;
	dbEdit10.setPos(155,77);
	dbEdit10.setSize(30,14);

	dbLabel4 = appendText('debugLabel4', dbDiv.obj, 'Rt');
	dbLabel4.setPos(5,105);
	dbEdit4 = appendElem('INPUT', 'debugEdit4', dbDiv.obj);
	dbEdit4.obj.type = 'text';
	dbEdit4.obj.readOnly = true;
	dbEdit4.setPos(53,105);
	dbEdit4.setSize(30,14);

	dbLabel6 = appendText('debugLabel6', dbDiv.obj, 'Bot');
	dbLabel6.setPos(100,105);
	dbEdit6 = appendElem('INPUT', 'debugEdit6', dbDiv.obj);
	dbEdit6.obj.type = 'text';
	dbEdit6.obj.readOnly = true;
	dbEdit6.setPos(155,105);
	dbEdit6.setSize(30,14);

	dbLabel7 = appendText('debugLabel7', dbDiv.obj, 'Ofs Rt');
	dbLabel7.setPos(5,127);
	dbEdit7 = appendElem('INPUT', 'debugEdit7', dbDiv.obj);
	dbEdit7.obj.type = 'text';
	dbEdit7.obj.readOnly = true;
	dbEdit7.setPos(53,127);
	dbEdit7.setSize(30,14);

	dbLabel8 = appendText('debugLabel8', dbDiv.obj, 'Ofs Bot');
	dbLabel8.setPos(100,127);
	dbEdit8 = appendElem('INPUT', 'debugEdit8', dbDiv.obj);
	dbEdit8.obj.type = 'text';
	dbEdit8.obj.readOnly = true;
	dbEdit8.setPos(155,127);
	dbEdit8.setSize(30,14);

	dbLabel11 = appendText('debugLabel11', dbDiv.obj, 'z-Index');
	dbLabel11.setPos(5,155);
	dbEdit11 = appendElem('INPUT', 'debugEdit11', dbDiv.obj);
	dbEdit11.obj.type = 'text';
	dbEdit11.obj.readOnly = true;
	dbEdit11.setPos(53,155);
	dbEdit11.setSize(30,14);

	dbLabel12 = appendText('debugLabel12', dbDiv.obj, 'Cl-W');
	dbLabel12.setPos(5,210);
	dbEdit12 = appendElem('INPUT', 'debugEdit12', dbDiv.obj);
	dbEdit12.obj.type = 'text';
	dbEdit12.obj.readOnly = true;
	dbEdit12.setPos(53,210);
	dbEdit12.setSize(30,14);

	dbLabel13 = appendText('debugLabel13', dbDiv.obj, 'Cl-H');
	dbLabel13.setPos(100,210);
	dbEdit13 = appendElem('INPUT', 'debugEdit13', dbDiv.obj);
	dbEdit13.obj.type = 'text';
	dbEdit13.obj.readOnly = true;
	dbEdit13.setPos(155,210);
	dbEdit13.setSize(30,14);

	dbRadioDiv = appendElem('DIV', 'debugRadioDiv', dbDiv.obj);
	dbRadioDiv.setPos(5,183);
	var innObj = dbRadioDiv.obj;
	innObj.innerHTML = 'Position ';
	innObj.innerHTML = innObj.innerHTML + '<input name="debugRadio" type="radio" id="debugRadio1" checked>';
	innObj.innerHTML = innObj.innerHTML + 'Size';
	innObj.innerHTML = innObj.innerHTML + '<input name="debugRadio" type="radio" id="debugRadio2">';
	dbRadio1 = document.getElementById('debugRadio1');
	dbRadio2 = document.getElementById('debugRadio2');

	dbClearDiv = appendElem('DIV', 'debugClearDiv', dbDiv.obj);
	dbClearDiv.setPos(220, 31);
	var innObj2 = dbClearDiv.obj;
	innObj2.innerHTML = '<input type="button" id="debugClearButton" value="Clr">';
	dbClearBut = new LayerObj('debugClearButton');
	dbClearBut.setSize(27,27);

	dbUpDiv = appendElem('DIV', 'debugUpDiv', dbDiv.obj);
	dbUpDiv.setPos(167, 4);
	var innObj3 = dbUpDiv.obj;
	innObj3.innerHTML = '<input type="button" id="debugUpButton" value="Up">';
	dbUpBut = new LayerObj('debugUpButton');
	dbUpBut.setSize(27,27);

	debugMoveState = false;
	debugLayoutMode = true;
	document.onkeydown=debugProcessKey;
	debugHide();
}

function appendElem(type, id, par) {
	var tmp = document.createElement(type);
	tmp.id = id;
	tmp.style.position = 'absolute';
	par.appendChild(tmp);
	return new LayerObj(id);
}

function appendText(id, par, text) {
	var div = appendElem('DIV', id, par);
	var txt = document.createTextNode(text);
	div.obj.appendChild(txt);
	return div;
}

function debugShow(e) {
	debugClear();
	dbDiv.setVisible(true);
	dbEdit12.obj.value = is.clientWidth;
	dbEdit13.obj.value = is.clientHeight;
	document.onclick=debugProcessMouse;
	debugVisible = true;
}

function debugHide() {
	dbDiv.setVisible(false);
	document.onclick=null;
	debugClear();
	debugVisible = false;
}

function debugResize() {
	var winW = is.minWidth + 200;
	var winH = is.minHeight + 300;
	window.resizeTo(winW, winH);
	winW = document.documentElement.clientWidth;
	winH = document.documentElement.clientHeight;
	winW = winW-is.minWidth;
	winH = winH-is.minHeight;
	winW = is.minWidth + 200 - winW;
	winH = is.minHeight + 300 - winH;
	window.resizeTo(winW, winH);
	Load();
	dbEdit12.obj.value = is.clientWidth;
	dbEdit13.obj.value = is.clientHeight;
}

function debugProcessMouse(e) {
	var obj = getEventObj(e);

	if(obj.id=='debugUpButton'){
		obj = getObj(dbEdit2.obj.value);
	}


	if(debugMoveState){
		debugStopMove(e);
	}else if(obj==dbClose.obj){
		debugHide();
	}else if(obj==dbResize.obj){
		debugResize();
	}else if(obj.id=='debugClearButton'){
		debugClear();
	}else if(obj.id=='debugRadio1'){
		debugLayoutMode = true;
		obj.blur();
	}else if(obj.id=='debugRadio2'){
		debugLayoutMode = false;
		obj.blur();
	}else if(obj.parentNode.id=='debugDiv'){
		if(obj.id=='debugPlate') debugStartMove(e);
	}else{
		if (obj.parentNode.nodeName=='#document'){
			dbEdit1.obj.value = 'BODY'
			dbEdit2.obj.value = 'HTML'
		}else if(obj.parentNode.nodeName=='BODY'){
			dbEdit1.obj.value = obj.id;
			dbEdit2.obj.value = 'BODY'
		}else{
			dbEdit1.obj.value = obj.id;
			dbEdit2.obj.value = obj.parentNode.id;
		}
		if(dbEdit1.obj.value=='BODY'){
			dbEdit3.obj.value = '';
			dbEdit4.obj.value = '';
			dbEdit5.obj.value = '';
			dbEdit6.obj.value = '';
			dbEdit7.obj.value = '';
			dbEdit8.obj.value = '';
			dbEdit9.obj.value = is.clientWidth;
			dbEdit10.obj.value = is.clientHeight;
			dbEdit11.obj.value = '';
			dbEdit12.obj.value = is.clientWidth;
			dbEdit13.obj.value = is.clientHeight;
		}else{
			dbEdit3.obj.value = obj.layerObj.left;
			dbEdit4.obj.value = obj.layerObj.rightPos;
			dbEdit5.obj.value = obj.layerObj.top;
			dbEdit6.obj.value = obj.layerObj.bottomPos;
			if (obj.parentNode.nodeName=='BODY'){
				dbEdit7.obj.value = is.clientWidth-(obj.layerObj.rightPos);
				dbEdit8.obj.value = is.clientHeight-(obj.layerObj.bottomPos);
			}else{
				dbEdit7.obj.value = obj.parentNode.offsetWidth-(obj.layerObj.rightPos);
				dbEdit8.obj.value = obj.parentNode.offsetHeight-(obj.layerObj.bottomPos);
			}
			dbEdit9.obj.value = obj.layerObj.width;
			dbEdit10.obj.value = obj.layerObj.height;
			dbEdit11.obj.value = obj.layerObj.getStyle('z-index');
			dbEdit12.obj.value = is.clientWidth;
			dbEdit13.obj.value = is.clientHeight;
		}
	}
}

function debugProcessKey(e) {
	if (!e) e = window.event;
	if(e.ctrlKey && (e.keyCode==192)) {
		debugShow();
	} else if(e.keyCode>36 && e.keyCode<41 && debugVisible && dbEdit1.obj.value!='') {
		var obj = document.getElementById(dbEdit1.obj.value).layerObj;
		if (debugLayoutMode) {
			switch(e.keyCode) {
				case 37:
					obj.setLeft(obj.left-1);
					dbEdit3.obj.value = obj.left;
					dbEdit4.obj.value = obj.rightPos;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit7.obj.value = is.clientWidth-(obj.rightPos);
					}else{
						dbEdit7.obj.value = obj.obj.parentNode.offsetWidth-(obj.rightPos);
					}
					break;
				case 38:
					obj.setTop(obj.top-1);
					dbEdit5.obj.value = obj.top;
					dbEdit6.obj.value = obj.bottomPos;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit8.obj.value = is.clientHeight-(obj.bottomPos);
					}else{
						dbEdit8.obj.value = obj.obj.parentNode.offsetHeight-(obj.bottomPos);
					}
					break;
				case 39:
					obj.setLeft(obj.left+1);
					dbEdit3.obj.value = obj.left;
					dbEdit4.obj.value = obj.rightPos;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit7.obj.value = is.clientWidth-(obj.rightPos);
					}else{
						dbEdit7.obj.value = obj.obj.parentNode.offsetWidth-(obj.rightPos);
					}
					break;
				case 40:
					obj.setTop(obj.top+1);
					dbEdit5.obj.value = obj.top;
					dbEdit6.obj.value = obj.bottomPos;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit8.obj.value = is.clientHeight-(obj.bottomPos);
					}else{
						dbEdit8.obj.value = obj.obj.parentNode.offsetHeight-(obj.bottomPos);
					}
					break;
			}
		}else{
			switch(e.keyCode) {
				case 37:
					obj.setWidth(obj.width-1);
					dbEdit4.obj.value = obj.rightPos;
					dbEdit9.obj.value = obj.width;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit7.obj.value = is.clientWidth-(obj.rightPos);
					}else{
						dbEdit7.obj.value = obj.obj.parentNode.offsetWidth-(obj.rightPos);
					}
					break;
				case 38:
					obj.setHeight(obj.height-1);
					dbEdit6.obj.value = obj.bottomPos;
					dbEdit10.obj.value = obj.height;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit8.obj.value = is.clientHeight-(obj.bottomPos);
					}else{
						dbEdit8.obj.value = obj.obj.parentNode.offsetHeight-(obj.bottomPos);
					}
					break;
				case 39:
					obj.setWidth(obj.width+1);
					dbEdit4.obj.value = obj.rightPos;
					dbEdit9.obj.value = obj.width;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit7.obj.value = is.clientWidth-(obj.rightPos);
					}else{
						dbEdit7.obj.value = obj.obj.parentNode.offsetWidth-(obj.rightPos);
					}
					break;
				case 40:
					obj.setHeight(obj.height+1);
					dbEdit6.obj.value = obj.bottomPos;
					dbEdit10.obj.value = obj.height;
					if (obj.obj.parentNode.nodeName=='BODY'){
						dbEdit8.obj.value = is.clientHeight-(obj.bottomPos);
					}else{
						dbEdit8.obj.value = obj.obj.parentNode.offsetHeight-(obj.bottomPos);
					}
					break;
			}
		}
	}
}

function debugClear() {
	dbEdit1.obj.value = '';
	dbEdit2.obj.value = '';
	dbEdit3.obj.value = '';
	dbEdit4.obj.value = '';
	dbEdit5.obj.value = '';
	dbEdit6.obj.value = '';
	dbEdit7.obj.value = '';
	dbEdit8.obj.value = '';
	dbEdit9.obj.value = '';
	dbEdit10.obj.value = '';
	dbEdit11.obj.value = '';
	dbEdit12.obj.value = '';
	dbEdit13.obj.value = '';
	dbRadio1.checked = true;
	debugLayoutMode = true;
}

function debugStartMove(e){
	var dbPosX = 0;
	var dbPosY = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY){
		dbPosX = e.pageX;
		dbPosY = e.pageY;
	}else if (e.clientX || e.clientY){
		dbPosX = e.clientX + document.body.scrollLeft;
		dbPosY = e.clientY + document.body.scrollTop;
	}
	dbDiffX = dbPosX-dbDiv.left;
	dbDiffY = dbPosY-dbDiv.top;
	dbDiv.setStyle('cursor','move');
	document.onmousemove=debugMove;
	debugMoveState = true;
}

function debugMove(e){
	var dbPosX = 0;
	var dbPosY = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY){
		dbPosX = e.pageX;
		dbPosY = e.pageY;
	}else if (e.clientX || e.clientY){
		dbPosX = e.clientX + document.body.scrollLeft;
		dbPosY = e.clientY + document.body.scrollTop;
	}
	dbDiv.setLeft(dbPosX-dbDiffX);	
	dbDiv.setTop(dbPosY-dbDiffY);	
}

function debugStopMove(e){
	dbDiv.setStyle('cursor','auto');
	document.onmousemove=null;
	debugMoveState = false;
}
