MIN_LONG_PASSWORD = 4;
MIN_LONG_USERNAME = 4;

function validarRegistroUsuario(form) {
	trimForm(form);
	form.emailUser.value = form.emailUser.value.toLowerCase(); 
	
	if (!isCamposRegistroUsuarioRellenados(form)) {
		alert(TXT_FILL_MANDATORY_ITEMS); // "Rellene todos los campos necesarios."
		return false;
	}
	if (!valEmail(form.emailUser)) {		
		alert(TXT_WRONG_EMAIL); // "Email no válido."
		form.emailUser.focus();
		return false;
	}
	if (!valPassword(form.username)) {
		alert(TXT_WRONG_USERNAME); // "Nom usuari no vàlid."
		form.username.focus();
		return false;
	}
	if (form.username.value.length < MIN_LONG_USERNAME) {
		alert(TXT_PWD_MIN + MIN_LONG_USERNAME + TXT_CHARS);
		form.username.focus();
		return false;
	}
	if (form.password.value.length < MIN_LONG_PASSWORD) {
		alert(TXT_PWD_MIN + MIN_LONG_PASSWORD + TXT_CHARS);
		form.password.focus();
		return false;
	}
	if (!valPassword(form.password)) {
		alert(TXT_WRONG_PASSWORD); // "password no vàlid."
		form.password.value = "";
		form.confirmarPassword.value = "";
		form.password.focus();
		return false;
	}	
	if (form.password.value != form.confirmarPassword.value) {
		alert(TXT_PWD_CONFIRM_DONT_MATCH); // "El password y su confirmación no coinciden."
		form.password.value = "";
		form.confirmarPassword.value = "";
		form.password.focus();
		return false;
	}
	
	if (form.politicaLeida.checked != true) {
		alert(TXT_AVIS_LEGAL); // "heu de llegir l'avis legal"
		form.politicaLeida.focus();
		return false;
	}
	
	return true;
}

function isCamposRegistroUsuarioRellenados(form) {
	if (form.nombre.value == "") {		
		form.nombre.focus();
		return false;
	}
	if (form.apellidos.value == "") {	
		form.apellidos.focus();
		return false;
	}
	if (form.emailUser.value == "") {	
		form.emailUser.focus();
		return false;
	}
	if (form.username.value == "") {		
		form.username.focus();
		return false;
	}
	if (form.password.value == "") {	
		form.password.focus();
		return false;
	}
	if (form.confirmarPassword.value == "") {	
		form.confirmarPassword.focus();
		return false;
	}
	//Datos profesionales
	if (form.profesional.checked == true) {
		if (form.empresa.value == "") {	
			form.empresa.focus();
			return false;
		}
		/*if (form.dirEmpresa.value == "") {	
			form.dirEmpresa.focus();
			return false;
		}*/
	} else {
    form.profesional.value=false;
  }
	if (!form.recibirCorreo.checked) {
    form.recibirCorreo.value =false;
  }

	return true;
}	

/** ajax per comprovar si el nom d'usuari es valid */

function validateUserId() {
    var target = document.getElementById("username");
	//check if it's username is valid
    var form = document.getElementById("formReg") || document.forms['formReg'];
	  if (!valPassword(form.username) || form.username.value.length < MIN_LONG_USERNAME) {
		alert(TXT_WRONG_USERNAME); // "Nom usuari no valid."
        //form.username.value = "";
		//form.username.focus();
        setMessageUsingDOM("2"); //sin mensaje
     } else {
        //var url = "/web/content/php/registre/validate_id.php?id=" + escape(target.value);    
		var params = "usrname="+escape(target.value);
		var url = "/web/content/php/registre2/val_usrname.php";
        usernameXMLHttpObj.open("POST", url, true); 
        usernameXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
        usernameXMLHttpObj.send(params);
        usernameXMLHttpObj.onreadystatechange = processRequest;
    }
}

/** ajax per comprovar si el e-mail ja existeix */

function checkEmail() {
    var target = document.getElementById("emailUser");
    var form = document.getElementById("formReg") || document.forms['formReg'];
    form.emailUser.value = form.emailUser.value.toLowerCase();
	  if (form.emailUser.value == "" || !valEmail(form.emailUser)) {
		alert(TXT_WRONG_EMAIL); // Camp email buit o no vàlid.
		return false;
     } else {
		var params = "usrname="+escape(target.value);
		var url = "/web/content/php/registre2/val_email.php";
        usernameXMLHttpObj.open("POST", url, true); 
        usernameXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
        usernameXMLHttpObj.send(params);
        usernameXMLHttpObj.onreadystatechange = processRequest;
    }
}

function processRequest() {
    if (usernameXMLHttpObj.readyState == 4) {
        if (usernameXMLHttpObj.status == 200) {
            var message = usernameXMLHttpObj.responseText;
            //alert(message);
            setMessageUsingDOM(message);
        }
    }
}

