function getXMLhttp() {
  var xmlhttp = false;
  try {
    // Mozilla / Safari / IE7+
    xmlhttp = new XMLHttpRequest();
  } catch (e) {
    // IE
    var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
                  'MSXML2.XMLHTTP.4.0',
                  'MSXML2.XMLHTTP.3.0',
                  'MSXML2.XMLHTTP',
                  'Microsoft.XMLHTTP' );
    var success = false;
    for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
      try {
      xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
      success = true;
      } catch (e) {}
    }
    if (!success) {
      alert('Unable to create XMLHttpRequest.');
    }
  }
  return xmlhttp;
}

function loadXML(file) {
  var xmlDoc;
  if (window.XMLHttpRequest) {
    xmlDoc=new window.XMLHttpRequest();
    xmlDoc.open("GET", file, false);
    xmlDoc.send("");
    return xmlDoc.responseXML;
  } else if (ActiveXObject("Microsoft.XMLDOM")) {
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.load(file);
    return xmlDoc;
  }
}

function getField(field) {
  var myField;
  if( document.getElementById )
    myField = document.getElementById(field);
  else if( document.all )
    myField = document.all[field];
  else if( document.layers )
    myField = document.layers[field];

  return myField;
}

function ucFirst(str) {
  return str.substr(0,1).toUpperCase() + str.substr(1,str.length);
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function loadCSS(file) {
  var fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet")
  fileref.setAttribute("type", "text/css")
  fileref.setAttribute("href", file)

 if (typeof fileref != "undefined")
  document.getElementsByTagName("head")[0].appendChild(fileref)
}

function wordWrap (str, width, breaker, linewrap) {
  var m = ((arguments.length >= 2) ? arguments[1] : 79   );
  var b = ((arguments.length >= 3) ? arguments[2] : "\n" );
  var c = ((arguments.length >= 4) ? arguments[3] : false);
 
  var i, j, l, s, r;
 
  str += '';
 
  if (m < 1) {
    return str;
  }
 
  for (i = -1, l = (r = str.split(/\r\n|\n|\r/)).length; ++i < l; r[i] += s) {
    for (s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : "")){
      j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length || c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
    }
  }
    
  return r.join("\n");
}

function getElementsByClass(cl, tag) {
  var elements;

  if (document.getElementsByClassName)
    elements = document.getElementsByClassName(cl);
  else {
    elements = new Array();
    i = 0;
    q = document.getElementsByTagName(tag);
    while (element = q[i++]) {
      if (element.className == cl) {
        elements[elements.length++] = q[i-1];
      }
    }
  }
  return elements;
}

function checkForUpdates() {
  var req = getXMLhttp();
  req.open("GET", "/xlib/ajax/update.php");
  req.send(null);
}
