
String.prototype.trim = function () { return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"); };

function left(myStr,charCount)
 {
  return myStr.substring(0,charCount)
 }

function right(myStr,charCount)
 {
  return myStr.substring(myStr.length-charCount,myStr.length)
 }

// start to ajaxObject
var ajaxTxtResult=""; //Default Variable
var postData="";
var ajaxConnectionClones=new Array() // global ajaxConnectionObject
 function defaultAjaxResultFunction(res)
 {
  ajaxTxtResult=res;
 }



function ajaxRun(url,funct_name,method)
{
 new ajaxConnectionObject.initial(url,funct_name,method,postData);
}



var ajaxConnectionObject=new Object();
 ajaxConnectionObject.initial=function(uri,returnTo,method,postData)
  {
	this.uri=uri;
	this.method=method;
	this.postData=postData;
	this.globalID=this.findDescriptor();
			if(this.globalID==-1)
			{
					ajaxConnectionClones[ajaxConnectionClones.length]=this
					this.globalID=ajaxConnectionClones.length-1
			}
			else
			 {
					 ajaxConnectionClones[this.globalID]=this
			 }
    this.callBack=this.XMLHttpeventResultAccept;
   //this.method="GET";
   this.connections=null;
   this.returnTo=returnTo;
    if(returnTo=="")
     this.returnTo="defaultAjaxResultFunction";
   this.run();
  }
 ajaxConnectionObject.initial.prototype={
  run:function()
   {
    this.GetEvents(this.uri,this.method,this.callBack);
   },
  findDescriptor:function()
   {
    for(i=0;i<ajaxConnectionClones.length;i++)
     {
    if(ajaxConnectionClones[i]==null)
       {return i;}
     }
    return -1;
   },
  GetEvents:function(urls,method,callback)
   {
    this.connections=this.getXMLHTTPRequest();
    var sender=this;
    this.connections.onreadystatechange =function(){sender.XMLHttpeventResultAccept.call(sender);}
	if(this.method.trim().toLowerCase()=="post")
	   {
		this.connections.open(method, urls, true);
		this.connections.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.connections.send(this.postData); 
	   }
	   else
	   {
			this.connections.open( method,urls,  true);
			this.connections.send(null); 
	   }
                           
  },
  getXMLHTTPRequest:function() 
   {
    var xRequest=null;
     if (window.XMLHttpRequest) 
      {
       xRequest=new XMLHttpRequest();
      }
     else if (typeof ActiveXObject != "undefined")
      {
       xRequest=new ActiveXObject("Microsoft.XMLHTTP");
      }
                  return xRequest;
   },
 XMLHttpeventResultAccept:function() 
  {
   //var myConnect=eval(this.name)
    if(this.connections.readyState == 4) 
     {
     if(this.connections.status == 200)
      {
       var requestResult=this.connections.responseText;
       eval(this.returnTo+"(requestResult)");
       ajaxConnectionClones[this.globalID]=null
      }

     }
  }
  
}



