var http_request = false;
var http_request_s = false;
function DoRequest(id,todo,Vars) {

  http_request = false;
  request_id = id;
  request_url = window.location.href;

  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (!http_request) {
    alert('Es ist ein Fehler aufgetreten! [!XMLHTTP-Instanz]');
    return false;
  }

  a = 1;
  setOpacity(90);
  document.getElementById('ajax_load').style.display = 'block';


  http_request.onreadystatechange = alertInhalt;
  http_request.open('POST', todo + '&ts='+(new Date()).getTime(), true);
  http_request.setRequestHeader('Pragma', 'no_cache');
  http_request.setRequestHeader('Expires', '-1');
  http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  http_request.send('StartAjax=true' +Vars);
  // http_request.open('GET', url, true);
  //http_request.send(null);
}


function SendFormValues(formobj, id, todo, Vars) {
  var str = GetFormValues(formobj);
  
  DoRequest(id,todo,Vars + "&" + str);

}

function SendSilentFormValues(formobj, id, todo, Vars) {
  var str = GetFormValues(formobj);
  DoSilentRequest(id,todo,Vars + "&" + str)
}

function DoSilentRequest(id,todo,Vars) {

  http_request_s = false;
  request_id_s = id;


  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request_s = new XMLHttpRequest();
    if (http_request_s.overrideMimeType) {
      http_request_s.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request_s = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request_s = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if (!http_request_s) {
    alert('Es ist ein Fehler aufgetreten! [!XMLHTTP-Instanz]');
    return false;
  }
  http_request_s.onreadystatechange = alertInhalt_nsi;
  http_request_s.open('POST', todo, true);
  http_request_s.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
  http_request_s.send('StartAjax=true' +Vars);
  // http_request.open('GET', url, true);
  // http_request.send(null);
}


function setOpacity(value) {
  document.getElementById('ajax_load').style.opacity = value/100;
	document.getElementById('ajax_load').style.filter = 'alpha(opacity=' + value + ')';
}


var a = 1;
function fade_out() {
  if(a == 1)    
    setTimeout(fade_out,500);
  else
    document.getElementById('ajax_load').style.display = 'none';

  a++;
}


function GetFormValues(fobj) {

  var str = "";
  var valueArr = null;
  var val = "";
  var cmd = "";
  var valFunc = "";

  for(var i = 0;i < fobj.elements.length;i++) {

    switch(fobj.elements[i].type) {
      case "text":
        if(valFunc) {
          cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
          val = eval(cmd)
        }
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "textarea":
        if(valFunc) {
          cmd = valFunc + "(" + 'fobj.elements[i].value' + ")";
          val = eval(cmd)
        }
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "hidden":
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "button":
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "password":
        str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "select-one":
        str += fobj.elements[i].name + "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
      break;
      case "checkbox":
        if(fobj.elements[i].checked == true)
          str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
      case "radio":
        if(fobj.elements[i].checked == true)
          str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&";
      break;
    }
  }
  str = str.substr(0,(str.length - 1));
  
  return str;
}

function evalScript(scripts)
{	try
	{	if(scripts != '')	
		{	var script = "";
			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
	       	                         if (scripts !== null) script += arguments[1] + '\n';
 	        	                        return '';});
			if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch(e)
	{	alert(e)
	}
}

function nothing() {
  return true;
}

function alertInhalt() {

  if (http_request.readyState == 4) {

    if (http_request.status == 200) {
      document.getElementById(request_id).innerHTML = http_request.responseText;
      evalScript(http_request.responseText);

      
    } else {
      //alert('Es ist ein Fehler aufgetreten! [Request != 200]');
    }
    fade_out();
  }
}


function alertInhalt_nsi() {
  if (http_request_s.readyState == 4) {
    if (http_request_s.status == 200) {
      document.getElementById(request_id_s).innerHTML = http_request_s.responseText;
      evalScript(http_request_s.responseText);
      
    } else {
      //alert('Es ist ein Fehler aufgetreten! [Request != 200]');
    }
  }
}

