//---------------------------------------------------------------------------------------------------------------------------------------
// ouverture de fenetre 
// P=url de la page
// T=nom ou titre de la fenetre
// W=width H=height
// S= 0 ou 1 pour scrollbars actifs
// R= 0 ou 1 pour fenetre resizable
function OpenW(P,T,W,H,S,R)
{
	window.open(P,T,'toolbar=0,location=0,directories=0,menubar=0,statusbar=0,scrollbars=' + S + ',resizable=' + R + ',width=' + W + ',height=' + H +',screenX=250,screenY=150,left=150,top=50,status=no','dependent=yes');
}
// ouverture de fenetres avec menu affiche
function OpenWM(P,T,W,H,S,R)
{
	window.open(P,T,'toolbar=0,location=0,directories=0,menubar=1,statusbar=0,scrollbars=' + S + ',resizable=' + R + ',width=' + W + ',height=' + H +',screenX=250,screenY=150,left=150,top=50,status=no','dependent=yes');
}
// verif email adresse
function VerifAdresseEmail(V){
    var reg = new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$");               
        if (reg.test(V)){return true;}else {return false;}       
}            

// verif date
function VerifDate(V){
    var reg = new RegExp("^[0-3]?[0-9]\\/[01]?[0-9]\\/[12][90][0-9][0-9]$", "g");
    if (!reg.test(V)) { return false; }
    
    var tab = V.toString().split("/");
    if (tab.length < 3) return false;
    else if (tab[2] > 2200 || tab[2] < 1900) return false;
    
	// On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
	var j = parseInt(V.split("/")[0], 10); // jour
	var m = parseInt(V.split("/")[1], 10); // mois
	var a = parseInt(V.split("/")[2], 10); // année
	if (a<1900){return false;}
	
	// Définition du dernier jour de février
	// Année bissextile si annnée divisible par 4 et que ce n'est pas un siècle, ou bien si divisible par 400
	var fev=28;
	if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
	 
	// Nombre de jours pour chaque mois
	var nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
	// Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
	return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] ); 
}   

// Get difference entre deux date D1,D2 au format jj/mm/aaaa, si erreur retourne 0
function BT_GetDateDiff(MyInterval,D1,D2){
	if (VerifDate(D1)==false){return 0;}
	if (VerifDate(D2)==false){return 0;}		
	
	// transfromation au format UK
	var MyDate1 = parseInt(D1.split("/")[1], 10) +"/"+parseInt(D1.split("/")[0], 10)+"/"+parseInt(D1.split("/")[2], 10);
	var MyDate2 = parseInt(D2.split("/")[1], 10) +"/"+parseInt(D2.split("/")[0], 10)+"/"+parseInt(D2.split("/")[2], 10);
	 			
	// get ms between dates (UTC) and make into "difference" date	
	var iDiffMS = Date.parse(MyDate2) - Date.parse(MyDate1);	 

	// calc various diffs
	var dt1 = new Date(MyDate1);
	var dt2 = new Date(MyDate2);
	var nYears  = dt2.getUTCFullYear() - dt1.getUTCFullYear();
	var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
	var nQuarters = parseInt(nMonths/3);	
	
	var nMilliseconds = iDiffMS;
	var nSeconds = parseInt(iDiffMS/1000);
	var nMinutes = parseInt(nSeconds/60);
	var nHours = parseInt(nMinutes/60);
	var nDays  = parseInt(nHours/24);
	var nWeeks = parseInt(nDays/7);

	// return requested difference	
	switch(MyInterval.toLowerCase()){
		case "yyyy": return nYears;
		case "q": return nQuarters;
		case "m": return nMonths;		
		case "d": return nDays;
		case "w": return nDays;
		case "ww":return nWeeks;	 
		case "h": return nHours;
		case "n": return nMinutes;
		case "s": return nSeconds;
		case "ms":return nMilliseconds;	 
		default: return 0;
	}
	
}
// retourne une date au format jj/mm/aaaa calculee depuis la date MyDate, selon l'intervalle MyInterval et un nombre MyNumber
// si erreur retourne vide
function BT_GetdateAdd(MyInterval, MyNumber, MyDate){
	if (VerifDate(MyDate)==false){return "";}		
	MyNumber = new Number(MyNumber);
	
	// transfromation au format UK
	var MyDate1 = parseInt(MyDate.split("/")[1], 10) +"/"+parseInt(MyDate.split("/")[0], 10)+"/"+parseInt(MyDate.split("/")[2], 10);
	var dt = new Date(MyDate1);
	
	switch(MyInterval.toLowerCase()){
		case "yyyy": 
			// year
			dt.setFullYear(dt.getFullYear() + MyNumber);break;
		case "q":
			// quarter
			dt.setMonth(dt.getMonth() + (MyNumber*3));break;
			
		case "m":
			// month
			dt.setMonth(dt.getMonth() + MyNumber);break;

		case "y":// day of year
		case "d":// day
		case "w":
			// weekday
			dt.setDate(dt.getDate() + MyNumber);break;
		
		case "ww": 
			// week of year
			dt.setDate(dt.getDate() + (MyNumber*7));break;
		
		case "h": 
			// hour
			dt.setHours(dt.getHours() + MyNumber);break;
		
		case "n":
			// minute
			dt.setMinutes(dt.getMinutes() + MyNumber);break;
			
		case "s": 
			// second
			dt.setSeconds(dt.getSeconds() + MyNumber);break;
		
		case "ms":
			// second
			dt.setMilliseconds(dt.getMilliseconds() + MyNumber);break;
		default:return "";
	}
	
	// transfromation au format french
	var j=dt.getDate();
	var m=dt.getMonth()+1;
	var y=dt.getFullYear();
	var ret = "";
	if (j<10){ret="0"+j}else{ret=j;}
	if (m<10){ret=ret+"/0"+m}else{ret=ret+"/"+m;}
	ret=ret+"/"+y;
	return ret;
}

