/******************************
CONJUNTO DE FUNCIONES DE VALIDACION *by Dani de Saro © 2008*
***********************************/


/*
activarValidacion(obj)
esta funcion lee los atributos del input text y si contiene el atributo obl="false" convierte ese campo en opcional, de lo contrario es un campo obligatorio
*/
function activarValidacion(obj)
{
var propiedades=obj.attributes;
  for(o=0;o<propiedades.length;o++)
  {
  	if(propiedades[o].specified)
  	{
  		if(propiedades[o].nodeName=="obl")
  		{
  			if(propiedades[o].nodeValue=="false")
  			{
  			return false;
			//alert("Este campo no es obligatorio");
  			}else{
				return true;
				}
  		}
  	
  	}
  }
return true;			
}

/*
camposVacios(obj)
esta funcion impide que nos envien espacios vacios y otros caracteres invisibles para simular un campo de texto lleno
*/
function camposVacios(obj)
{
var control=0;
var texto=obj.value;
var espacio=String.fromCharCode(32);
var tab=String.fromCharCode(9);
	for(var i=0;i<texto.length;i++)
	{
	var caracter=texto.charAt(i);
		if(caracter!=espacio && caracter!=tab)
		{
		control=1;
			if(i>0)//si encontramos caracteres, eliminamos los espacios en blanco previos que puedan existir
			{
			obj.value=texto.substring(i,texto.length);
			}
		return false;
		}
	}
	if(control==0)
	{
	return true;//si dvuelve true es que no hay caracteres visibles
	}
}

/*
nombre_xulo(obj)
esta funcion convierte la primera letra de cada palabra en mayusculas
*/
function nombre_xulo(obj)
{
obj=eval(obj);
  if(!obj)
  {
  return false;
  }
var palabras=new RegExp("\\b([a-z]+)ñ*.*|([a-z]*)ñ*.*\\S\\b",'igm');
var valor=obj.value;
var contarPalabras=valor.match(palabras);
var numePalabras=contarPalabras.length;
var nombreXulo="";
	for(var q=0;q<numePalabras;q++)
	{
	var letra1=contarPalabras[q].substring(0,1);
		if(contarPalabras[q].length>1)
		{
		var restoPalabra=contarPalabras[q].substring(1,contarPalabras[q].length);
		}else{
		var restoPalabra="";
		}
	var mayus=""+ letra1.toUpperCase() +"";
	nombreXulo+=""+ mayus +""+ restoPalabra +" ";
	}
obj.value=nombreXulo;
}

/*
limpiarSimb(obj,tipo,sustituye,personalizado)
esta funcion LIMPIA LA CADENA ENVIADA DE SIMBOLOS CONFLICTIVOS, puede utilizar varios tipos de limpieza de caracteres 
*/
function limpiarSimb(obj,tipo,sustituye,personalizado)
{
var cadena=obj.value;
var w=cadena;
var etiquetaHTMLAnidadoOUT=/<(.*)>.*<\/\1>/;
var etiquetaHTMLSimpleOUT=/<(.*)>/;
var lineaEnBlancoOUT=/^\[ \t]*$/;
var alpha1OUT=/[^a-z][^0-9]/;  //coincide con cualquier caracter que no sea de la 'a' a la 'z' o numeros
var espaciosOUT=/\s/;//espacios en blanco, saltos del linea, etc
var numerosOUT=/\d/;//coincide con digitos
var espacioEnBlancoOUT=/\s/;
var simbolosOUT=/(\<|\>|\*|\||\$|\%|\&|\/|\(|\)|\?|\!|\[|\]|\{|\}|\'|\"|\\|\@)/;
var simbolosEmpresaOUT=/(\<|\>|\*|\||\$|\%|\/|\(|\)|\?|\[|\]|\{|\}|\\)/;
var simbolosComentariosOUT=/(\<|\>|\||\\)/;
var modo;
	switch(tipo)
	{
	case 0:
	modo=etiquetaHTMLAnidadoOUT;
	break;
	case 1:
	modo=simbolosComentariosOUT;
	break;
	case 2:
	modo=etiquetaHTMLSimpleOUT;
	break;
	case 3:
	modo=lineaEnBlancoOUT;
	break;
	case 4:
	modo=alpha1OUT;
	break;
	case 5:
	modo=espaciosOUT;
	break;
	case 6:
	modo=numerosOUT;
	break;
	case 7:
	modo=simbolosOUT;
	break;
	case 8:
	modo=simbolosEmpresaOUT;
	break;
	case 9:
	modo=espacioEnBlancoOUT;
	break;
	case 10:
	modo=personalizado;
	break;
	}
	for(var i2=0;w.search(modo)!=-1;i2++)
	{
	var susti=sustituye;
	limpia1=w.replace(modo,susti);
	w=limpia1;
	}
obj.value=w;
return w;
}

/*
NombreApellidos(obj)
esta funcion VALIDA EL CAMPO NOMBRE
*/
function NombreApellidos(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Introduzca nombre y apellidos, por favor.",0);
	return false;
	}
var numeros=new RegExp("(\\d)",'igm');//coincide con digitos
var espacios=new RegExp("(\\s)",'igm');
var palabras=new RegExp("\\b([a-z]+)|([a-z]*)\\S\\b",'igm');//coincide con una palabra o letra
var buscar1 = numeros.exec(valor);
var buscar2 = espacios.exec(valor);
var buscar3 = palabras.exec(valor);
var contarEspacios=valor.match(espacios);
var contarPalabras=valor.match(palabras);

  if(contarPalabras!=null)
  {
  	if(contarPalabras.length<2)
  	{
  	stoP(obj,"Nombre y apellidos, por favor.");
  	return false;
  	}else{
  	var contarNumeros=valor.match(numeros);
  		if(contarNumeros!=null)
  		{
  		stoP(obj,"No se permiten números en el nombre.");
  		return false;
  		}else{
  
  		}
  	}
  }
limpiarSimb(obj,7,"");
limpiarSimb(obj,10,"","_");
return true;
}

