function addEvent(element, type, handler) {
  // assign each event handler a unique ID
  if (!handler.$$guid) handler.$$guid = addEvent.guid++;
  // create a hash table of event types for the element
  if (!element.events) element.events = {};
  // create a hash table of event handlers for each element/event pair
  var handlers = element.events[type];
  if (!handlers) {
    handlers = element.events[type] = {};
    // store the existing event handler (if there is one)
    if (element["on" + type]) {
      handlers[0] = element["on" + type];
    }
  }
  // store the event handler in the hash table
  handlers[handler.$$guid] = handler;
  // assign a global event handler to do all the work
  element["on" + type] = handleEvent;
};
// a counter used to create unique IDs
addEvent.guid = 1;

function removeEvent(element, type, handler) {
  // delete the event handler from the hash table
  if (element.events && element.events[type]) {
    delete element.events[type][handler.$$guid];
  }
};

function handleEvent(event) {
  var returnValue = true;
  // grab the event object (IE uses a global event object)
  event = event || fixEvent(window.event);
  // get a reference to the hash table of event handlers
  var handlers = this.events[event.type];
  // execute each event handler
  for (var i in handlers) {
    this.$$handleEvent = handlers[i];
    if (this.$$handleEvent(event) === false) {
      returnValue = false;
    }
  }
  return returnValue;
};

function fixEvent(event) {
  // add W3C standard event methods
  event.preventDefault = fixEvent.preventDefault;
  event.stopPropagation = fixEvent.stopPropagation;
  return event;
};
fixEvent.preventDefault = function() {
  this.returnValue = false;
};
fixEvent.stopPropagation = function() {
  this.cancelBubble = true;
};

// end from Dean Edwards


//////////////////////////////////////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////////////////////////////////////


var myGlobalHandlers = {
    onCreate: function(){		 
     //method//
    },

    onComplete: function() {
     //method//
	// online_users = 
    }
  };

  Ajax.Responders.register(myGlobalHandlers);

AjaxClass =  function(MAIN) {
  return {
    d__    :(MAIN),
    preloader  :'<div style="font-family:Trebuchet MS, Arial, Sans-serif, Georgia;font-size:11px;color:#fff;background-color:#AA0104;width:150px;  position:absolute;z-index:1000;left:8; top:8">Loading...</div>',
    align_center:0,
    openForm:function(formName,url,method,div){
    //openForm ---- submit la form se 
	
	rand = "&r=" +Math.random()*10000;
    param=Form.serialize(formName)
    if(String(div) == "undefined"){div = MAIN}
      this.d__=(div)
      var d__=this.d__;
	  if(this.d__ == 'status' || this.d__ == 'footer' || this.d__ == 'chatoutput'){	
		  isStatus = true;
	  } else {
	  	 isStatus = false;
	  }
      var myAjax = new Ajax.Updater(
		{success:d__},
      url,
    	{
        method: method,
        parameters: param+rand,
        evalScripts: true,
        d__:d__,
        on404: function(t)     {Element.update(d__,'404:Error ' + t.status + ' -- ' + t.statusText);},
        onFailure: function(t)   {Element.update(d__,'Failed:Error ' + t.status + ' -- ' + t.statusText);},
        onException:function (t) {alert('Connection Droped:');Element.update(d__, 'Connection Droped:'+t.url )}

      });
      },
     openLink:function(url,param,method,div){
		
      if(String(div) == "undefined"){  div = MAIN}
      this.d__=(div);
      var d__=this.d__;
	  rand = "r=" +Math.random()*10000;	 
      
      var myAjax = new Ajax.Updater(  {success:d__},
          url,
        	{
            method: method,
            parameters: param,
            evalScripts: true,
            d__:d__,
            on404: function(t)     {Element.update(d__,'404:Error ' + t.status + ' -- ' + t.statusText);},
            onFailure: function(t,r)   {Element.update(d__,'Failed:Error ' + t.status + ' -- ' + t.statusText);},
            onException:function (t) {Element.update(d__, 'Connection Droped:'+t.status + ' -- ' + t.statusText )}
			//onComplete:function() {for (i in arguments) alert(arguments[i]);}
        	});/**/
          }
  }
}


