/*-------------------------------------------------------------------------------
 * Donne le focus et selectionne le contenu des champs de la 1er forme
 * Seul le type hidden n'accepte pas le focus.
 * On dénombre les types de input suivants :
 *  button, checkbox, file, hidden, password, radio, reset, submit, text
 * Le paramètre "field" (indice du champ dans le tableau elements de la forme)
 *  indique sur quel élement de la forme placer le focus,
 *  s'il n'est pas renseigné, on récupère la 1er zone.
 * Le paramètre "selectdata" indique si le contenu de la zone doit ê sélectionné
 *  après avoir récupéré le focus.
 *-------------------------------------------------------------------------------
 */
function GiveFocus(field, selectdata)
{
	var k;
	k=0;

	if (document.forms[0]) {
		// Trouve la 1er zone acceptant le focus (cad différent de hidden ET pas en readonly)
		//if (document.forms[0].elements[field] == undefined) {
		if (!document.forms[0].elements[field]) {
			for (k=0 ; k<=document.forms[0].elements.length ; k++) 
			{
				if ( (document.forms[0].elements[k].type != "hidden") && (!document.forms[0].elements[k].readOnly) )
					break;
			}
		} else {
			k = field;
		}

		// Donne le focus à la première zone l'acceptant
		document.forms[0].elements[k].focus();

		// Sélectionne l'intérieur de la zone si c'est du texte
		if (document.forms[0].elements[k].type == "text") {
			if (selectdata == true) {
				document.forms[0].elements[k].select();
			}
		}
	}
}

/*-------------------------------------------------------------------------------
 * Renvoi l'indice du champ suivant surlequel mettre le focus
 * i est le n° de l'indice courant
 * Le même indice est renvoyé s'il n'y pas de champ suivant
 *-------------------------------------------------------------------------------
 */
function NextFocus(i)
{
	// Créé un tableau contenant les types interdits
	var listtyp = new Array();
	listtyp[0] = "hidden";
	listtyp[1] = "button";

	for (k=i+1;k<document.forms[0].elements.length;k++) 
	{
		if (!listtyp.contient(document.forms[0].elements[k].type))
			return k;
	}
	return i;
}


/*-------------------------------------------------------------------------------
 * Permet de stocker dans la variable globale "global_focus" l'id du champ
 * qui prend le focus ou "" s'il le lâche.
 * On peut donc savoir dans l'appli à tout moment si le focus est positionné.
 * Cette fonction est appelé automatiquement pour chaque input d'un formulaire créé avec 
 * la classe PHP JPHTMLForm, grâce à la constante PHP : JPHTMLFORM_INPUT_ATTR (voir fichier _require_all_on.php).
 *-------------------------------------------------------------------------------
 * Désactiver pour le moment, mais c'était une bonne idée
 *-------------------------------------------------------------------------------
 * /
var global_focus='';
function setFocus(str, typ)
{
	alert('Mvt '+typ+' de focus pour : '+str);
	global_focus = str;
}

/*-------------------------------------------------------------------------------
 * Capture les evennements éffectués sur la page
 *-------------------------------------------------------------------------------
 */
function Hook(event)
{
	//alert(event.keyCode);
	switch (event.keyCode) {
		// F2 : Rend le focus
		case 113:
			GiveFocus('', true);
		break;
		// F1+F9 : Retour au menu de base
		case 112:
		case 120:
			document.location.href="index.php";
			break;

		// F4+F12 : Delog de l'opérateur
		case 115:
		case 123:
			document.location.href="index_actions.php?act=delog";
			break;
	}
}

/*-------------------------------------------------------------------------------
 * Capture les evennements éffectués sur les champs
 *-------------------------------------------------------------------------------
 */
function HookInput(field, event)
{
	switch (event.keyCode) {
		// ENTER : Valide le formulaire courant ou passe à la zone suivante
		case 13:
			var cur;
			var nex;

			cur = getIndiceInForm(field.name);
			nex = NextFocus(cur);

			if (cur == nex) {
				document.forms[0].submit();
			} else {
				GiveFocus(nex, true);
			}
			break;
	}
}

