var queue = new Array();
var xmlHttp = false;
String.prototype.removeWhiteSpaces = function () {
  return (this.replace(/\s+/g,""));
};
function sendRequest(file, queryString, div) {
    if (xmlHttp) {
		/* Request Daten in die Warteschlange setzen, falls der vorherige noch nicht abgeschlossen ist */
		if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3) {
			queueLength = queue.length;
			queue[queueLength] = new Array();
			queue[queueLength][0] = file;
			queue[queueLength][1] = queryString;
			queue[queueLength][2] = div;
			document.getElementById(div).innerHTML = '<img src="./images/loading.gif" width=20px height=20px border=0>'; //Optionaler Infotext
		} else {
			if(queryString == "") {
				xmlHttp.open('GET', file, true);
			} else {
				xmlHttp.open('POST', file, true);
				xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				xmlHttp.send(queryString);
			}
			xmlHttp.onreadystatechange = function () {
				if(xmlHttp.readyState == 2) {
					document.getElementById(div).innerHTML = '...loading...';
				}
				if(xmlHttp.readyState == 4) {
					if(xmlHttp.status == 200) {
						var splits = fw_AjaxParseJS();
						document.getElementById(div).innerHTML = splits[1];
						if (splits[0]!="") {
						  eval(splits[0]);
						}
					} else if(xmlHttp.status == 404) {
						document.getElementById(div).innerHTML = 'Inhalt kann nicht geladen werden..';
					}
					/* Warteschlange abarbeiten */
					queueLength = queue.length;
					if(queueLength != 0) {
						sendRequest(queue[0][0], queue[0][1], queue[0][2]);
						queue.shift(); //Erstes Element entfernen, den Rest eine Position nach vorne rücken
					}
				}
		   };
		  if(queryString == "") {
				xmlHttp.send(null);
		  }
		}
	}
	else {
	  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
         xmlHttp = new XMLHttpRequest();
      } else if (window.ActiveXObject) { // IE
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
	  sendRequest(file, queryString, div);
	}
}

function myCmsFetchXMLData (params) {
	var postdata = "";
    for (i=2; i<params.length; i++) {
      if (i%2!=0) {
	    postdata = postdata+"="+params[i];
	  }
	  else {
	    if (postdata!="") postdata = postdata+"&";
	    postdata = postdata+params[i];
	  }
    }
	sendRequest(params[0], postdata, params[1]);
}

function myCmsSetDatumChangerFeld (inelm,datum,elm,kallink,mindatum,maxdatum) {
  if (datum=="jetzt") {
    var cdat = new Date();
	var tag = cdat.getDate();
	var mon = cdat.getMonth()+1;
	var jahr = cdat.getFullYear();
	if (tag<10) tag = "0"+tag;
	if (mon<10) mon = "0"+mon;
	datum = tag+"."+mon+"."+jahr;
  }
  document.getElementById(inelm).value=datum;
  myCmsGetDatumSelector(elm,inelm,kallink,1,mindatum,maxdatum);
}

function myCmsGetDatumSelector (elm,inelm,kallink,showit,mindatum,maxdatum) {
    if (kallink!="") document.getElementById(kallink).innerHTML = "Kalender ausblenden";
	document.getElementById(elm).style.display = "block";
    var params = new Array();
    params[0] = "getdatumselector.php";
    params[1] = elm;
    params[2] = "elm";
    params[3] = elm;
    params[4] = "datum";
    params[5] = document.getElementById(inelm).value;
	params[6] = "inelm";
	params[7] = inelm;
	params[8] = "kallink";
	params[9] = kallink;
	params[10] = "showyears";
	params[11] = "1";
	params[12] = "showweeknums";
	params[13] = "1";
	params[14] = "mindatum";
	params[15] = mindatum;
	params[16] = "maxdatum";
	params[17] = maxdatum;
    myCmsFetchXMLData(params);
}

function fw_AjaxParseJS(){
  var code = "";
  var mytext = xmlHttp.responseText;
  while(mytext.length > 0){    
	var p = mytext.indexOf("\<script");
	if(p > -1){  
	  mytext = mytext.substring(p, mytext.length);
	  p = mytext.indexOf("\>");
	  if(p > -1){
		mytext = mytext.substring(p+1, mytext.length);
		p = mytext.indexOf("\<\/script\>");
		if(p > -1){
		  code += mytext.substr(0, p);
		  mytext = mytext.substring(p+9, mytext.length);
		}else{
		  break;
		}
	  }else{
		break;
	  }
	}else{ 
	  break;
	}
  }
  var splits = new Array();
  splits[0] = code;
  splits[1] = xmlHttp.responseText;
  return splits;
}