/* START: Do not change these scripts */
	function GetObjRef (objId) {
		var returnObj = null;
		if (document.getElementById) {
			returnObj = document.getElementById(objId);
		}
		else if (document.all) {
			returnObj = document.all[objId];
		}
		return returnObj;
	}
	
	function ShowObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			returnObj.style.display = "block";
		}
	}
	function HideObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			returnObj.style.display = "none";
		}
	}
	function ToggleObj (objId) {
		var returnObj = GetObjRef (objId);
		if (returnObj && returnObj.style) {
			if (returnObj.style.display == "block") {
				returnObj.style.display = "none";
			}
			else {
				returnObj.style.display = "block";
			}
		}
	}

	function GetTarget (e) {
		if (!e) {e = window.event;}
		if (!e) {return null;}
		var target;
		if (e.target) {
			target = e.target;
		}
		else if (e.srcElement) {
			target = e.srcElement;
		}
		return target;
	}
	function ReturnTarget (e, returnValue) {
		if (!e) {e = window.event;}
		if (!e) {return null;}
		var target;
		if (e.preventDefault && returnValue == false) {
			e.preventDefault ();
		}
		else if (e.returnValue) {
			e.returnValue = returnValue;
		}
		else {
			return returnValue;
		}
	}
/* END: Do not change these scripts */





function GlobalInit () {
	var objQuickFindSelect = document.forms["QuickSearchForm"].QuickFind;
	if (objQuickFindSelect) {
			objQuickFindSelect.onchange = QuickFind_OnChange;
	}
}

function QuickFind_OnChange (e) {
	var target = GetTarget (e);
	if (target && target.value && target.value != "#") {
		location.href = target.value;
	}
}


function PrintThisPage (Id, Logo) {
	var printWin = window.open (Logo + '?id=' + Id + '&mode=print','printWin','status=yes,scrollbars=yes,resizable=yes,width=520,height=400');
	printWin.focus ();
	return false;
}
function PrintWindow () {
	if (window.print) {
		window.print ();
	}
	return false;
}

function EmailToAFriend () {
   if (document.forms["EmailFriendForm"]) {
      document.forms["EmailFriendForm"].submit ();
      return false;
   }
}


/* START: Top Nav */
	var currentHoverNav = null;
	var lastShownMenus = [];
	function GetObjRef (id) {
		return document.getElementById (id);
	}
	function GetChildren (obj) {
		return obj.childNodes;
	}

	function Nav_OnMouseOver (obj, e) {
		if (!e) {
			e = window.event;
		}
		if (e) {
			var children = GetChildren (obj);
			var subNav = null;
			var c = children.length;
			for (var i=0; i<c; i++) {
				if (children[i].id && children[i].id.indexOf (obj.id) > -1) {
					subNav = children[i];
				}
			}
			currentHoverNav = obj; 
			Nav_HideMenu ();
			if (subNav) {
				subNav.style.display = "block";
				var SelectToBeHidden = GetObjRef ("QuickFindSelect");
				if (SelectToBeHidden) {
					SelectToBeHidden.style.display = "none";
				}
				subNav.style.top = obj.offsetHeight + "px";
				subNav.style.left = obj.offsetLeft + "px";
				c = lastShownMenus.length;
				var isInLastShownMenus = false;
				for (var i=0; i<c; i++) {
					if (lastShownMenus[i] == subNav) {
						isInLastShownMenus = true;
					}
				}
				if (isInLastShownMenus == false) {
					lastShownMenus[c] = subNav;
				}
			}
			e.cancelBubble = true;
		}
		return false;
	}

	function Nav_OnMouseOut (obj, e) {
		if (!e) {
			e = window.event;
		}
		if (e) {
			currentHoverNav = null;
			setTimeout ("Nav_HideMenu ()", 2000);
			e.cancelBubble = true;
		}
		return false;
	}
	function SubNav_OnMouseOver (obj, e) {
		if (!e) {
			e = window.event;
		}
		if (e) {
			currentHoverNav = obj; 
			e.cancelBubble = true;
		}
		return false;
	}
	
	function Nav_HideMenu () {
		if (currentHoverNav != null) {
			var c = lastShownMenus.length - 1;
			for (var i=c; i>=0; i--) {
				if (lastShownMenus[i] && lastShownMenus[i].id.indexOf (currentHoverNav.id) < 0) {
					lastShownMenus[i].style.display = "none";
					var SelectToBeHidden = GetObjRef ("QuickFindSelect");
					if (SelectToBeHidden) {
						SelectToBeHidden.style.display = "block";
					}
					lastShownMenus[i] = null;
				}
			}
		}
		else {
			var c = lastShownMenus.length - 1;
			for (var i=c; i>=0; i--) {
				if (lastShownMenus[i] != null) {
					lastShownMenus[i].style.display = "none";
					var SelectToBeHidden = GetObjRef ("QuickFindSelect");
					if (SelectToBeHidden) {
						SelectToBeHidden.style.display = "block";
					}
					lastShownMenus[i] = null;
				}
			}
		}
	}

/* END: Top Nav */












/* START: Anne's Scripts */

