function checkIdealAdvancedForm(form)
{
	if (form.issuer.options[form.issuer.selectedIndex].value == "")
	{
		setFailed(form.issuer, document.getElementById("issuer_id"), true);
		
		getTranslation("Kies een bank om mee te betalen!");
		
		return false;
	}
	
	return true;
}

function setReviewRating(name, rating)
{
	var input = document.getElementById(name + "_id");
	if (input)
	{
		input.value = rating;
	}
}

function resetReviewRating(name)
{
	var input = document.getElementById(name + "_id");
	if (input)
	{
		var rating = input.value;
		
		var star = document.getElementById("div_" + name + "_id");
		if (star)
		{
			var offset = (-80 + (rating * 16));
			star.style.backgroundPosition = offset + "px 0";
		}
	}
}

function changeReviewRating(name, rating)
{
	var star = document.getElementById("div_" + name + "_id");
	if (star)
	{
		var offset = (-80 + (rating * 16));
		star.style.backgroundPosition = offset + "px 0";
	}
}

function confirmAfterPayment(divId, provider, orderId)
{
	var params = {
		divId: divId,
		provider: provider,
		orderId: orderId,
		action: "afterPayment",
		template: "webshop/paymentprovider/container.tpl"
	};
	
	getTranslationConfirm(
		"Weet u zeker dat u deze betaling wilt uitvoeren?", 
		xajax_call,
		params
	);
}

var inputHasChanged = false;
function isChanged()
{
	inputHasChanged = true;
}

function noProductsHaveChanged(url)
{
	if(!inputHasChanged)
	{
		location.href = url;
	}
	else
	{
		getTranslation("De aantallen zijn gewijzigd. Druk eerst op 'Aantal wijzigen' voordat u verder kunt gaan.");
	}
}

function inputSelectSameValue(obj, id)
{
	var el = document.getElementById(id);
	if(el)
	{
		if (obj.type == "select-one")
		{
			el.selectedIndex = obj.selectedIndex;
		}
		else if (obj.type == "text")
		{
			el.value = obj.value;
		}
		else if(obj.type == "checkbox" || obj.type == "radio")
		{
			el.checked  = obj.checked;
		}
	}
}

function updateCart(url)
{
	var items = new Object();
	items["action"] = "updateCart";
	var elements = document.getElementsByTagName("input");
	for (var i = 0; i < elements.length; i++)
	{
		items["product_" + (i+1)] = elements[i].name + "," + elements[i].id + "," + elements[i].value;
	}
	post(url, items);
}

function displayInvoiceAddress()
{
	for (var i = 0; i < 100; i++)
	{
		var el = document.getElementById("delivery_id_" + i);
		if (el)
		{
			el.style.display == "none" ? el.style.display = "table-row" : el.style.display = "none";
			el.style.visibility == "hidden" ? el.style.visibility = "visible" : el.style.visibility = "hidden";
			
			if (el.style.display == "none" && el.style.visibility == "hidden")
			{
				var inputs = el.getElementsByTagName("INPUT");
				for (var j = 0; j < inputs.length; j++)
				{					
					if (inputs[j])
					{
						inputs[j].value = "";
						
						var label = document.getElementById(inputs[j].name);
						
						setFailed(inputs[j], label, false);
					}
				}
			}
		}
		else
		{
			return;
		}
	}
}

function submitForm(form, msg)
{
	if (!form.onsubmit())
	{
		if (msg)
		{
			alert(msg);
		}
		return;
	}
	form.submit();
}

function checkAgreed(form)
{
	if (!form.agreed.checked)
	{
		getTranslation("U dient akkoord te gaan met de algemene voorwaarden!");
		
		return false;
	}
	
	return true;
}

function checkPaymentMethod(form)
{
	for (var i = 0; i < form.payment.length; i++)
	{
		if (form.payment[i].checked)
		{
			return true;
		}
	}
	
	getTranslation("Kies een betalingsmethode!");
	
	return false;
}

