function focusDefaultTextField(textfield, def) {
	if (textfield.value == def) {
		textfield.style.color = "#000";
		textfield.value = "";
	}
}

function focusDefaultPasswordField(textfield, def) {
	if (textfield.value == def) {
		textfield.style.color = "#000";
		textfield.value = "";
		textfield.type = "password";
	}
}

function focusEmptyTextField(textfield, def) {
	if(textfield.innerHTML==def) {
		textfield.innerHTML="";
		textfield.style.color = "#000";
	}
}

function getInnerWidth() {
  if (self.innerHeight)
    return self.innerWidth;
  else if (document.documentElement && document.documentElement.clientHeight)
    return document.documentElement.clientWidth;
  else if (document.body)
    return document.body.clientWidth;
}

function getInnerHeight() {
  if (self.innerHeight)
    return self.innerHeight;
  else if (document.documentElement && document.documentElement.clientHeight)
    return document.documentElement.clientHeight;
  else if (document.body)
    return document.body.clientHeight;
}

function getScrollLeft() {
  if (self.pageYOffset)
    return self.pageXOffset;
  else if (document.documentElement && document.documentElement.scrollTop)
    return document.documentElement.scrollLeft;
  else if (document.body)
		return document.body.scrollLeft;
}

function getScrollTop() {
  if (self.pageYOffset)
    return self.pageYOffset;
  else if (document.documentElement && document.documentElement.scrollTop)
    return document.documentElement.scrollTop;
  else if (document.body)
    return document.body.scrollTop;
}

function getScrollHeight() {
	if (window.innerHeight && window.scrollMaxY) {
		return window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		return document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		return document.body.offsetHeight;
	}
}

function setDialogHTML(id, html) {
  var body = document.getElementById("_" + id + "_body");
  body.innerHTML = html;
}

function showDialog(id) {
  var body = document.getElementById("_" + id + "_overlay");
	body.style.display = "";
  var left = getScrollLeft() + (getInnerWidth() - body.clientWidth) / 2;
  var top = getScrollTop() + (getInnerHeight() - body.clientHeight) / 2;
  body.style.left = left + "px";
	body.style.top = top + "px";
}

function hideDialog(id) {
	if (!id) {
		id = "defaultDialog";
	}
  var body = document.getElementById("_" + id + "_overlay");
	body.style.display = "none";
}

/* needs tools.js */
function openInDialog(url, dialogid, handler, ivwcode) {
	if (!dialogid) {
		dialogid = "defaultDialog";
	}
 	var resulthandler = function ( XML ) {
		hideDialog(dialogid);
		setDialogHTML(dialogid, XML.responseText);
		if (handler != null) {
			handler.call(this);
    }
		showDialog(dialogid);
  };
  if (url.indexOf("?") == -1) add = "?ts=";
  else add = "&ts=";
  callAjaxRequest(url + add + Math.random(), true, resulthandler, null, ivwcode);
}

function openInDialogIvw(url, ivwcode) {
	openInDialog(url, null, null, ivwcode);
}

function submitToDialog(url, dialogid) {
	openInDialog(url, dialogid);
	return false;
}

function submitToDialogIvw(url, ivwcode) {
	openInDialogIvw(url, ivwcode);
	return false;
}

/* needs tools.js */
function openUrl(url, action) {
 	var resulthandler = function() {
			action();
  };

  callAjaxRequest(url + "&ts=" + Math.random(), true, resulthandler);
}

function appendOverlay(div) {
	var overlayImg = document.createElement("img");
	overlayImg.src = '/img/indicator2.gif';
	var overlayText = document.createElement("div");
	overlayText.style.paddingTop = (Math.max(0, div.offsetHeight - 18)) / 2 + "px";
	overlayText.appendChild(overlayImg);
	overlayText.appendChild(document.createTextNode("  Bitte etwas Geduld"));
	var overlay = document.createElement("div");
	overlay.id = "reloadoverlay";
	overlay.style.width = div.offsetWidth + "px";
	overlay.style.height = div.offsetHeight + "px";
	overlay.appendChild(overlayText);
	div.appendChild(overlay);
}

function removeOverlay(div) {
	var overlay = document.getElementById("reloadoverlay");    
	div.removeChild(overlay);
}

function reload(id, url, postString, callback) {
	var div = document.getElementById(id);

 	var resulthandler = function(response) {
		$("#" + id).fadeOut("slow", function () {
	    div.innerHTML = response.responseText;
			$("#" + id).fadeIn("slow");
			if (callback) {
				callback();
			}
		});
  };

	appendOverlay(div);

	if (url.indexOf("?") < 0) {
		url = url + "?ts=" + Math.random();
	} else {
		url = url + "&ts=" + Math.random();
	}

	if (postString) {
	  callAjaxPostRequest(url, true, resulthandler, postString);
	} else {
	  callAjaxRequest(url, true, resulthandler);
	}
}

function reload2(id, url, postString) {
	var div = document.getElementById(id);

 	var resulthandler = function(response) {
		div.innerHTML = response.responseText;
  };

	if (url.indexOf("?") < 0) {
		url = url + "?ts=" + Math.random();
	} else {
		url = url + "&ts=" + Math.random();
	}

	if (postString) {
	  callAjaxPostRequest(url, true, resulthandler, postString);
	} else {
	  callAjaxRequest(url, true, resulthandler);
	}
}

/* method to submit a (spring) form to an overlay dialog
 * elems : form elements
 * target : url to submit to */
function submitFormToDialog(elems, target, ivwCode){
	var url = "?";
	var nr = elems.length;
	for(var i = 0; i < nr; i++){
		if(elems[i].type == "checkbox" || elems[i].type == "radio") {
			if (elems[i].checked) {
				if(i != 0) url = url + "&";
				url = url + elems[i].name + "=" + elems[i].value;
			}
		} else {
			if(elems[i].type != "button"){
				if(i != 0) url = url + "&";
				url = url + elems[i].name + "=" + elems[i].value;
			}
		}
	}
	if (ivwCode) {
		openInDialogIvw(target + url, ivwCode);
	} else {
		openInDialog(target + url);
	}
}

function postFormToDialog(elems, target, ivwCode, dialogid, handler) {
	var params = "";
	var nr = elems.length;
	for(var i = 0; i < nr; i++){
		if(elems[i].type == "checkbox" || elems[i].type == "radio") {
			if (elems[i].checked) {
				if(i != 0) params = params + "&";
				params = params + elems[i].name + "=" + elems[i].value;
			}
		} else {
			if(elems[i].type != "button"){
				if(i != 0) params = params + "&";
				params = params + elems[i].name + "=" + elems[i].value;
			}
		}
	}
	
	if (!dialogid) {
		dialogid = "defaultDialog";
	}
 	var resulthandler = function ( XML ) {
		hideDialog(dialogid);
		setDialogHTML(dialogid, XML.responseText);
		if (handler != null) {
			handler.call(this);
    }
		showDialog(dialogid);
  };
  if (params.length == 0) params = "ts=" + Math.random();
  else params = params + "&ts=" + Math.random();
  
  callAjaxPostRequest(target, true, resulthandler, params, ivwCode);
}
