var js_node;

var SmartyAjax = {
  update: function(update_id, url, method, params, callback) {
  	
  	
  	url =  url + "?" + params +  "&update_id=" + update_id +"&"+ create_unique_id();
  	// Create new JS element
    var html_doc = document.getElementsByTagName('head').item(0);

    var js = document.createElement('script');
    	
    js.setAttribute('language', 'javascript');
	js.setAttribute('type', 'text/javascript');
   	js.setAttribute('src', url );

   	/*if (js_node)
 	{
      	html_doc.replaceChild(js,js_node);
    }
	else
    { 
    	html_doc.appendChild(js);
    }*/
    
    html_doc.appendChild(js);
    js_node = js;

    /*var ss_page = new String(url);
	//var ss_mark = ss_page.indexOf('?', 10);
	//if (ss_mark >= 0) ss_page = ss_page.substring(0, ss_mark);
	var params = 'http://web-stats.vertex-brest.com/modules/click.php?id=10&cnt_js=1&page=' + escape(ss_page) + '&referrer=' + escape(document.referrer);


    if (parseInt(navigator.appVersion) >= 4)
    {
    	var date = new Date();
    	
    	params += '&ua='+escape(navigator.userAgent);
    	//params += '&title='+escape(document.title);
    	params += '&aV='+escape(navigator.appVersion);
    	params += '&resolution=' + screen.width + 'x' + screen.height;
    	params += '&bpp=' + screen.colorDepth;
    	params += '&java=' + navigator.javaEnabled();
    	params += '&time=' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
    	params += '&tz=' + date.getTimezoneOffset()/(-60);
    	//params = params.replace(/\//g, '%'+'2F');
    	
    }

    var img = new Image();
    img.src = params;
    */
    

    /*var myAjax = new Ajax.Updater(
      update_id,
      url,
      {
      	evalScripts: true,
        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(update_id, page, form, php_function, callback) {
  	
  	var params_query = Form.serialize(form.id) + "&f=" + php_function + "&page=" + page;


  	var url =  form.action + "?" + params_query +  "&update_id=" + update_id +"&"+ create_unique_id();;
  	
  	// Create new JS element
    var html_doc = document.getElementsByTagName('head').item(0);

    var js = document.createElement('script');
    	
    js.setAttribute('language', 'javascript');
	js.setAttribute('type', 'text/javascript');
   	js.setAttribute('src', url );

   	/*if (js_node)
 	{
      	html_doc.replaceChild(js,js_node);
    }
	else
    { 
    	html_doc.appendChild(js);
    }*/
    
    html_doc.appendChild(js);
    js_node = js;
    

  	/*var myAjax = new Ajax.Updater(
      update_id,
      form.action,
      {
      	evalScripts: true,
        method: form.method,
        parameters: params_query,
        onComplete: callback
      });	*/
     return false;
  },


  onSubmit: function(originalRequest) 
  {
    
    
    //var results = originalRequest.responseText.split(";");
    //alert(originalRequest.responseText);

    //results[0]  content
    //results[1] url
    //results[2] 'get' or 'post'
    //results[3] params

    //SmartyAjax.update(results[0], results[1], results[2], results[3] );

    /*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: "ОБРАБОТКА ЗАПРОСА...",

  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 = 300;//top + "px";
    this.process.style.right = 500;
    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";
  }
}

