function validarForm(identificador, nombre, url, capa, clase, imagen, ruta){
	// Propiedades
	this.ruta=ruta || "";
	this.url = url;
	this.clase = clase || 'a_325275_12_b';
        this.id = identificador;
        this.name = nombre.name;
        this.numelem = eval('document.'+this.name+'.elements.length');
        this.texto = "";
	if (capa){
		this.acceso = (document.all) ? "document.all."+capa+".document."+this.name : "document."+capa+".document."+this.name
	} else {
		this.acceso = "document."+this.name
	}
	this.tiempo2;
	this.d = 0;
	// Metodos

        if (this.name == 'proyecto') {  this.chequea = checkFormulario_proyecto;  }
        else if (this.name == 'cv') {  this.chequea = checkFormulario_trabajo;  }
        else if (this.name == 'contacto') {  this.chequea = checkFormulario_contacto;  }

	//combo
	this.validaCombo = validaCombo;
	// select
	//this.checkRadio = checkRadio;
	this.inputVacio = inputVacio;
        this.inputNum = inputNum;
	this.validaMail = validaMail;
	this.validaNIF = validaNIF;
	this.validaTfo = validaTfo;
	this.validaFecha = validaFecha;
	this.validaCP = validaCP;
	this.validaCheck = validaCheck;

	//this.chequea();
}

function checkFormulario_proyecto(){

	// Funcion general que recorre el formulario y lo chequea

// A?adido Angel - Danosa 10-oct-2005
if (document.proyecto.mas0 == undefined) { alert ("Elija alguna soluci?n constructiva. Bot?n A?ADIR SOLUCION"); return false; }
// fin a?adido

	var i = 0;
	while (i < this.numelem){

            nombreactual = eval(this.acceso+'.elements['+i+'].name');
            valoractual = eval(this.acceso+'.elements['+i+'].value');
            tipo =eval(this.acceso+'.elements['+i+'].type');

            if (tipo == 'text')
             {
               if(nombreactual == 'envioDoc')
               {
                 //alert("entro en el if de email con el nombre "+nombreactual);
               	 this.texto +=this.validaMail(nombreactual);
               }else if(nombreactual == 'telefono'){
               	 this.texto +=this.inputNum(nombreactual);
               }
               else if (nombreactual == 'mail' || nombreactual == 'extra1' || nombreactual == 'extra2' || nombreactual == 'extra3' ||  nombreactual == 'extra4' ||  nombreactual == 'extra5' ||  nombreactual == 'extra6' ||  nombreactual == 'MaxMB')
               {
               }
               else
               {
                 //alert("entro en el if con el nombre "+nombreactual);
                 this.texto += this.inputVacio(nombreactual);
                }
             }else if (nombreactual == 'provincia' || nombreactual == 'actividad_empresa' || nombreactual == 'titulacion')
               {
                  this.texto += this.validaCombo(valoractual,nombreactual);
               }
			   else if(nombreactual == 'acepto'){
               	    this.texto +=this.validaCheck(nombreactual);
               }

              i++;

	}
	if (this.texto == '') {
		return true;
	} else {
                alert(this.texto);
		return false;
	}
}


function checkFormulario_contacto(){

//var valor = contacto.area_interes[].value;
//alert(valor);

	// Funcion general que recorre el formulario y lo chequea
	var i = 0;
	while (i < this.numelem){

            nombreactual = eval(this.acceso+'.elements['+i+'].name');
            valoractual = eval(this.acceso+'.elements['+i+'].value');
            tipo =eval(this.acceso+'.elements['+i+'].type');

            if (tipo == 'text')
             {
               if(nombreactual == 'mail')
               {
               	 this.texto +=this.validaMail(nombreactual);
               }
               else if(nombreactual == 'codpostal')
	       {
	         this.texto += this.validaCP(valoractual,nombreactual);
	       }
	       else
               {
                 this.texto += this.inputVacio(nombreactual);
               }
             }
             else if ((nombreactual == 'actividad_empresa')||/*(nombreactual == 'area_interes')||*/(nombreactual == 'titulacion'))
             {
                this.texto += this.validaCombo(valoractual,nombreactual);
             }
             else if (nombreactual == 'descripcion')
             {
                this.texto += this.inputVacio(nombreactual);
             }

         i++;

	}

	if (this.texto == '') {
		return true;
	} else {
                alert(this.texto);
		return false;
	}
}

