var typeError =
{
	ok : "ok",
	error : "ko",
	codeSphere : "codeSphere",
	echecCreationUser : "echecCreationUser",
	isNotSinglePseudonym : "isNotSinglePseudonym",
	openForSigningIn : "openForSigningIn"
}

/*
 * test of function
 */
function alertParam(param) {
	alert("paramètre : " + param);
}

function redirectToForgottenPassword(pseudonymeField){
	var pseudo = document.getElementById(pseudonymeField).value;
	if(pseudo != ""){
		window.location.replace("/password_forgotten.php?pseudo=" + pseudo);
	} else {
		alert("Veuillez rentrer votre adresse e-mail pour recevoir votre nouveau mot de passe.");
	}
}

function formValidationPurchase() {
	
	var lastName = "";
	var firstName = "";
	var email = "";
	
	var inputToCheck = document.getElementById('user_lastName_input'); 
  	if (inputToCheck.value=='') {
    	alert ('Merci d\'indiquer votre nom.');
    	inputToCheck.focus();
    	return false;
  	} else {
  		
  		lastName = inputToCheck.value;
  		
    	var inputToCheck = document.getElementById("user_firstName_input");
    	if (inputToCheck.value=="") {
      		alert ("Merci d'indiquer votre prénom");
     	 	inputToCheck.focus();
      		return false;
    	} else {
    		
    		firstName = inputToCheck.value;
    		
      		var inputToCheck = document.getElementById("user_pseudonym_input");
      		if (inputToCheck.value=="") {
        		alert ("Merci de choisir un identifiant");
        		inputToCheck.focus();
        		return false;
      		} else {
      			
        		var inputToCheck = document.getElementById("user_email_input");
        		var inputToCheckBis = document.getElementById("user_email_bis_input");
        		if (inputToCheck.value=="" || inputToCheck.value!=inputToCheckBis.value) {
          			alert ("Merci d'indiquer votre email et de le confirmer");
          			inputToCheck.focus();
          			return false;
        		} else {
        			
        			email = inputToCheck.value;
        			
          			var inputToCheck = document.getElementById("user_password_input");
          			var inputToCheckBis = document.getElementById("user_password_bis_input");
          			if (inputToCheck.value=="" || inputToCheck.value!=inputToCheckBis.value) {
            			alert ("Merci de choisir un mot de passe et de le confirmer");  
            			inputToCheck.focus();
            			return false;
          			} else {
          				
            			var inputToCheck = document.getElementById("cgv_acceptance_input");
            			if (inputToCheck.checked !== true) {
             			 	alert ("L'acceptation des conditions générales de vente est nécessaire");
              				return false;
            			}
          			}
	        	}
	      	}
	    }
	}
  	
  	document.getElementById("myButtonActionPurchase").style.visibility = "hidden";
	return true;	
}

function initBodyPurchase() {
	  document.getElementById('user_lastName_input').focus();
}

function formValidationContact(){
	
	var lastName = "";
	var firstName = "";
	var email = "";

	var inputToCheck = document.getElementById('lastName_Contact'); 
  	if (inputToCheck.value=='') {
    	alert ('Merci d\'indiquer votre nom.');
    	inputToCheck.focus();
    	return false;
  	} else {
  		
  		lastName = inputToCheck.value;
  		
    	var inputToCheck = document.getElementById("firstName_Contact");
    	if (inputToCheck.value=="") {
      		alert ("Merci d'indiquer votre prénom");
     	 	inputToCheck.focus();
      		return false;
    	} else {

    		firstName = inputToCheck.value;
    		
    		var inputToCheck = document.getElementById("email_Contact");
    		if (inputToCheck.value=="") {
      			alert ("Merci d'indiquer votre email");
      			inputToCheck.focus();
      			return false;
    		} else {
    			
    			email = inputToCheck.value;
    			
    		}
    	}
  	}
  
	return true;
}

function cyberciteSendData(form, nom, prenom, email){
	var id_site= 3229;
	var id_vente='';
	var contenu='';
	var montant='';

	contenu += generer_contenu('Nom', nom);
	contenu += generer_contenu('Prenom', prenom);
	contenu += generer_contenu('Email', email);

	tracking_cybercite_extd(id_site, id_vente, contenu, montant,'div_trackingCc');
	setTimeout(function(){form.submit();}, 3000);
}

function createXhr() {
	try {
		  return new ActiveXObject("Microsoft.XMLHTTP");    // Essayer Internet Explorer 
		}catch(e){
			return new XMLHttpRequest();  // Autres navigateurs
		}
}

function callSynchronously(params, url) {
	var xhr = createXhr();
	
	xhr.open('POST', url, false);                  
	
	//Send the proper header information along with the request
	xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xhr.setRequestHeader("Content-length", params.length);
	xhr.setRequestHeader("Connection", "close");

	try {
		xhr.send(params);
		if(xhr.readyState == 4 && xhr.status == 200) {
			return codeError(xhr.responseText);
		}
	} catch (e) {
		 //alert("An exception occurred in the script. Error name: " + e.name + ". Error message: " + e.message);
		return codeError(e.message);
	}
} 

