
var AjaxForm = Class.create({

	initialize: function(formId, options) {
		if (!Object.isElement($(formId)))
			return false;
		
		this.form = $(formId);

		if (typeof options == 'object')
		{
			this.onComplete = (options.onComplete) ? options.onComplete : function(){};
			this.onSubmit = (options.onSubmit) ? options.onSubmit : function(){};
		}
		else
		{
			this.onComplete = function(){};
			this.onSubmit = function(){};
		}

		this.form.onsubmit = function(){return false};
		
		if (!this.form.action)
			this.form.action = location.href;

		this.form.observe('submit', function(event) {
			this.onSubmit();
			ajax_submitForm(this.form, this.onComplete.bind(this));
		}.bindAsEventListener(this));
	},
	
	reSubmit: function() {
		ajax_submitForm(this.form, this.onComplete.bind(this));
	}

});


ajaxOnComplete = function(ajax, afterOnComplete)
{
	//Dialog.closeInfo();
	var response;
	
	try {
		response = ajax.responseText.evalJSON();
	}
	catch(e)
	{
	}

	if (typeof response == 'object') 
	{
		if (response.event)
			document.fire(response.event, {response:response});

		if (response.errors && response.errors.length)
		{
			str = '';
		
			for (i=0; i<response.errors.length; i++)
				str += '- ' + response.errors[i] + '\n';
			alert(str);
		}
		else if (response.message)
		{	
			alert(response.message);
			if (response.redirect)
				location.href = response.redirect;
			if (response.reload)
				location.reload();
		}
		else if (response.redirect)
			location.href = response.redirect;
		else if (response.reload)
			location.reload();

		if (afterOnComplete)
			afterOnComplete(response);
	}
	else
		Modalbox.show(ajax.responseText, {height: document.viewport.getHeight()});
}


ajax_submitForm = function(formId, afterOnComplete)
{
	var lm = new Messages.ShowLoadingMessage('Kis türelmet...');
	$(formId).request({ 
		onComplete: function(ajax){
			lm.remove();
			ajaxOnComplete(ajax, afterOnComplete);
		}
	})
}



ajax_submitURL = function(URL, afterOnComplete)
{
	new Ajax.Request(URL, {
		method: 'get',
		onComplete: function(ajax) {
			ajaxOnComplete(ajax, afterOnComplete);
		}
	});
}


ajax_submitPostURL = function(URL, parameters, afterOnComplete)
{
	var lm = new Messages.ShowLoadingMessage('Kis türelmet...');
	new Ajax.Request(URL, {
		method: 'post', 
		parameters: parameters, 
		onComplete: function(ajax) {
			lm.remove();
			ajaxOnComplete(ajax, afterOnComplete);
		}
	});
}


ajax_submitPost = function(parameters, afterOnComplete)
{
	var lm = new Messages.ShowLoadingMessage('Kis türelmet...');
	new Ajax.Request(location.href.split('#')[0], {
		method: 'post', 
		parameters: parameters, 
		onComplete: function(ajax) {
			lm.remove();
			ajaxOnComplete(ajax, afterOnComplete);
		}
	});
}

