
/*
AJAX REQUEST 
*/

var XMLHttpFactories = [
    function () {return new XMLHttpRequest()},
    function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function createXMLHTTPObject() {
   var xmlhttp = false;
   for (var i=0;i<XMLHttpFactories.length;i++) {
           try{
                  xmlhttp = XMLHttpFactories[i]();
          }
          catch (e) {
                  continue;
          }
          break;
    }
    return xmlhttp;
}

function sendRequest(url,callback,postData) {
    var req = createXMLHTTPObject();
    if (!req) return;
    var method = (postData) ? "POST" : "GET";
    req.open(method,url,true);
    req.setRequestHeader('User-Agent','XMLHTTP');
    if (postData)
           req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    req.onreadystatechange = function () {
           if (req.readyState != 4) return;
           if (req.status != 200 && req.status != 304) {
                   alert('HTTP error ' + req.status);
                   return;
           }
           callback(req);}
    if (req.readyState == 4) return;
    req.send(postData);
}

/*
FORM STATEMENT FUNCTIONS
*/

function getFlashObject ( pAnim )
{
	if (navigator.appName.indexOf("Microsoft") != -1) return window[pAnim]; else return document[pAnim];
}

// get  the selected hairdresser ID form flash file
function getVoteId()
{
	var r = getFlashObject("movie").getVoteCallBack();
	return r ;
}

//hide form and inform Flash to show the following page.
// it must be call as login response and registration response
// pBool = true for identifying successfully and loging successfully 
function identifySuccess( pBool )
{
	hideForm("form_login");
	hideForm("form_inscription");
	
	getFlashObject("movie").RegistrationSuccessCallBack( pBool );
}

// It must be an ajax function that get votes from DB for the selected ID.
function getVotesNumberFromDB(voteId) {

	sendRequest("votes.php", getVotesCallBack, "id="+voteId ) ;
	
}

function getVotesCallBack(req) {

	var nbVotes = req.responseText ;
	
	//alert( "getVotesCallBack ::: nbVotes = " + nbVotes );
	
	getFlashObject("movie").setVoteAsynchroneCallBack(nbVotes);
	
}

function sendLogin(postStr) {

	sendRequest("login.php", sendLoginCallBack, postStr) ;
	
}

function sendLoginCallBack(req) {

	var response =  req.responseText ;
	
	if( response == "true" ) {
	
		identifySuccess( true );
		
	} else {
	
		elm_alerts.innerHTML =  req.responseText ;
		
	}
	
}

function sendPassword(postStr) {

	sendRequest("password.php", sendPasswordCallBack, postStr) ;
	
}

function sendPasswordCallBack(req) {

	var response =  req.responseText ;
	
	if ( response == "true" ) {
	
		showLoginForm();
		
	} else {
	
		if ( req.responseText == "UNKNOWN_USER" ) {
	
			elm_alerts.innerHTML =  "Utilisateur inconnu" ;
			
		} else {
		
			elm_alerts.innerHTML =  req.responseText ;
		
		}
		
	}
	
}

function sendRegistration(postStr) {

	sendRequest("registration.php", sendRegistrationCallBack, postStr) ;
	
}

function sendRegistrationCallBack(req) {

	var response =  req.responseText ;
	
	if ( response == "true" ) {
	
		identifySuccess( true );
		
	} else {
	
		elm_alerts.innerHTML =  req.responseText ;
		
	}
	
}

window.onload = function(){
	
	// test ajax request
	var supportCheck = document.createElement && document.getElementsByTagName && createXMLHTTPObject();
    if (!supportCheck) {
		alert("Votre navigateur ne supporte pas les requêtes AJAX");
		return;
	}
	
	var btn_sinscrire =  document.getElementById('btn_sinscrire');
	var btn_mdp =  document.getElementById('btn_mdp');
	var btn_ok_login =  document.getElementById('btn_ok_login');
	var btn_ok_mdp =  document.getElementById('btn_ok_mdp');
	var btn_valider =  document.getElementById('btn_valider');
	
	btn_sinscrire.onclick = function(){
		showRegistrationForm();
		return false;
	}
	btn_mdp.onclick = function(){
		showPasswordForm();
		return false;
	}
	btn_ok_login.onclick = function(){
		checkLoginForm();
		return false;
	}
	btn_ok_mdp.onclick = function(){
		checkMdpForm();
		return false;
	}
	btn_valider.onclick = function(){
		 checkRegistrationForm();
		return false;
	}
}

var elm_alerts;

function checkLoginForm(){

	var f_form_login = document.getElementById('f_form_login');
	var c_f_login = document.getElementById('c_f_login');
	var c_f_mdp = document.getElementById('c_f_mdp');
	var elm_p = f_form_login.getElementsByTagName('p');
	var alerts = "";
	for(i = 0 ; i <= elm_p.length; i++){
		if (elm_p[i].className == "alerts") {
			elm_alerts = elm_p[i];
			break;
		}
		else continue;
	}
	if(!isEmail(c_f_login)) alerts += "Adresse E-mail invalide.";
	if (isEmpty(c_f_mdp)) alerts += " Le mot de passe est obligatoire.";
	if (alerts == "") {
	
		var postStr = "voteId=" + getVoteId() +"&Username="+encodeURIComponent(c_f_login.value)+"&Password="+encodeURIComponent(c_f_mdp.value) ;
		 sendLogin( postStr );
		//showRegistrationForm();
	}
	else {
		elm_alerts.innerHTML = alerts;
	}
}

function checkMdpForm(){
	var f_form_mdp = document.getElementById('f_form_mdp');
	var c_f_email = document.getElementById('c_f_email');
	var elm_p = f_form_mdp.getElementsByTagName('p');
	var alerts = "";
	for(i = 0 ; i <= elm_p.length; i++){
		if (elm_p[i].className == "alerts") {
			elm_alerts = elm_p[i];
			break;
		}
		else continue;
	}
	if(!isEmail(c_f_email)) alerts += "Adresse E-mail invalide.";
	if (alerts == "") {
		var postStr = "Username="+encodeURIComponent(c_f_email.value) ;
		sendPassword(postStr);
	}
	else {
		elm_alerts.innerHTML = alerts;
	}
}

function checkRegistrationForm(){

	var f_form_inscription = document.getElementById('f_form_inscription');
	var c_nom = document.getElementById('c_nom');
	var c_prenom = document.getElementById('c_prenom');
	var c_email = document.getElementById('c_email');
	var c_mdp = document.getElementById('c_mdp');
	var c_mdp2 = document.getElementById('c_mdp2');
	var c_date_jour  = document.getElementById('c_date_jour');
	var c_date_mois = document.getElementById('c_date_mois');
	var c_date_annee = document.getElementById('c_date_annee');
	var c_adresse = document.getElementById('c_adresse');
	var c_cp = document.getElementById('c_cp');
	var c_ville = document.getElementById('c_ville');
	var c_telephone = document.getElementById('c_telephone');
	var c_offres = document.getElementById('c_offres');
	var c_contacter = document.getElementById('c_contacter');
	
	var elm_p = f_form_inscription.getElementsByTagName('p');
	var alerts = "";
	for(i = 0 ; i <= elm_p.length; i++){
		if (elm_p[i].className == "alerts") {
			elm_alerts = elm_p[i];
			break;
		}
		else continue;
	}

	if(!getSelectedRadioValue(document.f_form_inscription.c_civilite)) alerts += "La civilit&eacute; est obligatoire.";
	if (isEmpty(c_nom)) alerts += " Le nom est obligatoire.";
	if (isEmpty(c_prenom)) alerts += " Le pr&eacute;nom est obligatoire."; 
	if (isEmpty(c_email)) alerts += "Adresse E-mail invalide.";
	if (isEmpty(c_mdp)) alerts += " Mot de passe obligatoire.";
	if (isEmpty(c_mdp2)) alerts += " Mot de passe oblatoire.";
	if (c_mdp.value != c_mdp2.value) alerts += " Les mots de passe ne correspondent pas.";
	if (c_mdp.value.length < 3 ) alerts += " Le mot de passe doit comporter au moins 6 caractères.";
	if (!getSelectedRadioValue(document.f_form_inscription.c_newsletter)) alerts += " Inscription &agrave; la newsletter obligatoire.";
	
	if (c_date_jour.value == "") alerts += " Date de naissance invalide.";
	if (c_date_mois.value == "") alerts += " Date de naissance invalide.";
	if (c_date_annee.value == "") alerts += " Date de naissance invalide.";
	
	if (isEmpty(c_adresse)) alerts += " Adresse obligatoire.";
	if (!isNumber(c_cp.value)) alerts += "Code postal invalide.";
	if (c_cp.value.length < 5 ) alerts += " Code postal obligatoire.";
	if (isEmpty(c_ville)) alerts += " ville obligatoire.";
	if ((!isNumber(c_telephone.value)) || (c_telephone.value.length < 10 )) alerts += " Num&eacute;ro de t&eacute;l&eacute;phone invalide";
	

	if (alerts == "") {
	
		var postStr = "voteId=" + getVoteId() ;
		postStr += "&Email=" + encodeURIComponent(c_email.value) ;
		postStr += "&Password=" + encodeURIComponent(c_mdp.value) ;
		postStr += "&Title=" + getSelectedRadioValue(document.f_form_inscription.c_civilite);
		postStr += "&FirstName=" + encodeURIComponent(c_prenom.value) ;
		postStr += "&LastName=" + encodeURIComponent(c_nom.value );
		postStr += "&BirthDay=" + c_date_jour.value ;
		postStr += "&BirthMonth=" + c_date_mois.value ;
		postStr += "&BirthYear=" + c_date_annee.value ;
		postStr += "&ProgramOpt=" + getSelectedRadioValue(document.f_form_inscription.c_newsletter);
		postStr += "&Address=" + encodeURIComponent(c_adresse.value);
		postStr += "&ZipCode=" + encodeURIComponent(c_cp.value);
		postStr += "&Town=" + encodeURIComponent(c_ville.value);
		postStr += "&Phone=" + encodeURIComponent(c_telephone.value);
		postStr += "&PartnersOpt=" + c_offres.value;
		postStr += "&CorporateOpt=" + c_contacter.value;
		sendRegistration(postStr);
		
	}
	else {
		elm_alerts.innerHTML = alerts;
	}
}

function showRegistrationForm()
{	
		hideForm("form_login");
		hideForm("form_mdp");
		//showForm("form_inscription");
		getFlashObject("movie").showRegistrationFormCallBack();
}

function showLoginForm()
{	
	hideForm("form_inscription");
	hideForm("form_mdp");
	showForm("form_login");
}

function showPasswordForm()
{	
	hideForm("form_inscription");
	hideForm("form_login");
	showForm("form_mdp");
}

function showForm(id)
{
	document.getElementById("l_voteId").value = getVoteId();
	document.getElementById("i_voteId").value = getVoteId();
	
	//alert("I vote for hairdresser = " + getVoteId() );
	document.getElementById(id).style.display = "block";
}
			
function hideForm(id)
{
	document.getElementById(id).style.display = "none";
}



/*
CHECK FORM FUNCTIONS
*/

function afficheValue (id){
	var obj;
	obj = this.id;
	obj = document.getElementById(obj);
	var ancien_texte = obj.value;
	obj.value = ancien_texte;
	return false;
}

function masqueValue (id){
	var obj;
	obj = this.id;
	obj = document.getElementById(obj);
	obj.value = '';
	return false;
}


function getSelectedRadioValue (radiobutton){
	var returnValue = "";
		if (radiobutton.value != null){
		returnValue = radiobutton.value;
	} else {
		for (i=0;i<radiobutton.length;i++){
	 	   	if (radiobutton[i].checked==true) {
	 	   		returnValue=radiobutton[i].value;
	 	   	}
		}
	}
	return returnValue;
}

function isEmail(elm) {
        if ((elm.value.indexOf("@") + "" != "-1"
		&& elm.value.indexOf("@") + "" != "0"
        && (elm.value.lastIndexOf(".") > elm.value.indexOf("@")+1)
		&& (elm.value.lastIndexOf(".") < elm.value.length-2)
		&& (isValidChar(elm) == true) && (isValidExt(elm) == true)
        && elm.value != "")) return true;
        else return false;
}

function isSelected(elm) {
        if (elm.value==0) return true;
        else return false;
}

function isNumber(elm) {
	var elmstr = elm.value + "";
	if (elmstr.search(/^([0-9])+$/) == -1) return true;
	return false;
}

function isValidChar(elm) {
	var elmstr = elm.value + "";
	elmstr = elmstr.substring(0,elmstr.indexOf("@"));
	var re = /[\s\'\"\|\?\,\;\:\!\/\`\\\[\]]/gi;
	if (elmstr.search(re) != -1  ) return false;
	return true;
}

function isValidExt(elm) {
	var elmstr = elm.value +"";
	elmstr = elmstr.substring(elmstr.lastIndexOf(".")+1, elmstr.length);
	var re1 = /[0-9]/gi;
	var re2 = /[\s\'\"\|\?\,\;\:\!\/\`\\\[\]]/gi;
	if ((elmstr.search(re1) != -1 )||(elmstr.search(re2) != -1 )) return false;
	return true;
}

function isValidStr(elm) {
	var elmstr = elm.value +"";
	var re1 = /[0-9]/gi;
	if ((elmstr.search(re1) == -1 )) return false;
	return true;
}

function isEmpty(elm) {
	var elmstr = elm.value + "";
	if (elmstr.length == 0) return true;
	return false;
}

function isChecked(elm) {
	var n = elm.length; 
	var checkvalue = ''; 
		for (i=0; i<n; i++) { 
			if (elm[i].checked) { 
				checkvalue =elm[i].value; break; 
			} 
		} 
		if(checkvalue == '') { 
			return false;
		}
		else{
			return true;
		}
}