var popupQuickCallback = null;
var popupCallbacks = new Array();
var popupBackgroundElement = null;
var popupContentElement = null;
var popupBackgroundBody = null;
var popupCloseFunction = null;
var popupReload = true;

function quickPopup(_url,_callback) {
	if(_callback != undefined) {
   	popupQuickCallback = _callback;
   }
	popupShowBackground();
	new AjaxRequest(quickPopupParse,_url,'POST','ajax=1');
}
function quickPopupParse(html,xml) {
	popupSetContent(html);
   if(popupQuickCallback) {
   	popupQuickCallback();
   }
}

function registerPopup(_name,_callback) {
	popupCallbacks[_name] = new Array();
   popupCallbacks[_name] = _callback;;
}

function openPopup(_name,_var1,_var2,_var3,_var4) {
	if(popupCallbacks[_name]) {
	   popupShowBackground();
   	popupCallbacks[_name](_var1,_var2,_var3,_var4 );
   }
}

function form2param(_form) {
	query = "";
	formElement = _form; //document.getElementById(_form);
   if(formElement) {
	   formElements = formElement.elements.length;
	   for(i = 0;i < formElements;i++) {
	      add = true;
	      if(formElement.elements[i].type == "checkbox" && !formElement.elements[i].checked) {
	         add = false;
	      } else if(formElement.elements[i].type == "image") {
	         add = false;
         }
	      if(add) {
	         query += escape(formElement.elements[i].name) + "=" + escape(formElement.elements[i].value) + "&";
	      }
	   }
   }
   return query;
}

function popupSetContent(_content) {
	popupContentElement.innerHTML = _content;
   centerize('popup_content');
}

function popupShowBackground() {
	popupBackgroundElement = document.getElementById('popup_background');
	popupContentElement    = document.getElementById('popup_content');
   popupBackgroundBody    = document.getElementsByTagName('body')[0];
   popupBackgroundElement.style.display = 'block';
   popupContentElement.style.display = 'block';
   popupUpdateBackground();
   popupBackgroundUpdater = window.setInterval("popupUpdateBackground()",500);
	hideSelects();
   if(popupReload) {
	   popupContentElement.innerHTML = "Lade...";
   }
   centerize('popup_content');
}

function popupUpdateBackground() {
	width = popupBackgroundBody.offsetWidth;
	height = popupBackgroundBody.offsetHeight + scrolled();
	popupBackgroundElement.style.width = width + "px";
	popupBackgroundElement.style.height = height + "px";
	popupCenterContent();
}

function popupCenterContent() {
   centerize('popup_content');
}

function popupCloseBackground() {
   if(popupCloseFunction != null) {
	   popupCloseFunction();
      popupCloseFunction = null;
   }
	window.clearInterval(popupBackgroundUpdater);
	popupBackgroundElement.style.display = "none";
	popupContentElement.style.display = "none";
   popupContentElement.innerHTML = "";
	showSelects();
}

function scrolled() {
   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 AjaxRequest(func,page,mode,data) {
	var xmlHttp;
   if(typeof(XMLHttpRequest) != 'undefined') {
      xmlHttp = new XMLHttpRequest();
   }
   if (!xmlHttp) {
      try {
         xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
      } catch(e) {
         try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
         } catch(e) {
            xmlHttp  = false;
         }
      }
   }
   if(xmlHttp) {
   	xmlHttp.onreadystatechange = function() {
         if(xmlHttp.readyState == 4 && func) {
           	func(xmlHttp.responseText,xmlHttp.responseXML);
         }
      }
		xmlHttp.open(mode,page, true);
      xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      if(mode == 'POST') {
      	xmlHttp.send(data);
      } else {
      	xmlHttp.send('');
      }
   }
   return true;
}

function hideSelects() {
	selects = document.getElementsByTagName("select");
   for(i = 0; i < selects.length;i++) {
		selects[i].style.visibility = "hidden";
   }
}

function showSelects() {
	selects = document.getElementsByTagName("select");
   for(i = 0; i < selects.length;i++) {
		selects[i].style.visibility = "visible";
   }
}
