function selectUnselectMatchingOptions(obj,regex,which,only) {
	if (window.RegExp) {
		if (which == "select") {
			var selected1=true;
			var selected2=false;
			}
		else if (which == "unselect") {
			var selected1=false;
			var selected2=true;
			}
		else {
			return;
			}
		var re = new RegExp(regex);
		for (var i=0; i<obj.options.length; i++) {
			if (re.test(obj.options[i].text)) {
				obj.options[i].selected = selected1;
				}
			else {
				if (only == true) {
					obj.options[i].selected = selected2;
					}
				}
			}
		}
	}
		
// -------------------------------------------------------------------
// selectMatchingOptions(select_object,regex)
//  This function selects all options that match the regular expression
//  passed in. Currently-selected options will not be changed.
// -------------------------------------------------------------------
function selectMatchingOptions(obj,regex) {
	selectUnselectMatchingOptions(obj,regex,"select",false);
}
// -------------------------------------------------------------------
// selectOnlyMatchingOptions(select_object,regex)
//  This function selects all options that match the regular expression
//  passed in. Selected options that don't match will be un-selected.
// -------------------------------------------------------------------

function selectOnlyMatchingOptions(obj,regex) {
	selectUnselectMatchingOptions(obj,regex,"select",true);
}


<!-- Original:  Gregor (legreg@legreg.de) -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var ie4 = (document.all) ? true : false;
var ns4 = (document.layers) ? true : false;
var ns6 = (document.getElementById && !document.all) ? true : false;
function hidelayer(lay) {
if (ie4) {document.all[lay].style.visibility = "hidden";}
if (ns4) {document.layers[lay].visibility = "hide";}
if (ns6) {document.getElementById([lay]).style.display = "none";}
}
function showlayer(lay) {
if (ie4) {document.all[lay].style.visibility = "visible";}
if (ns4) {document.layers[lay].visibility = "show";}
if (ns6) {document.getElementById([lay]).style.display = "block";}
}
function writetolayer(lay,txt) {
if (ie4) {
document.all[lay].innerHTML = txt;
}
if (ns4) {
document[lay].document.write(txt);
document[lay].document.close();
}
if (ns6) {
over = document.getElementById([lay]);
range = document.createRange();
range.setStartBefore(over);
domfrag = range.createContextualFragment(txt);
while (over.hasChildNodes()) {
over.removeChild(over.lastChild);
}
over.appendChild(domfrag);
   }
}
//  End -->

function ValidDate(pDate) {
	if (isNaN(Date.parse(pDate))) {
		return false;
	} 
	return true;
}
 
function jumplist() {
	var theUrl = document.navMenu.url[document.navMenu.url.selectedIndex].value;
	window.location = theUrl;
}

function doQuantityCheck(inCart, maxCount, reqCount, formObj){
	if((parseInt(inCart) + parseInt(reqCount)) > parseInt(maxCount)){
		addMessage("Sorry, you have requested more items the maximum allowed in one order ("+maxCount+").");
		return false;
	} 
	return true;
}

function validateField(ob) {
    if (ob == null) { return false; }
    return matchRE(ob.value, ob.getAttribute('regexp'));
}

function matchRE(value, regexp) {
    var re = new RegExp(regexp);
	if (re.test(value)) {
		return true;
	}
	return false;
}

function compareFields(f1, f2) {    
    if (f1.value == f2.value) { return true; }
    return false;
}

function getFieldObj(frm, field) {
    var els = frm.elements;
    for (var i = 0; i < els.length; i++) {
        if (els[i].id == field) { return els[i]; }
    }
    return false;
}

function checkForm(frm) {
    var e = document.getElementById('errors');
    e.innerHTML = '';
    clearMessages();
    
    var errors = 0;
    var myform = document.forms[frm];
    var fieldsToCheck = myform.getAttribute('fields').split(';');
    
    if (fieldsToCheck == null) { return true; }
    
    var messages = new Array();
    messagePointer = -1;
    
    for (var i = 0; i < fieldsToCheck.length; i++) {
        var field = fieldsToCheck[i];
        if (field == null) { continue; }
        
        if (field.indexOf('=') > 0) {
            comps = field.split('=');
            c1 = getFieldObj(myform, comps[0]);
            c2 = getFieldObj(myform, comps[1]);
            var valid = compareFields(c1, c2);
            if (!valid) {
                var f1 = c1.getAttribute('nice');
                var f2 = c2.getAttribute('nice');
                addMessage(f1 + " and " + f2 + " don't match! Please correct them.<br/>");
                errors++;
            }
        } else {
            fo = getFieldObj(myform, field);
            if (!fo) { continue; }
            if (fo.tagName == 'SELECT') {
                if (fo.selectedIndex < 0) {
                    var f1 = fo.getAttribute('nice');
                    addMessage("You must select a value for " + f1 + ".<br/>");
                    errors++;
                } else if (fo.options[fo.selectedIndex].value <= 0) {
                    var f1 = fo.getAttribute('nice');
                    addMessage("The value you selected for " + f1 + " is not valid. Please select another.<br/>");
                    errors++;
                }
            } else {
                var valid = validateField(fo);
                if (!valid) {
                    var f1 = fo.getAttribute('nice');
                    addMessage(f1 + " isn't valid. Please correct or re-enter.<br/>");
                    errors++;
                }
            }
        }
    }
    
    if (errors > 0) {
        showError();
        return false;
    }
    return true;
}

var messages = new Array();

function addMessage(msg) {
    messages.push(msg);
}

function clearMessages() {
    while (messages.length > 0) {
        messages.pop();
    }
}

function showError() {
    var e = document.getElementById('errors');
    for (var i = 0; i < messages.length; i++) {
        e.innerHTML += messages[i];
    }
}

function verifyCancelReg() {
    var c = confirm("Press\n  - OK to abandon this registration, or\n  - Cancel to continue registration.");
    if (c) { location.href = "/index.php"; }
    else { return false; }
}