// --------------------------------------------------------
// VALIDATION DES PAGES
// --------------------------------------------------------

var listObligatoireToValidate = new Array();		
var StartDateToValidate;
var ExpiryDateToValidate;
var IllimiteCheckBox;
var numberOfObligatoire = 0;			
		
// --------------------------------------------------------
// Validation par expression reguliere du format JJ/MM/AAAA
// --------------------------------------------------------
function isDateOk(str) 
{ 
	var RExp = /\d{2}\/\d{2}\/\d{4}/; 
	return ( RExp.test(str) ); 
} 

// ----------------------------------------------------
// Retourne un tableau contenant J M et A d'une date
// ----------------------------------------------------
function SplitDate( date )
{
	var reg=new RegExp("/", "g");							
	var dateSeparee = date.split(reg);					
	return dateSeparee;
}

// --------------------------------------------------------------------
// On valide le fait que la date de la page est > à la date du channel
// --------------------------------------------------------------------
function VerifyDateAgainstAnother( jour, mois, annee, jourChannel, moisChannel, anneeChannel )
{
	var okComparisonChannel = false;
			
	if ( annee > anneeChannel )
	{
		okComparisonChannel = true;
	}
	if ( annee == anneeChannel )
	{
		if ( mois > moisChannel )
		{		
			okComparisonChannel = true;			
		}
		if ( mois == moisChannel )
		{
			if ( jour >= jourChannel )
			{
				okComparisonChannel = true;
			}
		}
	}
	return okComparisonChannel;
}

// ----------------------------------------------------
// Validation du placeholder STARTDATE
// ----------------------------------------------------
function ValidateStartDatePlaceholder( PHvalue, dateChannelSource )
{
	var validation = true;
	var date = PHvalue;
	
	// Test sur champ vide
	if ( date == "" )
	{
		alert('La date de publication est obligatoire !');
		validation = false;		
		return validation;			
	}
	
	// Test sur format
	if ( ! isDateOk( date ) )
	{
		alert('La date de publication doit etre de la forme : JJ/MM/AAAA');
		validation = false;
		return validation;					
	}
	
	// Recuperation des champs J, M et A
	var separe = SplitDate( date );					
	var jour = separe[0];
	var mois = separe[1];
	var annee = separe[2];

	// Test sur validite de la date
	if ( ! ( (jour > 0) && (jour < 32) && (mois > 0) && (mois < 13) && (annee>2000) && (annee<3001) ) )
	{
		alert('La date de publication est invalide');
		validation = false;
		return validation;					
	}

	// Recuperation de la date du channel			
	var dateChannel = dateChannelSource.substring(0,10);
	var separeChannel = SplitDate( dateChannel );
	var jourChannel = separeChannel[0];
	var moisChannel = separeChannel[1];
	var anneeChannel = separeChannel[2];
	
	//On compare pour savoir si la date de publication est plus ancienne que celle du channel
	var okComparisonChannel = VerifyDateAgainstAnother( jour, mois, annee, jourChannel, moisChannel, anneeChannel );

	if ( ! okComparisonChannel )
	{
		alert('La date de publication de la page doit etre superieure a la date de publication de la rubrique (' + dateChannel + ')');
		validation = false;
		return validation;					
	}
	return validation;
}

