
// more form validation stuff
function validate(fm) {
	var message = "The following fields contain errors:\n\n";

	validator.ClearAll();

	for(var i = 0; i < fm.elements.length; i++) {
		var field  = fm.elements[i];
		var format = formats[field.name];

		if(format) {
			// result is bad so add the error
			if(!validator.Validate(field.value, format)) {
				message += format.message + "\n";
				AddClassName(field.parentNode, "error");
			}
			else RemoveClassName(field.parentNode, "error");
		}
	}

	var result = validator.HasError();

    if(fm["previous_purchase"]) {
        // make sure either of them are checked
        var checked = false;
        
        for(var i = 0; i < fm["previous_purchase"].length; i++) {
            if(fm["previous_purchase"][i].checked) {
                checked = true;
                break;
            }
        }
        
        if(!checked) {
            AddClassName(document.getElementById("previouslyPurchased"), "error");
        }
        else RemoveClassName(document.getElementById("previouslyPurchased"), "error");
    }

	if(fm["Interest1"]) {
		// just check the check boxes are checked
		var interests = 15; // total number of interests
		var gotOne    = false;

		for(var i = 1; i <= interests; i++) {
			if(!fm["Interest" + i]) break; // assume that they're all numbered incrementally from 1 with no gaps

			if(fm["Interest" + i].checked) {
				gotOne = true;
				break;
			}
		}

		// none of the checkboxes are checked
//		if(!gotOne) {
//			result = true;
//			message += "Please select a product\n";
//			AddClassName(document.getElementById("products"), "error");
//		}
//		else 
		RemoveClassName(document.getElementById("products"), "error");
	}

	return !result;
}

/* -----------------------------------------------------------------------------
 * Adds the supplied css class name to the supplied object, if it doesn't have it.
 */
function AddClassName(o, css) {
	o.className = (o.className.indexOf(css) == -1) ? (o.className == "") ? css : o.className + " " + css : o.className;
}


/* -----------------------------------------------------------------------------
 * Removes the supplied css class name from the supplied object.
 */
function RemoveClassName(o, css) {
	o.className = o.className.replace(css, '');
}