/********************************************************************************/
/*	FICHEIRO COAS FUNCIÓNS JAVASCRIPT PARA A COMPROBACIÓNS DE TEMAS DE USUARIO  */
/*  EMPRÉGASE A LIBRERÍA DE AJAX DWR											*/
/********************************************************************************/

/*
 * Este arquivo e parte de TVFarmaciaIglesias - www.farmaiglesias.com
 * Copyright (C) 2008 Enxenio S.L.
 *
 * == BEGIN LICENSE ==
 *
 * TVFarmaciaIglesias e software libre: vostede pode redistribuilo e/ou modificalo
 * baixo os termos da licenza GPL de GNU, tal e como publica a Free Software Foundation,
 * na version 3 da licenza ou (a sua eleccion) calquera version posterior.
 *
 * A aplicacion distribuese SEN GARANTIA DE NINGUN TIPO. Lea a Licenza GPL para mais detalles.
 *
 * Vostede deberia ter recibido unha copia da licenza GPL de GNU (arquivo COPYING.TXT). 
 * En caso contrario, pode consultala en http://www.gnu.org/licenses/gpl.html
 *
 * == END LICENSE ==
 *
 */

/*
Comproba se o nome de usuario está dispoñible.
*/
function isLoginAvailable(textbox){

	ocultardiv("loginAvalilable");
	ocultardiv("loginNotAvalilable");
	ocultardiv("mandatoryField");
	login = textbox.value;
	if(login==""){
	    mostrardiv("mandatoryField");
	}
	else{
		UserManager.isLoginAvailable(login, function(result){
			
			if(result){
			     mostrardiv("loginAvalilable");
			}
			else{
				mostrardiv("loginNotAvalilable");
			}
		
		});
	}
}

/**
Función que rechea o valor da provincia a partir do código postal.
Non se comproba se o código postal e incorrecto, xa que pode tratarse dun código
asociado a un país que non é españa, dos que non temos datos por agora.<b> 
Se non e correcto non se realiza ningunha acción.
*/
function fillGeograpicRegionSelect(textbox, showInsertOrder, freeShipmentCostPriceLimit){
		
		ocultardiv("zipCodeError");
		ocultardiv("zipCodeMandatory");
		zipCode = textbox.value;
		if(zipCode.length == 5){
				
				zipCodeId = zipCode.substring(0,2);
        		UserManager.getGeographicRegionByZipCodeId(zipCodeId, function(result){
        			if(result != null){
        			   changeSelected("geographicRegionId", result);
        			   calculateTotalOrderPrice(showInsertOrder, true, freeShipmentCostPriceLimit)
        			}
        		});
		}else if(zipCode.length == 0){
		      // amosase o erro de campo obrigatorio
		         mostrardiv("zipCodeMandatory");
			  }
}

/*
Comproba que a provincia especificada se corresponde co código postal.
*/
function checkZipCode(){
	
	ocultardiv("zipCodeError");
	ocultardiv("zipCodeMandatory");
	
	select = document.getElementById("geographicRegionId");
	zipCodeTextbox = document.getElementById("zipCode");
	zipCode =  zipCodeTextbox.value;
	
	if(select != null && zipCodeTextbox != null && (zipCode.length == 5)){
	     zipCodeId = zipCode.substring(0,2);
	     UserManager.checkZipCodeByGeographicRegion(select.value, zipCodeId, function(result){
	        if(!result){
	        	mostrardiv("zipCodeError");
	        }
	     
	     }); 
	}else if(zipCode.length == 0){
		mostrardiv("zipCodeMandatory");
	}
	else{
	    mostrardiv("zipCodeError");
	}
}

