/****************************************************************************************
SMI (Services Maintenance Interventions) est une gestion libre de maintenance et de SAV

Version 0.9.9

Copyright (C) 2006-2009  Sylvain FATOME
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation; 
either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program
(in the directory docs); 
if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 
Boston, MA  02110-1301, USA.

Contact : galawa@free.fr

Web : http://smitst.homelinux.com
****************************************************************************************/

/* Scripts divers */
<!-- Met le focus sur le premier champ disponible -->
function metFocus()
{
	if (document.forms.length==0) return;
	
	if (navigator.appVersion.indexOf("MSIE")!=-1)
	{
		// Modification des classes si sous IE
		for (f=0; f < document.forms.length; f++)
		{
			var formulaire = document.forms[f];
			for (i = 0; i < formulaire.length; i++)
			{
				var ftype=formulaire.elements[i].type;
				var fdis=formulaire.elements[i].disabled;
				if (formulaire.elements[i].readOnly)
					var fro=formulaire.elements[i].readOnly;
				else
					var fro=false;
				if ((ftype == "text") || (ftype == "textarea") || (ftype == "password") || (ftype == "select-one") || (ftype == "select-multiple") || (ftype == "select-one"))
				{
					if ((fdis==false) && (fro==false))
					{
						formulaire.elements[i].onfocus=function() {
							this.className+=" iefocus";
						}
						formulaire.elements[i].onblur=function() {
							this.className=this.className.replace(new RegExp(" iefocus\\b"), "");
						}
					}
				}
			}
		}
	}

	// Recherche du focus
	var ffound=false;
	for (f=0; f < document.forms.length; f++)
	{
		var formulaire = document.forms[f];
		for (i = 0; i < formulaire.length; i++)
		{
			var ftype=formulaire.elements[i].type;
			var fdis=formulaire.elements[i].disabled;
			if (formulaire.elements[i].readOnly)
				var fro=formulaire.elements[i].readOnly;
			else
				var fro=false;
			if ((ftype == "text") || (ftype == "textarea") || (ftype == "password") || (ftype == "select-one") || (ftype == "select-multiple") || (ftype == "select-one"))
			{
				if ((fdis==false) && (fro==false))
				{
					formulaire.elements[i].focus();
					var ffound=true;
					break;
				}
			}
		}
		if (ffound==true) break;
	}
}


<!-- Met tous les champs en "readonly" et enlève les étoiles "Champ obligatoire" et le titre associé -->
function metReadonly()
{
	if (document.forms.length==0) return;
	
	for (f=0; f < document.forms.length; f++)
	{
		var formulaire = document.forms[f];
		for (i = 0; i < formulaire.length; i++)
		{
			var ftype=formulaire.elements[i].type;
			if ((ftype == "text") || (ftype == "textarea") || (ftype == "password") || (ftype == "select-one") || (ftype == "select-multiple") || (ftype == "select-one"))
			{
				var fid=formulaire.elements[i].id;
				formulaire.elements[i].readOnly=true;
				formulaire.elements[i].className="rubdel";
			}
		}
	}
	
	if (document.getElementById("oblig"))
	{
		var objet = document.getElementById("oblig");
		objet.style.display = 'none';
	}

	if (document.images.length==0) return;

	for (i=0; i < document.images.length; i++)
	{
		var image = document.images[i];
		var source = image.src;
		var existoblig = source.indexOf("oblig.png", 0) 
		if (existoblig!=-1)
		{
			var nouvsource=source.substring(0,existoblig)+"none.gif";
			image.src=nouvsource;
			image.alt="";
		}
	}

}

<!-- Fonctions pour tout cocher/décocher -->
function checkall(valeur,obj) 
{
	if (valeur == "Tous")
	{
		for (i = 0; i < obj.length; i++) 
		{
			if (obj.elements[i].type == "checkbox") obj.elements[i].checked = "checked";
		}
		return "Aucun"; 
	}
	else
	{
		for (i = 0; i < obj.length; i++) 
		{
			if (obj.elements[i].type == "checkbox") obj.elements[i].checked = "";
		}
		return "Tous"; 
	}
}

<!-- Fonctions pour tout décocher -->
function uncheckall(obj) 
{
	for (i = 0; i < obj.length; i++) 
	{
		if (obj.elements[i].type == "checkbox") obj.elements[i].checked = "";
	}
	return "Tous"; 
}

