// ===================================================
// Fonctions d'initialisation qui gèrent le DHTML
// et JQuery
// ===================================================
// Gestionnaire des événements 
function init() {
	document.onmousemove = poursuiteCurseur;
}
// Plage des années
actuel = new Date();
an1 = actuel.getFullYear();
an0 = an1 - 100;

// Fonctions JQuery
$(document).ready(function(){
	$(".docPDF").colorbox({width:"85%", height:"85%", iframe:true, opacity:0.75});
	$(".docMap").colorbox({width:"90%", height:"90%", iframe:true, opacity:0.75});
	$(".docIMG").colorbox({width:"80%", height:"80%", opacity:0.75});
	$(".enLigne1").colorbox({width:"55%", inline:true, href:"#enLigne1", opacity:0.50});
	$(".enLigne2").colorbox({width:"55%", inline:true, href:"#enLigne2", opacity:0.50});
	$(".enLigne3").colorbox({width:"55%", inline:true, href:"#enLigne3", opacity:0.50});
	$(".enLigne4").colorbox({width:"55%", inline:true, href:"#enLigne4", opacity:0.50});
	$("#monCarousel").jcarousel({scroll:2});
	$("#choixDate").datepicker({
		dateFormat: 'yy-mm-dd', 
		monthNames:["Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet",
				    "Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre"],
		monthNamesShort:["Jan","F&eacute;v","Mar","Avr","Mai","Jui","Jul",
						 "Ao&ucirc;","Sep","Oct","Nov","D&eacute;c"],
		dayNames:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","vendredi","Samedi"],
		dayNamesShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],
		dayNamesMin:["Di","Lu","Ma","Me","Je","Ve","Sa"],
		prevText:"Pr&eacute;c", nextText:"Suiv",
		closeText:"OK", currentText:"Aujourd\'hui",
		changeMonth:true, changeYear:true, yearRange:an0+":"+an1 
	});
	$('#modale').dialog({
		autoOpen: false, modal: true, resizable: false, width: 400,
		draggable: false, title: "Erreur!  Membre existant", position: 'center',
		beforeclose: function(event, ui) {return false; }
	});
	$('#frmErr').dialog({ 
		autoOpen: true, title: "Erreurs dans les donn&eacute;es du formulaire", position: 'center',
		modal: true, draggable: false, resizable: false, width: 450,
		buttons: { "Quitter": function() { $(this).dialog("close"); } }
	});
	$('#frmInc').dialog({ 
		autoOpen: false, title: "Formulaire incomplet!", position: 'center',
		modal: true, draggable: false, resizable: false, width: 400,
		buttons: { "Quitter": function() { $(this).dialog("close"); } }		
	})
});
	
// ===================================================
// Méthode qui vérifie que certains champs du 
// formulaire d'inscription sont remplis
//
// Elle retourne TRUE / FALSE
// ===================================================
function activInscription(){
	var frm = document.getElementById("monForm");
	var enga = frm.engagement.checked;
	var lect = frm.lecture.checked;
	if (!enga || !lect) {
		$('#frmInc').dialog('open');
	}
	
	var actif = (enga && lect) ? true : false;
	return actif;
}

// ===================================================
// Méthode qui permet de passer automatiquement 
// a un champ suivant dans un formulaire
//
// Paramètres d'entrée: ch1 - Champ source
//					    ch2 - Champ destination
// ===================================================
function champSuiv(ch1, ch2) {
	if (ch1.value.length > ch1.size-1) {
		document.getElementById(ch2).focus();
	}
}

// ===================================================
// Méthode AJAX qui permet de verifier qu'un 
// membre existe dans la BD lorsqu'il n'est
// pas connecte au site
// ===================================================
function fnVerifMbre() {
	var nomC = document.getElementById("nom").value;
	var prenomC = document.getElementById("prenom").value;
	var choixDateC = document.getElementById("choixDate").value;
	var login = document.getElementById("login").value;
	
	if (!login) {
		$.post("testMembre.php", 
			{ nomS: nomC, prenomS: prenomC, choixDateS: choixDateC },
			function (result){ 
				if (result != 0) $('#modale').dialog('open');
			}
		);
	}
	document.getElementById('adresse').focus();
}

// ===================================================
// Méthode qui permet d'afficher les erreurs lors
// du remplissage du formulaire
// ===================================================
function affichErr(errChn) { 
	var tblErr = errChn.split('|');

	msg = '<p class="pa">Erreurs trouv&eacute;es:</p><ol>'; 
	for (var i=0; i<tblErr.length; i++) 
		msg += '<li>' + tblErr[i] + '</li>';
	msg += '</ol>'; 
	document.getElementById('frmErr').innerHTML = msg;
}

// ===================================================
// Méthode qui permet de formater un champ de 
// formulaire en fonction d'un certain patron
//
// Paramètres d'entrée: ch1 - Champ source
//					    lst - liste des delimiteurs
// ===================================================
function ucMots(ch1, lst) {
	var chn = ch1.value.toLowerCase(); // Mettre la chaine en minuscule
	
	// Analyser la chaine avec tous les separateurs
	for (var j=0; j<lst.length; j++) {
		var car = lst.charAt(j);       // Separateur
		var tbl = chn.split(car);      // Separation des mots en table
									   // selon le separateur
		for (var i=0; i<tbl.length; i++) {
			var mot = tbl[i];          // Formatage du mot
			mot = mot.charAt(0).toUpperCase() + mot.substring(1);
			tbl[i] = mot;
		}
		chn = tbl.join(car); // Reconstruction de la chaine
    }
    ch1.value = chn;         // Retourner la chaine
}
  
