//Librairie de fonctions Javascript
//attention cette page est destinée à être inclue dans toutes les pages du site
//n'y mettre que des fonctions REUTILISABLES

function customSubmit(strURL) {
		//paramètre optionel , passer true pour mémoriser l'url courante
		if (arguments[1]) {document.forms[0].txtBack.value=location.href;}
		document.forms[0].action=strURL;
		document.forms[0].submit();
}

function setStrActionAndSubmit(strAction) {
		//document.getElementById("txtAction").value=strAction;
		document.forms[0].action = location.href;
		document.forms[0].txtAction.value=strAction;
		document.forms[0].submit();
}

function setCtrlValue(strCtrl, strValue) {
		document.getElementById(strCtrl).value=strValue;
}

// colore les lignes en alternance sur la table passee en parametre
// la couleur par défaut un le bleu clair type itunes
// mais on peut passer la couleur voulue en 2eme paramètre
function stripe(id) {
  var oddColor = arguments[1] ? arguments[1] : "#edf3fe";
	//on récupère un handle sur la table
  var table = document.getElementById(id);
  if (! table) { return; }
  //on boucle sur les lignes
  var trs = table.getElementsByTagName("tr");
  for (var i = 0; i < trs.length; i++) {
    trs[i].style.backgroundColor = ((i % 2 == 0) ? "#fff" : oddColor);
  }
}

// ajout d'un évenement onload 
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {oldonload(); func();}
  }
}

//permet de valider le contenu d'un champ avec une expression régulière, et de passer un message d'err si besoin
function blnCheckStr(strRE, strField, strMessage) {
	objre = new RegExp(strRE);
	return (objre.test(document.getElementById(strField).value)) || (alert(strMessage));
}

//permet de recopier le header d'une table vers une autre
//en utilisant deux divs encadrant ces tables on obtient un titre non scrollable
function copyHeader(strFromTable, strToTable, blnCenterDivs) {
	//test de l'existence des id des tables passées en paramètre
	var objFromTable = document.getElementById(strFromTable);
	var objToTable = document.getElementById(strToTable);
	if ((! objFromTable) || (! objToTable)) { return; }
	//obtenir un pointeur sur l'element thead de la table source
	var objSourceHeader = objFromTable.getElementsByTagName("thead")[0];
	// on clone l'element
	var x = objSourceHeader.cloneNode(true);
	//	on renomme pour préserver l'unicité des IDs
	objSourceHeader.id += "hidden";
	//	on ajoute le clone du header à la table cible
	objToTable.appendChild(x);
  objToTable.style.width = objFromTable.offsetWidth + "px";	
  var fromTds = objSourceHeader.getElementsByTagName("td");
  var toTds = objToTable.getElementsByTagName("thead")[0].getElementsByTagName("td");
  for (var i=0; i<fromTds.length; i++) { toTds[i].style.width = fromTds[i].offsetWidth + "px"; }
	// on retaille le div source pour tenir compte de la taille de la scrollbar
	// 1) on fixe la taille de la table pour éviter qu'elle se redimensionne avec le div père
	objFromTable.style.width = objFromTable.offsetWidth + "px";
	// 2) on fixe la taille du div père à la largeur de la table + la largeur du scrollbar
	objFromTable.parentNode.style.width = objFromTable.offsetWidth + (objFromTable.parentNode.offsetWidth - objFromTable.parentNode.clientWidth) + "px";
	objToTable.parentNode.style.width = objFromTable.offsetWidth + "px";
	// si besoin on centre les divs par rapport à la page
	if (navigator.appName == "Netscape") {
			objToTable.style.left = objFromTable.offsetLeft + "px";
			if (objFromTable.parentNode.offsetLeft > objToTable.parentNode.offsetLeft) {
				objToTable.parentNode.style.left = objFromTable.parentNode.offsetLeft + "px";
			}
	}
}

function doRefreshPost(nbSecs) {
    // the timeout value should be the same as in the "refresh" meta-tag
    setTimeout( "document.forms[0].submit();", nbSecs*1000 );
}

function Propage(Field) {
	var strIn = Field.value;
	var mySplitResult = strIn.split("\t");
	if (mySplitResult.length > 1) {
		var strID = Field.id.slice(0,-2);					
		var iIndex = parseInt(Field.id.replace(strID,""));
		for(var i = 0; i < mySplitResult.length; i++){
			if (iIndex + i == 13) { return; }
			document.getElementById(strID + ((iIndex+i>9) ? "" : "0") + (iIndex+i)).value = mySplitResult[i];
		}
	}
}

