/*** Created by: Daniel Ramos (a.k.a. Gonshu) Last edited: 2 - 1 - 2008 ***/
/*** Generic validation function, this should be correct to validate any type of form ***/
/*** Introduction: All field names specified of fields you want to validate in form should start with validation type tag, + and 
then field you want to give to a field. In example, if you want to validate that a field is not empty and it is a email, 
field name should be: re+email (r for required, and e for email). If you want to show errors using innerHtml I suggest you to
id content boxes with same name as fields validated plus '_error' or something similar, so you should only change 'alert()' 
functions for document.getElementById('name_error').innerHtml ***/

function validate2(form)
{
	/*** Inicialize 'error' variable, wich is going to indicate if there is an error on our form ***/
	document.getElementById("error").innerHTML = "";
	var error = "";
	var nomoreerror = false;
	/*** We look in all elements from form and depending on his type and if it is enabled we make diferent controls ***/
	for (i = 0; i < form.elements.length; i++) 
	{		
			if(form.elements[i].name != null){
					toCheck = form.elements[i].name.split("+");
					/*** if there is no error and field has some requeriments, check next field ***/
					if(toCheck.length > 1)
					{	
						/*** Take all requeriments ***/
						reqs = toCheck[0];
						if((form.elements[i].type == "text" || form.elements[i].type == "textarea" || form.elements[i].type == "radio") && form.elements[i].disabled == false)
						{		
								/*** For each requeriment we look if the validation is ok, if there is an error at anytime validation finishes and error is shown on an alert. ***/
								done = false;
									for(j = 0; j < reqs.length; j++)
									{
										if(!done){
												switch(reqs.substring(j,j+1))
												{
													case 'r': // Field required, looks if a field is empty.
															if(form.elements[i].value == ""){
																	 error += "<li>" + form.elements[i].id + "</li>";
																	 done = true;
															}
													break;
													case 'e': // Email, looks if a field accomplish all emails standards.
															var objRegExp  = /^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
															if(!objRegExp.test(form.elements[i].value)){
																	 error += "<li>" + form.elements[i].id + "</li>";
																	 done = true;
															}
													break;
													case 't': // Phone, looks if a field accomplish all phone standards.
															var objRegExp  = /(^([0-9]{9,9}))$/;
															if(!objRegExp.test(form.elements[i].value)){
																	 error += "<li>" + form.elements[i].id + "</li>";
																	 done = true;
															}
													break;
													case 'x': // Phone, looks if a field accomplish all phone standards.
															var objRegExp  = /^9[0-9]{8}$/ ;
															if(!objRegExp.test(form.elements[i].value)){
																	 error += "<li>" + form.elements[i].id + "</li>";
																	 done = true;
															}
													break;
													case 'p': // Postal code, looks if a field is a postal code (5 numbers).
															var objRegExp  = /(^[0-9]{5}$)/i;
															if(!objRegExp.test(form.elements[i].value)) {
																	 error += "<li>" + form.elements[i].id + "</li>";
																	 done = true;
															}
													break;
													case 'i': // Postal code, looks if a field is a postal code (5 numbers).
		
															if(!$('.extra_option:checked').val() && !nomoreerror){
																error += "<li>" + form.elements[i].id + "</li>";
																done = true;
																nomoreerror = true;
															}
															
													break;
													/*** You can add whatever field validation you want here. ***/			
												}
										}
									}
						}
						
												
				}
		}
	}
	
	if(error != "")
	{		
		 document.getElementById("error").innerHTML = "<font color='#FF3300' face='Arial'>Por favor, rellena correctamente los siguientes campos:<ul style='padding-left:20px'>" + error + "</ul><br/><br/></font>";
		 return false;
	}
	else	form.submit();
}




function emptyKeyword(field) {
	if (field.value == "Palabra clave") {
		field.value = "";
	}
}

function checkSomeField(form) {
	var empty = true;
	for (i = 0; i < form.elements.length; i++) {
		if (empty && form.elements[i].type == "text" && form.elements[i].disabled == false && form.elements[i].value != "") {
			if (form.elements[i].id == "keywords" && form.elements[i].value != "Palabra clave") {
				empty = false;
			}
		}
		if (empty && form.elements[i].type == "select-one" && form.elements[i].disabled == false && form.elements[i].value != -1) {
			empty = false;
		}
	}
	if (empty) {
		alert("Por favor, rellena algún campo para realizar una búsqueda.");
		return false;	
	} else {
		return true;
	}
}

