/*!
 * 
 */
(function($) {
	
$.fn.submitForm = function(options, callback) {
	var defaults = { 
			dataType: 'json'
	};
    var opts = $.extend(defaults, options);    
	
	opts.beforeSubmit = function(arr, jqForm, options) {
        var form = jqForm[0];
		//disable submit button

        if ($(form).attr('id')) {
            $('#'+$(form).attr('id')+' input[type="submit"]').addClass('disabled').attr('disabled', 'disabled');
        } else {
            $('input[type=submit]', $(form)).each(function() {this.disabled=true;$(this).addClass('disabled');});
        }

	    // hide errors
	    $('#'+$(form).attr('id')+' .at-error-msg').hide();
		$('#'+$(form).attr('id')+' .at-error-field').removeClass('at-error-field');

        return true;
	}
	
	opts.success = function(data)
	{
		$("#"+data.form_id+' input[type=submit]').each( function()
		{
			$(this).removeAttr("disabled").removeClass('disabled');
		} );
		
		var fieldPrefix = 'f';
		var msgPrefix = 'id_';

		if (data.fieldPrefix != undefined )
		{
			fieldPrefix = data.fieldPrefix;
		}

		if (data.msgPrefix != undefined)
		{
			msgPrefix = data.msgPrefix;
		}

		if (!data.status)
		{
			for (fid in data.errors)
			{
				var msgBox = $("#"+msgPrefix+fid);
				var field  = $("#"+fieldPrefix+fid);
				
				if (data.errors[fid].length)
				{
					field.addClass('at-error-field');

					msgBox.html(data.errors[fid]);
					msgBox.show();
					msgBox.addClass('at-error-msg');
				}
			}

			if ($('.at-error-field:first').hasClass('mceEditor')) {
				tinyMCE.execCommand('mceFocus',false,$('.at-error-field:first').attr('id'));
			} else {
				$('.at-error-field:first').focus();
			}
			
			//$(window).scrollTop($('.at-error-field:first').offset().top - 10);

			if (callback)
			{
				callback(data);
			}
		}
		else
		{
			if (data.noredirect)
			{
				if (callback)
				{
					callback(data);
				}
			}
			else
			{
				window.location = data.redirectUrl;
			}
		}
	}
	
	this.ajaxForm(opts);
}

})(jQuery);
