/**
 *  AJAX Functies
 */
 
/**
 *  Nieuwe AJAX request maken
 *  Tevens ook de AJAX request terug sturen
 */  
function requestObject() {
	var XMLHttpRequestObject = false;
	if(window.XMLHttpRequest) {
		XMLHttpRequestObject = new XMLHttpRequest();
	} else if(window.ActiveXObject) {
		XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
	}
	return XMLHttpRequestObject;
}

//Nieuwe AJAX object maken
var object = new requestObject();

/**
 *  Als er word gezocht in het boekings formulier, word er steeds search_info.inc.php uitgevoerd.
 *  Dit met de bijbehorende gegevens.
 */    
function getSearch(type, debiteur_nr) {
	if(object) {
	  if(type.length > 15) {
	   var supplier = type.substring(0, 15);
	   var search   = document.getElementById(type);
	  } else {
     var search   = document.getElementById(type+"_name");
    }
  
    if(search.value.length > 3) {
  		object.open("GET", "php/search_info.inc.php?type="+type+"&search="+search.value+"&debiteur_nr="+debiteur_nr);
  		object.onreadystatechange = handleSearch;
  		document.cookie = "type="+type;
  		object.send(null);
  		return false;
    } else {
      return false;
    }
	}
}

/**
 *  Onreadystatechange functie van getSearch()
 *  Hier word de autocompleter gevuld en zichtbaar gemaakt.
 */  
function handleSearch() {
  if(object.readyState == 4) { 
    if(object.status == 200) {
      var type = getType();
      if(type != "") {
        if(object.responseText != "") { 
          var sHTML = getInfoList();

          document.getElementById("autocomplete_"+type).style.display = "block";      
          document.getElementById("autocomplete_"+type).innerHTML     = sHTML;  
        }        
      }
    } else {
      alert("Er is een fout opgetreden probeer het later nog eens.");
    }
  }
}

/**
 *  Als de gebruiker op een naam heeft gedrukt moet het systeem alle gegevens ophalen.
 *  Dat gebeurt in deze functie, op de pagina get_info.inc.php
 */  
function getInformation(searchedId, typeid) {
	if(object) {
	  var type = getType();
	  if(type.length > 15) {
	   var supplier = type.substring(0, 15);
	   var search   = document.getElementById(type);
	  } else {
     var search   = document.getElementById(type+"_name");
    }

		object.open("GET", "php/get_info.inc.php?type="+type+"&debtonr="+searchedId+"&typeid="+typeid);
		object.onreadystatechange = handleInformation;
		object.send(null);
		return false;
  } else {
    return false;
  }
}

/**
 *  Onreadystatechange functie van getInformation
 *  Hier word gekeken welke andere velden in gevoerd moeten worden, 
 *  zo zijn er de volgende mogelijkheden: 
 *    - Consignee
 *    - Shipper
 *    - Riding Supplier
 *    - Loaded supplier
 */      
function handleInformation() {
  if(object.readyState == 4) { 
    if(object.status == 200) {
      var type = getType();
      
      if(type.length > 20) {
        type = "supplier_loaded";
      }
      
      if(type != "") {
        if(object.responseText != "") {
          switch(type) {
            case "consignee":
              fillInConsignee();
            break;
            
            case "shipper":
              fillInShipper();
            break;
            
            case "riding_supplier":
              fillInRidingSupplier();
            break;
            
            case "supplier_loaded":
              fillInLoadedSupplier();  
            break;            
            
            default:                                 
          }  
        }       
      }
    } else {
      alert("Er is een fout opgetreden probeer het later nog eens.");
    }
  }
}

/**
 *  Hier word de type opgehaald uit een cookie.
 */ 
function getType() {
  var type = "";
  var typeCookie = document.cookie;
  var splitCookie = document.cookie.split(";");
  var cookiePos = splitCookie[1].indexOf("type=");

  if(cookiePos != -1) {
    type = splitCookie[1].substring(6, typeCookie.length);
  } else {
    type = "";
  }
  return type;
}

/**
 *  Hier word de autocompleter lijst gemaakt. Deze word aangeroepen door handleSearch()
 */ 
function getInfoList() {
  var DOMRequestObject = false;
  if(window.ActiveXObject) {
    DOMRequestObject = new ActiveXObject("Microsoft.XMLDOM");
    DOMRequestObject.async = false;
    DOMRequestObject.loadXML(object.responseText);            
  } else if(window.XMLHttpRequest) {
    var parser = new DOMParser();
    DOMRequestObject = parser.parseFromString(object.responseText, "text/xml");
  } else {
    alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
  } 

  var sHTML   = "";       	
  var objRoot = DOMRequestObject.documentElement;
  var objSet  = objRoot.getElementsByTagName("set");
  for(iSetCounter = 0; iSetCounter < objSet.length; iSetCounter++) {
    var objName = objSet[iSetCounter].getElementsByTagName("naam");
    for(iNameCounter = 0; iNameCounter < objName.length; iNameCounter++) {
      var sName = objName[iNameCounter].childNodes[0].nodeValue;
    }
    
    var objDebtoNr = objSet[iSetCounter].getElementsByTagName("debiteur_nr");
    for(iDebtoCounter = 0; iDebtoCounter < objDebtoNr.length; iDebtoCounter++) {
      var iDebtoNr = objDebtoNr[iDebtoCounter].childNodes[0].nodeValue;
    }
    
    var objTypeId = objSet[iSetCounter].getElementsByTagName("typeid");
    for(iTypeIdCounter = 0; iTypeIdCounter < objTypeId.length; iTypeIdCounter++) {
      var iTypeId = objTypeId[iTypeIdCounter].childNodes[0].nodeValue;
    }    
    sHTML += "<a onclick=\"getSearchedItem('"+sName+"', '"+iDebtoNr+"', '"+iTypeId+"');\" style=\"cursor: pointer;\">"+sName+"</a><br/>";
  }
    
  return sHTML;
}

