/*
 * plugin desarollado por Eduardo Rodriguez Pati�o en sus ratos de hueveo
 * Este plugin permite validar formularios de manera sencilla :D
 * 
 * NOTA: este plugin solo funciona cuando los inputs del Form, son hijos de otra
 * capa, si tu no usas una capa para oontener al input remueve la palabra parent()
 */

$(document).ready(function(){
	$(".price").live('change',function(){
		if($(this).val()>0){
			var amt = parseFloat(this.value);
			$(this).val(amt.toFixed(2));			
		}else{
			$(this).val('');
		}
	})

	jQuery.fn.validate = function(){
		//Reiniciamos todo el formulario
		$("select,input,textarea",$(this)).parent().each(function(){
			$(this).removeClass('failed');
			$(this).removeClass('approved');
		})

		//Respuesta
		var fail = Array();

		//Caracteres minimo para la clase Required
		var min_str = 5;

		//Valores numericos
		$(".numeric", this).each(function(){
			if($(this).val().match(/^([0-9])*$/)){
				$(this).parent().addClass('approved');
			}else{
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}
		})

		//Valores con decimales
		$(".price", this).each(function(){
			if($(this).val().match(/^([0-9])*[.]?[0-9]*$/)){
				$(this).parent().addClass('approved');
			}else{
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}
		})

		//Correos electronicos
		$(".email", this).each(function(){
			if($(this).val().match(/^[0-9a-z_\-\.]+@[0-9a-z\-\.]+\.[a-z]{2,4}$/i)){
				$(this).parent().addClass('approved');
			}else{
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}
		})

		//Validar Password, que sea igual al otro
		passwd = new Array();
		$(".password", this).each(function(i){
			passwd[i] = $(this);
		})

		if(passwd[0] != undefined && passwd[1] != undefined){
			if(passwd[0].val().length >= 4){
				passwd[0].addClass('approved');
				if(passwd[0].val() == passwd[1].val()){
					passwd[0].addClass('approved');
					passwd[1].addClass('approved');
				}else{
					passwd[0].parent().addClass('failed');
					passwd[1].parent().addClass('failed');
					fail[fail.length + 1] = false; 
				}
			}else{
				passwd[0].parent().addClass('failed');
				passwd[1].parent().addClass('failed');
				fail[fail.length + 1] = false; 
			}
		}

		$(".youtube", this).each(function(){
			if($(this).val().match(/http:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi)){
				$(this).parent().addClass('approved');
			}else{
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}
		})

		//Accediendo a los que son requeridos
		$("input.required,textarea.required", this).each(function(){
			if($(this).val().length < min_str){
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}else{
				$(this).parent().addClass('approved');
			}
		})
		
		$("select.required", this).each(function(){
			if($(this).val() == 0){
				$(this).parent().addClass('failed');
				fail[fail.length + 1] = false;
			}else{
				$(this).parent().addClass('approved');
			}
		})

		//Retornando la respuesta		
		if(fail.length > 1)	return false;
		else return true;
	}
})
