/* 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 idNavigation = 'mainNavigation';

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 setVolunteer(id, title)
{
  var oForm = document.forms['volunteer-form'];
  var oId, oTitle;
  if(oForm)
  {
    oId = oForm.elements['volunteer_id'];
    oTitle = oForm.elements['volunteer'];
    if(oId && oTitle)
    {
      oId.value = id;
      oTitle.value = title;
      location.hash = 'volunteer-form';
      oForm.elements['first_name'].focus();
    }
  }
}

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;
  }
}

function setCalendar(yearObj, monthObj, dayObj)
{
  year = parseInt(yearObj.options[yearObj.selectedIndex].value);
  month = monthObj.options[monthObj.selectedIndex].value;
  day = dayObj.options[dayObj.selectedIndex].value;
  if(year != '' && month != '')
  {
    dayObj.options.length = 1;
    dayObj.options[0].value = '';
    dayObj.options[0].text = 'Day';
    var days = new Array(0, 31, ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    for(i = 1; i < days[month] + 1; i++)
    {
      dayObj.options.length = dayObj.options.length + 1;
      dayObj.options[i].value = i;
      dayObj.options[i].text = (i > 9) ? i : '0' + i;
    }
    day = (day == '') ? 0 : day;
    dayObj.selectedIndex = (day < dayObj.options.length) ? day : dayObj.options.length - 1;
  }
}

function getCalendar(form, hiddenName)
{
  var hiddenObj = form.elements[hiddenName];
  var criteriaObj = form.elements[hiddenName + '_criteria'];
  var yearObj = form.elements[hiddenName + '_year'];
  var monthObj = form.elements[hiddenName + '_month'];
  var dayObj = form.elements[hiddenName + '_day'];
  var hourObj = form.elements[hiddenName + '_hour'];
  var minuteObj = form.elements[hiddenName + '_minute'];
  var secondObj = form.elements[hiddenName + '_second'];
  var ampmObj = form.elements[hiddenName + '_ampm'];
  var yearValue = (yearObj) ? yearObj.options[yearObj.selectedIndex].value : null;
  var monthValue = (monthObj) ? monthObj.options[monthObj.selectedIndex].value : null;
  var dayValue = (dayObj) ? dayObj.options[dayObj.selectedIndex].value : null;
  var hourValue = (hourObj && hourObj.options[hourObj.selectedIndex].value) ? '0' + hourObj.options[hourObj.selectedIndex].value : null;
  if(hourValue)
      hourValue = hourValue.substring(hourValue.length - 2);
  var minuteValue = (minuteObj && minuteObj.options[minuteObj.selectedIndex].value) ? '0' + minuteObj.options[minuteObj.selectedIndex].value : '00';
  if(minuteValue)
      minuteValue = minuteValue.substring(minuteValue.length - 2);
  var secondValue = (secondObj && secondObj.options[secondObj.selectedIndex].value) ? '0' + secondObj.options[secondObj.selectedIndex].value : '00';
  if(secondValue != null)
      secondValue = secondValue.substring(secondValue.length - 2);
  var ampmValue = (ampmObj) ? ((ampmObj[0].checked) ? ampmObj[0].value : ampmObj[1].value) : 'AM';
  if(hourValue > 12)
  {
    ampmValue = 'PM';
    hourValue = hourValue - 12;
  }
  if(yearValue && monthValue && dayValue)
    hiddenObj.value = monthValue + '/' + dayValue + '/' + yearValue;
  if(yearValue && monthValue && dayValue && hourValue && minuteValue && secondValue)
    hiddenObj.value += ' ';
  if(hourValue && minuteValue && secondValue)
    hiddenObj.value += hourValue + ':' + minuteValue + ':' + secondValue + ampmValue;
  if(yearValue == '' || monthValue == '' || dayValue == '')
    hiddenObj.value = '';
}

