var xmlHttp;
var contentDiv;
var actionTaken;
var mainAction;
var paymentMethod = "";
var languageUsed;
var orderId;
var skipStep;

function stateChanged()
{
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{


		if(xmlHttp.status== 200 || xmlHttp.status== 304){
			updatePage();
		}else{
			//An error occured
			//alert(xmlHttp.statusText);
		}
	}
}

function updatePage(){

//	alert(xmlHttp.responseText)

	if(actionTaken == "checkorder"){
		var IsOrder = eval(xmlHttp.responseText);

		if(IsOrder){
			mainAction = "checkorder";
			//Show shoppingcart
			//showScButton('ww_knop','visible');
			//showScButton('cartDiv','visible');
			viewCart(contentDiv,languageUsed,'viewcart');
		}

		//Update cartinfo after update or delete
	}else if(actionTaken=="viewcart" && mainAction=="checkorder"){

		if (document.getElementById(contentDiv) != undefined) {
			document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;

			mainAction = "";

			//Get bookmark for pagestate
			var strBookMark = '';
			var strTarget = '';

			strBookMark = getPageBookMark();

			if(strBookMark.length>-1){

				var arrBookMark = strBookMark.split('%');

				//Targetpage
				var arrTarget = arrBookMark[0].split('=');
				strTarget = arrTarget[1];

				switch(strTarget)
				{
					case "sco":
					ShowOrderOverview('cartoverview',languageUsed,'vieworder');
					break;
					case "cuf":
					ShowCustomerForm('cartoverview',languageUsed,'showcustomerform');
					break;
					case "oov":
					ShowOrderOverview('cartoverview',languageUsed,'showorderoverview');
					break;
					case "pop":
					ShowPaymentOptions('cartoverview',languageUsed,'showpaymentoptions');
					break;
					case "pay":

					//Current OrderId
					var arrOrderId = arrBookMark[1].split('=');
					var intOrderId = arrOrderId[1];
					//Current method of payment
					var arrPayment = arrBookMark[2].split('=');
					var strPayment = arrPayment[1];

					ConfirmOrder('cartoverview',languageUsed,'confirmorder',intOrderId,strPayment);
					break;
					default:
					break;
				}
			}
		}
	}else if(actionTaken=="viewcart" && (mainAction=="delete" || mainAction=="delete_product_accessoire")){

		document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;

		mainAction = "";

		//Get bookmark for pagestate
		var strBookMark = '';
		var strTarget = '';
		strBookMark = getPageBookMark();

		if(strBookMark.length>-1){

			var arrBookMark = strBookMark.split('%');

			//Targetpage
			var arrTarget = arrBookMark[0].split('=');
			strTarget = arrTarget[1];

			switch(strTarget)
			{
				case "sco":
				ShowOrderOverview('cartoverview',languageUsed,'vieworder');
				break;
				case "oov":
				ShowOrderOverview('cartoverview',languageUsed,'showorderoverview');
				break;
				case "pop":
				ShowPaymentOptions('cartoverview',languageUsed,'showpaymentoptions');
				break;
			}
		}

	}
	else if(actionTaken=="edit"){

		//Check if validationerrors occured
		var strValidationErrors = xmlHttp.responseText;
		var strValidationMessage = '';
		var arrValidationErrors;

		arrValidationErrors = strValidationErrors.split("||");


		//Errors found
		if(!eval(arrValidationErrors[0])){
			strValidationMessage = arrValidationErrors[1];
			valDiv = document.getElementById('validation_errors2');
			valDiv.style.visibility = 'visible';
			valDiv.innerHTML = strValidationMessage;
		}else{

			mainAction = "edit";
			ShowOrderOverview('cartoverview',languageUsed,'vieworder');

		}


	}else if(actionTaken=="vieworder"){

		document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;

		//Hide error messages
		if(document.getElementById('validation_errors')){
			document.getElementById('validation_errors').innerHTML = '';
		}

		//Update shoppingcart
		viewCart('cartDiv',languageUsed,'viewcart');
	}else if(actionTaken=="delete" || actionTaken=="delete_product_accessoire"){

		mainAction = actionTaken;
		ShowOrderOverview('cartoverview',languageUsed,'vieworder');
		viewCart('cartDiv',languageUsed,'viewcart');
	}
	else if(actionTaken=="updatecustomer"){


		//Check if validationerrors occured
		var strValidationErrors = xmlHttp.responseText;
		var strValidationMessage = '';
		var arrValidationErrors;
		var arrValidationErrors1;

 		arrValidationErrors1 = strValidationErrors.split("##");
		arrValidationErrors = arrValidationErrors1[0].split("||");

		//alert(strValidationErrors);


		//Errors found
		if(!eval(arrValidationErrors[0])){

			var arrLen=arrValidationErrors1.length;

			strValidationMessage = '<ul>';

			for ( var i=0, len=arrLen; i<len; ++i ){
				arrValidationErrors = arrValidationErrors1[i].split("||");
				strValidationMessage+="<li>"+arrValidationErrors[1]+'</li>';

				//alert(arrValidationErrors[1]);

				oValField = document.getElementById(arrValidationErrors[2]);
				oValField.style.background = "#FF6F6F";

			}

			strValidationMessage += '</ul>';


			if(!document.getElementById("validation_errors")){
				//Create Div to hold usermessage "checkout/proceed shopping"
				var mainScDiv = document.getElementById("cartoverview");
				var oDiv = document.createElement("div");
				oDiv.id = "validation_errors";
				oDiv.innerHTML = strValidationMessage;
				mainScDiv.appendChild(oDiv);
				oDiv.onmouseover = function() {
					hideShowDiv("validation_errors","hidden");
				}
				hideShowDiv("validation_errors","visible");
			}else{
				valDiv = document.getElementById('validation_errors');
				hideShowDiv("validation_errors","visible");
				valDiv.innerHTML = strValidationMessage;
			}

			/*valDiv = document.getElementById('validation_errors');
			valDiv.style.display = 'block';
			valDiv.innerHTML = strValidationMessage*/

		}else{
			//No errors
			//Show paymentoptions
			//ShowPaymentOptions(contentDiv,languageUsed,'showpaymentoptions');

			if(skipStep){
				//Don't show orderoverview
				//ConfirmOrder(contentDiv,languageUsed,'confirmorder',orderId,paymentMethod);


			}else{
				ShowOrderOverview(contentDiv,languageUsed,'showorderoverview');
			}

		}
	}else if(actionTaken=="updatepaymentoption"){
		if(skipStep){
			//Don't show orderoverview
			ConfirmOrder(contentDiv,languageUsed,'confirmorder',orderId,paymentMethod);

		}else{
			ShowOrderOverview(contentDiv,languageUsed,'showorderoverview');
		}
	}
	else if(actionTaken=="add"){

		//alert(xmlHttp.responseText)

		//Check if validationerrors occured
		var strValidationErrors = xmlHttp.responseText;
		var strValidationMessage = '';
		var arrValidationErrors;

		arrValidationErrors = strValidationErrors.split("||");

		//Errors found

		//alert(arrValidationErrors[0])	;

		if(!eval(arrValidationErrors[0])){
			strValidationMessage = arrValidationErrors[1];

			alert(strValidationMessage);

			//valDiv = document.getElementById('validation_errors2');
			//valDiv.style.visibility = 'visible';
			//valDiv.innerHTML = strValidationMessage
		}else{


			//Show shoppingcart button
			//showScButton('ww_knop','visible');
			//showScButton('cartDiv','visible');

			if(!document.getElementById("actionAfterAdd")){
				//Create Div to hold usermessage "checkout/proceed shopping"
				var mainScDiv = document.getElementById("cartoverview");
				var oDiv = document.createElement("div");
				oDiv.id = "actionAfterAdd";

				mainScDiv.appendChild(oDiv);
			}

			hideShowDiv('actionAfterAdd','visible');

			//Retrieve the message
			viewMessageAfterAdd('actionAfterAdd',languageUsed,'viewaddmessage');


		}
	}else if(actionTaken=="viewaddmessage"){

		document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;

		//Hide errormessage
		//document.getElementById('validation_errors2').innerHTML = ''
		//Update shoppingcart
		viewCart('cartDiv',languageUsed,'viewcart');
	}else if(actionTaken=="showorderoverview"){
		document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;
		//Update shoppingcart
		viewCart('cartDiv',languageUsed,'viewcart');
	}else if(actionTaken=="loginStatus"){
		if(xmlHttp.responseText!==""){
			document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;
			//Show login status
			hideShowDiv(contentDiv,'visible');
			laden();
			//Check order after checking login status
		}
		CheckOrder('cartDiv',languageUsed,'checkorder');
	}else{

		document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;

			if(actionTaken=="confirmorder"){


			if(paymentMethod=="machtiging" || paymentMethod.indexOf("ideal")>-1 || paymentMethod.indexOf("creditcard")>-1 || paymentMethod=="paypal"){

				//Name of current window for returnpage payment
				//self.name='payopener';
				//Submit payment form
				if(document.forms['pay_form']){
					document.forms['pay_form'].submit();
				}
			}else{
				//Order confirmed, hide shoppingcart
				//hideShowDiv('ww_knop','hidden');
				//hideShowDiv('cartDiv','hidden');
			}

			//Update shoppingcart
			viewCart('cartDiv',languageUsed,'viewcart');

		}else if(actionTaken=="payorder"){
			if(paymentMethod=="machtiging" || paymentMethod.indexOf("ideal")>-1 || paymentMethod.indexOf("creditcard")>-1 || paymentMethod=="paypal"){
				//Name of current window for returnpage payment
				//self.name='payopener';
				//Submit payment form
				if(document.forms['pay_form']){
					document.forms['pay_form'].submit();
				}
			}
		}

		/*if(actionTaken=="confirmorder"){


			if(paymentMethod=="machtiging" || paymentMethod.indexOf("ideal")>-1 || paymentMethod.indexOf("creditcard")>-1){

				//Name of current window for returnpage payment
				self.name='payopener';
				//Submit payment form
				document.forms['pay_form'].submit();
			}else{
				//Order confirmed, hide shoppingcart
				//hideShowDiv('ww_knop','hidden');
				//hideShowDiv('cartDiv','hidden');
			}

			//Update shoppingcart
			viewCart('cartDiv',languageUsed,'viewcart');

		}else if(actionTaken=="payorder"){
			if(paymentMethod=="machtiging" || paymentMethod.indexOf("ideal")>-1 || paymentMethod.indexOf("creditcard")>-1){
				//Name of current window for returnpage payment
				self.name='payopener';
				//Submit payment form
				document.forms['pay_form'].submit();
			}
		}
		*/

	}


}

function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	}
	return xmlHttp;
}

//Send Ajax request
function SendRequest(url,method,postdata){
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open(method,url,true);
	xmlHttp.setRequestHeader("charset", "utf-8");
	xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

	if(method=="POST"){
		xmlHttp.send(postdata);
	}else{
		xmlHttp.send(null);
	}
}
