/**
 * @author mgonzalez
 * Validación de formularios utilizando jQuery y UIJQuery
 */
var FormValidator = function(){

    var f;
	var form;
    var inputfield;
    var dialogform;
    
    function m_alert(title, text){
        dialogform.dialog('option', 'title', title);
        $('#dialogform').html(text);
        dialogform.dialog('open');
    };
    
    return {
        init: function(config){
			f = document.getElementById(config.id);
            form = $('#' + config.id);
            inputfield = $('input.field-required');
            dialogform = $("#dialogform").dialog({
                autoOpen: false,
                bigframe: true,
                modal: true,
                draggable: false,
                resizable: false
            });
            
            $(document).ajaxStart(function(){
                $('#ajax-progressbar').show();
            });
            $(document).ajaxStop(function(){
                $('#ajax-progressbar').hide();
            });
            
            inputfield.focus(function(){
                var el = $(this);
                if (el.hasClass('field-invalid')) {
                    el.removeClass('field-invalid');
                }
            });
            
            inputfield.blur(function(){
                var el = $(this);
                if (this.value != '') {
                    if (el.hasClass('field-invalid')) {
                        el.removeClass('field-invalid');
                    }
                }
                else {
                    el.addClass('field-invalid');
                }
            });
            
            form.submit(function(){
                return false;
            });
            
            $('#butSend').click(function(){
                var formvalid = true;
                inputfield.each(function(){
                    if (this.value == '') {
                        $(this).addClass('field-invalid');
                        formvalid = false;
                    }
                });
                if (!formvalid) {
                    m_alert(config.attention.title, config.attention.msg)
                }
                else {
                    jQuery.ajax({
                        type: "POST",
                        url: config.url,
                        data: form.serialize(),
                        dataType: 'json',
                        success: function(data){
                            if (data.success) {
                                m_alert(config.success.title, data.msg);
								f.reset();
                            }
                            else {
                                m_alert(config.errorServer.title, data.msg);
                            }
                        },
                        error: function(){
                            m_alert(config.errorAjax.title, config.errorAjax.msg);
                        }
                    });
                }
            })
        }
    }
}();