// ===================================================
// Méthode qui permet de valider un champ de 
// formulaire en fonction d'un certain patron
//
// Paramètres d'entrée: ch1  - Champ source
//					    code - Patron de validation
// ===================================================
function validChamp(ch1, code) {
	var err = false;
	
	// Pour les noms des joueurs
	var typJ = ch1.id.substr(0,3);
	if ((typJ == "pos") || (typJ == "sub")) { 
		if ((ch1.id.substr(0,4) == "pos4") && (ch1.value == ""))
			ch1.value = "INCONNU";
		else { 
			ucMots(ch1, " -");
			return;
		}
	}
	// Validation des autres champs
	else if (ch1.value == "") 
		return;
	else {
		var chn = ch1.value.toUpperCase();
		ch1.value = chn; // Mettre la valeur du champ en majuscule
	 
		switch (code) {
			case  1: err = (chn.match(/^[A-Z]\d[A-Z]$/)) ? false : true; break;
			case  2: err = (chn.match(/^\d[A-Z]\d$/)) ? false : true; break;
			case  3: err = (chn.match(/^\d{3}$/)) ? false : true; break;
			case  4: err = (chn.match(/^\d{4}$/)) ? false : true; break;
			case  5: err = (chn.match(/^\d{3,}$/)) ? false : true; break;
		} 
		if (err) {
			ch1.value = ""; 
			ch1.focus();
		}
	}
}

// ===================================================
// Méthode qui récupère le style CSS d'un élément
// HTML
//
// Elle retourne la valeur de la propriété CSS
//
// Paramètres d'entrée: obj  - Objet HTML
//					    prop - Propriété CSS 
// ===================================================
function obtenirStyle(obj, prop){
	var chnCSS = "";
	if(document.defaultView) { // W3C
		var gcs = document.defaultView.getComputedStyle(obj, "");
		chnCSS = gcs.getPropertyValue(prop);
	}
	else if(obj.currentStyle){  // IE
		// Conversion d'une propriété CSS en propriété JavaScript
		// Remplacement de « -x » par « X » 
		prop = prop.replace (/\-(\w)/g, 
							 function (chn, par1) {return par1.toUpperCase();} );
		// Remplacement de « : x | :x » par « X » 
		prop = prop.replace (/: ?(\w)/g, 
							 function (chn, par1) {return par1.toUpperCase();} );
		chnCSS = obj.currentStyle[prop]; 
	}
	return chnCSS;
}

// ===================================================
// Méthode qui ajoute une propriété de style à
// une feuille de style 
//
// Paramètre d'entrée  : e - Événement produit
// ===================================================
function ajouterStyle(sel, prop) {
	var ds = document.styleSheets[0]; // Feuille de style à modifier
	var regle;
	
	if (ds.addRule)             // IE
		ds.addRule(sel, prop);
	else if (ds.insertRule) {   // W3C
		regle = sel + "{ " + prop + " }";
		ds.insertRule(regle, ds.cssRules.length);
	}
}

// ===================================================
// Méthode qui colle un objet à la poursuite
// du curseur
//
// Paramètre d'entrée  : e - Événement produit
// ===================================================
function poursuiteCurseur(e) {
	var ev;					   // Événement détecté
	var objDepl;			   // Objet qui subit l'événement
	var obj;				   // Objet à déplacer...
	var deplX;				   // Déplacement en x
	var deplY;				   // Déplacement en y
	
	// Si l'événement « e » n'existe pas, alors alors c'est la méthode « window.event »
	ev = (!e) ? window.event : e;
	
	// Qui a subit l'événement ?
	objDepl = (ev.target) ? ev.target : ((ev.srcElement) ? ev.srcElement : null);
	// Pour le bug Safari
	if (objDepl.nodeType == 3) objDepl = objDepl.parentNode;
	
	switch (objDepl.id) {
		case "enteteActive": obj = document.getElementById('aideActive');
							 deplX = 20; deplY = -75;
							 break;
		default: obj = document.getElementById('bulleBottin');
				 deplX = -100; deplY = 20;
				 break;
	}
	
	if (obj != null) { // L'objet existe...
		obj.style.top  = (ev.clientY + document.documentElement.scrollTop  + deplY) + "px"; 
		obj.style.left = (ev.clientX + document.documentElement.scrollLeft + deplX) + "px"; 
    }
}

// ---------------------------------------------------------------
// Méthode qui fait apparaître ou disparaître une bulle d'aide
// ---------------------------------------------------------------
function pop(objet, texte) {
	var obj = document.getElementById(objet); 
	if (texte.length != 0) {
		obj.innerHTML = texte; // Afficher la bulle d'aide
		obj.style.visibility = "visible";
	}
	else {
		obj.innerHTML = ""; // Enlever la bulle d'aide
		obj.style.visibility = "hidden";
	}
}

// ---------------------------------------------------------------
// Méthode qui ouvre le sous-menu
// ---------------------------------------------------------------
function afficheMenu(obj) {
	document.getElementById(obj).style.display = 'block';;
}

// ---------------------------------------------------------------
// Méthode qui ferme le sous-menu
// ---------------------------------------------------------------
function cacheMenu(obj) {
	document.getElementById(obj).style.display = 'none';;
}

// ---------------------------------------------------------------
// Méthode qui fait apparaître ou disparaître une section lors
// de la gestion des champions de la saison précédente
// ---------------------------------------------------------------
function afficheCacheDiv() {
	var type = document.getElementById('type').value;
	if(type == 'saison') {
		document.getElementById('jt_div').style.display = 'none';
	}
	else {
		document.getElementById('jt_div').style.display = 'block';
	}
}
