//------------  äëüïöâêûîôèàùçé ---------------------
//-----------------------------------------------------------------------------
// Validation Functions												
//-----------------------------------------------------------------------------
  
function RequiredField(loForm, loField, lsFieldTitle)
{
	var sError, iInputCount, iInputIndex, bRadioCheckboxSelected;
	sError = "";
	loField = GetField(loForm, loField);
	if (loField && (!loField.type || loField.type.toLowerCase() != 'hidden') && !FieldValue(loForm, loField))
	{
		sError = (lsFieldTitle || loField.name || loField.id || loField) 
			+ " est un champ obligatoire.\n";
		if (!gbFieldFocus)
		{
			//loField.focus();
			gbFieldFocus = true;
		}
	}
	return(sError);
}
//-----------------------------------------------------------------------------


function ValidField(loForm, lsCheckType, loField, lsFieldTitle, lbNotRequired)
{
	var sError, sFieldValue, bFieldValid, iSalaryPeriodID;
	sError = '';
	try
	{   
		lsCheckType = (lsCheckType || loField);
		loField = GetField(loForm, loField);
		if (loField)
		{
			sFieldValue = FieldValue(loForm, loField);
			if (sFieldValue && sFieldValue.length > 0)
			{
				bFieldValid = true;
				switch (lsCheckType.toLowerCase())
				{
					case "email":
						bFieldValid = validEmail(sFieldValue);
						lsFieldTitle = "Email";
						break;
					case "postcode":
						bFieldValid = validPostcode(sFieldValue);/* ju_french_modif         need to use validPostcode_fr */
						lsFieldTitle = "Code postal";
						break;
					case "streetnumber":
						bFieldValid = validHouseNum(sFieldValue);
						lsFieldTitle = "No de maison/appt";
						break;
					case "name":
						bFieldValid = validName(sFieldValue);
						if(loField.name=='namefirst' || loField.name=='Namefirst'|| loField.name=='NameFirst')
							lsFieldTitle = "Prénom";
						else
							lsFieldTitle = "Nom";
						break;
					case "number":
						bFieldValid = validNumber(sFieldValue);
						lsFieldTitle = "Numéro";
						break;
					case "currency":
						bFieldValid = validCurrency(sFieldValue);
						lsFieldTitle = "Valeur courante";
						break;
					case "mobilenumber":
						bFieldValid = validMobile(sFieldValue, !lbNotRequired);
						lsFieldTitle = "Numero de téléphone portable";
						break;
					case "salary":
						iSalaryPeriodID = FieldValue(loForm, 'SalaryPeriodID');
						sError = validSalary(sFieldValue, iSalaryPeriodID);
						lsFieldTitle = "Salaire";
						break;
				   case "address1":
				        bFieldValid = validAddress(sFieldValue);
				        lsFieldTitle  = "Adresse"
				        break;
				   case "town":
				        bFieldValid = validName(sFieldValue);
				        lsFieldTitle  = "Ville"
				        break;
				}
				if (!bFieldValid)
				{
					sError = (lsFieldTitle || loField.name || loField)
						+ " - invalide\n";
					if(lsFieldTitle == "Code postal")
					{
					    sError = sError + "Ce jeu concours est ouvert aux personnes habitant la France Métropolitaine (Dom-Tom et Corse inclus)\n ";
					}
					if (!gbFieldFocus)
					{
						//loField.focus();
						gbFieldFocus = true;
					}
				}
			}
			else if (!lbNotRequired)
			{
				sError = RequiredField(loForm, loField, lsFieldTitle);
				if (!gbFieldFocus)
				{
					//loField.focus();
					gbFieldFocus = true;
				}
			}
		}
	}
	catch(e)
	{
		alert('error in ValidField: ' + e.description)
	}
	
	return(sError);
} // ValidField_fr

//-----------------------------------------------------------------------------

		
		
//-----------------------------------------------------------------------------

function validPostcode(sPostcode)
{
	var bValid, sPostcodePattern, oPostcodeRe, sLetter, sAlphaNumeric, sDigit;
	bValid = false;
	if (sPostcode && sPostcode.length >= 5 && sPostcode.length <= 9)
	{
		sDigit = "[0-9]";
		if(!(document.getElementById("registrationstageid") != null && document.getElementById("registrationstageid").value == 3))
		{
		    sProhibitPattern = '^\\s*' + '[0]{2,2}' + sDigit + '{3,3}\\s*$';
		}
		else
		{
		    sProhibitPattern = '^\\s*' + '[9]{5,5}' + '\\s*$';
		}
		oProhibitPostCodeRe = new RegExp(sProhibitPattern);
		sPostcodePattern = '^\\s*' + sDigit + '{5,5}\\s*$';
		oPostcodeRe = new RegExp(sPostcodePattern);
		if ((sPostcode.match(oPostcodeRe)) && (!sPostcode.match(oProhibitPostCodeRe)))
		{
			bValid = true;
		}
	}
	return bValid;
} /* validPostcode */
//-----------------------------------------------------------------------------