/*
Cando cambia un desplebable, establece o radiobutom correspondente
*/
function setRadioButtom(select){
		radioEs = document.getElementById("countryEs");
		radioOther = document.getElementById("countryOther");
        if(select.id == "geographicRegionId"){
               radioEs.checked = true;
               radioOther.checked = false;
        }
        else{
        	   ocultardiv("zipCodeError");
        	   radioEs.checked = false;
               radioOther.checked = true;
        }

}
/*
Comproba que a provincia especificada se corresponde co código postal, para
o radio buton de españa, no caso de que este esté seleccionado
*/
function checkZipCodeRadio(radioButtom){
   	ocultardiv("zipCodeError");
	ocultardiv("zipCodeMandatory");
	
   if(radioButtom.checked && radioButtom.id == "countryEs"){
   		checkZipCode();
   }else if (radioButtom.id == "countryOther"){
   			  zipCode =   document.getElementById("zipCode").value;
   			  if(zipCode.length == 0){
		      // amosase o erro de campo obrigatorio
		         mostrardiv("zipCodeMandatory");
			  }
   
   			}

}


/*
*Función que comproba a calidade do contrasinal
*/
function updatePasswordStrength(ningunha, baixa, regular, boa, alta){

	var password = document.getElementById("passwordValidate").value;
	var strength = 0;
	
	 // easy_guesses: palabras que non deberan ser utilizadas no contrasinal
	 // Non deberan ir password, shop, palabras continuas no email, nome de usuario
	  var easy_guesses = new Array();
	  easy_guesses.push('password');
	  easy_guesses.push('shop');
	  if(document.getElementById("email")){
	  	var email_words = document.getElementById("email").value.match(/\w+/g); // contiguous words contained in email
	  }
	  if (email_words)
	  easy_guesses = easy_guesses.concat(email_words);
	  if (document.getElementById("loginValidate"))
	  easy_guesses.push(document.getElementById("loginValidate").value);
	  
	  locase_matches = password.match(/[a-z_]/g); // lowercase and '_' matches
	  digit_matches = password.match(/[0-9]/g); // numeric matches
	  upcase_matches = password.match(/[A-Z]/g); // uppercase matches
	  special_matches = password.match(/\W/g); // special matches (not in a-z, A-Z, 0-9, _)
	
	  if (password.length>5)
	  { // for less than 5, leave strength at 0 since password too short
	    // 1 point for each character more than 5
	    strength += password.length - 5;
	   // 1 point for each upcase character mixed with lowercase
	  if (locase_matches && upcase_matches)
	  strength += upcase_matches.length;
	  
	  // 1 point for each numeric character mixed with lowercase
	  if (locase_matches && digit_matches)
	  strength += digit_matches.length;
	  
	  // 1 point for each special characters
	  if (special_matches)
	  strength += special_matches.length;
	  
	  // 2 bonus points if mix of letters, numbers and special
	 if ((locase_matches || upcase_matches) && special_matches && digit_matches)
	  strength += 2;
	  }
	  
	  // Reset strength to 0 if any easy guess in password (easy guess should be more than 3 chars)
	  for (var i=0; i < easy_guesses.length; ++i)
	  {
	  if (easy_guesses[i].length>3 && (password.indexOf(easy_guesses[i])!=-1))
	  {
	  strength=0;
	  break;
	  }
	  }
	  
	  var pstrength_elem = document.getElementById('password_strength');
	  var pstrength_text = document.getElementById('password_strength_text');
	  if (password.length==0)
	  {
	  pstrength_elem.className = 'password_empty';
	  pstrength_text.innerHTML = ningunha;
	  }
	  else if (strength<3)
	  {
	   pstrength_elem.className = 'password_weak';
	   pstrength_text.innerHTML = baixa;
	   }
	  else if (strength<7)
	   {
	   pstrength_elem.className = 'password_fair';
	   pstrength_text.innerHTML = regular;
	   }
	   else if (strength<10)
	   {
	   pstrength_elem.className = 'password_good';
	   pstrength_text.innerHTML = boa;
	   }
	   else
	   {
	   pstrength_elem.className = 'password_strong';
	   pstrength_text.innerHTML = alta;
	   }
}