//------------------------------------------------
function IsEAN(lVal, strZone)
{
	var iRang = 0;
	var iClefCal = 0;
	var str = lVal.toString();

	if (str.length != 13)
	{
		strMsg += strZone + " : Le code EAN doit être sur 13 caractères\r\n";
		return false;
	}

	if (!IsNumber(lVal, strZone))
		return false;

	for(var i = 1; i < 12; i+=2)
		iRang += parseInt(str.charAt(i), 10);
	
	iRang *= 3;

	for(var i = 0; i < 11; i+=2)
		iRang += parseInt(str.charAt(i), 10);

	iRang %= 10;

	if(iRang)
		iClefCal = 10 - iRang;

	if (parseInt(str.charAt(12), 10) != iClefCal)
   {
		strMsg += strZone + " : Le checksum devrait être égale à " + iClefCal + "\r\n";
		return false;
	}
	return true;
}
//------------------------------------------------
function IsMin(strVal, strZone, iSize)
{
  if(strVal.length < iSize)
  {
    strMsg += strZone + " : La zone doit contenir au moins " + iSize + " caractères\r\n";
    return true;
  }
  return false;
}
//------------------------------------------------
function IsFloat(fVal, strZone)
{
	if(fVal == null || fVal.length == 0)
		return false;

	var str = fVal.toString();
	var Decimal = false;

	for(var i = 0; i < str.length; i++)
	{
		var c = str.charAt(i);
		if (c == "." && !Decimal)
		{
			Decimal = true;
			continue;	
		}
 		if(c < "0" || c > "9")
		{
			strMsg += strZone + " : La zone contient des caractères alphabétiques\r\n";
			return false;	
		}
	}
	return true;
}
//------------------------------------------------
function IsMax(strVal, strZone, iSize)
{
  if(strVal.length > iSize)
  {
    strMsg += strZone + " : La zone doit contenir au plus " + iSize + " caractères\r\n";
    return true;
  }
  return false;
}
//------------------------------------------------
function IsNull(strVal)
{
	if(strVal == null ||strVal.length == 0)
		return true;
	else
		return false;
}
//------------------------------------------------
function IsEmpty(strVal, strZone)
{
	if(strVal == null ||strVal.length == 0)
	{
		strMsg += strZone + " : La zone est obligatoire\r\n";
		return true;
	}
	return false;
}
//------------------------------------------------
function IsHour(strVal, strZone)
{
	if(strVal == null || strVal.length == 0)
		return false;

	var	Delim = strVal.indexOf(":");
	var	iValHH = 0;
	var	iValNN = 0;
	
	if (strVal.length != 5)
	{
		strMsg += strZone + " : La zone contient une heure erronnée (Format HH:MM)\r\n";
		return false;
	}

	if(Delim == -1)
	{
		strMsg += strZone + " : La zone contient une heure erronnée (Format HH:MM)\r\n";
		return false;
	}
	iValHH 	= parseInt(strVal.substring(0, 2), 10);
	iValNN 	= parseInt(strVal.substring(3, 5), 10);

	if(isNaN(iValHH) || isNaN(iValNN))
	{
		strMsg += strZone + " : La zone contient une heure erronnée (Format HH:MM)\r\n";
		return false;
	}
	if(iValHH < 0 || iValHH > 24)
	{
		strMsg += strZone + " : La zone contient une plage d'heure invalide\r\n";
		return false;
	}
	if(iValNN < 0 || iValNN > 59)
	{
		strMsg += strZone + " :  La zone contient une plage d'heure invalide\r\n";
		return false;
	}
	return true;
}
//------------------------------------------------
function IsDate(strVal, strZone)
{
	if(strVal == null || strVal.length == 0)
		return false;

	var	Delim = strVal.indexOf("/");
	var	Delim1= strVal.lastIndexOf("/");
	var	iValDD = 0;
	var	iValMM = 0;
	var	iValYYYY = 0;
	
	if (strVal.length != 10 && strVal.length != 8)
	{
		strMsg += strZone + " : La zone contient une date erronnée (Format JJ/MM/AAAA)\r\n";
		return false;
	}

	if(Delim != -1 && Delim1 == Delim)
	{
		strMsg += strZone + " : La zone contient des séparateurs invalide\r\n";
		return false;
	}
	iValDD 	= parseInt(strVal.substring(0, 2), 10);
	iValMM 	= parseInt(strVal.substring(3, 5), 10);
	iValYYYY 	= parseInt(strVal.substring(6, strVal.length), 10);

	if(isNaN(iValDD) || isNaN(iValMM) || isNaN(iValYYYY))
	{
		strMsg += strZone + " : La zone contient une date erronnée (Format JJ/MM/AAAA)\r\n";
		return false;
	}
	if(iValDD <= 0 || iValDD > 31)
	{
		strMsg += strZone + " : La zone contient une plage de date invalide\r\n";
		return false;
	}
	if(iValMM <= 0 || iValMM > 13)
	{
		strMsg += strZone + " : La zone contient une plage de date invalide\r\n";
		return false;
	}
	if(strVal.length == 10)
	{
		if(iValYYYY <= 1950 || iValYYYY > 9999)
		{
			strMsg += strZone + " : La zone contient une plage de date invalide\r\n";
			return false;
		}
	}
	else
	{
		if(iValYYYY > 99)
		{
			strMsg += strZone + " : La zone contient une plage de date invalide\r\n";
			return false;
		}
	}
	return true;
}
//------------------------------------------------
function IsNumber(lVal, strZone)
{
	if(lVal == null || lVal.length == 0)
		return false;
	var str = lVal.toString();

	for(var i = 0; i < str.length; i++)
	{
		var c = str.charAt(i);
		if(c < "0" || c > "9")
		{
			strMsg += strZone + " : La zone contient des caractères alphabétiques\r\n";
			return false;	
		}
	}
	return true;
}
//------------------------------------------------
function GetDay(strVal)
{
	return parseInt(strVal.substring(0, 2), 10);
}
//------------------------------------------------
function GetMonth(strVal)
{
	return 	parseInt(strVal.substring(3, 5), 10);
}
//------------------------------------------------
function GetYear(strVal)
{
	return parseInt(strVal.substring(6, strVal.length), 10);
}
//------------------------------------------------
function IsEmail(emailStr, strZone)
{
	var emailPat		= /^(.+)@(.+)$/;
	var specialChars	= "\\(\\)<>@,;:éèçàù\\\\\\\"\\.\\[\\]";
	var validChars		= "\[^\\s" + specialChars + "\]";
	var firstChars		= validChars;
	var quotedUser		= "(\"[^\"]*\")";
	var ipDomainPat		= /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom			= "(" + firstChars + 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)
	{
		strMsg += strZone + " : 1 - L'adresse email est incorrect\r\n";
		return true;	
	}
	var user = matchArray[1];
	var domain = matchArray[2];
	if (user.match(userPat) == null)
	{
		strMsg += strZone + " : 2 - L'adresse email est incorrect\r\n";
		return false;	
	}

	var IPArray=domain.match(ipDomainPat)
	if (IPArray != null)
	{
		for (var i = 1; i <= 4; i++)
		{
			if (IPArray[i] > 255)
			{
				strMsg += strZone + " : 3 - L'adresse email est incorrect\r\n";
				return false;	
			}
		}
		strMsg += strZone + " : 4 - L'adresse email est incorrect\r\n";
		return false;	
	}

	var domainArray = domain.match(domainPat);
	if (domainArray == null)
	{
		strMsg += strZone + " : 5 - L'adresse email est incorrect\r\n";
		return false;	
	}
	var atomPat = new RegExp(atom, "g");
	var domArr = domain.match(atomPat)
	var len = domArr.length 
	if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 4)
	{	
		strMsg += strZone + " : 6 - L'adresse email est incorrect\r\n";
		return false;	
	}
	return true;
}

