// JavaScript Document

var fl = null;
var sh = null;
var hiddenObjects = new Array();
var returnField = null;
var wasError = false;

function InitFloater() {
	fl = document.getElementById("_floater");
	sh = document.getElementById("_floaterShader");
	sh.onmousedown = FloaterClickCancel;
	fl.SetText = function(newtext) {
		// Here should be the code that updates the proper element
		document.getElementById("_dummytext").innerHTML = newtext;
	}
	var preservers = document.getElementsByName("_heightPreserver");
	for (var i=0;i<preservers.length;i++) {
		preservers[i].style.width = "1px";
		preservers[i].style.height = preservers[i].parentNode.offsetHeight + "px";
	}
}

function ShowFloater(text,optField,optWasError) {
	if (sh == null || fl == null) return;
	if (typeof optField == "undefined") returnField = null; else returnField = optField;
	if (typeof optWasError == "undefined") wasError = false; else wasError = optWasError;
	sh.style.width = document.body.scrollWidth + "px";
	sh.style.height = document.body.scrollHeight + "px";
	sh.style.top = sh.style.left = "0px";
	var selects = document.getElementsByTagName("select");
	for (var i=0;i<selects.length;i++) {
		selects[i].style.display = "none";
		hiddenObjects.push(selects[i]);
	}
	fl.SetText(text);
	fl.style.left = Math.round((document.body.scrollWidth - fl.offsetWidth) / 2) + "px";
	fl.style.top = document.body.scrollTop + Math.round((document.body.clientHeight - fl.offsetHeight) / 2) + "px";
	document.body.onkeydown = FloaterCheckClose;
	if (document.getElementById("_altFocus") != null) document.getElementById("_altFocus").focus();
}

function FloaterCheckClose(ev) {
	if (typeof event != "undefined") {
		var kc = event.keyCode;
		event.cancelBubble = true;
	} else {
		var kc = ev.which;
		ev.preventDefault();
		ev.stopPropagation();
	}
	if (kc == 13 || kc == 27) {
		HideFloater();
	}
	return false;
}

function HideFloater() {
	document.body.onkeydown = null;
	for (var i=0;i<hiddenObjects.length;i++) {
		hiddenObjects[i].style.display = "inline";
	}
	hiddenObjects = new Array();
	sh.style.width = sh.style.height = "1px";
	sh.style.top = "-1000px";
	sh.style.left = "20px";
	fl.style.top = "-1000px";
	fl.style.left = "20px";
	if (returnField != null && typeof returnField.focus != "undefined") {
		returnField.focus();
		if (wasError == true) {
			returnField.erredField = true;
			returnField.className = (returnField.className.indexOf("fieldError")==-1)?(returnField.className + " fieldError"):returnField.className;
			returnField.onblur = FloaterErroFieldBlur;
		}
	}
}

function FloaterErroFieldBlur(ev) {
	if (typeof event == "undefined") {
		var te = ev.target;
	} else {
		var te = event.srcElement;
	}
	if (te.erredField == true) {
		te.className = (te.className.indexOf("fieldError")==-1)?(te.className):(te.className.replace(" fieldError",""));
		te.onblur = null;
		te.erredField = false;
	}
}

function FloaterClickCancel() {
	return false;
}