/* */

var http = createRequestObject();
var http2 = createRequestObject();
var timer;
var seconds = 0.5;
var item = '';

/**
 * Get the contents of an element by an ajax call.
 * The inner HTML of the element will be replaced by the result of the ajax call
 *
 * @param string elementId - Id of the element
 * @param string url - Url to call
 */
function getElementInnerHTML(elementId, url)
{
	//create a request object
	var reqObj = createRequestObject();
	
	//set the url
	reqObj.open('get', url);
	//create a function for the ready state change
	reqObj.onreadystatechange = function()
	{
		//get the element
		var el = document.getElementById(elementId);
		
		//check the state
		switch(reqObj.readyState)
		{
			//request send, waiting for answer
			case 1:
				el.innerHTML = 'Laden...';
				break;
			//got a result
			case 4:
				el.innerHTML = reqObj.responseText;
				break;
		}
	};
	
	//send the request
	reqObj.send(null);
}

function getUsers(dropDown,txt) {
	if (timer) clearTimeout(timer);
	timer= setTimeout('getUsersNow("' + dropDown + '","'+ txt + '")',seconds*1000);
}

function getUsersNow(dropDown,txt) {
	var id ="";
	if (dropDown=='autoris' || dropDown=='flexworker'){
		try { id = document.getElementById('selected_staffingcustomer').value;} catch(e) {}
	}
	http.open('get', 'ajax.php5?action=get_users&item='+dropDown+'&txt='+txt+'&id='+id, true);
	item=dropDown
	http.onreadystatechange = handleUsers;
	http.send(null);
}

function handleUsers(){
	if(http.readyState == 1){
	 	document.getElementById(item).innerHTML = 'Loading...';
	} else if(http.readyState == 4) {
		document.getElementById(item).innerHTML = http.responseText;
	}
}

function createRequestObject(){
	var request_;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
	 request_ = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
	 request_ = new XMLHttpRequest();
	}
	return request_;
}

function getWeeksAssignment(path){
	element = document.timecard.assignmentId;
	if (path){ 
		ajaxpath = path;
	}else{
		ajaxpath = "";
	}

	http.open('get', ajaxpath+'ajax.php5?action=get_weeks_assignment&id='
	  + element.options[element.selectedIndex].value);

	http.onreadystatechange = handleInfo;

	http.send(null);
}

function getWeeksAssignment_freelance(){
	element = document.freelance_timecard.freelance_assignmentId;
	http.open('get', '../../ajax.php5?action=get_weeks_assignment&freelance=1&id='
	  + element.options[element.selectedIndex].value);

	http.onreadystatechange = handleInfo_freelance;

	http.send(null);
}

function getAssignments(path){
	if (path){ 
		freelance = "1";
		ajaxpath = path;
	}else{
		freelance = "0";
		ajaxpath = "";
		document.getElementById('week_div').innerHTML = null;
	}
	var url = ajaxpath+'ajax.php5?action=get_assignments&freelance='+freelance+'&id='
	  + document.timecard.staffingCustomerId.options[document.timecard.staffingCustomerId.selectedIndex].value;

	getElementInnerHTML("assignments_div", url);
}

function getAssignments_freelance(){
	http.open('get', '../../ajax.php5?action=get_assignments_freelance&id='
	  + document.freelance_timecard.staffingCustomerId.options[document.freelance_timecard.staffingCustomerId.selectedIndex].value);

	http.onreadystatechange = handleInfo3_freelance;

	http.send(null);
}


var ajaxpath=""
function GetOrgUnits(twocostcentercode,path){
	//Voor DBP zijn er 2 kostenplaatsen. Als de inlener opgehaald wordt en er wordt een afdeling geselecteerd dan moet er het 1 en ander gebeuren.
	if(twocostcentercode) costCenter = 1; 
	else costCenter = 0;
	if (path){ 
		ajaxpath = path;
	}else{
		ajaxpath = "";
	}
	http.open('get', ajaxpath+'ajax.php5?action=get_staffingcustomerorgunits&id='
	  + document.assignment.staffingCustomerId.options[document.assignment.staffingCustomerId.selectedIndex].value + '&costcenter='+costCenter);
	http.onreadystatechange = handleInfo2;
	http.send(null);
}

function GetOrgUnits_freelance(){
	http.open('get', '../../ajax.php5?action=get_staffingcustomerorgunits&id='
	  + document.freelance_assignment.staffingCustomerId.options[document.freelance_assignment.staffingCustomerId.selectedIndex].value);
	http.onreadystatechange = handleInfoFreelance;
	http.send(null);
}

