var formViewPreSubmitCallbacks = [];
function submitFormView(id, action, form_action)
{
    frm = document['frm_'+id];
    if (frm)
    {
        frm.form_action.value=action;
        if ((frm.onsubmit && frm.onsubmit()) || !frm.onsubmit)
        {
            if (formViewPreSubmitCallbacks.length > 0)
            {
                var callback;
                for (var i=0; i<formViewPreSubmitCallbacks.length; i++)
                {
                    callback = formViewPreSubmitCallbacks[i];
                    if (false === eval(callback)(id, action, form_action))
                    {
                        return false;
                    }
                }
            }
            return frm.submit();
        }
        else
        {
            return false;
        }
    }
}

function submitFormViewAjax(id, action, form_action)
{
    formViewPreSubmitCallbacks[formViewPreSubmitCallbacks.length] = 'submitFormAjax';
    return submitFormView(id, action, form_action);
}

function submitFormAjax(id, action, form_action)
{
    //alert ((0==null) ? 'true':  'false');    
    var form = document.getElementById('frm_'+id);

    //gather the form variables and post them
    var form_data = {};
    var fields = form.elements;
	for(var i=0; i < fields.length; ++i)
	{
	    if(fields[i].value)
	    {
	       form_data[fields[i].name] = (fields[i].type=='radio' || fields[i].type == 'checkbox') ? (fields[i].checked ? fields[i].value : '') : fields[i].value;
	    }
	}
	
	form_data['ajax'] = true;
	var url = (form_action) ? form_action : window.location;

    Ext.Ajax.request({
        url: url,
        method: 'POST',
        params: form_data,
        success: function(result, request) 
        {
            //var json = result.responseText.evalJSON();
            var jsonData = Ext.util.JSON.decode(result.responseText);
            if(jsonData.success == false)
            {
                show_error(jsonData);
            }
            else
            {
                show_success(jsonData);
            }
        },
         failure: function(result, request) 
         {
             var jsonData = Ext.util.JSON.decode(result.responseText);
             Ext.MessageBox.alert('Failed','unable to save the form: '+jsonData.message);
         }
    });
    
    return false;
}



function show_success(json_response)
{
    Ext.MessageBox.alert('Success', json_response.message);
}

function show_error(json_response)
{
    Ext.MessageBox.alert('Error','Unable to save change: '+json_response.message);
}



function initTabs(formId)
{
    var tabs = window[formId+'_tabs'];
    showTab(formId, tabs[0]);
}

function showTab(formId, tabId)
{
    var tabs = window[formId+'_tabs'];
    var tab;
    for (var i=0; i<tabs.length; i++)
    {
        tab = document.getElementById(tabs[i]);
        tabBtn = document.getElementById(tabs[i]+'_btn');
        if (tabs[i] == tabId)
        {
            tabBtn.className = 'active';
            tab.style.display = '';
        }
        else
        {
            tabBtn.className = '';
            tab.style.display = 'none';
        }
    }
}

