var SmartyAjax={
	update: function(update_id, url, method, params, callback){
		var myAjax=new Ajax.Updater(
			update_id,
			url,
			{
				method: method,
				parameters: params,
				onComplete: callback
			});
	},
	call: function(url, method, params, callback, params_func){
		if (params_func){
			if (params.length != 0) params += "&";
			params += $H(params_func()).toQueryString();
		}
		var myAjax=new Ajax.Request(
			url,
			{
				method: method,
				parameters: params,
				onComplete: callback
			});
	},
	submit: function(form, params, callback){
		var myAjax=new Ajax.Request(
			form.action,
			{
				method: form.method,
				parameters: Form.serialize(form.id),
				onComplete: callback || this.onSubmit
			});
	},
	onSubmit: function(originalRequest){
		var results=originalRequest.responseText.split(";");
		if (results[0] == "true"){
			SmartyAjax.Messages.set(results[1], SmartyAjax.Messages.MT_WARNING)
		} else {
			SmartyAjax.Messages.clear();
			SmartyAjax.Messages.setType(SmartyAjax.Messages.MT_ERROR);
			for (var i=1; i < results.length; i++){
				SmartyAjax.Messages.add(results[i]);
			}
		}
	}
}
SmartyAjax.GlobalHandlers={
	onCreate: function(){
//		SmartyAjax.Process.show();
	},
	onComplete: function(){
		if(Ajax.activeRequestCount == 0){
//			SmartyAjax.Process.hide();
		}
	}
};
Ajax.Responders.register(SmartyAjax.GlobalHandlers);
SmartyAjax.Messages={
	MT_WARNING: 0,
	MT_ERROR: 1,
	S_MT_WARNING: "Please note:",
	S_MT_ERROR: "Please fix following errors:",
	initialize: function(){
		this.messages=$("messages");
		this.messagesTitle=$("messages-title");
	},
	clear: function(){
		if (!this.messagesList){
			this.messagesList=$("messages-list");
			if (!this.messagesList) return;
		}
		this.messagesList.innerHTML="";
		this.messagesList.style.display="none";
	},
	add: function(message){
		if (!this.messagesList){
			this.messagesList=$("messages-list");
			if (!this.messagesList) return;
		}
		var messageLI=document.createElement("LI");
		messageLI.innerHTML=message;
		this.messagesList.appendChild(messageLI);
		this.messagesList.style.display="block";
		Element.scrollTo("messages");
	},
	set: function(message, type){
		this.clear();
		this.setType(type);
		this.add(message);
	},
	setType: function(type){
		if (!this.messages) this.messages=$("messages");
		if (!this.messagesTitle) this.messagesTitle=$("messages-title");
		switch (type){
			case this.MT_ERROR:
				if (this.messages) this.messages.className="data-error";
				if (this.messagesTitle) this.messagesTitle=this.S_MT_ERROR;
				break;
			case this.MT_WARNING:
			default:
				if (this.messages) this.messages.className="data-warning";
				if (this.messagesTitle) this.messagesTitle=this.S_MT_WARNING;
		}
	}
}
SmartyAjax.Process={
	S_PROCESS: "processing request...",
	show: function(){
		if (!this.process){
			this.process=$("ajax-process");
			if (!this.process) return;
		}
		var top=window.pageYOffset?window.pageYOffset:document.documentElement?document.documentElement.scrollTop:document.body.scrollTop;
		this.process.style.top=top + "px";
		this.process.innerHTML=this.S_PROCESS;
		this.process.style.display="inline";
	},
	hide: function(){
		if (!this.process){
			this.process=$("ajax-process");
			if (!this.process) return;
		}
		this.process.style.display="none";
	}
}
