function submitForm(form, name, value)
{
	var field = form[name];
	if( field == null )
	{
		var newField = document.createElement("INPUT");
		newField.id = newField.uniqueID;
		newField.setAttribute("type", "hidden");
		newField.setAttribute("name", name);
		newField.setAttribute("value", value);
		form.appendChild(newField);
		
		field = newField;
	}
	field.value = value;
	form.submit();
}

function setFieldValue(form, name, value)
{
	form[name].value = value;
}

function formatPrice(price)
{
	decimalPrice = (price / 100);
	var decimalPriceStr = "" + decimalPrice;

	decimalPriceStr = decimalPriceStr.replace('.', ',');
	totalLength = decimalPriceStr.length;
	decimalIndex = decimalPriceStr.indexOf(',');

	if (decimalIndex > 0)
	{
	   	if ((totalLength - decimalIndex ) == 2)
	   	{
			return decimalPriceStr + "0";
		}
		return decimalPriceStr;
	}
	return decimalPriceStr + ",00";
}

function calculatePrices(form, amount, code, price)
{
	// Update the total order price.
	calculateOrderPrice(form);
	
	updateOrderlineTypeCount(form, form["jsNumSelected__" + code].value, amount);
	form["jsNumSelected__" + code].value = amount;
}

function calculateOrderPrice(form)
{
	sum = 0;
	
	// Update prices for normal orderlines
	for (i = 1; i <= form.jsOrderlineCount.value; i++)
	{
		code   = form[ "jsOrderlineCode__"  + i ].value;
		price  = form[ "jsOrderlinePrice__" + code ].value;
		amount = form[ "orderline" + i ].value;
		orderprice = (price * amount);
		
		form[ "totalPrice__" + code ].value = formatPrice( orderprice );
		sum += orderprice;
	}
	if (form.totalOrderPrice != null) {
		form.totalOrderPrice.value = formatPrice(sum);
	}
	// Check if promotion tickets are available
	if( form.jsOrderlinePromotionCount != null &&
		form.jsOrderlinePromotionCount.value != '')
	{
		// Update prices for promotion tickets
		for( i = 1; i <= form.jsOrderlinePromotionCount.value; i++ )
		{
			code = form[ "jsOrderlineCode__Premium" + i ].value;
			price = form[ "jsOrderlinePrice__Premium" + code ].value;
			amount = form[ "premiumTicket" + i ].value;
			orderprice = (price * amount);
			
			form[ "totalPrice__Premium" + code ].value = formatPrice( orderprice );
			sum += orderprice;
		}
		form.totalOrderPriceWithPromotion.value = formatPrice(sum);		
	}
	if( form.jsAdditionalOrderlineCount != null &&
			form.jsAdditionalOrderlineCount.value != '')
		{
			// Update prices for additional tickets
			for( i = 1; i <= form.jsAdditionalOrderlineCount.value; i++ )
			{
				code = form[ "jsOrderlineCode__additional" + i ].value;
				price = form[ "jsOrderlinePrice__additional" + code ].value;
				amount = form[ "additionalOrderline" + i ].value;
				orderprice = (price * amount);
				
				form[ "totalPrice__additional" + code ].value = formatPrice( orderprice );
				sum += orderprice;
			}
			form.totalOrderPriceWithAdditional.value = formatPrice(sum);		
		}
}

function calculateAllPrices(form)
{
	// Update the total order price.
	calculateOrderPrice(form);
}

function updateOrderlineTypeCount(form, oldValue, newValue)
{	
	if( oldValue == 0 && newValue > 0 )
	{
		form.jsOrderlineTypeCount.value++;
		
		if( form.jsOrderlineTypeCount.value == 2 )
		{
			setButtonVisibility(form, form.jsOrderlineTypeCount.value);
		}
	}
	else if( oldValue > 0 && newValue == 0 )
	{
		form.jsOrderlineTypeCount.value--;
		
		if( form.jsOrderlineTypeCount.value < 0 )
		{
			form.jsOrderlineTypeCount.value = 0;
		}
		if( form.jsOrderlineTypeCount.value == 1 )
		{
			setButtonVisibility(form, form.jsOrderlineTypeCount.value);
		}
	}
	setVisible(form, 'button.orderentry.select.6.ov-chipkaart-tickets', countSelectedFields(form) <= 1);
}

function setButtonVisibility(form, count)
{
	setVisible(form, 'button.orderentry.select.2.m-tickets', count <= 1);
	setVisible(form, 'button.orderentry.select.3.rfid-tickets', count <= 1); 
	setVisible(form, 'button.orderentry.select.4.rabo-mobiel-tickets', count <= 1);
}

function setVisible(form, elementName, visible)
{
	elements = document.getElementsByName(elementName);
	if( elements.length > 0 )
	{
		if( visible == true )
		{
			elements[0].style.display = 'inline';
		}
		else
		{
			elements[0].style.display = 'none';
		}
	}
}

function breakOutOfFrame()
{
	if (window != window.top)
	{
		top.location.href = location.href;
	}
}

function clearNumSelectedFields()
{
	inputFields = document.getElementsByTagName("input");
	for( var i = 0; i < inputFields.length; i++ ) {
		if( inputFields[i].name.match(/jsNumSelected/) != null) {
			inputFields[i].value = "0";
		}
		if( inputFields[i].name.match(/orderlines/) != null) {
			inputFields[i].value = "0";
		}
	}
	orderlineTypeCount = document.getElementsByName('jsOrderlineTypeCount');
	orderlineTypeCount.value = "0";
}

function countSelectedFields(form){
	numberOfSelectedFields = 0;
	for (i = 1; i <= form.jsOrderlineCount.value; i++)
	{			
		amount = form[ "orderline" + i ].value;	
		numberOfSelectedFields += parseInt(amount);
	}
	return numberOfSelectedFields;
}