// ----------------------------------------------------
// Validation du placeholder EXPIRYDATE
// ----------------------------------------------------
function ValidateExpiryDatePlaceholder( PHvalue, startDatePH )
{
	var validation = true;
	var date = PHvalue;
			
	// Si la case illimité est cochée on a aucun test à faire
	if (  document.getElementById(IllimiteCheckBox) != undefined )
	{
		var checkbox = document.getElementById(IllimiteCheckBox);
		if ( checkbox.checked )
		{
			return true;
		} 
	}
	
	// Test sur champ vide
	if ( date == "" )
	{
		alert('La date de fin de publication est obligatoire !');
		validation = false;		
		return validation;			
	}
	
	// Test sur format
	if ( ! isDateOk( date ) )
	{
		alert('La date de fin de publication doit etre de la forme : JJ/MM/AAAA');
		validation = false;
		return validation;					
	}
	
	// Recuperation des champs J, M et A
	var separe = SplitDate( date );					
	var jour = separe[0];
	var mois = separe[1];
	var annee = separe[2];

	// Test sur validite de la date
	if ( ! ( (jour > 0) && (jour < 32) && (mois > 0) && (mois < 13) && (annee>2000) && (annee<3001) ) )
	{
		alert('La date de fin de publication est invalide');
		validation = false;
		return validation;					
	}
	
	// Recuperation de la date de debut de publication
	if ( startDatePH != '' ) 
	{
		var separeStart = SplitDate( startDatePH );
		var jourStart = separeStart[0];
		var moisStart = separeStart[1];
		var anneeStart = separeStart[2];
	
		//On compare pour savoir si la date de fin de publication est > à début de publi
		var okComparisonChannel = VerifyDateAgainstAnother( jour, mois, annee, jourStart, moisStart, anneeStart );

		if ( ! okComparisonChannel )
		{
			alert('La date de fin de publication de la page doit etre superieure a la date de debut de publication');
			validation = false;
			return validation;					
		}						
	}
	
	return validation;
}		



		
// --------------------------------------------------------
// FONCTION validant les placeholders contenus dans la page
//  ** accede depuis les actions console de sauvegarde **
// --------------------------------------------------------			
function Validate_Placeholders( dateChannelSource )
{		
	var validation = true;

	if ( StartDateToValidate != null )
	{	
		if ( document.getElementById(StartDateToValidate) != undefined )
		{
			validation = ValidateStartDatePlaceholder( document.getElementById(StartDateToValidate).value, dateChannelSource );		
			if ( ! validation )
			{
				document.getElementById(StartDateToValidate).focus();
				return validation;					
			}
		}
	}
	
	if ( ExpiryDateToValidate != null )
	{	// regles de validation de date de publication
		if ( document.getElementById(ExpiryDateToValidate) != undefined )
		{
			if ( validation )
			{	// Dans ce cas on transmet l'info que la date de publi est correcte pour la comparaison
				validation = ValidateExpiryDatePlaceholder( document.getElementById(ExpiryDateToValidate).value, document.getElementById(StartDateToValidate).value  );
			}
			else
			{
				validation = ValidateExpiryDatePlaceholder( document.getElementById(ExpiryDateToValidate).value, '' );
			}
			
			if ( ! validation )
			{
				document.getElementById(ExpiryDateToValidate).focus();
				return validation;					
			}						
		}
	}
	
	if ( listObligatoireToValidate != null )
	{ // On check sur le controle de l'ID n'est pas nul
		
		for( i = 0; i < numberOfObligatoire; i++ )
		{								
			var val = document.getElementById(listObligatoireToValidate[i][0]);
			
			if ( val != undefined )
			{
				if ( listObligatoireToValidate[i][1] == 'Obligatoire' )
				{
					if ( val.value == "" )
					{
						alert('Le champ ' + listObligatoireToValidate[i][2] + ' est obligatoire !');
						validation = false;
						val.focus();
						return validation;
					}
				}
			}
		}
	}		
	return validation;
}

// --------------------------------------------------------
// FONCTION ajoutant un nouveau controle obligatoire
//  ** accede depuis un placeholder à valider **
// --------------------------------------------------------			
function AddPlaceholderToValidate( id, type, nom )
{					
	listObligatoireToValidate[numberOfObligatoire] = new Array();
	listObligatoireToValidate[numberOfObligatoire][0] = id;
	listObligatoireToValidate[numberOfObligatoire][1] = type;
	listObligatoireToValidate[numberOfObligatoire][2] = nom;
	
	numberOfObligatoire = numberOfObligatoire + 1;
}