/*
e_mail(obj)
esta funcion VALIDA EL CAMPO EMAIL
*/
function e_mail(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, escriba su correo electrónico.",0);
	return false;
	}
var email=new RegExp("(\\b([a-z0-9\\_\\.]+)@([a-z0-9\\-])+\\.([a-z]{2,3})\\.*([a-z]{2,3})*\\b)",'igm');//coincide con formato de email
var verEmail=valor.match(email);
	if(verEmail==null || valor!=verEmail)
	{
	stoP(obj,"El formato del e-mail es incorrecto.");
	return false;
	}
}

/*
telefono(obj)
esta funcion VALIDA EL CAMPO TELEFONO
*/
function telefono(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo teléfono.",0);
	return false;
	}
var tfo=new RegExp("\\D",'igm');//coincide con formato de caracter no digito
var verTfo=valor.match(tfo);
	if(verTfo!=null)
	{
	stoP(obj,"¨Por favor, introduzca sólo números.");
	return false;
	}
  if(valor.length<9)
  {
	stoP(obj,"Faltan números en el teléfono introducido");
  return false;
  }
}

/*
validaEmpresa(obj)
esta funcion VALIDA EL CAMPO empresa
*/
function validaEmpresa(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo Empresa.",0);
	return false;
	}
limpiarSimb(obj,8,"");
}

/*
validaCargo(obj)
esta funcion VALIDA EL CAMPO CARGO
*/
function validaCargo(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo Cargo.",0);
	return false;
	}
limpiarSimb(obj,7,"");
}

/*
validaCiudad(obj)
esta funcion VALIDA EL CAMPO CIUDAD
*/
function validaCiudad(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo Ciudad.",0);
	return false;
	}
var noNumeros=new RegExp("\\d",'igm');//coincide con formato de caracter de digito
var verNumeros=valor.match(noNumeros);
	if(verNumeros!=null)
	{
	stoP(obj,"No se admiten números en este campo.",0);
	return false;
	}
limpiarSimb(obj,7,"");
}

/*
validaPais(obj)
esta funcion VALIDA EL CAMPO pais
*/
function validaPais(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo País.",0);
	return false;
	}
var noNumeros=new RegExp("\\d",'igm');//coincide con formato de caracter de digito
var verNumeros=valor.match(noNumeros);
	if(verNumeros!=null)
	{
	stoP(obj,"No se admiten números en este campo.");
	return false;
	}
limpiarSimb(obj,7,"");
}

/*
validaMensaje(obj)
esta funcion VALIDA EL CAMPO de mensaje
*/
function validaMensaje(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, rellene el campo Mensaje.",0);
	return false;
	}
