/* toggleDisabled(oForm, bDisabled, sElement1 [, sElementn ...]) */

if(self != top)
  top.location.replace(self.location.href);

function ListFindNoCase(list, value)
{
  var returnValue = -1;
  var i = 0;
  var delimiter = ',';
  var _tempArray = new Array();
  if(ListFindNoCase.arguments.length == 3) delimiter = ListFindNoCase.arguments[2];
  list = list.toLowerCase();
  value = value.toLowerCase();
  _tempArray = list.split(delimiter);
  for(i = 0; i < _tempArray.length; i++)
  {
    if(_tempArray[i] == value)
    {
      returnValue = i;
      break;
    }
  }
  return returnValue;
};

function toggleDisabled(oForm, bDisabled)
{
  if(toggleDisabled.arguments.length < 3) return;
  for(var i = 2; i < toggleDisabled.arguments.length; i++)
  {
    element = oForm.elements[toggleDisabled.arguments[i]];
    if(element)
    {
      if(typeof element.length != 'undefined' && element.length > 0 && typeof element[0].type != 'undefined' && ListFindNoCase('checkbox,radio', element[0].type) != -1)
      {
        for(var j = 0; j < element.length; j++)
          element[j].disabled = bDisabled;
      }
      else
      {
        element.disabled = bDisabled;
        if(ListFindNoCase('input,textarea,select', element.tagName) != -1)
        {
          if(ListFindNoCase('checkbox,radio,button,submit,reset', element.type) == -1)
          {
            if(!element.enabledClass && !element.disabled) element.enabledClass = element.className;
            if(!element.disabledClass && element.disabled) element.disabledClass = element.className;
            element.className = (bDisabled) ? element.disabledClass : element.enabledClass;
            if(element.type.toLowerCase() == 'file' && element.reset)
              element.reset();
          }
          if(element.type.toLowerCase() == 'select-one')
          {
            if(bDisabled)
            {
              if(element.selectedIndex != -1)
                element.defaultSelected = element.selectedIndex;
              element.selectedIndex = -1;
            }
            else
            {
              if(typeof element.defaultSelected != 'undefined')
                element.selectedIndex = element.defaultSelected;
              element.defaultSelected = element.selectedIndex;
            }
          }
        }
      }
    }
  }
//  if(!bDisabled && ListFindNoCase('text,password,textarea,checkbox,radio,select-one,select-multiple,submit,reset,button', form.elements[toggleDisabled.arguments[2]].type) != -1) form.elements[toggleDisabled.arguments[2]].focus();
}

/* toggle_displayed.js */

var toggledDisplay = new Object();

function toggleDisplayed(bDisplayed)
{
  if(!document.getElementById || toggleDisplayed.arguments.length < 2) return;
  var displayed = new Object();
      displayed['true'] = '';
      displayed['false'] = 'none';
  for(var i = 1; i < toggleDisplayed.arguments.length; i++)
  {
    oDisplay = document.getElementById(toggleDisplayed.arguments[i]);
    if(oDisplay)
    {
      oDisplay.style.display = displayed[bDisplayed];
      if(typeof toggledDisplay[toggleDisplayed.arguments[i]] != 'undefined')
        toggledDisplay[toggleDisplayed.arguments[i]] = !bDisplayed;
    }
  }
}

/* newWindow.js */

function newWindow(href, target, width, height)
{
  var returnValue = false;
  var features = (arguments.length == 4) ? 'scrollbars,status,width=' + width + ',height=' + height : ((arguments[4]) ? arguments[4] + ',width=' + width + ',height=' + height : 'width=' + width + ',height=' + height);
  if (window.screen)
  {
    var pxLeft = ((screen.availWidth - width - 10) * .5);
    var pxTop = ((screen.availHeight - height - 30) * .5);
    features += ',left=' + pxLeft + ',top=' + pxTop + ',x=' + pxLeft + ',y=' + pxTop;
  }
  if(!window.open)
    returnValue = true;
  else
  {
    self[target + 'Win'] = window.open(href, target, features);
    if(self[target + 'Win'].focus)
      self[target + 'Win'].focus();
  }
  return returnValue;
}

function validateLogin(oForm)
{
  var returnValue = true;
  var errorMessage = 'The following errors must be corrected before you may login:';
  var oFocusField = null;
  if(!oForm.username.value)
  {
    errorMessage += '\n - Username must not be blank';
    if(!oFocusField)
      oFocusField = oForm.username;
    returnValue = false;
  }
  if(!oForm.password.value)
  {
    errorMessage += '\n - Password must not be blank';
    if(!oFocusField)
      oFocusField = oForm.password;
    returnValue = false;
  }
  if(!returnValue)
  {
    alert(errorMessage);
    oFocusField.focus();
  }
  return returnValue;
}

function validateSubscribe(oForm)
{
  var returnValue = true;
  var errorMessage = 'The following errors must be corrected before you may subscribe:';
  var oFocusField = null;
  if(!oForm.ea.value)
  {
    errorMessage += '\n - Email must not be blank';
    if(!oFocusField)
      oFocusField = oForm.ea;
    returnValue = false;
  }
  if(!returnValue)
  {
    alert(errorMessage);
    oFocusField.focus();
  }
  return returnValue;
}

