/***************************************************************************************************/
/********* VALIDADOR DE FORMULARIOS ****************************************************************/
/********* JOSE IGNACIO MARCOS PEREZ - DIGIVAL.ES  *************************************************/
/***************************************************************************************************/
function init_form(){
	$$('form').each(function(formulario, i){
		formulario.onsubmit = function(){
			if(validaForm(formulario)){
				return true;
			}else{
				return false;
			}
		};
	});
};
/***************************************************************************************************/
/********* VALIDA FORMS ****************************************************************************/
/***************************************************************************************************/
var falloValida;

function validaForm(f){
	falloValida = 0;
	// COMPRUEBO LOS OBLIGATORIOS ***************************************
	if($$('#'+f.id+' .obligatorio')!=""){
		var c_ob = $$('#'+f.id+' .obligatorio');
		for(o=0;o<c_ob.length;o++){
			if(!val_vacio(c_ob[o].value)){
				error('Los campos obligatorios no pueden estar vacios.', c_ob[o]);
			}else{
				limpiaerror(c_ob[o]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO LOS OBLIGATORIOS ***************************************
	if($$('#'+f.id+' .ob_select')!=""){
		var c_ob_sel = $$('#'+f.id+' .ob_select');
		for(s=0;s<c_ob_sel.length;s++){
			if(c_ob_sel[s].value==0){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_sel[s]);
			}else{
				limpiaerror(c_ob_sel[s]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO EL USUARIO ***************************************
	if($$('#'+f.id+' .ob_user')!=""){
		var c_ob_user = $$('#'+f.id+' .ob_user');
		for(us=0;us<c_ob_user.length;us++){
			if(!val_vacio(c_ob_user[us].value)){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_user[us]);
			}else	if(c_ob_user[us].value.length<4 || c_ob_user[us].value.length>10) {
				error("El campo debe tener entre 4 y 10 caracteres", c_ob_user[us]);
			}else{
				limpiaerror(c_ob_user[us]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO QUE EL CAMPO SEA NUMERICO ******************************
	if($$('#'+f.id+' .ob_num')!=""){
		var c_ob_num = $$('#'+f.id+' .ob_num');
		for(n=0;n<c_ob_num.length;n++){
			if(!numerico(c_ob_num[n].value)) {
				error("El campo no es numerico", c_ob_num[n]);
			}else	if(!val_vacio(c_ob_num[n].value)){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_num[n]);
			}else{
				limpiaerror(c_ob_num[n]);
			}
		}
	}
	// COMPRUEBO QUE EL CAMPO SEA NUMERICO PARA DECIMALES******************************
	if($$('#'+f.id+' .ob_numdec')!=""){
		var c_ob_numdec = $$('#'+f.id+' .ob_numdec');
		for(n=0;n<c_ob_numdec.length;n++){
			if(!numericodecimal(c_ob_numdec[n].value)) {
				error("El campo no es numerico", c_ob_numdec[n]);
			}else	if(!val_vacio(c_ob_numdec[n].value)){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_numdec[n]);
			}else{
				limpiaerror(c_ob_numdec[n]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO LOS EMAILS *********************************************
	if($$('#'+f.id+' .ob_email')!=""){
		var c_ob_email = $$('#'+f.id+' .ob_email');
		for(em=0;em<c_ob_email.length;em++){
			if (!validateEmail(c_ob_email[em].value)) {
				error("Se necesita un correo electrónico válido.", c_ob_email[em]);
			}else if(!val_vacio(c_ob_email[em].value)){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_email[em]);
			}else{
				limpiaerror(c_ob_email[em]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO QUE LA IMAGEN SEA jpg******************************
	if($$('#'+f.id+' .ob_imagen')!=""){
		var c_ob_imagenOri = $$('#'+f.id+' .ob_imagen');
		for(im=0;im<c_ob_imagenOri.length;im++){
			if(c_ob_imagenOri[im].value==""){
				error('Los campos obligatorios no pueden estar vacios.', c_ob_imagenOri[im]);
			}else{
				var ext=c_ob_imagenOri[im].value.substr(c_ob_imagenOri[im].value.length-3,c_ob_imagenOri[im].value.length);
				if((ext == 'jpg')||(ext == 'JPG')) {
					limpiaerror(c_ob_imagenOri[im]);
				}else{
					error("La imagen no es jpg", c_ob_imagenOri[im]);
				}
			}
		}
	}

	// COMPRUEBO LAS URL ************************************************
	if($$('#'+f.id+' .ob_url')!=""){
		var c_ob_url = $$('#'+f.id+' .ob_url');
		var urlExp = /http:\/\//i;
		for(u=0;u<c_ob_url.length;u++){
    		 if(c_ob_url[u].value.length<4 || c_ob_url[u].value.indexOf(".") < 1){
				error("El dominio no es valido", c_ob_url[u]);
			}else if(!urlExp.test(c_ob_url[u].value)) {
				var texto = c_ob_url[u].value;
				c_ob_url[u].value ='http://'+texto;
				limpiaerror(c_ob_url[u]);
			}else{
				limpiaerror(c_ob_url[u]);
			}
		}
	}
	// ******************************************************************
	
	// COMPRUEBO LOS CHECKBOX O RADIOS - AL MENOS UNO MARCADO ***********
	if($$('#'+f.id+' .ob_radios')!=""){
		var c_ob_radios = $$('#'+f.id+' .ob_radios');
		var marcado = 0;
		for(r=0;r<c_ob_radios.length;r++){
			if(c_ob_radios[r].checked){
				marcado = 1;
			}
		}
		if(marcado == 0){
			error('Debe marcar al menos una opcion.', c_ob_radios[c_ob_radios.length-1]);
		}else{
			limpiaerror(c_ob_radios[c_ob_radios.length-1]);
		}
		
	}
	// ******************************************************************
	
	if(falloValida == 1) return false;
	else return true;
}

/***************************************************************************************************/
/********* FUNCION DE ERROR ************************************************************************/
/***************************************************************************************************/
function error(err, campo){
	if(campo.parentNode.lastChild.tagName == 'SPAN'){
		campo.parentNode.lastChild.firstChild.nodeValue = err;
	}else{
		var error = document.createElement('span');
		error.className = "errorForm";
		error.innerHTML = err;
		campo.parentNode.appendChild(error);
	}
	falloValida = 1;
}
function limpiaerror(campo){
	if(campo.parentNode.lastChild.tagName == 'SPAN'){
			campo.parentNode.removeChild(campo.parentNode.lastChild);
	}
}
/***************************************************************************************************/
/********* VALIDACION DE CAMPO VACIO ***************************************************************/
/***************************************************************************************************/
function val_vacio(obj){
	if(obj== null || obj.length == 0) return false;
	else return true;
}
/***************************************************************************************************/
/********* VALIDACION DE EMAIL *********************************************************************/
/***************************************************************************************************/
function validateEmail(email) {
	var emailExp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
	if(emailExp.test(email)) return true;
	else return false;
 }
/***************************************************************************************************/
/********* VALIDACION DE ALFANUMERICO  ***********************************************************/
/***************************************************************************************************/
function alfanumerico(valor){
	  cad = valor.toString();
	  for (var i=0; i<cad.length; i++) {
			var caracter = cad.charAt(i);
			if (!((caracter>"0" && caracter<"9") || (caracter>"a" && caracter<"z") || (caracter>"A" && caracter<"Z"))){
				return false;
			}
		}
	  return true;
}

/***************************************************************************************************/
/********* VALIDACION DE CAMPO NUMERICO  ***********************************************************/
/***************************************************************************************************/
function numerico(valor){
	  cad = valor.toString();
	  for (var i=0; i<cad.length; i++) {
		var caracter = cad.charAt(i);
		if (caracter<"0" || caracter>"9")
		  return false;
	  }
	  return true;
}

function numericodecimal(valor){
	  cad = valor.toString();
	  for (var i=0; i<cad.length; i++) {
		var caracter = cad.charAt(i);
		if (caracter<"0" || caracter>"9"){
			if (caracter!="," && caracter!=".")
				return false;
		}
	  }
	  return true;
}
/***************************************************************************************************/
/********* EVENTO ON LOAD **************************************************************************/
/***************************************************************************************************/
window.addEvent('load', init_form);
