var windowControl = new Object();

windowControl.init = function() {
	windowControl.dragObject = null;
	windowControl.focusNewObject = null;
	windowControl.focusOldObject = null;
	windowControl.moveTarget = null;
	windowControl.dragStartX = 0;
	windowControl.dragStartY = 0;
	windowControl.dragStartObjectX = 0;
	windowControl.dragStartObjectY = 0;
	windowControl.dragMouseX = 0;
	windowControl.dragMouseY = 0; 

	windowControl.windowId = 0;
	windowControl.windowNum = 1;
	windowControl.windowStartX = 0;
	windowControl.windowStartY = 0;
	windowControl.windowSpaceX = 10;
	windowControl.windowSpaceY = 10;
	windowControl.windowTopCus = 60;
};


windowControl.windowOpen = function (windowId, linkPath, formValue, setLocal, callBack) {
	try {
		windowScrollTop = document.documentElement.scrollTop;
		windowScrollLeft = document.documentElement.scrollLeft;
	} catch (E) {
	}
	if ((windowScrollTop < 0) || (!windowScrollTop)) {
		try {
			windowScrollTop = document.body.scrollTop;
			windowScrollLeft = document.body.scrollLeft;
		} catch (E) {
		}
	}

	windowControl.windowSpaceNum = windowControl.windowNum % 10;
	windowControl.windowX = windowControl.windowStartX + windowControl.windowSpaceX * windowControl.windowSpaceNum + windowScrollLeft;
	windowControl.windowY = windowControl.windowStartY + windowControl.windowSpaceY * windowControl.windowSpaceNum + windowScrollTop;
	windowControl.windowZ = 20+windowControl.windowNum;
	var newWindow = document.getElementById(windowId);
	if (!newWindow) {
		var newWindow = document.createElement('DIV');
		newWindow.style.position = "absolute";
		newWindow.style.zIndex = windowControl.windowZ;
		newWindow.name = windowId;
		newWindow.setAttribute('id', windowId);
		windowControl.windowNum++;
		windowControl.focusOldObject = newWindow;
		var windowShowDiv = document.getElementById('showWindow');
		windowShowDiv.appendChild(newWindow);
	} else {
		newWindow.innerHTML = "";
		windowControl.focusNewObject = newWindow;
		windowControl.changeFocus();
	}
	newWindow.style.left = windowControl.windowX+"px";
	newWindow.style.top = windowControl.windowY+"px";
	newWindow.style.display = "block";

	if (linkPath) XMLHttp.sendReq('POST', linkPath, formValue, callBack, newWindow, 'windowOpen');
	return newWindow;
};
	
windowControl.windowClose = function (windowId) {
	var windowDiv = document.getElementById(windowId);
	if ((form.closeWindowId) && (form.closeWindowId == windowId)) {
		form.Changed = 0;
	}
	windowDiv.style.display = "none";
};

windowControl.changeFocus = function (e) {
	if ((windowControl.focusNewObject) && (windowControl.focusOldObject) && (windowControl.focusNewObject != windowControl.focusOldObject)) {
		var oldZindex = windowControl.focusNewObject.style.zIndex;
		windowControl.focusNewObject.style.zIndex = windowControl.focusOldObject.style.zIndex;
		windowControl.focusOldObject.style.zIndex = oldZindex;
		windowControl.focusOldObject = windowControl.focusNewObject;
	}
};
	
windowControl.dragStart = function (e) {
	var evn = e.target || e.srcElement;
	if (!evn.windowId) return;
	windowControl.focusNewObject = windowControl.dragObject = document.getElementById(evn.windowId);
	windowControl.changeFocus();
	
	document.onmousedown = windowControl.dragOnMouseDown;
	document.onmousemove = windowControl.dragOnMouseMove;
	document.onmouseup = windowControl.dragStop;
};
	
windowControl.dragStop = function () {
	windowControl.enableSelection(document.body);
	document.onmousedown=null;
	document.onmousemove=null;
	document.onmouseup=null;
};

windowControl.dragOnMouseDown = function (e) {
	if (!windowControl.dragObject) {
		windowControl.dragStop();
		return;
	}
	windowControl.disableSelection(document.body);
	var pos = XMLHttp.getObjectPos(windowControl.dragObject);
	windowControl.dragStartObjectX = pos[0];
	windowControl.dragStartObjectY = pos[1];

	try{
		windowControl.dragStartX = window.event.x;
		windowControl.dragStartY = window.event.y;
	}
	catch(E) {
		windowControl.dragStartX = e.pageX;
		windowControl.dragStartY = e.pageY;
	}
};

windowControl.dragOnMouseMove = function (e) {
	if (!windowControl.dragObject) {
		windowControl.dragStop();
		return;
	}
	
	try {
		drageX = window.event.x;
	}
	catch(E) {
		drageX = e.pageX;
	}
	try {
		drageY = window.event.y
	}
	catch(E) {
		drageY = e.pageY;
	}
	pointX = (drageX - windowControl.dragStartX) + windowControl.dragStartObjectX;
	pointY = (drageY - windowControl.dragStartY) + windowControl.dragStartObjectY;
	
	if (pointX < 0 ) windowControl.dragObject.style.left = 0+"px";
	else windowControl.dragObject.style.left = pointX+"px";
	if (pointY < 0 ) windowControl.dragObject.style.top = 0+"px";
	else windowControl.dragObject.style.top = pointY+"px";
};

windowControl.enableSelection = function (target) {
	if (typeof target.onselectstart!="undefined") {//IE route
		target.onselectstart = function() {return true};
	} else if (typeof target.style.MozUserSelect!="undefined") {//Firefox route
		target.style.MozUserSelect = "";
	} else {//All other route (ie: Opera)
		target.onmousedown = function() {return true};
	}
	target.style.cursor = "default";
};

windowControl.disableSelection = function (target) {
	if (typeof target.onselectstart!="undefined") {//IE route
		target.onselectstart = function() {return false};
	} else if (typeof target.style.MozUserSelect!="undefined") {//Firefox route
		target.style.MozUserSelect = "none";
	} else {//All other route (ie: Opera)
		target.onmousedown = function() {return false};
	}
	target.style.cursor = "default";
};