function checkFormulario_trabajo(){

	// Funcion general que recorre el formulario y lo chequea
	var i = 0;
	while (i < this.numelem){

            nombreactual = eval(this.acceso+'.elements['+i+'].name');
            valoractual = eval(this.acceso+'.elements['+i+'].value');
            tipo =eval(this.acceso+'.elements['+i+'].type');

            if (tipo == 'text')
             {
                if(nombreactual == 'mail')
                 {
                   this.texto +=this.validaMail(nombreactual);
                 }
                 else if(nombreactual == 'codpostal')
	         {
                   //alert("valoractual--"+valoractual+"--nombreactual--"+nombreactual);
	           this.texto += this.validaCP(valoractual,nombreactual);
	         }
                 else if (nombreactual == 'anio_ac')
                 {
                   this.texto += this.inputNum(nombreactual);
                 }
                 else if ((nombreactual == 'dia')||(nombreactual == 'mes')||(nombreactual == 'anio'))
                 {
                  switch (nombreactual){
   					case 'dia':  dia=valoractual;
						      break;
                                        case 'mes':  mes=valoractual;
						      break;
                                        case 'anio': anio=valoractual;
						      break;
                                       };

                 }
	         else
                 {
                   this.texto += this.inputVacio(nombreactual);
                 }
               }
               else if ((nombreactual == 'puesto_similar')||(nombreactual == 'otros_puestos'))
               {
                  this.texto += this.validaCombo(valoractual,nombreactual);
               }
		else if (nombreactual == 'descripcion')
               {
                  this.texto += this.inputVacio(nombreactual);
               }

          i++;

	}
	/*alert("entro en valida fecha---dia: "+dia+"mes  "+mes+"anio  "+anio);
                if ((dia!="")&&(mes!="")&&(anio!=""))
                {
                  alert("entro en valida fecha---dia: "+dia+"mes  "+mes+"anio  "+anio);*/
                  this.texto += this.validaFecha(dia,mes,anio);
                /*}*/
	if (this.texto == '') {
		return true;
	} else {
                alert(this.texto);
		return false;
	}
}


function validaCP(campo,cual){
  //alert("validacp---campo-- "+campo+"--cual--"+cual);
	if (eval(this.acceso+'.'+cual+'.value.length != 0')) {
		if (isNaN(eval(this.acceso+'.'+cual+'.value')) || eval(this.acceso+'.'+cual+'.value.length < 5') )  return(cual+' INCORRECTO\n');
		else return('');
	} else return(cual+' DEBE SER RELLENADO\n');
}

function validaCombo(campo,cual){
	if (eval(this.acceso+'.'+cual+'.selectedIndex == 0')) return(cual.split('_')[0]+' DEBE SER SELECCIONADO\n');
	else return('');
}

function validaCheck(cual){
	if (eval(this.acceso+'.'+cual+'.value == "on"') ){
		return ('');
	}else{
		if (cual == 'acepto'){
			return(' DEBE ACEPTAR LAS CONDICIONES DE USO\n');
		}else{
			return(+'RELLENE EL CHEK ' + cual.split('_')[0] + '/n');
		}
	}
}

function inputVacio(cual){
			if (eval(this.acceso+'.'+cual+'.value == ""'))
				return(cual.split('_')[0]+' DEBE SER RELLENADO\n');
			else
				return('');

}

function inputNum(cual){

    if (eval(this.acceso+'.'+cual+'.value.length != 0')) {
		if (isNaN(eval(this.acceso+'.'+cual+'.value'))) return(cual.split('_')[0]+' SOLO ADMITE VALORES NUMERICOS\n');
		else return('');
    }
    else return(cual+' DEBE SER RELLENADO\n');
}

function validaMail(cual){
	if ( eval(this.acceso+'.'+cual+'.value == ""') || eval(this.acceso+'.'+cual+'.value.indexOf("@") == -1')|| eval(this.acceso+'.'+cual+'.value.indexOf(".") == -1')) {
	 	return('E-MAIL INCORRECTO\n');
	}
	else return('');
}

