var newWin;
var menuObj;
var dragapproved = false;
var minrestore = 0;
var initialwidth;
var initialheight;
var ie5 = document.all && document.getElementById;
var ns6 = document.getElementById && !document.all;

function showMenuIE5(e) {
  var rightedge = ie5 ? document.body.clientWidth-event.clientX : window.innerWidth-e.clientX;
  var bottomedge = ie5 ? document.body.clientHeight-event.clientY : window.innerHeight-e.clientY

  if (rightedge<menuObj.offsetWidth) {
    menuObj.style.left = ie5 ? document.body.scrollLeft+event.clientX-menuObj.offsetWidth : window.pageXOffset+e.clientX-menuObj.offsetWidth;
  } else {
    menuObj.style.left = ie5 ? document.body.scrollLeft+event.clientX : window.pageXOffset+e.clientX;
  }

  if (bottomedge<menuObj.offsetHeight) {
    menuObj.style.top = ie5? document.body.scrollTop+event.clientY-menuObj.offsetHeight : window.pageYOffset+e.clientY-menuObj.offsetHeight;
  } else {
    menuObj.style.top = ie5? document.body.scrollTop+event.clientY : window.pageYOffset+e.clientY;
  }

  menuObj.style.visibility = "visible";
  return false;
}

function hideMenuIE5(e) {
  menuObj.style.visibility = "hidden";
}

function highLightIE5(e) {
  var firingobj = ie5 ? event.srcElement : e.target;
  if (firingobj.className == "menuItems" || ns6 && firingobj.parentNode.className == "menuItems") {
    if (ns6&&firingobj.parentNode.className == "menuItems") { firingobj = firingobj.parentNode; }
    firingobj.style.backgroundColor = "highlight";
    firingobj.style.color = "white";
  }
}

function lowLightIE5(e) {
  var firingobj = ie5? event.srcElement : e.target;
  if (firingobj.className == "menuItems" || ns6 && firingobj.parentNode.className == "menuItems") {
    if (ns6&&firingobj.parentNode.className == "menuItems") { firingobj = firingobj.parentNode; }
    firingobj.style.backgroundColor = "";
    firingobj.style.color = "black";
    window.status = '';
  }
}

function jumpToIE5(e){
  var firingobj = ie5? event.srcElement : e.target
  if (firingobj.className == "menuItems" || ns6 && firingobj.parentNode.className == "menuItems") {
    if (ns6&&firingobj.parentNode.className == "menuItems") firingobj = firingobj.parentNode
    if (firingobj.getAttribute("target")) {
      openWin(firingobj.getAttribute("url"),firingobj.getAttribute("target"));
    } else {
      window.location = firingobj.getAttribute("url");
    }
  }
}

function redirectTopWindow(url) {
  top.location.replace(url);
}

function redirectInputWindow(url) {
  top.upperFrame.location.replace(url);
}

function preloadImages() {
  var imagesToLoad = preloadImages.arguments;
  for (i = 0; i < imagesToLoad.length; i++) {
    new Image().src = imagesToLoad[i];
  }
}

function openWin(url, name, params) {
  return window.open(url, name, params);
}

function openTopLeftWin(url, name, params, x, y) {
  var newExtWin;
  newExtWin = openWin(url, name, params);
  newExtWin.blur();
  newExtWin.focus();
  newExtWin.moveTo(x, y);
}

function closeWin(win) {
  win.close();
}