<!-- Fonctions pour affecter l'état du bouton de sélection des checkbox-->
function valbouton(obj) 
{
	var allchecked=true;
	for (i = 0; i < obj.length; i++) 
	{
		if ((obj.elements[i].type == "checkbox") && (obj.elements[i].checked == false))
		{
			allchecked=false;
		}
	}
	if (allchecked==true)
	{
		return "Aucun";
	}
	else
	{
		return "Tous";
	}
}

<!-- Fonction afficher/cacher un bloc div -->
function display(idobjet,etat)
{
	var objet = document.getElementById(idobjet);
	if (objet)
	{
		if ((etat == 'none') || (etat == 'block'))
		{
			if (etat == 'none')
			{
				objet.style.display = 'none';
			}
			else
			{
				objet.style.display = 'block';
			}
		}
	}
}

<!-- Fonction qui remplace un texte à l'intérieur d'un autre texte -->
function update_txt_in_txt(txtorig,txtrech,txtrempl)
{
	var nouvtxt='';
	
	if (txtorig!='')
	{
		txtorig=txtorig.split('\n');
		txtorig=txtorig.join('%%');
		txtorig = txtorig.replace(/&/g, "&amp;");
		txtorig = txtorig.replace(/</g, "&lt;");
		txtorig = txtorig.replace(/>/g, "&gt;");
		txtorig = txtorig.replace(/''/g, "&quot;" );	
		txtorig = txtorig.replace(/'/g, "&#039;");
	}
	// Récupération texte saisi avant et après le texte généré automatiquement la fois précédente
	var txtavt='';
	var txtapr='';
	if (txtrech!='')
	{
		var rech=txtorig.indexOf(txtrech);
		if (rech!=-1)
		{
			if (rech>0)
			{
				txtavt=txtorig.substr(0,rech);
			}
			txtapr=txtorig.substr(rech+txtrech.length,txtorig.length);
		}
		else
			txtavt = txtorig;
	}
	else
	{
		txtavt = txtorig;
	}
	// Si on a extrait du texte avant ou après le texte généré automatiquement au choix précédent, on le réencode
	if (txtavt!='')
	{
		txtavt = txtavt.replace(/&amp;/g, "&" );
		txtavt = txtavt.replace(/&lt;/g, "<" );
		txtavt = txtavt.replace(/&gt;/g, ">" );
		txtavt = txtavt.replace(/&quot;/g, "''" );	
		txtavt = txtavt.replace(/&#039;/g, "'" );
		txtavt = txtavt.split('%%');
		txtavt = txtavt.join('\n');
	}
	if (txtapr!='')
	{
		txtapr = txtapr.replace(/&amp;/g, "&" );
		txtapr = txtapr.replace(/&lt;/g, "<" );
		txtapr = txtapr.replace(/&gt;/g, ">" );
		txtapr = txtapr.replace(/&quot;/g, "''" );	
		txtapr = txtapr.replace(/&#039;/g, "'" );
		txtapr = txtapr.split('%%');
		txtapr = txtapr.join('\n');
	}
	//Récupération nouveau texte généré, formatage, et réinjection des textes éventuellement saisis avant et après
	if (txtrempl!='')
	{
		txt1 = txtrempl.replace(/&amp;/g, "&" );
		txt1 = txt1.replace(/&lt;/g, "<" );
		txt1 = txt1.replace(/&gt;/g, ">" );
		txt1 = txt1.replace(/&quot;/g, "''" );	
		txt1 = txt1.replace(/&#039;/g, "'" );
		var tab_txt1=txt1.split("%%");
		var nouvtxt=txtavt+tab_txt1.join("\n")+txtapr;
	}
	else
	{
		var nouvtxt=txtavt+txtapr;
	}
	
	return nouvtxt;
}

<!--  Teste la résolution écran -->
function testres()
{
	if (screen.width<1024)
		alert("SMI fonctionne correctement en 1024x768.\nSi vous utilisez une résolution inférieure, vous risquez d'avoir quelques problèmes d'affichage.");
}


<!-- Affichage du menu à onglet des relevés matériels -->
function set_mnu_rel(idmnu)
{
	var menu=document.getElementById("menu_rel");
	if (menu)
	{
		var nmnu=parseInt(idmnu.substr(1,3));
		var maxi=parseInt(document.getElementById("maxmnu").value);
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				if (i==nmnu)
				{
					detailmenu.style.display = 'block';
					nomenu.className = 'ongleta';
				}
				else
				{
					detailmenu.style.display = 'none';
					nomenu.className = 'ongleti';
				}
			}
		}
		var objet=document.getElementById("close_menu");
		if (objet)
		{
			objet.style.display = 'inline';
		}
	}
}

<!-- Fermeture du menu à onglet des relevés matériels -->
function close_mnu_rel()
{
	var menu=document.getElementById("menu_rel");
	if (menu)
	{
		var maxi=parseInt(document.getElementById("maxmnu").value);
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				detailmenu.style.display = 'none';
				nomenu.className = 'ongleti';
			}
		}
		document.getElementById("close_menu").style.display = 'none';
	}
}