function validPassword(loForm, loPasswordField, loConfirmPasswordField)
{
	var bValid, sError, sPassword, sConfirmPassword;
	sError = "";
	bValid = true;
	loForm = GetForm(loForm);
	loPasswordField = GetField(loForm, loPasswordField);
	loConfirmPasswordField = GetField(loForm, loConfirmPasswordField);
	if (loPasswordField)
	{
		sPassword = FieldValue(loForm, loPasswordField);
		sConfirmPassword = FieldValue(loForm, loConfirmPasswordField);
		if (sPassword.length < 4 && loForm.name != 'frmETUserDetails' && loForm.name != 'frmETLogin')
		{
			sError = "Mot de passe - doit être composé de 4 caractères minimum\n";
		}
		else if(sPassword.length > 14)
		{
			sError = "Mot de passe - doit être composé de 14 caractères maximum\n";
		}
		else if (loConfirmPasswordField)
		{
			if (sPassword != sConfirmPassword)
			{
				sError = "Les mots de passe ne correspondent pas\n";
			}
		}
	}
	return sError;
}
// the following function is set up to determine if a date is valid. 
// the optional field, iMageAge, is currently used on myoffers to make sure a user 
// is over 18 (ie. if iMaxAge = 18 is input)
function validDate(loForm, sPrefix, iMaxAge)
{
	var sError;
	var iDay, iMonth, iYear, dDate, dCurrentDate, dNow, iYearDiff, aMonthDays;
	var oDay, oMonth, oYear;
	sError = '';
	loForm = GetForm(loForm);
	oDay = GetField(loForm, sPrefix + 'Day');
	if (oDay)
	{
		oMonth = GetField(loForm, sPrefix + 'Month');
		oYear = GetField(loForm, sPrefix + 'Year');
		if (oMonth && oYear)
		{
			iDay = FieldValue(loForm, oDay);
			iMonth = FieldValue(loForm, oMonth);
			iYear = FieldValue(loForm, oYear);
			if (iDay && iMonth && iYear)
			{
				iMonth --;
				aMonthDays = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
				if (iDay > aMonthDays[iMonth])
				{
					sError = 'Valid ' + sPrefix + ' Date\n';
				}
				else if (iMaxAge)
				{
					dDate = new Date(iYear, iMonth, iDay);
					dCurrentDate = new Date();
					iYearDiff = (dCurrentDate - dDate) / 31536000000;
					if (iYearDiff < iMaxAge)
					{
						sError = 'Vous devez avoir plus de ' + iMaxAge + ' ans pour souscrire\n';
					}
				}
			}
			else
			{
				if (sPrefix == 'Birth')
						sPrefix = 'de naissance';
				sError = 'Date ' + sPrefix + ' incomplète\n';
			} //iDay && iMonth && iYear
		} // oDay && oMonth && oYear
	}
	return(sError);
}
//--------------------------------------------------
function validName(sName, iLength)
{
	var bName, sValidChar, sNamePattern, oNameRe;
	bName = false;
	if ((iLength && sName && sName.length > iLength)
		|| (!iLength && sName && sName.length > 0))
	{
		sNamePattern = "^\\s*[äëüïöâêûîôèàùçéA-Za-z]+([äëüïöâêûîôèàùçéA-Za-z]|[\\-\\s\\'])*\\s*$"
		oNameRe = new RegExp(sNamePattern)
		if (sName.match(oNameRe))
		{
			bName = true;
		}
	}
	return bName;
}
//-----------------------------------------------Added code by sg
function validAddress(sAddress, iLength)
{
	var bAddress, sValidChar, sAddressPattern, oAddressRe;
	bAddress = false;
	if ((iLength && sAddress && sAddress.length > iLength)
		|| (!iLength && sAddress && sAddress.length > 0))
	{
		sAddressPattern = "^\\s*[äëüïöâêûîôèàùçéA-Za-z0-9,]+([äëüïöâêûîôèàùçéA-Za-z0-9,]|[\\-\\s\\'])*\\s*$"
		oAddressRe = new RegExp(sAddressPattern)
		if (sAddress.match(oAddressRe))
		{
			bAddress = true;
		}
	}
	return bAddress;
}

//------------------------------------------------

function validMobile(lsMobileNumber, lsRequired)
{
	var bValid;
	bValid = true;
	sError = '';
	if (lsMobileNumber && lsMobileNumber.length > 0)
	{
		// remove white spaces
		lsMobileNumber = lsMobileNumber.replace(/\s*/g, '');

		if (!lsMobileNumber.match(/^(\s*|06\d{8})$/))
		{
			bValid = false;
			sError += 'Valid mobile number (10 digits long starting with 06)\n';
		}
	}
	else if (lsRequired)
	{
		bValid = false;
		sError = "required\n";
	}
	return(bValid);
}
//---------------------------------------------------
