var currhilight = 0;
var lmax = 1;
var timerID = null;
var vld = null;
var bRefreshInProgress = false;
var iFailCount = 0;
var iDefaultRate = 0;
var pfnUpdate = null;

function unhilightrow( therow ) {
  dounhilite( document.getElementById( 'node' + therow ), therow );
}

function dounhilite( e, therow ) {
  if ( e ) {
    if ( therow & 0x1 ) {
      e.className = 'listhighlightodd';
    } else {
      e.className = 'listhighlighteven';
    }
  }
}

function tmpunhilite( therow ) {
  if ( therow != currhilight ) {
    var e = document.getElementById( 'node' + therow );
    dounhilite( e, therow );
  }
}

function tmphilite( therow ) {
  var e = document.getElementById( 'node' + therow );
  if ( e ) {
    if ( therow == currhilight ) {
      e.className = 'listhighlight';
    } else {
      e.className = 'tmplisthighlight';
    }
  }
}

function hilite( therow ) {
  unhilightrow( currhilight );
  document.thelist.selitem.value = therow;
  currhilight = therow;
  tmphilite( therow );
}

function hideDelete( e ) {
  var control = parent.controls.document.getElementById( 'tddelete' );
  if ( control ) {
    if ( e ) {
      control.style.display = 'none';
    } else {
      control.style.display = '';
    }
  }
}

function checkOption( selectedObj, label ) {
  var index = selectedObj.selectedIndex;
  var popURL = selectedObj.options[ index ].value;
  if ( selectedObj.options[ index ].text == label ) {
    selectedObj.options.selectedIndex = 0;
    window.open( popURL, 'popup', 'width=800,height=600,resizable=yes,scrollable=yes' );
    return;
  }
}

function checkAddrObj( selectedObj, trigger, basename ) {
  var index = selectedObj.selectedIndex;
  var ip = document.getElementById( basename + '_ip' );
  if ( ip ) {
    if ( selectedObj.options[ index ].value == trigger ) {
      ip.style.display = '';
    } else {
      ip.style.display = 'none';
    }
  }
}

function checkServiceObj( selectedObj, trigger, basename ) {
  var index = selectedObj.selectedIndex;
  var proto = document.getElementById( basename + '_proto' );
  var ports = document.getElementById( basename + '_ports' );
  if ( proto && ports ) {
    if ( selectedObj.options[ index ].value == trigger ) {
      proto.style.display = '';
      ports.style.display = '';
    } else {
      proto.style.display = 'none';
      ports.style.display = 'none';
    }
  }
}

function checkAddrOption( selectedObj, trigger, trigger2, name ) {
  var index = selectedObj.selectedIndex;
  var addr = document.getElementById( name );
  if ( addr ) {
    if ( (selectedObj.options[ index ].value == trigger) ||
         (selectedObj.options[ index ].value == trigger2) ) {
      addr.style.display = '';
    } else {
      addr.style.display = 'none';
    }
  }
}

function checkTimeOption( selectedObj, trigger, start, end, dayBase ) {
  var index = selectedObj.selectedIndex;
  var startTime = document.getElementById( start );
  var endTime = document.getElementById( end );
  if ( startTime && endTime ) {
    if ( selectedObj.options[ index ].value == trigger ) {
      startTime.style.display = '';
      endTime.style.display = '';
      for ( var i = 1; i <= 7; i++ ) {
        var day = document.getElementById( dayBase + '-' + i );
        if (day) { day.style.display = ''; }
      }
    } else {
      startTime.style.display = 'none';
      endTime.style.display = 'none';
      for ( var i = 1; i <= 7; i++ ) {
        var day = document.getElementById( dayBase + '-' + i );
        if (day) {  day.style.display = 'none'; }
      }
    }
  }
}

function checkRIPpw( selectedObj, trigger, trigger2, field, field2 ) {
  var selOption = selectedObj.options[ selectedObj.selectedIndex ];
  var dynField = document.getElementById( field );
  var dynField2 = document.getElementById( field2 );
  if ( selOption && dynField && dynField2 ) {
    if ( selOption.value == trigger ) {
      dynField.style.display = '';
      dynField2.style.display = 'none';
    } else if ( selOption.value == trigger2 ) {
      dynField.style.display = '';
      dynField2.style.display = '';
    } else {
      dynField.style.display = 'none';
      dynField2.style.display = 'none';
    }
  }
}

function checkIdentity( selectedObj, trigger, field ) {
  var selOption = selectedObj.options[ selectedObj.selectedIndex ];
  var dynField = document.getElementById( field );
  if ( selOption.text == trigger ) {
    dynField.style.display = 'none';
  } else {
    dynField.style.display = '';
  }
}