<!-- Affichage du menu à onglet des relevés (fiche générale) -->
function set_mnu_relg(idmnu)
{
	var menu=document.getElementById("menu_relg");
	if (menu)
	{
		var nmnu=parseInt(idmnu.substr(1,3));
		var maxi=parseInt(document.getElementById("maxmnu").value);
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				if (i==nmnu)
				{
					detailmenu.style.display = 'block';
					nomenu.className = 'ongleta';
				}
				else
				{
					detailmenu.style.display = 'none';
					nomenu.className = 'ongleti';
				}
			}
		}
	}
}

<!-- Affichage du menu à onglet de l'index agences -->
function set_mnu_ageidx(idmnu)
{
	var menu=document.getElementById("menu_ageidx");
	if (menu)
	{
		var nmnu=parseInt(idmnu.substr(1,3));
		var maxi=6;
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				if (i==nmnu)
				{
					detailmenu.style.display = 'block';
					nomenu.className = 'ongleta';
				}
				else
				{
					detailmenu.style.display = 'none';
					nomenu.className = 'ongleti';
				}
			}
		}
	}
}

<!-- Affichage du menu à onglet de l'index centre de gestion -->
function set_mnu_sgeidx(idmnu)
{
	var menu=document.getElementById("menu_sgeidx");
	if (menu)
	{
		var nmnu=parseInt(idmnu.substr(1,3));
		var maxi=6;
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				if (i==nmnu)
				{
					detailmenu.style.display = 'block';
					nomenu.className = 'ongleta';
				}
				else
				{
					detailmenu.style.display = 'none';
					nomenu.className = 'ongleti';
				}
			}
		}
	}
}

<!-- Affichage du menu à onglet de la liste des clients -->
function set_mnu_lcli(idmnu)
{
	var url_cour=document.location.href;
	var nmnu=parseInt(idmnu.substr(1,3));
	// Nettoyage du "tl=xx"
	var maxi=2;
	for (i=1;i<=maxi;i++)
	{
		var idx_tl=url_cour.indexOf('tl='+i);
		if (idx_tl!=-1)
		{
			var str_reg='(tl='+i+')';
			var reg=new RegExp(str_reg,"gi");
			url_cour=url_cour.replace(reg,'tl='+nmnu);
		}
	}
	document.location.href=url_cour;
}

<!-- Affichage du menu à onglet de la liste des bons de travail -->
function set_mnu_lot(idmnu)
{
	var url_cour=document.location.href;
	var nmnu=parseInt(idmnu.substr(1,3));
	// Nettoyage du "tl=xx"
	var maxi=2;
	for (i=1;i<=maxi;i++)
	{
		var idx_tl=url_cour.indexOf('tl='+i);
		if (idx_tl!=-1)
		{
			var str_reg='(tl='+i+')';
			var reg=new RegExp(str_reg,"gi");
			url_cour=url_cour.replace(reg,'tl='+nmnu);
		}
	}
	document.location.href=url_cour;
}

<!-- Affichage du menu à onglet des détails dossiers -->
function set_mnu_dosd(idmnu1,idmnu2)
{
	// Menu du déroulement
	if (idmnu1!='')
	{
		var menu1=document.getElementById("menu1_dosd");
		if (menu1)
		{
			var nmnu1=parseInt(idmnu1.substr(3,3));
			var maxi1=parseInt(document.getElementById("maxmnu1").value);
			for (i=1;i<=maxi1;i++)
			{
				var detailmnu1="detail1_m"+i;
				var detailmenu1=document.getElementById(detailmnu1);
				var idmnu1="m1_"+i;
				var nomenu1=document.getElementById(idmnu1);
				if ((detailmenu1) && (nomenu1))
				{
					if (i==nmnu1)
					{
						detailmenu1.style.display = 'block';
						nomenu1.className = 'ongleta';
					}
					else
					{
						detailmenu1.style.display = 'none';
						nomenu1.className = 'ongleti';
					}
				}
			}
		}
	}

	// Menu des intervenants
	if (idmnu2!='')
	{
		var menu2=document.getElementById("menu2_dosd");
		if (menu2)
		{	
			var nmnu2=parseInt(idmnu2.substr(3,3));
			var maxi2=parseInt(document.getElementById("maxmnu2").value);
			for (i=1;i<=maxi2;i++)
			{
				var detailmnu2="detail2_m"+i;
				var detailmenu2=document.getElementById(detailmnu2);
				var idmnu2="m2_"+i;
				var nomenu2=document.getElementById(idmnu2);
				if ((detailmenu2) && (nomenu2))
				{
					if (i==nmnu2)
					{
						detailmenu2.style.display = 'block';
						nomenu2.className = 'ongleta';
					}
					else
					{
						detailmenu2.style.display = 'none';
						nomenu2.className = 'ongleti';
					}
				}
			}
		}
	}
}

