/******************************************
--  This site was designed and implemented by Miller Systems.
--  (c) Copyright 2005.  All rights reserved.
--  http://www.millersystems.com
--  Miller Systems, Inc. Boston MA 02116
******************************************/

var init = false;
// var siteURL = "http://ironmountaindigital.millersystems.com";

///////////////////////
// swapImage()
// - used to swap a named image's src attribute for another
// - arguments - unlimited number of image name/source pairs
// - example - swapImage("foo","/images/foo.gif")
///////////////////////
function swapImage() {
	if (!init) return;
	
	if (document.images) {
		for(var i=0;i<arguments.length;i++) {
			document.images[arguments[i]].src = arguments[i+1];
			++i;
		}
	}
}

///////////////////////
// preloadImages()
// - used to preload images to the browser's cache
// - arguments - unlimited number of image src attributes
// - example - preloadImages("/images/foo.gif","/bin/images/bar.gif")
///////////////////////
function preloadImages() {
	var imgArray = new Array;
	for(var i=0;i<arguments.length;i++) {
		imgArray[i] = new Image;
		imgArray[i].src = arguments[i];
	}
	return imgArray;
}

///////////////////////
// initializeWindow()
// - used to initialize window variables before use
///////////////////////
function initializeWindow() {
	var temp_array = preloadImages(
		"/images/btn_erecordsMgmt_hl.gif",
		"/images/btn_dataProtection_hl.jpg",
		"/images/btn_customerSupport_hl.jpg",
		"/images/btn_resources_hl.jpg",
		"/images/btn_partners_hl.jpg",
		"/images/btn_customers_hl.jpg",
		"/images/btn_news&Events_hl.jpg",
		"/images/btn_protectBusiness_hl.jpg",
		"/images/btn_protectHome_hl.jpg",
		"/images/btn_visitLiveVault_hl.jpg",
		"/images/btn_visitIPM_hl.jpg"
		
	);
	chooseLeftNav();
	init = true;
}

function chooseLeftNav() {
		url = getUrl();
		objNavCell = document.getElementById("navCell");
		if (objNavCell) {
				divs = objNavCell.getElementsByTagName("DIV");
				i = 0;
				
				while (i < divs.length) {
					if (divs[i].className == "navContainer") {
							navItems = divs[i].getElementsByTagName("DIV");
							for (var j=0; j<navItems.length; j++) {
								anch = navItems[j].firstChild;
								var regex = new RegExp("/[a-zA-Z_0-9\-]*\.asp"); // find the /filename.asp part of the url and replace it with .asp
								testurl = url.replace(regex, ".asp");
								if (anch == url) {
									anch.className = anch.className.replace("Off","On");										
									if (navItems[j].className != "subnavLink") {
										first_child(divs[i]).firstChild.className="subLinkOn";
									}
									makeVisible(divs[i]);
									return;
								} 
							}
					}
					i++;
				}
				i = 0;
				while (i < divs.length) {
					if (divs[i].className == "navContainer") {
							navItems = divs[i].getElementsByTagName("DIV");
							for (var j=0; j<navItems.length; j++) {
								anch = navItems[j].firstChild;
								var regex = new RegExp("/[a-zA-Z_0-9\-]*\.asp"); // find the /filename.asp part of the url and replace it with .asp
								testurl = url.replace(regex, ".asp");
								if (anch == testurl) {
									anch.className = anch.className.replace("Off","On");										
									if (navItems[j].className != "subnavLink") {
										first_child(divs[i]).firstChild.className="subLinkOn";
									}
									makeVisible(divs[i]);
									return;
								} 
							}
					}
					i++;
					
				}
				
		}
}

function makeVisible(obj) {
		allDivs = obj.getElementsByTagName("DIV");
		for (var i=0; i<allDivs.length; i++) {
				
			allDivs[i].style.display = "block";
		}
		
}

function getUrl() {
	full = window.location.href;
	//return full.replace(siteURL,"");
	return full;
}

window.onload = initializeWindow;

