﻿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(";");
	var msg = $("messages");
	if (results[0] == "true") {
		msg.className = "data-warning";
		msg.innerHTML = results[1];
    } else {
		var res="";
		for (var i = 1; i < results.length; i++) {
        	res = res + results[i];
      	}
		msg.className = "data-error";
		msg.innerHTML = res;
	}
  }
}

SmartyAjax.GlobalHandlers = {
	onCreate: function() {
		SmartyAjax.Process.show();
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
	  		SmartyAjax.Process.hide();
		}
	}
};

Ajax.Responders.register(SmartyAjax.GlobalHandlers);

SmartyAjax.Process = {
  S_PROCESS: " ",

  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.display = "inline";
  },

  hide: function() {
    if (!this.process) {
      this.process = $("ajax-process");
      if (!this.process) return;
    }
    this.process.style.display = "none";
  }
}