<!-- Affichage du menu à onglet pour la liste des tâches -->
function set_mnu_tac(idmnu)
{
	var menu=document.getElementById("menu_tac");
	if (menu)
	{
		var nmnu=parseInt(idmnu.substr(1,3));
		var maxi=2;
		for (i=1;i<=maxi;i++)
		{
			var detailmnu="detailm"+i;
			var detailmenu=document.getElementById(detailmnu);
			var idmnu="m"+i;
			var nomenu=document.getElementById(idmnu);
			if ((detailmenu) && (nomenu))
			{
				if (i==nmnu)
				{
					detailmenu.style.display = 'block';
					nomenu.className = 'ongleta';
				}
				else
				{
					detailmenu.style.display = 'none';
					nomenu.className = 'ongleti';
				}
			}
		}
	}
}

<!-- Mise en majuscules des premières lettres de chaque mot, et les autres en minuscules -->
function ucWords(chaine, avectirets) {
var valeur="";
if ((chaine) && (chaine!=""))
{
	valeur = chaine.toLowerCase();

	// Analyse des mots séparés par des espaces
	var mots = valeur.split(' ');
	for(var i = 0; i < mots.length; i++)  
	{
		if(mots[i].length > 1) 
		{
			carac = mots[i].split('');
			carac[0] = carac[0].toUpperCase();
			mots[i] = carac.join('');
		} 
		else 
		{
			mots[i] = mots[i].toUpperCase();
		} 
	}
	valeur = mots.join(' ');
	
	if ((avectirets) && ((avectirets==false) || (avectirets==true)))
	{
		if (avectirets==true)
		{
			// Analyse des mots séparés par des tirets (si demandé)
			var mots = valeur.split('-');
			for(var i = 0; i < mots.length; i++) 
			{
				if(mots[i].length > 1) 
				{
					carac = mots[i].split('');
					carac[0] = carac[0].toUpperCase();
					mots[i] = carac.join('');
				} 
				else 
				{
					mots[i] = mots[i].toUpperCase();
				}
			}
			valeur = mots.join('-');
		}
	}
}
return valeur;
}

<!-- Affichage d'un popup si l'objet est "disabled" (pour ceux qui cliquent quand même dessus) -->
function puthtml_in_id(idobj,txt,videok)
{
	var objet=document.getElementById(idobj);
	if (objet)
	{
		if (txt)
		{
			var modok=true;
			if ((txt=='') && (videok==false))
			{
				modkok=false;
			}
			if (modok==true)
			{
				var lng = objet.firstChild.length;
				objet.firstChild.replaceData(0, lng, txt);
			}
		}
	}
}

<!-- Affichage d'un popup si l'objet est "disabled" (pour ceux qui cliquent quand même dessus) -->
function putvalue_in_id(idobj,txt,videok)
{
	var objet=document.getElementById(idobj);
	if (objet)
	{
		if (txt)
		{
			var modok=true;
			if ((txt=='') && (videok==false))
			{
				modkok=false;
			}
			if (modok==true)
			{
				objet.value=txt;
			}
		}
	}
}