function ieCompatTest(){
  return (!window.opera && document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
}

function dragDrop(e){
  if (ie5&&dragapproved&&event.button==1){
    document.getElementById("newWin").style.left=tempx+event.clientX-offsetx+"px";
    document.getElementById("newWin").style.top=tempy+event.clientY-offsety+"px";
  } else if (ns6&&dragapproved){
    document.getElementById("newWin").style.left=tempx+e.clientX-offsetx+"px";
    document.getElementById("newWin").style.top=tempy+e.clientY-offsety+"px";
  }
}

function initializeDrag(e){
  offsetx=ie5? event.clientX : e.clientX;
  offsety=ie5? event.clientY : e.clientY;
  document.getElementById("newWinContent").style.display="none";
  tempx=parseInt(document.getElementById("newWin").style.left);
  tempy=parseInt(document.getElementById("newWin").style.top);
  dragapproved=true;
  document.getElementById("newWin").onmousemove=dragDrop;
}

function loadWindow(url,width,height){
  ns6 ? frameWidth = self.innerWidth : frameWidth = self.document.body.offsetWidth;
  leftPosition = parseInt((frameWidth/2) - (width/2));
  if (leftPosition < 0) {leftPosition = "0px"; }
  if (!ie5 && !ns6) {
    openWin(url,"","width=width,height=height,scrollbars=no,toolbars=no,location=no");
  } else {
    document.getElementById("newWin").style.display = "";
    document.getElementById("newWin").style.width = initialwidth=width + "px";
    document.getElementById("newWin").style.height = initialheight=height + "px";
    document.getElementById("newWin").style.left = leftPosition;
    document.getElementById("newWin").style.top = ns6 ? window.pageYOffset*1 + 30 + "px" : ieCompatTest().scrollTop*1 + 30 + "px";
    document.getElementById("newWinContent").src = url;
  }
}

function maximize(){
  if (minrestore == 0) {
    minrestore = 1; //maximize window
    // document.getElementById("maxname").setAttribute("src","restore.gif");
    document.getElementById("newWin").style.width = ns6 ? window.innerWidth-20 + "px" : ieCompatTest().clientWidth + "px";
    document.getElementById("newWin").style.height = ns6 ? window.innerHeight-20 + "px" : ieCompatTest().clientHeight + "px";
  } else{
    minrestore = 0; //restore window
    // document.getElementById("maxname").setAttribute("src","max.gif");
    document.getElementById("newWin").style.width = initialwidth;
    document.getElementById("newWin").style.height = initialheight;
  }
  document.getElementById("newWin").style.left = ns6 ? window.pageXOffset + "px" : ieCompatTest().scrollLeft + "px";
  document.getElementById("newWin").style.top = ns6 ? window.pageYOffset + "px" : ieCompatTest().scrollTop + "px";
}

function closeIt(){
  document.getElementById("newWin").style.display = "none";
}

function stopDrag(){
  dragapproved=false;
  document.getElementById("newWin").onmousemove = null;
  //document.getElementById("newWinContent").style.display = "";
}

function addOption(selection_list, selected_list)
{
    var opt, newText, newValue;
    if (selection_list.selectedIndex == -1) return;
    while (selection_list.selectedIndex != -1) {
      newText = selection_list.options[selection_list.selectedIndex].text;
      newValue = selection_list.options[selection_list.selectedIndex].value;
      selection_list.options[selection_list.selectedIndex].selected = false;
      opt = new Option(newText, newValue);
      opt.text = newText;
      opt.value = newValue;
      for (i = 0; i < selected_list.options.length; i++) {
        if (selected_list.options[i].text == newText) return;
      }
      selected_list.options[selected_list.length] = opt;
    }
}

function removeOption(selection_list, selected_list)
{
    if (selected_list.selectedIndex == -1) return;
    while (selected_list.selectedIndex != -1) {
      selected_list.options[selected_list.selectedIndex] = null;
    }
}

function setOnOffNewFields(onOff) {
  var inputForm = document.inputQuery;
  numNewFields = inputForm.newFields.options.length;
  for (i = 0; i < numNewFields; i++) {
    if (inputForm.newFields.options[i].selected == false)
      inputForm.newFields.options[i].selected = onOff;
  }
}

function resetDefaultFields() {
  var inputForm = document.inputQuery;
  var opt, numFields;
  numFields = inputForm.newFields.options.length;
  for (i = 0; i < numFields; i++) {
    inputForm.newFields.options[i] = null;
  }
  for (i = 0; i < defaultFieldsValues.length; i++) {
    opt = new Option(defaultFieldsText[i], defaultFieldsValues[i]);
    inputForm.newFields.options[i] = opt;
  }
}

function moveUpDownField(type) {
  var inputForm = document.inputQuery;
  var options, opt, selectedIndex, numFields, indexToChange;
  selectedIndex = inputForm.newFields.selectedIndex;
  numFields = inputForm.newFields.options.length;
  options = new Array(numFields);
  for (i = 0; i < numFields; i++) {
    options[i] = inputForm.newFields.options[i];
  }
  switch(type) {
    case "up":
      if (selectedIndex <= 0)
        return false;
      indexToChange = selectedIndex - 1;
      break;
    case "down":
      if (selectedIndex == (numFields - 1))
        return false;
      indexToChange = selectedIndex + 1;
  }
  opt = options[indexToChange];
  options[indexToChange] = options[selectedIndex];
  options[selectedIndex] = opt;
  for (i = 0; i < numFields; i++) {
    inputForm.newFields.options[i] = null;
    inputForm.newFields.options[i] = options[i];
  }
}

function manageHiddenForm() {
  tmpForm = arguments[0];
  for (i = 1; i < arguments.length; i++) {
    tmpElementNum = i - 1;
    tmpElementValue = arguments[i];
    tmpForm.elements[tmpElementNum].value = tmpElementValue;
  }
  tmpForm.submit();
}
