// s es vacio
function isEmpty(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var s = whatYouTyped.value;	
	if ((s == null) || (s.length == 0)){
		fieldset.className = "";
		return(false);
	}
	else{
		fieldset.className = "welldone";
		return true;
		
	}
}

// s es vacio o solo caracteres de espacio
function isWhitespace (sa)
{   var i;
	var s=sa;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        // si el caracter en que estoy no aparece en whitespace,
        // entonces retornar falso
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}


////// FUNCIÓN PARA ENTEROS sin SIGNO //////
function checkEntero(whatYouTyped,o){
	var obli = o;
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(obli=='no'){	
		//if(!isWhitespace(txt)){	
		if(txt.length > 0){
			if (/^(?:\+|-)?\d+$/.test(txt)) {
				fieldset.className = "welldone";
				return(true);				
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}		
		else{
			fieldset.className = "welldone";
			return(true);
		}
	}else{
		if (/^(?:\+|-)?\d+$/.test(txt)) {
			fieldset.className = "welldone";
			return(true);
		}
		else {
			fieldset.className = "";
			return(false);
		}
	}	
}

////// FUNCIÓN PARA REALES con o sin signo, con o sin exponente //////
function checkReal(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(/^[-+]?[0-9]+[.]?[0-9]*([eE][-+]?[0-9]+)?$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}
	else{
		fieldset.className = "";
		return(false);
	}
}

////// FUNCION PARA MONEDA ///////
function checkMoneda(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
// Cadena Original	
//     /^([1-9]{1}[\d]{0,2}(\,[\d]{3})*(\.[\d]{0,4})?|[1-9]{1}[\d]{0,}(\.[\d]{0,4})?|0(\.[\d]{0,4})?|(\.[\d]{1,4})?)$/.test(txt)
	if(/^([1-9]{1}[\d]{0,2}(\,[\d]{3})*(\.[\d]{0,4})?|[1-9]{1}[\d]{0,}(\.[\d]{0,4})?|0(\.[\d]{0,4})?|(\.[\d]{1,4}))$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}
	else{
		fieldset.className = "";
		return(false);
	}
	
}

////// FUNCIÓN PARA LA HORA //////
function checkHora(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(/^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}
	else{
		fieldset.className = "";
		return(false);
	}
}

////// FUNCIÓN PARA NUMERO DE TELÉFONO //////
function checkTelefono(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(/^[0-9]{2,5}-? ?[0-9]{6,7}$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}
	else{
		fieldset.className = "";
		return(false);
	}
}

////// FUNCIÓN PARA CÓDIGO POSTAL //////
function checkCodigoPostal(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(/^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}
	else{
		fieldset.className = "";
		return(false);
	}
}

////// FUNCIÓN ALFANUMÉRICO //////
function checkAlfaNumerico(whatYouTyped,ma,me,o){
	
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	var obli = o;
	var mayorA = ma;
	var menorA = me;
	if(obli=='no'){
		//if(!isWhitespace(txt)){						
		if(txt.length > 0){
			if(/^([a-zA-Z0123456789]+)$/.test(txt)){
				fieldset.className = "welldone";
				return(true);
			}	
			else{
				fieldset.className = "";
				return(false);
			}
		}else{
			fieldset.className = "welldone";
			return(true);
		}
	}else{
		if(/^([a-zA-Z0123456789]+)$/.test(txt)){
			fieldset.className = "welldone";
			return(true);
		}	
		else{
			fieldset.className = "";
			return(false);
		}	
	}
}

////// FUNCIÓN PARA NOMBRES //////
function checkNombre(whatYouTyped,ma,me,o){
	
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	var obli= o;
	var mayorA = ma;
	var menorA = me;
	
	if(obli=='no'){
		//if(!isWhitespace(txt)){		
		if(txt.length > mayorA){
			if(menorA=="" || menorA==null){
				if(/^([a-zA-Z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü\. ]+)$/.test(txt)){
					fieldset.className = "welldone";
					return(true);
				}
				else{
					fieldset.className = "";
					return(false);
				}
			}
			if (txt.length > mayorA && txt.length <= menorA){
				if(/^([a-zA-Z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü\.]+)$/.test(txt)){
					fieldset.className = "welldone";
					return(true);
				}
				else{
					fieldset.className = "";
					return(false);
				}
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}else{
			fieldset.className = "welldone";
			return(true);
		}
	}else{
		if(menorA=="" || menorA==null){
			if(/^([a-zA-Z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü\.]+)$/.test(txt)){
				fieldset.className = "welldone";
				return(true);
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}
		if (txt.length > mayorA && txt.length <= menorA) {
			if(/^([a-zA-Z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü\.]+)$/.test(txt)){
				fieldset.className = "welldone";
				return(true);
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}
		else {
			fieldset.className = "";
			return(false);
		}		
		
	}	
	
	/*
	if(/^([a-zA-Z ñÑÁáÉéÍíÓóÚúü]+)$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}	
	else{
		fieldset.className = "";
		return(false);
	}
	*/
}

////// FUNCIÓN PARA NOMBRES INCLUYE GUIN ( - ) Y BARRA INCLINADA '/' //////
function checkNombreBarra(whatYouTyped){
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(/^([a-zA-Z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü]+([-\/A-Za-z \ñ\Ñ\Á\á\É\é\Í\í\Ó\ó\Ú\ú\ü\Ü])*)$/.test(txt)){
		fieldset.className = "welldone";
		return(true);
	}	
	else{
		fieldset.className = "";
		return(false);
	}
}

////// CAMPO NO OBLIGATORIO //////
function checkNoObligatorio(whatYouTyped) {
	var fieldset = whatYouTyped.parentNode;
	/*var txt = whatYouTyped.value;
	var tam = t;
	if (txt.length >= tam || txt.length <= tam) {*/
		fieldset.className = "welldone";
		return(true);
	/*}
	else {
		fieldset.className = "";
		return(false);
	}*/
}

///////////////////////////////////////////////////////////////////////////////////////////
// This function checks if the username field
// is at least 6 characters long.
// If so, it attaches class="welldone" to the 
// containing fieldset.


function checkUsernameForLength(whatYouTyped,ma,me,o) {
	var obli= o;
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	var mayorA = ma;
	var menorA = me;
	if(obli=='no'){
		//if(!isWhitespace(txt)){		
		if(txt.length > mayorA){
			if(menorA=="" || menorA==null){
				if(txt.length > mayorA){
					fieldset.className = "welldone";
					return(true);
				}
				else{
					fieldset.className = "";
					return(false);
				}
			}
			if (txt.length > mayorA && txt.length <= menorA) {
				fieldset.className = "welldone";
				return(true);
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}else{
			fieldset.className = "welldone";
			return(true);
		}
	}else{
		if(menorA=="" || menorA==null){
			if(txt.length > mayorA){
				fieldset.className = "welldone";
				return(true);
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}
		if (txt.length > mayorA && txt.length <= menorA) {
			fieldset.className = "welldone";
			return(true);
		}
		else {
			fieldset.className = "";
			return(false);
		}		
		
	}	
}




// If the password is at least 4 characters long, the containing 
// fieldset is assigned class="kindagood".
// If it's at least 8 characters long, the containing
// fieldset is assigned class="welldone", to give the user
// the indication that they've selected a harder-to-crack
// password.


//toma valor minimo del password y valor máximo del password
function checkPassword(whatYouTyped,ma,me) {
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	var mayorA=ma;
	var menorA=me;
	if (txt.length > 7 && txt.length < menorA) {
		fieldset.className = "welldone";
		return(true);
	}
	else if (txt.length > mayorA && txt.length < menorA) {
		fieldset.className = "kindagood";
		return(true);
	}  else {
		fieldset.className = "";
		return(false);
	}
}

////// FUNCIÓN PARA URL //////
function checkUrl(whatYouTyped,o){
	var obli = o;
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	var re=/^((http:|https:|ftp:)\/\/)?\w+(\.\w+)*(\-\w+)?\.\w{2,3}(\:\d{2,6})?(\/{1,2}(\:|\-|\w|\.|\?|\/|\=|\&|\%|\@|\\|\,)*)?$/;
	if(obli=='no'){	
		//if(!isWhitespace(txt)){	
		if(txt.length > 0){
			if (re.test(txt)) {
				fieldset.className = "welldone";
				return(true);				
			}
			else {
				fieldset.className = "";
				return(false);
			}
		}		
		else{
			fieldset.className = "welldone";
			return(true);
		}
	}else{
		if (re.test(txt)) {
			fieldset.className = "welldone";
			return(true);
		}
		else {
			fieldset.className = "";
			return(false);
		}
	}	
}

// This function checks the email address to be sure
// it follows a certain pattern:
// blah@blah.blah
// If so, it assigns class="welldone" to the containing
// fieldset.

function checkEmail(whatYouTyped,o) {
	var obli=o;
	var fieldset = whatYouTyped.parentNode;
	var txt = whatYouTyped.value;
	if(obli=='no'){
		if(txt.length > 0){
			if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})*$/.test(txt)) {
				fieldset.className = "welldone";
				return(true);
			} else {
				fieldset.className = "";
				return(false);
			}	
		}else{
			fieldset.className = "welldone";
			return(true);
		}
	}
	else{
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(txt)) {
			fieldset.className = "welldone";
			return(true);
		} else {
			fieldset.className = "";
			return(false);
		}
	}
}




// this part is for the form field hints to display
// only on the condition that the text input has focus.
// otherwise, it stays hidden.

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }

  }
}


function prepareInputsForHints() {
//PARA los INPUT
  var inputs = document.getElementsByTagName("input");  
  for (var i=0; i<inputs.length; i++){
    inputs[i].onfocus = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";//tenia antes inline
    }
    inputs[i].onblur = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "none";
    }
  }
  
//PARA los TEXTAREA  
  var textareas = document.getElementsByTagName("textarea");
  for (var k=0; k<textareas.length; k++){
    textareas[k].onfocus = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";//tenia antes inline
    }
    textareas[k].onblur = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "none";
    }
  }
}
addLoadEvent(prepareInputsForHints);
