function ajax(page, div)
{
	var xhr_object = null; // Objet XMLHttpRequest
	if(window.XMLHttpRequest) { // Firefox 
		xhr_object = new XMLHttpRequest(); 
	}
	else if(window.ActiveXObject) {// Internet Explorer 
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
	}
	else { // XMLHttpRequest non support�par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
		return; 
	}
	xhr_object.open("GET", page, true);

	xhr_object.onreadystatechange = function() { 
		if(xhr_object.readyState == 4) { 
			document.getElementById(div).innerHTML = xhr_object.responseText;
		} 
		else
		{
			//document.getElementById(mot).innerHTML = "Erreur !";
		}
	}

	//xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr_object.send();
}


function swapAffichage_div(balise,sens)
{

	if (sens == 'vaetvient'){
	 // alert('aaaaa');
	  if (document.getElementById && document.getElementById(balise) != null && document.getElementById(balise).style.visibility=='visible')
	  {
	    document.getElementById(balise).style.visibility='hidden';
	    document.getElementById(balise).style.display='none';

	  }
	  else if(document.getElementById && document.getElementById(balise) != null )
	  {
	  document.getElementById(balise).style.visibility='visible';
	  document.getElementById(balise).style.display='block';


	  }
	}
	if (sens == 'voir'){
	  if (document.getElementById && document.getElementById(balise) != null && document.getElementById(balise).style.visibility=='visible') {
	  }
	  else if(document.getElementById && document.getElementById(balise) != null )
	  {
		  document.getElementById(balise).style.visibility='visible';
		  document.getElementById(balise).style.display='block';
	  }
	}
	if (sens == 'cache'){
	  if (document.getElementById && document.getElementById(balise) != null && document.getElementById(balise).style.visibility=='visible') {
	    document.getElementById(balise).style.visibility='hidden';
	    document.getElementById(balise).style.display='none';
	  }
	}

	 return false;

}

function popUp(imgdest,x,y)
{
var param='menubar=no,status=no,toolbar=no,scrollbars=1,resizable=no,width='+x+',height='+y+',titlebar=no,alwaysRaised=yes';
var newWind = window.open(imgdest,"Image",param);
}

/**
 * Appelle isRIBvalid().
 * 
 * Fonction d'interface entre le formulaire et la f° isRIBvalid().
 *
 * @param object oInput : le champs à vérifier
 */
function verifRIB(oInput) {
    var sNum = oInput.value;
    if (sNum.length == 0) {
        return true;
    } else {
        if (sNum.length == 23) {
            var banque  = sNum.substr(0, 5);
            var guichet = sNum.substr(5, 5);
            var compte  = sNum.substr(10, 11);
            var cle     = sNum.substr(21);
            if (isRIBvalid(banque, guichet, compte, cle)) {
                return true;
            } else {
                alert("Le RIB semble incorrect. Veuillez le vérifier.");
                oInput.select();
                return false;
            }
        } else {
            alert("Veuillez saisir le RIB sur 23 caractères, sans espacement.");
            oInput.select();
            return false;
        }
    }
}

/**
 * Sert à vérifier qu'un RIB est valide.
 *
 * Cette fonction sert à vérifier qu'un RIB est valide
 * Elle accepte 3 ou 4 arguments :
 * 1/ Si 3 arguments sont passés (banque 5 chiffres, guichet 5 chiffres,
 *    n° de compte 11 caractères alpha), la fonction renvoie la clé RIB
 * 2/ Si 4 arguments sont passés (les trois premiers plus la clé RIB, 2 chiffres),
 *    la fonction renvoie un booléen : true si le RIB est Ok, false autrement.
 * 
 * La fonction commence par convertir toutes les lettres du numéro de compte
 * (cas des clients Banque de France, la poste, etc...) en chiffres selon la table
 * de correspondance donnée par tab et tab1. C'est ce que fait la boucle while.
 * L' algorithme utilisé pour calculer la clé RIB est assez tordu, aussi ne le
 * commenterais-je pas, le code est assez simple.
 * L'algorithme est utilisé par toutes les banques de France et de Navarre.
 *
 * @see http://www.javascriptfr.com/codes/VERIFICATION-VALIDITE-RIB_29544.aspx
 */
function isRIBvalid()
{
    if (isRIBvalid.arguments.length>=3)
    {
        var bqe=isRIBvalid.arguments[0];
        var gui=isRIBvalid.arguments[1];
        var cpt=isRIBvalid.arguments[2].toUpperCase();

        // Conversion du numero de compte en chiffres
        var tab= "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        var tab1="123456789123456789234567890123456789".split("");

        while (cpt.match(/\D/) != null)
            cpt=cpt.replace(/\D/, tab1[tab.indexOf(cpt.match(/\D/))]);
        var cp=parseInt (cpt, 10);

        //Calcul clé RIB
        a=bqe%97;
        a=a*100000+parseInt(gui, 10);
        a=a%97;
        a=a*Math.pow(10, 11) + cp;
        a=a%97
        a=a*100;
        a=a%97
        a=97-a;
        if (isRIBvalid.arguments.length>3)
            return isRIBvalid.arguments[3]==a;
        else
            return a;
    } else {
        return false;
    }
}

/**
 * Vérifie la validité d’une date.
 *
 * Pour être valide, la date doit être au format JJ/MM/AAAA et comprise entre
 * le 01/01/2000 et le 01/01/2050.
 *
 * @param String sDate la date à vérifier
 * @param bool bVideOk si à FALSE, interdit une chaîne vide (par défaut TRUE)
 * @return bool TRUE si correcte, FALSE si erronée
 */
function verifDate(sDate, bVideOk)
{
    try {
        // chaine vide éventuellement OK
        if (bVideOk != false && sDate == "") {
            return true;
        }
        // on suppr les espaces au bord
        var sDate = trim(sDate);
        // format à respecter
        if (!sDate.match(/^[0-9]{2}\/[0-9]{2}\/20[0-4][0-9]$/)) {
            throw("La date « " + sDate.substr(0, 20) + " » n’est pas au format"
                + " JJ/MM/AAAA, avec AAAA entre 2000 et 2049.");
        }
        return true;
    } catch (e) {
        window.alert(e);
        return false;
    }
}

/**
 * Équivalent trim() de PHP.
 */
function trim( str ) {
    // Strip whitespace (or other characters) from the beginning and end of a string
    // 
    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_trim/
    // +       version: 801.922
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'

    return str.replace(/(^[\s\xA0]+|[\s\xA0]+$)/g, '');
}