// Vérifie si une date (date1) est strictement supérieure à une autre (date2)
// Selon un masque de date donné
function Date1_sup_Date2(date1,date2,masque)
{
	if ((typeof(date1)!='undefined') || (typeof(date2)!='undefined'))
	{
		if ((IsDate(date1,masque)) && (IsDate(date2,masque)))
		{
			var jour,mois,annee,
				jourmn,moismn,anneemn,
				jour2,mois2,annee2;
			switch (masque)
			{
				case "mmddyy":
					mois1=Number(date1.substr(0,2));
					jour1=Number(date1.substr(2,2));
					annee1=Number(date1.substr(4,2))+2000;
					mois2=Number(date2.substr(0,2));
					jour2=Number(date2.substr(2,2));
					annee2=Number(date2.substr(4,2))+2000;
					break;
				case "mmddyyyy":
					mois1=Number(date1.substr(0,2));
					jour1=Number(date1.substr(2,2));
					annee1=Number(date1.substr(4,4));
					mois2=Number(date2.substr(0,2));
					jour2=Number(date2.substr(2,2));
					annee2=Number(date2.substr(4,4));
					break;
				case "jjmmaa":
					jour1=Number(date1.substr(0,2));
					mois1=Number(date1.substr(2,2));
					annee1=Number(date1.substr(4,2))+2000;
					mois2=Number(date2.substr(0,2));
					jour2=Number(date2.substr(2,2));
					annee2=Number(date2.substr(4,2))+2000;
					break;
				case "jjmmaaaa":
					jour1=Number(date1.substr(0,2));
					mois1=Number(date1.substr(2,2));
					annee1=Number(date1.substr(4,4));
					mois2=Number(date2.substr(0,2));
					jour2=Number(date2.substr(2,2));
					annee2=Number(date2.substr(4,4));
					break;
				case "mm-dd-yy":
				case "mm-dd-yyyy":
					var tab_date1 = date1.split("-");
					mois1=Number(tab_date1[0]);
					jour1=Number(tab_date1[1]);
					annee1=Number(tab_date1[2]);
					if (annee1<2000)
						annee1=annee1+2000;
					var tab_date2 = date2.split("-");
					mois2=Number(tab_date2[0]);
					jour2=Number(tab_date2[1]);
					annee2=Number(tab_date2[2]);
					if (annee2<2000)
						annee2=annee2+2000;
					break;
				case "mm/dd/yy":
				case "mm/dd/yyyy":
					var tab_date1 = date1.split("/");
					mois1=Number(tab_date1[0]);
					jour1=Number(tab_date1[1]);
					annee1=Number(tab_date1[2]);
					if (annee1<2000)
						annee1=annee1+2000;
					var tab_date2 = date2.split("/");
					mois2=Number(tab_date2[0]);
					jour2=Number(tab_date2[1]);
					annee2=Number(tab_date2[2]);
					if (annee2<2000)
						annee2=annee2+2000;
					break;
				case "jj-mm-aa":
				case "jj-mm-aaaa":
					var tab_date1 = date1.split("-");
					jour1=Number(tab_date1[0]);
					mois1=Number(tab_date1[1]);
					annee1=Number(tab_date1[2]);
					if (annee1<2000)
						annee1=annee1+2000;
					var tab_date2 = date2.split("-");
					jour2=Number(tab_date2[0]);
					mois2=Number(tab_date2[1]);
					annee2=Number(tab_date2[2]);
					if (annee2<2000)
						annee2=annee2+2000;
					break;
				case "jj/mm/aa":
				case "jj/mm/aaaa":
					var tab_date1 = date1.split("/");
					jour1=Number(tab_date1[0]);
					mois1=Number(tab_date1[1]);
					annee1=Number(tab_date1[2]);
					if (annee1<2000)
						annee1=annee1+2000;
					var tab_date2 = date2.split("/");
					jour2=Number(tab_date2[0]);
					mois2=Number(tab_date2[1]);
					annee2=Number(tab_date2[2]);
					if (annee2<2000)
						annee2=annee2+2000;
					break;
				default :
					return false;
					break;
			}
	
			var datetst1 = new Date(annee1, Number(mois1-1), jour1);
			var datetst2 = new Date(annee2, Number(mois2-1), jour2);
				
			if (datetst1.getTime()>datetst2.getTime())
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}
	return false;
}

// Vérifie si une heure (heure1) est strictement supérieure à une autre (heure2)
// selon le masque 'hh:mm'
function Heure1_sup_Heure2(heure1,heure2)
{
	if ((typeof(heure1)!='undefined') || (typeof(heure2)!='undefined'))
	{
		if ((IsHeurehhmm(heure1)) && (IsHeurehhmm(heure2)))
		{
			var totsec1 = ConvertHeurehhmmSec(heure1);
			var totsec2 = ConvertHeurehhmmSec(heure2);
			if (totsec1>totsec2)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}
	return false;
}

