//------------------------------------------------------------------------------
function AJAX_MakeRequest(elementName,url,method) {
  var http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    /*if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
    }*/
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if(!http_request) {
    alert('Cannot create an XMLHTTP instance');
    return false;
  }
  if(!method) {
    method=AJAX_OnReadyStateChangeDummy;
  }

  http_request.onreadystatechange = function() { method(elementName,http_request); };
  http_request.open('GET', url, true);
  http_request.send(null);
}


//------------------------------------------------------------------------------
function AJAX_MakePostRequest(elementName,url,callback_method,parameters) {
  var http_request = false;

  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
      // See note below about this line
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }

  if(!http_request) {
    alert('Cannot create an XMLHTTP instance');
    return false;
  }

  if(!callback_method) {
    callback_method=AJAX_OnReadyStateChangeDummy;
  }

  http_request.onreadystatechange = function() { callback_method(elementName,http_request); };
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);
}


//------------------------------------------------------------------------------
function AJAX_OnReadyStateChangeDummy(elementName,http_request) {}


//------------------------------------------------------------------------------
function AJAX_OnReadyStateChange(elementName,http_request) {
  if (http_request.readyState != 4) {
    return;
  }
  if (http_request.status == 200) {
    document.getElementById(elementName).innerHTML=http_request.responseText;
  } else {
    document.getElementById(elementName).innerHTML='There was a problem with the AJAX request.';
  }
}


//------------------------------------------------------------------------------
function AJAX_ChangeContents(elementName,url) {
  AJAX_MakeRequest(elementName,url,AJAX_OnReadyStateChange);
}


//------------------------------------------------------------------------------
function AJAX_LoadJavascript(tag,file) {
  var head = document.getElementsByTagName('head').item(0)
  var scriptTag = document.getElementById(tag);
  if(scriptTag) head.removeChild(scriptTag);
  script = document.createElement('script');
  script.src = file;
	script.type = 'text/javascript';
	script.id = tag;
	head.appendChild(script);
}


//------------------------------------------------------------------------------
// used by client image library
function AJAX_SwapImage(element,src,w,h,alt) {
  w = typeof(w) != 'undefined' ? w : 0;
  h = typeof(h) != 'undefined' ? h : 0;
  alt = typeof(alt) != 'undefined' ? alt : '';

  var img=document.getElementById(element);
  var buffer="<img src='"+src+"' alt='"+alt+"'";
  alert(buffer);
  if(w>0) buffer+=" width='"+w+"'";
  if(h>0) buffer+=" height='"+h+"'";
  buffer+="/>";
  alert(buffer);
  img.innerHTML=buffer;
}


//------------------------------------------------------------------------------
// used by client image library
function AJAX_DeleteSelectedImages(element,id) {
  for (var i=0;i<element.length;++i) {
    if(element[i].checked) {
      var name=element[i].value;
      AJAX_ChangeContents("image_destination","deleteimage.php?id="+id+"&name="+name);
    }
  }
}


//------------------------------------------------------------------------------
function AJAX_MakePostRequestForm(elementName,url,callback_method,form_id) {
  var form=document.getElementById(form_id);
  //alert(form);
  //alert(form.elements.length);
  var parameters="";
  var j=0;
  for(i=0;i<form.elements.length;++i) {
    if(form.elements[i].name) {
      if(j) {
        parameters+="&";
      }
      //alert(form.elements[i].name+"="+encodeURI(form.elements[i].value));
      parameters+=form.elements[i].name+"="+encodeURI(form.elements[i].value);
      ++j;
    }
  }
  //alert(parameters);
  AJAX_MakePostRequest(elementName,url,callback_method,parameters);
}


//------------------------------------------------------------------------------
function EnsureScriptIsLoaded(functionName,script_id,script_src) {
  if(self.functionName) {
    return;
  }
  var head=document.getElementByTagName('head')[0];
  script=document.createElement('script');
  script.id=script_id;
  script.type='text/javascript';
  script.src=script_src;
  head.appendChild(script);
}


//------------------------------------------------------------------------------
if(typeof DOMParser == "undefined") {
  DOMParser = function() {}
  DOMParser.prototype.parseFromString = function(str, contentType) {
    if(typeof ActiveXObject != "undefined") {
       var d = new ActiveXObject("Microsoft.XMLDOM");
       d.async="false";
       d.loadXML(str);
       return d;
    } else if(typeof XMLHttpRequest != "undefined") {
       var req = new XMLHttpRequest;
       req.open("GET", "data:" + (contentType || "application/xml") +";charset=utf-8," + encodeURIComponent(str), false);
       if(req.overrideMimeType) {
         req.overrideMimeType(contentType);
       }
       req.send(null);
       return req.responseXML;
    }
  }
}