function checkConfPSN( checkbox, field1, field2, field3 ) {
  var dynField1 = document.getElementById( field1 );
  var dynField2 = document.getElementById( field2 );
  var dynField3 = document.getElementById( field3 );
  if ( checkbox.checked ) {
    dynField1.style.display = '';
    dynField2.style.display = '';
    dynField3.style.display = '';
  } else {
    dynField1.style.display = 'none';
    dynField2.style.display = 'none';
    dynField3.style.display = 'none';
  }
}

function checkDynamicIface( selectedObj, dynIfaces, field ) {
  var dynOption = false;
  var selOption = selectedObj.options[ selectedObj.selectedIndex ];
  var dynField = document.getElementById( field );
  var ifaceArray = dynIfaces.split( ',' );
  for ( i = 0; i < ifaceArray.length; i++ ) {
    if ( ifaceArray[ i ] == selOption.text ) {
      dynOption = true;
    }
  }
  if ( dynOption ) {
    dynField.style.display = '';
  } else {
    dynField.style.display = 'none';
  }
}

function checkAuthReq( checkbox, field ) {
  var dynField = document.getElementById( field );
  if ( checkbox.checked ) {
    dynField.style.display = '';
  } else {
    dynField.style.display = 'none';
  }
}

function formControl( e ) {
  if ( parent.parent.nav ) {
    if ( typeof parent.parent.nav.tree.loadXMLFile == 'function' ) {
      if ( e == 'save' ) {
        parent.parent.nav.tree.fetchReset( 3 );
        parent.parent.nav.tree.delayLoadXMLFile( 2000, true );
        parent.parent.nav.tree.delayLoadXMLFile( 10000, true );
        parent.parent.nav.tree.delayLoadXMLFile( 25000, true );
      } else {
        parent.parent.nav.tree.loadXMLFile();
      }
    }
  }

  if ( typeof formOnSubmit == 'function' ) {
    formOnSubmit();
  }

  document.thelist.button.value = e;
  document.thelist.submit();
}

function listItemControl( e ) {
  var theitem = document.thelist.selitem.value;
  var ret = document.getElementById( e + '_' + theitem );

  if ( parent.parent.nav ) {
    if ( parent.parent.nav.tree.loadXMLFile ) {
      parent.parent.nav.tree.loadXMLFile();
    }
  }

  if ( ret != null ) {
    ret.click();
  }
}

function refresh() {
  if ( refreshURL ) {
    parent.location.href = refreshURL;
  } else {
    parent.location.href = parent.location.href;
  }
}

function resetForm() {
  document.thelist.reset();
}

function validSubmit() {
  document.thelist.button.value = 'submit';
  if ( validateForm() ) {
    document.thelist.submit();
  }
}

function printForm() {
  parent.frames[ 1 ].focus();
  parent.frames[ 1 ].print();
}

function formConfirm( e ) {
  if ( confirmAreYouSure() ) {
    formControl( e );
  }
}

function stepClose() {
  if ( confirmAreYouSure() ) {
    document.cookie = 'GBNOWIZARD=true;path=/';
    window.open( '/', '_top' );
  }
  return;
}

function stepBack() {
  document.thelist.button.value = 'stepBack';
  document.thelist.submit();
}

function stepNext() {
  document.thelist.button.value = 'stepNext';
  document.thelist.submit();
}

function stopBubble( e ) {
  if ( !e ) {
    e = window.event;
  }
  e.cancelBubble = true;
  if ( e.stopPropagation ) {
    e.stopPropagation();
  }
}

function getRefreshRateCookie() {
  var rate = iDefaultRate;
  var tmpRate = null;

  if ( vld ) {
    var cookieName = 'refreshRate_' + vld;
    if ( (tmpRate = getCookie( cookieName )) != null ) {
      rate = tmpRate;
    }
  }

  return rate;
}

function setRefreshRateCookie( rate ) {
  if ( vld ) {
    var cookieName = 'refreshRate_' + vld;
    setCookie( cookieName, rate, null );
  }
}

function updateRefreshRate( rate ) {
  if (timerID != null) {
    window.clearInterval( timerID );
    timerID = null;
  }

    setRefreshRateCookie( rate );

  if ( pfnUpdate && (rate > 0) ) {
    timerID = window.setInterval( pfnUpdate, rate );
  }
}

function initRefreshRate( fnUpdate ) {
  var rate = getRefreshRateCookie();

  pfnUpdate = fnUpdate;

  if ( rate > 0 ) {
    timerID = window.setInterval( fnUpdate, rate );
  }
}

function updatePageDate() {
  var fldDate = document.getElementById( 'pageDate' );
  var fldRefreshDate = document.getElementById( 'refreshDate' );

  if ( fldDate && fldRefreshDate ) {
    fldDate.innerHTML = fldRefreshDate.innerHTML;
  }
}