var toggleVisibilityLocked = false;

function initLogin(formId, fieldsId)
{
  var oElement = document.getElementById(formId);
  var oFields = document.getElementById(fieldsId);
  var oInputs = null;
  if(oElement && fieldsId)
  {
    toggleVisibility(fieldsId, false);
    oInputs = oFields.getElementsByTagName('INPUT');
    for(var i = 0; i < oInputs.length; i++)
    {
      oInputs[i].onfocus = function() {
        toggleVisibilityLocked = true;
      }
      oInputs[i].onblur = function() {
        toggleVisibilityLocked = false;
      }
    }
    oElement.onmouseover = function() {
      if(!toggleVisibilityLocked)
        toggleVisibility(fieldsId, true);
    }
    oElement.onmouseout = function() {
      if(!toggleVisibilityLocked)
        toggleVisibility(fieldsId, false);
    }
  }
}

function toggleVisibility(id, bVisible)
{
  var oElement = document.getElementById(id);
  if(oElement)
    oElement.style.visibility = (bVisible) ? 'visible' : 'hidden';
}

var idNavigation = 'navigation';

navHover = function()
{
  var oNav = document.getElementById(idNavigation);
  if(oNav)
  {
    var navEls = oNav.getElementsByTagName('LI');
    for(var i = 0; i < navEls.length; i++)
    {
      navEls[i].onmouseover = function()
      {
        this.className += ' hover';
      }
      navEls[i].onmouseout = function()
      {
        this.className = this.className.replace(new RegExp(' hover\\b'), '');
      }
    }
  }
}

navAccessible = function()
{
  var oNav = document.getElementById(idNavigation);
  if(oNav)
  {
  	var navEls = oNav.getElementsByTagName('A');
  	for (var i = 0; i < navEls.length; i++)
    {
  		navEls[i].onfocus = function()
      {
  			this.className += (this.className.length > 0? ' ' : '') + 'focus'; //a:focus
  			this.parentNode.className += (this.parentNode.className.length > 0 ? ' ': '') + 'hover'; //li < a:focus
  			if(this.parentNode.parentNode.parentNode.nodeName == 'LI')
        {
  				this.parentNode.parentNode.parentNode.className += (this.parentNode.parentNode.parentNode.className.length > 0? ' ': '') + 'hover'; //li < ul < li < a:focus
  				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == 'LI')
          {
  					this.parentNode.parentNode.parentNode.parentNode.parentNode.className += (this.parentNode.parentNode.parentNode.parentNode.parentNode.className.length > 0? ' ': '') + 'hover'; //li < ul < li < ul < li < a:focus
    				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == 'LI')
    					this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.className += (this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.className.length > 0? ' ': '') + 'hover'; //li < ul < li < ul < li < ul < li < a:focus
          }
  			}
  		}
  		navEls[i].onblur = function()
      {
  			this.className = this.className.replace(new RegExp('( ?|^)focus\\b'), '');
  			this.parentNode.className = this.parentNode.className.replace(new RegExp('( ?|^)hover\\b'), '');
  			if(this.parentNode.parentNode.parentNode.nodeName == 'LI')
        {
  				this.parentNode.parentNode.parentNode.className = this.parentNode.parentNode.parentNode.className.replace(new RegExp('( ?|^)hover\\b'), '');
  				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == 'LI')
          {
  					this.parentNode.parentNode.parentNode.parentNode.parentNode.className = this.parentNode.parentNode.parentNode.parentNode.parentNode.className.replace(new RegExp('( ?|^)hover\\b'), '');
    				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == 'LI')
    					this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.className = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.className.replace(new RegExp('( ?|^)hover\\b'), '');
          }
  			}
  		}
//alert(navEls[i].onfocus + '\n\n' + navEls[i].onblur);
    }
	}
}

// only ie needs the navHover script. all need the accessibility script...
if(window.addEventListener)
  window.addEventListener('load', navAccessible, false); // gecko, safari, konqueror and standard
else if(document.addEventListener)
  document.addEventListener('load', navAccessible, false); // opera 7
else if(window.attachEvent)
{ // win/ie
	window.attachEvent('onload', navHover);
	window.attachEvent('onload', navAccessible);
}
else
{ // mac/ie5
	if(typeof window.onload == 'function')
  {
		var existing = onload;
		window.onload = function()
    {
			existing();
			navHover();
			navAccessible();
		}
	}
  else
  {
		window.onload = function()
    {
			navHover();
			navAccessible();
		}
	}
}

function fieldFocus(oElement) {
  oElement.className = (arguments.length > 1) ? arguments[1] + ' focused' : 'focused';
  if(oElement.value == oElement.defaultValue)
    oElement.value = '';
}

function fieldBlur(oElement) {
  if(oElement.value == oElement.defaultValue || oElement.value == '') {
    oElement.className = (arguments.length > 1) ? arguments[1] + ' blurred' : 'blurred';
    oElement.value = oElement.defaultValue;
  }
}