/*-------------------------------------------------------------------------------
 * Récupère l'indice de ce champ dans la forme
 *-------------------------------------------------------------------------------
 */
function getIndiceInForm(fieldName)
{
	for (i=0 ; i<=document.forms[0].elements.length ; i++) {
		if (fieldName == document.forms[0].elements[i].name) {
			return i;
		}
	}

	return "";
}

/*-------------------------------------------------------------------------------
 * Même fonctionnement que "in_array" en php
 * Renvoi vrai si la valeur est dans le tableau, false si non
 *-------------------------------------------------------------------------------
 */
Array.prototype.contient = function(valeur) {
	for (var i in this) {
		if (this[i]==valeur) return true;
	}
	return false;
}


/*-------------------------------------------------------------------------------
 * Fonctions de gestion des calques
 *-------------------------------------------------------------------------------
 */
function Affiche_Cache(nObjet) {
	if (nObjet.style.visibility=='hidden') {
		nObjet.style.visibility='visible';
	}else{
		nObjet.style.visibility='hidden';
	}
}

function Cache(nObjet) {
		nObjet.style.visibility='hidden';
}

function Affiche(nObjet) {
		nObjet.style.visibility='visible';
}

/*-------------------------------------------------------------------------------
 * Fonction qui renvoit le niveau de charge de la batterie (sdk7535)
 *-------------------------------------------------------------------------------
 */
function ShowBatteryLevel() {
	document.getElementById('battlev').innerHTML = BatteryLevel();
}

/*-------------------------------------------------------------------------------
 * Fonction qui gère l'heure dans firefox comme dans IE
 *-------------------------------------------------------------------------------
 */
function StartTime() {
	var today=new Date();
	var h=today.getHours();
	var m=today.getMinutes();
	var s=today.getSeconds();

	// Ajoute un 0 le cas échéant
	h=checkTime(h);
	m=checkTime(m);
	s=checkTime(s);

	document.getElementById('time').innerHTML=h+":"+m+":"+s;

	t=setTimeout('StartTime()',500);
}

/*-------------------------------------------------------------------------------
 * Ajoute un 0 le cas échéant
 *-------------------------------------------------------------------------------
 */
function checkTime(i) {
	if (i<10) {
		i="0" + i
	}
  return i
}

/* --------------------------------------------------------
 * Equivalent à la fonction php du même nom
 * --------------------------------------------------------
 */
function basename (path) {
	return path.replace( /.*\//, "" );
}

/* --------------------------------------------------------
 * Demande une confirmation en javascript
 * --------------------------------------------------------
 */
function JSConfirmBox(texte, llink) {
	var answer = confirm(texte);
	if (answer){
		document.location.href=llink;
	}
}

function JSConfirmBoxAjax(texte, llink, cible) {
	var answer = confirm(texte);
	if (answer){
		AjaxDoIt(llink, cible);
	}
}

/* --------------------------------------------------------
 * Fait les contrôles nécessaires avant l'envoi du mail
 * --------------------------------------------------------
 */
function sendMail() {
	var nberr = 0;

	var okstr = '1px solid black';
	var kostr = '1px solid red';

	Cache($('msgsuccess'));

	$('nom').style.border				= okstr;
	$('prenom').style.border		= okstr;
	$('mail').style.border			= okstr;
	$('message').style.border		= okstr;

	if ($('nom').value=='') 		{ $('nom').style.border = kostr; 		nberr+=1; }
	if ($('prenom').value=='') 	{ $('prenom').style.border = kostr; nberr+=1; }
	if ($('mail').value=='') 		{ $('mail').style.border = kostr; 	nberr+=1; }
	if ($('message').value=='')	{ $('message').style.border = kostr;nberr+=1; }

	if (nberr>0) {
		//alert('Des champs obligatoires sont manquants');
		$('msgsuccess').innerHTML = "Des champs obligatoires sont manquants";
		$('msgsuccess').style.border = "1px dashed red";
		$('msgsuccess').style.color = "red";
		Affiche($('msgsuccess'));
	} else {
		$('forme').submit();
	}

}