function checkDiscountCode(form)
{
	if (form.discount_code.value.length < 6)
	{
		setFailed(form.discount_code, document.getElementById("discount_code"), true);
		
		getTranslation("Voer een correcte kortingscode in!");
		
		return false;
	}
	
	return true;
}

function checkReviewForm(form, msg)
{
	var failed = false;
	
	for (var i = 0; i < form.elements.length; i++)
	{
		var element = form.elements[i];
		
		if (element.name.length > 0)
		{
			var fieldField = false;
			
			var label = document.getElementById("label_" + element.name + "_id");

			setFailed(element, label, false);
			
			if (element.name.match(/^score/))
			{
				fieldFailed = setLabel(element, label, "score");
			}
			else
			{
				fieldFailed = setLabel(element, label, "text");
			}
			
			if (fieldFailed)
			{
				failed = fieldFailed;
			}
		}
	}
	
	if (failed)
	{
		alert(msg);
		
		return false;
	}
	return true;
}

function checkAddressInfo(form)
{
	var failed = false;
	var sameForInvoice = false;
	
	if (document.getElementById("sameForInvoice") && document.getElementById("sameForInvoice").checked)
	{
		 sameForInvoice = true;
	}
	
	for (var i = 0; i < form.elements.length; i++)
	{
		var element = form.elements[i];
		
		if (element.name.length > 0)
		{
			var fieldFailed = false;
			
			var label = document.getElementById(element.name)
			
			setFailed(element, label, false);
			
			switch(element.name)
			{
				case "invoice_name":
					fieldFailed = setLabel(element, label, "string");
					break;
				case "invoice_address":
					fieldFailed = setLabel(element, label, "string");
					break;
				case "invoice_number":
					fieldFailed = setLabel(element, label, "string");
					break;
				case "invoice_postalcode":
					fieldFailed = setLabel(element, label, "string");
					break;
				case "invoice_city":
					fieldFailed = setLabel(element, label, "string");
					break;
				case "invoice_email":
					fieldFailed = setLabel(element, label, "email");
					break;
				case "invoice_telephone":
					fieldFailed = setLabel(element, label, "telephone");
					break;
					
				case "delivery_name":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "string");
					break;
				case "delivery_address":
					if (!sameForInvoice)						
						fieldFailed = setLabel(element, label, "string");
					break;
				case "delivery_number":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "string");
					break;
				case "delivery_postalcode":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "string");
					break;
				case "delivery_city":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "string");
					break;
				case "delivery_email":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "email");
					break;
				case "delivery_telephone":
					if (!sameForInvoice)
						fieldFailed = setLabel(element, label, "telephone");
					break;
			}
			
			if (fieldFailed)
			{
				failed = fieldFailed;
			}
		}
	}
	
	if (failed)
	{
		return false;
	}
	return true;
}

function setLabel(element, label, type)
{
	var failed = false;

	switch(type)
	{
		default:
			if (element.value == "")
			{
				setFailed(element, label, true);
				
				failed = true;
			}
			break;
		case "telephone":
			var regX = new RegExp(/^[0-9\s\-\(\)\+]+$/);
			if (!regX.test(element.value))
			{
				setFailed(element, label, true);
				
				failed = true;
			}
			break;
		case "email":
			var regX = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/);
			if (!regX.test(element.value))
			{
				setFailed(element, label, true);
				
				failed = true;
			}
			break;
		case "password":
			if (element.value.length < 6)
			{
				setFailed(element, label, true);
				
				failed = true;
			}
			else
			{
				setFailed(element, label, false);
			}	
			break;
	}
	return failed;
}

var lastColor;
function changeOrderStatusColor(id, status)
{
	var td = document.getElementById("td_" + id);
	if (td)
	{
		var span = td.getElementsByTagName("SPAN");
		if (status == 1)
		{
			lastColor = span[0].style.color;
			span[0].style.color = "#ffffff";
		}
		else
			span[0].style.color = lastColor;
	}
}
