/*
 * Paramétrage
 */
var PREMIER_CHAMP_ID_CLIENT_NOM = "id1";
var PREMIER_CHAMP_ID_CLIENT_NOM_BIS = "id1bis";
var PREMIER_CHAMP_ID_CLIENT_LENGTH = 6;

var SECOND_CHAMP_ID_CLIENT_NOM = "id2";
var SECOND_CHAMP_ID_CLIENT_NOM_BIS = "id2bis";
var SECOND_CHAMP_ID_CLIENT_LENGTH = 11;

var CHAMP_PASS_CLIENT = "dateNaissance";
var CHAMP_PASS_CLIENT_BIS = "dateNaissance_bis";
var PASS_LENGTH = 8;

var ID_FORMULAIRE = "secureForm";
var ID_FORMULAIRE_BIS = "secureForm_bis";

var LIBELLE = "Tapez votre date de naissance (jjmmaaaa)";
var ID_BALISE_A_MASQUER = ["libPassword"];

var URL_PAGE_AIDE = "/pavenumaide.html";

var LEFT_PAGE_AIDE = "200px";
var TOP_PAGE_AIDE = "200px";
/*
 * Variables globales
 */
var nbCellules = 16;		//Nombre de cellules du clavier
var modeDegrade = false;		//Permet de savoir si on est en mode dégradé (par défaut) ou pavé numérique
var libelle_mvs_mdp = "Merci de saisir votre date de naissance au format suivant JJMMAAAA.";
var libelle_mvs_id = "Merci de saisir les 11 chiffres de votre numéro de compte.";
var objDraggable = false;

function envoyerPavNum(){
	if(verifIdentifiant(document.getElementById(PREMIER_CHAMP_ID_CLIENT_NOM).value, document.getElementById(SECOND_CHAMP_ID_CLIENT_NOM).value)){
		if(modeDegrade){	
			if(verifPass(document.getElementById(CHAMP_PASS_CLIENT).value) ){
				document.getElementById(ID_FORMULAIRE).submit();
			}
			else{
				alert(libelle_mvs_mdp);
			}
		}
		else{
			afficherPaveNumerique();
		}
	}
	else{
		alert(libelle_mvs_id);
	}
}


function envoyerPavNum2(){
	if(verifIdentifiant(document.getElementById(PREMIER_CHAMP_ID_CLIENT_NOM_BIS).value, document.getElementById(SECOND_CHAMP_ID_CLIENT_NOM_BIS).value)){
		if(modeDegrade){	
			if(verifPass(document.getElementById(CHAMP_PASS_CLIENT_BIS).value) ){
				document.getElementById(ID_FORMULAIRE_BIS).submit();
			}
			else{
				alert(libelle_mvs_mdp);
			}
		}
		else{
			afficherPaveNumerique();
		}
	}
	else{
		alert(libelle_mvs_id);
	}
}

function afficherPaveNumerique(){
		document.getElementById("pavenum").style.visibility = "visible";
		creerDragDrop();
		insererImageTransparente();
		redimensionner(true);		//Affichage classique du pavé
		insererLibelle();
		document.getElementById("pavenum_pass").setAttribute("maxlength", PASS_LENGTH);
		var pave = calculerRepartition();
		for(var i=0; i<nbCellules; i++){
			var regExpValTouche = new RegExp("[0-9]{1,1}");
			if(regExpValTouche.test(pave[i])){
				document.getElementById("pavenum_touche_" + i).className = "acc_roll";
			}
			else{
				document.getElementById("pavenum_touche_" + i).className = "";
			}			
			var noeudValTouche = document.createTextNode(pave[i]);
			while(document.getElementById("pavenum_touche_" + i).childNodes.length > 0){
				document.getElementById("pavenum_touche_" + i).removeChild(document.getElementById("pavenum_touche_" + i).firstChild);
			}
			document.getElementById("pavenum_touche_" + i).appendChild(noeudValTouche);			
		}
		if(testerNavigateurIE6()){
			rolloverJS();
		}
}

/*
 * Fonction des boutons du pavé
 */

