// -----------------------------------------------
// G L O B A L
// -----------------------------------------------

var gchSiteUrl="http://marlot.org/util/";

// Ajouter le site aux favoris
function pAjouterFavoris() {

	ichSiteTitre=document.title;
	if (navigator.appName!="Microsoft Internet Explorer") {
		window.sidebar.addPanel(ichSiteTitre,gchSiteUrl,"");
	}else{
		window.external.AddFavorite(gchSiteUrl,ichSiteTitre);
	}
}
// -----------------------------------------------
// Définir ce site comme page d'accueil
function pAjouterAccueil(iclObj_V) {

	if (document.all && document.getElementById) {
		iclObj_V.style.behavior='url(#default#homepage)';
		iclObj_V.setHomePage(gchSiteUrl);
	}else{
		alert("Cette fonction n'est utilisable qu'avec Internet Explorer.\r\n\r\nSi vous utilisez Mozilla Firefox :\r\n\r\n- Fermez les autres onglets\r\n- Cliquez sur le menu 'Outils', puis 'Options'\r\n- Dans l'onglet 'Général', cliquez sur 'Pages courantes'");
	}
}
// -----------------------------------------------
// Fonction Javascript pour faire le getElementById quel que soit le navigateur
function fgetElementById(ichElement_V) {

	if (document.getElementById) return document.getElementById(ichElement_V);
	if (document.all) return document.all[ichElement_V];
	return null;
}

// -----------------------------------------------
// Soumettre un formulaire lors du clic sur un bouton
function pSoumettreFormulaire(
	ibBouton,		// Identifiant du bouton
	idFormulaire) {	// Identifiant du formulaire

// Désactiver le bouton et changer son libellé
iclBouton=fgetElementById(ibBouton);
iclBouton.disabled=true;
iclBouton.blur();
iclBouton.value="Patientez...";

// Soumettre le formulaire
fgetElementById(idFormulaire).submit();
}

// -----------------------------------------------
// Equivant Javascript de à strtr en PHP
function strtr (str, from, to) {
    // http://kevin.vanzonneveld.net
    // original by: Brett Zamir (http://brett-zamir.me)
    // example 1: $trans = {'hello' : 'hi', 'hi' : 'hello'}; strtr('hi all, I said hello', $trans); returns: 'hello all, I said hi'
    // example 2: strtr('äaabaåccasdeöoo', 'äåö','aao'); returns: 'aaabaaccasdeooo'
    // example 3: strtr('ääääääää', 'ä', 'a'); returns: 'aaaaaaaa'
    // example 4: strtr('http', 'pthxyz','xyzpth'); returns: 'zyyx'
    // example 5: strtr('zyyx', 'pthxyz','xyzpth'); returns: 'http'
    var fr = '', i = 0, j = 0, lenStr = 0, lenFrom = 0;
    var tmpFrom = [];
    var tmpTo   = [];
    var ret = '';
    var match = false;
    // Received replace_pairs?
    // Convert to normal from->to chars
    if (typeof from === 'object') {
        for (fr in from) {
            tmpFrom.push(fr);
            tmpTo.push(from[fr]);
        }
        from = tmpFrom;
        to = tmpTo;
    }
    // Walk through subject and replace chars when needed
    lenStr  = str.length;
    lenFrom = from.length;
    for (i = 0; i < lenStr; i++) {
        match = false;
        for (j = 0; j < lenFrom; j++) {
            if (str.substr(i, from[j].length) == from[j]) {
                match = true;
                // Fast forward
                i = (i + from[j].length)-1;
                break;
            }
        }
        if (false !== match) {
            ret += to[j];
        } else {
            ret += str[i];
        }
    }
    return ret;
}

// -----------------------------------------------
function Formater(texte,longueur) {

	var resultat=(texte==null ? "" : texte.toString().toUpperCase().substr(0,longueur));
	while (resultat.length<longueur) resultat="0"+resultat;
	return resultat;
}

