/* panchicore.validate.js
   @author: luispallarez@gmail.com
   @dependencias: jquery 
   to-do: perfeccionar minimo_x cuando va de primero
   */


//funcion que valida un input de acuerdo a la regla enviada via class='requerido numerico correo url minimo_X clave'
//retorna si encontro error para esa regla en ese input
function validar(selector){
	var validar = selector.attr('class');
	var existe_error = false;
	
	if (validar.indexOf('requerido')>-1){
		var valor_campo = selector.val();
		if(valor_campo<1){
			showError(selector);
			existe_error = true;
		}else{
			hideError(selector);
		}

	}
	
	if(validar.indexOf('correo')>-1){
		var valor_campo = selector.val();
		 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,5})+$/.test(valor_campo)){
			hideError(selector);
		}else{
			showError(selector);
			existe_error = true;
		}

	}
	
	if(validar.indexOf('url')>-1){
		var valor_campo = selector.val();
		
		//if (/^(http:\/\/)*\w+(\.\w+)*\.\w{2,5}$/.test(valor_campo)){
	    //if (/^(http:\/\/)*\w+(\.\w+)*\.\w{2,5}(\/\w+)*(\/)*$/.test(valor_campo)){
		if(/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(valor_campo)){
			hideError(selector);
		}else{
			showError(selector);
			existe_error = true;
		}

	}
	
	if(validar.indexOf('numerico')>-1){
		var valor_campo = selector.val();
		if (valor_campo.length > 1){
			 if (/^([0-9])*$/.test(valor_campo)){
				hideError(selector);
			 }
			 else{
			 	  showError(selector);
				  existe_error = true;
			 }
		}
	}
	
	if(validar.indexOf('minimo')>-1){
		var num_min = selector.attr('class');;
		var num_min = num_min.split("_");
		var valor_campo = selector.val();
		 if (valor_campo.length >= num_min[1]){
			hideError(selector);
		}else{
			showError(selector);
			existe_error = true;
		}

	}
	
	if(validar.indexOf('clave')>-1){
		var valor_campo2 = selector.val();
		var valor_campo = $(selector).attr('id');
		var valor_campo = valor_campo.replace("2","");
		var valor_campo = $("#" + valor_campo).val();
		 if (valor_campo == valor_campo2){
			hideError(selector);
		}else{
			showError(selector);
			existe_error = true;
		}

	}
	
	return existe_error;
	
}

//muestra el div relacionado con el id del input
function showError(selector){
	$('div#error_'+selector.attr('id')).fadeIn();
	$(selector).addClass('input_error');
}
//esconde el div relacionado con el id del input
function hideError(selector){
	$(selector).removeClass('input_error');
	$('div#error_'+selector.attr('id')).fadeOut("slow");
}