function redimensionner(ouverture){
	document.getElementById("pavenum_pass").value = "";
	
	var regExpClassique = new RegExp("classique");
	var libelleRedimension;
	if(ouverture){
		libelleRedimension = reduire();
	}
	else{
		if(regExpClassique.test(document.getElementById("pavenum").className)){
			libelleRedimension = agrandir();
		}
		else{
			libelleRedimension = reduire();
		}
	}
	var noeudLibelleRedimension = document.createTextNode(libelleRedimension);
	document.getElementById("pavenum_redimensionner").removeChild(document.getElementById("pavenum_redimensionner").firstChild);
	document.getElementById("pavenum_redimensionner").insertBefore(noeudLibelleRedimension, document.getElementById("icone_redimensionner"));
}

function reduire(){
	document.getElementById("pavenum").className = "classique";
	return "AGRANDIR";
}

function agrandir(){
	document.getElementById("pavenum").className = "accessible";
	if(testerNavigateurFF15() || testerNavigateurFF2()){
		document.getElementById("pavenum_pass").className = "specific_ff";
	}
	return "REDUIRE";
}

function corriger(){
	document.getElementById("pavenum_pass").value = "";
}

function valider(){
	var pass = document.getElementById("pavenum_pass").value;

if(document.getElementById(CHAMP_PASS_CLIENT_BIS) && document.getElementById(SECOND_CHAMP_ID_CLIENT_NOM_BIS).value!="" ){
	
	if(verifPass(pass)){
		// on reassigne
		document.getElementById(PREMIER_CHAMP_ID_CLIENT_NOM).value=document.getElementById(PREMIER_CHAMP_ID_CLIENT_NOM_BIS).value;
		document.getElementById(SECOND_CHAMP_ID_CLIENT_NOM).value=document.getElementById(SECOND_CHAMP_ID_CLIENT_NOM_BIS).value;
		
		document.getElementById(CHAMP_PASS_CLIENT_BIS).value = document.getElementById("pavenum_pass").value;
		// on reassigne
		document.getElementById(CHAMP_PASS_CLIENT).value = document.getElementById("pavenum_pass").value;
		
		document.getElementById(ID_FORMULAIRE).submit();
	} else{
		alert(libelle_mvs_mdp);
	}
	
	} else {
	
	if(verifPass(pass)){
		document.getElementById(CHAMP_PASS_CLIENT).value = document.getElementById("pavenum_pass").value;		
		document.getElementById(ID_FORMULAIRE).submit();
	} else{
		alert(libelle_mvs_mdp);
	}
	
	}
	
}

function fermerPaveNumerique(){
	document.getElementById("pavenum_pass").value = "";
	document.getElementById("pavenum").style.visibility = "hidden";
}

function ajouterCaractere(valeurTouche){	
	var passCourant = document.getElementById("pavenum_pass").value;
	if(passCourant.length < PASS_LENGTH){
		passCourant = passCourant + valeurTouche;
		document.getElementById("pavenum_pass").value = passCourant;	
	}
}

function afficherAide(){
	window.open(URL_PAGE_AIDE,'pavenumaide', 'directories=no, resizable=no, menubar=no, location=no, scrollbar=no, width=250, height=250, top='+TOP_PAGE_AIDE+',left='+LEFT_PAGE_AIDE);
}

/*
 * Fonctionnalités annexes du pavé numérique
 */
function calculerRepartition(){	
	var nums=[0,1,2,3,4,5,6,7,8,9,"","","","","",""];
	return nums.sort(function() {return 0.5 - Math.random();});
}

function creerDragDrop(){
	new Draggable("pavenum", {starteffect:'', endeffect:''});

}

function insererImageTransparente(){
	var id_span = "pavenum_span_img_trans";

	if(document.getElementById(id_span)){
		var elem = document.getElementById(id_span);
		var url = "";
		url = getURL(id_span);
		var debut = url.indexOf("(");
		var fin = url.indexOf(")");
		url = url.substring(debut+1,fin);

		//Suppression des " misent par IE
		if(url.charAt("0") == '"'){
			url = url.substring(1,url.length);
		}
		if(url.charAt(url.length-1) == '"'){
			url = url.substring(0,url.length-1);
		}
		envoyerRequeteCpt(url);
		
		document.getElementById("pavenum_haut").removeChild(document.getElementById(id_span));
	}
	var span_img = document.createElement("span");
	span_img.setAttribute("id",id_span);
	span_img.setAttribute("name",id_span);
	
	document.getElementById("pavenum_haut").appendChild(span_img);
}

