var ajaxObjects = Array();
var ajaxParams = Array();
var ajaxTimeouts = Array();

function ajaxData()
{
 // funkcije
 this.ajaxSendRequest = ajaxSendRequest;
 this.ajaxCreateInstance = ajaxCreateInstance;
 
}

function ajaxSendRequest(pr, instanceId, timeout)
{
 if(!(timeout>1000)) timeout=15000;
 
 if(typeof(pr)=='object')
 {
  // url za post
  if(pr.urlpost>0) method="POST";
  else method = "GET";
  ajaxObjects[instanceId].open(method, pr.url, true);
  ajaxObjects[instanceId].setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");

  // parametri
  if(method=="GET")
  {
   var d = new Date();  
   mytime = d.getTime();
   myParams = encodeURIComponent("ajaxUniqueGetID") +'=' + encodeURIComponent(mytime);  
  }
  else myParams="";
  
  i=0;
  
  
  for (keyVar in pr.arrayParams) 
  {
   if(method=="POST" && i==0) myParams = encodeURIComponent(keyVar) +'=' + encodeURIComponent(pr.arrayParams[keyVar]);
   else myParams = myParams + '&' + encodeURIComponent(keyVar) +'=' + encodeURIComponent(pr.arrayParams[keyVar]);   
   i++;
  } 
    
  // parametri za podat response funkciji
  p = pr.arrayParams;
  for (keyVar in pr.arrayVoidParams) 
  {
   p[keyVar]=pr.arrayVoidParams[keyVar]
  } 
  ajaxParams[instanceId] = p;
  
  
  ajaxObjects[instanceId].send(myParams);  
  // dodaj ajax timeout
  ajaxObjects[instanceId].onreadystatechange=function()
  {
   try{
	   if(ajaxObjects[instanceId].readyState==4)
	   {
		if(ajaxObjects[instanceId].status==200)    
		{
		 rtext = ajaxObjects[instanceId].responseText;
		 eval(pr.responseFunction + "(rtext,ajaxParams[instanceId])");
		}
	   }
   }
   catch(err){
   }
  }
  
 } 
}



function ajaxCreateInstance(instanceId)
{
   try
   {
  // Firefox, Opera 8.0+, Safari
     xmlHttp=new XMLHttpRequest();
 }
 catch (e)
   {
     // Internet Explorer
     try
     {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
       }
     catch (e)
       {
        try
         {
          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
        catch (e)         {
          alert("Your browser does not support AJAX!");
          xmlHttp=false;
         }
       }
    }  
 ajaxObjects[instanceId] = xmlHttp;
}


// ---------------------------------------------- ajax timeout --------------------------------------------------------------
function ajaxStop(instanceId)
{
 
}




// ---------------------------------------------- ajax propreties -----------------------------------------------------------

function ajaxPropreties()
{
 
 // funkcije
 this.ajaxUrl=ajaxUrl;
 this.ajaxAddParam = ajaxAddParam;
 this.ajaxAddVoidParam = ajaxAddVoidParam;
 this.ajaxSetResponseFunction = ajaxSetResponseFunction; 
 

 // spremenljivke
 this.url = null;
 this.urlpost = 0;
 this.arrayParams = Array();
 this.arrayVoidParams = Array();
 this.responseFunction = null;

}


function ajaxUrl(url,postdata)
{
 this.url = url;
 this.urlpost = postdata;
 
}

function ajaxAddParam(pname,pvalue)
{
 this.arrayParams[pname]=pvalue;
}

function ajaxAddVoidParam(pname,pvalue)
{
 this.arrayVoidParams[pname]=pvalue;
}

function ajaxSetResponseFunction(fname)
{
 this.responseFunction=fname;
}


function ajaxXMLResponse(text)
{
 if (window.ActiveXObject)
 {
  var doc=new ActiveXObject("Microsoft.XMLDOM");
  doc.async="false";
  doc.loadXML(text);
 }
 // code for Mozilla, Firefox, Opera, etc.
 else
 {
  var parser=new DOMParser();
  var doc=parser.parseFromString(text,"text/xml");
 }
 if (doc) return doc;
 else return false;
}



String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}


function createXML()
{
// code for IE
if (window.ActiveXObject)
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async=false;
  return xmlDoc;  
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation &&
document.implementation.createDocument)
  {
  xmlDoc=document.implementation.createDocument("","",null);
  return xmlDoc;
  }
else
  {
  alert('Your browser cannot handle this script');
  }
}



function SerializeXML(Data){
// IE
if (window.ActiveXObject)
{
var doc= Data.xml
}
// code for Mozilla, Firefox, Opera, etc.
else
{
var s = new XMLSerializer();
var doc = s.serializeToString(Data);
}
return doc;
}