var xhttp;
var oldValue;
var savedAction;

function init() {

	if(window.ActiveXObject){
		try{
			xhttp = ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				 xhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				xhttp = false;
			}
		}
	}else if(window.XMLHttpRequest){
		try{
			xhttp = new XMLHttpRequest();
		}catch(e){
			xhttp = false;
		}
	}
	if(!xhttp){
		var Suche = /Opera/;
		var browserAgent = navigator.userAgent;
	    var browser = navigator.appName;
	    if(browser == "Microsoft Internet Explorer" && Suche.test(browserAgent)!=true){
	    	
	        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    }else{
	    	try{
	        xhttp = new XMLHttpRequest();
	    	}catch(e){
	    		alert('Your browser does not support the neccesary BAL.PM functions. This website will not work properly.\nIt is strongly recommended to update the browser.')
	    	}
	    }
	}
	return xhttp;
}



function sndReq(action,parameters) {
	var xhttp = init();
	var url;
	if(!xhttp) {return;}
	savedAction = action;
	
	switch(action){
		case "getUserByName": //project_add_person_small.php
			var mySelectBox = document.getElementsByName('pers_id_tmp')[0];
        	mySelectBox.options.length = 0;
        	mySelectBox.options[0]=new Option('Connecting with the database...','0');
        	url = 'ajax_controler.php?ajax_action='+action+'&parameter_last_name='+document.getElementById('parameter_last_name').value+'&prid='+document.getElementById('prid').value+'&orgunitID='+document.getElementById('orgunitID').value;
    		break;
  	
    	case "assignUserToProject": //project_add_person_small.php
    		var mySelectBox = document.getElementsByName('pers_id_tmp')[0];
    		var countSelectedPersons = 0;
    		var selectedRole = document.getElementsByName('proj_per_role')[0];

    		if(mySelectBox.selectedIndex>0&&selectedRole.selectedIndex!=null){
    		
	    		var parameters = new Array();
	    		var result = document.getElementsByName('results')[0];
	    		if(result.hasChildNodes()){
	    			var resultChild = result.childNodes[0];
	    	   		result.removeChild(resultChild);
	    	 	}
	    	 	result.innerHTML="<font class='font1' style='color:red;'>Please wait. Refrehing the table...</font>";
    		
    			for(var i=1;i<mySelectBox.options.length;i++){
    				if(mySelectBox.options[i].selected==true){	
    					parameters[countSelectedPersons]=encodeURIComponent("persons_tmp["+mySelectBox.options[i].value+"]")+"="+encodeURIComponent(selectedRole.options[selectedRole.selectedIndex].value);
     					countSelectedPersons++;
    				}
    			}
    			url = 'ajax_controler.php?ajax_action='+action+'&'+parameters.join("&")+'&link='+document.getElementById('link').value+'&prid='+document.getElementById('prid').value+'&orgunitID='+document.getElementById('orgunitID').value;
    		}else{
    			alert('Please select at least one person and the assigned role!');
    			return false;
    		}
    		break;    	
    	case "periodicManagementReportOverview":
    		var periodFrom = document.getElementsByName('yfrom')[0];
    		var periodTo = document.getElementsByName('yto')[0];
    		var from = 0;
    		var to = 0;
    		if(periodFrom.selectedIndex>0) 	from = periodFrom.options[periodFrom.selectedIndex].value;
    		if(periodTo.selectedIndex>0) 	to = periodTo.options[periodTo.selectedIndex].value;
    		url = 'ajax_controler.php?ajax_action='+action+'&'+parameters+'&from='+from+'&to='+to;
    		break;
    	case "periodicActivityReportOverview":
    		var periodFrom = document.getElementsByName('from')[0];
    		var periodTo = document.getElementsByName('to')[0];
    		var from = 0;
    		var to = 0;
    		if(periodFrom.selectedIndex>0) 	from = periodFrom.options[periodFrom.selectedIndex].value;
    		if(periodTo.selectedIndex>0) 	to = periodTo.options[periodTo.selectedIndex].value;
    		url = 'ajax_controler.php?ajax_action='+action+'&'+parameters+'&from='+from+'&to='+to;
    		break;
     	default:
			var result = document.getElementsByName('results')[0];
		   	url = 'ajax_controler.php?ajax_action='+action+'&'+parameters;
	  		break;
	}
	// verbinden mit ajax_controler.php
	try{
		xhttp.open('get', url);
    	xhttp.onreadystatechange = handleResponse;
    	xhttp.send(null);
    }catch(e){
    	alert('Connection broken. Please try again.');
    }	
}

function handleResponse() { //controler
	    // This handler is called 4 times for each 
        // state change of xmlhttp
        // States are: 0 uninitialized
        //      1 loading
        //      2 loaded
        //      3 interactive
        //      4 complete
	if(xhttp.readyState == 4){
        var response = xhttp.responseText;
        switch(savedAction){
        	case "assignUserToProject":
        		sendResponse(response,'results');
        		sndReq('getUserByName','');
        		break;
        	case "getUserByName":
        		updateSelectBox(response);
        		break;           	
        	case "viewAssignPersonnelForm":
        		sendResponse(response,'assignPersonnel');
        		break;
        	case "projectManagementRepOverview":
        		sendResponseWithoutDelete(response,'results');
        		break;        	
        	default:
        		sendResponse(response,'results');
        		break;
        }
    }
}

function updateSelectBox(response) {
    var update = new Array();
    var mySelectBox = document.getElementsByName('pers_id_tmp')[0];
    mySelectBox.options.length = 0;
	if(response!=''){
	    update=response.split("\n");
	    for(var i=0; i<update.length;i++){
			var option= new Array();
			if(update[i]!=''){
				option = update[i].split('|');
				mySelectBox.options[i]=new Option(option[1],option[0]);
			}
		}
	}
}

function updateSelectBoxByName(name,response) {
	String.prototype.charRefToUnicode = function()
	{
		return this.replace(
			/&#(([0-9]{1,7})|(x[0-9a-f]{1,6}));?/gi,
			function(match, p1, p2, p3, offset, s)
			{
				return String.fromCharCode(p2 || ("0" + p3));
			}
		);
	}

	var update = new Array();
    var mySelectBox = document.getElementsByName(name)[0];
    mySelectBox.options.length = 0;
   
	if(response.responseText!=''){
	    update=response.responseText.split("\n");
	    for(var i=0; i<update.length;i++){
			var option= new Array();
			if(update[i]!=''){
				option = update[i].split('|');
				mySelectBox.options[i]=new Option(option[1].charRefToUnicode(),option[0]);
			}
		}
	}
}

function sendResponse(response,objectName){
	var result = document.getElementsByName(objectName)[0];
    if(result.hasChildNodes()){
    	var resultChild = result.childNodes[0];
    	result.removeChild(resultChild);
    }
    result.innerHTML = response;
}

function sendResponseWithoutDelete(response,objectName){
	var result = document.getElementsByName(objectName)[0];
    result.innerHTML += response;
}