function isValidExpDate(ExpMonth, ExpYear)
{
	var errMsg = "";
	var result = true;
	var ExpDate = (ExpMonth + "/" + ExpYear);
	if (ExpYear == "" || ExpYear == "") {
		errMsg += "Please enter a valid expiration date.\n";
	}

 	if (result && (ExpDate.length>0))
 	{
 		var elems = ExpDate.split("/");		
 		result = (elems.length == 2); // should be two components
 		var expired = false;
  		if (result)
 		{
 			var month = parseInt(elems[0],10);
 			var year = parseInt(elems[1],10);			
 			if (elems[1].length == 2)
 				year += 2000;			
 			var now = new Date();			
 			var nowMonth = now.getMonth() + 1;
 			var nowYear = now.getFullYear();			
 			expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month));			
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4));
 		}		
		if (expired) {
 			result = false;
 			errMsg += "The credit card has expired.\n";
		}
	} 
	return errMsg; 
}


function isValidCreditCardNumber(CardNumber, CardType)
{
	var errMsg = "";
	var result = true;
 	var CardNumber = CardNumber;
	var charset = "0123456789";
	if (CardNumber > 0) { 
		for (var i=0; i<CardNumber.length; i++) {
			if (charset.indexOf(CardNumber.substr(i,1))<0) {
				result = false;
				errMsg += "Please enter only numbers (no dashes or spaces) for the Card Number field.\n";
				break;
			} 
			else {
				result = true;
			}
		}
		if (result) { 			
			if (!LuhnCheck(CardNumber) || !validateCardNumber(CardType,CardNumber)) {
 				errMsg += "Please enter a valid card number for the Card Number field.\n";
				result = false;
			} 
		} 
		else {
			result=true;
		}
	}
	else {
		errMsg += "Please enter a valid card number for the Card Number field.\n";
	}
	return errMsg; 
}

function LuhnCheck(str) 
{
  var result = true;

  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  
  for (i = 0; i < strLen; i++) 
  {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
  if ((sum % 10) != 0)
    result = false;
  return result;
}


function validateCardNumber(cardType,cardNum)
{
	var result = true;
	cardType = cardType.toUpperCase();
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first4digs = cardNum.substring(0,4);

	switch (cardType)
	{
		case "VISA":
			result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
		case "AMEX":
			var validNums = "47";
			result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
		case "MASTERCARD":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "DISCOVER":
			result = (cardLen == 16) && (first4digs == "6011");
			break;
	}
	return result;
}

function validCCForm(CardType,CardNumber,ExpMonth, ExpYear) {
	var result = isValidCreditCardNumber(CardNumber,CardType) && isValidExpDate(ExpMonth, ExpYear);
	return result;
}
/* Swap Image */

function toggle(imagename,src1,src2){      
    if(document.images && document.images[imagename]){
        image1=new Image;
        image1.src=src1;
        if(document.images[imagename].src != image1.src){
            document.images[imagename].src = image1.src
        }
        else{
            document.images[imagename].src=src2
        }
    }
}

/* End Swap Image */

/* END: Anne's Scripts */

/* BEGIN: Dynamic Topnav */

var CSSBuffer, doc = window.document;

function parseStylesheets() {
	var rules, sheet, sheets = doc.styleSheets;
	var bufferIndex = sheets.length;	
	var head = doc.getElementsByTagName('head')[0];
	var buffer = doc.createElement('style');

	buffer.setAttribute('media', 'screen');
	buffer.setAttribute('type', 'text/css');
	head.appendChild(buffer);
	CSSBuffer = sheets[bufferIndex];

	for(var i=0; i<sheets.length -1; i++) {
		sheet = sheets[i];
		if(!sheet.media || sheet.media == 'screen') {
			rules = sheet.rules;
			for(var j=0; j<rules.length; j++) {
				parseCSSRule(rules[j]);
			}
		}
	}
}
	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!select || !style || select.indexOf(':hover') < 0) return;
		var newSelect = select.replace(/\:hover/g, '.onHover');
		CSSBuffer.addRule(newSelect, style);
		
		var affected = select.replace(/\:hover.*$/g, '');
		var elements = getElementsBySelect(affected);
		for(var i=0; i<elements.length; i++) {
			if(elements[i].nodeName == 'A') continue;
			new HoverElement(elements[i]);
		}
	}

/**
 *	HoverElement
 *	-------------------------
 *	applies the hover
 */

function HoverElement(element) {
	if(element.isHoverElement) return;
	element.isHoverElement = true;
	element.attachEvent('onmouseover', 
		function() { element.className += ' onHover'; });

	element.attachEvent('onmouseout', 
		function() { element.className = element.className.replace(/onHover/g, ''); });
}

/**
 *	domFinder
 *	-----------------------------------
 *	returns list of elements based on css selector
 */

function getElementsBySelect(rule) {
	var nodeList = [doc], sets = rule.split(' ');
	for(var i=0; i<sets.length; i++) {
		nodeList = domFinder.filterNodes(sets[i], nodeList);
	}	return nodeList;
}

var domFinder = {
	findNodes:function(tag, docs) {
		var res, nodes = [];
		for(var i=0; i<docs.length; i++) {
			res = docs[i].getElementsByTagName(tag);
			for(var j=0; j<res.length; j++) nodes[nodes.length] = res[j];
		}	return nodes;
	},

	filterNodes:function(select, docs) {
		var filtered = [], nodes,rule,atr,s = (/#|\./).exec(select);
		if(!s) return this.findNodes(select, docs);
		nodes = this.findNodes((rule = select.split(s))[0], docs);
		atr = (s == '#')? 'id':'className';
		for(var i=0; i<nodes.length; i++) {
			if(new RegExp('(^|\\s)' +  rule[1] + '(\\s|$)').exec(nodes[i][atr]))
				filtered[filtered.length] = nodes[i];
		}	return filtered;
	}
}
/* END: Dynamic Topnav */

function mailToObfuscate(acc, domain) {
location.href = "mailto:" + acc + "@" + domain;
}