function getURL(idSpan){
	var elem = document.getElementById(idSpan);
	if(testerNavigateurIE6() || testerNavigateurIE7()){
		URL = elem.currentStyle['backgroundImage'];
	}
	else{
		URL = document.defaultView.getComputedStyle(elem,null).getPropertyValue('background-image');
	}
	return URL;
}

function envoyerRequeteCpt(url){
	var httpRequest = false;
	if(window.XMLHttpRequest) {
	  	httpRequest= new XMLHttpRequest();
	}
	else if(window.ActiveXObject) {
	  	try{
        	httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e){
        	try{
            	httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
            	catch(e){}
		}
 	}
   	url = url+"&redirection=true"
	try{
		httpRequest.open("GET", url, true);
 		httpRequest.send(null);
	}
	catch(e){}
}


function insererLibelle(){
	if(document.getElementById("pavenum_label").childNodes.length == 0) {
		var noeudLibelle = document.createTextNode(LIBELLE);
		document.getElementById("pavenum_label").appendChild(noeudLibelle);
	}
}


/*
 * Fonctions de contrôle surfacique
 */
function verifIdentifiant(premierId, secondId){
	var regExpPremierIdClient = new RegExp("^[0-9]{"+PREMIER_CHAMP_ID_CLIENT_LENGTH+"}$");
	var regExpSecondIdClient = new RegExp("^[0-9]{"+SECOND_CHAMP_ID_CLIENT_LENGTH+"}$");
	return regExpPremierIdClient.test(premierId) && regExpSecondIdClient.test(secondId);
}

function verifPass(pass){
	var regExpPass = new RegExp("^[0-9]{"+PASS_LENGTH+"}$");
	return regExpPass.test(pass);
}


/*
 * Permet de mettre en place le rollover par JavaScript
 */
function rolloverJS() {
	var elems = document.getElementById("pavenum_clavier").getElementsByTagName("td");
	for (var i=0; i<elems.length; i++) {
		elems[i].onmouseover= function(){
										if(this.className=='acc_roll'){
											this.className += ' rollover';	
										}									
										}
		elems[i].onmouseout= function(){					
										this.className = this.className.replace(new RegExp(" rollover"), "");
										}
	}
}


/*
 * Test si on utilise le pavé numérique
 */
function testerModeDegrade(){
	if(testerNavigateurIE6() || testerNavigateurIE7() || testerNavigateurFF15() || testerNavigateurFF2() || testerNavigateurSafari2() || testerNavigateurSafari3()){
		document.getElementById(CHAMP_PASS_CLIENT).style.display = "none";
		for(var i=0; i<ID_BALISE_A_MASQUER.length; i++){
			document.getElementById(ID_BALISE_A_MASQUER[i]).style.display = "none";
		}
		modeDegrade = false;
	}

}

/*
 * Fonctions de tests des navigateurs accepté par l'aménagement
 */
function testerNavigateurIE6(){
	var maRegExp = new RegExp("MSIE 6");
	return maRegExp.test(navigator.userAgent);
}

function testerNavigateurIE7(){
	var maRegExp = new RegExp("MSIE 7");
	return maRegExp.test(navigator.userAgent);
}

function testerNavigateurFF15(){	
	var maRegExp = new RegExp("Firefox/1.5");
	return maRegExp.test(navigator.userAgent);
}

function testerNavigateurFF2(){	
	var maRegExp = new RegExp("Firefox/2.0");
	return maRegExp.test(navigator.userAgent);
}

function testerNavigateurSafari2(){
	var regExpSafari = new RegExp("AppleWebKit/4");
	return regExpSafari.test(navigator.userAgent);
}

function testerNavigateurSafari3(){
	var regExpVersion = new RegExp("Mac OS");
	var regExpSafari = new RegExp("AppleWebKit/5");
	return regExpVersion.test(navigator.userAgent) && regExpSafari.test(navigator.userAgent);
}

