function createHttpRequest()
{
    if (window.XMLHttpRequest)
    {
      var httpRequest = new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
      var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }    
    return httpRequest;
}

function createErrorDiv(httpRequest, TargetDivId)
{            
    var inner = document.getElementById(TargetDivId);			    // Get the destination node
    var node = document.createElement('div');       				// create a new div element
    node.className = 'textBox';
    node.style.marginTop = '10px';
    node.setAttribute('class', 'textBox');
    node.setAttribute('style', 'margin-top:10px');
    inner.innerHTML = '';                           				// clear the destination node
    inner.appendChild(node);                        				// append the node as a child and ...
    node.innerHTML = 'Systeem fout: '+httpRequest.status+' error.'; // append the text to node

    if(httpRequest.status == 500){                                  // Script fout wel het resultaat laten zien
        var node2 = document.createElement('div');       			// create a new div element
        inner.appendChild(node2);                        			// append the node as a child and ...
        node2.innerHTML = httpRequest.responseText; 	            // append the text to node
    }
}

function showAjaxLoadingDiv()
{	
  if (document.getElementById('oldprice') != null) {
 		document.getElementById('oldprice').innerHTML='';
	}
	if (document.getElementById('price') != null) {
  	document.getElementById('price').innerHTML = '<img src=\'/module/shop/images/ajax-loader.gif\' />';
  }
}

function hideAjaxLoadingDiv()
{
	var oDiv = document.getElementById('SavingDiv');
  if (oDiv != null) oDiv.parentNode.removeChild(oDiv);
}

function LoadPage(f_Url, f_TargetDivId) {
	showAjaxLoadingDiv();
	var httpRequest = createHttpRequest();
	httpRequest.open("GET", f_Url+'?Tijd='+getTimeString(), true);
	httpRequest.onreadystatechange = function() {handleHttpResponse_LoadPage(httpRequest, f_TargetDivId); };
	httpRequest.send(null);
}

function handleHttpResponse_LoadPage(httpRequest, TargetDivId) {
	if(httpRequest.readyState == 4 && httpRequest.status == 200){ 
		if(httpRequest.responseText) { 
	  	var inner = document.getElementById(TargetDivId);// Get the destination node
	    var node = document.createElement('div');       // create a new div element 
	    node.innerHTML = httpRequest.responseText;             // append the text to node
	    inner.innerHTML = '';                           // clear the destination node
	    inner.appendChild(node);                        // append the node as a child and ...
	    launchJavascriptFromXML(inner);                 // ... at this point the JS is executed
	  }
	 }

	 if((httpRequest.readyState == 4) && (httpRequest.status != 200)){
	    createErrorDiv(httpRequest, TargetDivId);
	 }
	 if(httpRequest.readyState == 4) hideAjaxLoadingDiv();
	trackResize()
}

function setSessions(f_MenuID, f_Overview, f_Details) {
	var httpRequest = createHttpRequest();
	httpRequest.open("POST", '/admin/system/setSessions.asp?Tijd='+getTimeString(), true);
	httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'toolbar'); };
	httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	httpRequest.send('?a=1&MenuID='+f_MenuID+'&OverviewUrl='+f_Overview+'&DetailsUrl='+f_Details);
}

function launchJavascriptFromXML(responseXML) {
    try
    {
        if (responseXML == null) return;
        var scripts = responseXML.getElementsByTagName('script');
        if (scripts == null) return;
        var js = '';
        for(var s = 0; s < scripts.length; s++) {
            js += scripts[s].innerHTML;
        }
        if(js != '') {
            if(window.execScript) {
                window.execScript(js);
            } else {
                window.setTimeout(js, 0);
            }
        }
    }
    catch(err)
    {
        alert("Can't launch javascript from ajax response: \n" + err.name + " [" + err.number + "]\n"+ err.message  + "\n"+ err.location  + "\n");
    }	      
}