/**
 *  Het invullen van de shipper velden
 */ 
function fillInShipper() {
  var DOMRequestObject = false;
  if(window.ActiveXObject) {
    DOMRequestObject = new ActiveXObject("Microsoft.XMLDOM");
    DOMRequestObject.async = false;
    DOMRequestObject.loadXML(object.responseText);            
  } else if(window.XMLHttpRequest) {
    var parser = new DOMParser();
    DOMRequestObject = parser.parseFromString(object.responseText, "text/xml");
  } else {
    alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
  } 
	
  var objRoot = DOMRequestObject.documentElement;
  var objSet  = objRoot.getElementsByTagName("set");

  
  var objStreet = objSet[0].getElementsByTagName("street");
  if(objStreet[0].childNodes.length != 0) {
    var sStreet = objStreet[0].childNodes[0].nodeValue;
  } else {
    var sStreet = "";
  }
  
  
  var objPlace = objSet[0].getElementsByTagName("place");
  if(objPlace[0].childNodes.length != 0) {
    var sPlace = objPlace[0].childNodes[0].nodeValue;
  } else {
    var sPlace = "";
  }
  
  
  var objTelephone = objSet[0].getElementsByTagName("telephone");
  if(objTelephone[0].childNodes.length != 0) {
    var sTelephone = objTelephone[0].childNodes[0].nodeValue;   
  } else {
    var sTelephone = "";
  }
  
  var objCountry = objSet[0].getElementsByTagName("country");
  if(objCountry[0].childNodes.length != 0) {
    var sCountry = objCountry[0].childNodes[0].nodeValue;
  } else {
    var sCountry = "";
  }

  document.getElementById("shipper_street").value   = sStreet;
  document.getElementById("shipper_place").value    = sPlace;
  document.getElementById("shipper_tel").value      = sTelephone;
  document.getElementById("shipper_country").value  = sCountry;
    
  return true;
}

/**
 *  Het invullen van de consignee velden
 */ 
function fillInConsignee() {
  var DOMRequestObject = false;
  if(window.ActiveXObject) {
    DOMRequestObject = new ActiveXObject("Microsoft.XMLDOM");
    DOMRequestObject.async = false;
    DOMRequestObject.loadXML(object.responseText);            
  } else if(window.XMLHttpRequest) {
    var parser = new DOMParser();
    DOMRequestObject = parser.parseFromString(object.responseText, "text/xml");
  } else {
    alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
  } 
	
  var objRoot = DOMRequestObject.documentElement;
  var objSet  = objRoot.getElementsByTagName("set");

  var objStreet = objSet[0].getElementsByTagName("street");
  if(objStreet[0].childNodes.length != 0) {
    var sStreet = objStreet[0].childNodes[0].nodeValue;
  } else {
    var sStreet = "";
  }
  
  var objPlace = objSet[0].getElementsByTagName("place");
  if(objPlace[0].childNodes.length != 0) {
    var sPlace = objPlace[0].childNodes[0].nodeValue;
  } else {
    var sPlace = "";
  }
  
  var objTelephone = objSet[0].getElementsByTagName("telephone");
  if(objTelephone[0].childNodes.length != 0) {
    var sTelephone = objTelephone[0].childNodes[0].nodeValue;
  } else {
    var sTelephone = "";
  }
  
   
  var objCountry = objSet[0].getElementsByTagName("country");
  if(objCountry[0].childNodes.length != 0) {
    var sCountry = objCountry[0].childNodes[0].nodeValue;
  } else {
    var sCountry = "";
  }
  
     
  document.getElementById("consignee_street").value   = sStreet;
  document.getElementById("consignee_place").value    = sPlace;
  document.getElementById("consignee_tel").value      = sTelephone;
  document.getElementById("consignee_country").value  = sCountry;
    
  return true;
}

/**
 *  Het invullen van de loaded supplier velden.
 */ 