function checkbirthday() {
	checkbirthday('nl');
}

function checkbirthday(language) 
{
	var	birthday= document.forms[0].birthday.value.toLowerCase();
	var re = /^(\d{1,2})[\s\.\/-](\d{1,2})[\s\.\/-](\d{4})$/;
	if (!re.test(birthday)) {
		if (language == 'fr') {
			alert('Le date de naissance n\'est pas valide.');
		} else {
			alert('U heeft de geboortedatum niet juist ingevuld.\nDe datum moet geldig zijn en in het volgende formaat: dd-mm-jjjj.');
		}
		return false;
	}
	var result = birthday.match(re);
	var d = parseInt(result[1],10);
	var m = parseInt(result[2],10);
	var y = parseInt(result[3],10);
	if(m < 1 || m > 12 || y < 1900 ) {
		if (language == 'fr') {
			alert('Le date de naissance n\'est pas valide.');
		} else {
			alert('U heeft de geboortedatum niet juist ingevuld.\nDe datum moet geldig zijn als geboortedatum en in het volgende formaat: dd-mm-jjjj.');
		}
		return false;
	}
	if(y > 2009) {
		if (language == 'fr') {
			alert('Le date de naissance n\'est pas valide.');
		} else {
			alert('U heeft de geboortedatum niet juist ingevuld.\nDe datum moet in het verleden liggen.');
		}
		return false;
	}
	if(m == 2){
		var days = ((y % 4) == 0) ? 29 : 28;
	}else if(m == 4 || m == 6 || m == 9 || m == 11){
		var days = 30;
	}else{
		var days = 31;
	}
	if (d >= 1 && d <= days){;
		return true;
	} else {
		if (language == 'fr') {
			alert('Le date de naissance n\'est pas valide.');
		} else {
			alert('U heeft de geboortedatum niet juist ingevuld.\nDe datum moet geldig zijn en in het volgende formaat: dd-mm-jjjj.');
		}
		return false;
	}
}
 
function checktelephone() {
	checktelephone('nl');
}

function checktelephone(language) {
	var	phonenumber= document.forms[0].phoneNumber.value.toLowerCase();
  	var rExp = /^[0-9]{9,10}$/;
		if (!rExp.exec(phonenumber)) {
			if (language == 'fr') {
				alert('Numéro de téléphone non valide.\n Ce doit être de 9 ou 10 chiffres (pas d\'autres caractères) existent.');
			} else {
				alert('U heeft het telefoonnummer niet juist ingevuld.\nDit moet uit 9 of 10 cijfers (zonder andere tekens) bestaan.');
			}
			return false;
		};
	return true;
}

function checkpostcode() {
	checkpostcode('nl');
}

function checkpostcode(language) 
{
	var postcode = document.forms[0].postCode.value.toUpperCase();
	var	rExp = /^[0-9]{4,5}[A-Z]{0,2}$/;
	if (!rExp.exec(postcode)) {
		if (language == 'fr') {
			alert('Le code postal n\'est pas correct.\nEntrez le format code postal 1234, 1234AB ou 12345.');
		} else {
			alert('U heeft het postcode veld niet juist ingevuld.\nVul de postcode in met notatie 1234, 1234AB of 12345.');
		}
	return false;
	};
	return true;
}

function checkcountry() {
	checkcountry('nl');
}

function checkcountry(language)
{
	var country = document.forms[0].country.value.toUpperCase();
	var	rExp = /^[0-9]{4,5}[A-Z]{0,2}$/;
	if(country.replace(/\s/g,"") == "") {
		if (language == 'fr') {
			alert('La pays manque.');
		} else {
			alert('U heeft geen land ingevuld.');
		}
	return false;
	};
	return true;
}


function checkRemarkFilledIn() {
	var	remark= document.forms[0].remarks.value;
	if (remark.length < 5 ) {
		alert('Vul de geboortedatum van het deelnemende kind in.');
	return false;
	};
	return true;
}

function checkRequiredFields() {
	checkRequiredFields('nl');
}

function checkRequiredFields(language) {
	var correct = true;
	var objects = $(".required");
	$.each(objects, function(){
		var value = $(this).val();
		if ($.trim(value) =='') {
			$(this).addClass('reqError');
			correct = false;
		} else {
			$(this).removeClass('reqError');
		}
	});
	var checkboxes = $(":checkbox.required");
	$.each(checkboxes, function(){
		if (!$(this).is(':checked')) {
			$(this).addClass('reqError');
			correct = false;
		} else {
			$(this).removeClass('reqError');
		}
	});
	if (!correct) {
		if (language == 'de') {
			$("#errorMessage").text('Nicht alle Pflichtfelder ausgefüllt.');
		} else if(language == 'fr') {
			$("#errorMessage").text('Pas tous les champs requis sont remplis.');
		} else if(language == 'en') {
			$("#errorMessage").text('Please fill in the required fields.');
		} else {
			$("#errorMessage").text('Niet alle verplichte velden zijn ingevuld.');
		}
	}
	return correct;
}


function checkPromotionField() {
	var notFilledIn = true;
	var value = $("#promoCode").val();
	if (value != null) {
		value = $.trim(value);
		if (value !='') {
			notFilledIn = false;
			var url = 'promotionCodeLogin?promotionCode=' + value;
			window.location.href = url;
		} 
	}
	return notFilledIn;
}

function checkFields() {
	checkFields('nl');
}

function checkFields(language) {
	var valid = true;
	valid = checkRequiredFields(language);
	if (valid) {
		valid = checkPromotionField();
	}
	return valid;
}

