function incrementFieldValue(obj)
{
	val = parseInt(obj.value);
	val++;
	obj.value = val.toString();
}

function decrementFieldValue(obj, minValue)
{
	if(obj.value>minValue)
	{
		val = parseInt(obj.value);
		val--;
		obj.value = val.toString();
	}
}

function removeProductFromOrder(productId)
{
	document.frmOrder.pID.value = productId;
	document.frmOrder.action.value = 'removeProductFromOrder';
	document.frmOrder.submit();
}

function refreshOrder()
{
	document.frmOrder.action.value='refreshOrder';
	document.frmOrder.submit();
}

function validatePreOrder()
{
	errorMessage = '';
	frm = document.frmPreOrder;
	
	billingLastname = trim(frm.txtBillingAddressLastname.value);
	billingFirstname = trim(frm.txtBillingAddressFirstname.value);
	billingAddressOne = trim(frm.txtBillingAddressOne.value);
	billingAddressTwo = trim(frm.txtBillingAddressTwo.value);
	billingZipCode = trim(frm.txtBillingAddressZipCode.value);
	billingCity = trim(frm.txtBillingAddressCity.value);
	billingEmail = trim(frm.txtEmail.value);
	billingPhone = trim(frm.txtBillingAddressPhoneNumber.value);
	
	deliveryLastname = trim(frm.txtDeliveryAddressLastname.value);
	deliveryFirstname = trim(frm.txtDeliveryAddressFirstname.value);
	deliveryAddressOne = trim(frm.txtDeliveryAddressOne.value);
	deliveryAddressTwo = trim(frm.txtDeliveryAddressTwo.value);
	deliveryZipCode = trim(frm.txtDeliveryAddressZipCode.value);
	deliveryCity = trim(frm.txtDeliveryAddressCity.value);
	deliveryPhone = trim(frm.txtDeliveryAddressPhoneNumber.value);
	
	isSameAddress = frm.grpIsSameAddress[0].checked;
	if(billingLastname == '' || billingFirstname == '' || billingAddressOne == '' || billingZipCode == '' || billingCity == '' || billingEmail == '')
	{
		errorMessage += 'Veuillez remplir tous les champs obligatoires de l\'adresse de facturation.\r\n';
	}
	if(!isSameAddress && (deliveryLastname == '' || deliveryFirstname == '' || deliveryAddressOne == '' || deliveryZipCode == '' || deliveryCity == ''))
	{
		errorMessage += 'Veuillez remplir tous les champs obligatoires de l\'adresse de livraison.\r\n';
	}
	if(isInvalid(billingLastname, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
	{
		errorMessage += 'Le format du nom dans l\'adresse de facturation est invalide.\r\n';
	}
	if(isInvalid(billingFirstname, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
	{
		errorMessage += 'Le format du prénom dans l\'adresse de facturation est invalide.\r\n';
	}
	if(isInvalid(billingAddressOne, '[^0-9A-Za-z\'ùàêëâéèïç\\s\.\-]'))
	{
		errorMessage += 'Le format de l\'adresse de facturation est invalide: certains caractères spéciaux sont interdits.\r\n';
	}
	if(billingAddressTwo.length > 0 && isInvalid(billingAddressTwo, '[^0-9A-Za-z\'ùàêëâéèïç\\s\.\-]'))
	{
		errorMessage += 'Le format de l\'adresse de facturation est invalide: certains caractères spéciaux sont interdits.\r\n';
	}
	if(billingZipCode.length > 0 && (isInvalid(billingZipCode, '[^0-9]') || billingZipCode.length < 5))
	{
		errorMessage += 'Le format du code postal dans l\'adresse de facturation est invalide.\r\n';
	}
	if(isInvalid(billingCity, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
	{
		errorMessage += 'Le format de la ville dans l\'adresse de facturation est invalide.\r\n';
	}
	if(billingPhone.length > 0 && (isInvalid(billingPhone, '[^0-9]') || billingPhone.length < 10))
	{
		errorMessage += 'Le format du numéro de téléphone dans l\'adresse de facturation est invalide.\r\n';
	}
	if(billingEmail != '' && !isMailAddressValid(billingEmail))
	{
		errorMessage += 'Veuillez saisir une adresse email valide.\r\n';
	}
	if(!isSameAddress)
	{
		if(isInvalid(deliveryLastname, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
		{
			errorMessage += 'Le format du nom dans l\'adresse de livraison est invalide.\r\n';
		}
		if(isInvalid(deliveryFirstname, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
		{
			errorMessage += 'Le format du prénom dans l\'adresse de livraison est invalide.\r\n';
		}
		if(isInvalid(deliveryAddressOne, '[^0-9A-Za-z\'ùàêëâéèïç\\s\.\-]'))
		{
			errorMessage += 'Le format de l\'adresse de livraison est invalide: certains caractères spéciaux sont interdits.\r\n';
		}
		if(deliveryAddressTwo.length > 0 && isInvalid(deliveryAddressTwo, '[^0-9A-Za-z\'ùàêëâéèïç\\s\.\-]'))
		{
			errorMessage += 'Le format de l\'adresse de livraison est invalide: certains caractères spéciaux sont interdits.\r\n';
		}
		if(deliveryZipCode.length > 0 && (isInvalid(deliveryZipCode, '[^0-9]') || deliveryZipCode.length < 5))
		{
			errorMessage += 'Le format du code postal dans l\'adresse de livraison est invalide.\r\n';
		}
		if(isInvalid(deliveryCity, '[^A-Za-z\'ùàêëâéèïç\\s\.\-]'))
		{
			errorMessage += 'Le format de la ville dans l\'adresse de facturation est invalide.\r\n';
		}
		if(deliveryPhone.length > 0 && (isInvalid(deliveryPhone, '[^0-9]') || deliveryPhone.length < 10))
		{
			errorMessage += 'Le format du numéro de téléphone dans l\'adresse de livraison est invalide.\r\n';
		}
	}
	if(errorMessage != '')
	{
		alert(errorMessage);
	}
	else
	{
		frm.action.value='saveOrderAddresses';
		frm.submit();
	}
}

function showHideDeliveryAddress(val, d)
{
	if(val == 'Y')
	{
		document.getElementById(d).style.display = 'none';
		document.all.d.style.display = 'none';
	}
	else if(val == 'N')
	{
		document.getElementById(d).style.display = 'block';
		document.all.d.style.display = 'block';
	}
}

function trim (myString) 
{ 
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'') 
} 

function isInvalid(str, model)
{
	exp = new RegExp(model);
	return exp.test(str);
}

function isNotAlphaNumeric(str)
{
	exp = new RegExp("[^0-9A-Za-zéèï]");
	return exp.test(str);
}

function isMailAddressValid(emailStr)
{
	var checkTLD = 1;
	var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|fr)$/;
	var emailPat = /^(.+)@(.+)$/;
	var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars = "\[^\\s" + specialChars + "\]";
	var quotedUser = "(\"[^\"]*\")";
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom = validChars + '+';
	var word = "(" + atom + "|" + quotedUser + ")";
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray = emailStr.match(emailPat);
	if (matchArray == null) { return false; }
	var user = matchArray[1];
	var domain = matchArray[2];
	for (i=0; i<user.length; i++)
	{
		if (user.charCodeAt(i) > 127) { return false; }
	}
	for (i=0; i<domain.length; i++)
	{
		if (domain.charCodeAt(i) > 127) { return false; }
	}
	if (user.match(userPat) == null)
	{
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray != null)
	{
		for (var i=1; i<=4; i++)
		{
			if (IPArray[i] > 255)
			{
				return false;
			}
		}
		return true;
	}
	var atomPat = new RegExp("^" + atom + "$");
	var domArr = domain.split(".");
	var len = domArr.length;
	for (i=0; i<len; i++)
	{
		if (domArr[i].search(atomPat) == -1)
		{
			return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1)
	{
		return false;
	}
	if (len < 2)
	{
		return false;
	}
	return true;
}
