/*=============================================================================
script :        verif.js
auteur :        Rémi Buisson
contenu :       Script Javascript : fonctions général permettant de vérifier des champs de formulaire
											
date creation : 06/08/2008

modifications :
=============================================================================*/
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function trim(string){
// renvoie string en enlevant les espaces en début et fin de chaine
	return string.replace(/(^\s*)|(\s*$)/g,'');
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function isNumberInt(nb){
// renvoie vrai si <nb> est un entier (pas de virule), faux sinon
  return (!isNaN(parseInt(nb))) ? true : false;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function isNumberFloat(nb){
// renvoie vrai si <nb> est un reel (virule), faux sinon
  return (!isNaN(parseFloat(nb))) ? true : false;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function date_to_objet_date(date){
// on renvoie un objet date à partir d'une date au format fr (jj-mm-aaaa)
 
 	// on récupère les 3 éléments
	j=date.substring(0,2);
	m=date.substring(3,5);
	a=date.substring(6,10);
	
	//on renvoi le tout dans l'odre voulu :
	return new Date(a,(m-1),j);
	
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function objet_date_to_date(date){
// on renvoie une date au format fr (jj/mm/aaaa) à partir d'un objet date
 
 
 	// on récupère les 3 éléments
	var j = date.getDate();
	var m = date.getMonth()+1;
	var a = date.getFullYear();
	
	if(parseInt(j) <= 9) {var j = "0"+parseInt(j); }
	if(parseInt(m) <= 9) {var m = "0"+parseInt(m); }
	
	//alert(date+ " => " +j+'/'+m+'/'+a); // pour debug
	
	//on renvoi le tout dans l'odre voulu :
	return j+'/'+m+'/'+a;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function date_mysql_to_date(date_mysql){
// on renvoie une date au format fr (jj/mm/aaaa) à partir d'une date au format anglais (aaaa-mm-jj)
// prérequi : il faut controler que <date_mysql> soit au bon format
 
 	// on récupère les 3 éléments
	a=date_mysql.substring(0,4);
	m=date_mysql.substring(5,7);
	j=date_mysql.substring(8,10);
	
	//on renvoi le tout dans l'odre voulu :
	return j+'/'+m+'/'+a;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function date_to_date_mysql(date){
// on renvoie une date au format mysql (aaaa-mm-jj) à partir d'une date au format anglais (jj/mm/aaaa)
// prérequi : il faut controler que <date> soit au bon format
 
 	// on récupère les 3 éléments
	j=date.substring(0,2);
	m=date.substring(3,5);
	a=date.substring(6,10);
	
	//alert(j+'/'+m+'/'+a); // pour debug
	
	//on renvoi le tout dans l'odre voulu :
	return a+'-'+m+'-'+j;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function add_day_date_fr(date, nb_jour) {
// ajoute <nb_jour> à la date <date> et renveoi cette nouvelle date
//(ajoute si positif, soustrait si négatif)
// ajout aussi une heure pour pallier au problème du chagement d'heure d'octobre ( ex 28/10/2009 00:00:00 + 24H = 28/10/2009 23:00:00 car le 28 dure en fait 25H ...)

	var new_date = new Date(date.getTime() + (1000 * 60 * 60 * 24 * nb_jour) + 3600000);
	var j = new_date.getDate();
	var m = new_date.getMonth()+1;
	var a = new_date.getFullYear();
	
	if(parseInt(j) <= 9) {var j = "0"+parseInt(j); }
	if(parseInt(m) <= 9) {var m = "0"+parseInt(m); }
	
	//alert(nb_jour+" - "+(1000 * 60 * 60 * 24 * nb_jour)+" - "+date+" - "+date.getTime()+" - "+new_date+" - "+j+"/"+m+"/"+a);
	
	return j+"/"+m+"/"+a;
	
	
	/*
	
exemple : 
//var uneDate = new Date();
var uneDate = "2008-20-12";
alert(date_to_objet_date(date_mysql_to_date(uneDate)));
alert('Hier : ' + add_day_date_fr(uneDate, -1).toLocaleString());
alert('Aujourd\'hui : ' + uneDate.toLocaleString());
alert('Demain : ' + add_day_date_fr(uneDate, 1).toLocaleString());
	*/
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_date(d) {
	// renvoie vrai si la date <d> est de la forme "jj/mm/aaaa"
	
	var dateaverifier=d
	// rangement de la date dans des variables
	if (dateaverifier.substring(0,1)=="0"){
		var j=parseInt(dateaverifier.substring(1,2));
	}
	else {
		var j=parseInt(dateaverifier.substring(0,2));
	}
	if (dateaverifier.substring(3,4)=="0"){
		var m=parseInt(dateaverifier.substring(4,5));
	}
	else {
		var m=parseInt(dateaverifier.substring(3,5));
	}
	var a=parseInt(dateaverifier.substring(6,10));
	//si la longueur est différent de 10 , problème
	if (dateaverifier.length != 10) {
		return false;
	}
	//les caratères "/" ne sont pas aux endroits attendus
	else {
		if((dateaverifier.charAt(2) != '/') && (dateaverifier.charAt(5) != '/')) {
			return false;
		}
	}
	//l'année n'est pa un chiffre
	if (isNaN(a)) {
		return false;
	}
	//le mois n'est pas un chiffre ou n'est pas compris entre 0 et12
	if ((isNaN(m))||(m<1)||(m>12)) {
		return false;
	}
	//test si il s'agit d'une année bissextile pour accepter le 29/02
	if (((a % 4)==0 && (a % 100)!=0) || (a % 400)==0){
		if ((isNaN(j)) || ((m!=2) && ((j<1)||(j>31))) || ((m==2) && ((j<1)||(j>29)))) {
			return false;
		}
	}
	else {
		if ((isNaN(j)) || ((m!=2) && ((j<1)||(j>31))) || ((m==2) && ((j<1)||(j>28)))){
			return false;
		}
	}
	return true;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_email(mail) {
// renvoie vrai si le mail <mail> est valide, faux sinon

	//alert(mail);
	if (mail.indexOf("@") != "-1" &&
			mail.indexOf(".") != "-1" &&
			mail != "")
			return true;
	
	return false;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_url(url){
// renvoie vrai si <url> est correct, faux sinon (avec 'http://')

	if (url == ''){ // si le champs est vide => OK
	
		return  true;
	}
	else if (url.substring(0,7) != 'http://'){ // si le champs commence par 'http://'
		
		return  false;
	}
	else { 
		
		return  true;
	}
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_url_image(url){
// renvoie vrai si <url> est une url de type image ex: monimage.jpg

	var extension = get_extension(url);
	
	if ( (extension.toLowerCase() == "jpg")
					 || (extension.toLowerCase() == "gif")
					 || (extension.toLowerCase() == "png")
					 || (extension.toLowerCase() == "jpeg")){ 
		return  true;
	}
	else { 
		
		return  false;
	}
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_url_video(url){
// renvoie vrai si <url> est une url de type image ex: monimage.jpg

	var extension = get_extension(url);
	
	/*
	(extension.toLowerCase() == "avi")
				 || (extension.toLowerCase() == "mpeg")
				 || (extension.toLowerCase() == "mpg")
				 || (extension.toLowerCase() == "wmv")
				 || (extension.toLowerCase() == "wmx")
				 || 
	*/
	
	if ( (extension.toLowerCase() == "flv")){ 
		return  true;
	}
	else { 
		
		return  false;
	}
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_url_son(url){
// renvoie vrai si <url> est une url de type image ex: monimage.jpg

	var extension = get_extension(url);
	
	if ( (extension.toLowerCase() == "mp3") ){ 
		return  true;
	}
	else { 
		
		return  false;
	}
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function verif_url_document(url){
// renvoie vrai si <url> est une url de type image ex: monimage.jpg

	var extension = get_extension(url);
	
	if ((extension.toLowerCase() == "jpg")
				 || (extension.toLowerCase() == "gif")
				 || (extension.toLowerCase() == "png")
				 || (extension.toLowerCase() == "jpeg")
				 
				 || (extension.toLowerCase() == "txt")
				 || (extension.toLowerCase() == "doc")
				 || (extension.toLowerCase() == "rtf")
				 || (extension.toLowerCase() == "xls")
				 || (extension.toLowerCase() == "pps")
				 || (extension.toLowerCase() == "ppt")
				 
				 || (extension.toLowerCase() == "pdf")){ 
		return  true;
	}
	else { 
		
		return  false;
	}
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function get_extension(url){
// renvoie l'enxtion de l'url : ex html , jpg ...
//faux si erreur

	var reg=new RegExp("[.]+", "g"); // on met dans un tableau toutes les chaines séparé par les points
	var tableau=url.split(reg);
	var extension = tableau[tableau.length-1]; // on prend l'extension
	return extension;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function copie_tab_sans_doublon(TabInit){
// retourne un tableau copie du tableau <TabInit> sans d'envetuel doublons
	
	NvTab= new Array();
	var q=0;
	var LnChaine= TabInit.length;
	 for(x=0;x<LnChaine;x++)
			{
			for(i=0;i<LnChaine;i++)
					{
					if(TabInit[x]==  TabInit[i] && x!=i) TabInit[i]='faux';
					}
			if(TabInit[x]!='faux'){  NvTab[q] = TabInit[x]; q++}
			}
	return NvTab;
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function is_array( mixed_var ) {
// *     example 1: is_array(['un', 'joli', 'tableau']);
// *     returns 1: true
// *     example 2: is_array('un joli tableau');
// *     returns 2: false
 
    return ( mixed_var instanceof Array );
}
//--------------------------------------------------------------------------------------------
//
//
//--------------------------------------------------------------------------------------------
// 
//--------------------------------------------------------------------------------------------
function in_array(tab, enr) {
//renvoie true si <enr> est dans le tableau <tab>
	
	var i=0;
	var trouver = false;
	while( (i<tab.length) || (trouver == true) ) {
		
//		alert(i+"/"+tab+" / "+tab[i]+" == "+enr);
		if(tab[i] == enr) {
			
			return trouver = true;
			break;
		}
		i++;
	}
	return trouver; 
}