function makeHttpRequest(url, responseHandler) 
{
	http_request = false;

  if(window.XMLHttpRequest) 
  {
  	try
	{
		http_request = new XMLHttpRequest();
    } 
	catch(e)
	{
		http_request = false;
    }
  } 
  else if(window.ActiveXObject) 
  {
     	try
		{
      		http_request = new ActiveXObject("Msxml2.XMLHTTP");
    	} 
		catch(e)
		{
      		try
			{
        		http_request = new ActiveXObject("Microsoft.XMLHTTP");
      		} 
			catch(e) 
			{
        		http_request = false;
      		}
		}
  }
  
  // force ie to use no cache
  var sep = (-1 < url.indexOf("?")) ? "&" : "?"	
	url = url + sep + "__=" + encodeURIComponent((new Date()).getTime());
  
	if(http_request) {
		http_request.onreadystatechange = responseHandler;
		http_request.open("GET", url, true);
		http_request.send("");
	}
	return http_request;
}

function hashPassword(password, challenge) {
	var response = hex_md5(password) + challenge;
	var md5_response = hex_md5(response);
		
	return md5_response;
}

function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function findObj(n, d) {
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	if(!x) x=d.getElementById(n); if (!x) x=d.getElementsByName(n)[0]; return x;
}

function swapImage() { 
	var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=findObj(a[i]))!=null){document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function swapImgRestore() { //v3.0
	var i,x,a=document.sr;
	for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}