// verif Num secu sociale
function VerifNUSS(V){
	var reg=new RegExp("^[0-9]{15}$");	
	if (reg.test(V)){return true;}else {return false;}	
} 

// verif telephone
function VerifTelephone(V){
	var reg=new RegExp("[0][12345689][- \.—]?([0-9][0-9][- \.—]?){4}$");	
	if (reg.test(V)){return true;}else {return false;}	
} 

//verif mobile
function VerifMobile(V){
	var reg=new RegExp("[0][6|7][- \.—]?([0-9][0-9][- \.—]?){4}$");	
	if (reg.test(V)){return true;}else {return false;}	
} 

// verif code postal
function VerifCodePostal(V){
	var reg=new RegExp("^[0-9]{5}$");	
	if (reg.test(V)){return true;}else {return false;}	
} 

// verif nombre
function VerifNombre(V){	
	var test=V.replace(",",".");
	if (isNaN(test)){return false;}else {return true;}	
} 

// formate un chiffre avec 'decimal'=nb de chiffres apres la virgule et un separateur = separateur des millier generalement =' ' espace
function format_nombre(valeur,decimal,separateur) {	
	var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ; 
	var val=Math.floor(Math.abs(valeur));
	if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
	var val_format=val+"";
	var nb=val_format.length;
	for (var i=1;i<4;i++) {
		if (val>=Math.pow(10,(3*i))) {
			val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
		}
	}
	if (decimal>0) {
		var decim=""; 
		for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
		deci=decim+deci.toString();
		val_format=val_format+"."+deci;
	}
	if (parseFloat(valeur)<0) {val_format="-"+val_format;}
	return val_format;
}

function KeyPressInteger() {
    if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
}
function KeyPressDecimal(obj) {
    if (event.keyCode < 44 || event.keyCode > 57) {
        event.returnValue = false;
    }
    else if (event.keyCode < 48 || event.keyCode > 57) {
        if (event.KeyCode < 44 || event.KeyCode > 46) {
            event.returnValue = false;
        }
        else if ((obj.value.lastIndexOf(",") > 0 && obj.value.indexOf(",") < obj.value.length - 1) || (obj.value.lastIndexOf(".") > 0 && obj.value.indexOf(".") < obj.value.length - 1)) {
            event.returnValue = false;
        }
    }
    else if (getSelectionStart(obj) >= obj.value.length - 2 && ((obj.value.lastIndexOf(",") >= 0 && obj.value.length > obj.value.lastIndexOf(",") + 2) || (obj.value.lastIndexOf(".") >= 0 && obj.value.length > obj.value.lastIndexOf(".") + 2))) {
        event.returnValue = false;
    }
}

