var tmp_index = document.URL.substring(8).indexOf("/") + 8 + 1;
var base = document.URL.substring(0, tmp_index);

var IE = document.all ? true : false;

// Set-up to use getMouseXY function onMouseMove
document.onmousemove = getMouseXY;

// Temporary variables to hold mouse x-y pos.s
var posX = 0;
var posY = 0;

function $(name) {
  return document.getElementById(name);
}

// does the array contain the given value?
Array.prototype.contains = function(val) {
  for (var x=0; x<this.length; x++)
  if (this[x] == val)
  return true;

  return false;
}

// grab last index of val,  -1 if not exists
Array.prototype.indexOf = function(val) {
  var idx = -1;
  for (var x=0; x<this.length; x++)
  if (this[x] == val)
  idx = x;

  return idx; 
}

function isArray(obj) {
  if (obj.constructor.toString().indexOf("Array") == -1)
    return false;

  return true;
}

/* find an element by name in a form */ 
function find_element(form, name) {
  for (zx=0; zx<form.length; zx++)
    if (form[zx].name == name)
      return form[zx];

  return null;
}

// Main function to retrieve mouse x-y pos.s
function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    posX = event.clientX + document.body.scrollLeft;
    posY = event.clientY + document.body.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    posX = e.pageX;
    posY = e.pageY;
  }  

  // catch possible negative values in NS4
  if (posX < 0) { posX = 0; }
  if (posY < 0) { posY = 0; } 

  return true;
}

function ucword(word) {
  word = word.substring(0, 1).toUpperCase() + word.substring(1, word.length);
  return word;
}

function popup(page, width, height) {
  opts  = "width=" + width + ",height=" + height + ",";
  opts += "left=200,top=100,scrollbars=1,location=0,statusbars=0,resizable=1,menubar=0";
  win1 = window.open(page, "window", opts);
  win1.focus();
}

function getRequestObject() {
  http_request = null;

  if (window.XMLHttpRequest) {
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
      http_request.overrideMimeType('text/xml');
  } else {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
  }

  return http_request;
}

function HttpSyncGetRequest(url) {
  request = getRequestObject();
  // last arg, should this request be handled asychronously? 
  request.open("GET", url, false);
  request.send("");

  return request.responseText;    
}

function HttpAsyncGetRequest(url) {
  request = getRequestObject();

  request.open("GET", url, true);
  request.send("");

  return request.responseText;    
}

function HttpSyncPostRequest(url, params) {
  request = getRequestObject();

  request.open("POST", url, false);
  request.setRequestHeader("Content-length", params.length);
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.send(params);

  return request.responseText;
}

function HttpAsyncPostRequest(url, params) {
  request = getRequestObject();

  request.open("POST", url, true);
  request.setRequestHeader("Content-length", params.length);
  request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  request.send(params);

  return request.responseText;    
}

