  function getRef(id) {
    return (typeof(id) == "string") ? document.getElementById(id) : id;
  }

  function changeClass(id,myClass) {
    myElmt = getRef(id);
    if (myElmt) myElmt.className = myClass;
  }

  function changeStyle(id,myStyle,value) {
    myElmt = getRef(id);

    if (myElmt) {

      var multiVals = value.split(',');

      if (multiVals[1]) {
        try {
          myElmt.style[myStyle] = multiVals[0];
        } catch (e) {
          myElmt.style[myStyle] = multiVals[1];
        }
      } else {
        myElmt.style[myStyle] = value;
      }
    }
  }

  function changeValue(id,newVal) {
    myElmt = getRef(id);
    if (myElmt) myElmt.value = newVal;
  }

  function changeText(id,newText) {
    myElmt = getRef(id);
    if (myElmt) myElmt.innerHTML = newText;
  }

  function appendText(id,newText) {
    myElmt = getRef(id);
    if (myElmt) myElmt.innerHTML += newText;
  }

  function clearText(id) {
    myElmt = getRef(id);
    if (myElmt) myElmt.innerHTML = '';
  }

  function addChild(id,newText) {
    myElmt = getRef(id);
    if (myElmt) myElmt.appendChild(newText);
  }

  function clickItem(id) {
    myElmt = getRef(id);
    if (myElmt) myElmt.click();
  }

  function addHidden(name,val,extrasDiv) {
    extrasDiv = (extrasDiv) ? extrasDiv : "myFormExtras";
    myItem = document.getElementById(extrasDiv);
    myItem.innerHTML += "<input type=\"hidden\" name=\"" + name + "\" value=\"" + val + "\" />";
  }

  function formSubmit(myForm) {
    myForm = (myForm) ? document.getElementById(myForm) : document.forms[0];
    if (myForm) myForm.submit();
  }

  function doOpen(id) {
    myElmt = document.getElementById(id);
    if (myElmt) myElmt.style["display"] = 'inline';
  }

  function doClose(id) {
    myElmt = document.getElementById(id);
    if (myElmt) myElmt.style["display"] = 'none';
  }

  function popUp(URL) {
    day = new Date();
    id = day.getTime();
    window.open(URL,0,'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=yes,width=630,height=480,left = 360,top = 212');
  }

  function closePopUp() {
    opener.window.location.reload(false);
    window.close();
  }

  function makePass() {
    myDiv = document.getElementById('myFormExtras');
    myDiv.innerHTML += "<input type=\"hidden\" name=\"random_pass\" value=\"1\" />\n";
    clickItem('submitMe');
  }

  function gotoPage(url) {
    window.location = url;
  }

  function formFocus(myForm) {
    myForm = (myForm) ? document.getElementById(myForm) : document.forms[0];
    if (myform) myForm.elements[1].focus();
  }

  function addEvent(elm, evType, fn, useCapture) {
    if (elm.addEventListener) {
      elm.addEventListener(evType, fn, useCapture);
      return true;
    } else if (elm.attachEvent) {
      var r = elm.attachEvent('on' + evType, fn);
      return r;
    } else {
      elm['on' + evType] = fn;
    }
  }

  function removeEvent(elm, evType, fn, useCapture) {
    if (elm.removeEventListener) {
      elm.removeEventListener(evType, fn, useCapture);
      return true;
    } else if (elm.detachEvent) {
      var r = elm.detachEvent('on' + evType, fn);
      return r;
    } else {
      elm['on' + evType] = fn;
    }
  }

  function buildGetString(fieldnames,myForm) {
    get_string = "";
    myForm = (myForm) ? myForm : document.forms[0];

    names = fieldnames.split(',');

    for (i in names) {
      myVal = myForm.elements[names[i]].value;
      get_string += "&"+names[i]+"="+myVal;
    }

    return get_string;
  }

  function isEnterPressed(e) {
    var keycode;
    if (window.event) {
      keycode = window.event.keyCode;
    } else if (e) {
      keycode = e.which;
    } else {
      return false;
    }
    if (keycode == 13) {
       return true;
    } else {
      return false;
    }
  }

  //climb up the tree to the supplied tag
  function ascendDOM(e,target) {
    while (e.nodeName.toLowerCase() != target && e.nodeName.toLowerCase() != 'html') {
      e = e.parentNode;
    }
    return (e.nodeName.toLowerCase() == 'html') ? null : e;
  }

  function getTarget(e) {
    return window.event ? window.event.srcElement: e ? e.target : null;
  }

  function stopBubble(e) {
    if (window.event) {
      window.event.cancelBubble = true;
      window.event.returnValue = false;
    } else if (e) {
      e.stopPropagation();
      e.preventDefault();
    }
  }

  function insertRowAfterEl(el,spanned) {
    var parent_row = ascendDOM(el,'tr');
    var parent_rowCells = parent_row.getElementsByTagName('td');
    var parent_table = ascendDOM(parent_row,'tbody');
    if (!parent_table) {
      parent_table = ascendDOM(parent_row,'table');
    }

    var all_rows = parent_table.getElementsByTagName('tr');
    for (i=0;i<all_rows.length;i++) {
      if (all_rows[i] == parent_row) {
        break;
      }
    }

    var next_row = all_rows[i+1];
    var new_row = document.createElement('tr');

    if (spanned) {
      var new_cell = document.createElement('td');
      new_cell.colSpan = parent_rowCells.length;
      new_row.appendChild(new_cell);
    } else {
      var new_cell;
      for (i=0;i<parent_rowCells.length;i++) {
        new_cell = document.createElement('td');
        new_row.appendChild(new_cell);
      }
    }

    if (next_row) {
      parent_table.insertBefore(new_row,next_row);
    } else {
      parent_table.appendChild(new_row);
    }

    return new_row;
  }

  function deleteRowAfterEl(el) {
    var parent_row = ascendDOM(el,'tr');
    var parent_table = ascendDOM(parent_row,'tbody');
    if (!parent_table) {
      parent_table = ascendDOM(parent_row,'table');
    }

    var all_rows = parent_table.getElementsByTagName('tr');
    for (i=0;i<all_rows.length;i++) {
      if (all_rows[i] == parent_row) {
        break;
      }
    }

    var next_row = all_rows[i+1];
    if (next_row) {
      parent_table.removeChild(next_row);
    }
  }

  function splitElId(el) {
    return el.id.split('_');
  }


function getXMLElContent(element) {
  if (element.xml) {
    return element.xml;
  } else {
    var mySerial = new XMLSerializer();
    return mySerial.serializeToString(element);
  }
}


