window.i3.form = {}

window.i3.form.markup = function(form, object)
{
    $(form).unbind('submit.i3');
    if (jQuery().validate)
    {
        if ($(form).find("input[name=popup]").length > 0) {
            $(form).validate({
                rules: object,
                submitHandler: function(form)
                {       
                        i3.popup.ajaxValidate(form);
                }
            });
        } else {
            $(form).validate({
                rules: object
            });
        }
    }
    
    for(var field in object)
    {
        if (object[field].required)
            $(form).find("label[for="+field+"]").prepend("<span class='req'>*</span>");
    }
}

window.i3.form.formSubmitHelper = function(form, handler)
{
    if (handler)
    {
        if ($(handler)[0].nodeName == 'FORM')
        {
            $(handler).find('input, select').each(function()
            {
                if ($(this).val() && ($(this).attr('type')=='checkbox' ? $(this).attr('checked') : true))
                    $(form).append("<input type='hidden' name='"+this.name+"' value='"+$(this).val()+"'/>");
            });
        }
        else
        {                
            if ($(form).find('#js_additional').length == 0)
            {
                if ($(handler).attr('name'))
                    $(form).append("<input id='js_additional' type='hidden' name='"+$(handler).attr('name')+"' value='"+$(handler).val()+"'/>");
                else
                    $(form).append("<input id='js_additional' type='hidden' name='"+$(handler).val()+"' value='true'/>");
            }
            else
            {
                if ($(handler).attr('name'))
                    $(form).find('#js_additional').attr('name',$(handler).attr('name')).val($(handler).val());
                else
                    $(form).find('#js_additional').attr('name',$(handler).val());
            }
        }
    }

    if ($(form).find('submit, button[type=submit]').length > 0)
        $(form).find('submit, button[type=submit]').click();
    else
        $(form).submit();
}

window.i3.form.formSubmit = function(form, handler)
{    
    if (handler)
    {        
        if ($(handler).val() == 'delete_selected' || $(handler).val() == 'delete')
        {
            i3.popup.confirmPopup(null, handler, function()
            {
                window.i3.form.formSubmitHelper(form, handler);
            });
            
            return;
        }
        else if($(handler).find(':selected').attr('confirm') || $(handler).find(':selected').attr('question'))
        {
            i3.popup.confirmPopup(null, $(handler).find(':selected'), function()
            {
                if ($(handler).find(':selected').attr('action'))
                {
                    return new Function($(handler).find(':selected').attr('action'))();
                }
                else
                    window.i3.form.formSubmitHelper(form, handler);
            });
            
            return;
        }
        else
            if ($(handler).find(':selected').attr('action'))
            {
                return new Function($(handler).find(':selected').attr('action'))();
            }
    }
    
    window.i3.form.formSubmitHelper(form, handler);
}

window.i3.form.formSelect = function(form, handler)
{
    var value = $(handler).find(':selected').val();
    switch (value)
    {
        case 'All':
            $(form).find('[type=checkbox]').attr('checked','checked');
        break;
        case 'Invert':
            $(form).find('[type=checkbox]').each(function()
            {
                if ($(this).attr('checked'))
                    $(this).removeAttr('checked');
                else
                    $(this).attr('checked','checked');
            });
        break;
        case 'None':
            $(form).find('[type=checkbox]').removeAttr('checked');
        break;
    }
}