function fillInLoadedSupplier() {
  var DOMRequestObject = false;
  if(window.ActiveXObject) {
    DOMRequestObject = new ActiveXObject("Microsoft.XMLDOM");
    DOMRequestObject.async = false;
    DOMRequestObject.loadXML(object.responseText);            
  } else if(window.XMLHttpRequest) {
    var parser = new DOMParser();
    DOMRequestObject = parser.parseFromString(object.responseText, "text/xml");
  } else {
    alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
  } 
	
  var objRoot = DOMRequestObject.documentElement;
  var objSet  = objRoot.getElementsByTagName("set");
 
  var objStreet = objSet[0].getElementsByTagName("street");
  if(objStreet[0].childNodes.length != 0) {
    var sStreet = objStreet[0].childNodes[0].nodeValue;
  } else {
    var sStreet = "";
  }
  
  var objPlace = objSet[0].getElementsByTagName("place");
  if(objPlace[0].childNodes.length != 0) {
    var sPlace = objPlace[0].childNodes[0].nodeValue;
  } else {
    var sPlace = "";
  }
  
  
  var objEmail = objSet[0].getElementsByTagName("e_mail");
  if(objEmail[0].childNodes.length != 0) {
    var sEmail = objEmail[0].childNodes[0].nodeValue;
  } else {
    var sEmail = "";
  }
  
  
  var objTelephone = objSet[0].getElementsByTagName("telephone");
  if(objTelephone[0].childNodes != 0) {
    var sTelephone = objTelephone[0].childNodes[0].nodeValue;
  } else {
    var sTelephone = "";
  }
  
  
  var objFax = objSet[0].getElementsByTagName("fax");
  if(objFax[0].childNodes != 0) {
    var sFax = objFax[0].childNodes[0].nodeValue;
  } else {
    var sFax = "";
  }
  
  
  var objCountry = objSet[0].getElementsByTagName("country");
  if(objCountry[0].childNodes != 0) {
    var sCountry = objCountry[0].childNodes[0].nodeValue;
  } else {
    var sCountry = "";
  }
  
              
  var type  = getType();
  type      = type.substring(20, 21);
 
  document.getElementById("supplier_loaded_street"+type+"[]").value   = sStreet;
  document.getElementById("supplier_loaded_place"+type+"[]").value    = sPlace;
  document.getElementById("supplier_loaded_e_mail"+type+"[]").value   = sEmail;
  document.getElementById("supplier_loaded_tel"+type+"[]").value      = sTelephone;
  document.getElementById("supplier_loaded_fax"+type+"[]").value      = sFax;
  document.getElementById("supplier_loaded_country"+type+"[]").value  = sCountry;
  
  return true;
}

/**
 *  Het invullen van de riding supplier velden.
 */ 
function fillInRidingSupplier() {
  var DOMRequestObject = false;
  if(window.ActiveXObject) {
    DOMRequestObject = new ActiveXObject("Microsoft.XMLDOM");
    DOMRequestObject.async = false;
    DOMRequestObject.loadXML(object.responseText);            
  } else if(window.XMLHttpRequest) {
    var parser = new DOMParser();
    DOMRequestObject = parser.parseFromString(object.responseText, "text/xml");
  } else {
    alert("De request-object kon niet gemaakt worden, probeer het later nog eens.");
  } 
	
  var objRoot = DOMRequestObject.documentElement;
  var objSet  = objRoot.getElementsByTagName("set");
  
  var objStreet = objSet[0].getElementsByTagName("street");
  var sStreet = objStreet[0].childNodes[0].nodeValue;
  
  var objPlace = objSet[0].getElementsByTagName("place");
  var sPlace = objPlace[0].childNodes[0].nodeValue;
  
  var objEmail = objSet[0].getElementsByTagName("e_mail");
  var sEmail = objEmail[0].childNodes[0].nodeValue;
  
  var objTelephone = objSet[0].getElementsByTagName("telephone");
  var sTelephone = objTelephone[0].childNodes[0].nodeValue;
  
  var objFax = objSet[0].getElementsByTagName("fax");
  var sFax = objFax[0].childNodes[0].nodeValue;
  
  var objCountry = objSet[0].getElementsByTagName("country");
  var sCountry = objCountry[0].childNodes[0].nodeValue;
  
  document.getElementById("supplier_street").value    = sStreet;
  document.getElementById("supplier_place").value     = sPlace;
  document.getElementById("supplier_e_mail").value    = sEmail;
  document.getElementById("supplier_tel").value       = sTelephone;
  document.getElementById("supplier_fax").value       = sFax;
  document.getElementById("supplier_country").value   = sCountry;
    
  return true;
}

/**
 *  Hier word de getInformation functie aangeroepen.
 *  Deze functie zelf word zelf aangeroepen als iemand een naam selecteerd uit de lijst.
 */  
function getSearchedItem(searchedItem, searchedId, typeid) {
  var type = getType();
  if(type.length > 15) {
   document.getElementById(type).value = searchedItem;
  } else {
   document.getElementById(type+"_name").value = searchedItem;
  }  
  document.getElementById("autocomplete_"+type).style.display = "none";  
  
  getInformation(searchedId, typeid);  
}

/**
 *  Als iemand het input field verlaat, moet ook de autocompleter verdwijnen
 */ 
function leaveSearch(type) {
  var type = getType();
  setTimeout("reLeaveSearche()", 250); 
}

function reLeaveSearche(type) {
  var type = getType();
  document.getElementById("autocomplete_"+type).style.display = "none"; 
}

