
/*
 * Paramétrage
 */
var PREMIER_CHAMP_ID_CLIENT_NOM = "id1";
var PREMIER_CHAMP_ID_CLIENT_LENGTH = 4;

var SECOND_CHAMP_ID_CLIENT_NOM = "id2";
var SECOND_CHAMP_ID_CLIENT_LENGTH = 11;

var CHAMP_PASS_CLIENT = "dateNaissance";
var PASS_LENGTH = 8;

var ID_FORMULAIRE = "secureForm";

var LIBELLE = "Tapez votre date de naissance (jjmmaaaa)";
var ID_BALISE_A_MASQUER = ["libPassword"];

var p = document.location.href.replace(/pages\//,"");
var URL_PAGE_AIDE = p.substring(0,p.lastIndexOf("/"))+"/pavenumaide.html";


var LEFT_PAGE_AIDE = "200px";
var TOP_PAGE_AIDE = "200px";
/*
 * Variables globales
 */
var nbCellules = 16;		//Nombre de cellules du clavier
var modeDegrade = true;		//Permet de savoir si on est en mode dégradé (par défaut) ou pavé numérique
var libelle_mvs_mdp = "Veuillez saisir un mot de passe valide.";
var libelle_mvs_id = "Veuillez saisir un identifiant valide.";
var objDraggable = false;


function envoyer(){
	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) ){
				var frm = document.getElementById(ID_FORMULAIRE);
				if (!frm.onsubmit || frm.onsubmit())
					frm.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();
			creeriFrame();
		}
}

/*
 * 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(){
	if(document.getElementById("pavenum")){
		var divPavenum = document.getElementById("pavenum")
		divPavenum.className = "classique";
		divPavenum.style.width = "223px";
		divPavenum.style.height = "185px";
	}
	if(document.getElementById("pavenum_iframe")){
		var divIFrame = document.getElementById("pavenum_iframe")
		divIFrame.className = "classique";
		divIFrame.style.width = "223px";
		divIFrame.style.height = "185px";
	}
	return "AGRANDIR";
}

function agrandir(){
	if(document.getElementById("pavenum")){
		var divPavenum = document.getElementById("pavenum")
		divPavenum.className = "accessible";
		divPavenum.style.width = "458px";
		divPavenum.style.height = "385px";
	}
	if(document.getElementById("pavenum_iframe")){
		var divIFrame = document.getElementById("pavenum_iframe")
		divIFrame.className = "accessible";
		divIFrame.style.width = "458px";
		divIFrame.style.height = "385px";
	}
	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(verifPass(pass)){
		document.getElementById(CHAMP_PASS_CLIENT).value = document.getElementById("pavenum_pass").value;
		var frm = document.getElementById(ID_FORMULAIRE);
		if (!frm.onsubmit || frm.onsubmit())
			frm.submit();
	}
	else{
		alert(libelle_mvs_mdp);
	}
}

function fermerPaveNumerique(){
	document.getElementById("pavenum_pass").value = "";
	document.getElementById("pavenum").style.visibility = "hidden";
	if(document.getElementById("pavenum_iframe")){
		document.getElementById("pavenum_iframe").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=yes, menubar=no, location=no, scrollbar=yes, width=650, height=280, 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(){
	objDraggable = new Draggable("pavenum", {starteffect:'', endeffect:'', change:ajusteriFrame});
}

function creeriFrame(){
	var parentDivPavenum = document.getElementById("pavenum").parentNode;
	if (!document.getElementById("pavenum_iframe")) {		
		var newNode = document.createElement("iFrame");
		newNode.setAttribute("id", "pavenum_iframe");
		newNode.setAttribute("src", "javascript:;");
		newNode.style.visibility = "visible";
		newNode.className = "classique";
		parentDivPavenum.appendChild(newNode);
	}
	else{
		document.getElementById("pavenum_iframe").style.visibility = "visible";
	}
}

function ajusteriFrame(objDraggable){
	if(testerNavigateurIE6()){
		var divPavenum = document.getElementById("pavenum");
		var diviFrame = document.getElementById("pavenum_iframe");
		try {
			/*iFrameDiv.style.width = pickerDiv.offsetWidth;
			iFrameDiv.style.height = pickerDiv.offsetHeight;*/
			diviFrame.style.top = divPavenum.style.top;
			diviFrame.style.left = divPavenum.style.left;
		} catch(e) {
			alert(e);
		}
	}
}

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);
}