function codeError(code){
	switch(code){
		case typeError.ok:
			return typeError.ok;
		case typeError.error:
			return typeError.error;
		case typeError.isNotSinglePseudonym:
			return typeError.isNotSinglePseudonym;
		case typeError.idExiste:
			return typeError.idExiste;
		case typeError.codeSphere:
			return typeError.codeSphere;
		case typeError.openForSigningIn:
			return typeError.openForSigningIn;
		default:
			return typeError.error;
	}
}

function startWol(splashElement, callRestService, callRestServiceCookie, redirectPjvUrl){
	showSplash(splashElement, 'feedBackMessageErrorHeader');
	
	var pseudo = document.lms_access_form.pseudonym.value;
	var pass = document.lms_access_form.password.value;
	
	return redirectWol(splashElement, callRestService, callRestServiceCookie, redirectPjvUrl, pseudo, pass);
}

function startFreeTestAfterBilan(divAbsolute, urlSendEmail, callRestService, callRestServiceCookie, redirectPjvUrl){
	document.getElementById(divAbsolute).style.display = 'block';
	var pseudo = document.sendBilanAndRedirectUrl.user_pseudonym.value;
	var pass = document.sendBilanAndRedirectUrl.user_password.value;
	var mail = document.sendBilanAndRedirectUrl.email.value;
	var userId = document.sendBilanAndRedirectUrl.user_id.value;
	
	var params = "form_email=1&email=" + encodeURIComponent(mail) + "&user_id=" + encodeURIComponent(userId);
	if(mail != ""){
		if(callSynchronously(params, urlSendEmail) != typeError.ok){
			document.getElementById(divAbsolute).style.display = 'none';
			return showFeedBackErrorMessage(null, "feedBackMessageErrorBilan", "Probl&egrave;me lors de l'envoie du bilan."); 
		}
	}
	if(redirectWol(null, callRestService, callRestServiceCookie, redirectPjvUrl, pseudo, pass) != true){
		document.getElementById(divAbsolute).style.display = 'none';
		return false;
	}
	return true;
}

function redirectWol(splashElement, callRestService, callRestServiceCookie, redirectPjvUrl, pseudonym, password){
    var params = "pseudonym=" + encodeURIComponent(trim(pseudonym)) + "&password=" + encodeURIComponent(trim(password));
	if (callSynchronously(params, callRestService) == typeError.ok) {
		if (callSynchronously(params, callRestServiceCookie) == typeError.ok) {
			window.location = redirectPjvUrl; 
		}
	} else {
		return showFeedBackErrorMessage(splashElement, "feedBackMessageErrorHeader", "Les donn&eacute;es fournies ne suffisent pas &agrave; vous identifier. Essayez de vous identifier &agrave; nouveau.");
	}
	return false;
}

function startFreeTest(divAbsolute, createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl){
	document.getElementById(divAbsolute).style.display = 'block';
	if(checkPseudonymAndRedirectWol(createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl, null) == false){
		document.getElementById(divAbsolute).style.display = 'none';
	}
	return false;
}

function startFreeTestAuto(createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl){
	checkPseudonymAndRedirectWol(createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl, null);
}

function checkPseudonymAndRedirectWol(createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl, parameters){
	var pwd = "demo";
	var pseudo = "joakim.ribier@woonoz.com";

	var cpt = 0;
	var cptLimit = 10000;
	while(cpt != cptLimit){
		cpt += 1;
		
		var params = "pseudonym=" + encodeURIComponent(pseudo) + "&password=" + encodeURIComponent(pwd);
		if(parameters != null){
			params = params + "&" + parameters;
		}
		
		switch(callSynchronously(params, createUserUrl)){
			case typeError.ok :
				cpt = cptLimit;
				break;
			case typeError.error :
				cpt = cptLimit;
				break;
			case typeError.isNotSinglePseudonym :
				// try again
				pwd = generatePassword(10);
				pseudo = "demo_" + generatePassword(10);
				break;
			default:
				break;
		}		
	}
	return redirectWol(null, callRestService, callRestServiceCookie, redirectPjvUrl, pseudo, pwd);
	
}

function startTest(splashElement, createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl){
	showSplash(splashElement, 'feedBackMessageError');
	
	var user_lastname = document.test_access_form.user_lastname.value;
	var user_firstname = document.test_access_form.user_firstname.value;
	var user_email = document.test_access_form.user_email.value;
	if (user_lastname == "") {
  		showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez saisir correctement les champs (votre nom).");
  		document.test_access_form.user_lastname.focus();
    	return false;
  	}
  	else {
	    if (user_firstname == "") {
	    	showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez saisir correctement les champs (votre prénom).");
	    	document.test_access_form.user_firstname.focus();
	      	return false;
	    }
    	else {
  			if (user_email == "") {
  				showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez saisir correctement les champs (votre mail).");
  				document.test_access_form.user_email.focus();
		        return false;
		   	}
    	}
  	}	
	
  	var account_id = document.test_access_form.account_id.value;
  	
	var params = "user_lastname=" + encodeURIComponent(user_lastname)
	    + "&user_firstname=" + encodeURIComponent(user_firstname) 
	    + "&user_email=" + encodeURIComponent(user_email) 
	    + "&account_id=" + encodeURIComponent(account_id);
	
	return checkPseudonymAndRedirectWol(createUserUrl, callRestService, callRestServiceCookie, redirectPjvUrl, params);
}