/*function validaMail (emailStr) {
// Verificar si el email tiene el formato user@dominio.
var emailPat="/^(.+)@(.+)$/ "

// Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ]
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

// Verifica los caracteres que son v?lidos en una direcci?n de email
var validChars="\[^\\s" + specialChars + "\]"

var quotedUser="(\"[^\"]*\")"

// Verifica si la direcci?n de email est? representada con una direcci?n IP V?lida


var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/


// Verificar caracteres inv?lidos

var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
domain, as opposed to ipDomainPat, shown above.
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
return('E-MAIL INCORRECTO\n');
}
var user=matchArray[1]
var domain=matchArray[2]

// Si el user "user" es valido
if (user.match(userPat)==null) {
// Si no
return('E-MAIL INCORRECTO\n');
}

// Si la direcci?n IP es v?lida
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
return('E-MAIL INCORRECTO\n');
}
}
return('');
}
//dominio no valido
var domainArray=domain.match(domainPat)
if (domainArray==null) {
return('E-MAIL INCORRECTO\n');
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 ||
domArr[domArr.length-1].length>3) {

//alert("La dicrecci?n debe tener 3 letras si es ."com" o 2 si en de alg?n pais.")
return('E-MAIL INCORRECTO\n');
}

if (len<2) {
//var errStr="La direcci?n es erronea"
//alert(errStr)
return('E-MAIL INCORRECTO\n');
}

// La direcci?n de email ingresada es V?lida
return('');
}
*/


function validaTfo(campo,cual){

	if (eval(this.acceso+'.'+cual+'.value.length != 0')) {
		if (isNaN(eval(this.acceso+'.'+cual+'.value')) || eval(this.acceso+'.'+cual+'.value.length < 9') )  return(cual+' INCORRECTO\n');
		else return('');
	} else return(cual+' DEBE SER RELLENADO\n');
}

function validaFecha(dia,mes,anio){
//  alert("entro en valida fecha---dia: "+dia+"mes  "+mes+"anio  "+anio);
	if (!es_numero(dia))
	return false;
	if (!es_numero(mes))
	return false;
	if (!es_numero(anio))
	return false;
	dia = parseInt(dia,10);
	mes = parseInt(mes,10);
	ano = parseInt(anio,10);
	dias = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if ((mes<1)||(mes>12))
	return('EL MES DEBES SER ENTRE 1 Y 12');
	if (anio<0) return(campo+': A?O INCORRECTO');
	if ((mes==2)&&(dia==29)&&(anio%4==0))
	if ((ano%100!=0)||((ano%100==0)&&(anio%400==0)))
	return('');
	if (dia>0 && dia<=dias[mes-1]) return('');
	else return('FECHA INCORRECTA');

}

function validaNIF(campo,cual){
	if (eval(this.acceso+'.'+cual+'.value.indexOf("-") != -1'))
    	return("INTRODUCE NIE WITHOUT");
	else{
		if(eval(this.acceso+'.'+cual+'.value.length <= 0')==false)
		{
			var lon = eval(this.acceso+'.'+cual+'.value.length');
			var val = eval(this.acceso+'.'+cual+'.value');
			var letra = val.substr(lon-1,lon).toUpperCase();
			if(NIF(val.substr(0,lon-1)) != letra) return('NIF INCORRECTO\n');
			else return('');
		}
		else
			return('');
	}
}

function NIF(n){
	var d =(n/23)
	d = Math.floor(d);
	var e=d*23
	var r=n-e
	var letra = new Array('T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E','T');
	return(letra[r]);
}

function es_numero(x){ k="+-1234567890"
	if (k.indexOf(x.charAt(0)) == -1) return false;
	for(j=1;j<x.length;j++)
	if (k.indexOf(x.charAt(j)) < 2)
	return false;
	return true;
}

function setExit(booleano){
	isExit = booleano;
}
//f - jcv

function cortarNombre(texto)
{
	//Capturo el nombre del campo
	while(texto.indexOf('$') != -1)
	{
		texto = texto.replace('$','&nbsp;')
	}
	return(texto);
}

function validacion(formu,url,capa){

  //alert("form "+formu.name);
	// Funcion por medio de la que se crea el objeto formulario
	(capa) ? formul = new validarForm('formul',formu,url,capa) : formul =new validarForm('formul',formu,url);
        //alert("prue"+formul.name);
        return formul.chequea();
}