function solicitudInfo(elem) {
	if (elem.style.display == 'none') {
		elem.style.display = 'block';
		document.getElementById('fileContent').style.display = 'none';
	} else {
		elem.style.display = 'none';
		document.getElementById('fileContent').style.display = 'block';
	}
	document.getElementById('thanks').style.display = 'none';
}

function checkInfoRequest(form) {
	if (form.nombre_empresa.value.replace(/ /g, '') == "") {
		alert("Por favor, rellena el nombre de la empresa.");
		form.nombre_empresa.focus();
		return false;
	}
	if (form.nombre.value.replace(/ /g, '') == "") {
		alert("Por favor, rellena el nombre y los apellidos.");
		form.nombre.focus();
		return false;
	}
	if (form.telefono.value.replace(/ /g, '') == "") {
		alert("Por favor, rellena el teléfono.");
		form.telefono.focus();
		return false;
	}
	if (form.email.value.replace(/ /g, '') == "") {
		alert("Por favor, rellena el email.");
		form.email.focus();
		return false;
	}
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.email.value)) {
	} else {
		alert("Por favor, introduce una dirección de email correcta.");
		form.email.focus();
		return false;
	}
	if (form.consulta.value.replace(/ /g, '') == "") {
		alert("Por favor, indica qué necesitas.");
		form.consulta.focus();
		return false;
	}
	if (!(form.usuarioSP0.checked) && !(form.usuarioSP1.checked)) {
		alert("Por favor, marca si eres usuario/a de Secretariaplus o no.");
		return false;
	}
	if (!(form.usuarioDP0.checked) && !(form.usuarioDP1.checked)) {
		alert("Por favor, marca si eres usuario/a de Directivosplus o no.");
		return false;
	}
	return true;
}

function showCharacters(nChar, elem, counter) {	
    var nA = elem.value.length;     
    if (nA > nChar) {
       elem.value = elem.value.substring(0, (nChar));
    } else {
        counter.innerHTML = nChar - nA;
    }
}

function checkNewFile(f) {
	if (f.razon_social.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la razón social.");
		f.razon_social.focus();	
		return false;
	}
	if (f.nombre_comercial.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca el nombre comercial.");
		f.nombre_comercial.focus();
		return false;
	}
	if (f.categoria.value == "0") {
		alert("Por favor, introduzca la categoría.");
		f.categoria.focus();
		return false;
	}
	if (f.provincia.value == "0") {
		alert("Por favor, introduzca la provincia.");
		f.provincia.focus();
		return false;
	}			
	if (f.poblacion.value == "-1") {
		alert("Por favor, introduzca la población.");
		f.poblacion.focus();
		return false;
	}			
	if (f.cp.value == "-1") {
		alert("Por favor, introduzca el código postal.");
		f.cp.focus();
		return false;
	}			
	if (f.direccion.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la dirección.");
		f.direccion.focus();
		return false;
	}			
	if (f.telefono.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca el teléfono.");
		f.telefono.focus();
		return false;
	}			
	if (f.fax.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca el fax.");
		f.fax.focus();
		return false;
	}			
	if (f.email.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca el email.");
		f.email.focus();
		return false;
	} else {
		var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
		if (!re.test(f.email.value.replace(/ /g, ''))) { 
			alert ("Por favor, introduzca una dirección de email correcta."); 
			return false; 
		} 					
	}
	if (f.web.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la dirección de la página web.");
		f.web.focus();
		return false;
	}			
	if (f.contacto.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la persona de contacto.");
		f.contacto.focus();
		return false;
	}			
	if (f.contactoscomerciales.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca las direcciones de los contactos comerciales.");
		f.contactoscomerciales.focus();
		return false;
	}			
	if (f.palabrasclave.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca las palabras clave.");
		f.palabrasclave.focus();
		return false;
	}				
	if (f.descripcion1.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la primera descripción.");
		f.descripcion1.focus();
		return false;
	}				
	if (f.descripcion2.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca la segunda descripción.");
		f.descripcion2.focus();
		return false;
	}			
	if (f.ambito.value == "-1") {
		alert("Por favor, introduzca la cobertura del servicio.");
		f.ambito.focus();
		return false;
	}	
	if (f.email_copia.value.replace(/ /g, '') == "") {
		alert("Por favor, introduzca el email donde desea recibir copia de la información introducida.");
		f.email_copia.focus();
		return false;
	} else {
		var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
		if (!re.test(f.email_copia.value.replace(/ /g, ''))) { 
			alert ("Por favor, introduzca una dirección de email correcta."); 
			return false; 
		} 					
	}				
}

function checkPhone(evt) {
    var charCode = (evt.which) ? evt.which : event.keyCode
        if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
        return true;
}