// -----------------------------------------------
// R I B
// -----------------------------------------------
function FormaterRibNir(texte) {

	return strtr(texte.toString(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ","12345678912345678923456789");
}

// -----------------------------------------------
function CalculerCleRib() {

	var txtBanque=Formater(fgetElementById("banque").value,5);
	var txtGuichet=Formater(fgetElementById("guichet").value,5);
	var txtCompte=Formater(fgetElementById("compte").value,11);

	var txtBanqueSansLettre=FormaterRibNir(txtBanque);
	var txtGuichetSansLettre=FormaterRibNir(txtGuichet);
	var txtCompteSansLettre=FormaterRibNir(txtCompte);
    var cle = 97 - ( ( 89 * parseInt(txtBanqueSansLettre,10) + 15 * parseInt(txtGuichetSansLettre,10) + 3 * parseInt(txtCompteSansLettre,10) ) % 97);
	var txtCle=Formater(cle,2);
	fgetElementById("cle").innerHTML=txtCle;
	fgetElementById("rib").innerHTML="RIB : "+txtBanque+" "+txtGuichet+" "+txtCompte+" "+txtCle;
}

// -----------------------------------------------
// N I R
// -----------------------------------------------
function CalculerCleNir() {

	var sexe=FormaterRibNir(fgetElementById("sexe").value,1);
	var annee=FormaterRibNir(fgetElementById("annee").value,2);
	var mois=FormaterRibNir(fgetElementById("mois").value,2);
	var dept=FormaterRibNir(fgetElementById("dept").value,2);
	var commune=FormaterRibNir(fgetElementById("commune").value,3);
	var ordre=FormaterRibNir(fgetElementById("ordre").value,3);
	var cle=fgetElementById("cle");
	var numero=sexe+annee+mois+dept+commune+ordre;
    var calculCle = 97 - ( numero % 97);
	calculCle=Formater(calculCle,2);
	cle.innerHTML=calculCle;
}

// -----------------------------------------------
// I B A N
// -----------------------------------------------
function ibanFormaterPays(texte) {

	var nombre=0;
	var resultat="";
	var texte=(texte==null ? "" : texte.toString().toUpperCase());	
	for (var i=0;i<texte.length;i++) {
		nombre=texte.charCodeAt(i)-55;
		resultat+=nombre.toString();
	}
	return resultat;
}

// -----------------------------------------------
function ibanFormaterBban(texte) {
	var texte=(texte==null ? "" : texte.toString().toUpperCase());	
	return texte;	
}

// -----------------------------------------------
function ibanCalculerCle() {

	var paysEnLettres=fgetElementById("pays").value.toUpperCase();
	var pays=ibanFormaterPays(paysEnLettres);
	var bban=ibanFormaterBban(fgetElementById("bban").value);

	var numero=bban.toString()+pays.toString()+"00";
		
	var calculCle=0;
	var pos=0;
	while (pos<numero.length) {
		calculCle=parseInt(calculCle.toString()+numero.substr(pos,9),10) % 97;
		pos+=9;
	}
	calculCle=98-(calculCle % 97);
	var cle=(calculCle<10 ? "0" : "")+calculCle.toString();
	fgetElementById("cle").innerHTML=cle;
	fgetElementById("iban").innerHTML="IBAN : "+paysEnLettres+cle+" "+
		bban.substr(0,4)+" "+bban.substr(4,4)+" "+bban.substr(8,4)+" "+bban.substr(12,4)+" "+
		bban.substr(16,4)+" "+bban.substr(20,4)+" "+bban.substr(24,4)+" "+bban.substr(28,4);
}

// -----------------------------------------------
// H O R L O G E
// -----------------------------------------------

var genDeltaHeure	=1;
var genDeltaMinute	=0;
var genTimer		=0;
var genHeure		=0;
var genMinute		=0;
var genSeconde		=0;

// -----------------------------------------------
// Trouver le décalage par rapport à l'heure GMT
function pChangerFuseau(o) {

	v=o.value;
	genDeltaMinute=Number(v.substr(5,2));
	genDeltaHeure=Number(v.substr(3,2));
	if (v.substr(2,1)=='-') {
		genDeltaMinute=-genDeltaMinute;
		genDeltaHeure=-genDeltaHeure;
	}
	pEcrireHeure();
}

// -----------------------------------------------
// Afficher l'heure actuelle pour le réseau choisi
function pEcrireHeure() {

	// Rappeler cette même fonction dans une seconde
	if (genTimer==0) genTimer=setInterval('pEcrireHeure()',1000);

	// Passer à la seconde suivante
	genSeconde++;
	if (genSeconde>=60) {
		genMinute++;
		genSeconde=0;
		if (genMinute>=60) {
			genHeure++;
			genMinute=0;
			if (genHeure==24) {
				genHeure=0;
				genMinute=0;
			}
		}
	}

	// Correction des minutes suivant le décalage GMT
	var ienMinute=genMinute;
	var ienHeure=genHeure;
	ienMinute+=genDeltaMinute;
	if (ienMinute>=60) {
		ienHeure++;
		ienMinute-=60;
	}else if (ienMinute<0) {
		ienHeure--;
		ienMinute+=60;
	}

	// Correction de l'heure suivant le décalage GMT
	ienHeure+=genDeltaHeure;
	if (ienHeure>=24) ienHeure-=24;
	if (ienHeure<0) ienHeure+=24;
	// Construction de l'heure à afficher
	var ichHeure='';
	if (ienHeure<10) ichHeure+='0';
	ichHeure+=ienHeure.toString()+':';
	if (ienMinute<10) ichHeure+='0';
	ichHeure+=ienMinute.toString()+':';
	if (genSeconde<10) ichHeure+='0';
	ichHeure+=genSeconde.toString();
	// Affichage de l'heure
	o=fgetElementById('heure');
	o.innerHTML=ichHeure;
}