function GetOrgUnits_plugin(id, orgunit, div){
	http.open('get',
		'../../ajax.php5?action=get_staffingcustomerorgunits&id=' + id +
		'&orgunit=' + orgunit);
	http.onreadystatechange = function ()
	{ 
		handleInfoPlugin(div);
	}
	http.send(null);
}


function showHide_row(assignmentid,timecardid,disabled){
		if (document.getElementById("flexid"+assignmentid+"_dag0") == null) {
			var addRates = '';
			var addAllowances = '';
			var changed = '';
			if (addedRates.length > 0) addRates = "&addedRates=" + addedRates.join('|');
			if (addedAllowances.length > 0) addAllowances = "&addedAllowances=" + addedAllowances.join('|');
			if (changedFields[assignmentid] != undefined) changed = '&' + changedFields[assignmentid].join('&');				

			http.open('get', 'ajax.php5?action=get_timecardRows&assignmentid='+ assignmentid+
								'&disabled='+disabled+
								'&timecardid='+ timecardid + addRates + addAllowances + changed);
		
			if(navigator.appName == "Microsoft Internet Explorer"){
				http.onreadystatechange = function(){handle_showHide_row_IE(assignmentid);};
			}else{
				http.onreadystatechange = function(){handle_showHide_row_FF(assignmentid);};
			}
        	//bovenste rij rates op disabled zetten.
        	for (i=0; i < ratecount; i=i+1) {
	       		document.getElementById("flexid"+assignmentid+"_rate"+i+"_hour").disabled = true;
        		document.getElementById("flexid"+assignmentid+"_rate"+i+"_day").disabled = true;
        	}
        	//bovenste rij onkosten op disabled zetten.
        	for (i=0; i < allowancecount; i=i+1) {
	       		document.getElementById("flexid"+assignmentid+"_allowance"+i).disabled = true;
        	}
			http.send(null);
		}else{
			if (document.getElementById("flexid"+assignmentid+"_dag0").style.display == 'none') {
		    	
		    	//uitklappen!
		    	
		    	//De TR lid maken van class noScroll
				//document.getElementById("flexid"+assignmentid+"_class").className = "noScroll";

/* Dit hoeft niet meer omdat de bovenste rij altijd al op disabled staat		    	

		    	//bovenste totalen rij op disabled zetten en waardes wissen
	        	for (i=0; i < ratecount; i=i+1) {
		       		document.getElementById("flexid"+assignmentid+"_rate"+i+"_hour").disabled = true;
	        		document.getElementById("flexid"+assignmentid+"_rate"+i+"_day").disabled = true;
	        	}
	        	//bovenste rij onkosten op disabled zetten.
	        	for (i=0; i < allowancecount; i=i+1) {
		       		document.getElementById("flexid"+assignmentid+"_allowance"+i).disabled = true;
	        	}

*/	        	
	        	//Alle dagen zichtbaar maken
	        	for (i=0; i < daycounter; i=i+1) {
	        		document.getElementById("flexid"+assignmentid+"_dag"+i).style.display = '';
	      		}
	      	}else{

				//inklappen!

		    	//De TR niet meer lid maken van class noScroll
				//document.getElementById("flexid"+assignmentid+"_class").className = "";
	
/* Dit hoeft niet meer omdat de bovenste rij altijd al op disabled staat

				//alleen de bovenste rij velden op enabled zetten als php $action != show
				if (show != true) {
		        	//bovenste totalen rij op enabled zetten
		        	for (i=0; i < ratecount; i=i+1) {
		        		document.getElementById("flexid"+assignmentid+"_rate"+i+"_hour").disabled = false;
		        		document.getElementById("flexid"+assignmentid+"_rate"+i+"_day").disabled = false;
		        	}
		        	//bovenste rij onkosten op enabled zetten.
		        	for (i=0; i < allowancecount; i=i+1) {
			       		document.getElementById("flexid"+assignmentid+"_allowance"+i).disabled = false;
		        	}
				}

*/

	        	//Alle dagen onzichtbaar maken
	        	for (i=0; i < daycounter; i=i+1) {
	        		document.getElementById("flexid"+assignmentid+"_dag"+i).style.display = 'none';
	        	}
	      }
	 }
}