function startRegisterUserToArea(splashElement, lmsRegisterUrl, callRestService, callRestServiceCookie, redirectPjvUrl){
	showSplash(splashElement, 'feedBackMessageError');
	
	var task_id = document.form_register_user.task_id.value;
	var area_ref = trim(document.form_register_user.area_ref.value);
	var user_nom_membre = trim(document.form_register_user.user_nom_membre.value);
	var user_prenom_membre = trim(document.form_register_user.user_prenom_membre.value);
	var user_pseudo_membre = trim(document.form_register_user.user_pseudo_membre.value);
	var user_email_membre = trim(document.form_register_user.user_email_membre.value);
	var user_email_bis = trim(document.form_register_user.user_email_bis.value);
	var user_password_membre = trim(document.form_register_user.user_password_membre.value);
	var user_password_bis = trim(document.form_register_user.user_password_bis.value);
	
	if(area_ref == "" || user_nom_membre == "" || user_prenom_membre == "" || user_pseudo_membre == "" || user_email_membre == "" 
		|| user_email_bis == "" || user_password_membre == "" || user_password_bis == ""){
		return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez saisir correctement le formulaire.");
	}
	
	if(user_email_membre != user_email_bis){
		return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez confirmer votre e-mail.");
	}
	
	if(user_password_membre.toLowerCase() != user_password_bis.toLowerCase()){
		return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Veuillez confirmer votre mot de passe.");
	}
	
	var params = "task_id=" + encodeURIComponent(task_id) + "&area_ref=" + encodeURIComponent(area_ref) + "&user_nom_membre=" + encodeURIComponent(user_nom_membre) 
	    + "&user_prenom_membre=" + encodeURIComponent(user_prenom_membre) + "&user_pseudo_membre=" + encodeURIComponent(user_pseudo_membre)
	    + "&user_email_membre=" + encodeURIComponent(user_email_membre) + "&user_email_bis=" + encodeURIComponent(user_email_bis)
	    + "&user_password_membre=" + encodeURIComponent(user_password_membre) + "&user_password_bis=" + encodeURIComponent(user_password_bis);
	
	var code = callSynchronously(params, lmsRegisterUrl);
	switch(code){
		case typeError.ok:
			return redirectWol(splashElement, callRestService, callRestServiceCookie, redirectPjvUrl, user_pseudo_membre, user_password_membre);
			break;
		case typeError.codeSphere:
			return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Le code sphère n'existe pas.");
			break;
		case typeError.isNotSinglePseudonym:
			return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "L'identifiant existe déjà.");
			break;
		case typeError.echecCreationUser:
			return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Echec de la cr&eacute;ation de l'utilisateur.");
			break;
		case typeError.openForSigningIn:
			return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "L'inscription des utilisateurs &agrave; cette sph&egrave;re est ferm&eacute;e.");
			break;
		default:
			return showFeedBackErrorMessage(splashElement, "feedBackMessageError", "Les donn&eacute;es fournies ne suffisent pas &agrave; vous identifier. Essayez de vous identifier &agrave; nouveau.");		
	}
}

function generatePassword(limit, inclNumbers) {
	//date = new Date();
	
	var vowels = 'aeiou'.split('');
    var constonants = 'bcdfghjklmnpqrstvwxyz'.split('');
    var word = '', i, num;
    if (!limit) limit = 8;
    for (i = 0; i < (inclNumbers ? limit - 3 : limit); i++) {
        if (i % 2 == 0) {
            word += vowels[Math.floor(Math.random() * 4)];
        } else {
            word += constonants[Math.floor(Math.random() * 20)];
        }
    }

    if (inclNumbers) {
        num = Math.floor(Math.random() * 99) + '';
        if (num.length == 1) num = '00' + num;
        else if (num.length == 2) num = '0' + num;
        word += num;
    }
    
    //var a = word.substr(0, limit) + date.getTime();
    var a = word.substr(0, limit);
    return a;
}

function showFeedBackErrorMessage(splashElement, element, messageError){
	  hideSplash(splashElement, element);
	  document.getElementById(element).innerHTML = '<span style="color:red;font-weight:bold;font-family:tahoma;">' + messageError + '</span>';
	  return false;
}

function trim (myString){
	return myString.replace(/^\s+/g,'').replace(/\s+$/g,'');
}

function showSplash(splashElement, feedBackElement){
	if(feedBackElement != null){
		document.getElementById(feedBackElement).style.visibility = 'hidden';
	}
	document.getElementById(splashElement).innerHTML  = '<div id="load-gif"></div>';
}

function hideSplash(splashElement, element){
	if(splashElement != null){
		document.getElementById(element).style.visibility = 'visible';
		document.getElementById(splashElement).innerHTML  = '<input type="submit" value="valider" />';
	}
}