sfHover = function() {
	var sfEls = document.getElementById("nav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

function populateField(fieldId, fieldValue) {
	fieldObj = document.getElementById(fieldId);
	if (fieldValue != null)
		fieldObj.value = fieldValue;
}

function getParameter(paramName) {
	var url = location.href;
	
	var begin = url.indexOf(paramName + "=");
	if (begin == -1)
		return null;
	begin = begin + (paramName.length + 1);
	
	var end = url.indexOf("&", begin);
	if (end == -1)
		end = url.length;
	
	return unescape(url.substring(begin, end));
}

function isEmpty(elemId) {
	var elem = document.getElementById(elemId);
    var str = elem.value;
    var re = /.+/;
    if(!str.match(re)) {
        return true;
    } else {
        return false;
    }
}

// validate that the user has checked one of the radio buttons
function isValidRadio(radio) {
    for (var i = 0; i < radio.length; i++) {
        if (radio[i].checked) {
            return true;
        }
    }
    return false;
}

function isEmailAddr(elemId) {
	var elem = document.getElementById(elemId);
    var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        return false;
    } else {
        return true;
    }
}

function focusElement(elemId) {
	// arbitrary set timeout necessary due to IE Windows timing bug
	setTimeout("doFocusElement('" + elemId + "')", 0);
}

// private function: do not call directly -- use focusElement.
function doFocusElement(elemId) {
    var elem = document.getElementById(elemId);
    elem.focus();
    elem.select();
}

function isEmailAddr(elemId) {
	var elem = document.getElementById(elemId);
    var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        return false;
    } else {
        return true;
    }
}

function popup(url, winname, width, height) {
	window.open(url, winname, 'toolbar=no,width=' + width + ',height=' + height +
				'.status=yes,scrollbars=yes,resizable=yes,menubar=no');
}

// validation for mailing list subscription
function validateMail() {
	// email check
	if (!isEmailAddr("snarf")) {
		window.alert("You must enter a valid email address.");
		focusElement("snarf");
		return false;
	}
	
	var newsEventsElem = document.getElementById("newsEventsChk");
	var productsElem = document.getElementById("productsChk");
	
	if (!newsEventsElem.checked && !productsElem.checked)
	{
		window.alert("Please select one or more list(s).");
		return false;
	}
	
	return true;
}