/*****************************************************************************
'*                                                                           *
'* Fichier     : scripts/libType.js                                          *
'* Application : Portail                                                     *
'* Société     : DoubleTrade                                                 *
'* Copyright   : (c) 2007 DoubleTrade                                        *
'* Auteur      : Eric Bonnot                                                 *
'* Créé le     : 19 aout 2003                                                *
'* Date Modif  : Raison Modif                                                *
'*                                                                           *
'* Description :                                                             *
'* Ce fichier javascript rajout des méthodes pour vérifier les types.        *
'*                                                                           *
'****************************************************************************/

var sEntrerDateValide = "";
var sEntrerHeureValide = "";
var sEntrerMailValide = "";

switch (gsCurrentLanguage) {
	case gsLanguageFR: 
		sEntrerDateValide = "Veuillez entrer une date valide au format jj/mm/aaaa ou laissez le champ vide.";
		sEntrerHeureValide = "Veuillez entrer une heure valide au format hh:mm ou laissez le champ vide.";
		sEntrerMailValide = "Veuillez saisir une adresse de messagerie électronique valide.";
		break;
	case gsLanguageEN:
		sEntrerDateValide = "Please enter a valid date in the dd/mm/yyyy format or leave the field blank.";
		sEntrerHeureValide = "Please enter a valid hour in the hh:mm format or leave the field blank.";
		sEntrerMailValide = "Please enter a valid email.";
		break;
}

function _isDate(psDate) {
	var iDay, iMonth, iYear;
	
	if (psDate == "")
		return false;

	var tsDate = psDate.split("/");
	
	if (tsDate.length == 3) {
		iDay = parseInt(tsDate[0], 10);
		iMonth = parseInt(tsDate[1], 10);
		iYear = parseInt(tsDate[2], 10);
		
		if (isNaN(iDay) || isNaN(iMonth) || isNaN(iYear))
			return false;
		else
			if (iYear < 1800 || iYear > 2200)
				return false;
	}
	else
		return false;
		
	iDay = eval(iDay);
	iMonth = eval(iMonth - 1);
	iYear = eval(iYear);
	var dDate = new Date(iYear, iMonth, iDay, 0, 0);
	
	return ((dDate.getDate() == iDay) && (dDate.getMonth() == iMonth) && (dDate.getFullYear() == iYear));
}

function _isHour(psHour) {
	var iHour, iMinute, sSeparator;
		
	iHour = parseInt(psHour.substr(0,2), 10);
	iMinute = parseInt(psHour.substr(3,2), 10);
	sSeparator = psHour.substr(2,1);
	
	if ( isNaN(iHour) || isNaN(iMinute) ) {
		return false;
	}
	else {
		if ( (sSeparator == ":") && (psHour.length == 5) && (iHour >= 0) && (iHour <= 23) && (iMinute >= 0) && (iMinute <= 59) ){
			return true;
		}
		else {
			return false;
		}
	}
}
	
function _isEmail(psEmail, pbAcceptEmpty, pbAcceptMultiple) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var iIdx = 0;

	if (psEmail.length == 0) {
		return pbAcceptEmpty;
	}
	else {
	    if (pbAcceptMultiple) {
	        var tsEmails = psEmail.split(";");
	        for (iIdx = 0; iIdx < tsEmails.length; iIdx++) {
	            if (tsEmails[iIdx].length == 0) {
	                if (!pbAcceptEmpty)
	                    return false;
	            }
	            else {
	                if (!filter.test(tsEmails[iIdx]))
	                    return false;
	            }
	        }
	        return true;
	    } else {
    	    if (!filter.test(psEmail)) {
	            return false;
	        } else {
	            return true;
	        }
	    }
	}
}
	
function _verifyDate(pElement, pValDefault) {
	if (pElement != null) {
		if (!(_isDate(pElement.value) || (pElement.value.length == 0) )) {
			alert(sEntrerDateValide);
			pElement.value = pValDefault;
			pElement.focus();
		}
	}
}
	
function _verifyHour(pElement, pValDefault) {
	if (pElement != null) {
		if (!(_isHour(pElement.value) || (pElement.value.length == 0) )) {
			alert(sEntrerHeureValide);
			pElement.value = pValDefault;
			pElement.focus();
		}
	}
}

function _verifyEmail(peEmail, psValDefault, pbAcceptEmpty, pbAcceptMultiple) {
	if(peEmail != null) {
	    if (_isEmail(peEmail.value, pbAcceptEmpty, pbAcceptMultiple)) {
			return true;
		}
		else {
			alert(sEntrerMailValide);
			peEmail.value = psValDefault;
			peEmail.focus();
			return false;
		}
	}
	else
		return true;
}

// Retourne une date au format mm/jj/aaaa a partir d'une date au format jj/mm/aaaa
function _convertDateToUS(psDate) {	
	var sDay, sMonth, sYear, sSeparator;

	if (_isDate(psDate)) {
		sDay = psDate.substr(0,2);
		sMonth = psDate.substr(3,2);
		sYear = psDate.substr(6,4);
		if (sYear.length == 2) sYear = "20" + sYear ;
		sSeparator = psDate.substr(2,1);
		return (sMonth + sSeparator + sDay + sSeparator + sYear);
	}
	return "";
}

function _getDate(psDate, psHour) {
	var sDay, sMonth, sYear, sHour, sMinute, sSeparator;
	var dDate;

	if (_isDate(psDate)) {
		sDay = psDate.substr(0,2);
		sMonth = psDate.substr(3,2);
		sMonth = sMonth - 1; // Les mois sont compris entre 0 et 11 dans le constructeur de date
		sYear = psDate.substr(6,4);
		if (sYear.length == 2) sYear = "20" + sYear;
		sSeparator = psDate.substr(2,1);
		if (_isHour(psHour)) {
			sHour = psHour.substr(0,2);
			sMinute = psHour.substr(3,2);
		}
		else {
			sHour = "00";
			sMinute = "00";
		}
		dDate = new Date(sYear, sMonth, sDay, sHour, sMinute);
	}
	else
		dDate = new Date();
	
	return (dDate);
}

function _AjouterJourDate(poDate, piJour)
{
	return new Date(poDate.getTime() + (1000 * 60 * 60 * 24 * piJour));
}

// Entier positif non nul
function _isUInt(psValue) {
	if (psValue == null) {
		return false;
	}
	else {
		var iValue = parseInt(psValue, 10);
		if (psValue.toString().length == 0 || isNaN(iValue) ) {
			return false;
		}
		else {
			return (iValue > 0);
		}
	}
}

function _toUInt(psValue) {
	if (psValue == null) {
		return 0;
	}
	else {
		return parseInt(psValue, 10);
	}
}

