String.prototype.trim = function() 
{   
	return( this.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') );  
} 

function Under18Years()
{
	var dob =new Date(document.getElementById("dobYear").value,document.getElementById("dobMonth").value,document.getElementById("dobDay").value);
	var today=new Date();
	dob=dob.setFullYear(dob.getFullYear()+18);
	return today<dob;
}
function IsValidPostalCode(code)
{
	return /^([a-z]\d[a-z])[\s-]*(\d[a-z]\d)$/i.test(code);
}
function IsValidPhoneNumber(segment1,segment2,segment3)
{
	return /\d{10}/.test(segment1+segment2+segment3);
	
}
function IsValidEmail(email)
{
	return /^\w+([\.\-_]?\w+)*@\w+([\.\-_]?\w+)*(\.\w{2,5})+$/.test(email);
}			
function IsValidDob(year,month,day)
{
	if(year=="" || month=="" || day=="")
	{
		return false;
	}
	
	var dob=new Date(year,month-1,day);
	if(dob.getFullYear()!=year)
	{
		return false;
	}
	if(dob.getMonth()!=month-1)
	{
		return false;
	}
	if(dob.getDate()!=day)
	{
		return false;
	}
	return true;
	
}
function IsChecked(pCheckBoxName){
	var vCBs = document.getElementsByName(pCheckBoxName);
	for (var vCount=0;vCount<vCBs.length;vCount++){
		if (vCBs[vCount].checked){
			return true;
		}
	}
	return false;
}
function CheckProductUsage()
{
	if (IsChecked("use_lipstick")){
		return true;
	}
	if (IsChecked("use_lipgloss")){
		return true;
	}
	if (IsChecked("use_lipliner")){
		return true;
	}
	if (IsChecked("use_mascara")){
		return true;
	}
	if (IsChecked("use_eyeshadow")){
		return true;
	}
	if (IsChecked("use_eyeliner")){
		return true;
	}
	if (IsChecked("use_liquidfoundation")){
		return true;
	}
	if (IsChecked("use_powder")){
		return true;
	}
	if (IsChecked("use_concealer")){
		return true;
	}
	if (IsChecked("use_blush")){
		return true;
	}
	if (IsChecked("use_nailpolish")){
		return true;
	}
	return false;
}

function CheckRevlonUsage()
{
	if (IsChecked("product_lipstick_super_lustrous")){
		return true;
	}
	if (IsChecked("product_lipstick_colorstay")){
		return true;
	}
	if (IsChecked("product_lipstick_other")){
		return true;
	}
	if (IsChecked("product_mascara_fabulash")){
		return true;
	}
	if (IsChecked("product_mascara_luxurious_lengths")){
		return true;
	}
	if (IsChecked("product_mascara_other")){
		return true;
	}
	if (IsChecked("product_foundation_colorstay")){
		return true;
	}
	if (IsChecked("product_foundation_age_defying")){
		return true;
	}
	if (IsChecked("product_foundation_new_complexion")){
		return true;
	}
	if (IsChecked("product_foundation_other")){
		return true;
	}
	if (IsChecked("product_polish_colorstay")){
		return true;
	}
	if (IsChecked("product_polish_other")){
		return true;
	}
	return false;
}

function FormatErrorString(text)
{
	return "* " + text + "<br>";
}
function IsValidEntry()
{
	try
	{	
		var errorMsgs="";
		var errorsSection=document.getElementById("errorMsg");
		if(document.getElementById("first_name").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Please enter First Name");		
		}
		if(document.getElementById("last_name").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Please enter Last Name");
		}
		if(document.getElementById("address").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Please enter Address");
		}
		if(document.getElementById("city").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Please enter City");
		}
		if(document.getElementById("province").value.length==0)
		{
				errorMsgs+=FormatErrorString("Please select a Province");
		}
		if(!IsValidPostalCode(document.getElementById("postal_code").value))
		{
				errorMsgs+=FormatErrorString("Please enter Postal Code");
		}
		if(document.getElementById("age").value.length==0)
		{
				errorMsgs+=FormatErrorString("Please select an Age");
		}
		if(!IsValidPhoneNumber(document.getElementById("home_phone1").value.trim(),document.getElementById("home_phone2").value.trim(),document.getElementById("home_phone3").value.trim()))
		{
				errorMsgs+=FormatErrorString("Please enter Telephone Number");
		}
		if(!IsValidEmail(document.getElementById("email").value.trim()))
		{
				errorMsgs+=FormatErrorString("Please enter Email Address");
		}
		if (!CheckProductUsage()){
				errorMsgs+=FormatErrorString("Product usage - Please enter a selection");
		}
		if (!IsChecked("daily_routine")){
				errorMsgs+=FormatErrorString("Makeup Routine - Please enter a selection");
		}
		if (!CheckRevlonUsage()){
				errorMsgs+=FormatErrorString("Revlon Product usage - Please enter a selection");
		}
		if (!IsChecked("opt_in")){
				errorMsgs+=FormatErrorString("Revlon Opt in - Please enter a Yes or No selection");
		}
		if(errorMsgs.length>0)
		{
			errorsSection.innerHTML="<div>&nbsp;</div><div align=\"left\">"+errorMsgs+"</div><div>&nbsp;</div>";
			return false;
		}
		else
		{
			return true;
		}
	}
	catch(e)
	{
		return true;
	}
}

function IsValidEntryFr()
{
	try
	{	
		var errorMsgs="";
		var errorsSection=document.getElementById("errorMsg");
		if(document.getElementById("first_name").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer le pr&eacute;nom");		
		}
		if(document.getElementById("last_name").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer le nom");
		}
		if(document.getElementById("address").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer l'adresse");
		}
		if(document.getElementById("city").value.trim().length==0)
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer la ville");
		}
		if(document.getElementById("province").value.length==0)
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re de s&eacute;lectionner la province");
		}
		if(!IsValidPostalCode(document.getElementById("postal_code").value))
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer le code postal");
		}
		if(document.getElementById("age").value.length==0)
		{
				errorMsgs+=FormatErrorString("S&eacute;lectionner l'&acirc;ge");
		}
		if(!IsValidPhoneNumber(document.getElementById("home_phone1").value.trim(),document.getElementById("home_phone2").value.trim(),document.getElementById("home_phone3").value.trim()))
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer le num&eacute;ro de t&eacute;l&eacute;phone");
		}
		if(!IsValidEmail(document.getElementById("email").value.trim()))
		{
				errorMsgs+=FormatErrorString("Pri&egrave;re d'entrer le courriel");
		}
		if (!CheckProductUsage()){
				errorMsgs+=FormatErrorString("Utilisation du produit - Veuillez faire un choix");
		}
		if (!IsChecked("daily_routine")){
				errorMsgs+=FormatErrorString("Rituel de maquillage - Veuillez faire un choix");
		}
		if (!CheckRevlonUsage()){
				errorMsgs+=FormatErrorString("Utilisation des produits Revlon - Veuillez faire un choix");
		}
		if (!IsChecked("opt_in")){
				errorMsgs+=FormatErrorString("Envois de Revlon - Veuillez cocher Oui ou Non");
		}
		if(errorMsgs.length>0)
		{
			errorsSection.innerHTML="<div>&nbsp;</div><div align=\"left\">"+errorMsgs+"</div><div>&nbsp;</div>";
			return false;
		}
		else
		{
			return true;
		}
	}
	catch(e)
	{
		return true;
	}
}
function ValidateEntry()
{	
	if (document.getElementById('lang').value == 'en'){
		if(!IsValidEntry())
		{	
			document.location.href="#errorSection";
			return false;
		}
	} else {
		if(!IsValidEntryFr())
		{	
			document.location.href="#errorSection";
			return false;
		}
	}
/*	if(Under18Years())
	{
		DisplayCenteredWindow("underage.html",568,528);
		return false;
	}	
*/			
	return true;
	
}
function ValidateTAF()
{
	var allEmpty=true;
	var errorMsgs="";
	var errorsSection=document.getElementById("errorMsg");
	for (var vCount=1;vCount<6;vCount++)
	{
		if (document.getElementById("name"+vCount).value.length!=0)
		{
			allEmpty = false;
			if (!IsValidEmail(document.getElementById("email"+vCount).value.trim()))
			{
				if (document.getElementById('Lang').value == 'en'){
					errorMsgs+=FormatErrorString("Please enter a valid Email Address for Email "+vCount);
				} else {
					errorMsgs+=FormatErrorString("Entrez le nom et l'adresse courriel de votre ami(e) "+vCount);
				}
			}
		}
		else 
		{
			if (document.getElementById("email"+vCount).value.length!=0) {
				allEmpty = false;
				errorMsgs+=FormatErrorString("Please fill in Name "+vCount);
				if (!IsValidEmail(document.getElementById("email"+vCount).value.trim()))
				{
					errorMsgs+=FormatErrorString("Please enter a valid Email Address for Email "+vCount);
				}
			}
		}
	}
	if (allEmpty)
	{
		errorMsgs+=FormatErrorString("Please enter a valid Email Address for Email "+vCount);
	}
	if(errorMsgs.length>0)
	{
		if (document.getElementById('Lang').value == 'en'){
			errorMsgs = "Please enter your friend's name and email address";
		} else {
			errorMsgs = "Entrez le nom et l'adresse courriel de votre ami(e)";
		}
		
		document.location.href="#errorSection";
		errorsSection.innerHTML="<div>&nbsp;</div><div align=\"left\">"+errorMsgs+"</div><div>&nbsp;</div>";
		return false;
	}
	else
	{
		return true;
	}
}
function DisplayCenteredWindow(url,width,height,params)
{
	if(typeof width=="undefined")
	{
		width=screen.width;
	}
	if(typeof height=="undefined")
	{
		height=screen.height;
	}
	if(typeof params=="undefined")
	{
		params="toolbar=no, menubar=no, scrollbars=no, status=no, resizable=no, location=no, directories=no";
	}
	
	var posX = ( screen.width - width ) / 2;
	var posY = ( screen.height - height ) / 2; 
	window.open(url,"_blank","HEIGHT="+height+", WIDTH="+width+",Left="+posX+ ",Top="+posY+", " +params);
	
}
function limitText(entity,limit)
{
	if(entity.value.length>limit)
	{
		entity.value=entity.value.substring(0,limit);
		return false;
	}
}
function EnsureCorrectPostalCode(ev,data,pattern)
{
	try
	{
		var expectsLetter=pattern.charAt(data.length)=="l";
		var cKey=ev.which==undefined?ev.keyCode:ev.which;
		
		if(cKey==8) 
		{
			//backspace
			return true;
		}
		var number= cKey>=48 && cKey<=57;
		var letter= cKey>=65 && cKey<=122;
		if(!number&& !letter)
		{
			return false;
		}
		return expectsLetter == letter;
	}
	catch(e)
	{
		return true;
	}
}
function EnsureNumeric(ev)
{
	try
	{
		var cKey=ev.which==undefined?ev.keyCode:ev.which;
		if(cKey==8) 
		{
			//backspace
			return true;
		}
		return cKey>=48 && cKey<=57;
	}
	catch(e)
	{
		return true;
	}
}
function ClearDefault(element,pattern)
{
	if(element.value==pattern)
	{
		element.value="";
	}
}