function blnCheckTotal(strID, iTotal)  {
	var fPctTotal = 0.00;
	var strListeMois = new Array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
	for (var i in strListeMois) { 
		if (!isNaN(parseFloat(document.getElementById("txt" + strID + strListeMois[i]).value.replace(/,/, '.')))) {
			 fPctTotal += parseFloat(document.getElementById("txt" + strID + strListeMois[i]).value.replace(/,/, '.'))
		}
	}
	if (Math.abs(100.00- fPctTotal) < 0.0005) {
		return true;
	} else {
		alert("Le total " + strID + " est de : " + Math.round(fPctTotal*1000)/1000 + " %, veuillez appliquer les corrections nécessaires" ) ;		
		return false;
	}
}

function blnCheckPrerequis(strCheck, strCheckField) {
	var strRealCheck = document.getElementById(strCheckField).value ;
	for (i=0;i < strCheck.length; i++) {
		if ((strCheck.charAt(i) == "1") && (strRealCheck.charAt(i) != "1")) {
			if (i==0) alert ('Aucun exercice en cours pour ce type d\'objectif');
			if (i==1) alert('Les périodes de saisie ne sont pas définies pour cette filiale pour l\'exercice en cours');
			if (i==2) alert('Action impossible en dehors des périodes de saisie prévues pour ce type d\'objectif et pour cette filiale');
			if (i==3) alert('Les pondérations ne sont pas saisies pour l\'exercice objectif en cours et pour cette filiale');
			if (i==4) alert('Il semble que le total des pondérations est incorrect pour la société en cours');
			if (i==5) alert('Il reste des erreurs (incohérences, objectifs négatifs, ..) dans les fichiers agences,\nimpossible d\'importer un fichier filiale');
			return false;
		}
	}
	return true;
}

function blnCheckPrerequisMB(strCheck, strCheckField) {
	var strRealCheck = document.getElementById(strCheckField).value ;
	for (i=0;i < strCheck.length; i++) {
		if ((strCheck.charAt(i) == "1") && (strRealCheck.charAt(i) != "1")) {
			if (i==0) alert ('Aucun exercice en cours pour ce type d\'objectif');
			if (i==1) alert('Le périmètre Famille-Fournisseur n\'est pas défini pour l\'exercice en cours');
			if (i==2) alert('Action impossible en dehors des périodes de saisie prévues pour ce type d\'objectif et pour cette filiale');
			return false;
		}
	}
	return true;
}

function updateMask(strValue) {
	if ((strValue == 'SUP') | (strValue == 'ADM')) {
		document.getElementById("txtField1").style.backgroundColor="#ffffff";
		document.getElementById("txtField2").style.backgroundColor="#ffffff";
		document.getElementById("txtField3").style.backgroundColor="#ffffff";
	}
	if (strValue == 'REG') {
		document.getElementById("txtField1").style.backgroundColor="#ffff99";
		document.getElementById("txtField2").style.backgroundColor="#ffffff";
		document.getElementById("txtField3").style.backgroundColor="#ffffff";
	}
	if ((strValue == 'FIL') | (strValue == 'CIR')) {
		document.getElementById("txtField1").style.backgroundColor="#ffffff";
		document.getElementById("txtField2").style.backgroundColor="#ffff99";
		document.getElementById("txtField3").style.backgroundColor="#ffffff";
	}
	if (strValue == 'AGE') {
		document.getElementById("txtField1").style.backgroundColor="#ffffff";
		document.getElementById("txtField2").style.backgroundColor="#ffffff";
		document.getElementById("txtField3").style.backgroundColor="#ffff99";
	}
}

function storeChanged(txt) {
	document.forms[0].txtChanged.value += (document.forms[0].txtChanged.value ? ";" : "") + txt.replace(/[^0-9]/g,"");
}

function blnDontSave() {
	var blnNoChange = (document.forms[0].txtChanged.value ? false : true);
	//return (blnNoChange || confirm('Attention des mises à jour ont été effectuées (et non sauvegardées) !\n Continuer sans enregistrer ?'));
	return (blnNoChange || !confirm('Attention des mises à jour ont été effectuées (et non sauvegardées) !\n OK : retour à l\'écran de saisie\n Annuler : perte des dernières saisies'));
}

function intGetWidth() {
  var myWidth = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
  } else if( document.documentElement && ( document.documentElement.clientWidth ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
  } else if( document.body && ( document.body.clientWidth ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
  }
  return myWidth;
}