function handleHttpResponse_ResponseToDiv(httpRequest, TargetDivId) { 
	
	if(httpRequest.readyState == 4 && httpRequest.status == 200){ 
		
		if(httpRequest.responseText) { 
	  	
	  	var inner = document.getElementById(TargetDivId);// Get the destination node
	    var node = document.createElement('div');       // create a new div element 
	    node.innerHTML = httpRequest.responseText;             // append the text to node
	    inner.innerHTML = '';                           // clear the destination node
	    inner.appendChild(node);                        // append the node as a child and ...
	    launchJavascriptFromXML(inner);                 // ... at this point the JS is executed
	  }
	 }
	 
	 if((httpRequest.readyState == 4) && (httpRequest.status != 200)){
	    createErrorDiv(httpRequest, 'body');
	 }
	 if(httpRequest.readyState == 4) hideAjaxLoadingDiv();
	trackResize()
}

function OrderOverview(f_OrderBy, f_OrderType, f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&OrderBy='+f_OrderBy+'&OrderType='+f_OrderType+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function FilterOverview(f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function submitPageSize(f_PageSize, f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&PageSize='+f_PageSize+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function setCurrentPage(f_CurrentPage, f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&CurrentPage='+f_CurrentPage+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function submitSearch(f_SearchKey, f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&SearchKey='+f_SearchKey+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function openDetails(f_Url) {
	showAjaxLoadingDiv();
	var httpRequest = createHttpRequest();
  httpRequest.open("GET", f_Url + '&Tijd='+getTimeString() , true);
  httpRequest.onreadystatechange = function() {handleHttpResponse_ResponseToDiv(httpRequest, 'body')};
  httpRequest.send(null);
}

function DeleteRecordsAjax(targetFormObj, targetTableId, f_Url) {
	showAjaxLoadingDiv();
	
	var FormFields = 'RecordIDs=';
	var fields = targetFormObj.getElementsByTagName('input');
	for (var i=0; i<fields.length;i++) {
	    if ((fields[i].type == 'checkbox') && (fields[i].checked == true))
	            FormFields = FormFields + '|' + fields[i].name;
	}  
	
	var httpRequest = createHttpRequest();
	
	httpRequest.open('post', f_Url+'?Tijd='+getTimeString()); 
	httpRequest.onreadystatechange = function() {handleHttpResponse_DeleteRecordsAjax(httpRequest, targetTableId); };
	httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	httpRequest.send(FormFields);
	clearMessage();   
}

function handleHttpResponse_DeleteRecordsAjax(httpRequest, targetTableId) {
	
	if((httpRequest.readyState == 4) && (httpRequest.status == 200)){
    if(httpRequest.responseText) 
    {
		var resultNode = new ActiveXObject("Microsoft.XMLDOM");
     resultNode.loadXML(httpRequest.responseText);
     var ids = resultNode.getElementsByTagName("RecordId");
     for (var i = 0; i < ids.length; i++){
     	
     	var tbl  = document.getElementById(targetTableId);
     	var rows = tbl.getElementsByTagName('tr');
		  for (var row=0; row<rows.length;row++) {
	   		if (rows[row].id == ids(i).text) {
					rows[row].style.display = 'none';
				}
			}
		}
		document.getElementById('message').innerHTML = resultNode.getElementsByTagName("message")(0).text;
		}
	}
	if((httpRequest.readyState == 4) && (httpRequest.status != 200))
	createErrorDiv(httpRequest, 'message');
	if(httpRequest.readyState == 4) hideAjaxLoadingDiv();
}

function SaveDetailsAjax(f_Form, f_Url)
{ 
    var dForm = document.getElementById(f_Form);
    
    showAjaxLoadingDiv();
		
      var FormFields = '';
     	var FormElements = dForm.elements;
      for (i=0; i<FormElements.length; i++) {
     
         if (FormElements[i].tagName == "INPUT") {
     			 
            if (FormElements[i].type == "text") {
               FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
            }
            
            if (FormElements[i].type == "hidden") {
               FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
            }
            
            if (FormElements[i].type == "checkbox") {
               if (FormElements[i].checked) {
                  FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
               } else {
                  //FormFields += FormElements[i].name + "=&";
               }
            }
            if (FormElements[i].type == "radio") {
               if (FormElements[i].checked) {
                  FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
               }
            }
         }   
         if (FormElements[i].tagName == "SELECT") {
            var sel = FormElements[i];
            FormFields += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
         }
         
         if (FormElements[i].tagName == "TEXTAREA") {
            
            if (FormElements[i].id.substring(0,6) == "Editor") {
	            FormFields += FormElements[i].name + "=" + escape(tinyMCE.get(FormElements[i].id).getContent()) + "&";
  					} else {
  						FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
  					}          
            
         }
         
      }
      FormFields += 'a=1';
      		
		var httpRequest = createHttpRequest()
  	
  	httpRequest.open('post', f_Url+'?Tijd='+getTimeString()); 
  	httpRequest.onreadystatechange = function() {handleResponse_SaveDetails(httpRequest); };
    httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    httpRequest.send(FormFields);
}


function handleResponse_SaveDetails(httpRequest) { 
  if(httpRequest.readyState == 4) { 
		if (httpRequest.status == 200) {
    	var messagedetails = httpRequest.responseXML.getElementsByTagName('messagedetails')[0].firstChild.nodeValue;
			var DetailsUrl = httpRequest.responseXML.getElementsByTagName('detailsurl')[0].firstChild.nodeValue;

			//var message = '';
			//var DetailsUrl = httpRequest.responseText;
        openDetails(DetailsUrl);
      	if(document.getElementById('messagedetails') != null) {
					document.getElementById('messagedetails').innerHTML = messagedetails;
        }
      }
      else {
        createErrorDiv(httpRequest, 'body');
      }
      hideAjaxLoadingDiv();
  }
}

function getTimeString()
{
    var today=new Date();		//	We geven de datum/tijd mee zodat er altijd een 
    var h=today.getHours();		//	andere url is waardoor de pagina niet uit
    var m=today.getMinutes();	//	de cache zal worden gehaald.
    var s=today.getSeconds();
    return h+':'+m+':'+s;
}

function changePriority(f_Url)
{
showAjaxLoadingDiv();
var httpRequest = createHttpRequest();

httpRequest.open("GET", f_Url+'&Tijd='+getTimeString() , true);
httpRequest.onreadystatechange = function() {handleHttpResponse_ChangePriority(httpRequest, 'center_body'); };
httpRequest.send(null);
}

function handleHttpResponse_ChangePriority(httpRequest, TargetDivId) 
{ 
    if(httpRequest.readyState == 4)
    { 
        if (httpRequest.status == 200)
        {		
        	LoadPage(httpRequest.responseText);
        }
        else
        {
            createErrorDiv(httpRequest, TargetDivId);
        }
        hideAjaxLoadingDiv();
    }
}

function launchJS(js) {
	try {
		if(js != '') {
			if(window.execScript) {
    		window.execScript(js);
     	} else {
			window.setTimeout(js, 0);
    	}
  	}
	}
	catch(err) {
		alert("Can't launch javascript: \n" + err.name + " [" + err.number + "]\n"+ err.message  + "\n"+ err.location  + "\n");
	}	      
}

function getProductPrice(f_Form, f_Url)
{ 
    var dForm = document.getElementById(f_Form);
    
    showAjaxLoadingDiv();
		
      var FormFields = '';
     	var FormElements = dForm.elements;
      
      for (i=0; i<FormElements.length; i++) {
     
         if (FormElements[i].tagName == "INPUT") {
     			 
            if (FormElements[i].type == "text") {
               FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
            }
            
            if (FormElements[i].type == "hidden") {
               FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
            }
            
            if (FormElements[i].type == "checkbox") {
               if (FormElements[i].checked) {
                  FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
               } else {
                  //FormFields += FormElements[i].name + "=&";
               }
            }
            if (FormElements[i].type == "radio") {
               if (FormElements[i].checked) {
                  FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
               }
            }
         }   
         if (FormElements[i].tagName == "SELECT") {
            var sel = FormElements[i];
            FormFields += sel.name + "=" + escape(sel.options[sel.selectedIndex].value) + "&";
         }
         
         if (FormElements[i].tagName == "TEXTAREA") {
            
            if (FormElements[i].id.substring(0,6) == "Editor") {
	            FormFields += FormElements[i].name + "=" + escape(tinyMCE.get(FormElements[i].id).getContent()) + "&";
  					} else {
  						FormFields += FormElements[i].name + "=" + escape(FormElements[i].value) + "&";
  					}          
            
         }
         
      }
      FormFields += 'a=1';
      		
		var httpRequest = createHttpRequest()
  	  
  	httpRequest.open('post', f_Url+'?Tijd='+getTimeString()); 
  	httpRequest.onreadystatechange = function() {handleResponse_getProductPrice(httpRequest); };
    httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    httpRequest.send(FormFields);
}


function handleResponse_getProductPrice(httpRequest) { 
  
  if(httpRequest.readyState == 4) { 
		if (httpRequest.status == 200) {
    	if (httpRequest.responseXML.getElementsByTagName('notfound')[0] != null){
				var notfound = httpRequest.responseXML.getElementsByTagName('notfound')[0].firstChild.nodeValue;
			}
    	
    	if (!notfound == '1'){
    	
	    	if (httpRequest.responseXML.getElementsByTagName('price')[0] != null){
	    		var price = httpRequest.responseXML.getElementsByTagName('price')[0].firstChild.nodeValue;
	    		if (document.getElementById('price') != null) {
				  	document.getElementById('price').innerHTML = price;
				  }
	    	}
	    	if (httpRequest.responseXML.getElementsByTagName('oldprice')[0] != null){
	    		var oldprice = httpRequest.responseXML.getElementsByTagName('oldprice')[0].firstChild.nodeValue;
	    		if (document.getElementById('oldprice') != null) {
			 			document.getElementById('oldprice').innerHTML=oldprice;
					}
	    	}
	    	
	    	if (httpRequest.responseXML.getElementsByTagName('korting')[0] != null){
	    		var korting = httpRequest.responseXML.getElementsByTagName('korting')[0].firstChild.nodeValue;
	    		if (document.getElementById('korting') != null) {
			 			document.getElementById('korting').innerHTML=korting;
					}
	    	}
	    	
				if (httpRequest.responseXML.getElementsByTagName('productcode')[0] != null){
					var productcode = httpRequest.responseXML.getElementsByTagName('productcode')[0].firstChild.nodeValue;
					document.formbestel.ProductCode.value	=	productcode;
				}
				
				if (httpRequest.responseXML.getElementsByTagName('productoptionid')[0] != null){
					var productoptionid = httpRequest.responseXML.getElementsByTagName('productoptionid')[0].firstChild.nodeValue;
					document.formbestel.ProductOptionID.value	=	productoptionid;
				}
				
				if (httpRequest.responseXML.getElementsByTagName('productname')[0] != null){
					var productname = httpRequest.responseXML.getElementsByTagName('productname')[0].firstChild.nodeValue;
					document.formbestel.Name.value	=	productname;
				}
				
				//document.getElementById('submitDiv').innerHTML	=	"<input type='submit' name='Bestel' class='btn-bestellen' value=''>";
				//document.getElementById('Quantity').disabled = false;
				
			} else {
				document.getElementById('submitDiv').innerHTML	=	"<span style='color:red;'>Huidige combinatie is niet mogelijk.</span>";
				document.getElementById('price').innerHTML = '';
				document.getElementById('Quantity').disabled = true;
			}	
				
			}
      else {
        alert('Fout opgetreden. Neem contact op met de webmaster.')
      }
      
  }
}