function KeyPressDate() {
    if (event.keyCode < 44 || event.keyCode > 57) {
        event.returnValue = false;
    }
}
function getSelectionStart(obj) {
    if (obj.createTextRange) {
        var r = document.selection.createRange().duplicate()
        r.moveEnd('character', obj.value.length)
        if (r.text == '') return obj.value.length
        return obj.value.lastIndexOf(r.text)
    } else return obj.selectionStart
}

var oldate = "";

function onChangeDate(obj) {
    var newdate = obj.value;
    newdate = newdate.replace("-", "/").replace(" ", "/");
    newdate = newdate.replace("//", "/");
    var reg = new RegExp("[ -/]+", "g");
    tab = newdate.split(reg);
    if (tab.length > 0) {
        if (tab.length > 1) {
            if (tab.length > 2) {
                var ExprRegDate = new RegExp("^([0-9]{2})/([0-9]{2})/([0-9]{4})$");
                if (ExprRegDate.test(newdate))
                    obj.style.color = 'Black';
            }
            else {
                if (!isNaN(tab[0]) && !isNaN(tab[1])) {
                    if (newdate.lastIndexOf("/") > 3 && tab[1].length < 2)
                        newdate = tab[0] + "/0" + tab[1] + "/20";
                    else if (newdate.length == 5)
                        newdate = newdate + "/20";
                    else if (tab[1] > 1 && tab[1].length < 2)
                        newdate = tab[0] + "/0" + tab[1] + "/20";
                }
            }
        }
        else {
            if (!isNaN(tab[0])) {
                if (newdate.lastIndexOf("/") > 0 && tab[0].length < 2)
                    newdate = "0" + newdate;
                else if (newdate.length == 2)
                    newdate = newdate + "/";
                else if (newdate > 3)
                    newdate = "0" + newdate + "/";
            }
        }
    }
    newdate = newdate.replace("//", "/");
    if (newdate.replace("/20", "/") != oldate) {
        oldate = newdate;
        obj.value = newdate;
    }
    obj.value = obj.value.replace("//", "/");
}

function ChangeDateNaissance(obj) {
    var newdate = obj.value;
    newdate = newdate.replace("-", "/").replace(" ", "/");
    newdate = newdate.replace("//", "/");
    var reg = new RegExp("[ -/]+", "g");
    tab = newdate.split(reg);
    if (tab.length > 0) {
        if (tab.length > 1) {
            if (tab.length > 2) {
                var ExprRegDate = new RegExp("^([0-9]{2})/([0-9]{2})/([0-9]{4})$");
                if (ExprRegDate.test(newdate))
                    obj.style.color = 'Black';
            }
            else {
                if (!isNaN(tab[0]) && !isNaN(tab[1])) {
                    if (newdate.lastIndexOf("/") > 3 && tab[1].length < 2)
                        newdate = tab[0] + "/0" + tab[1] + "/19";
                    else if (newdate.length == 5)
                        newdate = newdate + "/19";
                    else if (tab[1] > 1 && tab[1].length < 2)
                        newdate = tab[0] + "/0" + tab[1] + "/19";
                }
            }
        }
        else {
            if (!isNaN(tab[0])) {
                if (newdate.lastIndexOf("/") > 0 && tab[0].length < 2)
                    newdate = "0" + newdate;
                else if (newdate.length == 2)
                    newdate = newdate + "/";
                else if (newdate > 3)
                    newdate = "0" + newdate + "/";
            }
        }
    }
    newdate = newdate.replace("//", "/");
    if (newdate.replace("/19", "/") != oldate) {
        oldate = newdate;
        obj.value = newdate;
    }
}