limpiarSimb(obj,1," ");
}

/*
validaImagen(obj)
esta funcion VALIDA EL CAMPO del codigo de seguridad
*/
function validaImagen(obj)
{
var valor=obj.value;
	if(camposVacios(obj))
	{
	stoP(obj,"Por favor, escriba el código que aparece en la imagen",0);
	return false;
	}
limpiarSimb(obj,7,"");
var alpha=new RegExp("\\b([^a-z0-9]+)\\b",'igm');//solo numeros y letras
var buscarAlpha=valor.match(alpha);
	if(buscarAlpha!=null)
	{
	stoP(obj,"Sólo letras y números.");
	return false;
	}
}

/*
stoP(obj,texto,modo)
esta funcion detiene el proceso de validacion al encontrar algun error en los campos
*/
function stoP(obj,texto,modo)
{
alert(texto);
obj.focus();
controlVal=1;
	if(modo==undefined)
	{
	obj.style.color="red";
	}
}

/*
validar()
esta funcion inicia el proceso de validacion
*/
var controlVal=0;
function validar(formulario)
{
formulario=document.getElementById(formulario);
controlVal=0;
var campos=formulario.elements;
	for(var i=0;i<campos.length;i++)
	{
    if(campos[i].type=="text")
    {
    campos[i].style.color="black";
    }
	var nombreCampo=campos[i].name;
		if(controlVal==0)
		{
		 	switch(nombreCampo)
  			{
  			case "cajaNombre":
				var listaPalabras=NombreApellidos(campos[i]);
  			break;
   			case "cajaEmpresa":
					if(activarValidacion(campos[i]))//hacer un campo opcional
					{
					validaEmpresa(campos[i]);
					}
  			break;
	   		case "cajaCargo":
					if(activarValidacion(campos[i]))//hacer un campo opcional
					{
					validaCargo(campos[i])
					}
  			break;
	   		case "cajaTelefono":
				telefono(campos[i])
  			break;
	   		case "cajaEmail":
				e_mail(campos[i])
  			break;
	   		case "cajaCiudad":
				validaCiudad(campos[i])
  			break;
 	  		case "cajaPais":
				validaPais(campos[i])
  			break;
	   		case "comoConocio":
					if(activarValidacion(campos[i]))//hacer un campo opcional
					{
					var valorSelect=campos[i].options[campos[i].options.selectedIndex].value;
					var textoSelect=campos[i].options[campos[i].options.selectedIndex].text;
					}
  			break;
	   		case "areaMensaje":
				validaMensaje(campos[i])
  			break;
				case "keystring":
				validaImagen(campos[i])
				break;
				}
		}else{
		break;
		}
	}
	if(controlVal==0)
	{
	envioForm(formulario);
	}
}


/*
envioForm()
esta funcion envia los datos una vez validados
*/
function envioForm(formulario)
{
nombre_xulo(''+formulario.name+'.cajaNombre');


  if(eval(''+formulario.name+'.cajaEmpresa'))//si existe...
	{

    if(eval(''+formulario.name+'.cajaEmpresa.value')!="")
    {
    nombre_xulo(''+formulario.name+'.cajaEmpresa');
    }

	}

  if(eval(''+formulario.name+'.cajaCiudad'))//si existe...
	{
nombre_xulo(''+formulario.name+'.cajaCiudad');
	}

  if(eval(''+formulario.name+'.cajaPais'))//si existe...
	{
	nombre_xulo(''+formulario.name+'.cajaPais');
	}


var confirma=confirm("Se va a enviar el formulario. ¿Los datos son correctos?");
	if(confirma)
	{
  var google_conversion_id = 1043636927;
  var google_conversion_language = "es";
  var google_conversion_format = "1";
  var google_conversion_color = "ebeeef";
    if(10000) 
    {
    var google_conversion_value = 10000;
    }
  var google_conversion_label = "pAJiCNXZRRC_xdLxAw";
  var nuevoScript=document.createElement("SCRIPT");
  var cabecera=document.getElementsByTagName("HEAD")[0];
  cabecera.appendChild(nuevoScript);
  nuevoScript.src="http://www.googleadservices.com/pagead/conversion.js";
  formulario.submit();//enviamos....
	}else{
	
	}
}

