
/* bonnenfabriek */ 
var Bonnenfabriek = {
	currentLink: null,

	setCurrentLink: function (id)
	{
		if (!document.getElementById(id))
			return false;

		if (Bonnenfabriek.currentLink)
			Bonnenfabriek.currentLink.className = '';
		
		Bonnenfabriek.currentLink = document.getElementById(id);
		Bonnenfabriek.currentLink.className = 'current';
	},

	clearCurrentLink: function ()
	{
		if (Bonnenfabriek.currentLink)
			Bonnenfabriek.currentLink.className = '';
		
		Bonnenfabriek.currentLink = null;
	},

	editCard: function (index)
	{
		
	},
	
	validateText: function (element)
	{
		if (!element.value || !element.value.length)
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'block';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'inline';

			element.className = element.className.replace(" error", "");
			element.className += " error";
			return false;
		}
		else
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'none';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'none';
		}
		element.className = element.className.replace(" error", "");
		return true;
	},
	
	validateEmail: function (element)
	{
		if (!element.value || !element.value.length || !/^[-_a-z0-9~.]+@\w[-_a-z0-9~.]+\.[a-z]{2}[a-z]*$/i.test(element.value))
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'block';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'inline';

			element.className = element.className.replace(" error", "");
			element.className += " error";
			return false;
		}
		else
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'none';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'none';
		}
		element.className = element.className.replace(" error", "");
		return true;
	},
	
	validateCheck: function (element)
	{
		if (!element.checked)
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'block';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'inline';
			element.className += " error";
			return false;
		}
		else
		{
			if (document.getElementById('error_'+element.name))
				document.getElementById('error_'+element.name).style.display = 'none';
			if (document.getElementById('erroricon_'+element.name))
				document.getElementById('erroricon_'+element.name).style.display = 'none';
		}
		element.className = element.className.replace(" error", "");
		return true;
	},
	
	validateRadio: function (element)
	{
		if (element)
		{
			for (i=0;i<element.length; i++)
			{
				if (element[i].checked)
				{
					if (document.getElementById('error_'+element[i].name))
						document.getElementById('error_'+element[i].name).style.display = 'none';
					if (document.getElementById('erroricon_'+element[i].name))
						document.getElementById('erroricon_'+element[i].name).style.display = 'none';
					element[0].parentNode.className = element[0].className.replace(" error", "");
					
					return true;
				}
			}
		}

		if (document.getElementById('error_'+element[0].name))
			document.getElementById('error_'+element[0].name).style.display = 'block';
		if (document.getElementById('erroricon_'+element[0].name))
			document.getElementById('erroricon_'+element[0].name).style.display = 'inline';
		element[0].parentNode.className += " error";
		return false;
	},
	
	updateTotalPrices: function (result)
	{
		document.getElementById('totalprice').innerHTML = result.order.totalPrice;
		document.getElementById('subtotalprice').innerHTML = result.order.subtotalPrice;

		if (document.getElementById('codediscountprice'))
			document.getElementById('codediscountprice').innerHTML = result.order.codeDiscountPrice;
		
		document.getElementById('tax_taxprice').innerHTML = result.order.taxPrice;
		document.getElementById('tax_totalprice').innerHTML = result.order.taxedPrice;

		if (parseFloat(result.order.amountDiscountPrice) > 0)
		{
			document.getElementById('amountdiscountprice').innerHTML = result.order.amountDiscountPrice;
			document.getElementById('amountdiscount').style.display = 'table-row';
		}
		else
			document.getElementById('amountdiscount').style.display = 'none';
	},
	
	addAddress: function (itemIndex)
	{
		var deliveryForm = document.forms.deliveryForm;
		deliveryForm.style.display = 'none';
		var addressForm = document.forms.addressForm;
		addressForm.style.display = 'block';
		document.getElementById('addressFormEditTitle').style.display = 'none';
		document.getElementById('addressFormAddTitle').style.display = 'block';
		
		Bonnenfabriek.setCurrentLink('add_address_'+itemIndex);
		
		addressForm.itemIndex.value = itemIndex;
		addressForm.index.value = -1;
//		addressForm.firstName.value = '';
		addressForm.lastName.value = '';
		addressForm.street.value = '';
		addressForm.housenumber.value = '';
		addressForm.zipcode.value = '';
		addressForm.city.value = '';
		addressForm.countryID.selectedIndex = 0;
		addressForm.amount.selectedIndex = 0;
//		addressForm.amount.value = 1;

		addressForm.lastName.className	= addressForm.lastName.className.replace(" error", "");
		addressForm.street.className	= addressForm.street.className.replace(" error", "");
		addressForm.housenumber.className	= addressForm.housenumber.className.replace(" error", "");
		addressForm.zipcode.className	= addressForm.zipcode.className.replace(" error", "");
		addressForm.city.className		= addressForm.city.className.replace(" error", "");
		
		document.getElementById('error_lastName').style.display = 'none';
		document.getElementById('error_street').style.display = 'none';
		document.getElementById('error_housenumber').style.display = 'none';
		document.getElementById('error_zipcode').style.display = 'none';
		document.getElementById('error_city').style.display = 'none';
		
		if (document.getElementById('erroricon_lastName'))		document.getElementById('erroricon_lastName').style.display = 'none';
		if (document.getElementById('erroricon_street'))		document.getElementById('erroricon_street').style.display = 'none';
		if (document.getElementById('erroricon_housenumber'))	document.getElementById('erroricon_housenumber').style.display = 'none';
		if (document.getElementById('erroricon_zipcode'))		document.getElementById('erroricon_zipcode').style.display = 'none';
		if (document.getElementById('erroricon_city'))			document.getElementById('erroricon_city').style.display = 'none';
	},
	
	editAddress: function (itemIndex, index, firstName, lastName, street, housenumber, zipcode, city, countryID, amount)
	{
		var deliveryForm = document.forms.deliveryForm;
		deliveryForm.style.display = 'none';
		var addressForm = document.forms.addressForm;
		addressForm.style.display = 'block';
		document.getElementById('addressFormAddTitle').style.display = 'none';
		document.getElementById('addressFormEditTitle').style.display = 'block';
		
		Bonnenfabriek.setCurrentLink('editaddress_'+itemIndex+'_'+index);
		
		addressForm.itemIndex.value = itemIndex;
		addressForm.index.value = index;
//		addressForm.firstName.value = firstName;
		addressForm.lastName.value = lastName;
		addressForm.street.value = street;
		addressForm.housenumber.value = housenumber;
		addressForm.zipcode.value = zipcode;
		addressForm.city.value = city;
		for (i=0;i<addressForm.countryID.options.length;i++)
			if (addressForm.countryID.options[i].value == countryID)
				addressForm.countryID.selectedIndex = i;
		for (i=0;i<addressForm.amount.options.length;i++)
			if (addressForm.amount.options[i].value == amount)
				addressForm.amount.selectedIndex = i;
		//addressForm.amount.value = amount;

		this.validateText(addressForm.lastName);
		this.validateText(addressForm.street);
		this.validateText(addressForm.housenumber);
		this.validateText(addressForm.zipcode);
		this.validateText(addressForm.city);
	},

	saveAddress: function ()
	{
		var addressForm = document.forms.addressForm;

		var errors = false;
		if (!this.validateText(addressForm.lastName))
			errors = true;
		if (!this.validateText(addressForm.street))
			errors = true;
		if (!this.validateText(addressForm.housenumber))
			errors = true;
		if (!this.validateText(addressForm.zipcode))
			errors = true;
		if (!this.validateText(addressForm.city))
			errors = true;

		if (errors)
			return false;

		var vars = "";
		vars += "itemIndex="+addressForm.itemIndex.value;
		vars += "&index="+addressForm.index.value;
//		vars += "&firstName="+addressForm.firstName.value;
		vars += "&lastName="+addressForm.lastName.value;
		vars += "&street="+addressForm.street.value;
		vars += "&housenumber="+addressForm.housenumber.value;
		vars += "&zipcode="+addressForm.zipcode.value;
		vars += "&city="+addressForm.city.value;
		vars += "&countryID="+addressForm.countryID.options[addressForm.countryID.selectedIndex].value;
		vars += "&amount="+addressForm.amount.options[addressForm.amount.selectedIndex].value;
		//vars += "&amount="+addressForm.amount.value;

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=saveAddress", Bonnenfabriek.saveAddressCallback, undefined, false);
	},
	
	saveAddressCallback: function (request)
	{
		var addressForm = document.forms.addressForm;
		addressForm.style.display = 'none';
		
		Bonnenfabriek.clearCurrentLink();

		eval('var result = '+request.responseText);

		if (result.newAddress)
		{
			var editLink = document.createElement('a');
			editLink.appendChild(document.createTextNode(editText));
			editLink.href = "#";
			editLink.id = "editaddress_"+result.itemIndex+'_'+result.index;

			var address = document.createElement('span');
			address.id = "address_"+result.itemIndex+'_'+result.index;
			address.className = "addressfull";
			address.appendChild(document.createTextNode(""));
		}
		else
		{
			var editLink = document.getElementById('editaddress_'+result.itemIndex+'_'+result.index);
			var address = document.getElementById('address_'+result.itemIndex+'_'+result.index);
		}

		editLink.itemIndex		= result.itemIndex;
		editLink.index			= result.index;
		editLink.firstName		= result.firstName;
		editLink.lastName		= result.lastName;
		editLink.street			= result.street;
		editLink.housenumber	= result.housenumber;
		editLink.zipcode		= result.zipcode;
		editLink.city			= result.city;
		editLink.countryID		= result.countryID;
		editLink.amount			= result.amount;

		address.innerHTML = /*editLink.firstName+' '+*/editLink.lastName+', '+editLink.street+' '+editLink.housenumber+', '+editLink.zipcode+' '+editLink.city;
		editLink.onclick = function() {Bonnenfabriek.editAddress(this.itemIndex, this.index, this.firstName, this.lastName, this.street, this.housenumber, this.zipcode, this.city, this.countryID, this.amount); return false;};
		if (result.newAddress)
		{
			var amountSpan = document.createElement('span');
			amountSpan.id = 'addressamount_'+result.itemIndex+'_'+result.index;
			amountSpan.appendChild(document.createTextNode(result.amount+"x "));

			var removeLink = document.createElement('a');
			removeLink.itemIndex = result.itemIndex;
			removeLink.index = result.index;
			removeLink.href = "#";
			removeLink.onclick = function() {Bonnenfabriek.removeAddress(this.itemIndex, this.index); return false;}
			removeLink.appendChild(document.createTextNode(removeText));

			var linksDiv = document.createElement('div');
			linksDiv.className = 'links';
			linksDiv.appendChild(editLink);
			linksDiv.appendChild(document.createTextNode(" | "));
			linksDiv.appendChild(removeLink);

			var addressDiv = document.createElement('div');
			addressDiv.className = "address";
			addressDiv.appendChild(amountSpan);
			addressDiv.appendChild(document.createTextNode(addressText + ": "));
			addressDiv.appendChild(address);
			addressDiv.appendChild(linksDiv);

			document.getElementById('addresses_'+editLink.itemIndex).appendChild(addressDiv);
		}
		else
		{
			document.getElementById('addressamount_'+result.itemIndex+'_'+result.index).innerHTML = result.amount+"x ";
		}

		if (result.amount == 1)
			document.getElementById('addressamount_'+result.itemIndex+'_'+result.index).style.display = 'none';
		else
			document.getElementById('addressamount_'+result.itemIndex+'_'+result.index).style.display = 'inline';
		
		document.getElementById('amount_'+result.itemIndex).innerHTML = result.item.amount;
		document.getElementById('price_'+result.itemIndex).innerHTML = result.item.price;
		document.getElementById('postage_'+result.itemIndex).innerHTML = result.item.postage;
//		document.getElementById('stamps_'+result.itemIndex).innerHTML = result.item.stamps;

		Bonnenfabriek.updateTotalPrices(result);
	},
	
	cancelAddress: function()
	{
		var addressForm = document.forms.addressForm;
		addressForm.style.display = 'none';
		
		Bonnenfabriek.clearCurrentLink();
	},

	removeAddress: function(itemIndex, index)
	{
		if (!window.confirm(confirmRemoveAddress))
			return;

		var vars = "";
		vars += "itemIndex="+itemIndex;
		vars += "&index="+index;

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=removeAddress", Bonnenfabriek.removeAddressCallback, undefined, false);
	},

	removeAddressCallback: function(request)
	{
		eval('var result = '+request.responseText);

		if (result.success)
		{
			var address = document.getElementById('address_'+result.itemIndex+'_'+result.index);
			address.parentNode.parentNode.removeChild(address.parentNode);
	
			document.getElementById('amount_'+result.itemIndex).innerHTML = result.item.amount;
			document.getElementById('price_'+result.itemIndex).innerHTML = result.item.price;
			document.getElementById('postage_'+result.itemIndex).innerHTML = result.item.postage;
//			document.getElementById('stamps_'+result.itemIndex).innerHTML = result.item.stamps;
	
			Bonnenfabriek.updateTotalPrices(result);
		}
		else
			alert(deleteLastAddressError);
	},
	
	removeItem: function(itemIndex)
	{
		if (!window.confirm(confirmRemoveItem))
			return;

		var vars = "";
		vars += "itemIndex="+itemIndex;

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=removeItem", Bonnenfabriek.removeItemCallback, undefined, false);
	},
	
	removeItemCallback: function(request)
	{
		eval('var result = '+request.responseText);

		var item = document.getElementById('item_'+result.itemIndex);
		item.parentNode.removeChild(item);
		
		Bonnenfabriek.updateTotalPrices(result);
		Bonnenfabriek.updateNext(result);
	},
	
	updateNext: function(result)
	{
		if (result.order.totalPrice == '0,00' )
		{
			document.getElementById('nextbutton').className = 'nextStepdisabled';
			document.getElementById('nextbuttonanchor').href = '';
			document.getElementById('nextbuttonanchor').style.cursor = 'default';
		}
	},
	
	editItem: function(itemIndex)
	{
		showDesignTool("", itemIndex);
	},

	editDeliveryDate: function (itemIndex, day, month, year)
	{
		var addressForm = document.forms.addressForm;
		addressForm.style.display = 'none';
		var deliveryForm = document.forms.deliveryForm;
		deliveryForm.style.display = 'block';

		Bonnenfabriek.setCurrentLink('delivery_'+itemIndex);

		deliveryForm.itemIndex.value = itemIndex;
		selectDate(day, month-1, year);
	},
	
	saveDeliveryDate: function ()
	{
		var deliveryForm = document.forms.deliveryForm;
		
		var vars = "date="+deliveryForm.date.value;
		vars += "&itemIndex="+deliveryForm.itemIndex.value;

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=saveDeliveryDate", Bonnenfabriek.saveDeliveryDateCallback, undefined, false);
	},
	
	saveDeliveryDateCallback: function (request)
	{
		eval('var result = '+request.responseText);
		
		var itemIndex = result.itemIndex;
		var dateFormatted = result.dateFormatted;
		var date = new Date(result.dateFormatted);
		
		document.getElementById('deliverydate_'+itemIndex).innerHTML = dateFormatted;
		
		var deliveryLink = document.getElementById('delivery_'+itemIndex);
		deliveryLink.itemIndex = itemIndex;
		deliveryLink.date = date.getDate();
		deliveryLink.month = date.getMonth();
		deliveryLink.year = date.getFullYear();
		deliveryLink.onclick = function() {Bonnenfabriek.editDeliveryDate(this.itemIndex, this.date, this.month+1, this.year);return false;};

		var deliveryForm = document.forms.deliveryForm;
		deliveryForm.style.display = 'none';

		Bonnenfabriek.clearCurrentLink();
	},
	
	saveOrderInfo: function ()
	{
		var orderInfo = document.forms.orderinfo;

		var errors = false;
		if (!this.validateText(orderInfo.lastName))
			errors = true;
/*
		if (!this.validateText(orderInfo.street))
			errors = true;
		if (!this.validateText(orderInfo.zipcode))
			errors = true;
		if (!this.validateText(orderInfo.city))
			errors = true;
*/
		if (!this.validateEmail(orderInfo.email))
			errors = true;
		if (!this.validateCheck(orderInfo.terms))
			errors = true;

		if (orderInfo.paymentMethod)
			if (!this.validateRadio(orderInfo.paymentMethod))
				errors = true;

		if (errors)
			return;

//		var vars = "firstName="+orderInfo.firstName.value;
//		vars += "&lastName="+orderInfo.lastName.value;
		var vars = "lastName="+orderInfo.lastName.value;
//		vars += "&street="+orderInfo.street.value;
//		vars += "&zipcode="+orderInfo.zipcode.value;
//		vars += "&city="+orderInfo.city.value;
//		vars += "&countryID="+orderInfo.countryID.options[orderInfo.countryID.selectedIndex].value;
		vars += "&email="+orderInfo.email.value;
		vars += "&terms="+(orderInfo.terms.checked?1:0);
		vars += "&newsletter="+(orderInfo.newsletter.checked?1:0);

		if (orderInfo.paymentMethod)
			for (i=0;i<orderInfo.paymentMethod.length; i++)
				if (orderInfo.paymentMethod[i].checked)
					vars += "&paymentMethod=" + orderInfo.paymentMethod[i].value;

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=saveOrderInfo", Bonnenfabriek.saveOrderInfoCallback, undefined, false);
	},
	
	saveOrderInfoCallback: function(request)
	{
		eval('var result = '+request.responseText);

		if (result.orderFree)
		{
			document.location.href = httpPath+"/action/orderaccepted/";
			return;
		}

		var ogoneForm = document.forms.ogoneform;
		ogoneForm.orderID.value = result.orderID;
		ogoneForm.amount.value = result.totalPrice;
		ogoneForm.PM.value = result.PM;
		ogoneForm.BRAND.value = result.BRAND;
		ogoneForm.SHASign.value = result.SHASign;
		ogoneForm.submit();
	},
	
	setExtraProduct: function(id, checked)
	{
		var vars = "id="+id;
		vars += "&checked="+(checked?"1":"0");

		if (checked)
			document.getElementById("extraProductPrice_"+id).style.display = 'block';
		else
			document.getElementById("extraProductPrice_"+id).style.display = 'none';

		SmartyAjax.call(bonnenfabriekAjaxUrl, "get", vars+"&f=setExtraProduct", Bonnenfabriek.setExtraProductCallback, undefined, false);
	},
	
	setExtraProductCallback: function(request)
	{
		eval('var result = '+request.responseText);
		
		Bonnenfabriek.updateTotalPrices(result);
	}
}