/**
 * Throughout, whitespace is defined as one of the characters
 *  "\t" TAB \u0009
 *  "\n" LF  \u000A
 *  "\r" CR  \u000D
 *  " "  SPC \u0020
 *
 * This does not use Javascript's "\s" because that includes non-breaking
 * spaces (and also some other characters).
 */


/**
 * Determine whether a node's text content is entirely whitespace.
 *
 * @param nod  A node implementing the |CharacterData| interface (i.e.,
 *             a |Text|, |Comment|, or |CDATASection| node
 * @return     True if all of the text content of |nod| is whitespace,
 *             otherwise false.
 */
function is_all_ws( nod )
{
  // Use ECMA-262 Edition 3 String and RegExp features
  return !(/[^\t\n\r ]/.test(nod.data));
}


/**
 * Determine if a node should be ignored by the iterator functions.
 *
 * @param nod  An object implementing the DOM1 |Node| interface.
 * @return     true if the node is:
 *                1) A |Text| node that is all whitespace
 *                2) A |Comment| node
 *             and otherwise false.
 */

function is_ignorable( nod )
{
  return ( nod.nodeType == 8) || // A comment node
         ( (nod.nodeType == 3) && is_all_ws(nod) ); // a text node, all ws
}

/**
 * Version of |previousSibling| that skips nodes that are entirely
 * whitespace or comments.  (Normally |previousSibling| is a property
 * of all DOM nodes that gives the sibling node, the node that is
 * a child of the same parent, that occurs immediately before the
 * reference node.)
 *
 * @param sib  The reference node.
 * @return     Either:
 *               1) The closest previous sibling to |sib| that is not
 *                  ignorable according to |is_ignorable|, or
 *               2) null if no such node exists.
 */
function node_before( sib )
{
  while ((sib = sib.previousSibling)) {
    if (!is_ignorable(sib)) return sib;
  }
  return null;
}

/**
 * Version of |nextSibling| that skips nodes that are entirely
 * whitespace or comments.
 *
 * @param sib  The reference node.
 * @return     Either:
 *               1) The closest next sibling to |sib| that is not
 *                  ignorable according to |is_ignorable|, or
 *               2) null if no such node exists.
 */
function node_after( sib )
{
  while ((sib = sib.nextSibling)) {
    if (!is_ignorable(sib)) return sib;
  }
  return null;
}

/**
 * Version of |lastChild| that skips nodes that are entirely
 * whitespace or comments.  (Normally |lastChild| is a property
 * of all DOM nodes that gives the last of the nodes contained
 * directly in the reference node.)
 *
 * @param sib  The reference node.
 * @return     Either:
 *               1) The last child of |sib| that is not
 *                  ignorable according to |is_ignorable|, or
 *               2) null if no such node exists.
 */
function last_child( par )
{
  var res=par.lastChild;
  while (res) {
    if (!is_ignorable(res)) return res;
    res = res.previousSibling;
  }
  return null;
}

/**
 * Version of |firstChild| that skips nodes that are entirely
 * whitespace and comments.
 *
 * @param sib  The reference node.
 * @return     Either:
 *               1) The first child of |sib| that is not
 *                  ignorable according to |is_ignorable|, or
 *               2) null if no such node exists.
 */
function first_child( par )
{
  var res=par.firstChild;
  while (res) {
    if (!is_ignorable(res)) return res;
    res = res.nextSibling;
  }
  return null;
}

/**
 * Version of |data| that doesn't include whitespace at the beginning
 * and end and normalizes all whitespace to a single space.  (Normally
 * |data| is a property of text nodes that gives the text of the node.)
 *
 * @param txt  The text node whose data should be returned
 * @return     A string giving the contents of the text node with
 *             whitespace collapsed.
 */
function data_of( txt )
{
  var data = txt.data;
  // Use ECMA-262 Edition 3 String and RegExp features
  data = data.replace(/[\t\n\r ]+/g, " ");
  if (data.charAt(0) == " ")
    data = data.substring(1, data.length);
  if (data.charAt(data.length - 1) == " ")
    data = data.substring(0, data.length - 1);
  return data;
}