function handleInfo(){
	if(http.readyState == 1){
	 document.getElementById('week_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	 var response = http.responseText;
	 document.getElementById('week_div').innerHTML = response;
	 if (!response.match("Geen open weken") && !response.match("Geen open periode") && response != "")
	 {
	 	document.getElementById('submit_div').innerHTML = '<input type="submit" value="Nieuw"/>';
	 }
	 else
	 {
	 	document.getElementById('submit_div').innerHTML = "&nbsp;";
	 }
	}
}

function handleInfo_freelance(){
	if(http.readyState == 1){
	 document.getElementById('freelance_week_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	 var response = http.responseText;
	 document.getElementById('freelance_week_div').innerHTML = response;
	 if (!response.match("Geen open weken")) document.getElementById('freelance_submit_div').innerHTML = '<input type="submit" value="Nieuw"/>';
	}
}

function handleInfo2(){
	if(http.readyState == 1){
	 document.getElementById('orgunit_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
		var response = http.responseText;
		document.getElementById('orgunit_div').innerHTML = response;

		http2.open('get', ajaxpath+'ajax.php5?action=check_processid&id='
		 + document.assignment.staffingCustomerId.options[document.assignment.staffingCustomerId.selectedIndex].value);	
		http2.onreadystatechange = handleInfo6;
		http2.send(null);
	}
}

function handleInfoFreelance(){
	if(http.readyState == 1){
	 document.getElementById('freelance_orgunit_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
		var response = http.responseText;
		document.getElementById('freelance_orgunit_div').innerHTML = response;
	}
}

function handleInfoPlugin(div){
	if(http.readyState == 1){
	 document.getElementById(div).innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
		var response = http.responseText;
		document.getElementById(div).innerHTML = response;
	}
}


function handleInfo3(){
	if(http.readyState == 1){
	 document.getElementById('assignments_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	
	 var response = http.responseText;
	 document.getElementById('week_div').innerHTML = '';
	 document.getElementById('assignments_div').innerHTML = response;
	}
}

function handleInfo3_freelance(){
	if(http.readyState == 1){
	 document.getElementById('freelance_assignments_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	
	 var response = http.responseText;
	 document.getElementById('freelance_week_div').innerHTML = '';
	 document.getElementById('freelance_assignments_div').innerHTML = response;
	}
}


function handleInfo4(){
	if(http.readyState == 1){
	 document.getElementById('period_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	
	 var response = http.responseText;
	 document.getElementById('period_div').innerHTML = response;
	 document.getElementById('submit_div').innerHTML = '<input type="submit" value="Nieuw"/>';
	}
}

function handleInfo5(){
	if(http.readyState == 1){
	 document.getElementById('auto_div').innerHTML = 'Loading...';
	}
	if(http.readyState == 4){
	 var response = http.responseText;
	 document.getElementById('auto_div').innerHTML = response;
	}
}

function handleInfo6(){
	if(http2.readyState == 1){
	}
	if(http2.readyState == 4){
	 var response = http2.responseText;
	 if (response == "true") {
	 	document.getElementById("contracthours_tr").style.display = '';
	 } else {
	 	document.getElementById("contracthours_tr").style.display = 'none';
	 	document.getElementById("contract").value = "";
	 }
	}
}

function copyElement(xmlNode){
	htmlNode = document.createElement(xmlNode.tagName);
	var attribs = xmlNode.attributes;

	if (attribs.length > 0){ 
		for (var i=0;i < attribs.length;i++){
			htmlNode.setAttribute(attribs[i].name,attribs[i].value);
		}
	}
	if (xmlNode.childNodes[0]){
		htmlNode.innerHTML = xmlNode.childNodes[0].nodeValue;
	}
	return htmlNode;
}


function handle_showHide_row_FF(assignmentid){
	if(http.readyState == 1){
	}
	if(http.readyState == 4){
		var xmlDoc = http.responseXML;
        var tr_items = xmlDoc.getElementsByTagName("tr");
        for (var h = 0 ; h < tr_items.length ; h++) {
			var newTR = document.createElement('tr');
			var attribs = tr_items[h].attributes;
			if (attribs.length > 0){ 
				for (var k=0;k < attribs.length;k++){
					newTR.setAttribute(attribs[k].name,attribs[k].value);
				}
			}
			
        	var td_items = tr_items[h].getElementsByTagName("td");
	        for (var i = 0 ; i < td_items.length ; i++) {
				newTD = document.createElement('td');
				var attribs = td_items[i].attributes;
				if (attribs.length > 0){ 
					for (var k=0;k < attribs.length;k++){
						newTD.setAttribute(attribs[k].name,attribs[k].value);
					}
				}
				subTDNodes = td_items[i].childNodes;
		        for (var j = 0 ; j < subTDNodes.length ; j++) {
		        	newNode = copyElement(subTDNodes[j])
					newTD.appendChild(newNode);
		        }
				newTR.appendChild(newTD);
			}
			var replaceElem = document.getElementById('assignment_'+assignmentid);
			replaceElem.parentNode.insertBefore(newTR,replaceElem);
        }
	}
}

function handle_showHide_row_IE(assignmentid){
	if(http.readyState == 1){
	}
	if(http.readyState == 4){
		//var xmlDoc = http.responseText;
		//alert(xmlDoc);
		//return;
		var xmlDoc = http.responseXML;

        var tr_items = xmlDoc.getElementsByTagName("tr");
        for (var h = 0 ; h < tr_items.length ; h++) {
			var newTR = document.createElement('tr');
			if (tr_items[h].getAttribute('class')){
				newTR.className =  tr_items[h].getAttribute('class');			
			}
			if (tr_items[h].getAttribute('id')){
				newTR.id =  tr_items[h].getAttribute('id');			
			}
			
        	var td_items = tr_items[h].getElementsByTagName("td");
	        for (var i = 0 ; i < td_items.length ; i++) {
				newTD = document.createElement('td');
				if (td_items[i].getAttribute('colspan')){
					newTD.colSpan = td_items[i].getAttribute('colspan');
				}
				if (td_items[i].getAttribute('class')){
					newTD.className =  td_items[i].getAttribute('class');			
				}
				if (td_items[i].getAttribute('id')){
					newTD.id = td_items[i].getAttribute('id');			
				}
				newTD.innerHTML = td_items[i].xml;
			    newTR.appendChild(newTD);
			}
			var replaceElem = document.getElementById('assignment_'+assignmentid);
			replaceElem.parentNode.insertBefore(newTR,replaceElem);
        }
	}
}


//meta user functions

function handleInfoMetaSC(id) {
	if(http.readyState == 1){
		document.getElementById("selectStaffingcustomer").innerHTML = 'Laden...'; 
	}

	if(http.readyState == 4){
		var response = http.responseText;
		document.getElementById("selectStaffingcustomer").innerHTML = response;
		document.getElementById('searchautospan').style.display = 'block';
		
		//UZK's ook ophalen via Ajax nadat AJAX klaar is met de SC's
		http2.open('get', 'ajax.php5?action=meta_get_flexworker&id='+id);
		http2.onreadystatechange = function(){handleInfoMetaUZK();};
		http2.send(null);
	}
}

function handleInfoMetaUZK() {
	if(http2.readyState == 1){
		document.getElementById("selectFlexworker").innerHTML = 'Laden...'; 
	}

	if(http2.readyState == 4){
		var response = http2.responseText;
		document.getElementById("selectFlexworker").innerHTML = response;
	}
}

function getStaffingcustomers(id, messagepage){
	http.open('get', 'ajax.php5?action=meta_get_staffingcustomer&id='+id+'&messagepage='+messagepage);
	http.onreadystatechange = function(){handleInfoMetaSC(id);};
	http.send(null);
}

function confirmExport(element) {
	var sent = (element.checked ? 0 : 1);

	setExportStatus(element.value, sent, element.getAttribute("id"));
}

function setExportStatus(value, sent, id, path) {
	ajaxToggleCheckbox(
		'confirm_export',
		value,
		id,
		'status=' + sent,
		path
	);
}

function ajaxToggleCheckbox(action, id, element, param, path) {
	if (path == undefined)
		path = '';

	http.open(
		'get',
		path + 'ajax.php5' +
			'?action=' + action +
			'&id=' + id +
			(element != null ? '&element=' + element : '') +
			'&' + param
	);

	var oldInnerHTML = document.getElementById(element + '_cell').innerHTML;
	document.getElementById(element + '_cell').innerHTML =
		document.getElementById('loadingImg').innerHTML;

	http.onreadystatechange = function() {
		switch (http.readyState) {
			case 4:
				if (http.status == 200) {
					document.getElementById(element + '_cell').innerHTML = http.responseText;
				} else {
					document.getElementById(element + '_cell').innerHTML = oldInnerHTML;
				}
				break;
		}
	}

	http.send(null);
}

function approvePayslip(element, path) {
	var approved = element.checked;

	setPayslipApprovedStatus(element.value, approved, element.getAttribute("id"), path);
}

function setPayslipApprovedStatus(value, approved, id, path) {
	ajaxToggleCheckbox(
		'approve_payslip',
		value,
		id,
		'approved=' + (approved ? 't' : 'f'),
		path
	);
}

/*
*/