function setMessageUsingDOM(message) {
     var userMessageElement = document.getElementById("userIdMessage");
	 var EmailElement = document.getElementById("EmailMessage");
	 var linkSolucions = document.getElementById("txtSolucions");
     var messageText ="";
     if (message == "0") { // No existeix
         userMessageElement.style.color = "green";
         messageText = TXT_USERNAME_VALID;
         enableSubmit("enviar");
         //alert(messageText);
     } else if(message == "1"){ // Existeix
        //form = document.getElementById("formReg") || document.forms[0];
        userMessageElement.style.color = "red";
        messageText = TXT_USERNAME_EXISTS;
        disableSubmit("enviar");
		form.username.focus();
     } else if(message == "2"){ // No es vàlid
		userMessageElement.style.color = "red";
		messageText = TXT_WRONG_USERNAME2;
		disableSubmit("enviar");
		form.username.focus();
     } else if(message == "3"){ // Email existeix
		EmailElement.style.color = "red";
		messageText = TXT_EMAIL_EXISTS;
		linkSolucions.style.color = "red";
		linkSolucions.style.visibility="visible";
		disableSubmit("enviar");
		form.emailUser.focus();
     } else if(message == "4"){ // Email NO existeix
		EmailElement.style.color = "green";
		messageText = TXT_EMAIL_VALID;
		linkSolucions.style.visibility="hidden";
		enableSubmit("enviar");
     } else if(message == "5"){ // Email NO valid
 		EmailElement.style.color = "red";
 		messageText = TXT_WRONG_EMAIL;
 		disableSubmit("enviar");
 		form.emailUser.focus();
	}else{
		userMessageElement.style.color = "red";
		messageText=TXT_BBDD_ERROR;
		disableSubmit("enviar");
		form.username.focus();
	 }
     var messageBody = document.createTextNode(messageText);
     // if the messageBody element has been created simple replace it otherwise
     // append the new element
     if(message == "3" || message == "4"){
		if (EmailElement.childNodes[0]) {
			EmailElement.replaceChild(messageBody, EmailElement.childNodes[0]);
		} else {
			EmailElement.appendChild(messageBody);
		}		
	 }else{
		if (userMessageElement.childNodes[0]) {
			userMessageElement.replaceChild(messageBody, userMessageElement.childNodes[0]);
		} else {
			userMessageElement.appendChild(messageBody);
		}
	 }
 }

function RegisterUser(){
  var form = document.getElementById("formReg") || document.forms['formReg'];
  if (validarRegistroUsuario(form)) {
	disableSubmit("enviar"); //per evitar q els usuaris facin click mes d'un cop al boto enviar
    // open socket connection
    usernameXMLHttpObj.open('POST','/web/content/php/registre2/registre.php',true);
  	// set form http header
  	usernameXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
  	// get form values and send http request
    usernameXMLHttpObj.send(getFormValues(form));
  	usernameXMLHttpObj.onreadystatechange=registrationStatusChecker;
  }
}
// check status of user registration requester object
function registrationStatusChecker(){
    // if user registration request is completed
    if(usernameXMLHttpObj.readyState==4){
        if(usernameXMLHttpObj.status==200){
			// if status == 200 display server response
			displayRegServerResponse(); 
        }
        else{
            alert('Failed to get response :'+usernameXMLHttpObj.statusText);
        }
    }
}
// display server response
function displayRegServerResponse(){
	//redirect to homepage
	switch(usernameXMLHttpObj.responseText) {
    case '1':
      alert(TXT_EMAIL_ENVIAT);
	  window.location = "http://www.icc.cat";
      break;
    case '-1':
      alert(TXT_FORMULARI_NOVALID);
      break;
    case '0':
      alert(TXT_USERNAME_EXISTS);
      break;
    default:
      alert(usernameXMLHttpObj.responseText);
	}
}
function disableSubmit(whichButton)
{
    if (document.getElementById)
    {
        // this is the way the standards work
        document.getElementById(whichButton).disabled = true;
    }
    else if (document.all)
    {
        // this is the way old msie versions work
        document.all[whichButton].disabled = true;
    }
    else if (document.layers)
    {
        // this is the way nn4 works
        document.layers[whichButton].disabled = true;
    }
}
function enableSubmit(whichButton)
{
    if (document.getElementById)
    {
        // this is the way the standards work
        document.getElementById(whichButton).disabled = false;
    }
    else if (document.all)
    {
        // this is the way old msie versions work
        document.all[whichButton].disabled = false;
    }
    else if (document.layers)
    {
        // this is the way nn4 works
        document.layers[whichButton].disabled = false;
    }
}
function getXMLHttpRequestObject(){
	var xmlobj;
    // check for existing requests
    if(xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.readyState!=4){
        xmlobj.abort();
    }
    try{
        // instantiate object for Mozilla, Nestcape, etc.
        xmlobj=new XMLHttpRequest();
    }
    catch(e){
        try{
            // instantiate object for Internet Explorer
            xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e){
            // Ajax is not supported by the browser
            xmlobj=null;
            return false;
        }
    }
	return xmlobj;
}
// get form values
function getFormValues(fobj){
    var str='';
    for(var i=0;i< fobj.elements.length;i++){
        str+=fobj.elements[i].name+'='+ escape(fobj.elements[i].value)+'&';
    }
    str=str.substr(0,(str.length-1));
    return str;
}	

