var fe_fe_page_request = false;


//-----------------------------------------
//
//-----------------------------------------
function makeRequest(url, containerid, parameters, sendtyp){

 fe_page_request = fe_find_request();
  
 if (!fe_page_request) {
	return false;
 }
 
 if (sendtyp == undefined) {
	var sendtyp = 'GET';
 }
 
 
 if (getObj(containerid)){
	getObj(containerid).innerHTML = '<img src="./modules/CMS/images/ajax_loader.gif">'
 }

 fe_page_request.onreadystatechange = function(){
 
	if (fe_page_request.readyState == 4) {
	
		if (fe_page_request.status == 200 || fe_page_request.status == "OK") {
			result = fe_page_request.responseText;
		
			// Container-ID uebergeben?
			if (containerid != ""){
				// Uebergeben Container-ID vorhanden?
				if (getObj(containerid)){
				
					//alert(containerid);
					getObj(containerid).innerHTML = unescape(result);
					
					launchJavascript(result);
				}			
			}
		
		} else {
			return false;
		}
 
	}
	
 } 
  
 if (sendtyp == 'GET' || sendtyp == "get"){
 
	fe_page_request.open('GET', url+parameters, true);
	fe_page_request.send(null);

 } else {
 
	// URL absolut machen
	//url = base_url + url;	
	
	fe_page_request.open('POST', url, true);
	fe_page_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	fe_page_request.setRequestHeader("Content-length", parameters.length);
	fe_page_request.setRequestHeader("Connection", "close");
	fe_page_request.send(parameters);
	
 } 

}

//-----------------------------------------
//
//-----------------------------------------
function launchJavascript(responseText) {
  // RegExp from prototype.sonio.net
  var ScriptFragment = '(?:<script.*?>)((\n|.)*?)(?:</script>)';

  var match    = new RegExp(ScriptFragment, 'img');
  var scripts  = responseText.match(match);

    if(scripts) {
        var js = '';
        for(var s = 0; s < scripts.length; s++) {
            var match = new RegExp(ScriptFragment, 'im');
            js += scripts[s].match(match)[1];
        }
	
        eval(js);
    }
}

//-----------------------------------------
//
//-----------------------------------------
function fe_find_request(){

 var fe_page_request = false
 
 if (window.XMLHttpRequest) // if Mozilla, Safari etc
	fe_page_request = new XMLHttpRequest()
	if (fe_page_request.overrideMimeType) {
		fe_page_request.overrideMimeType('text/html');
	}
 else if (window.ActiveXObject){ // if IE
 try {
	fe_page_request = new ActiveXObject("Msxml2.XMLHTTP");
 } 
 catch (e){
 try{
	fe_page_request = new ActiveXObject("Microsoft.XMLHTTP");
 }
   catch (e){
	alert( "Error: " + e );
   }
 }
 }else
	return false
	
 if (!fe_page_request) {
        alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
        return false;
 }

 return fe_page_request;

}

//-----------------------------------------
//
//-----------------------------------------
function postajaxform(url, containerid, frm) {
 
 var parameters = fe_getForm(frm); 

 if (!parameters) {  
	return false;
 } else {
	
	window.setTimeout(function(){
		makeRequest(url, containerid, parameters, 'POST');
	}, 100)
	
 }

}

//-----------------------------------------
//
//-----------------------------------------
function fe_getForm(fobj) {  
  var str = "";  
  var ft = "";  
  var fv = "";  
  var fn = "";  
  var els = "";  
  
  for (var i = 0;i < fobj.elements.length;i++) {  
  
	els = fobj.elements[i];  
	ft = els.title;  
	fv = els.value;  
	fn = els.name;  

	switch(els.type) {  
	   case "text":  
	   case "hidden":  
	   case "password":  
	   case "textarea":  
	    // is it a required field?  
	    if(encodeURI(ft) == "required" && encodeURIComponent(fv).length < 1) {  
	     alert("Please fill in all required fields (*) in this form.");  
		 els.style.border = "1px solid red";
	     els.focus();   
	     return false;   
	    }   
	    str += fn + "=" + escape(encodeURIComponent(fv)) + "&";   
	   break;    
	   
	   case "checkbox":   
	   case "radio":   
	    if(els.checked) str += fn + "=" + encodeURIComponent(fv) + "&";   
	   break;       
	   
	   case "select-one":   
		str += fn + "=" +   
		els.options[els.selectedIndex].value + "&";
	   break;  

	   case "select-multiple":  
		var len2=els.length;
		var opts=new Array();
		for(var j=0;j<len2;j++){
			if(els.options[j].selected){
				var targ=(els.options[j].value) ? els.options[j].value : els.options[j].text;
				opts[opts.length] = encodeURIComponent(targ)
			}
		}
		str += fn + "=" + opts.join(",") + "&"; 
	   break;
	   
	} // switch   
	
  } // for   
  
  str = str.substr(0,(str.length - 1));   
  return str;   
} 

