$(document).ready(function(){$('form').submit(initFormValidation);  });

var errRequired = 'Campo requerido.';
var errMail     = 'Formato incorrecto';



function initFormValidation(){
    var errCount = 0;

    $('dd.error',$(this)).remove();

    var requeridos = $('.v_Required',$(this));

    requeridos.each(function(){
        var tagName = this.tagName;
        var val;
        switch(tagName){
            case 'INPUT':
                  val = $(this).val();
                  break;
            case 'TEXTAREA':
                  val = $(this).val();
                  break;
            case 'SELECT':
                  val = $(this).selectedValues();
                  break;
        }
        if(val==''){
            showError($(this),'required');
            errCount++;
        }
    });

    var mails = $('.v_Mail',$(this));
    mails.each(function(){
        if(!$(this).val().isMail()&&$(this).val()!=''){
            showError($(this),'mail');
            errCount++;
        }
    });

    if(0<errCount)
        return false;
}


function showError(field,op){
    var text = '';

    switch(op){
        case 'mail':
            text = errMail;
            break;
        default:
            text = errRequired;
            break;
    }


    var html    = '<dd class="error"><strong>&nbsp;</strong></dd>';
    var dd      = field.parent();
    dd.after(html);
    var ddError = dd.next();
    ddError.fadeTo(10,0.1,function(){ $(this).html('<strong>'+text+'</strong>'); $(this).fadeTo('slow',1.0); });
}


/// Agrego metodo al objeto string
///	que verifica si una cadena es un mail
String.prototype.isMail = function() {
							var filter=/^([\w\-\.]+)@((\[([0-9]{1,3}\.){3}[0-9]{1,3}\])|(([\w\-]+\.)+)([a-zA-Z]{2,4}))$/
							return(filter.test(this));
						}

